data-structure-typed 1.46.5 → 1.46.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/README.md +18 -18
- package/benchmark/report.html +46 -1
- package/benchmark/report.json +428 -5
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +2 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +29 -46
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +10 -5
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/types/{helpers.js → common.js} +1 -1
- package/dist/cjs/types/common.js.map +1 -0
- package/dist/cjs/types/index.d.ts +1 -1
- package/dist/cjs/types/index.js +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +2 -1
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +29 -46
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +10 -5
- package/dist/mjs/types/index.d.ts +1 -1
- package/dist/mjs/types/index.js +1 -1
- package/dist/umd/data-structure-typed.js +32 -50
- package/dist/umd/data-structure-typed.min.js +10 -5
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +70 -47
- package/src/data-structures/binary-tree/binary-tree.ts +33 -46
- package/src/data-structures/binary-tree/rb-tree.ts +9 -4
- package/src/types/index.ts +1 -1
- package/test/integration/index.html +32 -23
- package/test/performance/data-structures/{comparison.test.ts → comparison/comparison.test.ts} +34 -28
- package/test/performance/data-structures/hash/hash-map.test.ts +3 -3
- package/test/unit/data-structures/binary-tree/rb-tree.test.ts +17 -0
- package/tsup.config.js +1 -1
- package/dist/cjs/types/helpers.js.map +0 -1
- /package/dist/cjs/types/{helpers.d.ts → common.d.ts} +0 -0
- /package/dist/mjs/types/{helpers.d.ts → common.d.ts} +0 -0
- /package/dist/mjs/types/{helpers.js → common.js} +0 -0
- /package/src/types/{helpers.ts → common.ts} +0 -0
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
"use strict";function t(t,e){if(e==null||e>t.length)e=t.length;for(var r=0,i=new Array(e);r<e;r++)i[r]=t[r];return i}function e(t){if(Array.isArray(t))return t}function r(e){if(Array.isArray(e))return t(e)}function i(t){if(t===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return t}function n(t,e,r,i,n,u,a){try{var s=t[u](a);var o=s.value}catch(t){r(t);return}if(s.done){e(o)}else{Promise.resolve(o).then(i,n)}}function u(t){return function(){var e=this,r=arguments;return new Promise(function(i,u){var a=t.apply(e,r);function s(t){n(a,i,u,s,o,"next",t)}function o(t){n(a,i,u,s,o,"throw",t)}s(undefined)})}}function a(t,e){if(!(t instanceof e)){throw new TypeError("Cannot call a class as a function")}}function s(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||false;i.configurable=true;if("value"in i)i.writable=true;Object.defineProperty(t,i.key,i)}}function o(t,e,r){if(e)s(t.prototype,e);if(r)s(t,r);return t}function h(t,e,r){if(typeof Reflect!=="undefined"&&Reflect.get){h=Reflect.get}else{h=function t(t,e,r){var i=b(t,e);if(!i)return;var n=Object.getOwnPropertyDescriptor(i,e);if(n.get){return n.get.call(r||t)}return n.value}}return h(t,e,r||t)}function l(t){l=Object.setPrototypeOf?Object.getPrototypeOf:function t(t){return t.__proto__||Object.getPrototypeOf(t)};return l(t)}function f(t,e){if(typeof e!=="function"&&e!==null){throw new TypeError("Super expression must either be null or a function")}t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:true,configurable:true}});if(e)p(t,e)}function c(t,e){if(e!=null&&typeof Symbol!=="undefined"&&e[Symbol.hasInstance]){return!!e[Symbol.hasInstance](t)}else{return t instanceof e}}function v(t){if(typeof Symbol!=="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function d(t,e){var r=t==null?null:typeof Symbol!=="undefined"&&t[Symbol.iterator]||t["@@iterator"];if(r==null)return;var i=[];var n=true;var u=false;var a,s;try{for(r=r.call(t);!(n=(a=r.next()).done);n=true){i.push(a.value);if(e&&i.length===e)break}}catch(t){u=true;s=t}finally{try{if(!n&&r["return"]!=null)r["return"]()}finally{if(u)throw s}}return i}function y(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(t,e){if(e&&(x(e)==="object"||typeof e==="function")){return e}return i(t)}function p(t,e){p=Object.setPrototypeOf||function t(t,e){t.__proto__=e;return t};return p(t,e)}function k(t,r){return e(t)||d(t,r)||w(t,r)||y()}function b(t,e){while(!Object.prototype.hasOwnProperty.call(t,e)){t=l(t);if(t===null)break}return t}function m(t){return r(t)||v(t)||w(t)||g()}function x(t){"@swc/helpers - typeof";return t&&typeof Symbol!=="undefined"&&t.constructor===Symbol?"symbol":typeof t}function w(e,r){if(!e)return;if(typeof e==="string")return t(e,r);var i=Object.prototype.toString.call(e).slice(8,-1);if(i==="Object"&&e.constructor)i=e.constructor.name;if(i==="Map"||i==="Set")return Array.from(i);if(i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return t(e,r)}function E(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(t){return false}}function N(t){var e=E();return function r(){var r=l(t),i;if(e){var n=l(this).constructor;i=Reflect.construct(r,arguments,n)}else{i=r.apply(this,arguments)}return _(this,i)}}function S(t,e){var r,i,n,u,a={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]};return u={next:s(0),"throw":s(1),"return":s(2)},typeof Symbol==="function"&&(u[Symbol.iterator]=function(){return this}),u;function s(t){return function(e){return o([t,e])}}function o(u){if(r)throw new TypeError("Generator is already executing.");while(a)try{if(r=1,i&&(n=u[0]&2?i["return"]:u[0]?i["throw"]||((n=i["return"])&&n.call(i),0):i.next)&&!(n=n.call(i,u[1])).done)return n;if(i=0,n)u=[u[0]&2,n.value];switch(u[0]){case 0:case 1:n=u;break;case 4:a.label++;return{value:u[1],done:false};case 5:a.label++;i=u[1];u=[0];continue;case 7:u=a.ops.pop();a.trys.pop();continue;default:if(!(n=a.trys,n=n.length>0&&n[n.length-1])&&(u[0]===6||u[0]===2)){a=0;continue}if(u[0]===3&&(!n||u[1]>n[0]&&u[1]<n[3])){a.label=u[1];break}if(u[0]===6&&a.label<n[1]){a.label=n[1];n=u;break}if(n&&a.label<n[2]){a.label=n[2];a.ops.push(u);break}if(n[2])a.ops.pop();a.trys.pop();continue}u=e.call(t,a)}catch(t){u=[6,t];i=0}finally{r=n=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:true}}}function z(t){var e=typeof Symbol==="function"&&Symbol.iterator,r=e&&t[e],i=0;if(r)return r.call(t);if(t&&typeof t.length==="number")return{next:function(){if(t&&i>=t.length)t=void 0;return{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}var dataStructureTyped=function(){var t=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var s=function(e,r,i){return r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[r]=i};var v=function(e,r){for(var i in r)t(e,i,{get:r[i],enumerable:!0})},d=function(i,u,a,s){var o=true,h=false,l=undefined;if(u&&typeof u=="object"||typeof u=="function")try{var f=function(){var r=v.value;!n.call(i,r)&&r!==a&&t(i,r,{get:function(){return u[r]},enumerable:!(s=e(u,r))||s.enumerable})};for(var c=r(u)[Symbol.iterator](),v;!(o=(v=c.next()).done);o=true)f()}catch(t){h=true;l=t}finally{try{if(!o&&c.return!=null){c.return()}}finally{if(h){throw l}}}return i};var y=function(e){return d(t({},"__esModule",{value:!0}),e)};var g=function(t,e,r){return s(t,(typeof e==="undefined"?"undefined":x(e))!="symbol"?e+"":e,r),r};var _={};v(_,{AVLTree:function(){return tI},AVLTreeNode:function(){return tR},AbstractEdge:function(){return ta},AbstractGraph:function(){return ts},AbstractVertex:function(){return tu},BST:function(){return tN},BSTNode:function(){return tE},BinaryIndexedTree:function(){return tS},BinaryTree:function(){return tw},BinaryTreeNode:function(){return tx},CP:function(){return tb},Character:function(){return tP},Deque:function(){return Y},DirectedEdge:function(){return th},DirectedGraph:function(){return tl},DirectedVertex:function(){return to},DoublyLinkedList:function(){return K},DoublyLinkedListNode:function(){return j},FamilyPosition:function(){return tp},FibonacciHeap:function(){return $},FibonacciHeapNode:function(){return Z},HashMap:function(){return P},HashTable:function(){return w},HashTableNode:function(){return p},Heap:function(){return J},IterateDirection:function(){return tm},IterationType:function(){return t_},LinkedListQueue:function(){return W},MapEdge:function(){return ty},MapGraph:function(){return tg},MapVertex:function(){return td},Matrix2D:function(){return tB},MatrixNTI2D:function(){return tC},MaxHeap:function(){return tt},MaxPriorityQueue:function(){return tn},MinHeap:function(){return te},MinPriorityQueue:function(){return ti},Navigator:function(){return tD},ObjectDeque:function(){return X},PriorityQueue:function(){return tr},Queue:function(){return Q},RBTNColor:function(){return tk},RedBlackTree:function(){return tO},RedBlackTreeNode:function(){return tT},SegmentTree:function(){return tM},SegmentTreeNode:function(){return tz},SinglyLinkedList:function(){return H},SinglyLinkedListNode:function(){return D},SkipList:function(){return U},SkipListNode:function(){return q},Stack:function(){return G},THUNK_SYMBOL:function(){return R},TreeMultimap:function(){return tL},TreeMultimapNode:function(){return tA},TreeNode:function(){return tV},Trie:function(){return tj},TrieNode:function(){return tH},UndirectedEdge:function(){return tc},UndirectedGraph:function(){return tv},UndirectedVertex:function(){return tf},Vector2D:function(){return tF},arrayRemove:function(){return M},calcMinUnitsRequired:function(){return B},getMSB:function(){return L},isThunk:function(){return I},isWeakKey:function(){return F},rangeCheck:function(){return V},throwRangeError:function(){return C},toThunk:function(){return T},trampoline:function(){return O},trampolineAsync:function(){return A},uuidV4:function(){return E}});var p=function t(e,r){a(this,t);g(this,"key");g(this,"value");g(this,"next");this.key=e,this.value=r,this.next=null},b=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:t.DEFAULT_CAPACITY,r=arguments.length>1?arguments[1]:void 0;a(this,t);g(this,"_capacity");g(this,"_size");g(this,"_buckets");g(this,"_hashFn");this._hashFn=r||this._defaultHashFn,this._capacity=Math.max(e,t.DEFAULT_CAPACITY),this._size=0,this._buckets=new Array(this._capacity).fill(null)}o(t,[{key:"capacity",get:function t(){return this._capacity}},{key:"size",get:function t(){return this._size}},{key:"buckets",get:function t(){return this._buckets}},{key:"hashFn",get:function t(){return this._hashFn}},{key:"set",value:function e(e,r){var i=this._hash(e),n=new p(e,r);if(!this._buckets[i])this._buckets[i]=n;else{var u=this._buckets[i];for(;u;){if(u.key===e){u.value=r;return}if(!u.next)break;u=u.next}u.next=n}this._size++,this._size/this._capacity>=t.LOAD_FACTOR&&this._expand()}},{key:"get",value:function t(t){var e=this._hash(t),r=this._buckets[e];for(;r;){if(r.key===t)return r.value;r=r.next}}},{key:"delete",value:function t(t){var e=this._hash(t),r=this._buckets[e],i=null;for(;r;){if(r.key===t){i?i.next=r.next:this._buckets[e]=r.next,this._size--,r.next=null;return}i=r,r=r.next}}},{key:"_defaultHashFn",value:function t(t){return(typeof t=="string"?this._murmurStringHashFn(t):this._objectHash(t))%this._capacity}},{key:"_multiplicativeStringHashFn",value:function t(t){var e=String(t),r=0;for(var i=0;i<e.length;i++){var n=e.charCodeAt(i),u=.618033988749895,a=1<<30;r=(r*u+n)%a}return Math.abs(r)}},{key:"_murmurStringHashFn",value:function t(t){var e=String(t),r=0;for(var i=0;i<e.length;i++){var n=e.charCodeAt(i);r=(r^n)*1540483477,r=(r^r>>>15)*668265261,r=r^r>>>15}return Math.abs(r)}},{key:"_hash",value:function t(t){return this.hashFn(t)}},{key:"_stringHash",value:function t(t){var e=0;for(var r=0;r<t.length;r++)e=e*31+t.charCodeAt(r)&4294967295;return e}},{key:"_objectHash",value:function t(t){return this._stringHash(JSON.stringify(t))}},{key:"_expand",value:function t(){var t=this._capacity*2,e=new Array(t).fill(null);var r=true,i=false,n=undefined;try{for(var u=this._buckets[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=a.value;var o=s;for(;o;){var h=this._hash(o.key),l=new p(o.key,o.value);if(!e[h])e[h]=l;else{var f=e[h];for(;f.next;)f=f.next;f.next=l}o=o.next}}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}this._buckets=e,this._capacity=t}}]);return t}();g(b,"DEFAULT_CAPACITY",16),g(b,"LOAD_FACTOR",.75);var w=b;var E=function t(){return"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g,function(t){var e=Math.random()*16|0;return(t=="x"?e:e&3|8).toString(16)})},M=function t(t,e){var r=-1,i=t?t.length:0,n=[];for(;++r<i;){var u=t[r];e(u,r,t)&&(n.push(u),Array.prototype.splice.call(t,r--,1),i--)}return n},R=Symbol("thunk"),I=function(t){return typeof t=="function"&&t.__THUNK__===R},T=function(t){var e=function(){return t()};return e.__THUNK__=R,e},O=function(t){return Object.assign(function(){for(var e=arguments.length,r=new Array(e),i=0;i<e;i++){r[i]=arguments[i]}var n=t.apply(void 0,m(r));for(;I(n)&&typeof n=="function";)n=n();return n},{cont:function(){for(var e=arguments.length,r=new Array(e),i=0;i<e;i++){r[i]=arguments[i]}return T(function(){return t.apply(void 0,m(r))})}})},A=function(t){return Object.assign(/*#__PURE__*/u(function(){var e,r,i,n;var u=arguments;return S(this,function(a){switch(a.label){case 0:for(e=u.length,r=new Array(e),i=0;i<e;i++){r[i]=u[i]}return[4,t.apply(void 0,m(r))];case 1:n=a.sent();a.label=2;case 2:if(!(I(n)&&typeof n=="function"))return[3,5];return[4,n()];case 3:n=a.sent();a.label=4;case 4:return[3,2];case 5:return[2,n]}})}),{cont:function(){for(var e=arguments.length,r=new Array(e),i=0;i<e;i++){r[i]=arguments[i]}return T(function(){return t.apply(void 0,m(r))})}})},L=function(t){return t<=0?0:1<<31-Math.clz32(t)},V=function(t,e,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"Index out of bounds.";if(t<e||t>r)throw new RangeError(i)},C=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"The value is off-limits.";throw new RangeError(t)},F=function(t){var e=typeof t==="undefined"?"undefined":x(t);return e==="object"&&t!==null||e==="function"},B=function(t,e){return Math.floor((t+e-1)/e)};var P=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{elements:[],hashFn:function(t){return String(t)},objHashFn:function(t){return t}};a(this,t);g(this,"_noObjMap",{});g(this,"_objMap",new WeakMap);g(this,"_head");g(this,"_tail");g(this,"_sentinel");g(this,"_hashFn");g(this,"_objHashFn");g(this,"_size",0);this._sentinel={},this._sentinel.prev=this._sentinel.next=this._head=this._tail=this._sentinel;var r=e.elements,i=e.hashFn,n=e.objHashFn;var u=true,s=false,o=undefined;if(this._hashFn=i,this._objHashFn=n,r)try{for(var h=r[Symbol.iterator](),l;!(u=(l=h.next()).done);u=true){var f=l.value;this.set(f[0],f[1])}}catch(t){s=true;o=t}finally{try{if(!u&&h.return!=null){h.return()}}finally{if(s){throw o}}}}o(t,[{key:"size",get:function t(){return this._size}},{key:"first",get:function t(){if(this._size!==0)return[this._head.key,this._head.value]}},{key:"last",get:function t(){if(this._size!==0)return[this._tail.key,this._tail.value]}},{key:"begin",value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=this._head;e.label=1;case 1:if(!(t!==this._sentinel))return[3,4];return[4,[t.key,t.value]];case 2:e.sent(),t=t.next;e.label=3;case 3:return[3,1];case 4:return[2]}})}},{key:"reverseBegin",value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=this._tail;e.label=1;case 1:if(!(t!==this._sentinel))return[3,4];return[4,[t.key,t.value]];case 2:e.sent(),t=t.prev;e.label=3;case 3:return[3,1];case 4:return[2]}})}},{key:"set",value:function t(t,e){var r;if(F(t)){var i=this._objHashFn(t);r=this._objMap.get(i),r?r.value=e:(r={key:i,value:e,prev:this._tail,next:this._sentinel},this._objMap.set(i,r))}else{var n=this._hashFn(t);r=this._noObjMap[n],r?r.value=e:this._noObjMap[n]=r={key:t,value:e,prev:this._tail,next:this._sentinel}}return this._size===0?(this._head=r,this._sentinel.next=r):this._tail.next=r,this._tail=r,this._sentinel.prev=r,this._size++,this._size}},{key:"get",value:function t(t){if(F(t)){var e=this._objHashFn(t),r=this._objMap.get(e);return r?r.value:void 0}else{var i=this._hashFn(t),n=this._noObjMap[i];return n?n.value:void 0}}},{key:"getAt",value:function t(t){V(t,0,this._size-1);var e=this._head;for(;t--;)e=e.next;return[e.key,e.value]}},{key:"delete",value:function t(t){var e;if(F(t)){var r=this._objHashFn(t);if(e=this._objMap.get(r),!e)return!1;this._objMap.delete(r)}else{var i=this._hashFn(t);if(e=this._noObjMap[i],!e)return!1;delete this._noObjMap[i]}return this._deleteNode(e),!0}},{key:"deleteAt",value:function t(t){V(t,0,this._size-1);var e=this._head;for(;t--;)e=e.next;return this._deleteNode(e),this._size}},{key:"isEmpty",value:function t(){return this._size===0}},{key:"clear",value:function t(){this._noObjMap={},this._size=0,this._head=this._tail=this._sentinel.prev=this._sentinel.next=this._sentinel}},{key:"forEach",value:function t(t){var e=0,r=this._head;for(;r!==this._sentinel;)t([r.key,r.value],e++,this),r=r.next}},{key:"filter",value:function e(e){var r=new t;var i=true,n=false,u=undefined;try{for(var a=this[Symbol.iterator](),s;!(i=(s=a.next()).done);i=true){var o=k(s.value,2),h=o[0],l=o[1];e([h,l],this)&&r.set(h,l)}}catch(t){n=true;u=t}finally{try{if(!i&&a.return!=null){a.return()}}finally{if(n){throw u}}}return r}},{key:"map",value:function e(e){var r=new t;var i=true,n=false,u=undefined;try{for(var a=this[Symbol.iterator](),s;!(i=(s=a.next()).done);i=true){var o=k(s.value,2),h=o[0],l=o[1];var f=e([h,l],this);r.set(h,f)}}catch(t){n=true;u=t}finally{try{if(!i&&a.return!=null){a.return()}}finally{if(n){throw u}}}return r}},{key:"reduce",value:function t(t,e){var r=e;var i=true,n=false,u=undefined;try{for(var a=this[Symbol.iterator](),s;!(i=(s=a.next()).done);i=true){var o=s.value;r=t(r,o,this)}}catch(t){n=true;u=t}finally{try{if(!i&&a.return!=null){a.return()}}finally{if(n){throw u}}}return r}},{key:Symbol.iterator,value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=this._head;e.label=1;case 1:if(!(t!==this._sentinel))return[3,4];return[4,[t.key,t.value]];case 2:e.sent(),t=t.next;e.label=3;case 3:return[3,1];case 4:return[2]}})}},{key:"_deleteNode",value:function t(t){var e=t.prev,r=t.next;e.next=r,r.prev=e,t===this._head&&(this._head=r),t===this._tail&&(this._tail=e),this._size-=1}}]);return t}();var D=function t(e){a(this,t);g(this,"value");g(this,"next");this.value=e,this.next=null},H=/*#__PURE__*/function(){function t(){a(this,t);g(this,"_head");g(this,"_tail");g(this,"_length");this._head=null,this._tail=null,this._length=0}o(t,[{key:"head",get:function t(){return this._head}},{key:"tail",get:function t(){return this._tail}},{key:"length",get:function t(){return this._length}},{key:"push",value:function t(t){var e=new D(t);this.head?(this.tail.next=e,this._tail=e):(this._head=e,this._tail=e),this._length++}},{key:"addLast",value:function t(t){this.push(t)}},{key:"pop",value:function t(){if(!this.head)return;if(this.head===this.tail){var t=this.head.value;return this._head=null,this._tail=null,this._length--,t}var e=this.head;for(;e.next!==this.tail;)e=e.next;var r=this.tail.value;return e.next=null,this._tail=e,this._length--,r}},{key:"popLast",value:function t(){return this.pop()}},{key:"shift",value:function t(){if(!this.head)return;var t=this.head;return this._head=this.head.next,this._length--,t.value}},{key:"popFirst",value:function t(){return this.shift()}},{key:"unshift",value:function t(t){var e=new D(t);this.head?(e.next=this.head,this._head=e):(this._head=e,this._tail=e),this._length++}},{key:"addFirst",value:function t(t){this.unshift(t)}},{key:"getAt",value:function t(t){if(t<0||t>=this.length)return;var e=this.head;for(var r=0;r<t;r++)e=e.next;return e.value}},{key:"getNodeAt",value:function t(t){var e=this.head;for(var r=0;r<t;r++)e=e.next;return e}},{key:"deleteAt",value:function t(t){if(t<0||t>=this.length)return;if(t===0)return this.shift();if(t===this.length-1)return this.pop();var e=this.getNodeAt(t-1),r=e.next;return e.next=r.next,this._length--,r.value}},{key:"delete",value:function t(t){if(!t)return!1;var e;c(t,D)?e=t.value:e=t;var r=this.head,i=null;for(;r;){if(r.value===e)return i===null?(this._head=r.next,r===this.tail&&(this._tail=null)):(i.next=r.next,r===this.tail&&(this._tail=i)),this._length--,!0;i=r,r=r.next}return!1}},{key:"insertAt",value:function t(t,e){if(t<0||t>this.length)return!1;if(t===0)return this.unshift(e),!0;if(t===this.length)return this.push(e),!0;var r=new D(e),i=this.getNodeAt(t-1);return r.next=i.next,i.next=r,this._length++,!0}},{key:"isEmpty",value:function t(){return this.length===0}},{key:"clear",value:function t(){this._head=null,this._tail=null,this._length=0}},{key:"toArray",value:function t(){var t=[],e=this.head;for(;e;)t.push(e.value),e=e.next;return t}},{key:"reverse",value:function t(){if(!this.head||this.head===this.tail)return;var t=null,e=this.head,r=null;for(;e;)r=e.next,e.next=t,t=e,e=r;var i;i=[this.tail,this.head],this._head=i[0],this._tail=i[1],i}},{key:"find",value:function t(t){var e=this.head;for(;e;){if(t(e.value))return e.value;e=e.next}return null}},{key:"indexOf",value:function t(t){var e=0,r=this.head;for(;r;){if(r.value===t)return e;e++,r=r.next}return-1}},{key:"getNode",value:function t(t){var e=this.head;for(;e;){if(e.value===t)return e;e=e.next}return null}},{key:"insertBefore",value:function t(t,e){if(!this.head)return!1;var r;if(c(t,D)?r=t.value:r=t,this.head.value===r)return this.unshift(e),!0;var i=this.head;for(;i.next;){if(i.next.value===r){var n=new D(e);return n.next=i.next,i.next=n,this._length++,!0}i=i.next}return!1}},{key:"insertAfter",value:function t(t,e){var r;if(c(t,D)?r=t:r=this.getNode(t),r){var i=new D(e);return i.next=r.next,r.next=i,r===this.tail&&(this._tail=i),this._length++,!0}return!1}},{key:"countOccurrences",value:function t(t){var e=0,r=this.head;for(;r;)r.value===t&&e++,r=r.next;return e}},{key:"forEach",value:function t(t){var e=this.head,r=0;for(;e;)t(e.value,r),e=e.next,r++}},{key:"map",value:function e(e){var r=new t,i=this.head;for(;i;)r.push(e(i.value)),i=i.next;return r}},{key:"filter",value:function e(e){var r=new t,i=this.head;for(;i;)e(i.value)&&r.push(i.value),i=i.next;return r}},{key:"reduce",value:function t(t,e){var r=e,i=this.head;for(;i;)r=t(r,i.value),i=i.next;return r}},{key:Symbol.iterator,value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=this.head;e.label=1;case 1:if(!t)return[3,4];return[4,t.value];case 2:e.sent(),t=t.next;e.label=3;case 3:return[3,1];case 4:return[2]}})}}],[{key:"fromArray",value:function e(e){var r=new t;var i=true,n=false,u=undefined;try{for(var a=e[Symbol.iterator](),s;!(i=(s=a.next()).done);i=true){var o=s.value;r.push(o)}}catch(t){n=true;u=t}finally{try{if(!i&&a.return!=null){a.return()}}finally{if(n){throw u}}}return r}}]);return t}();var j=function t(e){a(this,t);g(this,"value");g(this,"next");g(this,"prev");this.value=e,this.next=null,this.prev=null},K=/*#__PURE__*/function(){function t(){a(this,t);g(this,"_head");g(this,"_tail");g(this,"_length");this._head=null,this._tail=null,this._length=0}o(t,[{key:"head",get:function t(){return this._head}},{key:"tail",get:function t(){return this._tail}},{key:"length",get:function t(){return this._length}},{key:"size",get:function t(){return this.length}},{key:"push",value:function t(t){var e=new j(t);this.head?(e.prev=this.tail,this.tail.next=e,this._tail=e):(this._head=e,this._tail=e),this._length++}},{key:"addLast",value:function t(t){this.push(t)}},{key:"pop",value:function t(){if(!this.tail)return;var t=this.tail;return this.head===this.tail?(this._head=null,this._tail=null):(this._tail=t.prev,this.tail.next=null),this._length--,t.value}},{key:"popLast",value:function t(){return this.pop()}},{key:"shift",value:function t(){if(!this.head)return;var t=this.head;return this.head===this.tail?(this._head=null,this._tail=null):(this._head=t.next,this.head.prev=null),this._length--,t.value}},{key:"popFirst",value:function t(){return this.shift()}},{key:"unshift",value:function t(t){var e=new j(t);this.head?(e.next=this.head,this.head.prev=e,this._head=e):(this._head=e,this._tail=e),this._length++}},{key:"addFirst",value:function t(t){this.unshift(t)}},{key:"getFirst",value:function t(){var t;return(t=this.head)===null||t===void 0?void 0:t.value}},{key:"getLast",value:function t(){var t;return(t=this.tail)===null||t===void 0?void 0:t.value}},{key:"getAt",value:function t(t){if(t<0||t>=this.length)return;var e=this.head;for(var r=0;r<t;r++)e=e.next;return e.value}},{key:"getNodeAt",value:function t(t){if(t<0||t>=this.length)return null;var e=this.head;for(var r=0;r<t;r++)e=e.next;return e}},{key:"getNode",value:function t(t){var e=this.head;for(;e;){if(e.value===t)return e;e=e.next}return null}},{key:"insertAt",value:function t(t,e){if(t<0||t>this.length)return!1;if(t===0)return this.unshift(e),!0;if(t===this.length)return this.push(e),!0;var r=new j(e),i=this.getNodeAt(t-1),n=i.next;return r.prev=i,r.next=n,i.next=r,n.prev=r,this._length++,!0}},{key:"insertBefore",value:function t(t,e){var r;if(c(t,j)?r=t:r=this.getNode(t),r){var i=new j(e);return i.prev=r.prev,r.prev&&(r.prev.next=i),i.next=r,r.prev=i,r===this.head&&(this._head=i),this._length++,!0}return!1}},{key:"deleteAt",value:function t(t){if(t<0||t>=this.length)return;if(t===0)return this.shift();if(t===this.length-1)return this.pop();var e=this.getNodeAt(t),r=e.prev,i=e.next;return r.next=i,i.prev=r,this._length--,e.value}},{key:"delete",value:function t(t){var e;if(c(t,j)?e=t:e=this.getNode(t),e){if(e===this.head)this.shift();else if(e===this.tail)this.pop();else{var r=e.prev,i=e.next;r.next=i,i.prev=r,this._length--}return!0}return!1}},{key:"toArray",value:function t(){var t=[],e=this.head;for(;e;)t.push(e.value),e=e.next;return t}},{key:"isEmpty",value:function t(){return this.length===0}},{key:"clear",value:function t(){this._head=null,this._tail=null,this._length=0}},{key:"find",value:function t(t){var e=this.head;for(;e;){if(t(e.value))return e.value;e=e.next}return null}},{key:"indexOf",value:function t(t){var e=0,r=this.head;for(;r;){if(r.value===t)return e;e++,r=r.next}return-1}},{key:"findBackward",value:function t(t){var e=this.tail;for(;e;){if(t(e.value))return e.value;e=e.prev}return null}},{key:"toArrayBackward",value:function t(){var t=[],e=this.tail;for(;e;)t.push(e.value),e=e.prev;return t}},{key:"reverse",value:function t(){var t=this.head;var e;for(e=[this.tail,this.head],this._head=e[0],this._tail=e[1],e;t;){var r=t.next;var i;i=[t.next,t.prev],t.prev=i[0],t.next=i[1],i,t=r}}},{key:"forEach",value:function t(t){var e=this.head,r=0;for(;e;)t(e.value,r),e=e.next,r++}},{key:"map",value:function e(e){var r=new t,i=this.head;for(;i;)r.push(e(i.value)),i=i.next;return r}},{key:"filter",value:function e(e){var r=new t,i=this.head;for(;i;)e(i.value)&&r.push(i.value),i=i.next;return r}},{key:"reduce",value:function t(t,e){var r=e,i=this.head;for(;i;)r=t(r,i.value),i=i.next;return r}},{key:"insertAfter",value:function t(t,e){var r;if(c(t,j)?r=t:r=this.getNode(t),r){var i=new j(e);return i.next=r.next,r.next&&(r.next.prev=i),i.prev=r,r.next=i,r===this.tail&&(this._tail=i),this._length++,!0}return!1}},{key:Symbol.iterator,value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=this.head;e.label=1;case 1:if(!t)return[3,4];return[4,t.value];case 2:e.sent(),t=t.next;e.label=3;case 3:return[3,1];case 4:return[2]}})}}],[{key:"fromArray",value:function e(e){var r=new t;var i=true,n=false,u=undefined;try{for(var a=e[Symbol.iterator](),s;!(i=(s=a.next()).done);i=true){var o=s.value;r.push(o)}}catch(t){n=true;u=t}finally{try{if(!i&&a.return!=null){a.return()}}finally{if(n){throw u}}}return r}}]);return t}();var q=function t(e,r,i){a(this,t);g(this,"key");g(this,"value");g(this,"forward");this.key=e,this.value=r,this.forward=new Array(i)},U=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:16,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.5;a(this,t);g(this,"_head");g(this,"_level");g(this,"_maxLevel");g(this,"_probability");this._head=new q(null,null,e),this._level=0,this._maxLevel=e,this._probability=r}o(t,[{key:"head",get:function t(){return this._head}},{key:"level",get:function t(){return this._level}},{key:"maxLevel",get:function t(){return this._maxLevel}},{key:"probability",get:function t(){return this._probability}},{key:"add",value:function t(t,e){var r=new q(t,e,this._randomLevel()),i=new Array(this.maxLevel).fill(this.head),n=this.head;for(var u=this.level-1;u>=0;u--){for(;n.forward[u]&&n.forward[u].key<t;)n=n.forward[u];i[u]=n}for(var a=0;a<r.forward.length;a++)r.forward[a]=i[a].forward[a],i[a].forward[a]=r;r.forward[0]!==null&&(this._level=Math.max(this.level,r.forward.length))}},{key:"get",value:function t(t){var e=this.head;for(var r=this.level-1;r>=0;r--)for(;e.forward[r]&&e.forward[r].key<t;)e=e.forward[r];if(e=e.forward[0],e&&e.key===t)return e.value}},{key:"has",value:function t(t){return this.get(t)!==void 0}},{key:"delete",value:function t(t){var e=new Array(this.maxLevel).fill(this.head),r=this.head;for(var i=this.level-1;i>=0;i--){for(;r.forward[i]&&r.forward[i].key<t;)r=r.forward[i];e[i]=r}if(r=r.forward[0],r&&r.key===t){for(var n=0;n<this.level&&e[n].forward[n]===r;n++)e[n].forward[n]=r.forward[n];for(;this.level>0&&this.head.forward[this.level-1]===null;)this._level--;return!0}return!1}},{key:"getFirst",value:function t(){var t=this.head.forward[0];return t?t.value:void 0}},{key:"getLast",value:function t(){var t=this.head;for(var e=this.level-1;e>=0;e--)for(;t.forward[e];)t=t.forward[e];return t.value}},{key:"higher",value:function t(t){var e=this.head;for(var r=this.level-1;r>=0;r--)for(;e.forward[r]&&e.forward[r].key<=t;)e=e.forward[r];var i=e.forward[0];return i?i.value:void 0}},{key:"lower",value:function t(t){var e=this.head,r=null;for(var i=this.level-1;i>=0;i--){for(;e.forward[i]&&e.forward[i].key<t;)e=e.forward[i];e.key<t&&(r=e)}return r?r.value:void 0}},{key:"_randomLevel",value:function t(){var t=1;for(;Math.random()<this.probability&&t<this.maxLevel;)t++;return t}}]);return t}();var G=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_elements");this._elements=Array.isArray(e)?e:[]}o(t,[{key:"elements",get:function t(){return this._elements}},{key:"isEmpty",value:function t(){return this.elements.length===0}},{key:"size",value:function t(){return this.elements.length}},{key:"peek",value:function t(){return this.isEmpty()?null:this.elements[this.elements.length-1]}},{key:"push",value:function t(t){return this.elements.push(t),this}},{key:"pop",value:function t(){return this.isEmpty()?null:this.elements.pop()||null}},{key:"toArray",value:function t(){return this.elements.slice()}},{key:"clear",value:function t(){this._elements=[]}},{key:"clone",value:function e(){return new t(this.elements.slice())}}],[{key:"fromArray",value:function e(e){return new t(e)}}]);return t}();var W=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(){a(this,r);return e.apply(this,arguments)}o(r,[{key:"enqueue",value:function t(t){this.push(t)}},{key:"dequeue",value:function t(){return this.shift()}},{key:"getFirst",value:function t(){var t;return(t=this.head)===null||t===void 0?void 0:t.value}},{key:"peek",value:function t(){return this.getFirst()}}]);return r}(H),Q=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_nodes");g(this,"_offset");this._nodes=e||[],this._offset=0}o(t,[{key:"nodes",get:function t(){return this._nodes}},{key:"offset",get:function t(){return this._offset}},{key:"size",get:function t(){return this.nodes.length-this.offset}},{key:"push",value:function t(t){return this.nodes.push(t),this}},{key:"shift",value:function t(){if(this.size===0)return;var t=this.getFirst();return this._offset+=1,this.offset*2<this.nodes.length||(this._nodes=this.nodes.slice(this.offset),this._offset=0),t}},{key:"getFirst",value:function t(){return this.size>0?this.nodes[this.offset]:void 0}},{key:"peek",value:function t(){return this.getFirst()}},{key:"getLast",value:function t(){return this.size>0?this.nodes[this.nodes.length-1]:void 0}},{key:"peekLast",value:function t(){return this.getLast()}},{key:"enqueue",value:function t(t){this.push(t)}},{key:"dequeue",value:function t(){return this.shift()}},{key:"getAt",value:function t(t){return this.nodes[t]}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"toArray",value:function t(){return this.nodes.slice(this.offset)}},{key:"clear",value:function t(){this._nodes=[],this._offset=0}},{key:"clone",value:function e(){return new t(this.nodes.slice(this.offset))}},{key:Symbol.iterator,value:function t(){var t,e,r,i,n,u,a;return S(this,function(s){switch(s.label){case 0:t=true,e=false,r=undefined;s.label=1;case 1:s.trys.push([1,6,7,8]);i=this.nodes[Symbol.iterator]();s.label=2;case 2:if(!!(t=(n=i.next()).done))return[3,5];u=n.value;return[4,u];case 3:s.sent();s.label=4;case 4:t=true;return[3,2];case 5:return[3,8];case 6:a=s.sent();e=true;r=a;return[3,8];case 7:try{if(!t&&i.return!=null){i.return()}}finally{if(e){throw r}}return[7];case 8:return[2]}})}}],[{key:"fromArray",value:function e(e){return new t(e)}}]);return t}();var Y=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:4096;a(this,t);g(this,"_bucketFirst",0);g(this,"_firstInBucket",0);g(this,"_bucketLast",0);g(this,"_lastInBucket",0);g(this,"_bucketCount",0);g(this,"_bucketSize");g(this,"_buckets",[]);g(this,"_size",0);var i;"length"in e?c(e.length,Function)?i=e.length():i=e.length:c(e.size,Function)?i=e.size():i=e.size,this._bucketSize=r,this._bucketCount=B(i,this._bucketSize)||1;for(var n=0;n<this._bucketCount;++n)this._buckets.push(new Array(this._bucketSize));var u=B(i,this._bucketSize);this._bucketFirst=this._bucketLast=(this._bucketCount>>1)-(u>>1),this._firstInBucket=this._lastInBucket=this._bucketSize-i%this._bucketSize>>1;var s=true,o=false,h=undefined;try{for(var l=e[Symbol.iterator](),f;!(s=(f=l.next()).done);s=true){var v=f.value;this.push(v)}}catch(t){o=true;h=t}finally{try{if(!s&&l.return!=null){l.return()}}finally{if(o){throw h}}}}o(t,[{key:"buckets",get:function t(){return this._buckets}},{key:"size",get:function t(){return this._size}},{key:"first",get:function t(){if(this.size!==0)return this._buckets[this._bucketFirst][this._firstInBucket]}},{key:"last",get:function t(){if(this.size!==0)return this._buckets[this._bucketLast][this._lastInBucket]}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"addLast",value:function t(t){this.push(t)}},{key:"popLast",value:function t(){return this.pop()}},{key:"addFirst",value:function t(t){this.unshift(t)}},{key:"popFirst",value:function t(){return this.shift()}},{key:"clear",value:function t(){this._buckets=[new Array(this._bucketSize)],this._bucketCount=1,this._bucketFirst=this._bucketLast=this._size=0,this._firstInBucket=this._lastInBucket=this._bucketSize>>1}},{key:"begin",value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=0;e.label=1;case 1:if(!(t<this.size))return[3,4];return[4,this.getAt(t)];case 2:e.sent(),t++;e.label=3;case 3:return[3,1];case 4:return[2]}})}},{key:"reverseBegin",value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=this.size-1;e.label=1;case 1:if(!(t>=0))return[3,4];return[4,this.getAt(t)];case 2:e.sent(),t--;e.label=3;case 3:return[3,1];case 4:return[2]}})}},{key:"push",value:function t(t){return this.size&&(this._lastInBucket<this._bucketSize-1?this._lastInBucket+=1:this._bucketLast<this._bucketCount-1?(this._bucketLast+=1,this._lastInBucket=0):(this._bucketLast=0,this._lastInBucket=0),this._bucketLast===this._bucketFirst&&this._lastInBucket===this._firstInBucket&&this._reallocate()),this._size+=1,this._buckets[this._bucketLast][this._lastInBucket]=t,this.size}},{key:"pop",value:function t(){if(this.size===0)return;var t=this._buckets[this._bucketLast][this._lastInBucket];return this.size!==1&&(this._lastInBucket>0?this._lastInBucket-=1:this._bucketLast>0?(this._bucketLast-=1,this._lastInBucket=this._bucketSize-1):(this._bucketLast=this._bucketCount-1,this._lastInBucket=this._bucketSize-1)),this._size-=1,t}},{key:"unshift",value:function t(t){return this.size&&(this._firstInBucket>0?this._firstInBucket-=1:this._bucketFirst>0?(this._bucketFirst-=1,this._firstInBucket=this._bucketSize-1):(this._bucketFirst=this._bucketCount-1,this._firstInBucket=this._bucketSize-1),this._bucketFirst===this._bucketLast&&this._firstInBucket===this._lastInBucket&&this._reallocate()),this._size+=1,this._buckets[this._bucketFirst][this._firstInBucket]=t,this.size}},{key:"shift",value:function t(){if(this.size===0)return;var t=this._buckets[this._bucketFirst][this._firstInBucket];return this.size!==1&&(this._firstInBucket<this._bucketSize-1?this._firstInBucket+=1:this._bucketFirst<this._bucketCount-1?(this._bucketFirst+=1,this._firstInBucket=0):(this._bucketFirst=0,this._firstInBucket=0)),this._size-=1,t}},{key:"getAt",value:function t(t){V(t,0,this.size-1);var e=this._getBucketAndPosition(t),r=e.bucketIndex,i=e.indexInBucket;return this._buckets[r][i]}},{key:"setAt",value:function t(t,e){V(t,0,this.size-1);var r=this._getBucketAndPosition(t),i=r.bucketIndex,n=r.indexInBucket;this._buckets[i][n]=e}},{key:"insertAt",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;var i=this.size;if(V(t,0,i),t===0)for(;r--;)this.unshift(e);else if(t===this.size)for(;r--;)this.push(e);else{var n=[];for(var u=t;u<this.size;++u)n.push(this.getAt(u));this.cut(t-1);for(var a=0;a<r;++a)this.push(e);for(var s=0;s<n.length;++s)this.push(n[s])}return this.size}},{key:"cut",value:function t(t){if(t<0)return this.clear(),0;var e=this._getBucketAndPosition(t),r=e.bucketIndex,i=e.indexInBucket;return this._bucketLast=r,this._lastInBucket=i,this._size=t+1,this.size}},{key:"deleteAt",value:function t(t){if(V(t,0,this.size-1),t===0)this.shift();else if(t===this.size-1)this.pop();else{var e=this.size-1,r=this._getBucketAndPosition(t),i=r.bucketIndex,n=r.indexInBucket;for(var u=t;u<e;++u){var a=this._getBucketAndPosition(t+1),s=a.bucketIndex,o=a.indexInBucket;this._buckets[i][n]=this._buckets[s][o],i=s,n=o}this.pop()}return this.size}},{key:"delete",value:function t(t){var e=this.size;if(e===0)return 0;var r=0,i=0;for(;r<e;){var n=this.getAt(r);n!==t&&(this.setAt(i,n),i+=1),r+=1}return this.cut(i-1),this.size}},{key:"reverse",value:function t(){this._buckets.reverse().forEach(function(t){t.reverse()});var t=this,e=t._bucketFirst,r=t._bucketLast,i=t._firstInBucket,n=t._lastInBucket;return this._bucketFirst=this._bucketCount-r-1,this._bucketLast=this._bucketCount-e-1,this._firstInBucket=this._bucketSize-n-1,this._lastInBucket=this._bucketSize-i-1,this}},{key:"unique",value:function t(){if(this.size<=1)return this.size;var t=1,e=this.getAt(0);for(var r=1;r<this.size;++r){var i=this.getAt(r);i!==e&&(e=i,this.setAt(t++,i))}return this.cut(t-1),this.size}},{key:"sort",value:function t(t){var e=[];for(var r=0;r<this.size;++r)e.push(this.getAt(r));e.sort(t);for(var i=0;i<this.size;++i)this.setAt(i,e[i]);return this}},{key:"shrinkToFit",value:function t(){if(this.size===0)return;var t=[];if(this._bucketFirst!==this._bucketLast){if(this._bucketFirst<this._bucketLast)for(var e=this._bucketFirst;e<=this._bucketLast;++e)t.push(this._buckets[e]);else{for(var r=this._bucketFirst;r<this._bucketCount;++r)t.push(this._buckets[r]);for(var i=0;i<=this._bucketLast;++i)t.push(this._buckets[i])}this._bucketFirst=0,this._bucketLast=t.length-1,this._buckets=t}}},{key:"forEach",value:function t(t){for(var e=0;e<this.size;++e)t(this.getAt(e),e,this)}},{key:"find",value:function t(t){for(var e=0;e<this.size;++e){var r=this.getAt(e);if(t(r,e,this))return r}}},{key:"toArray",value:function t(){var t=[];for(var e=0;e<this.size;++e)t.push(this.getAt(e));return t}},{key:"map",value:function e(e){var r=new t([],this._bucketSize);for(var i=0;i<this.size;++i)r.push(e(this.getAt(i),i,this));return r}},{key:"filter",value:function e(e){var r=new t([],this._bucketSize);for(var i=0;i<this.size;++i){var n=this.getAt(i);e(n,i,this)&&r.push(n)}return r}},{key:"reduce",value:function t(t,e){var r=e;for(var i=0;i<this.size;++i)r=t(r,this.getAt(i),i,this);return r}},{key:"indexOf",value:function t(t){for(var e=0;e<this.size;++e)if(this.getAt(e)===t)return e;return-1}},{key:Symbol.iterator,value:function t(){var t;return S(this,function(e){switch(e.label){case 0:t=0;e.label=1;case 1:if(!(t<this.size))return[3,4];return[4,this.getAt(t)];case 2:e.sent();e.label=3;case 3:++t;return[3,1];case 4:return[2]}})}},{key:"_reallocate",value:function t(t){var e=[],r=t||this._bucketCount>>1||1;for(var i=0;i<r;++i)e[i]=new Array(this._bucketSize);for(var n=this._bucketFirst;n<this._bucketCount;++n)e[e.length]=this._buckets[n];for(var u=0;u<this._bucketLast;++u)e[e.length]=this._buckets[u];e[e.length]=m(this._buckets[this._bucketLast]),this._bucketFirst=r,this._bucketLast=e.length-1;for(var a=0;a<r;++a)e[e.length]=new Array(this._bucketSize);this._buckets=e,this._bucketCount=e.length}},{key:"_getBucketAndPosition",value:function t(t){var e,r,i=this._firstInBucket+t;return e=this._bucketFirst+Math.floor(i/this._bucketSize),e>=this._bucketCount&&(e-=this._bucketCount),r=(i+1)%this._bucketSize-1,r<0&&(r=this._bucketSize-1),{bucketIndex:e,indexInBucket:r}}}]);return t}(),X=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_nodes",{});g(this,"_capacity",Number.MAX_SAFE_INTEGER);g(this,"_first",-1);g(this,"_last",-1);g(this,"_size",0);e!==void 0&&(this._capacity=e)}o(t,[{key:"nodes",get:function t(){return this._nodes}},{key:"capacity",get:function t(){return this._capacity}},{key:"first",get:function t(){return this._first}},{key:"last",get:function t(){return this._last}},{key:"size",get:function t(){return this._size}},{key:"addFirst",value:function t(t){if(this.size===0){var e=Math.floor(this.capacity/2);this._first=e,this._last=e}else this._first--;this.nodes[this.first]=t,this._size++}},{key:"addLast",value:function t(t){if(this.size===0){var e=Math.floor(this.capacity/2);this._first=e,this._last=e}else this._last++;this.nodes[this.last]=t,this._size++}},{key:"popFirst",value:function t(){if(!this.size)return;var t=this.getFirst();return delete this.nodes[this.first],this._first++,this._size--,t}},{key:"getFirst",value:function t(){if(this.size)return this.nodes[this.first]}},{key:"popLast",value:function t(){if(!this.size)return;var t=this.getLast();return delete this.nodes[this.last],this._last--,this._size--,t}},{key:"getLast",value:function t(){if(this.size)return this.nodes[this.last]}},{key:"get",value:function t(t){return this.nodes[this.first+t]||void 0}},{key:"isEmpty",value:function t(){return this.size<=0}}]);return t}();var J=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_elements",[]);g(this,"_comparator");this._comparator=e.comparator,e.elements&&e.elements.length>0&&(this._elements=e.elements,this.fix())}o(t,[{key:"elements",get:function t(){return this._elements}},{key:"comparator",get:function t(){return this._comparator}},{key:"size",get:function t(){return this.elements.length}},{key:"leaf",get:function t(){var t;return(t=this.elements[this.size-1])!==null&&t!==void 0?t:void 0}},{key:"add",value:function t(t){return this.push(t)}},{key:"push",value:function t(t){return this._elements.push(t),this._bubbleUp(this.elements.length-1),this}},{key:"poll",value:function t(){if(this.elements.length===0)return;var t=this.elements[0],e=this.elements.pop();return this.elements.length&&(this.elements[0]=e,this._sinkDown(0,this.elements.length>>1)),t}},{key:"pop",value:function t(){return this.poll()}},{key:"peek",value:function t(){return this.elements[0]}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"clear",value:function t(){this._elements=[]}},{key:"refill",value:function t(t){this._elements=t,this.fix()}},{key:"has",value:function t(t){return this.elements.includes(t)}},{key:"delete",value:function t(t){var e=this.elements.indexOf(t);return e<0?!1:(e===0?this.pop():e===this.elements.length-1?this.elements.pop():(this.elements.splice(e,1,this.elements.pop()),this._bubbleUp(e),this._sinkDown(e,this.elements.length>>1)),!0)}},{key:"dfs",value:function t(t){var e=this;var r=[],i=function(n){n<e.size&&(t==="in"?(i(2*n+1),r.push(e.elements[n]),i(2*n+2)):t==="pre"?(r.push(e.elements[n]),i(2*n+1),i(2*n+2)):t==="post"&&(i(2*n+1),i(2*n+2),r.push(e.elements[n])))};return i(0),r}},{key:"toArray",value:function t(){return m(this.elements)}},{key:"clone",value:function e(){var e=new t({comparator:this.comparator});return e._elements=m(this.elements),e}},{key:"sort",value:function t(){var t=[],e=this.clone();for(;e.size!==0;){var r=e.poll();r&&t.push(r)}return t}},{key:"fix",value:function t(){for(var t=Math.floor(this.size/2);t>=0;t--)this._sinkDown(t,this.elements.length>>1)}},{key:"_bubbleUp",value:function t(t){var e=this.elements[t];for(;t>0;){var r=t-1>>1,i=this.elements[r];if(this._comparator(i,e)<=0)break;this.elements[t]=i,t=r}this.elements[t]=e}},{key:"_sinkDown",value:function t(t,e){var r=this.elements[t];for(;t<e;){var i=t<<1|1,n=i+1,u=this.elements[i];if(n<this.elements.length&&this._comparator(u,this.elements[n])>0&&(i=n,u=this.elements[n]),this._comparator(u,r)>=0)break;this.elements[t]=u,t=i}this.elements[t]=r}}],[{key:"heapify",value:function e(e){return new t(e)}}]);return t}(),Z=function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;a(this,t);g(this,"element");g(this,"degree");g(this,"left");g(this,"right");g(this,"child");g(this,"parent");g(this,"marked");this.element=e,this.degree=r,this.marked=!1},$=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_root");g(this,"_size",0);g(this,"_min");g(this,"_comparator");if(this.clear(),this._comparator=e||this.defaultComparator,typeof this.comparator!="function")throw new Error("FibonacciHeap constructor: given comparator should be a function.")}o(t,[{key:"root",get:function t(){return this._root}},{key:"size",get:function t(){return this._size}},{key:"min",get:function t(){return this._min}},{key:"comparator",get:function t(){return this._comparator}},{key:"clear",value:function t(){this._root=void 0,this._min=void 0,this._size=0}},{key:"add",value:function t(t){return this.push(t)}},{key:"push",value:function t(t){var e=this.createNode(t);return e.left=e,e.right=e,this.mergeWithRoot(e),(!this.min||this.comparator(e.element,this.min.element)<=0)&&(this._min=e),this._size++,this}},{key:"peek",value:function t(){return this.min?this.min.element:void 0}},{key:"consumeLinkedList",value:function t(t){var e=[];if(!t)return e;var r=t,i=!1;for(;!(r===t&&i);)r===t&&(i=!0),r&&(e.push(r),r=r.right);return e}},{key:"mergeWithChild",value:function t(t,e){t.child?(e.right=t.child.right,e.left=t.child,t.child.right.left=e,t.child.right=e):t.child=e}},{key:"poll",value:function t(){return this.pop()}},{key:"pop",value:function t(){if(this.size===0)return;var t=this.min;if(t.child){var e=this.consumeLinkedList(t.child);var r=true,i=false,n=undefined;try{for(var u=e[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=a.value;this.mergeWithRoot(s),s.parent=void 0}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}}return this.removeFromRoot(t),t===t.right?(this._min=void 0,this._root=void 0):(this._min=t.right,this.consolidate()),this._size--,t.element}},{key:"merge",value:function t(t){if(t.size!==0){if(this.root&&t.root){var e=this.root,r=t.root,i=e.right,n=r.left;e.right=r,r.left=e,i.left=n,n.right=i}(!this.min||t.min&&this.comparator(t.min.element,this.min.element)<0)&&(this._min=t.min),this._size+=t.size,t.clear()}}},{key:"defaultComparator",value:function t(t,e){return t<e?-1:t>e?1:0}},{key:"createNode",value:function t(t){return new Z(t)}},{key:"mergeWithRoot",value:function t(t){this.root?(t.right=this.root.right,t.left=this.root,this.root.right.left=t,this.root.right=t):this._root=t}},{key:"removeFromRoot",value:function t(t){this.root===t&&(this._root=t.right),t.left&&(t.left.right=t.right),t.right&&(t.right.left=t.left)}},{key:"link",value:function t(t,e){this.removeFromRoot(t),t.left=t,t.right=t,this.mergeWithChild(e,t),e.degree++,t.parent=e}},{key:"consolidate",value:function t(){var t=new Array(this.size),e=this.consumeLinkedList(this.root),r,i,n,u;var a=true,s=false,o=undefined;try{for(var h=e[Symbol.iterator](),l;!(a=(l=h.next()).done);a=true){var f=l.value;for(r=f,n=r.degree;t[n];)i=t[n],this.comparator(r.element,i.element)>0&&(u=r,r=i,i=u),this.link(i,r),t[n]=void 0,n++;t[n]=r}}catch(t){s=true;o=t}finally{try{if(!a&&h.return!=null){h.return()}}finally{if(s){throw o}}}for(var c=0;c<this.size;c++)t[c]&&this.comparator(t[c].element,this.min.element)<=0&&(this._min=t[c])}}]);return t}();var tt=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return e-t;throw new Error("The a, b params of compare function must be number")}};a(this,r);return e.call(this,t)}return r}(J);var te=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return t-e;throw new Error("The a, b params of compare function must be number")}};a(this,r);return e.call(this,t)}return r}(J);var tr=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t){a(this,r);return e.call(this,t)}return r}(J);var ti=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return t-e;throw new Error("The a, b params of compare function must be number")}};a(this,r);return e.call(this,t)}return r}(tr);var tn=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return e-t;throw new Error("The a, b params of compare function must be number")}};a(this,r);return e.call(this,t)}return r}(tr);var tu=function t(e,r){a(this,t);g(this,"key");g(this,"value");this.key=e,this.value=r},ta=/*#__PURE__*/function(){function t(e,r){a(this,t);g(this,"value");g(this,"weight");g(this,"_hashCode");this.weight=e!==void 0?e:1,this.value=r,this._hashCode=E()}o(t,[{key:"hashCode",get:function t(){return this._hashCode}}]);return t}(),ts=/*#__PURE__*/function(){function t(){a(this,t);g(this,"_vertices",new Map)}o(t,[{key:"vertices",get:function t(){return this._vertices}},{key:"getVertex",value:function t(t){return this._vertices.get(t)||null}},{key:"hasVertex",value:function t(t){return this._vertices.has(this._getVertexKey(t))}},{key:"addVertex",value:function t(t,e){if(c(t,tu))return this._addVertexOnly(t);{var r=this.createVertex(t,e);return this._addVertexOnly(r)}}},{key:"deleteVertex",value:function t(t){var e=this._getVertexKey(t);return this._vertices.delete(e)}},{key:"removeManyVertices",value:function t(t){var e=[];var r=true,i=false,n=undefined;try{for(var u=t[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=a.value;e.push(this.deleteVertex(s))}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}return e.length>0}},{key:"hasEdge",value:function t(t,e){return!!this.getEdge(t,e)}},{key:"addEdge",value:function t(t,e,r,i){if(c(t,ta))return this._addEdgeOnly(t);if(c(e,tu)||typeof e=="string"||typeof e=="number"){if(!(this.hasVertex(t)&&this.hasVertex(e)))return!1;c(t,tu)&&(t=t.key),c(e,tu)&&(e=e.key);var n=this.createEdge(t,e,r,i);return this._addEdgeOnly(n)}else throw new Error("dest must be a Vertex or vertex key while srcOrEdge is an Edge")}},{key:"setEdgeWeight",value:function t(t,e,r){var i=this.getEdge(t,e);return i?(i.weight=r,!0):!1}},{key:"getAllPathsBetween",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e3;var i=[],n=this._getVertex(t),u=this._getVertex(e);if(!(n&&u))return[];var a=[];for(a.push({vertex:n,path:[n]});a.length>0;){var s=a.pop(),o=s.vertex,h=s.path;if(o===u&&(i.push(h),i.length>=r))return i;var l=this.getNeighbors(o);var f=true,c=false,v=undefined;try{for(var d=l[Symbol.iterator](),y;!(f=(y=d.next()).done);f=true){var g=y.value;if(!h.includes(g)){var _=m(h).concat([g]);a.push({vertex:g,path:_})}}}catch(t){c=true;v=t}finally{try{if(!f&&d.return!=null){d.return()}}finally{if(c){throw v}}}}return i}},{key:"getPathSumWeight",value:function t(t){var e;var r=0;for(var i=0;i<t.length;i++)r+=((e=this.getEdge(t[i],t[i+1]))===null||e===void 0?void 0:e.weight)||0;return r}},{key:"getMinCostBetween",value:function t(t,e,r){if(r===void 0&&(r=!1),r){var i=this.getAllPathsBetween(t,e),n=1/0;var u=true,a=false,s=undefined;try{for(var o=i[Symbol.iterator](),h;!(u=(h=o.next()).done);u=true){var l=h.value;n=Math.min(this.getPathSumWeight(l),n)}}catch(t){a=true;s=t}finally{try{if(!u&&o.return!=null){o.return()}}finally{if(a){throw s}}}return n}else{var f=this._getVertex(e),c=this._getVertex(t);if(!(c&&f))return null;var v=new Map,d=new Q([c]);v.set(c,!0);var y=0;for(;d.size>0;){for(var g=0;g<d.size;g++){var _=d.shift();if(_===f)return y;if(_!==void 0){var p=this.getNeighbors(_);var k=true,b=false,m=undefined;try{for(var x=p[Symbol.iterator](),w;!(k=(w=x.next()).done);k=true){var E=w.value;v.has(E)||(v.set(E,!0),d.push(E))}}catch(t){b=true;m=t}finally{try{if(!k&&x.return!=null){x.return()}}finally{if(b){throw m}}}}}y++}return null}}},{key:"getMinPathBetween",value:function t(t,e,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var n=this;var u;var a;if(r===void 0&&(r=!1),r)if(i){var s=this.getAllPathsBetween(t,e,1e4),o=1/0,h=-1,l=0;var f=true,c=false,v=undefined;try{for(var d=s[Symbol.iterator](),y;!(f=(y=d.next()).done);f=true){var g=y.value;var _=this.getPathSumWeight(g);_<o&&(o=_,h=l),l++}}catch(t){c=true;v=t}finally{try{if(!f&&d.return!=null){d.return()}}finally{if(c){throw v}}}return s[h]||null}else return(a=(u=this.dijkstra(t,e,!0,!0))===null||u===void 0?void 0:u.minPath)!==null&&a!==void 0?a:[];else{var p=[],k=this._getVertex(t),b=this._getVertex(e);if(!(k&&b))return[];var x=function(t,e,r,i){if(r.add(t),t===e){p=[k].concat(m(i));return}var u=n.getNeighbors(t);var a=true,s=false,o=undefined;try{for(var h=u[Symbol.iterator](),l;!(a=(l=h.next()).done);a=true){var f=l.value;r.has(f)||(i.push(f),x(f,e,r,i),i.pop())}}catch(t){s=true;o=t}finally{try{if(!a&&h.return!=null){h.return()}}finally{if(s){throw o}}}r.delete(t)};return x(k,b,new Set,[]),p}}},{key:"dijkstraWithoutHeap",value:function t(t,e,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1),e===void 0&&(e=null);var n=1/0,u=null,a=[],s=[],o=this._vertices,h=new Map,l=new Set,f=new Map,v=this._getVertex(t),d=e?this._getVertex(e):null;if(!v)return null;var y=true,g=false,_=undefined;try{for(var p=o[Symbol.iterator](),b;!(y=(b=p.next()).done);y=true){var m=b.value;var x=m[1];c(x,tu)&&h.set(x,1/0)}}catch(t){g=true;_=t}finally{try{if(!y&&p.return!=null){p.return()}}finally{if(g){throw _}}}h.set(v,0),f.set(v,null);var w=function(){var t=1/0,e=null;var r=true,i=false,n=undefined;try{for(var u=h[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=k(a.value,2),o=s[0],f=s[1];l.has(o)||f<t&&(t=f,e=o)}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}return e},E=function(t){var e=true,r=false,i=undefined;try{for(var n=o[Symbol.iterator](),u;!(e=(u=n.next()).done);e=true){var h=u.value;var l=h[1];if(c(l,tu)){var v=[l],d=f.get(l);for(;d;)v.push(d),d=f.get(d);var y=v.reverse();h[1]===t&&(a=y),s.push(y)}}}catch(t){r=true;i=t}finally{try{if(!e&&n.return!=null){n.return()}}finally{if(r){throw i}}}};for(var N=1;N<o.size;N++){var S=w();if(S){if(l.add(S),d&&d===S)return r&&(n=h.get(d)||1/0),i&&E(d),{distMap:h,preMap:f,seen:l,paths:s,minDist:n,minPath:a};var z=this.getNeighbors(S);var M=true,R=false,I=undefined;try{for(var T=z[Symbol.iterator](),O;!(M=(O=T.next()).done);M=true){var A=O.value;if(!l.has(A)){var L=this.getEdge(S,A);if(L){var V=h.get(S),C=h.get(A);V!==void 0&&C!==void 0&&L.weight+V<C&&(h.set(A,L.weight+V),f.set(A,S))}}}}catch(t){R=true;I=t}finally{try{if(!M&&T.return!=null){T.return()}}finally{if(R){throw I}}}}}return r&&h.forEach(function(t,e){e!==v&&t<n&&(n=t,i&&(u=e))}),i&&E(u),{distMap:h,preMap:f,seen:l,paths:s,minDist:n,minPath:a}}},{key:"dijkstra",value:function t(t,e,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1),e===void 0&&(e=null);var n=1/0,u=null,a=[],s=[],o=this._vertices,h=new Map,l=new Set,f=new Map,v=this._getVertex(t),d=e?this._getVertex(e):null;if(!v)return null;var y=true,g=false,_=undefined;try{for(var p=o[Symbol.iterator](),k;!(y=(k=p.next()).done);y=true){var b=k.value;var m=b[1];c(m,tu)&&h.set(m,1/0)}}catch(t){g=true;_=t}finally{try{if(!y&&p.return!=null){p.return()}}finally{if(g){throw _}}}var x=new tr({comparator:function(t,e){return t.key-e.key}});x.add({key:0,value:v}),h.set(v,0),f.set(v,null);var w=function(t){var e=true,r=false,i=undefined;try{for(var n=o[Symbol.iterator](),u;!(e=(u=n.next()).done);e=true){var h=u.value;var l=h[1];if(c(l,tu)){var v=[l],d=f.get(l);for(;d;)v.push(d),d=f.get(d);var y=v.reverse();h[1]===t&&(a=y),s.push(y)}}}catch(t){r=true;i=t}finally{try{if(!e&&n.return!=null){n.return()}}finally{if(r){throw i}}}};for(;x.size>0;){var E=x.poll(),N=E===null||E===void 0?void 0:E.key,S=E===null||E===void 0?void 0:E.value;if(N!==void 0&&S){if(l.add(S),d&&d===S)return r&&(n=h.get(d)||1/0),i&&w(d),{distMap:h,preMap:f,seen:l,paths:s,minDist:n,minPath:a};var z=this.getNeighbors(S);var M=true,R=false,I=undefined;try{for(var T=z[Symbol.iterator](),O;!(M=(O=T.next()).done);M=true){var A=O.value;if(!l.has(A)){var L;var V=(L=this.getEdge(S,A))===null||L===void 0?void 0:L.weight;if(typeof V=="number"){var C=h.get(A);C&&N+V<C&&(x.add({key:N+V,value:A}),f.set(A,S),h.set(A,N+V))}}}}catch(t){R=true;I=t}finally{try{if(!M&&T.return!=null){T.return()}}finally{if(R){throw I}}}}}return r&&h.forEach(function(t,e){e!==v&&t<n&&(n=t,i&&(u=e))}),i&&w(u),{distMap:h,preMap:f,seen:l,paths:s,minDist:n,minPath:a}}},{key:"bellmanFord",value:function t(t,e,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1);var n=this._getVertex(t),u=[],a=new Map,s=new Map,o=1/0,h=[],l;if(e&&(l=!1),!n)return{hasNegativeCycle:l,distMap:a,preMap:s,paths:u,min:o,minPath:h};var f=this._vertices,v=f.size,d=this.edgeSet(),y=d.length;this._vertices.forEach(function(t){a.set(t,1/0)}),a.set(n,0);for(var g=1;g<v;++g)for(var _=0;_<y;++_){var p=this.getEndsOfEdge(d[_]);if(p){var b=k(p,2),m=b[0],x=b[1],w=d[_].weight,E=a.get(m),N=a.get(x);E!==void 0&&N!==void 0&&a.get(m)!==1/0&&E+w<N&&(a.set(x,E+w),i&&s.set(x,m))}}var S=null;var z=true,M=false,R=undefined;if(r&&a.forEach(function(t,e){e!==n&&t<o&&(o=t,i&&(S=e))}),i)try{for(var I=f[Symbol.iterator](),T;!(z=(T=I.next()).done);z=true){var O=T.value;var A=O[1];if(c(A,tu)){var L=[A],V=s.get(A);for(;V!==void 0;)L.push(V),V=s.get(V);var C=L.reverse();O[1]===S&&(h=C),u.push(C)}}}catch(t){M=true;R=t}finally{try{if(!z&&I.return!=null){I.return()}}finally{if(M){throw R}}}for(var F=0;F<y;++F){var B=this.getEndsOfEdge(d[F]);if(B){var P=k(B,1),D=P[0],H=d[F].weight,j=a.get(D);j&&j!==1/0&&j+H<j&&(l=!0)}}return{hasNegativeCycle:l,distMap:a,preMap:s,paths:u,min:o,minPath:h}}},{key:"floydWarshall",value:function t(){var t;var e=m(this._vertices),r=e.length,i=[],n=[];for(var u=0;u<r;u++){i[u]=[],n[u]=[];for(var a=0;a<r;a++)n[u][a]=null}for(var s=0;s<r;s++)for(var o=0;o<r;o++)i[s][o]=((t=this.getEdge(e[s][1],e[o][1]))===null||t===void 0?void 0:t.weight)||1/0;for(var h=0;h<r;h++)for(var l=0;l<r;l++)for(var f=0;f<r;f++)i[l][f]>i[l][h]+i[h][f]&&(i[l][f]=i[l][h]+i[h][f],n[l][f]=e[h][1]);return{costs:i,predecessor:n}}},{key:"tarjan",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var n=this;t===void 0&&(t=!1),e===void 0&&(e=!1),r===void 0&&(r=!1),i===void 0&&(i=!1);var u=new Map,a=new Map,s=this._vertices;s.forEach(function(t){u.set(t,-1),a.set(t,1/0)});var o=k(s.values(),1),h=o[0],l=[],f=[],c=0,v=function(r,i){c++,u.set(r,c),a.set(r,c);var s=n.getNeighbors(r),o=0;var d=true,y=false,g=undefined;try{for(var _=s[Symbol.iterator](),p;!(d=(p=_.next()).done);d=true){var k=p.value;if(k!==i){u.get(k)===-1&&(o++,v(k,r));var b=a.get(k),m=a.get(r);m!==void 0&&b!==void 0&&a.set(r,Math.min(m,b));var x=u.get(r);if(b!==void 0&&x!==void 0&&(t&&(r===h&&o>=2||r!==h&&b>=x)&&l.push(r),e&&b>x)){var w=n.getEdge(r,k);w&&f.push(w)}}}}catch(t){y=true;g=t}finally{try{if(!d&&_.return!=null){_.return()}}finally{if(y){throw g}}}};v(h,null);var d=new Map,y=function(){var t=new Map;return a.forEach(function(e,r){var i;t.has(e)?(i=t.get(e))===null||i===void 0?void 0:i.push(r):t.set(e,[r])}),t};r&&(d=y());var g=new Map;if(i){var _=new Map;_.size<1&&(_=y()),_.forEach(function(t,e){t.length>1&&g.set(e,t)})}return{dfnMap:u,lowMap:a,bridges:f,cutVertexes:l,SCCs:d,cycles:g}}},{key:"getDFNMap",value:function t(){return this.tarjan(!1,!1,!1,!1).dfnMap}},{key:"getLowMap",value:function t(){return this.tarjan(!1,!1,!1,!1).lowMap}},{key:"getCycles",value:function t(){return this.tarjan(!1,!1,!1,!0).cycles}},{key:"getCutVertexes",value:function t(){return this.tarjan(!0,!1,!1,!1).cutVertexes}},{key:"getSCCs",value:function t(){return this.tarjan(!1,!1,!0,!1).SCCs}},{key:"getBridges",value:function t(){return this.tarjan(!1,!0,!1,!1).bridges}},{key:"_addVertexOnly",value:function t(t){return this.hasVertex(t)?!1:(this._vertices.set(t.key,t),!0)}},{key:"_getVertex",value:function t(t){var e=this._getVertexKey(t);return this._vertices.get(e)||null}},{key:"_getVertexKey",value:function t(t){return c(t,tu)?t.key:t}}]);return t}();var to=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,i){a(this,r);return e.call(this,t,i)}return r}(tu),th=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n,u,s){a(this,r);var o;o=e.call(this,u,s);g(i(o),"src");g(i(o),"dest");o.src=t,o.dest=n;return o}return r}(ta),tl=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(){a(this,r);var t;t=e.call(this);g(i(t),"_outEdgeMap",new Map);g(i(t),"_inEdgeMap",new Map);return t}o(r,[{key:"outEdgeMap",get:function t(){return this._outEdgeMap}},{key:"inEdgeMap",get:function t(){return this._inEdgeMap}},{key:"createVertex",value:function t(t,e){return new to(t,e!==null&&e!==void 0?e:t)}},{key:"createEdge",value:function t(t,e,r,i){return new th(t,e,r!==null&&r!==void 0?r:1,i)}},{key:"getEdge",value:function t(t,e){var r=[];if(t!==null&&e!==null){var i=this._getVertex(t),n=this._getVertex(e);if(i&&n){var u=this._outEdgeMap.get(i);u&&(r=u.filter(function(t){return t.dest===n.key}))}}return r[0]||null}},{key:"deleteEdgeSrcToDest",value:function t(t,e){var r=this._getVertex(t),i=this._getVertex(e),n=null;if(!r||!i)return null;var u=this._outEdgeMap.get(r);u&&M(u,function(t){return t.dest===i.key});var a=this._inEdgeMap.get(i);return a&&(n=M(a,function(t){return t.src===r.key})[0]||null),n}},{key:"deleteEdge",value:function t(t){var e=null,r=this._getVertex(t.src),i=this._getVertex(t.dest);if(r&&i){var n=this._outEdgeMap.get(r);n&&n.length>0&&M(n,function(t){return t.src===r.key});var u=this._inEdgeMap.get(i);u&&u.length>0&&(e=M(u,function(t){return t.dest===i.key})[0])}return e}},{key:"deleteEdgesBetween",value:function t(t,e){var r=[];if(t&&e){var i=this.deleteEdgeSrcToDest(t,e),n=this.deleteEdgeSrcToDest(e,t);i&&r.push(i),n&&r.push(n)}return r}},{key:"incomingEdgesOf",value:function t(t){var e=this._getVertex(t);return e?this.inEdgeMap.get(e)||[]:[]}},{key:"outgoingEdgesOf",value:function t(t){var e=this._getVertex(t);return e?this._outEdgeMap.get(e)||[]:[]}},{key:"degreeOf",value:function t(t){return this.outDegreeOf(t)+this.inDegreeOf(t)}},{key:"inDegreeOf",value:function t(t){return this.incomingEdgesOf(t).length}},{key:"outDegreeOf",value:function t(t){return this.outgoingEdgesOf(t).length}},{key:"edgesOf",value:function t(t){return m(this.outgoingEdgesOf(t)).concat(m(this.incomingEdgesOf(t)))}},{key:"getEdgeSrc",value:function t(t){return this._getVertex(t.src)}},{key:"getEdgeDest",value:function t(t){return this._getVertex(t.dest)}},{key:"getDestinations",value:function t(t){if(t===null)return[];var e=[],r=this.outgoingEdgesOf(t);var i=true,n=false,u=undefined;try{for(var a=r[Symbol.iterator](),s;!(i=(s=a.next()).done);i=true){var o=s.value;var h=this.getEdgeDest(o);h&&e.push(h)}}catch(t){n=true;u=t}finally{try{if(!i&&a.return!=null){a.return()}}finally{if(n){throw u}}}return e}},{key:"topologicalSort",value:function t(t){var e=this;t=t!==null&&t!==void 0?t:"key";var r=new Map;var i=true,n=false,u=undefined;try{for(var a=this.vertices[Symbol.iterator](),s;!(i=(s=a.next()).done);i=true){var o=s.value;r.set(o[1],0)}}catch(t){n=true;u=t}finally{try{if(!i&&a.return!=null){a.return()}}finally{if(n){throw u}}}var h=[],l=!1,f=function(t){r.set(t,1);var i=e.getDestinations(t);var n=true,u=false,a=undefined;try{for(var s=i[Symbol.iterator](),o;!(n=(o=s.next()).done);n=true){var c=o.value;var v=r.get(c);v===0?f(c):v===1&&(l=!0)}}catch(t){u=true;a=t}finally{try{if(!n&&s.return!=null){s.return()}}finally{if(u){throw a}}}r.set(t,2),h.push(t)};var v=true,d=false,y=undefined;try{for(var g=this.vertices[Symbol.iterator](),_;!(v=(_=g.next()).done);v=true){var p=_.value;r.get(p[1])===0&&f(p[1])}}catch(t){d=true;y=t}finally{try{if(!v&&g.return!=null){g.return()}}finally{if(d){throw y}}}return l?null:(t==="key"&&(h=h.map(function(t){return c(t,to)?t.key:t})),h.reverse())}},{key:"edgeSet",value:function t(){var t=[];return this._outEdgeMap.forEach(function(e){t=m(t).concat(m(e))}),t}},{key:"getNeighbors",value:function t(t){var e=[],r=this._getVertex(t);if(r){var i=this.outgoingEdgesOf(r);var n=true,u=false,a=undefined;try{for(var s=i[Symbol.iterator](),o;!(n=(o=s.next()).done);n=true){var h=o.value;var l=this._getVertex(h.dest);l&&e.push(l)}}catch(t){u=true;a=t}finally{try{if(!n&&s.return!=null){s.return()}}finally{if(u){throw a}}}}return e}},{key:"getEndsOfEdge",value:function t(t){if(!this.hasEdge(t.src,t.dest))return null;var e=this._getVertex(t.src),r=this._getVertex(t.dest);return e&&r?[e,r]:null}},{key:"_addEdgeOnly",value:function t(t){if(!(this.hasVertex(t.src)&&this.hasVertex(t.dest)))return!1;var e=this._getVertex(t.src),r=this._getVertex(t.dest);if(e&&r){var i=this._outEdgeMap.get(e);i?i.push(t):this._outEdgeMap.set(e,[t]);var n=this._inEdgeMap.get(r);return n?n.push(t):this._inEdgeMap.set(r,[t]),!0}else return!1}}]);return r}(ts);var tf=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,i){a(this,r);return e.call(this,t,i)}return r}(tu),tc=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n,u,s){a(this,r);var o;o=e.call(this,u,s);g(i(o),"vertices");o.vertices=[t,n];return o}return r}(ta),tv=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(){a(this,r);var t;t=e.call(this);g(i(t),"_edges");t._edges=new Map;return t}o(r,[{key:"edges",get:function t(){return this._edges}},{key:"createVertex",value:function t(t,e){return new tf(t,e!==null&&e!==void 0?e:t)}},{key:"createEdge",value:function t(t,e,r,i){return new tc(t,e,r!==null&&r!==void 0?r:1,i)}},{key:"getEdge",value:function t(t,e){var r=[];if(t!==null&&e!==null){var i;var n=this._getVertex(t),u=this._getVertex(e);n&&u&&(r=(i=this._edges.get(n))===null||i===void 0?void 0:i.filter(function(t){return t.vertices.includes(u.key)}))}return r&&r[0]||null}},{key:"deleteEdgeBetween",value:function t(t,e){var r=this._getVertex(t),i=this._getVertex(e);if(!r||!i)return null;var n=this._edges.get(r),u=null;n&&(u=M(n,function(t){return t.vertices.includes(i.key)})[0]||null);var a=this._edges.get(i);return a&&M(a,function(t){return t.vertices.includes(r.key)}),u}},{key:"deleteEdge",value:function t(t){return this.deleteEdgeBetween(t.vertices[0],t.vertices[1])}},{key:"degreeOf",value:function t(t){var e;var r=this._getVertex(t);return r&&((e=this._edges.get(r))===null||e===void 0?void 0:e.length)||0}},{key:"edgesOf",value:function t(t){var e=this._getVertex(t);return e?this._edges.get(e)||[]:[]}},{key:"edgeSet",value:function t(){var t=new Set;return this._edges.forEach(function(e){e.forEach(function(e){t.add(e)})}),m(t)}},{key:"getNeighbors",value:function t(t){var e=[],r=this._getVertex(t);if(r){var i=this.edgesOf(r);var n=true,u=false,a=undefined;try{for(var s=i[Symbol.iterator](),o;!(n=(o=s.next()).done);n=true){var h=o.value;var l=this._getVertex(h.vertices.filter(function(t){return t!==r.key})[0]);l&&e.push(l)}}catch(t){u=true;a=t}finally{try{if(!n&&s.return!=null){s.return()}}finally{if(u){throw a}}}}return e}},{key:"getEndsOfEdge",value:function t(t){if(!this.hasEdge(t.vertices[0],t.vertices[1]))return null;var e=this._getVertex(t.vertices[0]),r=this._getVertex(t.vertices[1]);return e&&r?[e,r]:null}},{key:"_addEdgeOnly",value:function t(t){var e=true,r=false,i=undefined;try{for(var n=t.vertices[Symbol.iterator](),u;!(e=(u=n.next()).done);e=true){var a=u.value;var s=this._getVertex(a);if(s===null)return!1;if(s){var o=this._edges.get(s);o?o.push(t):this._edges.set(s,[t])}}}catch(t){r=true;i=t}finally{try{if(!e&&n.return!=null){n.return()}}finally{if(r){throw i}}}return!0}}]);return r}(ts);var td=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n,u,s){a(this,r);var o;o=e.call(this,t,n);g(i(o),"lat");g(i(o),"long");o.lat=u,o.long=s;return o}return r}(to),ty=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,i,n,u){a(this,r);return e.call(this,t,i,n,u)}return r}(th),tg=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n){a(this,r);var u;u=e.call(this);g(i(u),"_origin",[0,0]);g(i(u),"_bottomRight");u._origin=t,u._bottomRight=n;return u}o(r,[{key:"origin",get:function t(){return this._origin}},{key:"bottomRight",get:function t(){return this._bottomRight}},{key:"createVertex",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.origin[0],i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.origin[1];return new td(t,e,r,i)}},{key:"createEdge",value:function t(t,e,r,i){return new ty(t,e,r,i)}}]);return r}(tl);var t_=function(t){return t.ITERATIVE="ITERATIVE",t.RECURSIVE="RECURSIVE",t}(t_||{}),tp=function(t){return t.ROOT="ROOT",t.LEFT="LEFT",t.RIGHT="RIGHT",t.ROOT_LEFT="ROOT_LEFT",t.ROOT_RIGHT="ROOT_RIGHT",t.ISOLATED="ISOLATED",t.MAL_NODE="MAL_NODE",t}(tp||{});var tk=function(t){return t[t.RED=1]="RED",t[t.BLACK=0]="BLACK",t}(tk||{});var tb=function(t){return t.lt="lt",t.eq="eq",t.gt="gt",t}(tb||{}),tm=function(t){return t[t.DEFAULT=0]="DEFAULT",t[t.REVERSE=1]="REVERSE",t}(tm||{});var tx=/*#__PURE__*/function(){function t(e,r){a(this,t);g(this,"key");g(this,"value");g(this,"parent");g(this,"_left");g(this,"_right");this.key=e,this.value=r}o(t,[{key:"left",get:function t(){return this._left},set:function t(t){t&&(t.parent=this),this._left=t}},{key:"right",get:function t(){return this._right},set:function t(t){t&&(t.parent=this),this._right=t}},{key:"familyPosition",get:function t(){var t=this;return this.parent?this.parent.left===t?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===t?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}}]);return t}(),tw=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"iterationType","ITERATIVE");g(this,"_root");g(this,"_size");g(this,"_defaultOneParamCallback",function(t){return t.key});if(e){var r=e.iterationType,i=r===void 0?"ITERATIVE":r;this.iterationType=i}this._size=0}o(t,[{key:"root",get:function t(){return this._root}},{key:"size",get:function t(){return this._size}},{key:"createNode",value:function t(t,e){return new tx(t,e)}},{key:"add",value:function t(t,e){var r=this;var i=function(t,e){var i=new Q([t]);for(;i.size>0;){var n=i.shift();if(e&&n.key===e.key){n.value=e.value;return}var u=r._addTo(e,n);if(u!==void 0)return u;n.left&&i.push(n.left),n.right&&i.push(n.right)}},n,u;if(t===null)u=null;else if(this.isNodeKey(t))u=this.createNode(t,e);else if(c(t,tx))u=t;else return;return this.root?n=i(this.root,u):(this._setRoot(u),u?this._size=1:this._size=0,n=this.root),n}},{key:"addMany",value:function t(t,e){var r=this;return t.map(function(t,i){if(c(t,tx))return r.add(t.key,t.value);if(t===null)return r.add(null);var n=e===null||e===void 0?void 0:e[i];return r.add(t,n)})}},{key:"refill",value:function t(t,e){return this.clear(),t.length===this.addMany(t,e).length}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback;var r=[];if(!this.root)return r;(!e||e===this._defaultOneParamCallback)&&c(t,tx)&&(e=function(t){return t});var i=this.getNode(t,e);if(!i)return r;var n=(i===null||i===void 0?void 0:i.parent)?i.parent:null,u,a=i;if(i.left){if(i.left){var s=this.getRightMost(i.left);if(s){var o=s.parent;a=this._swap(i,s),o&&(o.right===s?o.right=s.left:o.left=s.left,u=o)}}}else if(!n)this._setRoot(null);else{var h=i.familyPosition;h==="LEFT"||h==="ROOT_LEFT"?n.left=i.right:(h==="RIGHT"||h==="ROOT_RIGHT")&&(n.right=i.right),u=n}return this._size=this.size-1,r.push({deleted:a,needBalanced:u}),r}},{key:"getDepth",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root;t=this.ensureNotKey(t),e=this.ensureNotKey(e);var r=0;for(;t===null||t===void 0?void 0:t.parent;){if(t===e)return r;r++,t=t.parent}return r}},{key:"getHeight",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;if(t=this.ensureNotKey(t),!t)return-1;if(e==="RECURSIVE"){var r=function(t){if(!t)return-1;var e=r(t.left),i=r(t.right);return Math.max(e,i)+1};return r(t)}else{var i=[{node:t,depth:0}],n=0;for(;i.length>0;){var u=i.pop(),a=u.node,s=u.depth;a.left&&i.push({node:a.left,depth:s+1}),a.right&&i.push({node:a.right,depth:s+1}),n=Math.max(n,s)}return n}}},{key:"getMinHeight",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;if(t=this.ensureNotKey(t),!t)return-1;if(e==="RECURSIVE"){var r=function(t){if(!t||!t.left&&!t.right)return 0;var e=r(t.left),i=r(t.right);return Math.min(e,i)+1};return r(t)}else{var i=[],n=t,u=null,a=new Map;for(;i.length>0||n;)if(n)i.push(n),n=n.left;else if(n=i[i.length-1],!n.right||u===n.right){if(n=i.pop(),n){var s,o;var h=n.left?(s=a.get(n.left))!==null&&s!==void 0?s:-1:-1,l=n.right?(o=a.get(n.right))!==null&&o!==void 0?o:-1:-1;a.set(n,1+Math.min(h,l)),u=n,n=null}}else n=n.right;var f;return(f=a.get(t))!==null&&f!==void 0?f:-1}}},{key:"isPerfectlyBalanced",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root;return this.getMinHeight(t)+1>=this.getHeight(t)}},{key:"getNodes",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.root,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.iterationType;if((!e||e===this._defaultOneParamCallback)&&c(t,tx)&&(e=function(t){return t}),i=this.ensureNotKey(i),!i)return[];var u=[];if(n==="RECURSIVE"){var a=function(i){e(i)===t&&(u.push(i),r)||!i.left&&!i.right||(i.left&&a(i.left),i.right&&a(i.right))};a(i)}else{var s=new Q([i]);for(;s.size>0;){var o=s.shift();if(o){if(e(o)===t&&(u.push(o),r))return u;o.left&&s.push(o.left),o.right&&s.push(o.right)}}}return u}},{key:"has",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;return(!e||e===this._defaultOneParamCallback)&&c(t,tx)&&(e=function(t){return t}),this.getNodes(t,e,!0,r,i).length>0}},{key:"getNode",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var n;return(!e||e===this._defaultOneParamCallback)&&c(t,tx)&&(e=function(t){return t}),(n=this.getNodes(t,e,!0,r,i)[0])!==null&&n!==void 0?n:null}},{key:"getNodeByKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";if(this.root)if(e==="RECURSIVE"){var r=function(e){if(e.key===t)return e;if(!(!e.left&&!e.right)){if(e.left)return r(e.left);if(e.right)return r(e.right)}};return r(this.root)}else{var i=new Q([this.root]);for(;i.size>0;){var n=i.shift();if(n){if(n.key===t)return n;n.left&&i.push(n.left),n.right&&i.push(n.right)}}}}},{key:"ensureNotKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";return this.isNodeKey(t)?this.getNodeByKey(t,e):t}},{key:"get",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var n;var u;return(!e||e===this._defaultOneParamCallback)&&c(t,tx)&&(e=function(t){return t}),(u=(n=this.getNode(t,e,r,i))===null||n===void 0?void 0:n.value)!==null&&u!==void 0?u:void 0}},{key:"clear",value:function t(){this._setRoot(void 0),this._size=0}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"getPathToRoot",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;var r=[];if(t=this.ensureNotKey(t),!t)return r;for(;t.parent;)r.push(t),t=t.parent;return r.push(t),e?r.reverse():r}},{key:"getLeftMost",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;var r=this;if(t=this.ensureNotKey(t),!t)return t;if(e==="RECURSIVE"){var i=function(t){return r.isRealNode(t.left)?i(t.left):t};return i(t)}else{var n=O(function(t){return r.isRealNode(t.left)?n.cont(t.left):t});return n(t)}}},{key:"getRightMost",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;var r=this;if(t=this.ensureNotKey(t),!t)return t;if(e==="RECURSIVE"){var i=function(t){return r.isRealNode(t.right)?i(t.right):t};return i(t)}else{var n=O(function(t){return r.isRealNode(t.right)?n.cont(t.right):t});return n(t)}}},{key:"isSubtreeBST",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;if(t=this.ensureNotKey(t),!t)return!0;if(e==="RECURSIVE"){var r=function(t,e,i){return t?t.key<=e||t.key>=i?!1:r(t.left,e,t.key)&&r(t.right,t.key,i):!0};return r(t,Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER)}else{var i=[],n=Number.MIN_SAFE_INTEGER,u=t;for(;u||i.length>0;){for(;u;)i.push(u),u=u.left;if(u=i.pop(),!u||n>=u.key)return!1;n=u.key,u=u.right}return!0}}},{key:"isBST",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;return this.root===null?!0:this.isSubtreeBST(this.root,t)}},{key:"subTreeTraverse",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.iterationType,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var n=this;e=this.ensureNotKey(e);var u=[];if(!e)return u;if(r==="RECURSIVE"){var a=function(e){e!==void 0&&(u.push(t(e)),i?(e&&n.isNodeOrNull(e.left)&&a(e.left),e&&n.isNodeOrNull(e.right)&&a(e.right)):(e&&e.left&&a(e.left),e&&e.right&&a(e.right)))};a(e)}else{var s=[e];for(;s.length>0;){var o=s.pop();o!==void 0&&(u.push(t(o)),i?(o&&this.isNodeOrNull(o.right)&&s.push(o.right),o&&this.isNodeOrNull(o.left)&&s.push(o.left)):(o&&o.right&&s.push(o.right),o&&o.left&&s.push(o.left)))}}return u}},{key:"isRealNode",value:function t(t){return c(t,tx)&&t.key.toString()!=="NaN"}},{key:"isNIL",value:function t(t){return c(t,tx)&&t.key.toString()==="NaN"}},{key:"isNodeOrNull",value:function t(t){return this.isRealNode(t)||t===null}},{key:"isNodeKey",value:function t(t){return typeof t=="number"}},{key:"dfs",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"in",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"ITERATIVE",n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;var u=this;if(r=this.ensureNotKey(r),!r)return[];var a=[];if(i==="RECURSIVE"){var s=function(r){switch(e){case"in":n?(r&&u.isNodeOrNull(r.left)&&s(r.left),u.isNodeOrNull(r)&&a.push(t(r)),r&&u.isNodeOrNull(r.right)&&s(r.right)):(r&&r.left&&s(r.left),u.isRealNode(r)&&a.push(t(r)),r&&r.right&&s(r.right));break;case"pre":n?(u.isNodeOrNull(r)&&a.push(t(r)),r&&u.isNodeOrNull(r.left)&&s(r.left),r&&u.isNodeOrNull(r.right)&&s(r.right)):(u.isRealNode(r)&&a.push(t(r)),r&&r.left&&s(r.left),r&&r.right&&s(r.right));break;case"post":n?(r&&u.isNodeOrNull(r.left)&&s(r.left),r&&u.isNodeOrNull(r.right)&&s(r.right),u.isNodeOrNull(r)&&a.push(t(r))):(r&&r.left&&s(r.left),r&&r.right&&s(r.right),u.isRealNode(r)&&a.push(t(r)));break}};s(r)}else{var o=[{opt:0,node:r}];for(;o.length>0;){var h=o.pop();if(!(h===void 0||this.isNIL(h.node))){if(n){if(h.node===void 0)continue}else if(h.node===null||h.node===void 0)continue;if(h.opt===1)a.push(t(h.node));else switch(e){case"in":h.node&&o.push({opt:0,node:h.node.right}),o.push({opt:1,node:h.node}),h.node&&o.push({opt:0,node:h.node.left});break;case"pre":h.node&&o.push({opt:0,node:h.node.right}),h.node&&o.push({opt:0,node:h.node.left}),o.push({opt:1,node:h.node});break;case"post":o.push({opt:1,node:h.node}),h.node&&o.push({opt:0,node:h.node.right}),h.node&&o.push({opt:0,node:h.node.left});break;default:h.node&&o.push({opt:0,node:h.node.right}),o.push({opt:1,node:h.node}),h.node&&o.push({opt:0,node:h.node.left});break}}}}return a}},{key:"bfs",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.iterationType,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var n=this;if(e=this.ensureNotKey(e),!e)return[];var u=[];if(r==="RECURSIVE"){var a=new Q([e]),s=function(e){if(a.size===0)return;var r=a.shift();u.push(t(r)),i?(r&&n.isNodeOrNull(r.left)&&a.push(r.left),r&&n.isNodeOrNull(r.right)&&a.push(r.right)):(r.left&&a.push(r.left),r.right&&a.push(r.right)),s(e+1)};s(0)}else{var o=new Q([e]);for(;o.size>0;){var h=o.size;for(var l=0;l<h;l++){var f=o.shift();u.push(t(f)),i?(f&&this.isNodeOrNull(f.left)&&o.push(f.left),f&&this.isNodeOrNull(f.right)&&o.push(f.right)):(f.left&&o.push(f.left),f.right&&o.push(f.right))}}}return u}},{key:"listLevels",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.iterationType,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var n=this;e=this.ensureNotKey(e);var u=[];if(!e)return u;if(r==="RECURSIVE"){var a=function(e,r){u[r]||(u[r]=[]),u[r].push(t(e)),i?(e&&n.isNodeOrNull(e.left)&&a(e.left,r+1),e&&n.isNodeOrNull(e.right)&&a(e.right,r+1)):(e&&e.left&&a(e.left,r+1),e&&e.right&&a(e.right,r+1))};a(e,0)}else{var s=[[e,0]];for(;s.length>0;){var o=s.pop(),h=k(o,2),l=h[0],f=h[1];u[f]||(u[f]=[]),u[f].push(t(l)),i?(l&&this.isNodeOrNull(l.right)&&s.push([l.right,f+1]),l&&this.isNodeOrNull(l.left)&&s.push([l.left,f+1])):(l&&l.right&&s.push([l.right,f+1]),l&&l.left&&s.push([l.left,f+1]))}}return u}},{key:"getPredecessor",value:function t(t){if(t=this.ensureNotKey(t),!!this.isRealNode(t))if(t.left){var e=t.left;for(;!this.isRealNode(e)||this.isRealNode(e.right)&&e.right!==t;)e&&(e=e.right);return e}else return t}},{key:"getSuccessor",value:function t(t){if(t=this.ensureNotKey(t),!t)return;if(t.right)return this.getLeftMost(t.right);var e=t.parent;for(;e&&e&&t===e.right;)t=e,e=e.parent;return e}},{key:"morris",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"in",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root;if(r=this.ensureNotKey(r),r===null)return[];var i=[],n=r,u=function(t){var e=null,r=null;for(;t;)r=t.right,t.right=e,e=t,t=r;return e},a=function(e){var r=u(e),n=r;for(;n;)i.push(t(n)),n=n.right;u(r)};switch(e){case"in":for(;n;){if(n.left){var s=this.getPredecessor(n);if(s.right)s.right=null;else{s.right=n,n=n.left;continue}}i.push(t(n)),n=n.right}break;case"pre":for(;n;){if(n.left){var o=this.getPredecessor(n);if(o.right)o.right=null;else{o.right=n,i.push(t(n)),n=n.left;continue}}else i.push(t(n));n=n.right}break;case"post":for(;n;){if(n.left){var h=this.getPredecessor(n);if(h.right===null){h.right=n,n=n.left;continue}else h.right=null,a(n.left)}n=n.right}a(r);break}return i}},{key:Symbol.iterator,value:function t(){var t,e,r,i,n,u;var a=arguments;return S(this,function(s){switch(s.label){case 0:t=a.length>0&&a[0]!==void 0?a[0]:this.root;if(!t)return[3,12];if(!(this.iterationType==="ITERATIVE"))return[3,6];e=[],r=t;s.label=1;case 1:if(!(r||e.length>0))return[3,5];for(;r;)e.push(r),r=r.left;r=e.pop();i=r;if(!i)return[3,3];return[4,r.key];case 2:i=s.sent();s.label=3;case 3:i,r&&(r=r.right);s.label=4;case 4:return[3,1];case 5:return[3,12];case 6:n=t.left;if(!n)return[3,8];return[5,z(this[Symbol.iterator](t.left))];case 7:n=s.sent();s.label=8;case 8:n;return[4,t.key];case 9:s.sent();u=t.right;if(!u)return[3,11];return[5,z(this[Symbol.iterator](t.right))];case 10:u=s.sent();s.label=11;case 11:u;s.label=12;case 12:return[2]}})}},{key:"print",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root;var e=this;if(t=this.ensureNotKey(t),!t)return;var r=function(t){var e=k(i(t),1),r=e[0];var n=true,u=false,a=undefined;try{for(var s=r[Symbol.iterator](),o;!(n=(o=s.next()).done);n=true){var h=o.value;console.log(h)}}catch(t){u=true;a=t}finally{try{if(!n&&s.return!=null){s.return()}}finally{if(u){throw a}}}},i=function(t){var r,n;if(!e.isRealNode(t))return[[],0,0,0];if(e.isRealNode(t)&&!e.isRealNode(t.right)&&!e.isRealNode(t.left)){var u="".concat(t.key),a=u.length,s=1,o=Math.floor(a/2);return[[u],a,s,o]}if(e.isRealNode(t)&&!e.isRealNode(t.right)){var h=k(i(t.left),4),l=h[0],f=h[1],c=h[2],v=h[3],d="".concat(t.key),y=d.length,g=" ".repeat(v+1)+"_".repeat(f-v-1)+d,_=" ".repeat(v)+"/"+" ".repeat(f-v-1+y),p=l.map(function(t){return t+" ".repeat(y)});return[[g,_].concat(m(p)),f+y,c+2,f+Math.floor(y/2)]}if(e.isRealNode(t)&&!e.isRealNode(t.left)){var b=k(i(t.right),4),x=b[0],w=b[1],E=b[2],N=b[3],S="".concat(t.key),z=S.length,M=S+"_".repeat(z)+" ".repeat(w-z),R=" ".repeat(N+z)+"\\"+" ".repeat(w-z-1),I=x.map(function(t){return" ".repeat(N)+t});return[[M,R].concat(m(I)),w+z,E+2,Math.floor(N/2)]}var T=k(i(t.left),4),O=T[0],A=T[1],L=T[2],V=T[3],C=k(i(t.right),4),F=C[0],B=C[1],P=C[2],D=C[3],H="".concat(t.key),j=H.length,K=" ".repeat(V+1)+"_".repeat(A-V-1)+H+"_".repeat(D)+" ".repeat(B-D),q=" ".repeat(V)+"/"+" ".repeat(A-V-1+j+D)+"\\"+" ".repeat(B-D-1);L<P?(r=O).push.apply(r,m(new Array(P-L).fill(" ".repeat(A)))):P<L&&(n=F).push.apply(n,m(new Array(L-P).fill(" ".repeat(B))));var U=O.map(function(t,e){return t+" ".repeat(j)+F[e]});return[[K,q].concat(m(U)),A+B+j,Math.max(L,P)+2,A+Math.floor(j/2)]};r(t)}},{key:"_swap",value:function t(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){var r=e.key,i=e.value,n=this.createNode(r,i);return n&&(e.key=t.key,e.value=t.value,t.key=n.key,t.value=n.value),e}}},{key:"_addTo",value:function t(t,e){if(this.isNodeKey(e)&&(e=this.getNode(e)),e)return e.left===void 0?(e.left=t,t&&(this._size=this.size+1),e.left):e.right===void 0?(e.right=t,t&&(this._size=this.size+1),e.right):void 0}},{key:"_setRoot",value:function t(t){t&&(t.parent=void 0),this._root=t}}]);return t}();var tE=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n){a(this,r);var u;u=e.call(this,t,n);g(i(u),"parent");g(i(u),"_left");g(i(u),"_right");u.parent=void 0,u._left=void 0,u._right=void 0;return u}o(r,[{key:"left",get:function t(){return this._left},set:function t(t){t&&(t.parent=this),this._left=t}},{key:"right",get:function t(){return this._right},set:function t(t){t&&(t.parent=this),this._right=t}}]);return r}(tx),tN=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t){a(this,r);var n;n=e.call(this,t);g(i(n),"_root");g(i(n),"_comparator",function(t,e){return t-e});if(n._root=void 0,t!==void 0){var u=t.comparator;u!==void 0&&(n._comparator=u)}return n}o(r,[{key:"root",get:function t(){return this._root}},{key:"createNode",value:function t(t,e){return new tE(t,e)}},{key:"add",value:function t(t,e){if(t===null)return;var r,i;if(c(t,tE)?i=t:this.isNodeKey(t)?i=this.createNode(t,e):i=void 0,this.root===void 0)this._setRoot(i),this._size=this.size+1,r=this.root;else{var n=this.root,u=!0;for(;u;)n!==void 0&&i!==void 0?this._compare(n.key,i.key)==="eq"?(i&&(n.value=i.value),u=!1,r=n):this._compare(n.key,i.key)==="gt"?n.left===void 0?(i&&(i.parent=n),n.left=i,this._size=this.size+1,u=!1,r=n.left):n.left&&(n=n.left):this._compare(n.key,i.key)==="lt"&&(n.right===void 0?(i&&(i.parent=n),n.right=i,this._size=this.size+1,u=!1,r=n.right):n.right&&(n=n.right)):u=!1}return r}},{key:"addMany",value:function t(t,e){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var u=this;function a(t){return t.indexOf(void 0)===-1}if(!i||!a(t))return h(l(r.prototype),"addMany",this).call(this,t,e).map(function(t){return t!==null&&t!==void 0?t:void 0});var s=[],o=t.map(function(t,r){return[t,e===null||e===void 0?void 0:e[r]]}),f=[];function v(t){var e=true,r=false,i=undefined;try{for(var n=t[Symbol.iterator](),u;!(e=(u=n.next()).done);e=true){var a=k(u.value,1),s=a[0];if(c(s,tE))return!0}}catch(t){r=true;i=t}finally{try{if(!e&&n.return!=null){n.return()}}finally{if(r){throw i}}}return!1}var d=function(t){var e=true,r=false,i=undefined;try{for(var n=t[Symbol.iterator](),a;!(e=(a=n.next()).done);e=true){var s=k(a.value,1),o=s[0];if(u.isNodeKey(o))return!0}}catch(t){r=true;i=t}finally{try{if(!e&&n.return!=null){n.return()}}finally{if(r){throw i}}}return!1},y=[],g=[];if(v(o))f=o.sort(function(t,e){return t[0].key-e[0].key});else if(d(o))f=o.sort(function(t,e){return t[0]-e[0]});else throw new Error("Invalid input keysOrNodes");y=f.map(function(t){var e=k(t,1),r=e[0];return r}),g=f.map(function(t){var e=k(t,2),r=e[1];return r});var _=function(t,e){if(t.length===0)return;var r=Math.floor((t.length-1)/2),i=u.add(t[r],e===null||e===void 0?void 0:e[r]);s.push(i),_(t.slice(0,r),e===null||e===void 0?void 0:e.slice(0,r)),_(t.slice(r+1),e===null||e===void 0?void 0:e.slice(r+1))},p=function(){var t=[[0,f.length-1]];for(;t.length>0;){var e=t.pop();if(e){var r=k(e,2),i=r[0],n=r[1];if(i<=n){var a=i+Math.floor((n-i)/2),o=u.add(y[a],g===null||g===void 0?void 0:g[a]);s.push(o),t.push([a+1,n]),t.push([i,a-1])}}}};return n==="RECURSIVE"?_(y,g):p(),s}},{key:"lastKey",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;var r,i,n;var u,a,s;return this._compare(0,1)==="lt"?(u=(r=this.getRightMost(t,e))===null||r===void 0?void 0:r.key)!==null&&u!==void 0?u:0:this._compare(0,1)==="gt"?(a=(i=this.getLeftMost(t,e))===null||i===void 0?void 0:i.key)!==null&&a!==void 0?a:0:(s=(n=this.getRightMost(t,e))===null||n===void 0?void 0:n.key)!==null&&s!==void 0?s:0}},{key:"getNodeByKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";var r=this;if(this.root)if(e==="RECURSIVE"){var i=function(e){if(e.key===t)return e;if(!(!e.left&&!e.right)){if(r._compare(e.key,t)==="gt"&&e.left)return i(e.left);if(r._compare(e.key,t)==="lt"&&e.right)return i(e.right)}};return i(this.root)}else{var n=new Q([this.root]);for(;n.size>0;){var u=n.shift();if(u){if(this._compare(u.key,t)==="eq")return u;this._compare(u.key,t)==="gt"&&u.left&&n.push(u.left),this._compare(u.key,t)==="lt"&&u.right&&n.push(u.right)}}}}},{key:"ensureNotKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";return this.isNodeKey(t)?this.getNodeByKey(t,e):t}},{key:"getNodes",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.root,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.iterationType;var u=this;if(i=this.ensureNotKey(i),!i)return[];var a=[];if(n==="RECURSIVE"){var s=function(i){e(i)===t&&(a.push(i),r)||!i.left&&!i.right||(e===u._defaultOneParamCallback?(u._compare(i.key,t)==="gt"&&i.left&&s(i.left),u._compare(i.key,t)==="lt"&&i.right&&s(i.right)):(i.left&&s(i.left),i.right&&s(i.right)))};s(i)}else{var o=new Q([i]);for(;o.size>0;){var h=o.shift();if(h){if(e(h)===t&&(a.push(h),r))return a;e===this._defaultOneParamCallback?(this._compare(h.key,t)==="gt"&&h.left&&o.push(h.left),this._compare(h.key,t)==="lt"&&h.right&&o.push(h.right)):(h.left&&o.push(h.left),h.right&&o.push(h.right))}}}return a}},{key:"lesserOrGreaterTraverse",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"lt",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var n=this;r=this.ensureNotKey(r);var u=[];if(!r||!this.root)return u;var a=r.key;if(i==="RECURSIVE"){var s=function(r){n._compare(r.key,a)===e&&u.push(t(r)),!(!r.left&&!r.right)&&(r.left&&n._compare(r.left.key,a)===e&&s(r.left),r.right&&n._compare(r.right.key,a)===e&&s(r.right))};return s(this.root),u}else{var o=new Q([this.root]);for(;o.size>0;){var h=o.shift();h&&(this._compare(h.key,a)===e&&u.push(t(h)),h.left&&this._compare(h.left.key,a)===e&&o.push(h.left),h.right&&this._compare(h.right.key,a)===e&&o.push(h.right))}return u}}},{key:"perfectlyBalance",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;var e=this;var r=this.dfs(function(t){return t},"in"),i=r.length;if(this.clear(),r.length<1)return!1;if(t==="RECURSIVE"){var n=function(t,i){if(t>i)return;var u=t+Math.floor((i-t)/2),a=r[u];e.add(a.key,a.value),n(t,u-1),n(u+1,i)};return n(0,i-1),!0}else{var u=[[0,i-1]];for(;u.length>0;){var a=u.pop();if(a){var s=k(a,2),o=s[0],h=s[1];if(o<=h){var l=o+Math.floor((h-o)/2),f=r[l];debugger;this.add(f.key,f.value),u.push([l+1,h]),u.push([o,l-1])}}}return!0}}},{key:"isAVLBalanced",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;if(!this.root)return!0;var e=!0;if(t==="RECURSIVE"){var r=function(t){if(!t)return 0;var i=r(t.left),n=r(t.right);return Math.abs(i-n)>1&&(e=!1),Math.max(i,n)+1};r(this.root)}else{var i=[],n=this.root,u,a=new Map;for(;i.length>0||n;)if(n)i.push(n),n=n.left;else if(n=i[i.length-1],!n.right||u===n.right){if(n=i.pop(),n){var s,o;var h=n.left?(s=a.get(n.left))!==null&&s!==void 0?s:-1:-1,l=n.right?(o=a.get(n.right))!==null&&o!==void 0?o:-1:-1;if(Math.abs(h-l)>1)return!1;a.set(n,1+Math.max(h,l)),u=n,n=void 0}}else n=n.right}return e}},{key:"_setRoot",value:function t(t){t&&(t.parent=void 0),this._root=t}},{key:"_compare",value:function t(t,e){var r=this._comparator(t,e);return r>0?"gt":r<0?"lt":"eq"}}]);return r}(tw);var tS=/*#__PURE__*/function(){function t(e){var r=e.frequency,i=r===void 0?0:r,n=e.max;a(this,t);g(this,"_freq");g(this,"_max");g(this,"_freqMap");g(this,"_msb");g(this,"_negativeCount");this._freq=i,this._max=n,this._freqMap={0:0},this._msb=L(n),this._negativeCount=i<0?n:0}o(t,[{key:"freqMap",get:function t(){return this._freqMap}},{key:"msb",get:function t(){return this._msb}},{key:"negativeCount",get:function t(){return this._negativeCount}},{key:"freq",get:function t(){return this._freq}},{key:"max",get:function t(){return this._max}},{key:"readSingle",value:function t(t){return this._checkIndex(t),this._readSingle(t)}},{key:"update",value:function t(t,e){this._checkIndex(t);var r=this._readSingle(t);this._update(t,e),this._updateNegativeCount(r,r+e)}},{key:"writeSingle",value:function t(t,e){this._checkIndex(t),this._writeSingle(t,e)}},{key:"read",value:function t(t){if(!Number.isInteger(t))throw new Error("Invalid count");return this._read(Math.max(Math.min(t,this.max),0))}},{key:"lowerBound",value:function t(t){if(this.negativeCount>0)throw new Error("Sequence is not non-descending");return this._binarySearch(t,function(t,e){return t<e})}},{key:"upperBound",value:function t(t){if(this.negativeCount>0)throw new Error("Must not be descending");return this._binarySearch(t,function(t,e){return t<=e})}},{key:"getPrefixSum",value:function t(t){this._checkIndex(t),t++;var e=0;for(;t>0;)e+=this._getFrequency(t),t-=t&-t;return e}},{key:"_getFrequency",value:function t(t){return t in this.freqMap?this.freqMap[t]:this.freq*(t&-t)}},{key:"_updateFrequency",value:function t(t,e){this.freqMap[t]=this._getFrequency(t)+e}},{key:"_checkIndex",value:function t(t){if(!Number.isInteger(t))throw new Error("Invalid index: Index must be an integer.");if(t<0||t>=this.max)throw new Error("Index out of range: Index must be within the range [0, this.max).")}},{key:"_readSingle",value:function t(t){t=t+1;var e=this._getFrequency(t),r=t-(t&-t);for(t--;t!==r;)e-=this._getFrequency(t),t-=t&-t;return e}},{key:"_updateNegativeCount",value:function t(t,e){t<0&&e>=0?this._negativeCount--:t>=0&&e<0&&this._negativeCount++}},{key:"_update",value:function t(t,e){for(t=t+1;t<=this.max;)this._updateFrequency(t,e),t+=t&-t}},{key:"_writeSingle",value:function t(t,e){var r=this._readSingle(t);this._update(t,e-r),this._updateNegativeCount(r,e)}},{key:"_read",value:function t(t){var e=t,r=0;for(;e;)r+=this._getFrequency(e),e-=e&-e;return r}},{key:"_binarySearch",value:function t(t,e){var r=0,i=this.msb<<1,n=t;for(;i>r+1;){var u=r+i>>1,a=this._getFrequency(u);u<=this.max&&e(a,n)?(n-=a,r=u):i=u}return r}}]);return t}();var tz=function t(e,r,i,n){a(this,t);g(this,"start",0);g(this,"end",0);g(this,"value",null);g(this,"sum",0);g(this,"left",null);g(this,"right",null);this.start=e,this.end=r,this.sum=i,this.value=n||null},tM=/*#__PURE__*/function(){function t(e,r,i){a(this,t);g(this,"_values",[]);g(this,"_start",0);g(this,"_end");g(this,"_root");r=r||0,i=i||e.length-1,this._values=e,this._start=r,this._end=i,e.length>0?this._root=this.build(r,i):(this._root=null,this._values=[])}o(t,[{key:"values",get:function t(){return this._values}},{key:"start",get:function t(){return this._start}},{key:"end",get:function t(){return this._end}},{key:"root",get:function t(){return this._root}},{key:"build",value:function t(t,e){if(t>e)return new tz(t,e,0);if(t===e)return new tz(t,e,this._values[t]);var r=t+Math.floor((e-t)/2),i=this.build(t,r),n=this.build(r+1,e),u=new tz(t,e,i.sum+n.sum);return u.left=i,u.right=n,u}},{key:"updateNode",value:function t(t,e,r){var i=this.root||null;if(!i)return;var n=function(t,e,r,i){if(t.start===t.end&&t.start===e){t.sum=r,i!==void 0&&(t.value=i);return}var u=t.start+Math.floor((t.end-t.start)/2);e<=u?t.left&&n(t.left,e,r,i):t.right&&n(t.right,e,r,i),t.left&&t.right&&(t.sum=t.left.sum+t.right.sum)};n(i,t,e,r)}},{key:"querySumByRange",value:function t(t,e){var r=this.root||null;if(!r)return 0;if(t<0||e>=this.values.length||t>e)return NaN;var i=function(t,e,r){if(e<=t.start&&r>=t.end)return t.sum;var n=t.start+Math.floor((t.end-t.start)/2);if(r<=n)return t.left?i(t.left,e,r):NaN;if(e>n)return t.right?i(t.right,e,r):NaN;{var u=0,a=0;return t.left&&(u=i(t.left,e,n)),t.right&&(a=i(t.right,n+1,r)),u+a}};return i(r,t,e)}}]);return t}();var tR=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n){a(this,r);var u;u=e.call(this,t,n);g(i(u),"height");u.height=0;return u}return r}(tE),tI=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t){a(this,r);return e.call(this,t)}o(r,[{key:"createNode",value:function t(t,e){return new tR(t,e)}},{key:"add",value:function t(t,e){if(t===null)return;var i=h(l(r.prototype),"add",this).call(this,t,e);return i&&this._balancePath(i),i}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback;c(t,tR)&&(e=function(t){return t});var i=h(l(r.prototype),"delete",this).call(this,t,e);var n=true,u=false,a=undefined;try{for(var s=i[Symbol.iterator](),o;!(n=(o=s.next()).done);n=true){var f=o.value,v=f.needBalanced;v&&this._balancePath(v)}}catch(t){u=true;a=t}finally{try{if(!n&&s.return!=null){s.return()}}finally{if(u){throw a}}}return i}},{key:"_swap",value:function t(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){var r=e.key,i=e.value,n=e.height,u=this.createNode(r,i);return u&&(u.height=n,e.key=t.key,e.value=t.value,e.height=t.height,t.key=u.key,t.value=u.value,t.height=u.height),e}}},{key:"_balanceFactor",value:function t(t){return t.right?t.left?t.right.height-t.left.height:+t.height:-t.height}},{key:"_updateHeight",value:function t(t){if(!t.left&&!t.right)t.height=0;else if(t.left)t.right?t.height=1+Math.max(t.right.height,t.left.height):t.height=1+t.left.height;else{var e=t.right?t.right.height:0;t.height=1+e}}},{key:"_balancePath",value:function t(t){var e=this.getPathToRoot(t,!1);for(var r=0;r<e.length;r++){var i=e[r];switch(this._updateHeight(i),this._balanceFactor(i)){case-2:i&&i.left&&(this._balanceFactor(i.left)<=0?this._balanceLL(i):this._balanceLR(i));break;case 2:i&&i.right&&(this._balanceFactor(i.right)>=0?this._balanceRR(i):this._balanceRL(i))}}}},{key:"_balanceLL",value:function t(t){var e=t.parent,r=t.left;t.parent=r,r&&r.right&&(r.right.parent=t),r&&(r.parent=e),t===this.root?r&&this._setRoot(r):(e===null||e===void 0?void 0:e.left)===t?e.left=r:e&&(e.right=r),r&&(t.left=r.right,r.right=t),this._updateHeight(t),r&&this._updateHeight(r)}},{key:"_balanceLR",value:function t(t){var e=t.parent,r=t.left,i;r&&(i=r.right),t&&(t.parent=i),r&&(r.parent=i),i&&(i.left&&(i.left.parent=r),i.right&&(i.right.parent=t),i.parent=e),t===this.root?i&&this._setRoot(i):e&&(e.left===t?e.left=i:e.right=i),i&&(t.left=i.right,r&&(r.right=i.left),i.left=r,i.right=t),this._updateHeight(t),r&&this._updateHeight(r),i&&this._updateHeight(i)}},{key:"_balanceRR",value:function t(t){var e=t.parent,r=t.right;t.parent=r,r&&(r.left&&(r.left.parent=t),r.parent=e),t===this.root?r&&this._setRoot(r):e&&(e.left===t?e.left=r:e.right=r),r&&(t.right=r.left,r.left=t),this._updateHeight(t),r&&this._updateHeight(r)}},{key:"_balanceRL",value:function t(t){var e=t.parent,r=t.right,i;r&&(i=r.left),t.parent=i,r&&(r.parent=i),i&&(i.left&&(i.left.parent=t),i.right&&(i.right.parent=r),i.parent=e),t===this.root?i&&this._setRoot(i):e&&(e.left===t?e.left=i:e.right=i),i&&(t.right=i.left),r&&i&&(r.left=i.right),i&&(i.left=t),i&&(i.right=r),this._updateHeight(t),r&&this._updateHeight(r),i&&this._updateHeight(i)}}]);return r}(tN);var tT=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;a(this,r);var s;s=e.call(this,t,n);g(i(s),"color");s.color=u;return s}return r}(tE),tO=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t){a(this,r);var n;n=e.call(this,t);g(i(n),"NIL",new tT(NaN));g(i(n),"_root");g(i(n),"_size",0);n._root=n.NIL;return n}o(r,[{key:"root",get:function t(){return this._root}},{key:"size",get:function t(){return this._size}},{key:"add",value:function t(t,e){var r;if(this.isNodeKey(t))r=this.createNode(t,e,1);else if(c(t,tT))r=t;else return void 0;r.left=this.NIL,r.right=this.NIL;var i,n=this.root;for(;n!==this.NIL;)i=n,n&&r.key<n.key?n=n.left:n=n===null||n===void 0?void 0:n.right;if(r.parent=i,i===void 0?this._setRoot(r):r.key<i.key?i.left=r:i.right=r,r.parent===void 0){r.color=0,this._size++;return}if(r.parent.parent===void 0){this._size++;return}this._fixInsert(r),this._size++}},{key:"createNode",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return new tT(t,e,r)}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback;var r=this;var i=[];return t===null||function(i){var n=r.NIL,u,a;for(;i!==r.NIL;)i&&e(i)===t&&(n=i),i&&t&&e(i)<=t?i=i.right:i=i===null||i===void 0?void 0:i.left;if(n===r.NIL){r._size--;return}a=n;var s=a.color;n.left===r.NIL?(u=n.right,r._rbTransplant(n,n.right)):n.right===r.NIL?(u=n.left,r._rbTransplant(n,n.left)):(a=r.getLeftMost(n.right),s=a.color,u=a.right,a.parent===n?u.parent=a:(r._rbTransplant(a,a.right),a.right=n.right,a.right.parent=a),r._rbTransplant(n,a),a.left=n.left,a.left.parent=a,a.color=n.color),s===0&&r._fixDelete(u),r._size--}(this.root),i}},{key:"isRealNode",value:function t(t){return t!==this.NIL&&t!==void 0}},{key:"getNode",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var n;return c(t,tx)&&(e=function(t){return t}),r=this.ensureNotKey(r),(n=this.getNodes(t,e,!0,r,i)[0])!==null&&n!==void 0?n:void 0}},{key:"getSuccessor",value:function t(t){var e;if(t.right!==this.NIL)return(e=this.getLeftMost(t.right))!==null&&e!==void 0?e:void 0;var r=t.parent;for(;r!==this.NIL&&r!==void 0&&t===r.right;)t=r,r=r.parent;return r}},{key:"getPredecessor",value:function t(t){if(t.left!==this.NIL)return this.getRightMost(t.left);var e=t.parent;for(;e!==this.NIL&&t===e.left;)t=e,e=e.parent;return e}},{key:"clear",value:function t(){this._root=this.NIL,this._size=0}},{key:"_setRoot",value:function t(t){t&&(t.parent=void 0),this._root=t}},{key:"_leftRotate",value:function t(t){if(t.right){var e=t.right;t.right=e.left,e.left!==this.NIL&&e.left&&(e.left.parent=t),e.parent=t.parent,t.parent===void 0?this._setRoot(e):t===t.parent.left?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}}},{key:"_rightRotate",value:function t(t){if(t.left){var e=t.left;t.left=e.right,e.right!==this.NIL&&e.right&&(e.right.parent=t),e.parent=t.parent,t.parent===void 0?this._setRoot(e):t===t.parent.right?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}}},{key:"_fixDelete",value:function t(t){var e;for(;t!==this.root&&t.color===0;)t.parent&&t===t.parent.left?(e=t.parent.right,e.color===1&&(e.color=0,t.parent.color=1,this._leftRotate(t.parent),e=t.parent.right),e.left!==void 0&&e.left.color===0&&e.right&&e.right.color===0?(e.color=1,t=t.parent):(e.right&&e.right.color===0&&(e.left&&(e.left.color=0),e.color=1,this._rightRotate(e),e=t.parent.right),e&&(e.color=t.parent.color),t.parent.color=0,e&&e.right&&(e.right.color=0),this._leftRotate(t.parent),t=this.root)):(e=t.parent.left,e.color===1&&(e.color=0,t.parent.color=1,this._rightRotate(t.parent),e=t.parent.left),e&&e.right&&e.right.color===0&&e.right.color===0?(e.color=1,t=t.parent):(e&&e.left&&e.left.color===0&&(e.right&&(e.right.color=0),e.color=1,this._leftRotate(e),e=t.parent.left),e&&(e.color=t.parent.color),t.parent.color=0,e&&e.left&&(e.left.color=0),this._rightRotate(t.parent),t=this.root));t.color=0}},{key:"_rbTransplant",value:function t(t,e){t.parent===void 0?this._setRoot(e):t===t.parent.left?t.parent.left=e:t.parent.right=e,e.parent=t.parent}},{key:"_fixInsert",value:function t(t){var e;for(;t.parent&&t.parent.color===1&&(t.parent.parent&&t.parent===t.parent.parent.right?(e=t.parent.parent.left,e&&e.color===1?(e.color=0,t.parent.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.left&&(t=t.parent,this._rightRotate(t)),t.parent.color=0,t.parent.parent.color=1,this._leftRotate(t.parent.parent))):(e=t.parent.parent.right,e&&e.color===1?(e.color=0,t.parent.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.right&&(t=t.parent,this._leftRotate(t)),t.parent.color=0,t.parent.parent.color=1,this._rightRotate(t.parent.parent))),t!==this.root););this.root.color=0}}]);return r}(tN);var tA=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t,n){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;a(this,r);var s;s=e.call(this,t,n);g(i(s),"count");s.count=u;return s}return r}(tR),tL=/*#__PURE__*/function(t){f(r,t);var e=N(r);function r(t){a(this,r);var n;n=e.call(this,t);g(i(n),"_count",0);return n}o(r,[{key:"count",get:function t(){return this._count}},{key:"createNode",value:function t(t,e,r){return new tA(t,e,r)}},{key:"add",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;if(t===null)return;var i,n;if(c(t,tA)?n=this.createNode(t.key,t.value,t.count):t===void 0?n=void 0:n=this.createNode(t,e,r),!this.root)this._setRoot(n),this._size=this.size+1,n&&(this._count+=n.count),i=this.root;else{var u=this.root,a=!0;for(;a;)u?n&&(this._compare(u.key,n.key)==="eq"?(u.value=n.value,u.count+=n.count,this._count+=n.count,a=!1,i=u):this._compare(u.key,n.key)==="gt"?u.left===void 0?(u.left=n,this._size=this.size+1,this._count+=n.count,a=!1,i=u.left):u.left&&(u=u.left):this._compare(u.key,n.key)==="lt"&&(u.right===void 0?(u.right=n,this._size=this.size+1,this._count+=n.count,a=!1,i=u.right):u.right&&(u=u.right))):a=!1}return i&&this._balancePath(i),i}},{key:"addMany",value:function t(t,e){var r=[];for(var i=0;i<t.length;i++){var n=t[i];if(c(n,tA)){r.push(this.add(n.key,n.value,n.count));continue}if(n===void 0){r.push(this.add(NaN,void 0,0));continue}r.push(this.add(n,e===null||e===void 0?void 0:e[i],1))}return r}},{key:"perfectlyBalance",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;var e=this;var r=this.dfs(function(t){return t},"in"),i=r.length;if(r.length<1)return!1;if(this.clear(),t==="RECURSIVE"){var n=function(t,i){if(t>i)return;var u=t+Math.floor((i-t)/2),a=r[u];e.add(a.key,a.value,a.count),n(t,u-1),n(u+1,i)};return n(0,i-1),!0}else{var u=[[0,i-1]];for(;u.length>0;){var a=u.pop();if(a){var s=k(a,2),o=s[0],h=s[1];if(o<=h){var l=o+Math.floor((h-o)/2),f=r[l];this.add(f.key,f.value,f.count),u.push([l+1,h]),u.push([o,l-1])}}}return!0}}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;var i=[];if(!this.root)return i;var n;var u=(n=this.getNode(t,e))!==null&&n!==void 0?n:void 0;if(!u)return i;var a=(u===null||u===void 0?void 0:u.parent)?u.parent:void 0,s,o=u;if(u.count>1&&!r)u.count--,this._count--;else{if(u.left){var h=u.left?this.getRightMost(u.left):void 0;if(h){var l=h.parent;o=this._swap(u,h),l&&(l.right===h?l.right=h.left:l.left=h.left,s=l)}}else if(!a)u.right!==void 0&&this._setRoot(u.right);else{var f=u.familyPosition;f==="LEFT"||f==="ROOT_LEFT"?a.left=u.right:(f==="RIGHT"||f==="ROOT_RIGHT")&&(a.right=u.right),s=a}this._size=this.size-1,o&&(this._count-=o.count)}return i.push({deleted:o,needBalanced:s}),s&&this._balancePath(s),i}},{key:"clear",value:function t(){h(l(r.prototype),"clear",this).call(this),this._count=0}},{key:"_addTo",value:function t(t,e){if(e=this.ensureNotKey(e),e)return e.left===void 0?(e.left=t,t!==void 0&&(this._size=this.size+1,this._count+=t.count),e.left):e.right===void 0?(e.right=t,t!==void 0&&(this._size=this.size+1,this._count+=t.count),e.right):void 0}},{key:"_swap",value:function t(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){var r=e.key,i=e.value,n=e.count,u=e.height,a=this.createNode(r,i,n);return a&&(a.height=u,e.key=t.key,e.value=t.value,e.count=t.count,e.height=t.height,t.key=a.key,t.value=a.value,t.count=a.count,t.height=a.height),e}}}]);return r}(tI);var tV=/*#__PURE__*/function(){function t(e,r,i){a(this,t);g(this,"key");g(this,"value");g(this,"children");this.key=e,this.value=r||void 0,this.children=i||[]}o(t,[{key:"addChildren",value:function e(e){this.children||(this.children=[]),c(e,t)?this.children.push(e):this.children=this.children.concat(e)}},{key:"getHeight",value:function t(){var t=0;if(this){var e=function(r,i){i>t&&(t=i);var n=r.children;if(n)for(var u=0,a=n.length;u<a;u++)e(n[u],i+1)};e(this,0)}return t}}]);return t}();var tC=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_matrix");var r=e.row,i=e.col,n=e.initialVal;this._matrix=new Array(r).fill(void 0).map(function(){return new Array(i).fill(n||0)})}o(t,[{key:"toArray",value:function t(){return this._matrix}}]);return t}();var tF=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;a(this,t);this.x=e;this.y=r;this.w=i}o(t,[{key:"isZero",get:function t(){return this.x===0&&this.y===0}},{key:"length",get:function t(){return Math.sqrt(this.x*this.x+this.y*this.y)}},{key:"lengthSq",get:function t(){return this.x*this.x+this.y*this.y}},{key:"rounded",get:function e(){return new t(Math.round(this.x),Math.round(this.y))}},{key:"zero",value:function t(){this.x=0,this.y=0}}],[{key:"add",value:function e(e,r){return new t(e.x+r.x,e.y+r.y)}},{key:"subtract",value:function e(e,r){return new t(e.x-r.x,e.y-r.y)}},{key:"subtractValue",value:function e(e,r){return new t(e.x-r,e.y-r)}},{key:"multiply",value:function e(e,r){return new t(e.x*r,e.y*r)}},{key:"divide",value:function e(e,r){return new t(e.x/r,e.y/r)}},{key:"equals",value:function t(t,e){return t.x===e.x&&t.y===e.y}},{key:"equalsRounded",value:function e(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:12;var n=t.abs(t.subtract(e,r));return n.x<i&&n.y<i}},{key:"normalize",value:function e(e){var r=e.length;return r>2220446049250313e-31?t.divide(e,r):e}},{key:"truncate",value:function e(e,r){return e.length>r?t.multiply(t.normalize(e),r):e}},{key:"perp",value:function e(e){return new t(-e.y,e.x)}},{key:"reverse",value:function e(e){return new t(-e.x,-e.y)}},{key:"abs",value:function e(e){return new t(Math.abs(e.x),Math.abs(e.y))}},{key:"dot",value:function t(t,e){return t.x*e.x+t.y*e.y}},{key:"distance",value:function t(t,e){var r=e.y-t.y,i=e.x-t.x;return Math.sqrt(r*r+i*i)}},{key:"distanceSq",value:function t(t,e){var r=e.y-t.y,i=e.x-t.x;return r*r+i*i}},{key:"sign",value:function t(t,e){return t.y*e.x>t.x*e.y?-1:1}},{key:"angle",value:function e(e){var r=new t(0,-1),i=Math.acos(t.dot(e,r)/(e.length*r.length));return t.sign(e,r)===1?Math.PI*2-i:i}},{key:"random",value:function e(e,r){var i=Math.floor(Math.random()*e-e/2),n=Math.floor(Math.random()*r-r/2);return new t(i,n)}}]);return t}();var tB=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_matrix");(typeof e==="undefined"?"undefined":x(e))>"u"?this._matrix=t.identity:c(e,tF)?(this._matrix=t.identity,this._matrix[0][0]=e.x,this._matrix[1][0]=e.y,this._matrix[2][0]=e.w):this._matrix=e}o(t,[{key:"m",get:function t(){return this._matrix}},{key:"toVector",value:function t(){return new tF(this._matrix[0][0],this._matrix[1][0])}}],[{key:"empty",get:function t(){return[[],[],[]]}},{key:"identity",get:function t(){return[[1,0,0],[0,1,0],[0,0,1]]}},{key:"add",value:function e(e,r){var i=t.empty;for(var n=0;n<3;n++)for(var u=0;u<3;u++)i[n][u]=e.m[n][u]+r.m[n][u];return new t(i)}},{key:"subtract",value:function e(e,r){var i=t.empty;for(var n=0;n<3;n++)for(var u=0;u<3;u++)i[n][u]=e.m[n][u]-r.m[n][u];return new t(i)}},{key:"multiply",value:function e(e,r){var i=t.empty;for(var n=0;n<3;n++)for(var u=0;u<3;u++){i[n][u]=0;for(var a=0;a<3;a++)i[n][u]+=e.m[n][a]*r.m[a][u]}return new t(i)}},{key:"multiplyByValue",value:function e(e,r){var i=t.empty;for(var n=0;n<3;n++)for(var u=0;u<3;u++)i[n][u]=e.m[n][u]*r;return new t(i)}},{key:"multiplyByVector",value:function e(e,r){return t.multiply(e,new t(r)).toVector()}},{key:"view",value:function e(e,r){var i=e/2,n=r/2,u=Math.cos(Math.PI);return new t([[1,0,i],[0,u*1,n],[0,0,1]])}},{key:"scale",value:function e(e){return t.multiplyByValue(new t,e)}},{key:"rotate",value:function e(e){var r=Math.cos(e),i=Math.sin(e);return new t([[r,-i,0],[i,r,0],[0,0,1]])}},{key:"translate",value:function e(e){return new t([[1,0,e.x],[0,1,e.y],[0,0,e.w]])}}]);return t}();var tP=function t(e,r){a(this,t);g(this,"direction");g(this,"turn");this.direction=e,this.turn=function(){return new t(r[e],r)}},tD=/*#__PURE__*/function(){function t(e){var r=e.matrix,i=e.turning,n=e.onMove,u=e.init,s=u.cur,o=u.charDir,h=u.VISITED;a(this,t);g(this,"onMove");g(this,"_matrix");g(this,"_cur");g(this,"_character");g(this,"_VISITED");this._matrix=r,this._cur=s,this._character=new tP(o,i),this.onMove=n,this.onMove&&this.onMove(this._cur),this._VISITED=h,this._matrix[this._cur[0]][this._cur[1]]=this._VISITED}o(t,[{key:"start",value:function t(){for(;this.check(this._character.direction)||this.check(this._character.turn().direction);){var t=this._character,e=t.direction;this.check(e)?this.move(e):this.check(this._character.turn().direction)&&(this._character=this._character.turn())}}},{key:"check",value:function t(t){var e,r,i=this._matrix,n=k(this._cur,2),u=n[0],a=n[1];switch(t){case"up":if(r=i[u-1],!r)return!1;e=r[a];break;case"right":e=i[u][a+1];break;case"down":if(r=i[u+1],!r)return!1;e=r[a];break;case"left":e=i[u][a-1];break}return e!==void 0&&e!==this._VISITED}},{key:"move",value:function t(t){switch(t){case"up":this._cur[0]--;break;case"right":this._cur[1]++;break;case"down":this._cur[0]++;break;case"left":this._cur[1]--;break}var e=k(this._cur,2),r=e[0],i=e[1];this._matrix[r][i]=this._VISITED,this.onMove&&this.onMove(this._cur)}}]);return t}();var tH=function t(e){a(this,t);g(this,"key");g(this,"children");g(this,"isEnd");this.key=e,this.isEnd=!1,this.children=new Map},tj=/*#__PURE__*/function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;a(this,t);g(this,"_caseSensitive");g(this,"_root");var i=true,n=false,u=undefined;if(this._root=new tH(""),this._caseSensitive=r,e)try{for(var s=e[Symbol.iterator](),o;!(i=(o=s.next()).done);i=true){var h=o.value;this.add(h)}}catch(t){n=true;u=t}finally{try{if(!i&&s.return!=null){s.return()}}finally{if(n){throw u}}}}o(t,[{key:"caseSensitive",get:function t(){return this._caseSensitive}},{key:"root",get:function t(){return this._root}},{key:"add",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,i=false,n=undefined;try{for(var u=t[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=a.value;var o=e.children.get(s);o||(o=new tH(s),e.children.set(s,o)),e=o}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}return e.isEnd=!0,!0}},{key:"has",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,i=false,n=undefined;try{for(var u=t[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=a.value;var o=e.children.get(s);if(!o)return!1;e=o}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}return e.isEnd}},{key:"delete",value:function t(t){t=this._caseProcess(t);var e=!1,r=function(i,n){var u=t[n],a=i.children.get(u);return a?n===t.length-1?a.isEnd?(a.children.size>0?a.isEnd=!1:i.children.delete(u),e=!0,!0):!1:r(a,n+1)&&!i.isEnd&&a.children.size===0?(i.children.delete(u),!0):!1:!1};return r(this.root,0),e}},{key:"getHeight",value:function t(){var t=this.root,e=0;if(t){var r=function(t,i){i>e&&(e=i);var n=t.children;var u=true,a=false,s=undefined;if(n)try{for(var o=n.entries()[Symbol.iterator](),h;!(u=(h=o.next()).done);u=true){var l=h.value;r(l[1],i+1)}}catch(t){a=true;s=t}finally{try{if(!u&&o.return!=null){o.return()}}finally{if(a){throw s}}}};r(t,0)}return e}},{key:"hasPurePrefix",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,i=false,n=undefined;try{for(var u=t[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=a.value;var o=e.children.get(s);if(!o)return!1;e=o}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}return!e.isEnd}},{key:"hasPrefix",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,i=false,n=undefined;try{for(var u=t[Symbol.iterator](),a;!(r=(a=u.next()).done);r=true){var s=a.value;var o=e.children.get(s);if(!o)return!1;e=o}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}return!0}},{key:"hasCommonPrefix",value:function t(t){t=this._caseProcess(t);var e="",r=function(i){if(e+=i.key,e!==t&&!i.isEnd)if(i&&i.children&&i.children.size===1)r(Array.from(i.children.values())[0]);else return};return r(this.root),e===t}},{key:"getLongestCommonPrefix",value:function t(){var t="",e=function(r){if(t+=r.key,!r.isEnd)if(r&&r.children&&r.children.size===1)e(Array.from(r.children.values())[0]);else return};return e(this.root),t}},{key:"getWords",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_SAFE_INTEGER,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;t=this._caseProcess(t);var i=[],n=0;function u(t,r){var a=true,s=false,o=undefined;try{for(var h=t.children.keys()[Symbol.iterator](),l;!(a=(l=h.next()).done);a=true){var f=l.value;var c=t.children.get(f);c!==void 0&&u(c,r.concat(f))}}catch(t){s=true;o=t}finally{try{if(!a&&h.return!=null){h.return()}}finally{if(s){throw o}}}if(t.isEnd){if(n>e-1)return;i.push(r),n++}}var a=this.root;var s=true,o=false,h=undefined;if(t)try{for(var l=t[Symbol.iterator](),f;!(s=(f=l.next()).done);s=true){var c=f.value;var v=a.children.get(c);v&&(a=v)}}catch(t){o=true;h=t}finally{try{if(!s&&l.return!=null){l.return()}}finally{if(o){throw h}}}return(r||a!==this.root)&&u(a,t),i}},{key:"_caseProcess",value:function t(t){return this._caseSensitive||(t=t.toLowerCase()),t}}]);return t}();return y(_)}();/**
|
|
1
|
+
"use strict";var dataStructureTyped=(()=>{var re=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var ce=(u,t)=>{if(t=Symbol[u])return t;throw Error("Symbol."+u+" is not defined")};var Je=(u,t,e)=>t in u?re(u,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):u[t]=e;var Ze=(u,t)=>{for(var e in t)re(u,e,{get:t[e],enumerable:!0})},$e=(u,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Xe(t))!Ye.call(u,i)&&i!==e&&re(u,i,{get:()=>t[i],enumerable:!(r=Qe(t,i))||r.enumerable});return u};var et=u=>$e(re({},"__esModule",{value:!0}),u);var a=(u,t,e)=>(Je(u,typeof t!="symbol"?t+"":t,e),e);var Ge=(u,t,e)=>new Promise((r,i)=>{var n=l=>{try{o(e.next(l))}catch(h){i(h)}},s=l=>{try{o(e.throw(l))}catch(h){i(h)}},o=l=>l.done?r(l.value):Promise.resolve(l.value).then(n,s);o((e=e.apply(u,t)).next())}),tt=function(u,t){this[0]=u,this[1]=t};var pe=u=>{var t=u[ce("asyncIterator")],e=!1,r,i={};return t==null?(t=u[ce("iterator")](),r=n=>i[n]=s=>t[n](s)):(t=t.call(u),r=n=>i[n]=s=>{if(e){if(e=!1,n==="throw")throw s;return s}return e=!0,{done:!1,value:new tt(new Promise(o=>{var l=t[n](s);if(!(l instanceof Object))throw TypeError("Object expected");o(l)}),1)}}),i[ce("iterator")]=()=>i,r("next"),"throw"in t?r("throw"):i.throw=n=>{throw n},"return"in t&&r("return"),i};var nt={};Ze(nt,{AVLTree:()=>ee,AVLTreeNode:()=>H,AbstractEdge:()=>S,AbstractGraph:()=>D,AbstractVertex:()=>k,BST:()=>F,BSTNode:()=>v,BinaryIndexedTree:()=>Se,BinaryTree:()=>$,BinaryTreeNode:()=>B,CP:()=>fe,Character:()=>de,Deque:()=>Be,DirectedEdge:()=>P,DirectedGraph:()=>J,DirectedVertex:()=>A,DoublyLinkedList:()=>Ee,DoublyLinkedListNode:()=>K,FamilyPosition:()=>ae,FibonacciHeap:()=>Oe,FibonacciHeapNode:()=>se,HashMap:()=>Te,HashTable:()=>ge,HashTableNode:()=>W,Heap:()=>L,IterateDirection:()=>We,IterationType:()=>Z,LinkedListQueue:()=>ke,MapEdge:()=>ue,MapGraph:()=>Le,MapVertex:()=>he,Matrix2D:()=>Pe,MatrixNTI2D:()=>He,MaxHeap:()=>Ke,MaxPriorityQueue:()=>Re,MinHeap:()=>ve,MinPriorityQueue:()=>we,Navigator:()=>qe,ObjectDeque:()=>Ce,PriorityQueue:()=>I,Queue:()=>C,RBTNColor:()=>Ie,RedBlackTree:()=>De,RedBlackTreeNode:()=>U,SegmentTree:()=>ze,SegmentTreeNode:()=>q,SinglyLinkedList:()=>X,SinglyLinkedListNode:()=>O,SkipList:()=>xe,SkipListNode:()=>Y,Stack:()=>Ve,THUNK_SYMBOL:()=>Ne,TreeMultimap:()=>Ae,TreeMultimapNode:()=>j,TreeNode:()=>Fe,Trie:()=>Ue,TrieNode:()=>te,UndirectedEdge:()=>le,UndirectedGraph:()=>Me,UndirectedVertex:()=>oe,Vector2D:()=>G,arrayRemove:()=>R,calcMinUnitsRequired:()=>ne,getMSB:()=>be,isThunk:()=>ye,isWeakKey:()=>Q,rangeCheck:()=>M,throwRangeError:()=>it,toThunk:()=>_e,trampoline:()=>ie,trampolineAsync:()=>rt,uuidV4:()=>me});var W=class{constructor(t,e){a(this,"key");a(this,"value");a(this,"next");this.key=t,this.value=e,this.next=null}},z=class z{constructor(t=z.DEFAULT_CAPACITY,e){a(this,"_capacity");a(this,"_size");a(this,"_buckets");a(this,"_hashFn");this._hashFn=e||this._defaultHashFn,this._capacity=Math.max(t,z.DEFAULT_CAPACITY),this._size=0,this._buckets=new Array(this._capacity).fill(null)}get capacity(){return this._capacity}get size(){return this._size}get buckets(){return this._buckets}get hashFn(){return this._hashFn}set(t,e){let r=this._hash(t),i=new W(t,e);if(!this._buckets[r])this._buckets[r]=i;else{let n=this._buckets[r];for(;n;){if(n.key===t){n.value=e;return}if(!n.next)break;n=n.next}n.next=i}this._size++,this._size/this._capacity>=z.LOAD_FACTOR&&this._expand()}get(t){let e=this._hash(t),r=this._buckets[e];for(;r;){if(r.key===t)return r.value;r=r.next}}delete(t){let e=this._hash(t),r=this._buckets[e],i=null;for(;r;){if(r.key===t){i?i.next=r.next:this._buckets[e]=r.next,this._size--,r.next=null;return}i=r,r=r.next}}_defaultHashFn(t){return(typeof t=="string"?this._murmurStringHashFn(t):this._objectHash(t))%this._capacity}_multiplicativeStringHashFn(t){let e=String(t),r=0;for(let i=0;i<e.length;i++){let n=e.charCodeAt(i),s=.618033988749895,o=1<<30;r=(r*s+n)%o}return Math.abs(r)}_murmurStringHashFn(t){let e=String(t),i=0;for(let n=0;n<e.length;n++){let s=e.charCodeAt(n);i=(i^s)*1540483477,i=(i^i>>>15)*668265261,i=i^i>>>15}return Math.abs(i)}_hash(t){return this.hashFn(t)}_stringHash(t){let e=0;for(let r=0;r<t.length;r++)e=e*31+t.charCodeAt(r)&4294967295;return e}_objectHash(t){return this._stringHash(JSON.stringify(t))}_expand(){let t=this._capacity*2,e=new Array(t).fill(null);for(let r of this._buckets){let i=r;for(;i;){let n=this._hash(i.key),s=new W(i.key,i.value);if(!e[n])e[n]=s;else{let o=e[n];for(;o.next;)o=o.next;o.next=s}i=i.next}}this._buckets=e,this._capacity=t}};a(z,"DEFAULT_CAPACITY",16),a(z,"LOAD_FACTOR",.75);var ge=z;var me=function(){return"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g,function(u){let t=Math.random()*16|0;return(u=="x"?t:t&3|8).toString(16)})},R=function(u,t){let e=-1,r=u?u.length:0,i=[];for(;++e<r;){let n=u[e];t(n,e,u)&&(i.push(n),Array.prototype.splice.call(u,e--,1),r--)}return i},Ne=Symbol("thunk"),ye=u=>typeof u=="function"&&u.__THUNK__===Ne,_e=u=>{let t=()=>u();return t.__THUNK__=Ne,t},ie=u=>Object.assign((...e)=>{let r=u(...e);for(;ye(r)&&typeof r=="function";)r=r();return r},{cont:(...e)=>_e(()=>u(...e))}),rt=u=>Object.assign((...e)=>Ge(void 0,null,function*(){let r=yield u(...e);for(;ye(r)&&typeof r=="function";)r=yield r();return r}),{cont:(...e)=>_e(()=>u(...e))}),be=u=>u<=0?0:1<<31-Math.clz32(u),M=(u,t,e,r="Index out of bounds.")=>{if(u<t||u>e)throw new RangeError(r)},it=(u="The value is off-limits.")=>{throw new RangeError(u)},Q=u=>{let t=typeof u;return t==="object"&&u!==null||t==="function"},ne=(u,t)=>Math.floor((u+t-1)/t);var Te=class u{constructor(t={elements:[],hashFn:e=>String(e),objHashFn:e=>e}){a(this,"_noObjMap",{});a(this,"_objMap",new WeakMap);a(this,"_head");a(this,"_tail");a(this,"_sentinel");a(this,"_hashFn");a(this,"_objHashFn");a(this,"_size",0);this._sentinel={},this._sentinel.prev=this._sentinel.next=this._head=this._tail=this._sentinel;let{elements:e,hashFn:r,objHashFn:i}=t;if(this._hashFn=r,this._objHashFn=i,e)for(let n of e)this.set(n[0],n[1])}get size(){return this._size}get first(){if(this._size!==0)return[this._head.key,this._head.value]}get last(){if(this._size!==0)return[this._tail.key,this._tail.value]}*begin(){let t=this._head;for(;t!==this._sentinel;)yield[t.key,t.value],t=t.next}*reverseBegin(){let t=this._tail;for(;t!==this._sentinel;)yield[t.key,t.value],t=t.prev}set(t,e){let r;if(Q(t)){let i=this._objHashFn(t);r=this._objMap.get(i),r?r.value=e:(r={key:i,value:e,prev:this._tail,next:this._sentinel},this._objMap.set(i,r))}else{let i=this._hashFn(t);r=this._noObjMap[i],r?r.value=e:this._noObjMap[i]=r={key:t,value:e,prev:this._tail,next:this._sentinel}}return this._size===0?(this._head=r,this._sentinel.next=r):this._tail.next=r,this._tail=r,this._sentinel.prev=r,this._size++,this._size}get(t){if(Q(t)){let e=this._objHashFn(t),r=this._objMap.get(e);return r?r.value:void 0}else{let e=this._hashFn(t),r=this._noObjMap[e];return r?r.value:void 0}}getAt(t){M(t,0,this._size-1);let e=this._head;for(;t--;)e=e.next;return[e.key,e.value]}delete(t){let e;if(Q(t)){let r=this._objHashFn(t);if(e=this._objMap.get(r),!e)return!1;this._objMap.delete(r)}else{let r=this._hashFn(t);if(e=this._noObjMap[r],!e)return!1;delete this._noObjMap[r]}return this._deleteNode(e),!0}deleteAt(t){M(t,0,this._size-1);let e=this._head;for(;t--;)e=e.next;return this._deleteNode(e),this._size}isEmpty(){return this._size===0}clear(){this._noObjMap={},this._size=0,this._head=this._tail=this._sentinel.prev=this._sentinel.next=this._sentinel}forEach(t){let e=0,r=this._head;for(;r!==this._sentinel;)t([r.key,r.value],e++,this),r=r.next}filter(t){let e=new u;for(let[r,i]of this)t([r,i],this)&&e.set(r,i);return e}map(t){let e=new u;for(let[r,i]of this){let n=t([r,i],this);e.set(r,n)}return e}reduce(t,e){let r=e;for(let i of this)r=t(r,i,this);return r}*[Symbol.iterator](){let t=this._head;for(;t!==this._sentinel;)yield[t.key,t.value],t=t.next}_deleteNode(t){let{prev:e,next:r}=t;e.next=r,r.prev=e,t===this._head&&(this._head=r),t===this._tail&&(this._tail=e),this._size-=1}};var O=class{constructor(t){a(this,"value");a(this,"next");this.value=t,this.next=null}},X=class u{constructor(){a(this,"_head");a(this,"_tail");a(this,"_length");this._head=null,this._tail=null,this._length=0}get head(){return this._head}get tail(){return this._tail}get length(){return this._length}static fromArray(t){let e=new u;for(let r of t)e.push(r);return e}push(t){let e=new O(t);this.head?(this.tail.next=e,this._tail=e):(this._head=e,this._tail=e),this._length++}addLast(t){this.push(t)}pop(){if(!this.head)return;if(this.head===this.tail){let r=this.head.value;return this._head=null,this._tail=null,this._length--,r}let t=this.head;for(;t.next!==this.tail;)t=t.next;let e=this.tail.value;return t.next=null,this._tail=t,this._length--,e}popLast(){return this.pop()}shift(){if(!this.head)return;let t=this.head;return this._head=this.head.next,this._length--,t.value}popFirst(){return this.shift()}unshift(t){let e=new O(t);this.head?(e.next=this.head,this._head=e):(this._head=e,this._tail=e),this._length++}addFirst(t){this.unshift(t)}getAt(t){if(t<0||t>=this.length)return;let e=this.head;for(let r=0;r<t;r++)e=e.next;return e.value}getNodeAt(t){let e=this.head;for(let r=0;r<t;r++)e=e.next;return e}deleteAt(t){if(t<0||t>=this.length)return;if(t===0)return this.shift();if(t===this.length-1)return this.pop();let e=this.getNodeAt(t-1),r=e.next;return e.next=r.next,this._length--,r.value}delete(t){if(!t)return!1;let e;t instanceof O?e=t.value:e=t;let r=this.head,i=null;for(;r;){if(r.value===e)return i===null?(this._head=r.next,r===this.tail&&(this._tail=null)):(i.next=r.next,r===this.tail&&(this._tail=i)),this._length--,!0;i=r,r=r.next}return!1}insertAt(t,e){if(t<0||t>this.length)return!1;if(t===0)return this.unshift(e),!0;if(t===this.length)return this.push(e),!0;let r=new O(e),i=this.getNodeAt(t-1);return r.next=i.next,i.next=r,this._length++,!0}isEmpty(){return this.length===0}clear(){this._head=null,this._tail=null,this._length=0}toArray(){let t=[],e=this.head;for(;e;)t.push(e.value),e=e.next;return t}reverse(){if(!this.head||this.head===this.tail)return;let t=null,e=this.head,r=null;for(;e;)r=e.next,e.next=t,t=e,e=r;[this._head,this._tail]=[this.tail,this.head]}find(t){let e=this.head;for(;e;){if(t(e.value))return e.value;e=e.next}return null}indexOf(t){let e=0,r=this.head;for(;r;){if(r.value===t)return e;e++,r=r.next}return-1}getNode(t){let e=this.head;for(;e;){if(e.value===t)return e;e=e.next}return null}insertBefore(t,e){if(!this.head)return!1;let r;if(t instanceof O?r=t.value:r=t,this.head.value===r)return this.unshift(e),!0;let i=this.head;for(;i.next;){if(i.next.value===r){let n=new O(e);return n.next=i.next,i.next=n,this._length++,!0}i=i.next}return!1}insertAfter(t,e){let r;if(t instanceof O?r=t:r=this.getNode(t),r){let i=new O(e);return i.next=r.next,r.next=i,r===this.tail&&(this._tail=i),this._length++,!0}return!1}countOccurrences(t){let e=0,r=this.head;for(;r;)r.value===t&&e++,r=r.next;return e}forEach(t){let e=this.head,r=0;for(;e;)t(e.value,r),e=e.next,r++}map(t){let e=new u,r=this.head;for(;r;)e.push(t(r.value)),r=r.next;return e}filter(t){let e=new u,r=this.head;for(;r;)t(r.value)&&e.push(r.value),r=r.next;return e}reduce(t,e){let r=e,i=this.head;for(;i;)r=t(r,i.value),i=i.next;return r}*[Symbol.iterator](){let t=this.head;for(;t;)yield t.value,t=t.next}};var K=class{constructor(t){a(this,"value");a(this,"next");a(this,"prev");this.value=t,this.next=null,this.prev=null}},Ee=class u{constructor(){a(this,"_head");a(this,"_tail");a(this,"_length");this._head=null,this._tail=null,this._length=0}get head(){return this._head}get tail(){return this._tail}get length(){return this._length}get size(){return this.length}static fromArray(t){let e=new u;for(let r of t)e.push(r);return e}push(t){let e=new K(t);this.head?(e.prev=this.tail,this.tail.next=e,this._tail=e):(this._head=e,this._tail=e),this._length++}addLast(t){this.push(t)}pop(){if(!this.tail)return;let t=this.tail;return this.head===this.tail?(this._head=null,this._tail=null):(this._tail=t.prev,this.tail.next=null),this._length--,t.value}popLast(){return this.pop()}shift(){if(!this.head)return;let t=this.head;return this.head===this.tail?(this._head=null,this._tail=null):(this._head=t.next,this.head.prev=null),this._length--,t.value}popFirst(){return this.shift()}unshift(t){let e=new K(t);this.head?(e.next=this.head,this.head.prev=e,this._head=e):(this._head=e,this._tail=e),this._length++}addFirst(t){this.unshift(t)}getFirst(){var t;return(t=this.head)==null?void 0:t.value}getLast(){var t;return(t=this.tail)==null?void 0:t.value}getAt(t){if(t<0||t>=this.length)return;let e=this.head;for(let r=0;r<t;r++)e=e.next;return e.value}getNodeAt(t){if(t<0||t>=this.length)return null;let e=this.head;for(let r=0;r<t;r++)e=e.next;return e}getNode(t){let e=this.head;for(;e;){if(e.value===t)return e;e=e.next}return null}insertAt(t,e){if(t<0||t>this.length)return!1;if(t===0)return this.unshift(e),!0;if(t===this.length)return this.push(e),!0;let r=new K(e),i=this.getNodeAt(t-1),n=i.next;return r.prev=i,r.next=n,i.next=r,n.prev=r,this._length++,!0}insertBefore(t,e){let r;if(t instanceof K?r=t:r=this.getNode(t),r){let i=new K(e);return i.prev=r.prev,r.prev&&(r.prev.next=i),i.next=r,r.prev=i,r===this.head&&(this._head=i),this._length++,!0}return!1}deleteAt(t){if(t<0||t>=this.length)return;if(t===0)return this.shift();if(t===this.length-1)return this.pop();let e=this.getNodeAt(t),r=e.prev,i=e.next;return r.next=i,i.prev=r,this._length--,e.value}delete(t){let e;if(t instanceof K?e=t:e=this.getNode(t),e){if(e===this.head)this.shift();else if(e===this.tail)this.pop();else{let r=e.prev,i=e.next;r.next=i,i.prev=r,this._length--}return!0}return!1}toArray(){let t=[],e=this.head;for(;e;)t.push(e.value),e=e.next;return t}isEmpty(){return this.length===0}clear(){this._head=null,this._tail=null,this._length=0}find(t){let e=this.head;for(;e;){if(t(e.value))return e.value;e=e.next}return null}indexOf(t){let e=0,r=this.head;for(;r;){if(r.value===t)return e;e++,r=r.next}return-1}findBackward(t){let e=this.tail;for(;e;){if(t(e.value))return e.value;e=e.prev}return null}toArrayBackward(){let t=[],e=this.tail;for(;e;)t.push(e.value),e=e.prev;return t}reverse(){let t=this.head;for([this._head,this._tail]=[this.tail,this.head];t;){let e=t.next;[t.prev,t.next]=[t.next,t.prev],t=e}}forEach(t){let e=this.head,r=0;for(;e;)t(e.value,r),e=e.next,r++}map(t){let e=new u,r=this.head;for(;r;)e.push(t(r.value)),r=r.next;return e}filter(t){let e=new u,r=this.head;for(;r;)t(r.value)&&e.push(r.value),r=r.next;return e}reduce(t,e){let r=e,i=this.head;for(;i;)r=t(r,i.value),i=i.next;return r}insertAfter(t,e){let r;if(t instanceof K?r=t:r=this.getNode(t),r){let i=new K(e);return i.next=r.next,r.next&&(r.next.prev=i),i.prev=r,r.next=i,r===this.tail&&(this._tail=i),this._length++,!0}return!1}*[Symbol.iterator](){let t=this.head;for(;t;)yield t.value,t=t.next}};var Y=class{constructor(t,e,r){a(this,"key");a(this,"value");a(this,"forward");this.key=t,this.value=e,this.forward=new Array(r)}},xe=class{constructor(t=16,e=.5){a(this,"_head");a(this,"_level");a(this,"_maxLevel");a(this,"_probability");this._head=new Y(null,null,t),this._level=0,this._maxLevel=t,this._probability=e}get head(){return this._head}get level(){return this._level}get maxLevel(){return this._maxLevel}get probability(){return this._probability}add(t,e){let r=new Y(t,e,this._randomLevel()),i=new Array(this.maxLevel).fill(this.head),n=this.head;for(let s=this.level-1;s>=0;s--){for(;n.forward[s]&&n.forward[s].key<t;)n=n.forward[s];i[s]=n}for(let s=0;s<r.forward.length;s++)r.forward[s]=i[s].forward[s],i[s].forward[s]=r;r.forward[0]!==null&&(this._level=Math.max(this.level,r.forward.length))}get(t){let e=this.head;for(let r=this.level-1;r>=0;r--)for(;e.forward[r]&&e.forward[r].key<t;)e=e.forward[r];if(e=e.forward[0],e&&e.key===t)return e.value}has(t){return this.get(t)!==void 0}delete(t){let e=new Array(this.maxLevel).fill(this.head),r=this.head;for(let i=this.level-1;i>=0;i--){for(;r.forward[i]&&r.forward[i].key<t;)r=r.forward[i];e[i]=r}if(r=r.forward[0],r&&r.key===t){for(let i=0;i<this.level&&e[i].forward[i]===r;i++)e[i].forward[i]=r.forward[i];for(;this.level>0&&this.head.forward[this.level-1]===null;)this._level--;return!0}return!1}getFirst(){let t=this.head.forward[0];return t?t.value:void 0}getLast(){let t=this.head;for(let e=this.level-1;e>=0;e--)for(;t.forward[e];)t=t.forward[e];return t.value}higher(t){let e=this.head;for(let i=this.level-1;i>=0;i--)for(;e.forward[i]&&e.forward[i].key<=t;)e=e.forward[i];let r=e.forward[0];return r?r.value:void 0}lower(t){let e=this.head,r=null;for(let i=this.level-1;i>=0;i--){for(;e.forward[i]&&e.forward[i].key<t;)e=e.forward[i];e.key<t&&(r=e)}return r?r.value:void 0}_randomLevel(){let t=1;for(;Math.random()<this.probability&&t<this.maxLevel;)t++;return t}};var Ve=class u{constructor(t){a(this,"_elements");this._elements=Array.isArray(t)?t:[]}get elements(){return this._elements}static fromArray(t){return new u(t)}isEmpty(){return this.elements.length===0}size(){return this.elements.length}peek(){return this.isEmpty()?null:this.elements[this.elements.length-1]}push(t){return this.elements.push(t),this}pop(){return this.isEmpty()?null:this.elements.pop()||null}toArray(){return this.elements.slice()}clear(){this._elements=[]}clone(){return new u(this.elements.slice())}};var ke=class extends X{enqueue(t){this.push(t)}dequeue(){return this.shift()}getFirst(){var t;return(t=this.head)==null?void 0:t.value}peek(){return this.getFirst()}},C=class u{constructor(t){a(this,"_nodes");a(this,"_offset");this._nodes=t||[],this._offset=0}get nodes(){return this._nodes}get offset(){return this._offset}get size(){return this.nodes.length-this.offset}static fromArray(t){return new u(t)}push(t){return this.nodes.push(t),this}shift(){if(this.size===0)return;let t=this.getFirst();return this._offset+=1,this.offset*2<this.nodes.length||(this._nodes=this.nodes.slice(this.offset),this._offset=0),t}getFirst(){return this.size>0?this.nodes[this.offset]:void 0}peek(){return this.getFirst()}getLast(){return this.size>0?this.nodes[this.nodes.length-1]:void 0}peekLast(){return this.getLast()}enqueue(t){this.push(t)}dequeue(){return this.shift()}getAt(t){return this.nodes[t]}isEmpty(){return this.size===0}toArray(){return this.nodes.slice(this.offset)}clear(){this._nodes=[],this._offset=0}clone(){return new u(this.nodes.slice(this.offset))}*[Symbol.iterator](){for(let t of this.nodes)yield t}};var Be=class u{constructor(t=[],e=4096){a(this,"_bucketFirst",0);a(this,"_firstInBucket",0);a(this,"_bucketLast",0);a(this,"_lastInBucket",0);a(this,"_bucketCount",0);a(this,"_bucketSize");a(this,"_buckets",[]);a(this,"_size",0);let r;"length"in t?t.length instanceof Function?r=t.length():r=t.length:t.size instanceof Function?r=t.size():r=t.size,this._bucketSize=e,this._bucketCount=ne(r,this._bucketSize)||1;for(let n=0;n<this._bucketCount;++n)this._buckets.push(new Array(this._bucketSize));let i=ne(r,this._bucketSize);this._bucketFirst=this._bucketLast=(this._bucketCount>>1)-(i>>1),this._firstInBucket=this._lastInBucket=this._bucketSize-r%this._bucketSize>>1;for(let n of t)this.push(n)}get buckets(){return this._buckets}get size(){return this._size}get first(){if(this.size!==0)return this._buckets[this._bucketFirst][this._firstInBucket]}get last(){if(this.size!==0)return this._buckets[this._bucketLast][this._lastInBucket]}isEmpty(){return this.size===0}addLast(t){this.push(t)}popLast(){return this.pop()}addFirst(t){this.unshift(t)}popFirst(){return this.shift()}clear(){this._buckets=[new Array(this._bucketSize)],this._bucketCount=1,this._bucketFirst=this._bucketLast=this._size=0,this._firstInBucket=this._lastInBucket=this._bucketSize>>1}*begin(){let t=0;for(;t<this.size;)yield this.getAt(t),t++}*reverseBegin(){let t=this.size-1;for(;t>=0;)yield this.getAt(t),t--}push(t){return this.size&&(this._lastInBucket<this._bucketSize-1?this._lastInBucket+=1:this._bucketLast<this._bucketCount-1?(this._bucketLast+=1,this._lastInBucket=0):(this._bucketLast=0,this._lastInBucket=0),this._bucketLast===this._bucketFirst&&this._lastInBucket===this._firstInBucket&&this._reallocate()),this._size+=1,this._buckets[this._bucketLast][this._lastInBucket]=t,this.size}pop(){if(this.size===0)return;let t=this._buckets[this._bucketLast][this._lastInBucket];return this.size!==1&&(this._lastInBucket>0?this._lastInBucket-=1:this._bucketLast>0?(this._bucketLast-=1,this._lastInBucket=this._bucketSize-1):(this._bucketLast=this._bucketCount-1,this._lastInBucket=this._bucketSize-1)),this._size-=1,t}unshift(t){return this.size&&(this._firstInBucket>0?this._firstInBucket-=1:this._bucketFirst>0?(this._bucketFirst-=1,this._firstInBucket=this._bucketSize-1):(this._bucketFirst=this._bucketCount-1,this._firstInBucket=this._bucketSize-1),this._bucketFirst===this._bucketLast&&this._firstInBucket===this._lastInBucket&&this._reallocate()),this._size+=1,this._buckets[this._bucketFirst][this._firstInBucket]=t,this.size}shift(){if(this.size===0)return;let t=this._buckets[this._bucketFirst][this._firstInBucket];return this.size!==1&&(this._firstInBucket<this._bucketSize-1?this._firstInBucket+=1:this._bucketFirst<this._bucketCount-1?(this._bucketFirst+=1,this._firstInBucket=0):(this._bucketFirst=0,this._firstInBucket=0)),this._size-=1,t}getAt(t){M(t,0,this.size-1);let{bucketIndex:e,indexInBucket:r}=this._getBucketAndPosition(t);return this._buckets[e][r]}setAt(t,e){M(t,0,this.size-1);let{bucketIndex:r,indexInBucket:i}=this._getBucketAndPosition(t);this._buckets[r][i]=e}insertAt(t,e,r=1){let i=this.size;if(M(t,0,i),t===0)for(;r--;)this.unshift(e);else if(t===this.size)for(;r--;)this.push(e);else{let n=[];for(let s=t;s<this.size;++s)n.push(this.getAt(s));this.cut(t-1);for(let s=0;s<r;++s)this.push(e);for(let s=0;s<n.length;++s)this.push(n[s])}return this.size}cut(t){if(t<0)return this.clear(),0;let{bucketIndex:e,indexInBucket:r}=this._getBucketAndPosition(t);return this._bucketLast=e,this._lastInBucket=r,this._size=t+1,this.size}deleteAt(t){if(M(t,0,this.size-1),t===0)this.shift();else if(t===this.size-1)this.pop();else{let e=this.size-1,{bucketIndex:r,indexInBucket:i}=this._getBucketAndPosition(t);for(let n=t;n<e;++n){let{bucketIndex:s,indexInBucket:o}=this._getBucketAndPosition(t+1);this._buckets[r][i]=this._buckets[s][o],r=s,i=o}this.pop()}return this.size}delete(t){let e=this.size;if(e===0)return 0;let r=0,i=0;for(;r<e;){let n=this.getAt(r);n!==t&&(this.setAt(i,n),i+=1),r+=1}return this.cut(i-1),this.size}reverse(){this._buckets.reverse().forEach(function(n){n.reverse()});let{_bucketFirst:t,_bucketLast:e,_firstInBucket:r,_lastInBucket:i}=this;return this._bucketFirst=this._bucketCount-e-1,this._bucketLast=this._bucketCount-t-1,this._firstInBucket=this._bucketSize-i-1,this._lastInBucket=this._bucketSize-r-1,this}unique(){if(this.size<=1)return this.size;let t=1,e=this.getAt(0);for(let r=1;r<this.size;++r){let i=this.getAt(r);i!==e&&(e=i,this.setAt(t++,i))}return this.cut(t-1),this.size}sort(t){let e=[];for(let r=0;r<this.size;++r)e.push(this.getAt(r));e.sort(t);for(let r=0;r<this.size;++r)this.setAt(r,e[r]);return this}shrinkToFit(){if(this.size===0)return;let t=[];if(this._bucketFirst!==this._bucketLast){if(this._bucketFirst<this._bucketLast)for(let e=this._bucketFirst;e<=this._bucketLast;++e)t.push(this._buckets[e]);else{for(let e=this._bucketFirst;e<this._bucketCount;++e)t.push(this._buckets[e]);for(let e=0;e<=this._bucketLast;++e)t.push(this._buckets[e])}this._bucketFirst=0,this._bucketLast=t.length-1,this._buckets=t}}forEach(t){for(let e=0;e<this.size;++e)t(this.getAt(e),e,this)}find(t){for(let e=0;e<this.size;++e){let r=this.getAt(e);if(t(r,e,this))return r}}toArray(){let t=[];for(let e=0;e<this.size;++e)t.push(this.getAt(e));return t}map(t){let e=new u([],this._bucketSize);for(let r=0;r<this.size;++r)e.push(t(this.getAt(r),r,this));return e}filter(t){let e=new u([],this._bucketSize);for(let r=0;r<this.size;++r){let i=this.getAt(r);t(i,r,this)&&e.push(i)}return e}reduce(t,e){let r=e;for(let i=0;i<this.size;++i)r=t(r,this.getAt(i),i,this);return r}indexOf(t){for(let e=0;e<this.size;++e)if(this.getAt(e)===t)return e;return-1}*[Symbol.iterator](){for(let t=0;t<this.size;++t)yield this.getAt(t)}_reallocate(t){let e=[],r=t||this._bucketCount>>1||1;for(let i=0;i<r;++i)e[i]=new Array(this._bucketSize);for(let i=this._bucketFirst;i<this._bucketCount;++i)e[e.length]=this._buckets[i];for(let i=0;i<this._bucketLast;++i)e[e.length]=this._buckets[i];e[e.length]=[...this._buckets[this._bucketLast]],this._bucketFirst=r,this._bucketLast=e.length-1;for(let i=0;i<r;++i)e[e.length]=new Array(this._bucketSize);this._buckets=e,this._bucketCount=e.length}_getBucketAndPosition(t){let e,r,i=this._firstInBucket+t;return e=this._bucketFirst+Math.floor(i/this._bucketSize),e>=this._bucketCount&&(e-=this._bucketCount),r=(i+1)%this._bucketSize-1,r<0&&(r=this._bucketSize-1),{bucketIndex:e,indexInBucket:r}}},Ce=class{constructor(t){a(this,"_nodes",{});a(this,"_capacity",Number.MAX_SAFE_INTEGER);a(this,"_first",-1);a(this,"_last",-1);a(this,"_size",0);t!==void 0&&(this._capacity=t)}get nodes(){return this._nodes}get capacity(){return this._capacity}get first(){return this._first}get last(){return this._last}get size(){return this._size}addFirst(t){if(this.size===0){let e=Math.floor(this.capacity/2);this._first=e,this._last=e}else this._first--;this.nodes[this.first]=t,this._size++}addLast(t){if(this.size===0){let e=Math.floor(this.capacity/2);this._first=e,this._last=e}else this._last++;this.nodes[this.last]=t,this._size++}popFirst(){if(!this.size)return;let t=this.getFirst();return delete this.nodes[this.first],this._first++,this._size--,t}getFirst(){if(this.size)return this.nodes[this.first]}popLast(){if(!this.size)return;let t=this.getLast();return delete this.nodes[this.last],this._last--,this._size--,t}getLast(){if(this.size)return this.nodes[this.last]}get(t){return this.nodes[this.first+t]||void 0}isEmpty(){return this.size<=0}};var L=class u{constructor(t){a(this,"_elements",[]);a(this,"_comparator");this._comparator=t.comparator,t.elements&&t.elements.length>0&&(this._elements=t.elements,this.fix())}get elements(){return this._elements}get comparator(){return this._comparator}get size(){return this.elements.length}get leaf(){var t;return(t=this.elements[this.size-1])!=null?t:void 0}static heapify(t){return new u(t)}add(t){return this.push(t)}push(t){return this._elements.push(t),this._bubbleUp(this.elements.length-1),this}poll(){if(this.elements.length===0)return;let t=this.elements[0],e=this.elements.pop();return this.elements.length&&(this.elements[0]=e,this._sinkDown(0,this.elements.length>>1)),t}pop(){return this.poll()}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(t){this._elements=t,this.fix()}has(t){return this.elements.includes(t)}delete(t){let e=this.elements.indexOf(t);return e<0?!1:(e===0?this.pop():e===this.elements.length-1?this.elements.pop():(this.elements.splice(e,1,this.elements.pop()),this._bubbleUp(e),this._sinkDown(e,this.elements.length>>1)),!0)}dfs(t){let e=[],r=i=>{i<this.size&&(t==="in"?(r(2*i+1),e.push(this.elements[i]),r(2*i+2)):t==="pre"?(e.push(this.elements[i]),r(2*i+1),r(2*i+2)):t==="post"&&(r(2*i+1),r(2*i+2),e.push(this.elements[i])))};return r(0),e}toArray(){return[...this.elements]}clone(){let t=new u({comparator:this.comparator});return t._elements=[...this.elements],t}sort(){let t=[],e=this.clone();for(;e.size!==0;){let r=e.poll();r&&t.push(r)}return t}fix(){for(let t=Math.floor(this.size/2);t>=0;t--)this._sinkDown(t,this.elements.length>>1)}_bubbleUp(t){let e=this.elements[t];for(;t>0;){let r=t-1>>1,i=this.elements[r];if(this._comparator(i,e)<=0)break;this.elements[t]=i,t=r}this.elements[t]=e}_sinkDown(t,e){let r=this.elements[t];for(;t<e;){let i=t<<1|1,n=i+1,s=this.elements[i];if(n<this.elements.length&&this._comparator(s,this.elements[n])>0&&(i=n,s=this.elements[n]),this._comparator(s,r)>=0)break;this.elements[t]=s,t=i}this.elements[t]=r}},se=class{constructor(t,e=0){a(this,"element");a(this,"degree");a(this,"left");a(this,"right");a(this,"child");a(this,"parent");a(this,"marked");this.element=t,this.degree=e,this.marked=!1}},Oe=class{constructor(t){a(this,"_root");a(this,"_size",0);a(this,"_min");a(this,"_comparator");if(this.clear(),this._comparator=t||this.defaultComparator,typeof this.comparator!="function")throw new Error("FibonacciHeap constructor: given comparator should be a function.")}get root(){return this._root}get size(){return this._size}get min(){return this._min}get comparator(){return this._comparator}clear(){this._root=void 0,this._min=void 0,this._size=0}add(t){return this.push(t)}push(t){let e=this.createNode(t);return e.left=e,e.right=e,this.mergeWithRoot(e),(!this.min||this.comparator(e.element,this.min.element)<=0)&&(this._min=e),this._size++,this}peek(){return this.min?this.min.element:void 0}consumeLinkedList(t){let e=[];if(!t)return e;let r=t,i=!1;for(;!(r===t&&i);)r===t&&(i=!0),r&&(e.push(r),r=r.right);return e}mergeWithChild(t,e){t.child?(e.right=t.child.right,e.left=t.child,t.child.right.left=e,t.child.right=e):t.child=e}poll(){return this.pop()}pop(){if(this.size===0)return;let t=this.min;if(t.child){let e=this.consumeLinkedList(t.child);for(let r of e)this.mergeWithRoot(r),r.parent=void 0}return this.removeFromRoot(t),t===t.right?(this._min=void 0,this._root=void 0):(this._min=t.right,this.consolidate()),this._size--,t.element}merge(t){if(t.size!==0){if(this.root&&t.root){let e=this.root,r=t.root,i=e.right,n=r.left;e.right=r,r.left=e,i.left=n,n.right=i}(!this.min||t.min&&this.comparator(t.min.element,this.min.element)<0)&&(this._min=t.min),this._size+=t.size,t.clear()}}defaultComparator(t,e){return t<e?-1:t>e?1:0}createNode(t){return new se(t)}mergeWithRoot(t){this.root?(t.right=this.root.right,t.left=this.root,this.root.right.left=t,this.root.right=t):this._root=t}removeFromRoot(t){this.root===t&&(this._root=t.right),t.left&&(t.left.right=t.right),t.right&&(t.right.left=t.left)}link(t,e){this.removeFromRoot(t),t.left=t,t.right=t,this.mergeWithChild(e,t),e.degree++,t.parent=e}consolidate(){let t=new Array(this.size),e=this.consumeLinkedList(this.root),r,i,n,s;for(let o of e){for(r=o,n=r.degree;t[n];)i=t[n],this.comparator(r.element,i.element)>0&&(s=r,r=i,i=s),this.link(i,r),t[n]=void 0,n++;t[n]=r}for(let o=0;o<this.size;o++)t[o]&&this.comparator(t[o].element,this.min.element)<=0&&(this._min=t[o])}};var Ke=class extends L{constructor(t={comparator:(e,r)=>{if(typeof e=="number"&&typeof r=="number")return r-e;throw new Error("The a, b params of compare function must be number")}}){super(t)}};var ve=class extends L{constructor(t={comparator:(e,r)=>{if(typeof e=="number"&&typeof r=="number")return e-r;throw new Error("The a, b params of compare function must be number")}}){super(t)}};var I=class extends L{constructor(t){super(t)}};var we=class extends I{constructor(t={comparator:(e,r)=>{if(typeof e=="number"&&typeof r=="number")return e-r;throw new Error("The a, b params of compare function must be number")}}){super(t)}};var Re=class extends I{constructor(t={comparator:(e,r)=>{if(typeof e=="number"&&typeof r=="number")return r-e;throw new Error("The a, b params of compare function must be number")}}){super(t)}};var k=class{constructor(t,e){a(this,"key");a(this,"value");this.key=t,this.value=e}},S=class{constructor(t,e){a(this,"value");a(this,"weight");a(this,"_hashCode");this.weight=t!==void 0?t:1,this.value=e,this._hashCode=me()}get hashCode(){return this._hashCode}},D=class{constructor(){a(this,"_vertices",new Map)}get vertices(){return this._vertices}getVertex(t){return this._vertices.get(t)||null}hasVertex(t){return this._vertices.has(this._getVertexKey(t))}addVertex(t,e){if(t instanceof k)return this._addVertexOnly(t);{let r=this.createVertex(t,e);return this._addVertexOnly(r)}}deleteVertex(t){let e=this._getVertexKey(t);return this._vertices.delete(e)}removeManyVertices(t){let e=[];for(let r of t)e.push(this.deleteVertex(r));return e.length>0}hasEdge(t,e){return!!this.getEdge(t,e)}addEdge(t,e,r,i){if(t instanceof S)return this._addEdgeOnly(t);if(e instanceof k||typeof e=="string"||typeof e=="number"){if(!(this.hasVertex(t)&&this.hasVertex(e)))return!1;t instanceof k&&(t=t.key),e instanceof k&&(e=e.key);let n=this.createEdge(t,e,r,i);return this._addEdgeOnly(n)}else throw new Error("dest must be a Vertex or vertex key while srcOrEdge is an Edge")}setEdgeWeight(t,e,r){let i=this.getEdge(t,e);return i?(i.weight=r,!0):!1}getAllPathsBetween(t,e,r=1e3){let i=[],n=this._getVertex(t),s=this._getVertex(e);if(!(n&&s))return[];let o=[];for(o.push({vertex:n,path:[n]});o.length>0;){let{vertex:l,path:h}=o.pop();if(l===s&&(i.push(h),i.length>=r))return i;let f=this.getNeighbors(l);for(let p of f)if(!h.includes(p)){let m=[...h,p];o.push({vertex:p,path:m})}}return i}getPathSumWeight(t){var r;let e=0;for(let i=0;i<t.length;i++)e+=((r=this.getEdge(t[i],t[i+1]))==null?void 0:r.weight)||0;return e}getMinCostBetween(t,e,r){if(r===void 0&&(r=!1),r){let i=this.getAllPathsBetween(t,e),n=1/0;for(let s of i)n=Math.min(this.getPathSumWeight(s),n);return n}else{let i=this._getVertex(e),n=this._getVertex(t);if(!(n&&i))return null;let s=new Map,o=new C([n]);s.set(n,!0);let l=0;for(;o.size>0;){for(let h=0;h<o.size;h++){let f=o.shift();if(f===i)return l;if(f!==void 0){let p=this.getNeighbors(f);for(let m of p)s.has(m)||(s.set(m,!0),o.push(m))}}l++}return null}}getMinPathBetween(t,e,r,i=!1){var n,s;if(r===void 0&&(r=!1),r)if(i){let o=this.getAllPathsBetween(t,e,1e4),l=1/0,h=-1,f=0;for(let p of o){let m=this.getPathSumWeight(p);m<l&&(l=m,h=f),f++}return o[h]||null}else return(s=(n=this.dijkstra(t,e,!0,!0))==null?void 0:n.minPath)!=null?s:[];else{let o=[],l=this._getVertex(t),h=this._getVertex(e);if(!(l&&h))return[];let f=(p,m,E,b)=>{if(E.add(p),p===m){o=[l,...b];return}let x=this.getNeighbors(p);for(let N of x)E.has(N)||(b.push(N),f(N,m,E,b),b.pop());E.delete(p)};return f(l,h,new Set,[]),o}}dijkstraWithoutHeap(t,e,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1),e===void 0&&(e=null);let n=1/0,s=null,o=[],l=[],h=this._vertices,f=new Map,p=new Set,m=new Map,E=this._getVertex(t),b=e?this._getVertex(e):null;if(!E)return null;for(let d of h){let c=d[1];c instanceof k&&f.set(c,1/0)}f.set(E,0),m.set(E,null);let x=()=>{let d=1/0,c=null;for(let[g,y]of f)p.has(g)||y<d&&(d=y,c=g);return c},N=d=>{for(let c of h){let g=c[1];if(g instanceof k){let y=[g],_=m.get(g);for(;_;)y.push(_),_=m.get(_);let T=y.reverse();c[1]===d&&(o=T),l.push(T)}}};for(let d=1;d<h.size;d++){let c=x();if(c){if(p.add(c),b&&b===c)return r&&(n=f.get(b)||1/0),i&&N(b),{distMap:f,preMap:m,seen:p,paths:l,minDist:n,minPath:o};let g=this.getNeighbors(c);for(let y of g)if(!p.has(y)){let _=this.getEdge(c,y);if(_){let T=f.get(c),V=f.get(y);T!==void 0&&V!==void 0&&_.weight+T<V&&(f.set(y,_.weight+T),m.set(y,c))}}}}return r&&f.forEach((d,c)=>{c!==E&&d<n&&(n=d,i&&(s=c))}),i&&N(s),{distMap:f,preMap:m,seen:p,paths:l,minDist:n,minPath:o}}dijkstra(t,e,r,i){var d;r===void 0&&(r=!1),i===void 0&&(i=!1),e===void 0&&(e=null);let n=1/0,s=null,o=[],l=[],h=this._vertices,f=new Map,p=new Set,m=new Map,E=this._getVertex(t),b=e?this._getVertex(e):null;if(!E)return null;for(let c of h){let g=c[1];g instanceof k&&f.set(g,1/0)}let x=new I({comparator:(c,g)=>c.key-g.key});x.add({key:0,value:E}),f.set(E,0),m.set(E,null);let N=c=>{for(let g of h){let y=g[1];if(y instanceof k){let _=[y],T=m.get(y);for(;T;)_.push(T),T=m.get(T);let V=_.reverse();g[1]===c&&(o=V),l.push(V)}}};for(;x.size>0;){let c=x.poll(),g=c==null?void 0:c.key,y=c==null?void 0:c.value;if(g!==void 0&&y){if(p.add(y),b&&b===y)return r&&(n=f.get(b)||1/0),i&&N(b),{distMap:f,preMap:m,seen:p,paths:l,minDist:n,minPath:o};let _=this.getNeighbors(y);for(let T of _)if(!p.has(T)){let V=(d=this.getEdge(y,T))==null?void 0:d.weight;if(typeof V=="number"){let w=f.get(T);w&&g+V<w&&(x.add({key:g+V,value:T}),m.set(T,y),f.set(T,g+V))}}}}return r&&f.forEach((c,g)=>{g!==E&&c<n&&(n=c,i&&(s=g))}),i&&N(s),{distMap:f,preMap:m,seen:p,paths:l,minDist:n,minPath:o}}bellmanFord(t,e,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1);let n=this._getVertex(t),s=[],o=new Map,l=new Map,h=1/0,f=[],p;if(e&&(p=!1),!n)return{hasNegativeCycle:p,distMap:o,preMap:l,paths:s,min:h,minPath:f};let m=this._vertices,E=m.size,b=this.edgeSet(),x=b.length;this._vertices.forEach(d=>{o.set(d,1/0)}),o.set(n,0);for(let d=1;d<E;++d)for(let c=0;c<x;++c){let g=this.getEndsOfEdge(b[c]);if(g){let[y,_]=g,T=b[c].weight,V=o.get(y),w=o.get(_);V!==void 0&&w!==void 0&&o.get(y)!==1/0&&V+T<w&&(o.set(_,V+T),i&&l.set(_,y))}}let N=null;if(r&&o.forEach((d,c)=>{c!==n&&d<h&&(h=d,i&&(N=c))}),i)for(let d of m){let c=d[1];if(c instanceof k){let g=[c],y=l.get(c);for(;y!==void 0;)g.push(y),y=l.get(y);let _=g.reverse();d[1]===N&&(f=_),s.push(_)}}for(let d=0;d<x;++d){let c=this.getEndsOfEdge(b[d]);if(c){let[g]=c,y=b[d].weight,_=o.get(g);_&&_!==1/0&&_+y<_&&(p=!0)}}return{hasNegativeCycle:p,distMap:o,preMap:l,paths:s,min:h,minPath:f}}floydWarshall(){var n;let t=[...this._vertices],e=t.length,r=[],i=[];for(let s=0;s<e;s++){r[s]=[],i[s]=[];for(let o=0;o<e;o++)i[s][o]=null}for(let s=0;s<e;s++)for(let o=0;o<e;o++)r[s][o]=((n=this.getEdge(t[s][1],t[o][1]))==null?void 0:n.weight)||1/0;for(let s=0;s<e;s++)for(let o=0;o<e;o++)for(let l=0;l<e;l++)r[o][l]>r[o][s]+r[s][l]&&(r[o][l]=r[o][s]+r[s][l],i[o][l]=t[s][1]);return{costs:r,predecessor:i}}tarjan(t=!1,e=!1,r=!0,i=!1){t===void 0&&(t=!1),e===void 0&&(e=!1),r===void 0&&(r=!1),i===void 0&&(i=!1);let s=new Map,o=new Map,l=this._vertices;l.forEach(d=>{s.set(d,-1),o.set(d,1/0)});let[h]=l.values(),f=[],p=[],m=0,E=(d,c)=>{m++,s.set(d,m),o.set(d,m);let g=this.getNeighbors(d),y=0;for(let _ of g)if(_!==c){s.get(_)===-1&&(y++,E(_,d));let T=o.get(_),V=o.get(d);V!==void 0&&T!==void 0&&o.set(d,Math.min(V,T));let w=s.get(d);if(T!==void 0&&w!==void 0&&(t&&(d===h&&y>=2||d!==h&&T>=w)&&f.push(d),e&&T>w)){let je=this.getEdge(d,_);je&&p.push(je)}}};E(h,null);let b=new Map,x=()=>{let d=new Map;return o.forEach((c,g)=>{var y;d.has(c)?(y=d.get(c))==null||y.push(g):d.set(c,[g])}),d};r&&(b=x());let N=new Map;if(i){let d=new Map;d.size<1&&(d=x()),d.forEach((c,g)=>{c.length>1&&N.set(g,c)})}return{dfnMap:s,lowMap:o,bridges:p,cutVertexes:f,SCCs:b,cycles:N}}getDFNMap(){return this.tarjan(!1,!1,!1,!1).dfnMap}getLowMap(){return this.tarjan(!1,!1,!1,!1).lowMap}getCycles(){return this.tarjan(!1,!1,!1,!0).cycles}getCutVertexes(){return this.tarjan(!0,!1,!1,!1).cutVertexes}getSCCs(){return this.tarjan(!1,!1,!0,!1).SCCs}getBridges(){return this.tarjan(!1,!0,!1,!1).bridges}_addVertexOnly(t){return this.hasVertex(t)?!1:(this._vertices.set(t.key,t),!0)}_getVertex(t){let e=this._getVertexKey(t);return this._vertices.get(e)||null}_getVertexKey(t){return t instanceof k?t.key:t}};var A=class extends k{constructor(t,e){super(t,e)}},P=class extends S{constructor(e,r,i,n){super(i,n);a(this,"src");a(this,"dest");this.src=e,this.dest=r}},J=class extends D{constructor(){super();a(this,"_outEdgeMap",new Map);a(this,"_inEdgeMap",new Map)}get outEdgeMap(){return this._outEdgeMap}get inEdgeMap(){return this._inEdgeMap}createVertex(e,r){return new A(e,r!=null?r:e)}createEdge(e,r,i,n){return new P(e,r,i!=null?i:1,n)}getEdge(e,r){let i=[];if(e!==null&&r!==null){let n=this._getVertex(e),s=this._getVertex(r);if(n&&s){let o=this._outEdgeMap.get(n);o&&(i=o.filter(l=>l.dest===s.key))}}return i[0]||null}deleteEdgeSrcToDest(e,r){let i=this._getVertex(e),n=this._getVertex(r),s=null;if(!i||!n)return null;let o=this._outEdgeMap.get(i);o&&R(o,h=>h.dest===n.key);let l=this._inEdgeMap.get(n);return l&&(s=R(l,h=>h.src===i.key)[0]||null),s}deleteEdge(e){let r=null,i=this._getVertex(e.src),n=this._getVertex(e.dest);if(i&&n){let s=this._outEdgeMap.get(i);s&&s.length>0&&R(s,l=>l.src===i.key);let o=this._inEdgeMap.get(n);o&&o.length>0&&(r=R(o,l=>l.dest===n.key)[0])}return r}deleteEdgesBetween(e,r){let i=[];if(e&&r){let n=this.deleteEdgeSrcToDest(e,r),s=this.deleteEdgeSrcToDest(r,e);n&&i.push(n),s&&i.push(s)}return i}incomingEdgesOf(e){let r=this._getVertex(e);return r?this.inEdgeMap.get(r)||[]:[]}outgoingEdgesOf(e){let r=this._getVertex(e);return r?this._outEdgeMap.get(r)||[]:[]}degreeOf(e){return this.outDegreeOf(e)+this.inDegreeOf(e)}inDegreeOf(e){return this.incomingEdgesOf(e).length}outDegreeOf(e){return this.outgoingEdgesOf(e).length}edgesOf(e){return[...this.outgoingEdgesOf(e),...this.incomingEdgesOf(e)]}getEdgeSrc(e){return this._getVertex(e.src)}getEdgeDest(e){return this._getVertex(e.dest)}getDestinations(e){if(e===null)return[];let r=[],i=this.outgoingEdgesOf(e);for(let n of i){let s=this.getEdgeDest(n);s&&r.push(s)}return r}topologicalSort(e){e=e!=null?e:"key";let r=new Map;for(let o of this.vertices)r.set(o[1],0);let i=[],n=!1,s=o=>{r.set(o,1);let l=this.getDestinations(o);for(let h of l){let f=r.get(h);f===0?s(h):f===1&&(n=!0)}r.set(o,2),i.push(o)};for(let o of this.vertices)r.get(o[1])===0&&s(o[1]);return n?null:(e==="key"&&(i=i.map(o=>o instanceof A?o.key:o)),i.reverse())}edgeSet(){let e=[];return this._outEdgeMap.forEach(r=>{e=[...e,...r]}),e}getNeighbors(e){let r=[],i=this._getVertex(e);if(i){let n=this.outgoingEdgesOf(i);for(let s of n){let o=this._getVertex(s.dest);o&&r.push(o)}}return r}getEndsOfEdge(e){if(!this.hasEdge(e.src,e.dest))return null;let r=this._getVertex(e.src),i=this._getVertex(e.dest);return r&&i?[r,i]:null}_addEdgeOnly(e){if(!(this.hasVertex(e.src)&&this.hasVertex(e.dest)))return!1;let r=this._getVertex(e.src),i=this._getVertex(e.dest);if(r&&i){let n=this._outEdgeMap.get(r);n?n.push(e):this._outEdgeMap.set(r,[e]);let s=this._inEdgeMap.get(i);return s?s.push(e):this._inEdgeMap.set(i,[e]),!0}else return!1}};var oe=class extends k{constructor(t,e){super(t,e)}},le=class extends S{constructor(e,r,i,n){super(i,n);a(this,"vertices");this.vertices=[e,r]}},Me=class extends D{constructor(){super();a(this,"_edges");this._edges=new Map}get edges(){return this._edges}createVertex(e,r){return new oe(e,r!=null?r:e)}createEdge(e,r,i,n){return new le(e,r,i!=null?i:1,n)}getEdge(e,r){var n;let i=[];if(e!==null&&r!==null){let s=this._getVertex(e),o=this._getVertex(r);s&&o&&(i=(n=this._edges.get(s))==null?void 0:n.filter(l=>l.vertices.includes(o.key)))}return i&&i[0]||null}deleteEdgeBetween(e,r){let i=this._getVertex(e),n=this._getVertex(r);if(!i||!n)return null;let s=this._edges.get(i),o=null;s&&(o=R(s,h=>h.vertices.includes(n.key))[0]||null);let l=this._edges.get(n);return l&&R(l,h=>h.vertices.includes(i.key)),o}deleteEdge(e){return this.deleteEdgeBetween(e.vertices[0],e.vertices[1])}degreeOf(e){var i;let r=this._getVertex(e);return r&&((i=this._edges.get(r))==null?void 0:i.length)||0}edgesOf(e){let r=this._getVertex(e);return r?this._edges.get(r)||[]:[]}edgeSet(){let e=new Set;return this._edges.forEach(r=>{r.forEach(i=>{e.add(i)})}),[...e]}getNeighbors(e){let r=[],i=this._getVertex(e);if(i){let n=this.edgesOf(i);for(let s of n){let o=this._getVertex(s.vertices.filter(l=>l!==i.key)[0]);o&&r.push(o)}}return r}getEndsOfEdge(e){if(!this.hasEdge(e.vertices[0],e.vertices[1]))return null;let r=this._getVertex(e.vertices[0]),i=this._getVertex(e.vertices[1]);return r&&i?[r,i]:null}_addEdgeOnly(e){for(let r of e.vertices){let i=this._getVertex(r);if(i===null)return!1;if(i){let n=this._edges.get(i);n?n.push(e):this._edges.set(i,[e])}}return!0}};var he=class extends A{constructor(e,r,i,n){super(e,r);a(this,"lat");a(this,"long");this.lat=i,this.long=n}},ue=class extends P{constructor(t,e,r,i){super(t,e,r,i)}},Le=class extends J{constructor(e,r){super();a(this,"_origin",[0,0]);a(this,"_bottomRight");this._origin=e,this._bottomRight=r}get origin(){return this._origin}get bottomRight(){return this._bottomRight}createVertex(e,r,i=this.origin[0],n=this.origin[1]){return new he(e,r,i,n)}createEdge(e,r,i,n){return new ue(e,r,i,n)}};var Z=(e=>(e.ITERATIVE="ITERATIVE",e.RECURSIVE="RECURSIVE",e))(Z||{}),ae=(o=>(o.ROOT="ROOT",o.LEFT="LEFT",o.RIGHT="RIGHT",o.ROOT_LEFT="ROOT_LEFT",o.ROOT_RIGHT="ROOT_RIGHT",o.ISOLATED="ISOLATED",o.MAL_NODE="MAL_NODE",o))(ae||{});var Ie=(e=>(e[e.RED=1]="RED",e[e.BLACK=0]="BLACK",e))(Ie||{});var fe=(r=>(r.lt="lt",r.eq="eq",r.gt="gt",r))(fe||{}),We=(e=>(e[e.DEFAULT=0]="DEFAULT",e[e.REVERSE=1]="REVERSE",e))(We||{});var B=class{constructor(t,e){a(this,"key");a(this,"value");a(this,"parent");a(this,"_left");a(this,"_right");this.key=t,this.value=e}get left(){return this._left}set left(t){t&&(t.parent=this),this._left=t}get right(){return this._right}set right(t){t&&(t.parent=this),this._right=t}get familyPosition(){let t=this;return this.parent?this.parent.left===t?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===t?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},$=class{constructor(t){a(this,"iterationType","ITERATIVE");a(this,"_root");a(this,"_size");a(this,"_defaultOneParamCallback",t=>t.key);if(t){let{iterationType:e="ITERATIVE"}=t;this.iterationType=e}this._size=0}get root(){return this._root}get size(){return this._size}createNode(t,e){return new B(t,e)}add(t,e){let r=(s,o)=>{let l=new C([s]);for(;l.size>0;){let h=l.shift();if(o&&h.key===o.key){h.value=o.value;return}let f=this._addTo(o,h);if(f!==void 0)return f;h.left&&l.push(h.left),h.right&&l.push(h.right)}},i,n;if(t===null)n=null;else if(this.isNodeKey(t))n=this.createNode(t,e);else if(t instanceof B)n=t;else return;return this.root?i=r(this.root,n):(this._setRoot(n),n?this._size=1:this._size=0,i=this.root),i}addMany(t,e){return t.map((r,i)=>{if(r instanceof B)return this.add(r.key,r.value);if(r===null)return this.add(null);let n=e==null?void 0:e[i];return this.add(r,n)})}refill(t,e){return this.clear(),t.length===this.addMany(t,e).length}delete(t,e=this._defaultOneParamCallback){let r=[];if(!this.root)return r;(!e||e===this._defaultOneParamCallback)&&t instanceof B&&(e=l=>l);let i=this.getNode(t,e);if(!i)return r;let n=i!=null&&i.parent?i.parent:null,s,o=i;if(i.left){if(i.left){let l=this.getRightMost(i.left);if(l){let h=l.parent;o=this._swap(i,l),h&&(h.right===l?h.right=l.left:h.left=l.left,s=h)}}}else if(!n)this._setRoot(null);else{let{familyPosition:l}=i;l==="LEFT"||l==="ROOT_LEFT"?n.left=i.right:(l==="RIGHT"||l==="ROOT_RIGHT")&&(n.right=i.right),s=n}return this._size=this.size-1,r.push({deleted:o,needBalanced:s}),r}getDepth(t,e=this.root){t=this.ensureNotKey(t),e=this.ensureNotKey(e);let r=0;for(;t!=null&&t.parent;){if(t===e)return r;r++,t=t.parent}return r}getHeight(t=this.root,e=this.iterationType){if(t=this.ensureNotKey(t),!t)return-1;if(e==="RECURSIVE"){let r=i=>{if(!i)return-1;let n=r(i.left),s=r(i.right);return Math.max(n,s)+1};return r(t)}else{let r=[{node:t,depth:0}],i=0;for(;r.length>0;){let{node:n,depth:s}=r.pop();n.left&&r.push({node:n.left,depth:s+1}),n.right&&r.push({node:n.right,depth:s+1}),i=Math.max(i,s)}return i}}getMinHeight(t=this.root,e=this.iterationType){var r,i,n;if(t=this.ensureNotKey(t),!t)return-1;if(e==="RECURSIVE"){let s=o=>{if(!o||!o.left&&!o.right)return 0;let l=s(o.left),h=s(o.right);return Math.min(l,h)+1};return s(t)}else{let s=[],o=t,l=null,h=new Map;for(;s.length>0||o;)if(o)s.push(o),o=o.left;else if(o=s[s.length-1],!o.right||l===o.right){if(o=s.pop(),o){let f=o.left&&(r=h.get(o.left))!=null?r:-1,p=o.right&&(i=h.get(o.right))!=null?i:-1;h.set(o,1+Math.min(f,p)),l=o,o=null}}else o=o.right;return(n=h.get(t))!=null?n:-1}}isPerfectlyBalanced(t=this.root){return this.getMinHeight(t)+1>=this.getHeight(t)}getNodes(t,e=this._defaultOneParamCallback,r=!1,i=this.root,n=this.iterationType){if((!e||e===this._defaultOneParamCallback)&&t instanceof B&&(e=o=>o),i=this.ensureNotKey(i),!i)return[];let s=[];if(n==="RECURSIVE"){let o=l=>{e(l)===t&&(s.push(l),r)||!l.left&&!l.right||(l.left&&o(l.left),l.right&&o(l.right))};o(i)}else{let o=new C([i]);for(;o.size>0;){let l=o.shift();if(l){if(e(l)===t&&(s.push(l),r))return s;l.left&&o.push(l.left),l.right&&o.push(l.right)}}}return s}has(t,e=this._defaultOneParamCallback,r=this.root,i=this.iterationType){return(!e||e===this._defaultOneParamCallback)&&t instanceof B&&(e=n=>n),this.getNodes(t,e,!0,r,i).length>0}getNode(t,e=this._defaultOneParamCallback,r=this.root,i=this.iterationType){var n;return(!e||e===this._defaultOneParamCallback)&&t instanceof B&&(e=s=>s),(n=this.getNodes(t,e,!0,r,i)[0])!=null?n:null}getNodeByKey(t,e="ITERATIVE"){if(this.root)if(e==="RECURSIVE"){let r=i=>{if(i.key===t)return i;if(!(!i.left&&!i.right)){if(i.left)return r(i.left);if(i.right)return r(i.right)}};return r(this.root)}else{let r=new C([this.root]);for(;r.size>0;){let i=r.shift();if(i){if(i.key===t)return i;i.left&&r.push(i.left),i.right&&r.push(i.right)}}}}ensureNotKey(t,e="ITERATIVE"){return this.isNodeKey(t)?this.getNodeByKey(t,e):t}get(t,e=this._defaultOneParamCallback,r=this.root,i=this.iterationType){var n,s;return(!e||e===this._defaultOneParamCallback)&&t instanceof B&&(e=o=>o),(s=(n=this.getNode(t,e,r,i))==null?void 0:n.value)!=null?s:void 0}clear(){this._setRoot(void 0),this._size=0}isEmpty(){return this.size===0}getPathToRoot(t,e=!0){let r=[];if(t=this.ensureNotKey(t),!t)return r;for(;t.parent;)r.push(t),t=t.parent;return r.push(t),e?r.reverse():r}getLeftMost(t=this.root,e=this.iterationType){if(t=this.ensureNotKey(t),!t)return t;if(e==="RECURSIVE"){let r=i=>this.isRealNode(i.left)?r(i.left):i;return r(t)}else{let r=ie(i=>this.isRealNode(i.left)?r.cont(i.left):i);return r(t)}}getRightMost(t=this.root,e=this.iterationType){if(t=this.ensureNotKey(t),!t)return t;if(e==="RECURSIVE"){let r=i=>this.isRealNode(i.right)?r(i.right):i;return r(t)}else{let r=ie(i=>this.isRealNode(i.right)?r.cont(i.right):i);return r(t)}}isSubtreeBST(t,e=this.iterationType){if(t=this.ensureNotKey(t),!t)return!0;if(e==="RECURSIVE"){let r=(i,n,s)=>i?i.key<=n||i.key>=s?!1:r(i.left,n,i.key)&&r(i.right,i.key,s):!0;return r(t,Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER)}else{let r=[],i=Number.MIN_SAFE_INTEGER,n=t;for(;n||r.length>0;){for(;n;)r.push(n),n=n.left;if(n=r.pop(),!n||i>=n.key)return!1;i=n.key,n=n.right}return!0}}isBST(t=this.iterationType){return this.root===null?!0:this.isSubtreeBST(this.root,t)}subTreeTraverse(t=this._defaultOneParamCallback,e=this.root,r=this.iterationType,i=!1){e=this.ensureNotKey(e);let n=[];if(!e)return n;if(r==="RECURSIVE"){let s=o=>{o!==void 0&&(n.push(t(o)),i?(o&&this.isNodeOrNull(o.left)&&s(o.left),o&&this.isNodeOrNull(o.right)&&s(o.right)):(o&&o.left&&s(o.left),o&&o.right&&s(o.right)))};s(e)}else{let s=[e];for(;s.length>0;){let o=s.pop();o!==void 0&&(n.push(t(o)),i?(o&&this.isNodeOrNull(o.right)&&s.push(o.right),o&&this.isNodeOrNull(o.left)&&s.push(o.left)):(o&&o.right&&s.push(o.right),o&&o.left&&s.push(o.left)))}}return n}isRealNode(t){return t instanceof B&&t.key.toString()!=="NaN"}isNIL(t){return t instanceof B&&t.key.toString()==="NaN"}isNodeOrNull(t){return this.isRealNode(t)||t===null}isNodeKey(t){return typeof t=="number"}dfs(t=this._defaultOneParamCallback,e="in",r=this.root,i="ITERATIVE",n=!1){if(r=this.ensureNotKey(r),!r)return[];let s=[];if(i==="RECURSIVE"){let o=l=>{switch(e){case"in":n?(l&&this.isNodeOrNull(l.left)&&o(l.left),this.isNodeOrNull(l)&&s.push(t(l)),l&&this.isNodeOrNull(l.right)&&o(l.right)):(l&&l.left&&o(l.left),this.isRealNode(l)&&s.push(t(l)),l&&l.right&&o(l.right));break;case"pre":n?(this.isNodeOrNull(l)&&s.push(t(l)),l&&this.isNodeOrNull(l.left)&&o(l.left),l&&this.isNodeOrNull(l.right)&&o(l.right)):(this.isRealNode(l)&&s.push(t(l)),l&&l.left&&o(l.left),l&&l.right&&o(l.right));break;case"post":n?(l&&this.isNodeOrNull(l.left)&&o(l.left),l&&this.isNodeOrNull(l.right)&&o(l.right),this.isNodeOrNull(l)&&s.push(t(l))):(l&&l.left&&o(l.left),l&&l.right&&o(l.right),this.isRealNode(l)&&s.push(t(l)));break}};o(r)}else{let o=[{opt:0,node:r}];for(;o.length>0;){let l=o.pop();if(!(l===void 0||this.isNIL(l.node))){if(n){if(l.node===void 0)continue}else if(l.node===null||l.node===void 0)continue;if(l.opt===1)s.push(t(l.node));else switch(e){case"in":l.node&&o.push({opt:0,node:l.node.right}),o.push({opt:1,node:l.node}),l.node&&o.push({opt:0,node:l.node.left});break;case"pre":l.node&&o.push({opt:0,node:l.node.right}),l.node&&o.push({opt:0,node:l.node.left}),o.push({opt:1,node:l.node});break;case"post":o.push({opt:1,node:l.node}),l.node&&o.push({opt:0,node:l.node.right}),l.node&&o.push({opt:0,node:l.node.left});break;default:l.node&&o.push({opt:0,node:l.node.right}),o.push({opt:1,node:l.node}),l.node&&o.push({opt:0,node:l.node.left});break}}}}return s}bfs(t=this._defaultOneParamCallback,e=this.root,r=this.iterationType,i=!1){if(e=this.ensureNotKey(e),!e)return[];let n=[];if(r==="RECURSIVE"){let s=new C([e]),o=l=>{if(s.size===0)return;let h=s.shift();n.push(t(h)),i?(h&&this.isNodeOrNull(h.left)&&s.push(h.left),h&&this.isNodeOrNull(h.right)&&s.push(h.right)):(h.left&&s.push(h.left),h.right&&s.push(h.right)),o(l+1)};o(0)}else{let s=new C([e]);for(;s.size>0;){let o=s.size;for(let l=0;l<o;l++){let h=s.shift();n.push(t(h)),i?(h&&this.isNodeOrNull(h.left)&&s.push(h.left),h&&this.isNodeOrNull(h.right)&&s.push(h.right)):(h.left&&s.push(h.left),h.right&&s.push(h.right))}}}return n}listLevels(t=this._defaultOneParamCallback,e=this.root,r=this.iterationType,i=!1){e=this.ensureNotKey(e);let n=[];if(!e)return n;if(r==="RECURSIVE"){let s=(o,l)=>{n[l]||(n[l]=[]),n[l].push(t(o)),i?(o&&this.isNodeOrNull(o.left)&&s(o.left,l+1),o&&this.isNodeOrNull(o.right)&&s(o.right,l+1)):(o&&o.left&&s(o.left,l+1),o&&o.right&&s(o.right,l+1))};s(e,0)}else{let s=[[e,0]];for(;s.length>0;){let o=s.pop(),[l,h]=o;n[h]||(n[h]=[]),n[h].push(t(l)),i?(l&&this.isNodeOrNull(l.right)&&s.push([l.right,h+1]),l&&this.isNodeOrNull(l.left)&&s.push([l.left,h+1])):(l&&l.right&&s.push([l.right,h+1]),l&&l.left&&s.push([l.left,h+1]))}}return n}getPredecessor(t){if(t=this.ensureNotKey(t),!!this.isRealNode(t))if(t.left){let e=t.left;for(;!this.isRealNode(e)||this.isRealNode(e.right)&&e.right!==t;)e&&(e=e.right);return e}else return t}getSuccessor(t){if(t=this.ensureNotKey(t),!t)return;if(t.right)return this.getLeftMost(t.right);let e=t.parent;for(;e&&e&&t===e.right;)t=e,e=e.parent;return e}morris(t=this._defaultOneParamCallback,e="in",r=this.root){if(r=this.ensureNotKey(r),r===null)return[];let i=[],n=r,s=l=>{let h=null,f=null;for(;l;)f=l.right,l.right=h,h=l,l=f;return h},o=l=>{let h=s(l),f=h;for(;f;)i.push(t(f)),f=f.right;s(h)};switch(e){case"in":for(;n;){if(n.left){let l=this.getPredecessor(n);if(l.right)l.right=null;else{l.right=n,n=n.left;continue}}i.push(t(n)),n=n.right}break;case"pre":for(;n;){if(n.left){let l=this.getPredecessor(n);if(l.right)l.right=null;else{l.right=n,i.push(t(n)),n=n.left;continue}}else i.push(t(n));n=n.right}break;case"post":for(;n;){if(n.left){let l=this.getPredecessor(n);if(l.right===null){l.right=n,n=n.left;continue}else l.right=null,o(n.left)}n=n.right}o(r);break}return i}*[Symbol.iterator](t=this.root){if(t)if(this.iterationType==="ITERATIVE"){let e=[],r=t;for(;r||e.length>0;){for(;r;)e.push(r),r=r.left;r=e.pop(),r&&(yield r.key),r&&(r=r.right)}}else t.left&&(yield*pe(this[Symbol.iterator](t.left))),yield t.key,t.right&&(yield*pe(this[Symbol.iterator](t.right)))}print(t=this.root){if(t=this.ensureNotKey(t),!t)return;(r=>{let[i,,,]=this._displayAux(r);for(let n of i)console.log(n)})(t)}_displayAux(t){if(!t)return[["\u2500"],1,0,0];let e=t.key.toString(),r=e.length;if(!t.left&&!t.right)return[[e],r,1,Math.floor(r/2)];let[i,n,s,o]=t.left?this._displayAux(t.left):[[""],0,0,0],[l,h,f,p]=t.right?this._displayAux(t.right):[[""],0,0,0],m=" ".repeat(Math.max(0,o+1))+"_".repeat(Math.max(0,n-o-1))+e+"_".repeat(Math.max(0,p))+" ".repeat(Math.max(0,h-p)),E=(s>0?" ".repeat(o)+"/"+" ".repeat(n-o-1):" ".repeat(n))+" ".repeat(r)+(f>0?" ".repeat(p)+"\\"+" ".repeat(h-p-1):" ".repeat(h)),b=[m,E];for(let x=0;x<Math.max(s,f);x++){let N=x<s?i[x]:" ".repeat(n),d=x<f?l[x]:" ".repeat(h);b.push(N+" ".repeat(r)+d)}return[b,n+r+h,Math.max(s,f)+2,n+Math.floor(r/2)]}_swap(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){let{key:r,value:i}=e,n=this.createNode(r,i);return n&&(e.key=t.key,e.value=t.value,t.key=n.key,t.value=n.value),e}}_addTo(t,e){if(this.isNodeKey(e)&&(e=this.getNode(e)),e)return e.left===void 0?(e.left=t,t&&(this._size=this.size+1),e.left):e.right===void 0?(e.right=t,t&&(this._size=this.size+1),e.right):void 0}_setRoot(t){t&&(t.parent=void 0),this._root=t}};var v=class extends B{constructor(e,r){super(e,r);a(this,"parent");a(this,"_left");a(this,"_right");this.parent=void 0,this._left=void 0,this._right=void 0}get left(){return this._left}set left(e){e&&(e.parent=this),this._left=e}get right(){return this._right}set right(e){e&&(e.parent=this),this._right=e}},F=class extends ${constructor(e){super(e);a(this,"_root");a(this,"_comparator",(e,r)=>e-r);if(this._root=void 0,e!==void 0){let{comparator:r}=e;r!==void 0&&(this._comparator=r)}}get root(){return this._root}createNode(e,r){return new v(e,r)}add(e,r){if(e===null)return;let i,n;if(e instanceof v?n=e:this.isNodeKey(e)?n=this.createNode(e,r):n=void 0,this.root===void 0)this._setRoot(n),this._size=this.size+1,i=this.root;else{let s=this.root,o=!0;for(;o;)s!==void 0&&n!==void 0?this._compare(s.key,n.key)==="eq"?(n&&(s.value=n.value),o=!1,i=s):this._compare(s.key,n.key)==="gt"?s.left===void 0?(n&&(n.parent=s),s.left=n,this._size=this.size+1,o=!1,i=s.left):s.left&&(s=s.left):this._compare(s.key,n.key)==="lt"&&(s.right===void 0?(n&&(n.parent=s),s.right=n,this._size=this.size+1,o=!1,i=s.right):s.right&&(s=s.right)):o=!1}return i}addMany(e,r,i=!0,n=this.iterationType){function s(N){return N.indexOf(void 0)===-1}if(!i||!s(e))return super.addMany(e,r).map(N=>N!=null?N:void 0);let o=[],l=e.map((N,d)=>[N,r==null?void 0:r[d]]),h=[];function f(N){for(let[d]of N)if(d instanceof v)return!0;return!1}let p=N=>{for(let[d]of N)if(this.isNodeKey(d))return!0;return!1},m=[],E=[];if(f(l))h=l.sort((N,d)=>N[0].key-d[0].key);else if(p(l))h=l.sort((N,d)=>N[0]-d[0]);else throw new Error("Invalid input keysOrNodes");m=h.map(([N])=>N),E=h.map(([,N])=>N);let b=(N,d)=>{if(N.length===0)return;let c=Math.floor((N.length-1)/2),g=this.add(N[c],d==null?void 0:d[c]);o.push(g),b(N.slice(0,c),d==null?void 0:d.slice(0,c)),b(N.slice(c+1),d==null?void 0:d.slice(c+1))},x=()=>{let d=[[0,h.length-1]];for(;d.length>0;){let c=d.pop();if(c){let[g,y]=c;if(g<=y){let _=g+Math.floor((y-g)/2),T=this.add(m[_],E==null?void 0:E[_]);o.push(T),d.push([_+1,y]),d.push([g,_-1])}}}};return n==="RECURSIVE"?b(m,E):x(),o}lastKey(e=this.root,r=this.iterationType){var i,n,s,o,l,h;return this._compare(0,1)==="lt"?(n=(i=this.getRightMost(e,r))==null?void 0:i.key)!=null?n:0:this._compare(0,1)==="gt"?(o=(s=this.getLeftMost(e,r))==null?void 0:s.key)!=null?o:0:(h=(l=this.getRightMost(e,r))==null?void 0:l.key)!=null?h:0}getNodeByKey(e,r="ITERATIVE"){if(this.root)if(r==="RECURSIVE"){let i=n=>{if(n.key===e)return n;if(!(!n.left&&!n.right)){if(this._compare(n.key,e)==="gt"&&n.left)return i(n.left);if(this._compare(n.key,e)==="lt"&&n.right)return i(n.right)}};return i(this.root)}else{let i=new C([this.root]);for(;i.size>0;){let n=i.shift();if(n){if(this._compare(n.key,e)==="eq")return n;this._compare(n.key,e)==="gt"&&n.left&&i.push(n.left),this._compare(n.key,e)==="lt"&&n.right&&i.push(n.right)}}}}ensureNotKey(e,r="ITERATIVE"){return this.isNodeKey(e)?this.getNodeByKey(e,r):e}getNodes(e,r=this._defaultOneParamCallback,i=!1,n=this.root,s=this.iterationType){if(n=this.ensureNotKey(n),!n)return[];let o=[];if(s==="RECURSIVE"){let l=h=>{r(h)===e&&(o.push(h),i)||!h.left&&!h.right||(r===this._defaultOneParamCallback?(this._compare(h.key,e)==="gt"&&h.left&&l(h.left),this._compare(h.key,e)==="lt"&&h.right&&l(h.right)):(h.left&&l(h.left),h.right&&l(h.right)))};l(n)}else{let l=new C([n]);for(;l.size>0;){let h=l.shift();if(h){if(r(h)===e&&(o.push(h),i))return o;r===this._defaultOneParamCallback?(this._compare(h.key,e)==="gt"&&h.left&&l.push(h.left),this._compare(h.key,e)==="lt"&&h.right&&l.push(h.right)):(h.left&&l.push(h.left),h.right&&l.push(h.right))}}}return o}lesserOrGreaterTraverse(e=this._defaultOneParamCallback,r="lt",i=this.root,n=this.iterationType){i=this.ensureNotKey(i);let s=[];if(!i||!this.root)return s;let o=i.key;if(n==="RECURSIVE"){let l=h=>{this._compare(h.key,o)===r&&s.push(e(h)),!(!h.left&&!h.right)&&(h.left&&this._compare(h.left.key,o)===r&&l(h.left),h.right&&this._compare(h.right.key,o)===r&&l(h.right))};return l(this.root),s}else{let l=new C([this.root]);for(;l.size>0;){let h=l.shift();h&&(this._compare(h.key,o)===r&&s.push(e(h)),h.left&&this._compare(h.left.key,o)===r&&l.push(h.left),h.right&&this._compare(h.right.key,o)===r&&l.push(h.right))}return s}}perfectlyBalance(e=this.iterationType){let r=this.dfs(n=>n,"in"),i=r.length;if(this.clear(),r.length<1)return!1;if(e==="RECURSIVE"){let n=(s,o)=>{if(s>o)return;let l=s+Math.floor((o-s)/2),h=r[l];this.add(h.key,h.value),n(s,l-1),n(l+1,o)};return n(0,i-1),!0}else{let n=[[0,i-1]];for(;n.length>0;){let s=n.pop();if(s){let[o,l]=s;if(o<=l){let h=o+Math.floor((l-o)/2),f=r[h];debugger;this.add(f.key,f.value),n.push([h+1,l]),n.push([o,h-1])}}}return!0}}isAVLBalanced(e=this.iterationType){var i,n;if(!this.root)return!0;let r=!0;if(e==="RECURSIVE"){let s=o=>{if(!o)return 0;let l=s(o.left),h=s(o.right);return Math.abs(l-h)>1&&(r=!1),Math.max(l,h)+1};s(this.root)}else{let s=[],o=this.root,l,h=new Map;for(;s.length>0||o;)if(o)s.push(o),o=o.left;else if(o=s[s.length-1],!o.right||l===o.right){if(o=s.pop(),o){let f=o.left&&(i=h.get(o.left))!=null?i:-1,p=o.right&&(n=h.get(o.right))!=null?n:-1;if(Math.abs(f-p)>1)return!1;h.set(o,1+Math.max(f,p)),l=o,o=void 0}}else o=o.right}return r}_setRoot(e){e&&(e.parent=void 0),this._root=e}_compare(e,r){let i=this._comparator(e,r);return i>0?"gt":i<0?"lt":"eq"}};var Se=class{constructor({frequency:t=0,max:e}){a(this,"_freq");a(this,"_max");a(this,"_freqMap");a(this,"_msb");a(this,"_negativeCount");this._freq=t,this._max=e,this._freqMap={0:0},this._msb=be(e),this._negativeCount=t<0?e:0}get freqMap(){return this._freqMap}get msb(){return this._msb}get negativeCount(){return this._negativeCount}get freq(){return this._freq}get max(){return this._max}readSingle(t){return this._checkIndex(t),this._readSingle(t)}update(t,e){this._checkIndex(t);let r=this._readSingle(t);this._update(t,e),this._updateNegativeCount(r,r+e)}writeSingle(t,e){this._checkIndex(t),this._writeSingle(t,e)}read(t){if(!Number.isInteger(t))throw new Error("Invalid count");return this._read(Math.max(Math.min(t,this.max),0))}lowerBound(t){if(this.negativeCount>0)throw new Error("Sequence is not non-descending");return this._binarySearch(t,(e,r)=>e<r)}upperBound(t){if(this.negativeCount>0)throw new Error("Must not be descending");return this._binarySearch(t,(e,r)=>e<=r)}getPrefixSum(t){this._checkIndex(t),t++;let e=0;for(;t>0;)e+=this._getFrequency(t),t-=t&-t;return e}_getFrequency(t){return t in this.freqMap?this.freqMap[t]:this.freq*(t&-t)}_updateFrequency(t,e){this.freqMap[t]=this._getFrequency(t)+e}_checkIndex(t){if(!Number.isInteger(t))throw new Error("Invalid index: Index must be an integer.");if(t<0||t>=this.max)throw new Error("Index out of range: Index must be within the range [0, this.max).")}_readSingle(t){t=t+1;let e=this._getFrequency(t),r=t-(t&-t);for(t--;t!==r;)e-=this._getFrequency(t),t-=t&-t;return e}_updateNegativeCount(t,e){t<0&&e>=0?this._negativeCount--:t>=0&&e<0&&this._negativeCount++}_update(t,e){for(t=t+1;t<=this.max;)this._updateFrequency(t,e),t+=t&-t}_writeSingle(t,e){let r=this._readSingle(t);this._update(t,e-r),this._updateNegativeCount(r,e)}_read(t){let e=t,r=0;for(;e;)r+=this._getFrequency(e),e-=e&-e;return r}_binarySearch(t,e){let r=0,i=this.msb<<1,n=t;for(;i>r+1;){let s=r+i>>1,o=this._getFrequency(s);s<=this.max&&e(o,n)?(n-=o,r=s):i=s}return r}};var q=class{constructor(t,e,r,i){a(this,"start",0);a(this,"end",0);a(this,"value",null);a(this,"sum",0);a(this,"left",null);a(this,"right",null);this.start=t,this.end=e,this.sum=r,this.value=i||null}},ze=class{constructor(t,e,r){a(this,"_values",[]);a(this,"_start",0);a(this,"_end");a(this,"_root");e=e||0,r=r||t.length-1,this._values=t,this._start=e,this._end=r,t.length>0?this._root=this.build(e,r):(this._root=null,this._values=[])}get values(){return this._values}get start(){return this._start}get end(){return this._end}get root(){return this._root}build(t,e){if(t>e)return new q(t,e,0);if(t===e)return new q(t,e,this._values[t]);let r=t+Math.floor((e-t)/2),i=this.build(t,r),n=this.build(r+1,e),s=new q(t,e,i.sum+n.sum);return s.left=i,s.right=n,s}updateNode(t,e,r){let i=this.root||null;if(!i)return;let n=(s,o,l,h)=>{if(s.start===s.end&&s.start===o){s.sum=l,h!==void 0&&(s.value=h);return}let f=s.start+Math.floor((s.end-s.start)/2);o<=f?s.left&&n(s.left,o,l,h):s.right&&n(s.right,o,l,h),s.left&&s.right&&(s.sum=s.left.sum+s.right.sum)};n(i,t,e,r)}querySumByRange(t,e){let r=this.root||null;if(!r)return 0;if(t<0||e>=this.values.length||t>e)return NaN;let i=(n,s,o)=>{if(s<=n.start&&o>=n.end)return n.sum;let l=n.start+Math.floor((n.end-n.start)/2);if(o<=l)return n.left?i(n.left,s,o):NaN;if(s>l)return n.right?i(n.right,s,o):NaN;{let h=0,f=0;return n.left&&(h=i(n.left,s,l)),n.right&&(f=i(n.right,l+1,o)),h+f}};return i(r,t,e)}};var H=class extends v{constructor(e,r){super(e,r);a(this,"height");this.height=0}},ee=class extends F{constructor(t){super(t)}createNode(t,e){return new H(t,e)}add(t,e){if(t===null)return;let r=super.add(t,e);return r&&this._balancePath(r),r}delete(t,e=this._defaultOneParamCallback){t instanceof H&&(e=i=>i);let r=super.delete(t,e);for(let{needBalanced:i}of r)i&&this._balancePath(i);return r}_swap(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){let{key:r,value:i,height:n}=e,s=this.createNode(r,i);return s&&(s.height=n,e.key=t.key,e.value=t.value,e.height=t.height,t.key=s.key,t.value=s.value,t.height=s.height),e}}_balanceFactor(t){return t.right?t.left?t.right.height-t.left.height:+t.height:-t.height}_updateHeight(t){if(!t.left&&!t.right)t.height=0;else if(t.left)t.right?t.height=1+Math.max(t.right.height,t.left.height):t.height=1+t.left.height;else{let e=t.right?t.right.height:0;t.height=1+e}}_balancePath(t){let e=this.getPathToRoot(t,!1);for(let r=0;r<e.length;r++){let i=e[r];switch(this._updateHeight(i),this._balanceFactor(i)){case-2:i&&i.left&&(this._balanceFactor(i.left)<=0?this._balanceLL(i):this._balanceLR(i));break;case 2:i&&i.right&&(this._balanceFactor(i.right)>=0?this._balanceRR(i):this._balanceRL(i))}}}_balanceLL(t){let e=t.parent,r=t.left;t.parent=r,r&&r.right&&(r.right.parent=t),r&&(r.parent=e),t===this.root?r&&this._setRoot(r):(e==null?void 0:e.left)===t?e.left=r:e&&(e.right=r),r&&(t.left=r.right,r.right=t),this._updateHeight(t),r&&this._updateHeight(r)}_balanceLR(t){let e=t.parent,r=t.left,i;r&&(i=r.right),t&&(t.parent=i),r&&(r.parent=i),i&&(i.left&&(i.left.parent=r),i.right&&(i.right.parent=t),i.parent=e),t===this.root?i&&this._setRoot(i):e&&(e.left===t?e.left=i:e.right=i),i&&(t.left=i.right,r&&(r.right=i.left),i.left=r,i.right=t),this._updateHeight(t),r&&this._updateHeight(r),i&&this._updateHeight(i)}_balanceRR(t){let e=t.parent,r=t.right;t.parent=r,r&&(r.left&&(r.left.parent=t),r.parent=e),t===this.root?r&&this._setRoot(r):e&&(e.left===t?e.left=r:e.right=r),r&&(t.right=r.left,r.left=t),this._updateHeight(t),r&&this._updateHeight(r)}_balanceRL(t){let e=t.parent,r=t.right,i;r&&(i=r.left),t.parent=i,r&&(r.parent=i),i&&(i.left&&(i.left.parent=t),i.right&&(i.right.parent=r),i.parent=e),t===this.root?i&&this._setRoot(i):e&&(e.left===t?e.left=i:e.right=i),i&&(t.right=i.left),r&&i&&(r.left=i.right),i&&(i.left=t),i&&(i.right=r),this._updateHeight(t),r&&this._updateHeight(r),i&&this._updateHeight(i)}};var U=class extends v{constructor(e,r,i=0){super(e,r);a(this,"color");this.color=i}},De=class extends F{constructor(e){super(e);a(this,"NIL",new U(NaN));a(this,"_root");a(this,"_size",0);this._root=this.NIL}get root(){return this._root}get size(){return this._size}add(e,r){let i;if(this.isNodeKey(e))i=this.createNode(e,r,1);else if(e instanceof U)i=e;else return void 0;i.left=this.NIL,i.right=this.NIL;let n,s=this.root;for(;s!==this.NIL;)if(n=s,s)if(i.key<s.key)s=s.left;else if(i.key>s.key)s=s==null?void 0:s.right;else return;if(i.parent=n,n===void 0?this._setRoot(i):i.key<n.key?n.left=i:n.right=i,i.parent===void 0){i.color=0,this._size++;return}if(i.parent.parent===void 0){this._size++;return}this._fixInsert(i),this._size++}createNode(e,r,i=0){return new U(e,r,i)}delete(e,r=this._defaultOneParamCallback){let i=[];return e===null||(s=>{let o=this.NIL,l,h;for(;s!==this.NIL;)s&&r(s)===e&&(o=s),s&&e&&r(s)<=e?s=s.right:s=s==null?void 0:s.left;if(o===this.NIL){this._size--;return}h=o;let f=h.color;o.left===this.NIL?(l=o.right,this._rbTransplant(o,o.right)):o.right===this.NIL?(l=o.left,this._rbTransplant(o,o.left)):(h=this.getLeftMost(o.right),f=h.color,l=h.right,h.parent===o?l.parent=h:(this._rbTransplant(h,h.right),h.right=o.right,h.right.parent=h),this._rbTransplant(o,h),h.left=o.left,h.left.parent=h,h.color=o.color),f===0&&this._fixDelete(l),this._size--})(this.root),i}isRealNode(e){return e!==this.NIL&&e!==void 0}getNode(e,r=this._defaultOneParamCallback,i=this.root,n=this.iterationType){var s;return e instanceof B&&(r=o=>o),i=this.ensureNotKey(i),(s=this.getNodes(e,r,!0,i,n)[0])!=null?s:void 0}getSuccessor(e){var i;if(e.right!==this.NIL)return(i=this.getLeftMost(e.right))!=null?i:void 0;let r=e.parent;for(;r!==this.NIL&&r!==void 0&&e===r.right;)e=r,r=r.parent;return r}getPredecessor(e){if(e.left!==this.NIL)return this.getRightMost(e.left);let r=e.parent;for(;r!==this.NIL&&e===r.left;)e=r,r=r.parent;return r}clear(){this._root=this.NIL,this._size=0}_setRoot(e){e&&(e.parent=void 0),this._root=e}_leftRotate(e){if(e.right){let r=e.right;e.right=r.left,r.left!==this.NIL&&r.left&&(r.left.parent=e),r.parent=e.parent,e.parent===void 0?this._setRoot(r):e===e.parent.left?e.parent.left=r:e.parent.right=r,r.left=e,e.parent=r}}_rightRotate(e){if(e.left){let r=e.left;e.left=r.right,r.right!==this.NIL&&r.right&&(r.right.parent=e),r.parent=e.parent,e.parent===void 0?this._setRoot(r):e===e.parent.right?e.parent.right=r:e.parent.left=r,r.right=e,e.parent=r}}_fixDelete(e){let r;for(;e!==this.root&&e.color===0;)e.parent&&e===e.parent.left?(r=e.parent.right,r.color===1&&(r.color=0,e.parent.color=1,this._leftRotate(e.parent),r=e.parent.right),r.left!==void 0&&r.left.color===0&&r.right&&r.right.color===0?(r.color=1,e=e.parent):(r.right&&r.right.color===0&&(r.left&&(r.left.color=0),r.color=1,this._rightRotate(r),r=e.parent.right),r&&(r.color=e.parent.color),e.parent.color=0,r&&r.right&&(r.right.color=0),this._leftRotate(e.parent),e=this.root)):(r=e.parent.left,r.color===1&&(r.color=0,e.parent.color=1,this._rightRotate(e.parent),r=e.parent.left),r&&r.right&&r.right.color===0&&r.right.color===0?(r.color=1,e=e.parent):(r&&r.left&&r.left.color===0&&(r.right&&(r.right.color=0),r.color=1,this._leftRotate(r),r=e.parent.left),r&&(r.color=e.parent.color),e.parent.color=0,r&&r.left&&(r.left.color=0),this._rightRotate(e.parent),e=this.root));e.color=0}_rbTransplant(e,r){e.parent===void 0?this._setRoot(r):e===e.parent.left?e.parent.left=r:e.parent.right=r,r.parent=e.parent}_fixInsert(e){let r;for(;e.parent&&e.parent.color===1&&(e.parent.parent&&e.parent===e.parent.parent.right?(r=e.parent.parent.left,r&&r.color===1?(r.color=0,e.parent.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.left&&(e=e.parent,this._rightRotate(e)),e.parent.color=0,e.parent.parent.color=1,this._leftRotate(e.parent.parent))):(r=e.parent.parent.right,r&&r.color===1?(r.color=0,e.parent.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.right&&(e=e.parent,this._leftRotate(e)),e.parent.color=0,e.parent.parent.color=1,this._rightRotate(e.parent.parent))),e!==this.root););this.root.color=0}};var j=class extends H{constructor(e,r,i=1){super(e,r);a(this,"count");this.count=i}},Ae=class extends ee{constructor(e){super(e);a(this,"_count",0)}get count(){return this._count}createNode(e,r,i){return new j(e,r,i)}add(e,r,i=1){if(e===null)return;let n,s;if(e instanceof j?s=this.createNode(e.key,e.value,e.count):e===void 0?s=void 0:s=this.createNode(e,r,i),!this.root)this._setRoot(s),this._size=this.size+1,s&&(this._count+=s.count),n=this.root;else{let o=this.root,l=!0;for(;l;)o?s&&(this._compare(o.key,s.key)==="eq"?(o.value=s.value,o.count+=s.count,this._count+=s.count,l=!1,n=o):this._compare(o.key,s.key)==="gt"?o.left===void 0?(o.left=s,this._size=this.size+1,this._count+=s.count,l=!1,n=o.left):o.left&&(o=o.left):this._compare(o.key,s.key)==="lt"&&(o.right===void 0?(o.right=s,this._size=this.size+1,this._count+=s.count,l=!1,n=o.right):o.right&&(o=o.right))):l=!1}return n&&this._balancePath(n),n}addMany(e,r){let i=[];for(let n=0;n<e.length;n++){let s=e[n];if(s instanceof j){i.push(this.add(s.key,s.value,s.count));continue}if(s===void 0){i.push(this.add(NaN,void 0,0));continue}i.push(this.add(s,r==null?void 0:r[n],1))}return i}perfectlyBalance(e=this.iterationType){let r=this.dfs(n=>n,"in"),i=r.length;if(r.length<1)return!1;if(this.clear(),e==="RECURSIVE"){let n=(s,o)=>{if(s>o)return;let l=s+Math.floor((o-s)/2),h=r[l];this.add(h.key,h.value,h.count),n(s,l-1),n(l+1,o)};return n(0,i-1),!0}else{let n=[[0,i-1]];for(;n.length>0;){let s=n.pop();if(s){let[o,l]=s;if(o<=l){let h=o+Math.floor((l-o)/2),f=r[h];this.add(f.key,f.value,f.count),n.push([h+1,l]),n.push([o,h-1])}}}return!0}}delete(e,r=this._defaultOneParamCallback,i=!1){var f;let n=[];if(!this.root)return n;let s=(f=this.getNode(e,r))!=null?f:void 0;if(!s)return n;let o=s!=null&&s.parent?s.parent:void 0,l,h=s;if(s.count>1&&!i)s.count--,this._count--;else{if(s.left){let p=s.left?this.getRightMost(s.left):void 0;if(p){let m=p.parent;h=this._swap(s,p),m&&(m.right===p?m.right=p.left:m.left=p.left,l=m)}}else if(!o)s.right!==void 0&&this._setRoot(s.right);else{let{familyPosition:p}=s;p==="LEFT"||p==="ROOT_LEFT"?o.left=s.right:(p==="RIGHT"||p==="ROOT_RIGHT")&&(o.right=s.right),l=o}this._size=this.size-1,h&&(this._count-=h.count)}return n.push({deleted:h,needBalanced:l}),l&&this._balancePath(l),n}clear(){super.clear(),this._count=0}_addTo(e,r){if(r=this.ensureNotKey(r),r)return r.left===void 0?(r.left=e,e!==void 0&&(this._size=this.size+1,this._count+=e.count),r.left):r.right===void 0?(r.right=e,e!==void 0&&(this._size=this.size+1,this._count+=e.count),r.right):void 0}_swap(e,r){if(e=this.ensureNotKey(e),r=this.ensureNotKey(r),e&&r){let{key:i,value:n,count:s,height:o}=r,l=this.createNode(i,n,s);return l&&(l.height=o,r.key=e.key,r.value=e.value,r.count=e.count,r.height=e.height,e.key=l.key,e.value=l.value,e.count=l.count,e.height=l.height),r}}};var Fe=class u{constructor(t,e,r){a(this,"key");a(this,"value");a(this,"children");this.key=t,this.value=e||void 0,this.children=r||[]}addChildren(t){this.children||(this.children=[]),t instanceof u?this.children.push(t):this.children=this.children.concat(t)}getHeight(){let t=0;if(this){let e=(r,i)=>{i>t&&(t=i);let{children:n}=r;if(n)for(let s=0,o=n.length;s<o;s++)e(n[s],i+1)};e(this,0)}return t}};var He=class{constructor(t){a(this,"_matrix");let{row:e,col:r,initialVal:i}=t;this._matrix=new Array(e).fill(void 0).map(()=>new Array(r).fill(i||0))}toArray(){return this._matrix}};var G=class u{constructor(t=0,e=0,r=1){this.x=t;this.y=e;this.w=r}get isZero(){return this.x===0&&this.y===0}get length(){return Math.sqrt(this.x*this.x+this.y*this.y)}get lengthSq(){return this.x*this.x+this.y*this.y}get rounded(){return new u(Math.round(this.x),Math.round(this.y))}static add(t,e){return new u(t.x+e.x,t.y+e.y)}static subtract(t,e){return new u(t.x-e.x,t.y-e.y)}static subtractValue(t,e){return new u(t.x-e,t.y-e)}static multiply(t,e){return new u(t.x*e,t.y*e)}static divide(t,e){return new u(t.x/e,t.y/e)}static equals(t,e){return t.x===e.x&&t.y===e.y}static equalsRounded(t,e,r=12){let i=u.abs(u.subtract(t,e));return i.x<r&&i.y<r}static normalize(t){let e=t.length;return e>2220446049250313e-31?u.divide(t,e):t}static truncate(t,e){return t.length>e?u.multiply(u.normalize(t),e):t}static perp(t){return new u(-t.y,t.x)}static reverse(t){return new u(-t.x,-t.y)}static abs(t){return new u(Math.abs(t.x),Math.abs(t.y))}static dot(t,e){return t.x*e.x+t.y*e.y}static distance(t,e){let r=e.y-t.y,i=e.x-t.x;return Math.sqrt(r*r+i*i)}static distanceSq(t,e){let r=e.y-t.y,i=e.x-t.x;return r*r+i*i}static sign(t,e){return t.y*e.x>t.x*e.y?-1:1}static angle(t){let e=new u(0,-1),r=Math.acos(u.dot(t,e)/(t.length*e.length));return u.sign(t,e)===1?Math.PI*2-r:r}static random(t,e){let r=Math.floor(Math.random()*t-t/2),i=Math.floor(Math.random()*e-e/2);return new u(r,i)}zero(){this.x=0,this.y=0}};var Pe=class u{constructor(t){a(this,"_matrix");typeof t=="undefined"?this._matrix=u.identity:t instanceof G?(this._matrix=u.identity,this._matrix[0][0]=t.x,this._matrix[1][0]=t.y,this._matrix[2][0]=t.w):this._matrix=t}static get empty(){return[[],[],[]]}static get identity(){return[[1,0,0],[0,1,0],[0,0,1]]}get m(){return this._matrix}static add(t,e){let r=u.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++)r[i][n]=t.m[i][n]+e.m[i][n];return new u(r)}static subtract(t,e){let r=u.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++)r[i][n]=t.m[i][n]-e.m[i][n];return new u(r)}static multiply(t,e){let r=u.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++){r[i][n]=0;for(let s=0;s<3;s++)r[i][n]+=t.m[i][s]*e.m[s][n]}return new u(r)}static multiplyByValue(t,e){let r=u.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++)r[i][n]=t.m[i][n]*e;return new u(r)}static multiplyByVector(t,e){return u.multiply(t,new u(e)).toVector()}static view(t,e){let i=t/2,n=e/2,s=Math.cos(Math.PI);return new u([[1,0,i],[0,s*1,n],[0,0,1]])}static scale(t){return u.multiplyByValue(new u,t)}static rotate(t){let e=Math.cos(t),r=Math.sin(t);return new u([[e,-r,0],[r,e,0],[0,0,1]])}static translate(t){return new u([[1,0,t.x],[0,1,t.y],[0,0,t.w]])}toVector(){return new G(this._matrix[0][0],this._matrix[1][0])}};var de=class u{constructor(t,e){a(this,"direction");a(this,"turn");this.direction=t,this.turn=()=>new u(e[t],e)}},qe=class{constructor({matrix:t,turning:e,onMove:r,init:{cur:i,charDir:n,VISITED:s}}){a(this,"onMove");a(this,"_matrix");a(this,"_cur");a(this,"_character");a(this,"_VISITED");this._matrix=t,this._cur=i,this._character=new de(n,e),this.onMove=r,this.onMove&&this.onMove(this._cur),this._VISITED=s,this._matrix[this._cur[0]][this._cur[1]]=this._VISITED}start(){for(;this.check(this._character.direction)||this.check(this._character.turn().direction);){let{direction:t}=this._character;this.check(t)?this.move(t):this.check(this._character.turn().direction)&&(this._character=this._character.turn())}}check(t){let e,r,i=this._matrix,[n,s]=this._cur;switch(t){case"up":if(r=i[n-1],!r)return!1;e=r[s];break;case"right":e=i[n][s+1];break;case"down":if(r=i[n+1],!r)return!1;e=r[s];break;case"left":e=i[n][s-1];break}return e!==void 0&&e!==this._VISITED}move(t){switch(t){case"up":this._cur[0]--;break;case"right":this._cur[1]++;break;case"down":this._cur[0]++;break;case"left":this._cur[1]--;break}let[e,r]=this._cur;this._matrix[e][r]=this._VISITED,this.onMove&&this.onMove(this._cur)}};var te=class{constructor(t){a(this,"key");a(this,"children");a(this,"isEnd");this.key=t,this.isEnd=!1,this.children=new Map}},Ue=class{constructor(t,e=!0){a(this,"_caseSensitive");a(this,"_root");if(this._root=new te(""),this._caseSensitive=e,t)for(let r of t)this.add(r)}get caseSensitive(){return this._caseSensitive}get root(){return this._root}add(t){t=this._caseProcess(t);let e=this.root;for(let r of t){let i=e.children.get(r);i||(i=new te(r),e.children.set(r,i)),e=i}return e.isEnd=!0,!0}has(t){t=this._caseProcess(t);let e=this.root;for(let r of t){let i=e.children.get(r);if(!i)return!1;e=i}return e.isEnd}delete(t){t=this._caseProcess(t);let e=!1,r=(i,n)=>{let s=t[n],o=i.children.get(s);return o?n===t.length-1?o.isEnd?(o.children.size>0?o.isEnd=!1:i.children.delete(s),e=!0,!0):!1:r(o,n+1)&&!i.isEnd&&o.children.size===0?(i.children.delete(s),!0):!1:!1};return r(this.root,0),e}getHeight(){let t=this.root,e=0;if(t){let r=(i,n)=>{n>e&&(e=n);let{children:s}=i;if(s)for(let o of s.entries())r(o[1],n+1)};r(t,0)}return e}hasPurePrefix(t){t=this._caseProcess(t);let e=this.root;for(let r of t){let i=e.children.get(r);if(!i)return!1;e=i}return!e.isEnd}hasPrefix(t){t=this._caseProcess(t);let e=this.root;for(let r of t){let i=e.children.get(r);if(!i)return!1;e=i}return!0}hasCommonPrefix(t){t=this._caseProcess(t);let e="",r=i=>{if(e+=i.key,e!==t&&!i.isEnd)if(i&&i.children&&i.children.size===1)r(Array.from(i.children.values())[0]);else return};return r(this.root),e===t}getLongestCommonPrefix(){let t="",e=r=>{if(t+=r.key,!r.isEnd)if(r&&r.children&&r.children.size===1)e(Array.from(r.children.values())[0]);else return};return e(this.root),t}getWords(t="",e=Number.MAX_SAFE_INTEGER,r=!1){t=this._caseProcess(t);let i=[],n=0;function s(l,h){for(let f of l.children.keys()){let p=l.children.get(f);p!==void 0&&s(p,h.concat(f))}if(l.isEnd){if(n>e-1)return;i.push(h),n++}}let o=this.root;if(t)for(let l of t){let h=o.children.get(l);h&&(o=h)}return(r||o!==this.root)&&s(o,t),i}_caseProcess(t){return this._caseSensitive||(t=t.toLowerCase()),t}};return et(nt);})();
|
|
2
|
+
/**
|
|
2
3
|
* data-structure-typed
|
|
3
4
|
*
|
|
4
5
|
* @author Tyler Zeng
|
|
5
6
|
* @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
|
|
6
7
|
* @license MIT License
|
|
7
|
-
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
8
10
|
* @license MIT
|
|
9
11
|
* @copyright Tyler Zeng <zrwusa@gmail.com>
|
|
10
12
|
* @class
|
|
11
|
-
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
12
15
|
* data-structure-typed
|
|
13
16
|
* @author Kirk Qi
|
|
14
17
|
* @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
|
|
15
18
|
* @license MIT License
|
|
16
|
-
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
17
21
|
* data-structure-typed
|
|
18
22
|
*
|
|
19
23
|
* @author Kirk Qi
|
|
20
24
|
* @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
|
|
21
25
|
* @license MIT License
|
|
22
|
-
|
|
26
|
+
*/
|
|
27
|
+
//# sourceMappingURL=data-structure-typed.min.js.map
|