@oathompsonjones/mini-games 1.0.6 → 1.0.9

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.
@@ -4,7 +4,7 @@ import LongInt from "./longInt.js";
4
4
  export default class LongIntBitBoard extends BitBoard {
5
5
  /**
6
6
  * Creates an instance of LongIntBitBoard.
7
- * @param args The data to fill the BitBoard with.
7
+ * @param args - The data to fill the BitBoard with.
8
8
  */
9
9
  constructor(args) {
10
10
  switch (true) {
@@ -26,7 +26,7 @@ export default class LongIntBitBoard extends BitBoard {
26
26
  }
27
27
  /**
28
28
  * Gets the value of a given bit.
29
- * @param bit The bit to get.
29
+ * @param bit - The bit to get.
30
30
  * @returns The value of the bit.
31
31
  */
32
32
  getBit(bit) {
@@ -34,7 +34,7 @@ export default class LongIntBitBoard extends BitBoard {
34
34
  }
35
35
  /**
36
36
  * Sets the value for a given bit to 1.
37
- * @param bit The bit to set.
37
+ * @param bit - The bit to set.
38
38
  */
39
39
  setBit(bit) {
40
40
  const mask = LongInt.getMatchingLongInt(this._data, 1)
@@ -43,7 +43,7 @@ export default class LongIntBitBoard extends BitBoard {
43
43
  }
44
44
  /**
45
45
  * Sets the value for a given bit to 0.
46
- * @param bit The bit to clear.
46
+ * @param bit - The bit to clear.
47
47
  */
48
48
  clearBit(bit) {
49
49
  const mask = LongInt.getMatchingLongInt(this._data, 1)
@@ -53,7 +53,7 @@ export default class LongIntBitBoard extends BitBoard {
53
53
  }
54
54
  /**
55
55
  * Toggles the data for a given bit between 0 and 1.
56
- * @param bit The bit to toggle.
56
+ * @param bit - The bit to toggle.
57
57
  */
58
58
  toggleBit(bit) {
59
59
  const mask = LongInt.getMatchingLongInt(this._data, 1)
@@ -72,9 +72,9 @@ export default class LongIntBitBoard extends BitBoard {
72
72
  }
73
73
  /**
74
74
  * Gets a given number of bits.
75
- * @param LSB The least significant bit to get.
76
- * @param numberOfBits The number of bits to get.
77
- * @returns The bits.
75
+ * @param LSB - The least significant bit to get.
76
+ * @param numberOfBits - The number of bits to get.
77
+ * @returns The bits as a number.
78
78
  */
79
79
  getBits(LSB, numberOfBits) {
80
80
  const arr = [];
@@ -88,7 +88,7 @@ export default class LongIntBitBoard extends BitBoard {
88
88
  }
89
89
  /**
90
90
  * Carries out a bitwise and (&) operation.
91
- * @param right The right value.
91
+ * @param right - The right value.
92
92
  * @returns The result.
93
93
  */
94
94
  and(right) {
@@ -96,7 +96,7 @@ export default class LongIntBitBoard extends BitBoard {
96
96
  }
97
97
  /**
98
98
  * Carries out a bitwise or (|) operation.
99
- * @param right The right value.
99
+ * @param right - The right value.
100
100
  * @returns The result.
101
101
  */
102
102
  or(right) {
@@ -104,7 +104,7 @@ export default class LongIntBitBoard extends BitBoard {
104
104
  }
105
105
  /**
106
106
  * Carries out a bitwise xor (^) operation.
107
- * @param right The right value.
107
+ * @param right - The right value.
108
108
  * @returns The result.
109
109
  */
110
110
  xor(right) {
@@ -119,7 +119,7 @@ export default class LongIntBitBoard extends BitBoard {
119
119
  }
120
120
  /**
121
121
  * Carries out a bitwise left shift (<<) operation.
122
- * @param shiftAmount How much to shift it by.
122
+ * @param shiftAmount - How much to shift it by.
123
123
  * @returns The result.
124
124
  */
125
125
  leftShift(shiftAmount) {
@@ -127,7 +127,7 @@ export default class LongIntBitBoard extends BitBoard {
127
127
  }
128
128
  /**
129
129
  * Carries out a bitwise logical right shift (>>>) operation.
130
- * @param shiftAmount How much to shift it by.
130
+ * @param shiftAmount - How much to shift it by.
131
131
  * @returns The result.
132
132
  */
133
133
  rightShift(shiftAmount) {
@@ -135,7 +135,7 @@ export default class LongIntBitBoard extends BitBoard {
135
135
  }
136
136
  /**
137
137
  * Carries out a bitwise arithmetic right shift (>>) operation.
138
- * @param shiftAmount How much to shift it by.
138
+ * @param shiftAmount - How much to shift it by.
139
139
  * @returns The result.
140
140
  */
141
141
  arithmeticRightShift(shiftAmount) {
@@ -143,11 +143,11 @@ export default class LongIntBitBoard extends BitBoard {
143
143
  }
144
144
  /**
145
145
  * Checks if two BitBoards have equal data values.
146
- * @param value The value to compare against.
146
+ * @param value - The value to compare against.
147
147
  * @returns Whether or not the two BitBoard have the same data value.
148
148
  */
149
149
  equals(value) {
150
150
  return this._data.equals(value instanceof LongIntBitBoard ? value._data : value);
151
151
  }
152
152
  }
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZ0ludEJpdEJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpdEJvYXJkL2xvbmdJbnRCaXRCb2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRW5DLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWdCLFNBQVEsUUFBaUI7SUFxQjFEOzs7T0FHRztJQUNILFlBQW1CLElBQWdEO1FBQy9ELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLElBQUksS0FBSyxTQUFTO2dCQUNuQixLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDVixLQUFLLElBQUksWUFBWSxPQUFPO2dCQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ1osTUFBTTtZQUNWLEtBQUssSUFBSSxZQUFZLFdBQVcsSUFBSSxJQUFJLFlBQVksS0FBSztnQkFDckQsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU07WUFDVixLQUFLLE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3pCLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsTUFBTTtZQUNWO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsR0FBVztRQUNyQixPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxH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QzNDLE9BQU8sSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQVMsQ0FBQztJQUM5RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUF5QztRQUNuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaXRCb2FyZCBmcm9tIFwiLi9iaXRCb2FyZC5qc1wiO1xuaW1wb3J0IExvbmdJbnQgZnJvbSBcIi4vbG9uZ0ludC5qc1wiO1xuXG4vKiogQSBCaXRCb2FyZCB3aGljaCB1c2VzIGFuIGFycmF5IG9mIDMyLWJpdCBudW1iZXJzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9uZ0ludEJpdEJvYXJkIGV4dGVuZHMgQml0Qm9hcmQ8TG9uZ0ludD4ge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTG9uZ0ludEJpdEJvYXJkLlxuICAgICAqIEBwYXJhbSBsb25nSW50IFRoZSBkYXRhIHRvIGZpbGwgdGhlIEJpdEJvYXJkIHdpdGguXG4gICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobG9uZ0ludDogTG9uZ0ludCk7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMb25nSW50Qml0Qm9hcmQuXG4gICAgICogQHBhcmFtIHVpbnQzMkFycmF5IFRoZSBkYXRhIHRvIGZpbGwgdGhlIEJpdEJvYXJkIHdpdGguXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHVpbnQzMkFycmF5OiBVaW50MzJBcnJheSk7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMb25nSW50Qml0Qm9hcmQuXG4gICAgICogQHBhcmFtIG51bWJlckFycmF5IFRoZSBkYXRhIHRvIGZpbGwgdGhlIEJpdEJvYXJkIHdpdGguXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG51bWJlckFycmF5OiBudW1iZXJbXSk7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMb25nSW50Qml0Qm9hcmQuXG4gICAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBMb25nSW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihsZW5ndGg6IG51bWJlcik7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMb25nSW50Qml0Qm9hcmQuXG4gICAgICogQHBhcmFtIGFyZ3MgVGhlIGRhdGEgdG8gZmlsbCB0aGUgQml0Qm9hcmQgd2l0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYXJncz86IExvbmdJbnQgfCBudW1iZXJbXSB8IFVpbnQzMkFycmF5IHwgbnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgY2FzZSBhcmdzID09PSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgc3VwZXIobmV3IExvbmdJbnQoQXJyYXkoMikuZmlsbCgwKSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhcmdzIGluc3RhbmNlb2YgTG9uZ0ludDpcbiAgICAgICAgICAgICAgICBzdXBlcihhcmdzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYXJncyBpbnN0YW5jZW9mIFVpbnQzMkFycmF5IHx8IGFyZ3MgaW5zdGFuY2VvZiBBcnJheTpcbiAgICAgICAgICAgICAgICBzdXBlcihuZXcgTG9uZ0ludChhcmdzKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHR5cGVvZiBhcmdzID09PSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgIHN1cGVyKG5ldyBMb25nSW50KEFycmF5KGFyZ3MpLmZpbGwoMCkpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb25zdHJ1Y3RvciBhcmd1bWVudHMuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgb2YgYSBnaXZlbiBiaXQuXG4gICAgICogQHBhcmFtIGJpdCBUaGUgYml0IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGJpdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Qml0KGJpdDogbnVtYmVyKTogMCB8IDEge1xuICAgICAgICByZXR1cm4gTG9uZ0ludC5yaWdodFNoaWZ0KHRoaXMuX2RhdGEsIGJpdCkuYW5kKDEpLmRhdGFbMF0gYXMgMCB8IDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gYml0IHRvIDEuXG4gICAgICogQHBhcmFtIGJpdCBUaGUgYml0IHRvIHNldC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Qml0KGJpdDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hc2sgPSBMb25nSW50LmdldE1hdGNoaW5nTG9uZ0ludCh0aGlzLl9kYXRhLCAxKVxuICAgICAgICAgICAgLmxlZnRTaGlmdChiaXQpO1xuXG4gICAgICAgIHRoaXMuX2RhdGEub3IobWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gYml0IHRvIDAuXG4gICAgICogQHBhcmFtIGJpdCBUaGUgYml0IHRvIGNsZWFyLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhckJpdChiaXQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBtYXNrID0gTG9uZ0ludC5nZXRNYXRjaGluZ0xvbmdJbnQodGhpcy5fZGF0YSwgMSlcbiAgICAgICAgICAgIC5sZWZ0U2hpZnQoYml0KVxuICAgICAgICAgICAgLm5vdCgpO1xuXG4gICAgICAgIHRoaXMuX2RhdGEuYW5kKG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIGRhdGEgZm9yIGEgZ2l2ZW4gYml0IGJldHdlZW4gMCBhbmQgMS5cbiAgICAgKiBAcGFyYW0gYml0IFRoZSBiaXQgdG8gdG9nZ2xlLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVCaXQoYml0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWFzayA9IExvbmdJbnQuZ2V0TWF0Y2hpbmdMb25nSW50KHRoaXMuX2RhdGEsIDEpXG4gICAgICAgICAgICAubGVmdFNoaWZ0KGJpdCk7XG5cbiAgICAgICAgdGhpcy5fZGF0YS54b3IobWFzayk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgYWxsIGJpdHMgdG8gMC4gKi9cbiAgICBwdWJsaWMgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5kYXRhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YS5kYXRhW2ldID0gMDtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBhbGwgYml0cyB0byAxLiAqL1xuICAgIHB1YmxpYyBzZXRBbGwoKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5kYXRhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YS5kYXRhW2ldID0gfjAgPj4+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGdpdmVuIG51bWJlciBvZiBiaXRzLlxuICAgICAqIEBwYXJhbSBMU0IgVGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCB0byBnZXQuXG4gICAgICogQHBhcmFtIG51bWJlck9mQml0cyBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBiaXRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCaXRzKExTQjogbnVtYmVyLCBudW1iZXJPZkJpdHM6IG51bWJlcik6IExvbmdJbnQge1xuICAgICAgICBjb25zdCBhcnI6IG51bWJlcltdID0gW107XG4gICAgICAgIGNvbnN0IGFyckxlbmd0aCA9IE1hdGguY2VpbChudW1iZXJPZkJpdHMgLyAzMik7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJMZW5ndGggLSAxOyBpKyspXG4gICAgICAgICAgICBhcnJbaV0gPSB+MCA+Pj4gMDtcbiAgICAgICAgYXJyW2Fyckxlbmd0aCAtIDFdID0gMiAqKiAobnVtYmVyT2ZCaXRzIC0gKGFyckxlbmd0aCAtIDEpICogMzIpIC0gMTtcbiAgICAgICAgY29uc3QgbWFzayA9IExvbmdJbnQuZ2V0TWF0Y2hpbmdMb25nSW50KHRoaXMuX2RhdGEsIGFycikubGVmdFNoaWZ0KExTQik7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBMb25nSW50LnJpZ2h0U2hpZnQoTG9uZ0ludC5hbmQodGhpcy5fZGF0YSwgbWFzayksIExTQik7XG5cbiAgICAgICAgcmV0dXJuIGJpdHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FycmllcyBvdXQgYSBiaXR3aXNlIGFuZCAoJikgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSByaWdodCBUaGUgcmlnaHQgdmFsdWUuXG4gICAgICogQHJldHVybnMgVGhlIHJlc3VsdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYW5kKHJpZ2h0OiBMb25nSW50Qml0Qm9hcmQgfCBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb25nSW50Qml0Qm9hcmQoTG9uZ0ludC5hbmQodGhpcy5fZGF0YSwgcmlnaHQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmQgPyByaWdodC5kYXRhIDogcmlnaHQpKSBhcyB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcnJpZXMgb3V0IGEgYml0d2lzZSBvciAofCkgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSByaWdodCBUaGUgcmlnaHQgdmFsdWUuXG4gICAgICogQHJldHVybnMgVGhlIHJlc3VsdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3IocmlnaHQ6IExvbmdJbnRCaXRCb2FyZCB8IG51bWJlcik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3IExvbmdJbnRCaXRCb2FyZChMb25nSW50Lm9yKHRoaXMuX2RhdGEsIHJpZ2h0IGluc3RhbmNlb2YgTG9uZ0ludEJpdEJvYXJkID8gcmlnaHQuZGF0YSA6IHJpZ2h0KSkgYXMgdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJyaWVzIG91dCBhIGJpdHdpc2UgeG9yICheKSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHJpZ2h0IFRoZSByaWdodCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0LlxuICAgICAqL1xuICAgIHB1YmxpYyB4b3IocmlnaHQ6IExvbmdJbnRCaXRCb2FyZCB8IG51bWJlcik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3IExvbmdJbnRCaXRCb2FyZChMb25nSW50Lnhvcih0aGlzLl9kYXRhLCByaWdodCBpbnN0YW5jZW9mIExvbmdJbnRCaXRCb2FyZCA/IHJpZ2h0LmRhdGEgOiByaWdodCkpIGFzIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FycmllcyBvdXQgYSBiaXR3aXNlIG5vdCAofikgb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSByZXN1bHQuXG4gICAgICovXG4gICAgcHVibGljIG5vdCgpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb25nSW50Qml0Qm9hcmQoTG9uZ0ludC5ub3QodGhpcy5fZGF0YSkpIGFzIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FycmllcyBvdXQgYSBiaXR3aXNlIGxlZnQgc2hpZnQgKDw8KSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHNoaWZ0QW1vdW50IEhvdyBtdWNoIHRvIHNoaWZ0IGl0IGJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSByZXN1bHQuXG4gICAgICovXG4gICAgcHVibGljIGxlZnRTaGlmdChzaGlmdEFtb3VudDogbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHJldHVybiBuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnQubGVmdFNoaWZ0KHRoaXMuX2RhdGEsIHNoaWZ0QW1vdW50KSkgYXMgdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJyaWVzIG91dCBhIGJpdHdpc2UgbG9naWNhbCByaWdodCBzaGlmdCAoPj4+KSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHNoaWZ0QW1vdW50IEhvdyBtdWNoIHRvIHNoaWZ0IGl0IGJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSByZXN1bHQuXG4gICAgICovXG4gICAgcHVibGljIHJpZ2h0U2hpZnQoc2hpZnRBbW91bnQ6IG51bWJlcik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3IExvbmdJbnRCaXRCb2FyZChMb25nSW50LnJpZ2h0U2hpZnQodGhpcy5fZGF0YSwgc2hpZnRBbW91bnQpKSBhcyB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcnJpZXMgb3V0IGEgYml0d2lzZSBhcml0aG1ldGljIHJpZ2h0IHNoaWZ0ICg+Pikgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSBzaGlmdEFtb3VudCBIb3cgbXVjaCB0byBzaGlmdCBpdCBieS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0LlxuICAgICAqL1xuICAgIHB1YmxpYyBhcml0aG1ldGljUmlnaHRTaGlmdChzaGlmdEFtb3VudDogbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHJldHVybiBuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnQuYXJpdGhtZXRpY1JpZ2h0U2hpZnQodGhpcy5fZGF0YSwgc2hpZnRBbW91bnQpKSBhcyB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0d28gQml0Qm9hcmRzIGhhdmUgZXF1YWwgZGF0YSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIHR3byBCaXRCb2FyZCBoYXZlIHRoZSBzYW1lIGRhdGEgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIGVxdWFscyh2YWx1ZTogTG9uZ0ludCB8IExvbmdJbnRCaXRCb2FyZCB8IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5lcXVhbHModmFsdWUgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmQgPyB2YWx1ZS5fZGF0YSA6IHZhbHVlKTtcbiAgICB9XG59XG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZ0ludEJpdEJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpdEJvYXJkL2xvbmdJbnRCaXRCb2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRW5DLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWdCLFNBQVEsUUFBaUI7SUFxQjFEOzs7T0FHRztJQUNILFlBQW1CLElBQWdEO1FBQy9ELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLElBQUksS0FBSyxTQUFTO2dCQUNuQixLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDVixLQUFLLElBQUksWUFBWSxPQUFPO2dCQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ1osTUFBTTtZQUNWLEtBQUssSUFBSSxZQUFZLFdBQVcsSUFBSSxJQUFJLFlBQVksS0FBSztnQkFDckQsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU07WUFDVixLQUFLLE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3pCLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsTUFBTTtZQUNWO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsR0FBVztRQUNyQixPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxH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QzNDLE9BQU8sSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUF5QztRQUNuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaXRCb2FyZCBmcm9tIFwiLi9iaXRCb2FyZC5qc1wiO1xuaW1wb3J0IExvbmdJbnQgZnJvbSBcIi4vbG9uZ0ludC5qc1wiO1xuXG4vKiogQSBCaXRCb2FyZCB3aGljaCB1c2VzIGFuIGFycmF5IG9mIDMyLWJpdCBudW1iZXJzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9uZ0ludEJpdEJvYXJkIGV4dGVuZHMgQml0Qm9hcmQ8TG9uZ0ludD4ge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTG9uZ0ludEJpdEJvYXJkLlxuICAgICAqIEBwYXJhbSBsb25nSW50IC0gVGhlIGRhdGEgdG8gZmlsbCB0aGUgQml0Qm9hcmQgd2l0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobG9uZ0ludDogTG9uZ0ludCk7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMb25nSW50Qml0Qm9hcmQuXG4gICAgICogQHBhcmFtIHVpbnQzMkFycmF5IC0gVGhlIGRhdGEgdG8gZmlsbCB0aGUgQml0Qm9hcmQgd2l0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IodWludDMyQXJyYXk6IFVpbnQzMkFycmF5KTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExvbmdJbnRCaXRCb2FyZC5cbiAgICAgKiBAcGFyYW0gbnVtYmVyQXJyYXkgLSBUaGUgZGF0YSB0byBmaWxsIHRoZSBCaXRCb2FyZCB3aXRoLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihudW1iZXJBcnJheTogbnVtYmVyW10pO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTG9uZ0ludEJpdEJvYXJkLlxuICAgICAqIEBwYXJhbSBsZW5ndGggLSBUaGUgbGVuZ3RoIG9mIHRoZSBMb25nSW50IGFycmF5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihsZW5ndGg6IG51bWJlcik7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMb25nSW50Qml0Qm9hcmQuXG4gICAgICogQHBhcmFtIGFyZ3MgLSBUaGUgZGF0YSB0byBmaWxsIHRoZSBCaXRCb2FyZCB3aXRoLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhcmdzPzogTG9uZ0ludCB8IG51bWJlcltdIHwgVWludDMyQXJyYXkgfCBudW1iZXIpIHtcbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIGFyZ3MgPT09IHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICBzdXBlcihuZXcgTG9uZ0ludChBcnJheSgyKS5maWxsKDApKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFyZ3MgaW5zdGFuY2VvZiBMb25nSW50OlxuICAgICAgICAgICAgICAgIHN1cGVyKGFyZ3MpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhcmdzIGluc3RhbmNlb2YgVWludDMyQXJyYXkgfHwgYXJncyBpbnN0YW5jZW9mIEFycmF5OlxuICAgICAgICAgICAgICAgIHN1cGVyKG5ldyBMb25nSW50KGFyZ3MpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdHlwZW9mIGFyZ3MgPT09IFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgc3VwZXIobmV3IExvbmdJbnQoQXJyYXkoYXJncykuZmlsbCgwKSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIGdpdmVuIGJpdC5cbiAgICAgKiBAcGFyYW0gYml0IC0gVGhlIGJpdCB0byBnZXQuXG4gICAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBiaXQuXG4gICAgICovXG4gICAgcHVibGljIGdldEJpdChiaXQ6IG51bWJlcik6IDAgfCAxIHtcbiAgICAgICAgcmV0dXJuIExvbmdJbnQucmlnaHRTaGlmdCh0aGlzLl9kYXRhLCBiaXQpLmFuZCgxKS5kYXRhWzBdIGFzIDAgfCAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIGdpdmVuIGJpdCB0byAxLlxuICAgICAqIEBwYXJhbSBiaXQgLSBUaGUgYml0IHRvIHNldC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Qml0KGJpdDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hc2sgPSBMb25nSW50LmdldE1hdGNoaW5nTG9uZ0ludCh0aGlzLl9kYXRhLCAxKVxuICAgICAgICAgICAgLmxlZnRTaGlmdChiaXQpO1xuXG4gICAgICAgIHRoaXMuX2RhdGEub3IobWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gYml0IHRvIDAuXG4gICAgICogQHBhcmFtIGJpdCAtIFRoZSBiaXQgdG8gY2xlYXIuXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyQml0KGJpdDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hc2sgPSBMb25nSW50LmdldE1hdGNoaW5nTG9uZ0ludCh0aGlzLl9kYXRhLCAxKVxuICAgICAgICAgICAgLmxlZnRTaGlmdChiaXQpXG4gICAgICAgICAgICAubm90KCk7XG5cbiAgICAgICAgdGhpcy5fZGF0YS5hbmQobWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgZGF0YSBmb3IgYSBnaXZlbiBiaXQgYmV0d2VlbiAwIGFuZCAxLlxuICAgICAqIEBwYXJhbSBiaXQgLSBUaGUgYml0IHRvIHRvZ2dsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlQml0KGJpdDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hc2sgPSBMb25nSW50LmdldE1hdGNoaW5nTG9uZ0ludCh0aGlzLl9kYXRhLCAxKVxuICAgICAgICAgICAgLmxlZnRTaGlmdChiaXQpO1xuXG4gICAgICAgIHRoaXMuX2RhdGEueG9yKG1hc2spO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIGFsbCBiaXRzIHRvIDAuICovXG4gICAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEuZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGEuZGF0YVtpXSA9IDA7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgYWxsIGJpdHMgdG8gMS4gKi9cbiAgICBwdWJsaWMgc2V0QWxsKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEuZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGEuZGF0YVtpXSA9IH4wID4+PiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBnaXZlbiBudW1iZXIgb2YgYml0cy5cbiAgICAgKiBAcGFyYW0gTFNCIC0gVGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCB0byBnZXQuXG4gICAgICogQHBhcmFtIG51bWJlck9mQml0cyAtIFRoZSBudW1iZXIgb2YgYml0cyB0byBnZXQuXG4gICAgICogQHJldHVybnMgVGhlIGJpdHMgYXMgYSBudW1iZXIuXG4gICAgICovXG4gICAgcHVibGljIGdldEJpdHMoTFNCOiBudW1iZXIsIG51bWJlck9mQml0czogbnVtYmVyKTogTG9uZ0ludCB7XG4gICAgICAgIGNvbnN0IGFycjogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgYXJyTGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlck9mQml0cyAvIDMyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckxlbmd0aCAtIDE7IGkrKylcbiAgICAgICAgICAgIGFycltpXSA9IH4wID4+PiAwO1xuICAgICAgICBhcnJbYXJyTGVuZ3RoIC0gMV0gPSAyICoqIChudW1iZXJPZkJpdHMgLSAoYXJyTGVuZ3RoIC0gMSkgKiAzMikgLSAxO1xuICAgICAgICBjb25zdCBtYXNrID0gTG9uZ0ludC5nZXRNYXRjaGluZ0xvbmdJbnQodGhpcy5fZGF0YSwgYXJyKS5sZWZ0U2hpZnQoTFNCKTtcbiAgICAgICAgY29uc3QgYml0cyA9IExvbmdJbnQucmlnaHRTaGlmdChMb25nSW50LmFuZCh0aGlzLl9kYXRhLCBtYXNrKSwgTFNCKTtcblxuICAgICAgICByZXR1cm4gYml0cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJyaWVzIG91dCBhIGJpdHdpc2UgYW5kICgmKSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHJpZ2h0IC0gVGhlIHJpZ2h0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIFRoZSByZXN1bHQuXG4gICAgICovXG4gICAgcHVibGljIGFuZChyaWdodDogTG9uZ0ludEJpdEJvYXJkIHwgbnVtYmVyKTogTG9uZ0ludEJpdEJvYXJkIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb25nSW50Qml0Qm9hcmQoTG9uZ0ludC5hbmQodGhpcy5fZGF0YSwgcmlnaHQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmQgPyByaWdodC5kYXRhIDogcmlnaHQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJyaWVzIG91dCBhIGJpdHdpc2Ugb3IgKHwpIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gcmlnaHQgLSBUaGUgcmlnaHQgdmFsdWUuXG4gICAgICogQHJldHVybnMgVGhlIHJlc3VsdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3IocmlnaHQ6IExvbmdJbnRCaXRCb2FyZCB8IG51bWJlcik6IExvbmdJbnRCaXRCb2FyZCB7XG4gICAgICAgIHJldHVybiBuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnQub3IodGhpcy5fZGF0YSwgcmlnaHQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmQgPyByaWdodC5kYXRhIDogcmlnaHQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJyaWVzIG91dCBhIGJpdHdpc2UgeG9yICheKSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHJpZ2h0IC0gVGhlIHJpZ2h0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIFRoZSByZXN1bHQuXG4gICAgICovXG4gICAgcHVibGljIHhvcihyaWdodDogTG9uZ0ludEJpdEJvYXJkIHwgbnVtYmVyKTogTG9uZ0ludEJpdEJvYXJkIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb25nSW50Qml0Qm9hcmQoTG9uZ0ludC54b3IodGhpcy5fZGF0YSwgcmlnaHQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmQgPyByaWdodC5kYXRhIDogcmlnaHQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJyaWVzIG91dCBhIGJpdHdpc2Ugbm90ICh+KSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgVGhlIHJlc3VsdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbm90KCk6IExvbmdJbnRCaXRCb2FyZCB7XG4gICAgICAgIHJldHVybiBuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnQubm90KHRoaXMuX2RhdGEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJyaWVzIG91dCBhIGJpdHdpc2UgbGVmdCBzaGlmdCAoPDwpIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gc2hpZnRBbW91bnQgLSBIb3cgbXVjaCB0byBzaGlmdCBpdCBieS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0LlxuICAgICAqL1xuICAgIHB1YmxpYyBsZWZ0U2hpZnQoc2hpZnRBbW91bnQ6IG51bWJlcik6IExvbmdJbnRCaXRCb2FyZCB7XG4gICAgICAgIHJldHVybiBuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnQubGVmdFNoaWZ0KHRoaXMuX2RhdGEsIHNoaWZ0QW1vdW50KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FycmllcyBvdXQgYSBiaXR3aXNlIGxvZ2ljYWwgcmlnaHQgc2hpZnQgKD4+Pikgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSBzaGlmdEFtb3VudCAtIEhvdyBtdWNoIHRvIHNoaWZ0IGl0IGJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSByZXN1bHQuXG4gICAgICovXG4gICAgcHVibGljIHJpZ2h0U2hpZnQoc2hpZnRBbW91bnQ6IG51bWJlcik6IExvbmdJbnRCaXRCb2FyZCB7XG4gICAgICAgIHJldHVybiBuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnQucmlnaHRTaGlmdCh0aGlzLl9kYXRhLCBzaGlmdEFtb3VudCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcnJpZXMgb3V0IGEgYml0d2lzZSBhcml0aG1ldGljIHJpZ2h0IHNoaWZ0ICg+Pikgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSBzaGlmdEFtb3VudCAtIEhvdyBtdWNoIHRvIHNoaWZ0IGl0IGJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSByZXN1bHQuXG4gICAgICovXG4gICAgcHVibGljIGFyaXRobWV0aWNSaWdodFNoaWZ0KHNoaWZ0QW1vdW50OiBudW1iZXIpOiBMb25nSW50Qml0Qm9hcmQge1xuICAgICAgICByZXR1cm4gbmV3IExvbmdJbnRCaXRCb2FyZChMb25nSW50LmFyaXRobWV0aWNSaWdodFNoaWZ0KHRoaXMuX2RhdGEsIHNoaWZ0QW1vdW50KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHR3byBCaXRCb2FyZHMgaGF2ZSBlcXVhbCBkYXRhIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSB0d28gQml0Qm9hcmQgaGF2ZSB0aGUgc2FtZSBkYXRhIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBlcXVhbHModmFsdWU6IExvbmdJbnQgfCBMb25nSW50Qml0Qm9hcmQgfCBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuZXF1YWxzKHZhbHVlIGluc3RhbmNlb2YgTG9uZ0ludEJpdEJvYXJkID8gdmFsdWUuX2RhdGEgOiB2YWx1ZSk7XG4gICAgfVxufVxuIl19
@@ -1,13 +1,12 @@
1
1
  /**
2
2
  * Reads from the console.
3
- *
4
- * @param prompt The question to get the answer to.
3
+ * @param prompt - The question to get the answer to.
5
4
  * @returns The value read.
6
5
  */
7
6
  declare function readLine(prompt?: string): Promise<string>;
8
7
  /**
9
8
  * Writes to the console.
10
- * @param text The text to write.
9
+ * @param text - The text to write.
11
10
  */
12
11
  declare function writeLine(...text: string[]): void;
13
12
  /** Clears the console. */
package/build/console.js CHANGED
@@ -2,8 +2,7 @@
2
2
  import readline from "readline/promises";
3
3
  /**
4
4
  * Reads from the console.
5
- *
6
- * @param prompt The question to get the answer to.
5
+ * @param prompt - The question to get the answer to.
7
6
  * @returns The value read.
8
7
  */
9
8
  async function readLine(prompt = "") {
@@ -14,7 +13,7 @@ async function readLine(prompt = "") {
14
13
  }
15
14
  /**
16
15
  * Writes to the console.
17
- * @param text The text to write.
16
+ * @param text - The text to write.
18
17
  */
19
18
  function writeLine(...text) {
20
19
  console.log(...text);
@@ -24,4 +23,4 @@ function clear() {
24
23
  console.clear();
25
24
  }
26
25
  export default { clear, readLine, writeLine };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUV6Qzs7Ozs7R0FLRztBQUNILEtBQUssVUFBVSxRQUFRLENBQUMsU0FBaUIsRUFBRTtJQUN2QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU1QyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFZixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxTQUFTLENBQUMsR0FBRyxJQUFjO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsMEJBQTBCO0FBQzFCLFNBQVMsS0FBSztJQUNWLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNwQixDQUFDO0FBRUQsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgcmVhZGxpbmUgZnJvbSBcInJlYWRsaW5lL3Byb21pc2VzXCI7XG5cbi8qKlxuICogUmVhZHMgZnJvbSB0aGUgY29uc29sZS5cbiAqXG4gKiBAcGFyYW0gcHJvbXB0IFRoZSBxdWVzdGlvbiB0byBnZXQgdGhlIGFuc3dlciB0by5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSByZWFkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWFkTGluZShwcm9tcHQ6IHN0cmluZyA9IFwiXCIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlYWRlciA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZShwcm9jZXNzLnN0ZGluLCBwcm9jZXNzLnN0ZG91dCk7XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCByZWFkZXIucXVlc3Rpb24ocHJvbXB0KTtcblxuICAgIHJlYWRlci5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGlucHV0O1xufVxuXG4vKipcbiAqIFdyaXRlcyB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIHdyaXRlLlxuICovXG5mdW5jdGlvbiB3cml0ZUxpbmUoLi4udGV4dDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyguLi50ZXh0KTtcbn1cblxuLyoqIENsZWFycyB0aGUgY29uc29sZS4gKi9cbmZ1bmN0aW9uIGNsZWFyKCk6IHZvaWQge1xuICAgIGNvbnNvbGUuY2xlYXIoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgeyBjbGVhciwgcmVhZExpbmUsIHdyaXRlTGluZSB9O1xuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUV6Qzs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLFFBQVEsQ0FBQyxTQUFpQixFQUFFO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkUsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVmLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLFNBQVMsQ0FBQyxHQUFHLElBQWM7SUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCwwQkFBMEI7QUFDMUIsU0FBUyxLQUFLO0lBQ1YsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxlQUFlLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCByZWFkbGluZSBmcm9tIFwicmVhZGxpbmUvcHJvbWlzZXNcIjtcblxuLyoqXG4gKiBSZWFkcyBmcm9tIHRoZSBjb25zb2xlLlxuICogQHBhcmFtIHByb21wdCAtIFRoZSBxdWVzdGlvbiB0byBnZXQgdGhlIGFuc3dlciB0by5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSByZWFkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWFkTGluZShwcm9tcHQ6IHN0cmluZyA9IFwiXCIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlYWRlciA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZShwcm9jZXNzLnN0ZGluLCBwcm9jZXNzLnN0ZG91dCk7XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCByZWFkZXIucXVlc3Rpb24ocHJvbXB0KTtcblxuICAgIHJlYWRlci5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGlucHV0O1xufVxuXG4vKipcbiAqIFdyaXRlcyB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHRleHQgdG8gd3JpdGUuXG4gKi9cbmZ1bmN0aW9uIHdyaXRlTGluZSguLi50ZXh0OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKC4uLnRleHQpO1xufVxuXG4vKiogQ2xlYXJzIHRoZSBjb25zb2xlLiAqL1xuZnVuY3Rpb24gY2xlYXIoKTogdm9pZCB7XG4gICAgY29uc29sZS5jbGVhcigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7IGNsZWFyLCByZWFkTGluZSwgd3JpdGVMaW5lIH07XG4iXX0=
@@ -1,8 +1,9 @@
1
1
  import Base from "../../base/board.js";
2
+ import LongInt from "../../bitBoard/longInt.js";
2
3
  import LongIntBitBoard from "../../bitBoard/longIntBitBoard.js";
3
4
  import type { Position } from "../../base/board.js";
4
5
  /** Represents a Connect 4 board. */
5
- export default class Board extends Base<LongIntBitBoard> {
6
+ export default class Board extends Base<LongInt> {
6
7
  protected winningStates: LongIntBitBoard[];
7
8
  private readonly FULL_BOARD;
8
9
  private readonly HORIZONTAL;
@@ -11,14 +12,20 @@ export default class Board extends Base<LongIntBitBoard> {
11
12
  private readonly NON_LEADING_DIAGONAL;
12
13
  /** Creates an instance of Board. */
13
14
  constructor();
14
- /** Calculates the heuristic score for the current board state. */
15
+ /**
16
+ * Calculates the heuristic score for the current board state.
17
+ * @returns The heuristic score.
18
+ */
15
19
  get heuristic(): number;
16
- /** Generates a list of empty cells. */
20
+ /**
21
+ * Generates a list of empty cells.
22
+ * @returns The list of empty cells.
23
+ */
17
24
  get emptyCells(): Position[];
18
25
  /**
19
26
  * Makes a move on the board.
20
- * @param move The move to make.
21
- * @param playerId The player making the move.
27
+ * @param move - The move to make.
28
+ * @param playerId - The player making the move.
22
29
  */
23
30
  makeMove(move: Position, playerId: number): void;
24
31
  }
@@ -41,7 +41,10 @@ export default class Board extends Base {
41
41
  }
42
42
  }
43
43
  }
44
- /** Calculates the heuristic score for the current board state. */
44
+ /**
45
+ * Calculates the heuristic score for the current board state.
46
+ * @returns The heuristic score.
47
+ */
45
48
  get heuristic() {
46
49
  const { winner } = this;
47
50
  if (winner === 0)
@@ -68,10 +71,13 @@ export default class Board extends Base {
68
71
  const p1Score = 10 * p1LineOfThreeScore + p1LineOfTwoScore;
69
72
  return p0Score - p1Score;
70
73
  }
71
- /** Generates a list of empty cells. */
74
+ /**
75
+ * Generates a list of empty cells.
76
+ * @returns The list of empty cells.
77
+ */
72
78
  get emptyCells() {
73
79
  const emptyCells = [];
74
- for (let x = 0; x < this.boardWidth; x++) {
80
+ for (let x = 0; x < this.width; x++) {
75
81
  const cell = { x, y: 0 };
76
82
  if (this.cellOccupier(cell) === null)
77
83
  emptyCells.push(cell);
@@ -80,8 +86,8 @@ export default class Board extends Base {
80
86
  }
81
87
  /**
82
88
  * Makes a move on the board.
83
- * @param move The move to make.
84
- * @param playerId The player making the move.
89
+ * @param move - The move to make.
90
+ * @param playerId - The player making the move.
85
91
  */
86
92
  makeMove(move, playerId) {
87
93
  const updatedMove = move;
@@ -94,4 +100,4 @@ export default class Board extends Base {
94
100
  super.makeMove(updatedMove, playerId);
95
101
  }
96
102
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2FtZXMvY29ubmVjdDQvYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0scUJBQXFCLENBQUM7QUFDdkMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxlQUFlLE1BQU0sbUNBQW1DLENBQUM7QUFHaEUsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sS0FBTSxTQUFRLElBQXFCO0lBQzFDLGFBQWEsR0FBc0IsRUFBRSxDQUFDO0lBRS9CLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLHNDQUFzQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFbEYsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsc0NBQXNDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUVsRixRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxzQ0FBc0MsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRWhGLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsc0NBQXNDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUV4RixvQkFBb0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLHNDQUFzQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFN0csb0NBQW9DO0lBQ3BDO1FBQ0ksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksZUFB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RTNELE9BQU8sT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLElBQW9CLFVBQVU7UUFDMUIsTUFBTSxVQUFVLEdBQWUsRUFBRSxDQUFDO1FBRWxDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBRW5DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJO2dCQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNhLFFBQVEsQ0FBQyxJQUFjLEVBQUUsUUFBZ0I7UUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1gsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2UgZnJvbSBcIi4uLy4uL2Jhc2UvYm9hcmQuanNcIjtcbmltcG9ydCBMb25nSW50IGZyb20gXCIuLi8uLi9iaXRCb2FyZC9sb25nSW50LmpzXCI7XG5pbXBvcnQgTG9uZ0ludEJpdEJvYXJkIGZyb20gXCIuLi8uLi9iaXRCb2FyZC9sb25nSW50Qml0Qm9hcmQuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vLi4vYmFzZS9ib2FyZC5qc1wiO1xuXG4vKiogUmVwcmVzZW50cyBhIENvbm5lY3QgNCBib2FyZC4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvYXJkIGV4dGVuZHMgQmFzZTxMb25nSW50Qml0Qm9hcmQ+IHtcbiAgICBwcm90ZWN0ZWQgd2lubmluZ1N0YXRlczogTG9uZ0ludEJpdEJvYXJkW10gPSBbXTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgRlVMTF9CT0FSRCA9IG5ldyBMb25nSW50KFswYjExMTFfMTExMTExMV8xMTExMTExXzExMTExMTFfMTExMTExMSwgMGIxMTExMTExXzExMV0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBIT1JJWk9OVEFMID0gbmV3IExvbmdJbnQoWzBiMDAwMF8wMDAwMDAwXzAwMDAwMDBfMDAwMDAwMF8wMDAxMTExLCAwYjAwMDAwMDBfMDAwXSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFZFUlRJQ0FMID0gbmV3IExvbmdJbnQoWzBiMDAwMF8wMDAwMDAxXzAwMDAwMDFfMDAwMDAwMV8wMDAwMDAxLCAwYjAwMDAwMDBfMDAwXSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IExFQURJTkdfRElBR09OQUwgPSBuZXcgTG9uZ0ludChbMGIwMDAwXzAwMDEwMDBfMDAwMDEwMF8wMDAwMDEwXzAwMDAwMDEsIDBiMDAwMDAwMF8wMDBdKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgTk9OX0xFQURJTkdfRElBR09OQUwgPSBuZXcgTG9uZ0ludChbMGIwMDAwXzAwMDAwMDFfMDAwMDAxMF8wMDAwMTAwXzAwMDEwMDAsIDBiMDAwMDAwMF8wMDBdKTtcblxuICAgIC8qKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEJvYXJkLiAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoNywgNik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDY7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMud2lubmluZ1N0YXRlcy5wdXNoKG5ldyBMb25nSW50Qml0Qm9hcmQoTG9uZ0ludFxuICAgICAgICAgICAgICAgICAgICAubGVmdFNoaWZ0KHRoaXMuSE9SSVpPTlRBTCwgaSArIDcgKiBqKVxuICAgICAgICAgICAgICAgICAgICAuYW5kKHRoaXMuRlVMTF9CT0FSRCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpbm5pbmdTdGF0ZXMucHVzaChuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnRcbiAgICAgICAgICAgICAgICAgICAgLmxlZnRTaGlmdCh0aGlzLlZFUlRJQ0FMLCBpICsgNyAqIGopXG4gICAgICAgICAgICAgICAgICAgIC5hbmQodGhpcy5GVUxMX0JPQVJEKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMud2lubmluZ1N0YXRlcy5wdXNoKG5ldyBMb25nSW50Qml0Qm9hcmQoTG9uZ0ludFxuICAgICAgICAgICAgICAgICAgICAubGVmdFNoaWZ0KHRoaXMuTEVBRElOR19ESUFHT05BTCwgaSArIDcgKiBqKVxuICAgICAgICAgICAgICAgICAgICAuYW5kKHRoaXMuRlVMTF9CT0FSRCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpbm5pbmdTdGF0ZXMucHVzaChuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnRcbiAgICAgICAgICAgICAgICAgICAgLmxlZnRTaGlmdCh0aGlzLk5PTl9MRUFESU5HX0RJQUdPTkFMLCBpICsgNyAqIGopXG4gICAgICAgICAgICAgICAgICAgIC5hbmQodGhpcy5GVUxMX0JPQVJEKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENhbGN1bGF0ZXMgdGhlIGhldXJpc3RpYyBzY29yZSBmb3IgdGhlIGN1cnJlbnQgYm9hcmQgc3RhdGUuICovXG4gICAgcHVibGljIGdldCBoZXVyaXN0aWMoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgeyB3aW5uZXIgfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHdpbm5lciA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiAxMDAwO1xuXG4gICAgICAgIGlmICh3aW5uZXIgPT09IDEpXG4gICAgICAgICAgICByZXR1cm4gLTEwMDA7XG5cbiAgICAgICAgY29uc3QgcDBMaW5lT2ZUaHJlZU5vR2FwcyA9IHRoaXMuaGFzTGluZSgwLCAzKTtcbiAgICAgICAgY29uc3QgcDFMaW5lT2ZUaHJlZU5vR2FwcyA9IHRoaXMuaGFzTGluZSgxLCAzKTtcbiAgICAgICAgY29uc3QgcDBMaW5lT2ZUaHJlZU9uZUdhcCA9IHRoaXMuaGFzTGluZSgwLCAzLCAxKTtcbiAgICAgICAgY29uc3QgcDFMaW5lT2ZUaHJlZU9uZUdhcCA9IHRoaXMuaGFzTGluZSgxLCAzLCAxKTtcbiAgICAgICAgY29uc3QgcDBMaW5lT2ZUaHJlZVR3b0dhcHMgPSB0aGlzLmhhc0xpbmUoMCwgMywgMik7XG4gICAgICAgIGNvbnN0IHAxTGluZU9mVGhyZWVUd29HYXBzID0gdGhpcy5oYXNMaW5lKDEsIDMsIDIpO1xuICAgICAgICBjb25zdCBwMExpbmVPZlR3b05vR2FwcyA9IHRoaXMuaGFzTGluZSgwLCAyKTtcbiAgICAgICAgY29uc3QgcDFMaW5lT2ZUd29Ob0dhcHMgPSB0aGlzLmhhc0xpbmUoMSwgMik7XG4gICAgICAgIGNvbnN0IHAwTGluZU9mVHdvT25lR2FwID0gdGhpcy5oYXNMaW5lKDAsIDIsIDEpO1xuICAgICAgICBjb25zdCBwMUxpbmVPZlR3b09uZUdhcCA9IHRoaXMuaGFzTGluZSgxLCAyLCAxKTtcbiAgICAgICAgY29uc3QgcDBMaW5lT2ZUd29Ud29HYXBzID0gdGhpcy5oYXNMaW5lKDAsIDIsIDIpO1xuICAgICAgICBjb25zdCBwMUxpbmVPZlR3b1R3b0dhcHMgPSB0aGlzLmhhc0xpbmUoMSwgMiwgMik7XG4gICAgICAgIGNvbnN0IHAwTGluZU9mVGhyZWVTY29yZSA9IDMgKiBwMExpbmVPZlRocmVlTm9HYXBzICsgMiAqIHAwTGluZU9mVGhyZWVPbmVHYXAgKyBwMExpbmVPZlRocmVlVHdvR2FwcztcbiAgICAgICAgY29uc3QgcDFMaW5lT2ZUaHJlZVNjb3JlID0gMyAqIHAxTGluZU9mVGhyZWVOb0dhcHMgKyAyICogcDFMaW5lT2ZUaHJlZU9uZUdhcCArIHAxTGluZU9mVGhyZWVUd29HYXBzO1xuICAgICAgICBjb25zdCBwMExpbmVPZlR3b1Njb3JlID0gMyAqIHAwTGluZU9mVHdvTm9HYXBzICsgMiAqIHAwTGluZU9mVHdvT25lR2FwICsgcDBMaW5lT2ZUd29Ud29HYXBzO1xuICAgICAgICBjb25zdCBwMUxpbmVPZlR3b1Njb3JlID0gMyAqIHAxTGluZU9mVHdvTm9HYXBzICsgMiAqIHAxTGluZU9mVHdvT25lR2FwICsgcDFMaW5lT2ZUd29Ud29HYXBzO1xuICAgICAgICBjb25zdCBwMFNjb3JlID0gMTAgKiBwMExpbmVPZlRocmVlU2NvcmUgKyBwMExpbmVPZlR3b1Njb3JlO1xuICAgICAgICBjb25zdCBwMVNjb3JlID0gMTAgKiBwMUxpbmVPZlRocmVlU2NvcmUgKyBwMUxpbmVPZlR3b1Njb3JlO1xuXG4gICAgICAgIHJldHVybiBwMFNjb3JlIC0gcDFTY29yZTtcbiAgICB9XG5cbiAgICAvKiogR2VuZXJhdGVzIGEgbGlzdCBvZiBlbXB0eSBjZWxscy4gKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGVtcHR5Q2VsbHMoKTogUG9zaXRpb25bXSB7XG4gICAgICAgIGNvbnN0IGVtcHR5Q2VsbHM6IFBvc2l0aW9uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHRoaXMuYm9hcmRXaWR0aDsgeCsrKSB7XG4gICAgICAgICAgICBjb25zdCBjZWxsOiBQb3NpdGlvbiA9IHsgeCwgeTogMCB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jZWxsT2NjdXBpZXIoY2VsbCkgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgZW1wdHlDZWxscy5wdXNoKGNlbGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVtcHR5Q2VsbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBtb3ZlIG9uIHRoZSBib2FyZC5cbiAgICAgKiBAcGFyYW0gbW92ZSBUaGUgbW92ZSB0byBtYWtlLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJJZCBUaGUgcGxheWVyIG1ha2luZyB0aGUgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWFrZU1vdmUobW92ZTogUG9zaXRpb24sIHBsYXllcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE1vdmUgPSBtb3ZlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSA1OyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2VsbE9jY3VwaWVyKHsgeDogbW92ZS54LCB5OiBpIH0pID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbW92ZS55ID0gaTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdXBlci5tYWtlTW92ZSh1cGRhdGVkTW92ZSwgcGxheWVySWQpO1xuICAgIH1cbn1cbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2FtZXMvY29ubmVjdDQvYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0scUJBQXFCLENBQUM7QUFDdkMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxlQUFlLE1BQU0sbUNBQW1DLENBQUM7QUFHaEUsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sS0FBTSxTQUFRLElBQWE7SUFDbEMsYUFBYSxHQUFzQixFQUFFLENBQUM7SUFFL0IsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsc0NBQXNDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUVsRixVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxzQ0FBc0MsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRWxGLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLHNDQUFzQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFaEYsZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxzQ0FBc0MsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRXhGLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsc0NBQXNDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUU3RyxvQ0FBb0M7SUFDcEM7UUFDSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsT0FBTztxQkFDOUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsT0FBTztxQkFDOUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsT0FBTztxQkFDOUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDM0MsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNMLENBQUM7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxPQUFPO3FCQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUMvQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLFNBQVM7UUFDaEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLE1BQU0sS0FBSyxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSSxNQUFNLEtBQUssQ0FBQztZQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFakIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLEdBQUcsb0JBQW9CLENBQUM7UUFDcEcsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDO1FBQ3BHLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLGlCQUFpQixHQUFHLENBQUMsR0FBRyxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztRQUM1RixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7UUFDNUYsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUUzRCxPQUFPLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQW9CLFVBQVU7UUFDMUIsTUFBTSxVQUFVLEdBQWUsRUFBRSxDQUFDO1FBRWxDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBRW5DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJO2dCQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNhLFFBQVEsQ0FBQyxJQUFjLEVBQUUsUUFBZ0I7UUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1gsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2UgZnJvbSBcIi4uLy4uL2Jhc2UvYm9hcmQuanNcIjtcbmltcG9ydCBMb25nSW50IGZyb20gXCIuLi8uLi9iaXRCb2FyZC9sb25nSW50LmpzXCI7XG5pbXBvcnQgTG9uZ0ludEJpdEJvYXJkIGZyb20gXCIuLi8uLi9iaXRCb2FyZC9sb25nSW50Qml0Qm9hcmQuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vLi4vYmFzZS9ib2FyZC5qc1wiO1xuXG4vKiogUmVwcmVzZW50cyBhIENvbm5lY3QgNCBib2FyZC4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvYXJkIGV4dGVuZHMgQmFzZTxMb25nSW50PiB7XG4gICAgcHJvdGVjdGVkIHdpbm5pbmdTdGF0ZXM6IExvbmdJbnRCaXRCb2FyZFtdID0gW107XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IEZVTExfQk9BUkQgPSBuZXcgTG9uZ0ludChbMGIxMTExXzExMTExMTFfMTExMTExMV8xMTExMTExXzExMTExMTEsIDBiMTExMTExMV8xMTFdKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgSE9SSVpPTlRBTCA9IG5ldyBMb25nSW50KFswYjAwMDBfMDAwMDAwMF8wMDAwMDAwXzAwMDAwMDBfMDAwMTExMSwgMGIwMDAwMDAwXzAwMF0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBWRVJUSUNBTCA9IG5ldyBMb25nSW50KFswYjAwMDBfMDAwMDAwMV8wMDAwMDAxXzAwMDAwMDFfMDAwMDAwMSwgMGIwMDAwMDAwXzAwMF0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMRUFESU5HX0RJQUdPTkFMID0gbmV3IExvbmdJbnQoWzBiMDAwMF8wMDAxMDAwXzAwMDAxMDBfMDAwMDAxMF8wMDAwMDAxLCAwYjAwMDAwMDBfMDAwXSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IE5PTl9MRUFESU5HX0RJQUdPTkFMID0gbmV3IExvbmdJbnQoWzBiMDAwMF8wMDAwMDAxXzAwMDAwMTBfMDAwMDEwMF8wMDAxMDAwLCAwYjAwMDAwMDBfMDAwXSk7XG5cbiAgICAvKiogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBCb2FyZC4gKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKDcsIDYpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCA2OyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpbm5pbmdTdGF0ZXMucHVzaChuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnRcbiAgICAgICAgICAgICAgICAgICAgLmxlZnRTaGlmdCh0aGlzLkhPUklaT05UQUwsIGkgKyA3ICogailcbiAgICAgICAgICAgICAgICAgICAgLmFuZCh0aGlzLkZVTExfQk9BUkQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgMzsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5uaW5nU3RhdGVzLnB1c2gobmV3IExvbmdJbnRCaXRCb2FyZChMb25nSW50XG4gICAgICAgICAgICAgICAgICAgIC5sZWZ0U2hpZnQodGhpcy5WRVJUSUNBTCwgaSArIDcgKiBqKVxuICAgICAgICAgICAgICAgICAgICAuYW5kKHRoaXMuRlVMTF9CT0FSRCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpbm5pbmdTdGF0ZXMucHVzaChuZXcgTG9uZ0ludEJpdEJvYXJkKExvbmdJbnRcbiAgICAgICAgICAgICAgICAgICAgLmxlZnRTaGlmdCh0aGlzLkxFQURJTkdfRElBR09OQUwsIGkgKyA3ICogailcbiAgICAgICAgICAgICAgICAgICAgLmFuZCh0aGlzLkZVTExfQk9BUkQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgMzsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5uaW5nU3RhdGVzLnB1c2gobmV3IExvbmdJbnRCaXRCb2FyZChMb25nSW50XG4gICAgICAgICAgICAgICAgICAgIC5sZWZ0U2hpZnQodGhpcy5OT05fTEVBRElOR19ESUFHT05BTCwgaSArIDcgKiBqKVxuICAgICAgICAgICAgICAgICAgICAuYW5kKHRoaXMuRlVMTF9CT0FSRCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIGhldXJpc3RpYyBzY29yZSBmb3IgdGhlIGN1cnJlbnQgYm9hcmQgc3RhdGUuXG4gICAgICogQHJldHVybnMgVGhlIGhldXJpc3RpYyBzY29yZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhldXJpc3RpYygpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7IHdpbm5lciB9ID0gdGhpcztcblxuICAgICAgICBpZiAod2lubmVyID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIDEwMDA7XG5cbiAgICAgICAgaWYgKHdpbm5lciA9PT0gMSlcbiAgICAgICAgICAgIHJldHVybiAtMTAwMDtcblxuICAgICAgICBjb25zdCBwMExpbmVPZlRocmVlTm9HYXBzID0gdGhpcy5oYXNMaW5lKDAsIDMpO1xuICAgICAgICBjb25zdCBwMUxpbmVPZlRocmVlTm9HYXBzID0gdGhpcy5oYXNMaW5lKDEsIDMpO1xuICAgICAgICBjb25zdCBwMExpbmVPZlRocmVlT25lR2FwID0gdGhpcy5oYXNMaW5lKDAsIDMsIDEpO1xuICAgICAgICBjb25zdCBwMUxpbmVPZlRocmVlT25lR2FwID0gdGhpcy5oYXNMaW5lKDEsIDMsIDEpO1xuICAgICAgICBjb25zdCBwMExpbmVPZlRocmVlVHdvR2FwcyA9IHRoaXMuaGFzTGluZSgwLCAzLCAyKTtcbiAgICAgICAgY29uc3QgcDFMaW5lT2ZUaHJlZVR3b0dhcHMgPSB0aGlzLmhhc0xpbmUoMSwgMywgMik7XG4gICAgICAgIGNvbnN0IHAwTGluZU9mVHdvTm9HYXBzID0gdGhpcy5oYXNMaW5lKDAsIDIpO1xuICAgICAgICBjb25zdCBwMUxpbmVPZlR3b05vR2FwcyA9IHRoaXMuaGFzTGluZSgxLCAyKTtcbiAgICAgICAgY29uc3QgcDBMaW5lT2ZUd29PbmVHYXAgPSB0aGlzLmhhc0xpbmUoMCwgMiwgMSk7XG4gICAgICAgIGNvbnN0IHAxTGluZU9mVHdvT25lR2FwID0gdGhpcy5oYXNMaW5lKDEsIDIsIDEpO1xuICAgICAgICBjb25zdCBwMExpbmVPZlR3b1R3b0dhcHMgPSB0aGlzLmhhc0xpbmUoMCwgMiwgMik7XG4gICAgICAgIGNvbnN0IHAxTGluZU9mVHdvVHdvR2FwcyA9IHRoaXMuaGFzTGluZSgxLCAyLCAyKTtcbiAgICAgICAgY29uc3QgcDBMaW5lT2ZUaHJlZVNjb3JlID0gMyAqIHAwTGluZU9mVGhyZWVOb0dhcHMgKyAyICogcDBMaW5lT2ZUaHJlZU9uZUdhcCArIHAwTGluZU9mVGhyZWVUd29HYXBzO1xuICAgICAgICBjb25zdCBwMUxpbmVPZlRocmVlU2NvcmUgPSAzICogcDFMaW5lT2ZUaHJlZU5vR2FwcyArIDIgKiBwMUxpbmVPZlRocmVlT25lR2FwICsgcDFMaW5lT2ZUaHJlZVR3b0dhcHM7XG4gICAgICAgIGNvbnN0IHAwTGluZU9mVHdvU2NvcmUgPSAzICogcDBMaW5lT2ZUd29Ob0dhcHMgKyAyICogcDBMaW5lT2ZUd29PbmVHYXAgKyBwMExpbmVPZlR3b1R3b0dhcHM7XG4gICAgICAgIGNvbnN0IHAxTGluZU9mVHdvU2NvcmUgPSAzICogcDFMaW5lT2ZUd29Ob0dhcHMgKyAyICogcDFMaW5lT2ZUd29PbmVHYXAgKyBwMUxpbmVPZlR3b1R3b0dhcHM7XG4gICAgICAgIGNvbnN0IHAwU2NvcmUgPSAxMCAqIHAwTGluZU9mVGhyZWVTY29yZSArIHAwTGluZU9mVHdvU2NvcmU7XG4gICAgICAgIGNvbnN0IHAxU2NvcmUgPSAxMCAqIHAxTGluZU9mVGhyZWVTY29yZSArIHAxTGluZU9mVHdvU2NvcmU7XG5cbiAgICAgICAgcmV0dXJuIHAwU2NvcmUgLSBwMVNjb3JlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIGxpc3Qgb2YgZW1wdHkgY2VsbHMuXG4gICAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZW1wdHkgY2VsbHMuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBlbXB0eUNlbGxzKCk6IFBvc2l0aW9uW10ge1xuICAgICAgICBjb25zdCBlbXB0eUNlbGxzOiBQb3NpdGlvbltdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB0aGlzLndpZHRoOyB4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGw6IFBvc2l0aW9uID0geyB4LCB5OiAwIH07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNlbGxPY2N1cGllcihjZWxsKSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICBlbXB0eUNlbGxzLnB1c2goY2VsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW1wdHlDZWxscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIG1vdmUgb24gdGhlIGJvYXJkLlxuICAgICAqIEBwYXJhbSBtb3ZlIC0gVGhlIG1vdmUgdG8gbWFrZS5cbiAgICAgKiBAcGFyYW0gcGxheWVySWQgLSBUaGUgcGxheWVyIG1ha2luZyB0aGUgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWFrZU1vdmUobW92ZTogUG9zaXRpb24sIHBsYXllcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE1vdmUgPSBtb3ZlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSA1OyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2VsbE9jY3VwaWVyKHsgeDogbW92ZS54LCB5OiBpIH0pID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbW92ZS55ID0gaTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdXBlci5tYWtlTW92ZSh1cGRhdGVkTW92ZSwgcGxheWVySWQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,26 +1,33 @@
1
1
  import type { Algorithm, GameConstructorOptions, PlayerType } from "../../base/controller.js";
2
2
  import Base from "../../base/controller.js";
3
3
  import type { Position } from "../../base/board.js";
4
- /** Represents the controller for connect 4. */
5
- export default class Connect4 extends Base {
4
+ /**
5
+ * Represents the controller for connect 4.
6
+ * @template T - The type of the game ID.
7
+ */
8
+ export default class Connect4<T> extends Base<T> {
6
9
  /**
7
10
  * Creates an instance of Connect4.
8
- * @param playerOneType The type of player one.
9
- * @param playerTwoType The type of player two.
10
- * @param options The options for the game.
11
- * */
12
- constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options?: GameConstructorOptions);
11
+ * @param playerOneType - The type of player one (human or CPU).
12
+ * @param playerTwoType - The type of player two (human or CPU).
13
+ * @param options - The options for the game.
14
+ */
15
+ constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options: GameConstructorOptions<T>);
13
16
  /**
14
17
  * Calculates the CPU's move.
15
- * @param difficulty The difficulty of the CPU.
16
- * @param algorithm The algorithm to use.
18
+ * @param difficulty - The difficulty of the CPU.
19
+ * @param algorithm - The algorithm to use.
17
20
  * @returns The CPU's move.
21
+ * @throws {Error} An error if the difficulty is invalid.
18
22
  */
19
23
  determineCPUMove(difficulty: Omit<PlayerType, "human">, algorithm?: Algorithm): Position;
20
24
  /**
21
25
  * Finds the optimal move for the current board state.
22
- * @param options The options for the algorithm.
23
- * @returns The optimal move.
26
+ * @param options - The options for the algorithm.
27
+ * @param options.algorithm - The algorithm to use.
28
+ * @param options.maxDepth - The maximum depth to search.
29
+ * @returns The optimal move for the current board state.
30
+ * @throws {Error} An error if the algorithm is invalid.
24
31
  */
25
32
  findOptimalMove(options?: {
26
33
  algorithm?: Algorithm;
@@ -9,7 +9,8 @@ import Board from "./board.js";
9
9
  import Console from "../../console.js";
10
10
  /**
11
11
  * The default renderer for connect 4.
12
- * @param controller The controller to render.
12
+ * @template T - The type of the game ID.
13
+ * @param controller - The controller to render.
13
14
  */
14
15
  function defaultRender(controller) {
15
16
  Console.clear();
@@ -18,21 +19,26 @@ function defaultRender(controller) {
18
19
  if (winner !== false)
19
20
  Console.writeLine(winner === null ? "It's a tie!" : `Player ${winner + 1} wins!`);
20
21
  }
22
+ /**
23
+ * Represents the controller for connect 4.
24
+ * @template T - The type of the game ID.
25
+ */
21
26
  let Connect4 = class Connect4 extends Base {
22
27
  /**
23
28
  * Creates an instance of Connect4.
24
- * @param playerOneType The type of player one.
25
- * @param playerTwoType The type of player two.
26
- * @param options The options for the game.
27
- * */
29
+ * @param playerOneType - The type of player one (human or CPU).
30
+ * @param playerTwoType - The type of player two (human or CPU).
31
+ * @param options - The options for the game.
32
+ */
28
33
  constructor(playerOneType, playerTwoType, options) {
29
- super([playerOneType, playerTwoType], new Board(), options?.renderer ?? defaultRender, options?.id, options?.onEnd, options?.onInvalidInput);
34
+ super([playerOneType, playerTwoType], new Board(), options.renderer ?? defaultRender, options.id, options.onEnd, options.onInvalidInput);
30
35
  }
31
36
  /**
32
37
  * Calculates the CPU's move.
33
- * @param difficulty The difficulty of the CPU.
34
- * @param algorithm The algorithm to use.
38
+ * @param difficulty - The difficulty of the CPU.
39
+ * @param algorithm - The algorithm to use.
35
40
  * @returns The CPU's move.
41
+ * @throws {Error} An error if the difficulty is invalid.
36
42
  */
37
43
  determineCPUMove(difficulty, algorithm = "alphabeta") {
38
44
  const { emptyCells } = this.board;
@@ -52,8 +58,11 @@ let Connect4 = class Connect4 extends Base {
52
58
  }
53
59
  /**
54
60
  * Finds the optimal move for the current board state.
55
- * @param options The options for the algorithm.
56
- * @returns The optimal move.
61
+ * @param options - The options for the algorithm.
62
+ * @param options.algorithm - The algorithm to use.
63
+ * @param options.maxDepth - The maximum depth to search.
64
+ * @returns The optimal move for the current board state.
65
+ * @throws {Error} An error if the algorithm is invalid.
57
66
  */
58
67
  findOptimalMove(options) {
59
68
  const { maxDepth = Infinity, algorithm = "alphabeta" } = options ?? {};
@@ -65,7 +74,6 @@ let Connect4 = class Connect4 extends Base {
65
74
  };
66
75
  Connect4 = __decorate([
67
76
  Game
68
- /** Represents the controller for connect 4. */
69
77
  ], Connect4);
70
78
  export default Connect4;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nYW1lcy9jb25uZWN0NC9jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLE9BQU8sSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBR3ZDOzs7R0FHRztBQUNILFNBQVMsYUFBYSxDQUFDLFVBQW9CO0lBQ3ZDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUVwQyxJQUFJLE1BQU0sS0FBSyxLQUFLO1FBQ2hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFJYyxJQUFNLFFBQVEsR0FBZCxNQUFNLFFBQVMsU0FBUSxJQUFJO0lBQ3RDOzs7OztTQUtLO0lBQ0wsWUFBbUIsYUFBeUIsRUFBRSxhQUF5QixFQUFFLE9BQWdDO1FBQ3JHLEtBQUssQ0FDRCxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFDOUIsSUFBSSxLQUFLLEVBQUUsRUFDWCxPQUFPLEVBQUUsUUFBUSxJQUFJLGFBQWEsRUFDbEMsT0FBTyxFQUFFLEVBQUUsRUFDWCxPQUFPLEVBQUUsS0FBSyxFQUNkLE9BQU8sRUFBRSxjQUFjLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0IsQ0FBQyxVQUFxQyxFQUFFLFlBQXVCLFdBQVc7UUFDN0YsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBRSxDQUFDO1FBRTlFLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxlQUFlO2dCQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0QsS0FBSyxTQUFTO2dCQUNWLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RCxLQUFLLFdBQVc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVELEtBQUssU0FBUztnQkFDVixPQUFPLFVBQVUsQ0FBQztZQUN0QjtnQkFDSSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLE9BR3RCO1FBQ0csTUFBTSxFQUFFLFFBQVEsR0FBRyxRQUFRLEVBQUUsU0FBUyxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdkUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDbEIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztDQUNKLENBQUE7QUE1RG9CLFFBQVE7SUFGNUIsSUFBSTtJQUNMLCtDQUErQztHQUMxQixRQUFRLENBNEQ1QjtlQTVEb0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWxnb3JpdGhtLCBHYW1lQ29uc3RydWN0b3JPcHRpb25zLCBQbGF5ZXJUeXBlIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY29udHJvbGxlci5qc1wiO1xuaW1wb3J0IEJhc2UsIHsgR2FtZSB9IGZyb20gXCIuLi8uLi9iYXNlL2NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCBCb2FyZCBmcm9tIFwiLi9ib2FyZC5qc1wiO1xuaW1wb3J0IENvbnNvbGUgZnJvbSBcIi4uLy4uL2NvbnNvbGUuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vLi4vYmFzZS9ib2FyZC5qc1wiO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHJlbmRlcmVyIGZvciBjb25uZWN0IDQuXG4gKiBAcGFyYW0gY29udHJvbGxlciBUaGUgY29udHJvbGxlciB0byByZW5kZXIuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZW5kZXIoY29udHJvbGxlcjogQ29ubmVjdDQpOiB2b2lkIHtcbiAgICBDb25zb2xlLmNsZWFyKCk7XG4gICAgQ29uc29sZS53cml0ZUxpbmUoY29udHJvbGxlci5ib2FyZC50b1N0cmluZyh0cnVlLCB0cnVlLCBmYWxzZSwgW1wi4qykIFwiLCBcIuKspCBcIl0pKTtcbiAgICBjb25zdCB7IHdpbm5lciB9ID0gY29udHJvbGxlci5ib2FyZDtcblxuICAgIGlmICh3aW5uZXIgIT09IGZhbHNlKVxuICAgICAgICBDb25zb2xlLndyaXRlTGluZSh3aW5uZXIgPT09IG51bGwgPyBcIkl0J3MgYSB0aWUhXCIgOiBgUGxheWVyICR7d2lubmVyICsgMX0gd2lucyFgKTtcbn1cblxuQEdhbWVcbi8qKiBSZXByZXNlbnRzIHRoZSBjb250cm9sbGVyIGZvciBjb25uZWN0IDQuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25uZWN0NCBleHRlbmRzIEJhc2Uge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQ29ubmVjdDQuXG4gICAgICogQHBhcmFtIHBsYXllck9uZVR5cGUgVGhlIHR5cGUgb2YgcGxheWVyIG9uZS5cbiAgICAgKiBAcGFyYW0gcGxheWVyVHdvVHlwZSBUaGUgdHlwZSBvZiBwbGF5ZXIgdHdvLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgZ2FtZS5cbiAgICAgKiAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwbGF5ZXJPbmVUeXBlOiBQbGF5ZXJUeXBlLCBwbGF5ZXJUd29UeXBlOiBQbGF5ZXJUeXBlLCBvcHRpb25zPzogR2FtZUNvbnN0cnVjdG9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIFtwbGF5ZXJPbmVUeXBlLCBwbGF5ZXJUd29UeXBlXSxcbiAgICAgICAgICAgIG5ldyBCb2FyZCgpLFxuICAgICAgICAgICAgb3B0aW9ucz8ucmVuZGVyZXIgPz8gZGVmYXVsdFJlbmRlcixcbiAgICAgICAgICAgIG9wdGlvbnM/LmlkLFxuICAgICAgICAgICAgb3B0aW9ucz8ub25FbmQsXG4gICAgICAgICAgICBvcHRpb25zPy5vbkludmFsaWRJbnB1dCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBDUFUncyBtb3ZlLlxuICAgICAqIEBwYXJhbSBkaWZmaWN1bHR5IFRoZSBkaWZmaWN1bHR5IG9mIHRoZSBDUFUuXG4gICAgICogQHBhcmFtIGFsZ29yaXRobSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgQ1BVJ3MgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGV0ZXJtaW5lQ1BVTW92ZShkaWZmaWN1bHR5OiBPbWl0PFBsYXllclR5cGUsIFwiaHVtYW5cIj4sIGFsZ29yaXRobTogQWxnb3JpdGhtID0gXCJhbHBoYWJldGFcIik6IFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3QgeyBlbXB0eUNlbGxzIH0gPSB0aGlzLmJvYXJkO1xuICAgICAgICBjb25zdCByYW5kb21Nb3ZlID0gZW1wdHlDZWxsc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBlbXB0eUNlbGxzLmxlbmd0aCldITtcblxuICAgICAgICBzd2l0Y2ggKGRpZmZpY3VsdHkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbXBvc3NpYmxlQ1BVXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZE9wdGltYWxNb3ZlKHsgYWxnb3JpdGhtLCBtYXhEZXB0aDogMTAgfSk7XG4gICAgICAgICAgICBjYXNlIFwiaGFyZENQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRPcHRpbWFsTW92ZSh7IGFsZ29yaXRobSwgbWF4RGVwdGg6IDUgfSk7XG4gICAgICAgICAgICBjYXNlIFwibWVkaXVtQ1BVXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZE9wdGltYWxNb3ZlKHsgYWxnb3JpdGhtLCBtYXhEZXB0aDogMyB9KTtcbiAgICAgICAgICAgIGNhc2UgXCJlYXN5Q1BVXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhbmRvbU1vdmU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGlmZmljdWx0eS5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyB0aGUgb3B0aW1hbCBtb3ZlIGZvciB0aGUgY3VycmVudCBib2FyZCBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIGFsZ29yaXRobS5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kT3B0aW1hbE1vdmUob3B0aW9ucz86IHtcbiAgICAgICAgYWxnb3JpdGhtPzogQWxnb3JpdGhtO1xuICAgICAgICBtYXhEZXB0aD86IG51bWJlcjtcbiAgICB9KTogUG9zaXRpb24ge1xuICAgICAgICBjb25zdCB7IG1heERlcHRoID0gSW5maW5pdHksIGFsZ29yaXRobSA9IFwiYWxwaGFiZXRhXCIgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgICAgICAgaWYgKHRoaXMuYm9hcmQuaXNFbXB0eSlcbiAgICAgICAgICAgIHJldHVybiB7IHg6IDMsIHk6IDUgfTtcblxuICAgICAgICBjb25zdCBtaW5pbWF4ID0gdGhpc1thbGdvcml0aG1dKG1heERlcHRoKTtcblxuICAgICAgICByZXR1cm4gbWluaW1heC5tb3ZlO1xuICAgIH1cbn1cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nYW1lcy9jb25uZWN0NC9jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLE9BQU8sSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBR3ZDOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FBSSxVQUF1QjtJQUM3QyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFFcEMsSUFBSSxNQUFNLEtBQUssS0FBSztRQUNoQixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRixDQUFDO0FBRUQ7OztHQUdHO0FBRVksSUFBTSxRQUFRLEdBQWQsTUFBTSxRQUFZLFNBQVEsSUFBTztJQUM1Qzs7Ozs7T0FLRztJQUNILFlBQW1CLGFBQXlCLEVBQUUsYUFBeUIsRUFBRSxPQUFrQztRQUN2RyxLQUFLLENBQ0QsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQzlCLElBQUksS0FBSyxFQUFFLEVBQ1gsT0FBTyxDQUFDLFFBQVEsSUFBSSxhQUFhLEVBQ2pDLE9BQU8sQ0FBQyxFQUFFLEVBQ1YsT0FBTyxDQUFDLEtBQUssRUFDYixPQUFPLENBQUMsY0FBYyxDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQixDQUFDLFVBQXFDLEVBQUUsWUFBdUIsV0FBVztRQUM3RixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFFLENBQUM7UUFFOUUsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNqQixLQUFLLGVBQWU7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RCxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVELEtBQUssV0FBVztnQkFDWixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUQsS0FBSyxTQUFTO2dCQUNWLE9BQU8sVUFBVSxDQUFDO1lBQ3RCO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxlQUFlLENBQUMsT0FBdUQ7UUFDMUUsTUFBTSxFQUFFLFFBQVEsR0FBRyxRQUFRLEVBQUUsU0FBUyxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdkUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDbEIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztDQUNKLENBQUE7QUE3RG9CLFFBQVE7SUFENUIsSUFBSTtHQUNnQixRQUFRLENBNkQ1QjtlQTdEb0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWxnb3JpdGhtLCBHYW1lQ29uc3RydWN0b3JPcHRpb25zLCBQbGF5ZXJUeXBlIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY29udHJvbGxlci5qc1wiO1xuaW1wb3J0IEJhc2UsIHsgR2FtZSB9IGZyb20gXCIuLi8uLi9iYXNlL2NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCBCb2FyZCBmcm9tIFwiLi9ib2FyZC5qc1wiO1xuaW1wb3J0IENvbnNvbGUgZnJvbSBcIi4uLy4uL2NvbnNvbGUuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vLi4vYmFzZS9ib2FyZC5qc1wiO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHJlbmRlcmVyIGZvciBjb25uZWN0IDQuXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBnYW1lIElELlxuICogQHBhcmFtIGNvbnRyb2xsZXIgLSBUaGUgY29udHJvbGxlciB0byByZW5kZXIuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZW5kZXI8VD4oY29udHJvbGxlcjogQ29ubmVjdDQ8VD4pOiB2b2lkIHtcbiAgICBDb25zb2xlLmNsZWFyKCk7XG4gICAgQ29uc29sZS53cml0ZUxpbmUoY29udHJvbGxlci5ib2FyZC50b1N0cmluZyh0cnVlLCB0cnVlLCBmYWxzZSwgW1wi4qykIFwiLCBcIuKspCBcIl0pKTtcbiAgICBjb25zdCB7IHdpbm5lciB9ID0gY29udHJvbGxlci5ib2FyZDtcblxuICAgIGlmICh3aW5uZXIgIT09IGZhbHNlKVxuICAgICAgICBDb25zb2xlLndyaXRlTGluZSh3aW5uZXIgPT09IG51bGwgPyBcIkl0J3MgYSB0aWUhXCIgOiBgUGxheWVyICR7d2lubmVyICsgMX0gd2lucyFgKTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjb250cm9sbGVyIGZvciBjb25uZWN0IDQuXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBnYW1lIElELlxuICovXG5AR2FtZVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29ubmVjdDQ8VD4gZXh0ZW5kcyBCYXNlPFQ+IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIENvbm5lY3Q0LlxuICAgICAqIEBwYXJhbSBwbGF5ZXJPbmVUeXBlIC0gVGhlIHR5cGUgb2YgcGxheWVyIG9uZSAoaHVtYW4gb3IgQ1BVKS5cbiAgICAgKiBAcGFyYW0gcGxheWVyVHdvVHlwZSAtIFRoZSB0eXBlIG9mIHBsYXllciB0d28gKGh1bWFuIG9yIENQVSkuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGdhbWUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBsYXllck9uZVR5cGU6IFBsYXllclR5cGUsIHBsYXllclR3b1R5cGU6IFBsYXllclR5cGUsIG9wdGlvbnM6IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnM8VD4pIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBbcGxheWVyT25lVHlwZSwgcGxheWVyVHdvVHlwZV0sXG4gICAgICAgICAgICBuZXcgQm9hcmQoKSxcbiAgICAgICAgICAgIG9wdGlvbnMucmVuZGVyZXIgPz8gZGVmYXVsdFJlbmRlcixcbiAgICAgICAgICAgIG9wdGlvbnMuaWQsXG4gICAgICAgICAgICBvcHRpb25zLm9uRW5kLFxuICAgICAgICAgICAgb3B0aW9ucy5vbkludmFsaWRJbnB1dCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBDUFUncyBtb3ZlLlxuICAgICAqIEBwYXJhbSBkaWZmaWN1bHR5IC0gVGhlIGRpZmZpY3VsdHkgb2YgdGhlIENQVS5cbiAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIC0gVGhlIGFsZ29yaXRobSB0byB1c2UuXG4gICAgICogQHJldHVybnMgVGhlIENQVSdzIG1vdmUuXG4gICAgICogQHRocm93cyB7RXJyb3J9IEFuIGVycm9yIGlmIHRoZSBkaWZmaWN1bHR5IGlzIGludmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIGRldGVybWluZUNQVU1vdmUoZGlmZmljdWx0eTogT21pdDxQbGF5ZXJUeXBlLCBcImh1bWFuXCI+LCBhbGdvcml0aG06IEFsZ29yaXRobSA9IFwiYWxwaGFiZXRhXCIpOiBQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHsgZW1wdHlDZWxscyB9ID0gdGhpcy5ib2FyZDtcbiAgICAgICAgY29uc3QgcmFuZG9tTW92ZSA9IGVtcHR5Q2VsbHNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZW1wdHlDZWxscy5sZW5ndGgpXSE7XG5cbiAgICAgICAgc3dpdGNoIChkaWZmaWN1bHR5KSB7XG4gICAgICAgICAgICBjYXNlIFwiaW1wb3NzaWJsZUNQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRPcHRpbWFsTW92ZSh7IGFsZ29yaXRobSwgbWF4RGVwdGg6IDEwIH0pO1xuICAgICAgICAgICAgY2FzZSBcImhhcmRDUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kT3B0aW1hbE1vdmUoeyBhbGdvcml0aG0sIG1heERlcHRoOiA1IH0pO1xuICAgICAgICAgICAgY2FzZSBcIm1lZGl1bUNQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRPcHRpbWFsTW92ZSh7IGFsZ29yaXRobSwgbWF4RGVwdGg6IDMgfSk7XG4gICAgICAgICAgICBjYXNlIFwiZWFzeUNQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiByYW5kb21Nb3ZlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRpZmZpY3VsdHkuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgdGhlIG9wdGltYWwgbW92ZSBmb3IgdGhlIGN1cnJlbnQgYm9hcmQgc3RhdGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGFsZ29yaXRobS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucy5hbGdvcml0aG0gLSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucy5tYXhEZXB0aCAtIFRoZSBtYXhpbXVtIGRlcHRoIHRvIHNlYXJjaC5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlIGZvciB0aGUgY3VycmVudCBib2FyZCBzdGF0ZS5cbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gQW4gZXJyb3IgaWYgdGhlIGFsZ29yaXRobSBpcyBpbnZhbGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kT3B0aW1hbE1vdmUob3B0aW9ucz86IHsgYWxnb3JpdGhtPzogQWxnb3JpdGhtOyBtYXhEZXB0aD86IG51bWJlcjsgfSk6IFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3QgeyBtYXhEZXB0aCA9IEluZmluaXR5LCBhbGdvcml0aG0gPSBcImFscGhhYmV0YVwiIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLmJvYXJkLmlzRW1wdHkpXG4gICAgICAgICAgICByZXR1cm4geyB4OiAzLCB5OiA1IH07XG5cbiAgICAgICAgY29uc3QgbWluaW1heCA9IHRoaXNbYWxnb3JpdGhtXShtYXhEZXB0aCk7XG5cbiAgICAgICAgcmV0dXJuIG1pbmltYXgubW92ZTtcbiAgICB9XG59XG4iXX0=
@@ -1,10 +1,13 @@
1
1
  import Base from "../../base/board.js";
2
2
  import IntBitBoard from "../../bitBoard/intBitBoard.js";
3
3
  /** Represents a Tic Tac Toe board. */
4
- export default class Board extends Base<IntBitBoard> {
4
+ export default class Board extends Base<number> {
5
5
  protected winningStates: IntBitBoard[];
6
6
  /** Creates an instance of Board. */
7
7
  constructor();
8
- /** Calculates the heuristic score for the current board state. */
8
+ /**
9
+ * Calculates the heuristic score for the current board state.
10
+ * @returns The heuristic score.
11
+ */
9
12
  get heuristic(): number;
10
13
  }
@@ -8,7 +8,10 @@ export default class Board extends Base {
8
8
  constructor() {
9
9
  super(3, 3);
10
10
  }
11
- /** Calculates the heuristic score for the current board state. */
11
+ /**
12
+ * Calculates the heuristic score for the current board state.
13
+ * @returns The heuristic score.
14
+ */
12
15
  get heuristic() {
13
16
  const { winner } = this;
14
17
  if (winner === 0)
@@ -18,4 +21,4 @@ export default class Board extends Base {
18
21
  return 0;
19
22
  }
20
23
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2FtZXMvdGljdGFjdG9lL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZDLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBRXhELHNDQUFzQztBQUN0QyxNQUFNLENBQUMsT0FBTyxPQUFPLEtBQU0sU0FBUSxJQUFpQjtJQUN0QyxhQUFhLEdBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztTQUM1RixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFMUMsb0NBQW9DO0lBQ3BDO1FBQ0ksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLElBQVcsU0FBUztRQUNoQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXhCLElBQUksTUFBTSxLQUFLLENBQUM7WUFDWixPQUFPLENBQUMsQ0FBQztRQUViLElBQUksTUFBTSxLQUFLLENBQUM7WUFDWixPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWQsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZSBmcm9tIFwiLi4vLi4vYmFzZS9ib2FyZC5qc1wiO1xuaW1wb3J0IEludEJpdEJvYXJkIGZyb20gXCIuLi8uLi9iaXRCb2FyZC9pbnRCaXRCb2FyZC5qc1wiO1xuXG4vKiogUmVwcmVzZW50cyBhIFRpYyBUYWMgVG9lIGJvYXJkLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9hcmQgZXh0ZW5kcyBCYXNlPEludEJpdEJvYXJkPiB7XG4gICAgcHJvdGVjdGVkIHdpbm5pbmdTdGF0ZXM6IEludEJpdEJvYXJkW10gPSBbMHgwMDcsIDB4MDM4LCAweDFDMCwgMHgwNDksIDB4MDkyLCAweDEyNCwgMHgxMTEsIDB4MDU0XVxuICAgICAgICAubWFwKChkYXRhKSA9PiBuZXcgSW50Qml0Qm9hcmQoZGF0YSkpO1xuXG4gICAgLyoqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQm9hcmQuICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigzLCAzKTtcbiAgICB9XG5cbiAgICAvKiogQ2FsY3VsYXRlcyB0aGUgaGV1cmlzdGljIHNjb3JlIGZvciB0aGUgY3VycmVudCBib2FyZCBzdGF0ZS4gKi9cbiAgICBwdWJsaWMgZ2V0IGhldXJpc3RpYygpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7IHdpbm5lciB9ID0gdGhpcztcblxuICAgICAgICBpZiAod2lubmVyID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIDE7XG5cbiAgICAgICAgaWYgKHdpbm5lciA9PT0gMSlcbiAgICAgICAgICAgIHJldHVybiAtMTtcblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG59XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2FtZXMvdGljdGFjdG9lL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZDLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBRXhELHNDQUFzQztBQUN0QyxNQUFNLENBQUMsT0FBTyxPQUFPLEtBQU0sU0FBUSxJQUFZO0lBQ2pDLGFBQWEsR0FBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1NBQzVGLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUxQyxvQ0FBb0M7SUFDcEM7UUFDSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLFNBQVM7UUFDaEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLE1BQU0sS0FBSyxDQUFDO1lBQ1osT0FBTyxDQUFDLENBQUM7UUFFYixJQUFJLE1BQU0sS0FBSyxDQUFDO1lBQ1osT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVkLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2UgZnJvbSBcIi4uLy4uL2Jhc2UvYm9hcmQuanNcIjtcbmltcG9ydCBJbnRCaXRCb2FyZCBmcm9tIFwiLi4vLi4vYml0Qm9hcmQvaW50Qml0Qm9hcmQuanNcIjtcblxuLyoqIFJlcHJlc2VudHMgYSBUaWMgVGFjIFRvZSBib2FyZC4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvYXJkIGV4dGVuZHMgQmFzZTxudW1iZXI+IHtcbiAgICBwcm90ZWN0ZWQgd2lubmluZ1N0YXRlczogSW50Qml0Qm9hcmRbXSA9IFsweDAwNywgMHgwMzgsIDB4MUMwLCAweDA0OSwgMHgwOTIsIDB4MTI0LCAweDExMSwgMHgwNTRdXG4gICAgICAgIC5tYXAoKGRhdGEpID0+IG5ldyBJbnRCaXRCb2FyZChkYXRhKSk7XG5cbiAgICAvKiogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBCb2FyZC4gKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKDMsIDMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIGhldXJpc3RpYyBzY29yZSBmb3IgdGhlIGN1cnJlbnQgYm9hcmQgc3RhdGUuXG4gICAgICogQHJldHVybnMgVGhlIGhldXJpc3RpYyBzY29yZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhldXJpc3RpYygpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7IHdpbm5lciB9ID0gdGhpcztcblxuICAgICAgICBpZiAod2lubmVyID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIDE7XG5cbiAgICAgICAgaWYgKHdpbm5lciA9PT0gMSlcbiAgICAgICAgICAgIHJldHVybiAtMTtcblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG59XG4iXX0=
@@ -1,28 +1,33 @@
1
1
  import type { Algorithm, GameConstructorOptions, PlayerType } from "../../base/controller.js";
2
2
  import Base from "../../base/controller.js";
3
3
  import type { Position } from "../../base/board.js";
4
- /** A game of TicTacToe. */
5
- export default class TicTacToe extends Base {
4
+ /**
5
+ * A game of TicTacToe.
6
+ * @template T - The type of the game ID.
7
+ */
8
+ export default class TicTacToe<T> extends Base<T> {
6
9
  /**
7
10
  * Creates a new TicTacToe game.
8
- * @param playerOneType The type of player one.
9
- * @param playerTwoType The type of player two.
10
- * @param options The options for the game.
11
+ * @param playerOneType - The type of player one (human or CPU).
12
+ * @param playerTwoType - The type of player two (human or CPU).
13
+ * @param options - The options for the game.
11
14
  */
12
- constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options?: GameConstructorOptions);
15
+ constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options: GameConstructorOptions<T>);
13
16
  /**
14
17
  * Calculates the CPU's move.
15
- * @param difficulty The difficulty of the CPU.
16
- * @param algorithm The algorithm to use.
18
+ * @param difficulty - The difficulty of the CPU.
19
+ * @param algorithm - The algorithm to use.
17
20
  * @returns The CPU's move.
21
+ * @throws {Error} An error if the difficulty is invalid.
18
22
  */
19
23
  determineCPUMove(difficulty: Omit<PlayerType, "human">, algorithm?: Algorithm): Position;
20
24
  /**
21
25
  * Finds the optimal move for the current player.
22
- * @param algorithm The algorithm to use.
23
- * @param maxDepth The maximum depth to search.
24
- * @param randomMove The move to return if the board is empty.
25
- * @returns The optimal move.
26
+ * @param algorithm - The algorithm to use.
27
+ * @param algorithm.algorithm - The algorithm to use.
28
+ * @param algorithm.randomMove - The move to return if the board is empty.
29
+ * @returns The optimal move for the current player.
30
+ * @throws {Error} An error if the algorithm is invalid.
26
31
  */
27
32
  findOptimalMove({ algorithm, randomMove }?: {
28
33
  algorithm: Algorithm;