data-structure-typed 2.5.0 → 2.5.2

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 (246) hide show
  1. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
  2. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
  3. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
  4. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
  5. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
  6. package/CHANGELOG.md +5 -1
  7. package/README.md +124 -29
  8. package/dist/cjs/binary-tree.cjs +26282 -0
  9. package/dist/cjs/graph.cjs +5422 -0
  10. package/dist/cjs/hash.cjs +1310 -0
  11. package/dist/cjs/heap.cjs +1602 -0
  12. package/dist/cjs/index.cjs +31257 -14673
  13. package/dist/cjs/linked-list.cjs +4576 -0
  14. package/dist/cjs/matrix.cjs +1080 -0
  15. package/dist/cjs/priority-queue.cjs +1376 -0
  16. package/dist/cjs/queue.cjs +4264 -0
  17. package/dist/cjs/stack.cjs +907 -0
  18. package/dist/cjs/trie.cjs +1223 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +26319 -0
  20. package/dist/cjs-legacy/graph.cjs +5420 -0
  21. package/dist/cjs-legacy/hash.cjs +1310 -0
  22. package/dist/cjs-legacy/heap.cjs +1599 -0
  23. package/dist/cjs-legacy/index.cjs +31268 -14679
  24. package/dist/cjs-legacy/linked-list.cjs +4582 -0
  25. package/dist/cjs-legacy/matrix.cjs +1083 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1374 -0
  27. package/dist/cjs-legacy/queue.cjs +4262 -0
  28. package/dist/cjs-legacy/stack.cjs +907 -0
  29. package/dist/cjs-legacy/trie.cjs +1222 -0
  30. package/dist/esm/binary-tree.mjs +26267 -0
  31. package/dist/esm/graph.mjs +5409 -0
  32. package/dist/esm/hash.mjs +1307 -0
  33. package/dist/esm/heap.mjs +1596 -0
  34. package/dist/esm/index.mjs +31254 -14674
  35. package/dist/esm/linked-list.mjs +4569 -0
  36. package/dist/esm/matrix.mjs +1076 -0
  37. package/dist/esm/priority-queue.mjs +1372 -0
  38. package/dist/esm/queue.mjs +4260 -0
  39. package/dist/esm/stack.mjs +905 -0
  40. package/dist/esm/trie.mjs +1220 -0
  41. package/dist/esm-legacy/binary-tree.mjs +26304 -0
  42. package/dist/esm-legacy/graph.mjs +5407 -0
  43. package/dist/esm-legacy/hash.mjs +1307 -0
  44. package/dist/esm-legacy/heap.mjs +1593 -0
  45. package/dist/esm-legacy/index.mjs +31265 -14680
  46. package/dist/esm-legacy/linked-list.mjs +4575 -0
  47. package/dist/esm-legacy/matrix.mjs +1079 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1370 -0
  49. package/dist/esm-legacy/queue.mjs +4258 -0
  50. package/dist/esm-legacy/stack.mjs +905 -0
  51. package/dist/esm-legacy/trie.mjs +1219 -0
  52. package/dist/types/common/error.d.ts +9 -0
  53. package/dist/types/common/index.d.ts +1 -1
  54. package/dist/types/data-structures/base/index.d.ts +1 -0
  55. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  56. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  57. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +288 -0
  58. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +336 -0
  59. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +618 -18
  60. package/dist/types/data-structures/binary-tree/bst.d.ts +676 -1
  61. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +456 -0
  62. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +144 -1
  63. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3307 -399
  64. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3285 -360
  65. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2674 -325
  66. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3072 -287
  67. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  68. package/dist/types/data-structures/graph/directed-graph.d.ts +240 -0
  69. package/dist/types/data-structures/graph/undirected-graph.d.ts +216 -0
  70. package/dist/types/data-structures/hash/hash-map.d.ts +274 -10
  71. package/dist/types/data-structures/heap/heap.d.ts +336 -0
  72. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +411 -3
  73. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +363 -3
  74. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +434 -2
  75. package/dist/types/data-structures/matrix/matrix.d.ts +192 -0
  76. package/dist/types/data-structures/queue/deque.d.ts +364 -4
  77. package/dist/types/data-structures/queue/queue.d.ts +288 -0
  78. package/dist/types/data-structures/stack/stack.d.ts +240 -0
  79. package/dist/types/data-structures/trie/trie.d.ts +292 -4
  80. package/dist/types/interfaces/graph.d.ts +1 -1
  81. package/dist/types/types/common.d.ts +2 -2
  82. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  83. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  84. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  85. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  86. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  87. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  88. package/dist/types/types/utils/validate-type.d.ts +4 -4
  89. package/dist/umd/data-structure-typed.js +31196 -14608
  90. package/dist/umd/data-structure-typed.min.js +11 -5
  91. package/docs-site-docusaurus/README.md +41 -0
  92. package/docs-site-docusaurus/docs/api/README.md +52 -0
  93. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6644 -0
  94. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  95. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  96. package/docs-site-docusaurus/docs/api/classes/BST.md +6293 -0
  97. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  98. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  99. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  100. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  101. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  102. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  103. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  104. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  105. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  106. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  107. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  108. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  109. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  110. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  111. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  112. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  113. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  114. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  115. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  116. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  117. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  118. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  119. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  120. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  121. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  122. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  123. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  124. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  125. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6888 -0
  126. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  127. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  128. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  129. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  130. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  131. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1389 -0
  132. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1591 -0
  133. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1246 -0
  134. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  135. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  136. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  137. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  138. package/docs-site-docusaurus/docs/guide/architecture.md +615 -0
  139. package/docs-site-docusaurus/docs/guide/concepts.md +451 -0
  140. package/docs-site-docusaurus/docs/guide/faq.md +180 -0
  141. package/docs-site-docusaurus/docs/guide/guides.md +597 -0
  142. package/docs-site-docusaurus/docs/guide/installation.md +62 -0
  143. package/docs-site-docusaurus/docs/guide/integrations.md +825 -0
  144. package/docs-site-docusaurus/docs/guide/overview.md +645 -0
  145. package/docs-site-docusaurus/docs/guide/performance.md +835 -0
  146. package/docs-site-docusaurus/docs/guide/quick-start.md +104 -0
  147. package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
  148. package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
  149. package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
  150. package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
  151. package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
  152. package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
  153. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  154. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  155. package/docs-site-docusaurus/package-lock.json +18667 -0
  156. package/docs-site-docusaurus/package.json +50 -0
  157. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  158. package/docs-site-docusaurus/sidebars.ts +23 -0
  159. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  160. package/docs-site-docusaurus/src/css/custom.css +96 -0
  161. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  162. package/docs-site-docusaurus/src/pages/index.tsx +120 -0
  163. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  164. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  165. package/docs-site-docusaurus/static/.nojekyll +0 -0
  166. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  167. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  168. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  169. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  170. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  171. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  172. package/docs-site-docusaurus/static/img/logo.png +0 -0
  173. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  174. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  175. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  176. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  177. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  178. package/docs-site-docusaurus/static/llms.txt +37 -0
  179. package/docs-site-docusaurus/static/robots.txt +4 -0
  180. package/docs-site-docusaurus/typedoc.json +23 -0
  181. package/llms.txt +37 -0
  182. package/package.json +159 -55
  183. package/src/common/error.ts +19 -1
  184. package/src/common/index.ts +1 -1
  185. package/src/data-structures/base/index.ts +1 -0
  186. package/src/data-structures/base/iterable-element-base.ts +3 -2
  187. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  188. package/src/data-structures/base/linear-base.ts +3 -3
  189. package/src/data-structures/binary-tree/avl-tree.ts +287 -0
  190. package/src/data-structures/binary-tree/binary-indexed-tree.ts +327 -5
  191. package/src/data-structures/binary-tree/binary-tree.ts +581 -6
  192. package/src/data-structures/binary-tree/bst.ts +922 -7
  193. package/src/data-structures/binary-tree/red-black-tree.ts +453 -0
  194. package/src/data-structures/binary-tree/segment-tree.ts +139 -2
  195. package/src/data-structures/binary-tree/tree-map.ts +3300 -495
  196. package/src/data-structures/binary-tree/tree-multi-map.ts +3384 -563
  197. package/src/data-structures/binary-tree/tree-multi-set.ts +2757 -493
  198. package/src/data-structures/binary-tree/tree-set.ts +3122 -440
  199. package/src/data-structures/graph/abstract-graph.ts +6 -6
  200. package/src/data-structures/graph/directed-graph.ts +230 -0
  201. package/src/data-structures/graph/undirected-graph.ts +207 -0
  202. package/src/data-structures/hash/hash-map.ts +270 -19
  203. package/src/data-structures/heap/heap.ts +326 -4
  204. package/src/data-structures/heap/max-heap.ts +2 -2
  205. package/src/data-structures/linked-list/doubly-linked-list.ts +394 -3
  206. package/src/data-structures/linked-list/singly-linked-list.ts +348 -3
  207. package/src/data-structures/linked-list/skip-linked-list.ts +421 -7
  208. package/src/data-structures/matrix/matrix.ts +194 -10
  209. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  210. package/src/data-structures/queue/deque.ts +350 -5
  211. package/src/data-structures/queue/queue.ts +276 -0
  212. package/src/data-structures/stack/stack.ts +230 -0
  213. package/src/data-structures/trie/trie.ts +283 -7
  214. package/src/interfaces/graph.ts +1 -1
  215. package/src/types/common.ts +2 -2
  216. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  217. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  218. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  219. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
  220. package/src/types/data-structures/heap/heap.ts +1 -0
  221. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  222. package/src/types/utils/validate-type.ts +4 -4
  223. package/vercel.json +6 -0
  224. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  225. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  226. package/dist/leetcode/avl-tree.mjs +0 -2720
  227. package/dist/leetcode/binary-tree.mjs +0 -1594
  228. package/dist/leetcode/bst.mjs +0 -2398
  229. package/dist/leetcode/deque.mjs +0 -683
  230. package/dist/leetcode/directed-graph.mjs +0 -1733
  231. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  232. package/dist/leetcode/hash-map.mjs +0 -493
  233. package/dist/leetcode/heap.mjs +0 -542
  234. package/dist/leetcode/max-heap.mjs +0 -375
  235. package/dist/leetcode/max-priority-queue.mjs +0 -383
  236. package/dist/leetcode/min-heap.mjs +0 -363
  237. package/dist/leetcode/min-priority-queue.mjs +0 -371
  238. package/dist/leetcode/priority-queue.mjs +0 -363
  239. package/dist/leetcode/queue.mjs +0 -943
  240. package/dist/leetcode/red-black-tree.mjs +0 -2765
  241. package/dist/leetcode/singly-linked-list.mjs +0 -754
  242. package/dist/leetcode/stack.mjs +0 -217
  243. package/dist/leetcode/tree-counter.mjs +0 -3039
  244. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  245. package/dist/leetcode/trie.mjs +0 -413
  246. package/dist/leetcode/undirected-graph.mjs +0 -1650
@@ -93,14 +93,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
93
93
 
94
94
 
95
95
 
96
- * @example
97
- * // Check empty
98
- * console.log(new TreeMap().isEmpty()); // true;
99
- */
100
- isEmpty(): boolean;
101
- /**
102
- * Set or overwrite a value for a key.
103
- * @remarks Expected time O(log n)
104
96
 
105
97
 
106
98
 
@@ -148,35 +140,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
148
140
 
149
141
 
150
142
 
151
- * @example
152
- * // Sorted dictionary for a contact book
153
- * const contacts = new TreeMap<string, string>([
154
- * ['Bob', '555-0102'],
155
- * ['Alice', '555-0101'],
156
- * ['Charlie', '555-0103']
157
- * ]);
158
- *
159
- * // Contacts are automatically sorted by name
160
- * console.log([...contacts.keys()]); // ['Alice', 'Bob', 'Charlie'];
161
- * console.log(contacts.get('Bob')); // '555-0102';
162
- *
163
- * // Find the first contact alphabetically after 'B'
164
- * console.log(contacts.ceiling('B')); // ['Bob', '555-0102'];
165
- *
166
- * // Find contacts in range
167
- * console.log(contacts.rangeSearch(['Alice', 'Bob'])); // [
168
- * // ['Alice', '555-0101'],
169
- * // ['Bob', '555-0102']
170
- * // ];
171
- */
172
- set(key: K, value: V | undefined): this;
173
- /**
174
- * Get the value under a key.
175
- * @remarks Expected time O(log n)
176
-
177
-
178
-
179
-
180
143
 
181
144
 
182
145
 
@@ -222,22 +185,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
222
185
 
223
186
 
224
187
 
225
- * @example
226
- * // Configuration registry with typed lookups
227
- * const config = new TreeMap<string, number>([
228
- * ['maxRetries', 3],
229
- * ['timeout', 5000],
230
- * ['poolSize', 10]
231
- * ]);
232
- *
233
- * console.log(config.get('timeout')); // 5000;
234
- * console.log(config.get('missing')); // undefined;
235
- * console.log(config.size); // 3;
236
- */
237
- get(key: K): V | undefined;
238
- /**
239
- * Test whether a key exists.
240
- * @remarks Expected time O(log n)
241
188
 
242
189
 
243
190
 
@@ -266,6 +213,14 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
266
213
 
267
214
 
268
215
 
216
+ * @example
217
+ * // Check empty
218
+ * console.log(new TreeMap().isEmpty()); // true;
219
+ */
220
+ isEmpty(): boolean;
221
+ /**
222
+ * Set or overwrite a value for a key.
223
+ * @remarks Expected time O(log n)
269
224
 
270
225
 
271
226
 
@@ -287,22 +242,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
287
242
 
288
243
 
289
244
 
290
- * @example
291
- * // Feature flag checking
292
- * const flags = new TreeMap<string, boolean>([
293
- * ['darkMode', true],
294
- * ['betaFeature', false],
295
- * ['notifications', true]
296
- * ]);
297
- *
298
- * console.log(flags.has('darkMode')); // true;
299
- * console.log(flags.has('unknownFlag')); // false;
300
- */
301
- has(key: K): boolean;
302
- /**
303
- * Delete a key.
304
- * @returns `true` if the key existed; otherwise `false`.
305
- * @remarks Expected time O(log n)
306
245
 
307
246
 
308
247
 
@@ -352,22 +291,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
352
291
 
353
292
 
354
293
 
355
- * @example
356
- * // Session management with expiry
357
- * const sessions = new TreeMap<string, number>([
358
- * ['sess_abc', Date.now()],
359
- * ['sess_def', Date.now()],
360
- * ['sess_ghi', Date.now()]
361
- * ]);
362
- *
363
- * console.log(sessions.size); // 3;
364
- * sessions.delete('sess_def');
365
- * console.log(sessions.has('sess_def')); // false;
366
- * console.log(sessions.size); // 2;
367
- */
368
- delete(key: K): boolean;
369
- /**
370
- * Remove all entries.
371
294
 
372
295
 
373
296
 
@@ -406,15 +329,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
406
329
 
407
330
 
408
331
 
409
- * @example
410
- * // Remove all
411
- * const tm = new TreeMap<number, string>([[1, 'a']]);
412
- * tm.clear();
413
- * console.log(tm.isEmpty()); // true;
414
- */
415
- clear(): void;
416
- /**
417
- * Iterate over keys in ascending order.
418
332
 
419
333
 
420
334
 
@@ -453,17 +367,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
453
367
 
454
368
 
455
369
 
456
- * @example
457
- * // Get sorted keys
458
- * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a']]);
459
- * console.log([...tm.keys()]); // [1, 3];
460
- */
461
- keys(): IterableIterator<K>;
462
- private _entryFromKey;
463
- /**
464
- * Iterate over values in ascending key order.
465
- *
466
- * Note: values may be `undefined` (TreeMap allows storing `undefined`, like native `Map`).
467
370
 
468
371
 
469
372
 
@@ -485,6 +388,31 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
485
388
 
486
389
 
487
390
 
391
+ * @example
392
+ * // Sorted dictionary for a contact book
393
+ * const contacts = new TreeMap<string, string>([
394
+ * ['Bob', '555-0102'],
395
+ * ['Alice', '555-0101'],
396
+ * ['Charlie', '555-0103']
397
+ * ]);
398
+ *
399
+ * // Contacts are automatically sorted by name
400
+ * console.log([...contacts.keys()]); // ['Alice', 'Bob', 'Charlie'];
401
+ * console.log(contacts.get('Bob')); // '555-0102';
402
+ *
403
+ * // Find the first contact alphabetically after 'B'
404
+ * console.log(contacts.ceiling('B')); // ['Bob', '555-0102'];
405
+ *
406
+ * // Find contacts in range
407
+ * console.log(contacts.rangeSearch(['Alice', 'Bob'])); // [
408
+ * // ['Alice', '555-0101'],
409
+ * // ['Bob', '555-0102']
410
+ * // ];
411
+ */
412
+ set(key: K, value: V | undefined): this;
413
+ /**
414
+ * Get the value under a key.
415
+ * @remarks Expected time O(log n)
488
416
 
489
417
 
490
418
 
@@ -502,16 +430,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
502
430
 
503
431
 
504
432
 
505
- * @example
506
- * // Get values in key order
507
- * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
508
- * console.log([...tm.values()]); // ['a', 'b'];
509
- */
510
- values(): IterableIterator<V | undefined>;
511
- /**
512
- * Iterate over `[key, value]` entries in ascending key order.
513
- *
514
- * Note: values may be `undefined`.
515
433
 
516
434
 
517
435
 
@@ -550,17 +468,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
550
468
 
551
469
 
552
470
 
553
- * @example
554
- * // Iterate key-value pairs
555
- * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a'], [2, 'b']]);
556
- * console.log([...tm.entries()]); // [[1, 'a'], [2, 'b'], [3, 'c']];
557
- */
558
- entries(): IterableIterator<[K, V | undefined]>;
559
- [Symbol.iterator](): IterableIterator<[K, V | undefined]>;
560
- /**
561
- * Visit each entry in ascending key order.
562
- *
563
- * Note: callback value may be `undefined`.
564
471
 
565
472
 
566
473
 
@@ -599,19 +506,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
599
506
 
600
507
 
601
508
 
602
- * @example
603
- * // Execute for each entry
604
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
605
- * const pairs: string[] = [];
606
- * tm.forEach((v, k) => pairs.push(`${k}:${v}`));
607
- * console.log(pairs); // ['1:a', '2:b'];
608
- */
609
- forEach(cb: (value: V | undefined, key: K, map: TreeMap<K, V>) => void, thisArg?: any): void;
610
- /**
611
- * Create a new TreeMap by mapping each entry to a new `[key, value]` entry.
612
- *
613
- * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
614
- * @remarks Time O(n log n) expected, Space O(n)
615
509
 
616
510
 
617
511
 
@@ -650,18 +544,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
650
544
 
651
545
 
652
546
 
653
- * @example
654
- * // Transform entries
655
- * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
656
- * const doubled = tm.map((v, k) => [k, (v ?? 0) * 2] as [number, number]);
657
- * console.log([...doubled.values()]); // [20, 40];
658
- */
659
- map<MK, MV>(callbackfn: TreeMapEntryCallback<K, V, [MK, MV], TreeMap<K, V>>, options?: Omit<TreeMapOptions<MK, MV>, 'toEntryFn'> & {
660
- comparator?: (a: MK, b: MK) => number;
661
- }, thisArg?: unknown): TreeMap<MK, MV>;
662
- /**
663
- * Create a new TreeMap containing only entries that satisfy the predicate.
664
- * @remarks Time O(n log n) expected, Space O(n)
665
547
 
666
548
 
667
549
 
@@ -701,15 +583,21 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
701
583
 
702
584
 
703
585
  * @example
704
- * // Filter entries
705
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b'], [3, 'c']]);
706
- * const filtered = tm.filter((v, k) => k > 1);
707
- * console.log([...filtered.keys()]); // [2, 3];
586
+ * // Configuration registry with typed lookups
587
+ * const config = new TreeMap<string, number>([
588
+ * ['maxRetries', 3],
589
+ * ['timeout', 5000],
590
+ * ['poolSize', 10]
591
+ * ]);
592
+ *
593
+ * console.log(config.get('timeout')); // 5000;
594
+ * console.log(config.get('missing')); // undefined;
595
+ * console.log(config.size); // 3;
708
596
  */
709
- filter(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): TreeMap<K, V>;
597
+ get(key: K): V | undefined;
710
598
  /**
711
- * Reduce entries into a single accumulator.
712
- * @remarks Time O(n), Space O(1)
599
+ * Test whether a key exists.
600
+ * @remarks Expected time O(log n)
713
601
 
714
602
 
715
603
 
@@ -748,15 +636,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
748
636
 
749
637
 
750
638
 
751
- * @example
752
- * // Aggregate values
753
- * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
754
- * console.log(tm.reduce((acc, v) => acc + (v ?? 0), 0)); // 30;
755
- */
756
- reduce<A>(callbackfn: TreeMapReduceCallback<K, V, A, TreeMap<K, V>>, initialValue: A): A;
757
- /**
758
- * Test whether all entries satisfy a predicate.
759
- * @remarks Time O(n), Space O(1)
760
639
 
761
640
 
762
641
 
@@ -793,15 +672,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
793
672
 
794
673
 
795
674
 
796
- * @example
797
- * // Test all entries
798
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
799
- * console.log(tm.every((v, k) => k > 0)); // true;
800
- */
801
- every(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
802
- /**
803
- * Test whether any entry satisfies a predicate.
804
- * @remarks Time O(n), Space O(1)
805
675
 
806
676
 
807
677
 
@@ -838,16 +708,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
838
708
 
839
709
 
840
710
 
841
- * @example
842
- * // Test any entry
843
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
844
- * console.log(tm.some((v, k) => k === 2)); // true;
845
- */
846
- some(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
847
- /**
848
- * Find the first entry that satisfies a predicate.
849
- * @returns The first matching `[key, value]` tuple, or `undefined`.
850
- * @remarks Time O(n), Space O(1)
851
711
 
852
712
 
853
713
 
@@ -884,15 +744,56 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
884
744
 
885
745
 
886
746
 
887
- * @example
888
- * // Find matching entry
889
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
890
- * console.log(tm.find(v => v === 'b')?.[0]); // 2;
891
- */
892
- find(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): [K, V | undefined] | undefined;
893
- /**
894
- * Materialize the map into an array of `[key, value]` tuples.
895
- * @remarks Time O(n), Space O(n)
747
+
748
+
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+ * @example
771
+ * // Feature flag checking
772
+ * const flags = new TreeMap<string, boolean>([
773
+ * ['darkMode', true],
774
+ * ['betaFeature', false],
775
+ * ['notifications', true]
776
+ * ]);
777
+ *
778
+ * console.log(flags.has('darkMode')); // true;
779
+ * console.log(flags.has('unknownFlag')); // false;
780
+ */
781
+ has(key: K): boolean;
782
+ /**
783
+ * Delete a key.
784
+ * @returns `true` if the key existed; otherwise `false`.
785
+ * @remarks Expected time O(log n)
786
+
787
+
788
+
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
896
797
 
897
798
 
898
799
 
@@ -931,15 +832,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
931
832
 
932
833
 
933
834
 
934
- * @example
935
- * // Convert to array
936
- * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
937
- * console.log(tm.toArray()); // [[1, 'a'], [2, 'b']];
938
- */
939
- toArray(): Array<[K, V | undefined]>;
940
- /**
941
- * Print a human-friendly representation.
942
- * @remarks Time O(n), Space O(n)
943
835
 
944
836
 
945
837
 
@@ -978,14 +870,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
978
870
 
979
871
 
980
872
 
981
- * @example
982
- * // Display tree
983
- * const tm = new TreeMap<number, string>([[1, 'a']]);
984
- * expect(() => tm.print()).not.toThrow();
985
- */
986
- print(): void;
987
- /**
988
- * Smallest entry by key.
989
873
 
990
874
 
991
875
 
@@ -997,36 +881,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
997
881
 
998
882
 
999
883
 
1000
- * @example
1001
- * // Leaderboard with ranked scores
1002
- * // Use score as key (descending), player name as value
1003
- * const leaderboard = new TreeMap<number, string>([], {
1004
- * comparator: (a, b) => b - a // descending
1005
- * });
1006
- *
1007
- * leaderboard.set(1500, 'Alice');
1008
- * leaderboard.set(2200, 'Bob');
1009
- * leaderboard.set(1800, 'Charlie');
1010
- * leaderboard.set(2500, 'Diana');
1011
- *
1012
- * // Top 3 players (first 3 in descending order)
1013
- * const top3 = [...leaderboard.entries()].slice(0, 3);
1014
- * console.log(top3); // [
1015
- * // [2500, 'Diana'],
1016
- * // [2200, 'Bob'],
1017
- * // [1800, 'Charlie']
1018
- * // ];
1019
- *
1020
- * // Highest scorer
1021
- * console.log(leaderboard.first()); // [2500, 'Diana'];
1022
- *
1023
- * // Remove lowest scorer
1024
- * console.log(leaderboard.pollLast()); // [1500, 'Alice'];
1025
- * console.log(leaderboard.size); // 3;
1026
- */
1027
- first(): [K, V | undefined] | undefined;
1028
- /**
1029
- * Largest entry by key.
1030
884
 
1031
885
 
1032
886
 
@@ -1038,20 +892,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1038
892
 
1039
893
 
1040
894
 
1041
- * @example
1042
- * // Access the maximum entry
1043
- * const scores = new TreeMap<number, string>([
1044
- * [85, 'Bob'],
1045
- * [92, 'Alice'],
1046
- * [78, 'Charlie']
1047
- * ]);
1048
- *
1049
- * console.log(scores.last()); // [92, 'Alice'];
1050
- * console.log(scores.first()); // [78, 'Charlie'];
1051
- */
1052
- last(): [K, V | undefined] | undefined;
1053
- /**
1054
- * Remove and return the smallest entry.
1055
895
 
1056
896
 
1057
897
 
@@ -1063,22 +903,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1063
903
 
1064
904
 
1065
905
 
1066
- * @example
1067
- * // Process items from lowest priority
1068
- * const tasks = new TreeMap<number, string>([
1069
- * [3, 'Low'],
1070
- * [1, 'Critical'],
1071
- * [2, 'Medium']
1072
- * ]);
1073
- *
1074
- * // Process lowest priority first
1075
- * console.log(tasks.pollFirst()); // [1, 'Critical'];
1076
- * console.log(tasks.pollFirst()); // [2, 'Medium'];
1077
- * console.log(tasks.size); // 1;
1078
- */
1079
- pollFirst(): [K, V | undefined] | undefined;
1080
- /**
1081
- * Remove and return the largest entry.
1082
906
 
1083
907
 
1084
908
 
@@ -1090,22 +914,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1090
914
 
1091
915
 
1092
916
 
1093
- * @example
1094
- * // Remove the maximum entry
1095
- * const bids = new TreeMap<number, string>([
1096
- * [100, 'Alice'],
1097
- * [150, 'Bob'],
1098
- * [120, 'Charlie']
1099
- * ]);
1100
- *
1101
- * // Remove highest bid
1102
- * console.log(bids.pollLast()); // [150, 'Bob'];
1103
- * console.log(bids.size); // 2;
1104
- * console.log(bids.last()); // [120, 'Charlie'];
1105
- */
1106
- pollLast(): [K, V | undefined] | undefined;
1107
- /**
1108
- * Smallest entry whose key is >= the given key.
1109
917
 
1110
918
 
1111
919
 
@@ -1145,40 +953,27 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1145
953
 
1146
954
 
1147
955
  * @example
1148
- * // Event scheduler with time-based lookup
1149
- * const events = new TreeMap<Date, string>();
1150
- *
1151
- * const meeting = new Date('2024-01-15T10:00:00Z');
1152
- * const lunch = new Date('2024-01-15T12:00:00Z');
1153
- * const review = new Date('2024-01-15T15:00:00Z');
1154
- * const standup = new Date('2024-01-15T09:00:00Z');
1155
- *
1156
- * events.set(meeting, 'Team Meeting');
1157
- * events.set(lunch, 'Lunch Break');
1158
- * events.set(review, 'Code Review');
1159
- * events.set(standup, 'Daily Standup');
1160
- *
1161
- * // Events are sorted chronologically
1162
- * console.log([...events.values()]); // [
1163
- * // 'Daily Standup',
1164
- * // 'Team Meeting',
1165
- * // 'Lunch Break',
1166
- * // 'Code Review'
1167
- * // ];
1168
- *
1169
- * // Next event after 11:00
1170
- * const after11 = new Date('2024-01-15T11:00:00Z');
1171
- * console.log(events.ceiling(after11)?.[1]); // 'Lunch Break';
956
+ * // Session management with expiry
957
+ * const sessions = new TreeMap<string, number>([
958
+ * ['sess_abc', Date.now()],
959
+ * ['sess_def', Date.now()],
960
+ * ['sess_ghi', Date.now()]
961
+ * ]);
1172
962
  *
1173
- * // Events between 9:30 and 13:00
1174
- * const from = new Date('2024-01-15T09:30:00Z');
1175
- * const to = new Date('2024-01-15T13:00:00Z');
1176
- * const window = events.rangeSearch([from, to]);
1177
- * console.log(window.map(([, v]) => v)); // ['Team Meeting', 'Lunch Break'];
963
+ * console.log(sessions.size); // 3;
964
+ * sessions.delete('sess_def');
965
+ * console.log(sessions.has('sess_def')); // false;
966
+ * console.log(sessions.size); // 2;
1178
967
  */
1179
- ceiling(key: K): [K, V | undefined] | undefined;
968
+ delete(key: K): boolean;
1180
969
  /**
1181
- * Largest entry whose key is <= the given key.
970
+ * Remove all entries.
971
+
972
+
973
+
974
+
975
+
976
+
1182
977
 
1183
978
 
1184
979
 
@@ -1217,25 +1012,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1217
1012
 
1218
1013
 
1219
1014
 
1220
- * @example
1221
- * // Find the largest key ≤ target
1222
- * const versions = new TreeMap<number, string>([
1223
- * [1, 'v1.0'],
1224
- * [3, 'v3.0'],
1225
- * [5, 'v5.0'],
1226
- * [7, 'v7.0']
1227
- * ]);
1228
- *
1229
- * // Largest version ≤ 4
1230
- * console.log(versions.floor(4)); // [3, 'v3.0'];
1231
- * // Largest version ≤ 5 (exact match)
1232
- * console.log(versions.floor(5)); // [5, 'v5.0'];
1233
- * // No version ≤ 0
1234
- * console.log(versions.floor(0)); // undefined;
1235
- */
1236
- floor(key: K): [K, V | undefined] | undefined;
1237
- /**
1238
- * Smallest entry whose key is > the given key.
1239
1015
 
1240
1016
 
1241
1017
 
@@ -1274,25 +1050,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1274
1050
 
1275
1051
 
1276
1052
 
1277
- * @example
1278
- * // Find the smallest key strictly > target
1279
- * const prices = new TreeMap<number, string>([
1280
- * [10, 'Basic'],
1281
- * [25, 'Standard'],
1282
- * [50, 'Premium'],
1283
- * [100, 'Enterprise']
1284
- * ]);
1285
- *
1286
- * // Next tier above $25
1287
- * console.log(prices.higher(25)); // [50, 'Premium'];
1288
- * // Next tier above $99
1289
- * console.log(prices.higher(99)); // [100, 'Enterprise'];
1290
- * // Nothing above $100
1291
- * console.log(prices.higher(100)); // undefined;
1292
- */
1293
- higher(key: K): [K, V | undefined] | undefined;
1294
- /**
1295
- * Largest entry whose key is < the given key.
1296
1053
 
1297
1054
 
1298
1055
 
@@ -1331,26 +1088,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1331
1088
 
1332
1089
 
1333
1090
 
1334
- * @example
1335
- * // Find the largest key strictly < target
1336
- * const temps = new TreeMap<number, string>([
1337
- * [0, 'Freezing'],
1338
- * [20, 'Cool'],
1339
- * [30, 'Warm'],
1340
- * [40, 'Hot']
1341
- * ]);
1342
- *
1343
- * // Largest reading below 30
1344
- * console.log(temps.lower(30)); // [20, 'Cool'];
1345
- * // Nothing below 0
1346
- * console.log(temps.lower(0)); // undefined;
1347
- */
1348
- lower(key: K): [K, V | undefined] | undefined;
1349
- /**
1350
- * Return all entries in a given key range.
1351
- *
1352
- * @param range `[low, high]`
1353
- * @param options Inclusive/exclusive bounds (defaults to inclusive).
1354
1091
 
1355
1092
 
1356
1093
 
@@ -1390,28 +1127,3027 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1390
1127
 
1391
1128
 
1392
1129
  * @example
1393
- * // Inventory system with price-sorted products
1394
- * interface Product {
1395
- * name: string;
1396
- * price: number;
1397
- * stock: number;
1398
- * }
1399
- *
1400
- * const inventory = new TreeMap<string, Product, Product>(
1401
- * [
1402
- * { name: 'Widget', price: 9.99, stock: 100 },
1403
- * { name: 'Gadget', price: 24.99, stock: 50 },
1404
- * { name: 'Doohickey', price: 4.99, stock: 200 }
1405
- * ],
1406
- * { toEntryFn: p => [p.name, p] }
1407
- * );
1408
- *
1409
- * // Sorted alphabetically by product name
1410
- * console.log([...inventory.keys()]); // ['Doohickey', 'Gadget', 'Widget'];
1411
- *
1412
- * // Filter high-stock items
1413
- * const highStock = inventory.filter(p => (p?.stock ?? 0) > 75);
1414
- * console.log([...highStock.keys()]); // ['Doohickey', 'Widget'];
1130
+ * // Remove all
1131
+ * const tm = new TreeMap<number, string>([[1, 'a']]);
1132
+ * tm.clear();
1133
+ * console.log(tm.isEmpty()); // true;
1134
+ */
1135
+ clear(): void;
1136
+ /**
1137
+ * Iterate over keys in ascending order.
1138
+
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+
1153
+
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+
1161
+
1162
+
1163
+
1164
+
1165
+
1166
+
1167
+
1168
+
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+
1218
+
1219
+
1220
+
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+
1227
+
1228
+
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+
1269
+
1270
+
1271
+
1272
+
1273
+
1274
+
1275
+
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+
1284
+
1285
+
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1296
+ * @example
1297
+ * // Get sorted keys
1298
+ * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a']]);
1299
+ * console.log([...tm.keys()]); // [1, 3];
1300
+ */
1301
+ keys(): IterableIterator<K>;
1302
+ private _entryFromKey;
1303
+ /**
1304
+ * Iterate over values in ascending key order.
1305
+ *
1306
+ * Note: values may be `undefined` (TreeMap allows storing `undefined`, like native `Map`).
1307
+
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+
1314
+
1315
+
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+
1323
+
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+
1353
+
1354
+
1355
+
1356
+
1357
+
1358
+
1359
+
1360
+
1361
+
1362
+
1363
+
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+
1377
+
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+
1405
+
1406
+
1407
+
1408
+
1409
+
1410
+
1411
+
1412
+
1413
+
1414
+
1415
+
1416
+
1417
+
1418
+
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+
1443
+
1444
+
1445
+
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+ * @example
1466
+ * // Get values in key order
1467
+ * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
1468
+ * console.log([...tm.values()]); // ['a', 'b'];
1469
+ */
1470
+ values(): IterableIterator<V | undefined>;
1471
+ /**
1472
+ * Iterate over `[key, value]` entries in ascending key order.
1473
+ *
1474
+ * Note: values may be `undefined`.
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+
1502
+
1503
+
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+
1520
+
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+
1570
+
1571
+
1572
+
1573
+
1574
+
1575
+
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+ * @example
1634
+ * // Iterate key-value pairs
1635
+ * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a'], [2, 'b']]);
1636
+ * console.log([...tm.entries()]); // [[1, 'a'], [2, 'b'], [3, 'c']];
1637
+ */
1638
+ entries(): IterableIterator<[K, V | undefined]>;
1639
+ [Symbol.iterator](): IterableIterator<[K, V | undefined]>;
1640
+ /**
1641
+ * Visit each entry in ascending key order.
1642
+ *
1643
+ * Note: callback value may be `undefined`.
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+
1650
+
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1716
+
1717
+
1718
+
1719
+
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+
1761
+
1762
+
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+ * @example
1803
+ * // Execute for each entry
1804
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
1805
+ * const pairs: string[] = [];
1806
+ * tm.forEach((v, k) => pairs.push(`${k}:${v}`));
1807
+ * console.log(pairs); // ['1:a', '2:b'];
1808
+ */
1809
+ forEach(cb: (value: V | undefined, key: K, map: TreeMap<K, V>) => void, thisArg?: unknown): void;
1810
+ /**
1811
+ * Create a new TreeMap by mapping each entry to a new `[key, value]` entry.
1812
+ *
1813
+ * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
1814
+ * @remarks Time O(n log n) expected, Space O(n)
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+
1839
+
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+
1860
+
1861
+
1862
+
1863
+
1864
+
1865
+
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+
1893
+
1894
+
1895
+
1896
+
1897
+
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+
1919
+
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+ * @example
1974
+ * // Transform entries
1975
+ * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
1976
+ * const doubled = tm.map((v, k) => [k, (v ?? 0) * 2] as [number, number]);
1977
+ * console.log([...doubled.values()]); // [20, 40];
1978
+ */
1979
+ map<MK, MV>(callbackfn: TreeMapEntryCallback<K, V, [MK, MV], TreeMap<K, V>>, options?: Omit<TreeMapOptions<MK, MV>, 'toEntryFn'> & {
1980
+ comparator?: (a: MK, b: MK) => number;
1981
+ }, thisArg?: unknown): TreeMap<MK, MV>;
1982
+ /**
1983
+ * Create a new TreeMap containing only entries that satisfy the predicate.
1984
+ * @remarks Time O(n log n) expected, Space O(n)
1985
+
1986
+
1987
+
1988
+
1989
+
1990
+
1991
+
1992
+
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+
2041
+
2042
+
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+
2057
+
2058
+
2059
+
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+
2076
+
2077
+
2078
+
2079
+
2080
+
2081
+
2082
+
2083
+
2084
+
2085
+
2086
+
2087
+
2088
+
2089
+
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+
2119
+
2120
+
2121
+
2122
+
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
2143
+ * @example
2144
+ * // Filter entries
2145
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b'], [3, 'c']]);
2146
+ * const filtered = tm.filter((v, k) => k > 1);
2147
+ * console.log([...filtered.keys()]); // [2, 3];
2148
+ */
2149
+ filter(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): TreeMap<K, V>;
2150
+ /**
2151
+ * Reduce entries into a single accumulator.
2152
+ * @remarks Time O(n), Space O(1)
2153
+
2154
+
2155
+
2156
+
2157
+
2158
+
2159
+
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+
2172
+
2173
+
2174
+
2175
+
2176
+
2177
+
2178
+
2179
+
2180
+
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+
2189
+
2190
+
2191
+
2192
+
2193
+
2194
+
2195
+
2196
+
2197
+
2198
+
2199
+
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2208
+
2209
+
2210
+
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+
2218
+
2219
+
2220
+
2221
+
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+
2230
+
2231
+
2232
+
2233
+
2234
+
2235
+
2236
+
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2246
+
2247
+
2248
+
2249
+
2250
+
2251
+
2252
+
2253
+
2254
+
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+
2275
+
2276
+
2277
+
2278
+
2279
+
2280
+
2281
+
2282
+
2283
+
2284
+
2285
+
2286
+
2287
+
2288
+
2289
+
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+
2298
+
2299
+
2300
+
2301
+
2302
+
2303
+
2304
+
2305
+
2306
+
2307
+
2308
+
2309
+
2310
+
2311
+ * @example
2312
+ * // Aggregate values
2313
+ * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
2314
+ * console.log(tm.reduce((acc, v) => acc + (v ?? 0), 0)); // 30;
2315
+ */
2316
+ reduce<A>(callbackfn: TreeMapReduceCallback<K, V, A, TreeMap<K, V>>, initialValue: A): A;
2317
+ /**
2318
+ * Test whether all entries satisfy a predicate.
2319
+ * @remarks Time O(n), Space O(1)
2320
+
2321
+
2322
+
2323
+
2324
+
2325
+
2326
+
2327
+
2328
+
2329
+
2330
+
2331
+
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+
2342
+
2343
+
2344
+
2345
+
2346
+
2347
+
2348
+
2349
+
2350
+
2351
+
2352
+
2353
+
2354
+
2355
+
2356
+
2357
+
2358
+
2359
+
2360
+
2361
+
2362
+
2363
+
2364
+
2365
+
2366
+
2367
+
2368
+
2369
+
2370
+
2371
+
2372
+
2373
+
2374
+
2375
+
2376
+
2377
+
2378
+
2379
+
2380
+
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+
2387
+
2388
+
2389
+
2390
+
2391
+
2392
+
2393
+
2394
+
2395
+
2396
+
2397
+
2398
+
2399
+
2400
+
2401
+
2402
+
2403
+
2404
+
2405
+
2406
+
2407
+
2408
+
2409
+
2410
+
2411
+
2412
+
2413
+
2414
+
2415
+
2416
+
2417
+
2418
+
2419
+
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2432
+
2433
+
2434
+
2435
+
2436
+
2437
+
2438
+
2439
+
2440
+
2441
+
2442
+
2443
+
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+
2450
+
2451
+
2452
+
2453
+
2454
+
2455
+
2456
+
2457
+
2458
+
2459
+
2460
+
2461
+
2462
+
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+
2474
+
2475
+
2476
+ * @example
2477
+ * // Test all entries
2478
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
2479
+ * console.log(tm.every((v, k) => k > 0)); // true;
2480
+ */
2481
+ every(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
2482
+ /**
2483
+ * Test whether any entry satisfies a predicate.
2484
+ * @remarks Time O(n), Space O(1)
2485
+
2486
+
2487
+
2488
+
2489
+
2490
+
2491
+
2492
+
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+
2502
+
2503
+
2504
+
2505
+
2506
+
2507
+
2508
+
2509
+
2510
+
2511
+
2512
+
2513
+
2514
+
2515
+
2516
+
2517
+
2518
+
2519
+
2520
+
2521
+
2522
+
2523
+
2524
+
2525
+
2526
+
2527
+
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+
2538
+
2539
+
2540
+
2541
+
2542
+
2543
+
2544
+
2545
+
2546
+
2547
+
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+
2562
+
2563
+
2564
+
2565
+
2566
+
2567
+
2568
+
2569
+
2570
+
2571
+
2572
+
2573
+
2574
+
2575
+
2576
+
2577
+
2578
+
2579
+
2580
+
2581
+
2582
+
2583
+
2584
+
2585
+
2586
+
2587
+
2588
+
2589
+
2590
+
2591
+
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+
2600
+
2601
+
2602
+
2603
+
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2621
+
2622
+
2623
+
2624
+
2625
+
2626
+
2627
+
2628
+
2629
+
2630
+
2631
+
2632
+
2633
+
2634
+
2635
+
2636
+
2637
+
2638
+
2639
+
2640
+
2641
+ * @example
2642
+ * // Test any entry
2643
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
2644
+ * console.log(tm.some((v, k) => k === 2)); // true;
2645
+ */
2646
+ some(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
2647
+ /**
2648
+ * Find the first entry that satisfies a predicate.
2649
+ * @returns The first matching `[key, value]` tuple, or `undefined`.
2650
+ * @remarks Time O(n), Space O(1)
2651
+
2652
+
2653
+
2654
+
2655
+
2656
+
2657
+
2658
+
2659
+
2660
+
2661
+
2662
+
2663
+
2664
+
2665
+
2666
+
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+
2673
+
2674
+
2675
+
2676
+
2677
+
2678
+
2679
+
2680
+
2681
+
2682
+
2683
+
2684
+
2685
+
2686
+
2687
+
2688
+
2689
+
2690
+
2691
+
2692
+
2693
+
2694
+
2695
+
2696
+
2697
+
2698
+
2699
+
2700
+
2701
+
2702
+
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+
2709
+
2710
+
2711
+
2712
+
2713
+
2714
+
2715
+
2716
+
2717
+
2718
+
2719
+
2720
+
2721
+
2722
+
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+
2734
+
2735
+
2736
+
2737
+
2738
+
2739
+
2740
+
2741
+
2742
+
2743
+
2744
+
2745
+
2746
+
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2757
+
2758
+
2759
+
2760
+
2761
+
2762
+
2763
+
2764
+
2765
+
2766
+
2767
+
2768
+
2769
+
2770
+
2771
+
2772
+
2773
+
2774
+
2775
+
2776
+
2777
+
2778
+
2779
+
2780
+
2781
+
2782
+
2783
+
2784
+
2785
+
2786
+
2787
+
2788
+
2789
+
2790
+
2791
+
2792
+
2793
+
2794
+
2795
+
2796
+
2797
+
2798
+
2799
+
2800
+
2801
+
2802
+
2803
+
2804
+
2805
+
2806
+
2807
+ * @example
2808
+ * // Find matching entry
2809
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
2810
+ * console.log(tm.find(v => v === 'b')?.[0]); // 2;
2811
+ */
2812
+ find(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): [K, V | undefined] | undefined;
2813
+ /**
2814
+ * Materialize the map into an array of `[key, value]` tuples.
2815
+ * @remarks Time O(n), Space O(n)
2816
+
2817
+
2818
+
2819
+
2820
+
2821
+
2822
+
2823
+
2824
+
2825
+
2826
+
2827
+
2828
+
2829
+
2830
+
2831
+
2832
+
2833
+
2834
+
2835
+
2836
+
2837
+
2838
+
2839
+
2840
+
2841
+
2842
+
2843
+
2844
+
2845
+
2846
+
2847
+
2848
+
2849
+
2850
+
2851
+
2852
+
2853
+
2854
+
2855
+
2856
+
2857
+
2858
+
2859
+
2860
+
2861
+
2862
+
2863
+
2864
+
2865
+
2866
+
2867
+
2868
+
2869
+
2870
+
2871
+
2872
+
2873
+
2874
+
2875
+
2876
+
2877
+
2878
+
2879
+
2880
+
2881
+
2882
+
2883
+
2884
+
2885
+
2886
+
2887
+
2888
+
2889
+
2890
+
2891
+
2892
+
2893
+
2894
+
2895
+
2896
+
2897
+
2898
+
2899
+
2900
+
2901
+
2902
+
2903
+
2904
+
2905
+
2906
+
2907
+
2908
+
2909
+
2910
+
2911
+
2912
+
2913
+
2914
+
2915
+
2916
+
2917
+
2918
+
2919
+
2920
+
2921
+
2922
+
2923
+
2924
+
2925
+
2926
+
2927
+
2928
+
2929
+
2930
+
2931
+
2932
+
2933
+
2934
+
2935
+
2936
+
2937
+
2938
+
2939
+
2940
+
2941
+
2942
+
2943
+
2944
+
2945
+
2946
+
2947
+
2948
+
2949
+
2950
+
2951
+
2952
+
2953
+
2954
+
2955
+
2956
+
2957
+
2958
+
2959
+
2960
+
2961
+
2962
+
2963
+
2964
+
2965
+
2966
+
2967
+
2968
+
2969
+
2970
+
2971
+
2972
+
2973
+
2974
+ * @example
2975
+ * // Convert to array
2976
+ * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
2977
+ * console.log(tm.toArray()); // [[1, 'a'], [2, 'b']];
2978
+ */
2979
+ toArray(): Array<[K, V | undefined]>;
2980
+ /**
2981
+ * Print a human-friendly representation.
2982
+ * @remarks Time O(n), Space O(n)
2983
+
2984
+
2985
+
2986
+
2987
+
2988
+
2989
+
2990
+
2991
+
2992
+
2993
+
2994
+
2995
+
2996
+
2997
+
2998
+
2999
+
3000
+
3001
+
3002
+
3003
+
3004
+
3005
+
3006
+
3007
+
3008
+
3009
+
3010
+
3011
+
3012
+
3013
+
3014
+
3015
+
3016
+
3017
+
3018
+
3019
+
3020
+
3021
+
3022
+
3023
+
3024
+
3025
+
3026
+
3027
+
3028
+
3029
+
3030
+
3031
+
3032
+
3033
+
3034
+
3035
+
3036
+
3037
+
3038
+
3039
+
3040
+
3041
+
3042
+
3043
+
3044
+
3045
+
3046
+
3047
+
3048
+
3049
+
3050
+
3051
+
3052
+
3053
+
3054
+
3055
+
3056
+
3057
+
3058
+
3059
+
3060
+
3061
+
3062
+
3063
+
3064
+
3065
+
3066
+
3067
+
3068
+
3069
+
3070
+
3071
+
3072
+
3073
+
3074
+
3075
+
3076
+
3077
+
3078
+
3079
+
3080
+
3081
+
3082
+
3083
+
3084
+
3085
+
3086
+
3087
+
3088
+
3089
+
3090
+
3091
+
3092
+
3093
+
3094
+
3095
+
3096
+
3097
+
3098
+
3099
+
3100
+
3101
+
3102
+
3103
+
3104
+
3105
+
3106
+
3107
+
3108
+
3109
+
3110
+
3111
+
3112
+
3113
+
3114
+
3115
+
3116
+
3117
+
3118
+
3119
+
3120
+
3121
+
3122
+
3123
+
3124
+
3125
+
3126
+
3127
+
3128
+
3129
+
3130
+
3131
+
3132
+
3133
+
3134
+
3135
+
3136
+
3137
+
3138
+
3139
+
3140
+
3141
+ * @example
3142
+ * // Display tree
3143
+ * const tm = new TreeMap<number, string>([[1, 'a']]);
3144
+ * expect(() => tm.print()).not.toThrow();
3145
+ */
3146
+ print(): void;
3147
+ /**
3148
+ * Smallest entry by key.
3149
+
3150
+
3151
+
3152
+
3153
+
3154
+
3155
+
3156
+
3157
+
3158
+
3159
+
3160
+
3161
+
3162
+
3163
+
3164
+
3165
+
3166
+
3167
+
3168
+
3169
+
3170
+
3171
+
3172
+
3173
+
3174
+
3175
+
3176
+
3177
+
3178
+
3179
+
3180
+
3181
+
3182
+
3183
+
3184
+ * @example
3185
+ * // Leaderboard with ranked scores
3186
+ * // Use score as key (descending), player name as value
3187
+ * const leaderboard = new TreeMap<number, string>([], {
3188
+ * comparator: (a, b) => b - a // descending
3189
+ * });
3190
+ *
3191
+ * leaderboard.set(1500, 'Alice');
3192
+ * leaderboard.set(2200, 'Bob');
3193
+ * leaderboard.set(1800, 'Charlie');
3194
+ * leaderboard.set(2500, 'Diana');
3195
+ *
3196
+ * // Top 3 players (first 3 in descending order)
3197
+ * const top3 = [...leaderboard.entries()].slice(0, 3);
3198
+ * console.log(top3); // [
3199
+ * // [2500, 'Diana'],
3200
+ * // [2200, 'Bob'],
3201
+ * // [1800, 'Charlie']
3202
+ * // ];
3203
+ *
3204
+ * // Highest scorer
3205
+ * console.log(leaderboard.first()); // [2500, 'Diana'];
3206
+ *
3207
+ * // Remove lowest scorer
3208
+ * console.log(leaderboard.pollLast()); // [1500, 'Alice'];
3209
+ * console.log(leaderboard.size); // 3;
3210
+ */
3211
+ first(): [K, V | undefined] | undefined;
3212
+ /**
3213
+ * Largest entry by key.
3214
+
3215
+
3216
+
3217
+
3218
+
3219
+
3220
+
3221
+
3222
+
3223
+
3224
+
3225
+
3226
+
3227
+
3228
+
3229
+
3230
+
3231
+
3232
+
3233
+
3234
+
3235
+
3236
+
3237
+
3238
+
3239
+
3240
+
3241
+
3242
+
3243
+
3244
+
3245
+
3246
+
3247
+
3248
+
3249
+ * @example
3250
+ * // Access the maximum entry
3251
+ * const scores = new TreeMap<number, string>([
3252
+ * [85, 'Bob'],
3253
+ * [92, 'Alice'],
3254
+ * [78, 'Charlie']
3255
+ * ]);
3256
+ *
3257
+ * console.log(scores.last()); // [92, 'Alice'];
3258
+ * console.log(scores.first()); // [78, 'Charlie'];
3259
+ */
3260
+ last(): [K, V | undefined] | undefined;
3261
+ /**
3262
+ * Remove and return the smallest entry.
3263
+
3264
+
3265
+
3266
+
3267
+
3268
+
3269
+
3270
+
3271
+
3272
+
3273
+
3274
+
3275
+
3276
+
3277
+
3278
+
3279
+
3280
+
3281
+
3282
+
3283
+
3284
+
3285
+
3286
+
3287
+
3288
+
3289
+
3290
+
3291
+
3292
+
3293
+
3294
+
3295
+
3296
+
3297
+
3298
+ * @example
3299
+ * // Process items from lowest priority
3300
+ * const tasks = new TreeMap<number, string>([
3301
+ * [3, 'Low'],
3302
+ * [1, 'Critical'],
3303
+ * [2, 'Medium']
3304
+ * ]);
3305
+ *
3306
+ * // Process lowest priority first
3307
+ * console.log(tasks.pollFirst()); // [1, 'Critical'];
3308
+ * console.log(tasks.pollFirst()); // [2, 'Medium'];
3309
+ * console.log(tasks.size); // 1;
3310
+ */
3311
+ pollFirst(): [K, V | undefined] | undefined;
3312
+ /**
3313
+ * Remove and return the largest entry.
3314
+
3315
+
3316
+
3317
+
3318
+
3319
+
3320
+
3321
+
3322
+
3323
+
3324
+
3325
+
3326
+
3327
+
3328
+
3329
+
3330
+
3331
+
3332
+
3333
+
3334
+
3335
+
3336
+
3337
+
3338
+
3339
+
3340
+
3341
+
3342
+
3343
+
3344
+
3345
+
3346
+
3347
+
3348
+
3349
+ * @example
3350
+ * // Remove the maximum entry
3351
+ * const bids = new TreeMap<number, string>([
3352
+ * [100, 'Alice'],
3353
+ * [150, 'Bob'],
3354
+ * [120, 'Charlie']
3355
+ * ]);
3356
+ *
3357
+ * // Remove highest bid
3358
+ * console.log(bids.pollLast()); // [150, 'Bob'];
3359
+ * console.log(bids.size); // 2;
3360
+ * console.log(bids.last()); // [120, 'Charlie'];
3361
+ */
3362
+ pollLast(): [K, V | undefined] | undefined;
3363
+ /**
3364
+ * Smallest entry whose key is >= the given key.
3365
+
3366
+
3367
+
3368
+
3369
+
3370
+
3371
+
3372
+
3373
+
3374
+
3375
+
3376
+
3377
+
3378
+
3379
+
3380
+
3381
+
3382
+
3383
+
3384
+
3385
+
3386
+
3387
+
3388
+
3389
+
3390
+
3391
+
3392
+
3393
+
3394
+
3395
+
3396
+
3397
+
3398
+
3399
+
3400
+
3401
+
3402
+
3403
+
3404
+
3405
+
3406
+
3407
+
3408
+
3409
+
3410
+
3411
+
3412
+
3413
+
3414
+
3415
+
3416
+
3417
+
3418
+
3419
+
3420
+
3421
+
3422
+
3423
+
3424
+
3425
+
3426
+
3427
+
3428
+
3429
+
3430
+
3431
+
3432
+
3433
+
3434
+
3435
+
3436
+
3437
+
3438
+
3439
+
3440
+
3441
+
3442
+
3443
+
3444
+
3445
+
3446
+
3447
+
3448
+
3449
+
3450
+
3451
+
3452
+
3453
+
3454
+
3455
+
3456
+
3457
+
3458
+
3459
+
3460
+
3461
+
3462
+
3463
+
3464
+
3465
+
3466
+
3467
+
3468
+
3469
+
3470
+
3471
+
3472
+
3473
+
3474
+
3475
+
3476
+
3477
+
3478
+
3479
+
3480
+
3481
+
3482
+
3483
+
3484
+
3485
+
3486
+
3487
+
3488
+
3489
+
3490
+
3491
+
3492
+
3493
+
3494
+
3495
+
3496
+
3497
+
3498
+
3499
+ * @example
3500
+ * // Event scheduler with time-based lookup
3501
+ * const events = new TreeMap<Date, string>();
3502
+ *
3503
+ * const meeting = new Date('2024-01-15T10:00:00Z');
3504
+ * const lunch = new Date('2024-01-15T12:00:00Z');
3505
+ * const review = new Date('2024-01-15T15:00:00Z');
3506
+ * const standup = new Date('2024-01-15T09:00:00Z');
3507
+ *
3508
+ * events.set(meeting, 'Team Meeting');
3509
+ * events.set(lunch, 'Lunch Break');
3510
+ * events.set(review, 'Code Review');
3511
+ * events.set(standup, 'Daily Standup');
3512
+ *
3513
+ * // Events are sorted chronologically
3514
+ * console.log([...events.values()]); // [
3515
+ * // 'Daily Standup',
3516
+ * // 'Team Meeting',
3517
+ * // 'Lunch Break',
3518
+ * // 'Code Review'
3519
+ * // ];
3520
+ *
3521
+ * // Next event after 11:00
3522
+ * const after11 = new Date('2024-01-15T11:00:00Z');
3523
+ * console.log(events.ceiling(after11)?.[1]); // 'Lunch Break';
3524
+ *
3525
+ * // Events between 9:30 and 13:00
3526
+ * const from = new Date('2024-01-15T09:30:00Z');
3527
+ * const to = new Date('2024-01-15T13:00:00Z');
3528
+ * const window = events.rangeSearch([from, to]);
3529
+ * console.log(window.map(([, v]) => v)); // ['Team Meeting', 'Lunch Break'];
3530
+ */
3531
+ ceiling(key: K): [K, V | undefined] | undefined;
3532
+ /**
3533
+ * Largest entry whose key is <= the given key.
3534
+
3535
+
3536
+
3537
+
3538
+
3539
+
3540
+
3541
+
3542
+
3543
+
3544
+
3545
+
3546
+
3547
+
3548
+
3549
+
3550
+
3551
+
3552
+
3553
+
3554
+
3555
+
3556
+
3557
+
3558
+
3559
+
3560
+
3561
+
3562
+
3563
+
3564
+
3565
+
3566
+
3567
+
3568
+
3569
+
3570
+
3571
+
3572
+
3573
+
3574
+
3575
+
3576
+
3577
+
3578
+
3579
+
3580
+
3581
+
3582
+
3583
+
3584
+
3585
+
3586
+
3587
+
3588
+
3589
+
3590
+
3591
+
3592
+
3593
+
3594
+
3595
+
3596
+
3597
+
3598
+
3599
+
3600
+
3601
+
3602
+
3603
+
3604
+
3605
+
3606
+
3607
+
3608
+
3609
+
3610
+
3611
+
3612
+
3613
+
3614
+
3615
+
3616
+
3617
+
3618
+
3619
+
3620
+
3621
+
3622
+
3623
+
3624
+
3625
+
3626
+
3627
+
3628
+
3629
+
3630
+
3631
+
3632
+
3633
+
3634
+
3635
+
3636
+
3637
+
3638
+
3639
+
3640
+
3641
+
3642
+
3643
+
3644
+
3645
+
3646
+
3647
+
3648
+
3649
+
3650
+
3651
+
3652
+
3653
+
3654
+
3655
+
3656
+
3657
+
3658
+
3659
+
3660
+
3661
+
3662
+
3663
+
3664
+
3665
+
3666
+
3667
+
3668
+ * @example
3669
+ * // Find the largest key ≤ target
3670
+ * const versions = new TreeMap<number, string>([
3671
+ * [1, 'v1.0'],
3672
+ * [3, 'v3.0'],
3673
+ * [5, 'v5.0'],
3674
+ * [7, 'v7.0']
3675
+ * ]);
3676
+ *
3677
+ * // Largest version ≤ 4
3678
+ * console.log(versions.floor(4)); // [3, 'v3.0'];
3679
+ * // Largest version ≤ 5 (exact match)
3680
+ * console.log(versions.floor(5)); // [5, 'v5.0'];
3681
+ * // No version ≤ 0
3682
+ * console.log(versions.floor(0)); // undefined;
3683
+ */
3684
+ floor(key: K): [K, V | undefined] | undefined;
3685
+ /**
3686
+ * Smallest entry whose key is > the given key.
3687
+
3688
+
3689
+
3690
+
3691
+
3692
+
3693
+
3694
+
3695
+
3696
+
3697
+
3698
+
3699
+
3700
+
3701
+
3702
+
3703
+
3704
+
3705
+
3706
+
3707
+
3708
+
3709
+
3710
+
3711
+
3712
+
3713
+
3714
+
3715
+
3716
+
3717
+
3718
+
3719
+
3720
+
3721
+
3722
+
3723
+
3724
+
3725
+
3726
+
3727
+
3728
+
3729
+
3730
+
3731
+
3732
+
3733
+
3734
+
3735
+
3736
+
3737
+
3738
+
3739
+
3740
+
3741
+
3742
+
3743
+
3744
+
3745
+
3746
+
3747
+
3748
+
3749
+
3750
+
3751
+
3752
+
3753
+
3754
+
3755
+
3756
+
3757
+
3758
+
3759
+
3760
+
3761
+
3762
+
3763
+
3764
+
3765
+
3766
+
3767
+
3768
+
3769
+
3770
+
3771
+
3772
+
3773
+
3774
+
3775
+
3776
+
3777
+
3778
+
3779
+
3780
+
3781
+
3782
+
3783
+
3784
+
3785
+
3786
+
3787
+
3788
+
3789
+
3790
+
3791
+
3792
+
3793
+
3794
+
3795
+
3796
+
3797
+
3798
+
3799
+
3800
+
3801
+
3802
+
3803
+
3804
+
3805
+
3806
+
3807
+
3808
+
3809
+
3810
+
3811
+
3812
+
3813
+
3814
+
3815
+
3816
+
3817
+
3818
+
3819
+
3820
+
3821
+ * @example
3822
+ * // Find the smallest key strictly > target
3823
+ * const prices = new TreeMap<number, string>([
3824
+ * [10, 'Basic'],
3825
+ * [25, 'Standard'],
3826
+ * [50, 'Premium'],
3827
+ * [100, 'Enterprise']
3828
+ * ]);
3829
+ *
3830
+ * // Next tier above $25
3831
+ * console.log(prices.higher(25)); // [50, 'Premium'];
3832
+ * // Next tier above $99
3833
+ * console.log(prices.higher(99)); // [100, 'Enterprise'];
3834
+ * // Nothing above $100
3835
+ * console.log(prices.higher(100)); // undefined;
3836
+ */
3837
+ higher(key: K): [K, V | undefined] | undefined;
3838
+ /**
3839
+ * Largest entry whose key is < the given key.
3840
+
3841
+
3842
+
3843
+
3844
+
3845
+
3846
+
3847
+
3848
+
3849
+
3850
+
3851
+
3852
+
3853
+
3854
+
3855
+
3856
+
3857
+
3858
+
3859
+
3860
+
3861
+
3862
+
3863
+
3864
+
3865
+
3866
+
3867
+
3868
+
3869
+
3870
+
3871
+
3872
+
3873
+
3874
+
3875
+
3876
+
3877
+
3878
+
3879
+
3880
+
3881
+
3882
+
3883
+
3884
+
3885
+
3886
+
3887
+
3888
+
3889
+
3890
+
3891
+
3892
+
3893
+
3894
+
3895
+
3896
+
3897
+
3898
+
3899
+
3900
+
3901
+
3902
+
3903
+
3904
+
3905
+
3906
+
3907
+
3908
+
3909
+
3910
+
3911
+
3912
+
3913
+
3914
+
3915
+
3916
+
3917
+
3918
+
3919
+
3920
+
3921
+
3922
+
3923
+
3924
+
3925
+
3926
+
3927
+
3928
+
3929
+
3930
+
3931
+
3932
+
3933
+
3934
+
3935
+
3936
+
3937
+
3938
+
3939
+
3940
+
3941
+
3942
+
3943
+
3944
+
3945
+
3946
+
3947
+
3948
+
3949
+
3950
+
3951
+
3952
+
3953
+
3954
+
3955
+
3956
+
3957
+
3958
+
3959
+
3960
+
3961
+
3962
+
3963
+
3964
+
3965
+
3966
+
3967
+
3968
+
3969
+
3970
+
3971
+
3972
+
3973
+
3974
+ * @example
3975
+ * // Find the largest key strictly < target
3976
+ * const temps = new TreeMap<number, string>([
3977
+ * [0, 'Freezing'],
3978
+ * [20, 'Cool'],
3979
+ * [30, 'Warm'],
3980
+ * [40, 'Hot']
3981
+ * ]);
3982
+ *
3983
+ * // Largest reading below 30
3984
+ * console.log(temps.lower(30)); // [20, 'Cool'];
3985
+ * // Nothing below 0
3986
+ * console.log(temps.lower(0)); // undefined;
3987
+ */
3988
+ lower(key: K): [K, V | undefined] | undefined;
3989
+ /**
3990
+ * Return all entries in a given key range.
3991
+ *
3992
+ * @param range `[low, high]`
3993
+ * @param options Inclusive/exclusive bounds (defaults to inclusive).
3994
+
3995
+
3996
+
3997
+
3998
+
3999
+
4000
+
4001
+
4002
+
4003
+
4004
+
4005
+
4006
+
4007
+
4008
+
4009
+
4010
+
4011
+
4012
+
4013
+
4014
+
4015
+
4016
+
4017
+
4018
+
4019
+
4020
+
4021
+
4022
+
4023
+
4024
+
4025
+
4026
+
4027
+
4028
+
4029
+
4030
+
4031
+
4032
+
4033
+
4034
+
4035
+
4036
+
4037
+
4038
+
4039
+
4040
+
4041
+
4042
+
4043
+
4044
+
4045
+
4046
+
4047
+
4048
+
4049
+
4050
+
4051
+
4052
+
4053
+
4054
+
4055
+
4056
+
4057
+
4058
+
4059
+
4060
+
4061
+
4062
+
4063
+
4064
+
4065
+
4066
+
4067
+
4068
+
4069
+
4070
+
4071
+
4072
+
4073
+
4074
+
4075
+
4076
+
4077
+
4078
+
4079
+
4080
+
4081
+
4082
+
4083
+
4084
+
4085
+
4086
+
4087
+
4088
+
4089
+
4090
+
4091
+
4092
+
4093
+
4094
+
4095
+
4096
+
4097
+
4098
+
4099
+
4100
+
4101
+
4102
+
4103
+
4104
+
4105
+
4106
+
4107
+
4108
+
4109
+
4110
+
4111
+
4112
+
4113
+
4114
+
4115
+
4116
+
4117
+
4118
+
4119
+
4120
+
4121
+
4122
+
4123
+
4124
+
4125
+
4126
+
4127
+
4128
+ * @example
4129
+ * // Inventory system with price-sorted products
4130
+ * interface Product {
4131
+ * name: string;
4132
+ * price: number;
4133
+ * stock: number;
4134
+ * }
4135
+ *
4136
+ * const inventory = new TreeMap<string, Product, Product>(
4137
+ * [
4138
+ * { name: 'Widget', price: 9.99, stock: 100 },
4139
+ * { name: 'Gadget', price: 24.99, stock: 50 },
4140
+ * { name: 'Doohickey', price: 4.99, stock: 200 }
4141
+ * ],
4142
+ * { toEntryFn: p => [p.name, p] }
4143
+ * );
4144
+ *
4145
+ * // Sorted alphabetically by product name
4146
+ * console.log([...inventory.keys()]); // ['Doohickey', 'Gadget', 'Widget'];
4147
+ *
4148
+ * // Filter high-stock items
4149
+ * const highStock = inventory.filter(p => (p?.stock ?? 0) > 75);
4150
+ * console.log([...highStock.keys()]); // ['Doohickey', 'Widget'];
1415
4151
  *
1416
4152
  * // Calculate total inventory value
1417
4153
  * const totalValue = inventory.reduce(
@@ -1421,6 +4157,58 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1421
4157
  * console.log(totalValue); // toBeCloseTo;
1422
4158
  */
1423
4159
  rangeSearch(range: [K, K], options?: TreeMapRangeOptions): Array<[K, V | undefined]>;
4160
+ /**
4161
+ * Returns the entry at the k-th position in tree order (0-indexed).
4162
+ * @remarks Time O(log n). Requires `enableOrderStatistic: true`.
4163
+
4164
+
4165
+
4166
+ * @example
4167
+ * // Find k-th entry in a TreeMap
4168
+ * const map = new TreeMap<string, number>(
4169
+ * [['alice', 95], ['bob', 87], ['charlie', 92]],
4170
+ * { enableOrderStatistic: true }
4171
+ * );
4172
+ * console.log(map.getByRank(0)); // 'alice';
4173
+ * console.log(map.getByRank(1)); // 'bob';
4174
+ * console.log(map.getByRank(2)); // 'charlie';
4175
+ */
4176
+ getByRank(k: number): [K, V | undefined] | undefined;
4177
+ /**
4178
+ * Returns the 0-based rank of a key (number of elements that precede it in tree order).
4179
+ * @remarks Time O(log n). Requires `enableOrderStatistic: true`.
4180
+ * @example
4181
+ * // Get the rank of a key in sorted order
4182
+ * const tree = new TreeMap<number>(
4183
+ * [10, 20, 30, 40, 50],
4184
+ * { enableOrderStatistic: true }
4185
+ * );
4186
+ * console.log(tree.getRank(10)); // 0; // smallest → rank 0
4187
+ * console.log(tree.getRank(30)); // 2; // 2 elements before 30 in tree order
4188
+ * console.log(tree.getRank(50)); // 4; // largest → rank 4
4189
+ * console.log(tree.getRank(25)); // 2;
4190
+ */
4191
+ getRank(key: K): number;
4192
+ /**
4193
+ * Returns keys by rank range (0-indexed, inclusive on both ends).
4194
+ * @remarks Time O(log n + k). Requires `enableOrderStatistic: true`.
4195
+
4196
+ * @example
4197
+ * // Pagination with rangeByRank
4198
+ * const tree = new TreeMap<number>(
4199
+ * [10, 20, 30, 40, 50, 60, 70, 80, 90],
4200
+ * { enableOrderStatistic: true }
4201
+ * );
4202
+ * const pageSize = 3;
4203
+ *
4204
+ * // Page 1
4205
+ * console.log(tree.rangeByRank(0, pageSize - 1)); // [10, 20, 30];
4206
+ * // Page 2
4207
+ * console.log(tree.rangeByRank(pageSize, 2 * pageSize - 1)); // [40, 50, 60];
4208
+ * // Page 3
4209
+ * console.log(tree.rangeByRank(2 * pageSize, 3 * pageSize - 1)); // [70, 80, 90];
4210
+ */
4211
+ rangeByRank(start: number, end: number): Array<[K, V | undefined]>;
1424
4212
  /**
1425
4213
  * Creates a shallow clone of this map.
1426
4214
  * @remarks Time O(n log n), Space O(n)
@@ -1442,6 +4230,126 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1442
4230
 
1443
4231
 
1444
4232
 
4233
+
4234
+
4235
+
4236
+
4237
+
4238
+
4239
+
4240
+
4241
+
4242
+
4243
+
4244
+
4245
+
4246
+
4247
+
4248
+
4249
+
4250
+
4251
+
4252
+
4253
+
4254
+
4255
+
4256
+
4257
+
4258
+
4259
+
4260
+
4261
+
4262
+
4263
+
4264
+
4265
+
4266
+
4267
+
4268
+
4269
+
4270
+
4271
+
4272
+
4273
+
4274
+
4275
+
4276
+
4277
+
4278
+
4279
+
4280
+
4281
+
4282
+
4283
+
4284
+
4285
+
4286
+
4287
+
4288
+
4289
+
4290
+
4291
+
4292
+
4293
+
4294
+
4295
+
4296
+
4297
+
4298
+
4299
+
4300
+
4301
+
4302
+
4303
+
4304
+
4305
+
4306
+
4307
+
4308
+
4309
+
4310
+
4311
+
4312
+
4313
+
4314
+
4315
+
4316
+
4317
+
4318
+
4319
+
4320
+
4321
+
4322
+
4323
+
4324
+
4325
+
4326
+
4327
+
4328
+
4329
+
4330
+
4331
+
4332
+
4333
+
4334
+
4335
+
4336
+
4337
+
4338
+
4339
+
4340
+
4341
+
4342
+
4343
+
4344
+
4345
+
4346
+
4347
+
4348
+
4349
+
4350
+
4351
+
4352
+
1445
4353
 
1446
4354
 
1447
4355