data-structure-typed 1.46.3 → 1.46.4
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/benchmark/report.html +1 -1
- package/benchmark/report.json +5 -17
- package/dist/cjs/data-structures/hash/hash-map.d.ts +22 -26
- package/dist/cjs/data-structures/hash/hash-map.js +105 -76
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/hash/index.d.ts +0 -4
- package/dist/cjs/data-structures/hash/index.js +0 -4
- package/dist/cjs/data-structures/hash/index.js.map +1 -1
- package/dist/cjs/types/data-structures/hash/hash-map.d.ts +5 -0
- package/dist/cjs/types/data-structures/hash/index.d.ts +0 -4
- package/dist/cjs/types/data-structures/hash/index.js +0 -4
- package/dist/cjs/types/data-structures/hash/index.js.map +1 -1
- package/dist/cjs/utils/utils.d.ts +1 -1
- package/dist/cjs/utils/utils.js +3 -3
- package/dist/cjs/utils/utils.js.map +1 -1
- package/dist/mjs/data-structures/hash/hash-map.d.ts +22 -26
- package/dist/mjs/data-structures/hash/hash-map.js +108 -77
- package/dist/mjs/data-structures/hash/index.d.ts +0 -4
- package/dist/mjs/data-structures/hash/index.js +0 -4
- package/dist/mjs/types/data-structures/hash/hash-map.d.ts +5 -0
- package/dist/mjs/types/data-structures/hash/index.d.ts +0 -4
- package/dist/mjs/types/data-structures/hash/index.js +0 -4
- package/dist/mjs/utils/utils.d.ts +1 -1
- package/dist/mjs/utils/utils.js +1 -1
- package/dist/umd/data-structure-typed.js +96 -182
- package/dist/umd/data-structure-typed.min.js +1 -1
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +1 -1
- package/src/data-structures/hash/hash-map.ts +131 -81
- package/src/data-structures/hash/index.ts +0 -4
- package/src/types/data-structures/hash/hash-map.ts +6 -0
- package/src/types/data-structures/hash/index.ts +0 -4
- package/src/utils/utils.ts +1 -1
- package/test/performance/data-structures/hash/hash-map.test.ts +75 -0
- package/test/unit/data-structures/hash/hash-map.test.ts +32 -0
- package/dist/cjs/data-structures/hash/coordinate-map.d.ts +0 -44
- package/dist/cjs/data-structures/hash/coordinate-map.js +0 -63
- package/dist/cjs/data-structures/hash/coordinate-map.js.map +0 -1
- package/dist/cjs/data-structures/hash/coordinate-set.d.ts +0 -36
- package/dist/cjs/data-structures/hash/coordinate-set.js +0 -53
- package/dist/cjs/data-structures/hash/coordinate-set.js.map +0 -1
- package/dist/cjs/data-structures/hash/tree-map.d.ts +0 -2
- package/dist/cjs/data-structures/hash/tree-map.js +0 -7
- package/dist/cjs/data-structures/hash/tree-map.js.map +0 -1
- package/dist/cjs/data-structures/hash/tree-set.d.ts +0 -2
- package/dist/cjs/data-structures/hash/tree-set.js +0 -7
- package/dist/cjs/data-structures/hash/tree-set.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-map.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-map.js +0 -3
- package/dist/cjs/types/data-structures/hash/coordinate-map.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-set.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-set.js +0 -3
- package/dist/cjs/types/data-structures/hash/coordinate-set.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/tree-map.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/tree-map.js +0 -3
- package/dist/cjs/types/data-structures/hash/tree-map.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/tree-set.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/tree-set.js +0 -3
- package/dist/cjs/types/data-structures/hash/tree-set.js.map +0 -1
- package/dist/mjs/data-structures/hash/coordinate-map.d.ts +0 -44
- package/dist/mjs/data-structures/hash/coordinate-map.js +0 -58
- package/dist/mjs/data-structures/hash/coordinate-set.d.ts +0 -36
- package/dist/mjs/data-structures/hash/coordinate-set.js +0 -48
- package/dist/mjs/data-structures/hash/tree-map.d.ts +0 -2
- package/dist/mjs/data-structures/hash/tree-map.js +0 -2
- package/dist/mjs/data-structures/hash/tree-set.d.ts +0 -2
- package/dist/mjs/data-structures/hash/tree-set.js +0 -2
- package/dist/mjs/types/data-structures/hash/coordinate-map.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/coordinate-map.js +0 -1
- package/dist/mjs/types/data-structures/hash/coordinate-set.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/coordinate-set.js +0 -1
- package/dist/mjs/types/data-structures/hash/tree-map.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/tree-map.js +0 -1
- package/dist/mjs/types/data-structures/hash/tree-set.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/tree-set.js +0 -1
- package/src/data-structures/hash/coordinate-map.ts +0 -63
- package/src/data-structures/hash/coordinate-set.ts +0 -52
- package/src/data-structures/hash/tree-map.ts +0 -2
- package/src/data-structures/hash/tree-set.ts +0 -2
- package/src/types/data-structures/hash/coordinate-map.ts +0 -1
- package/src/types/data-structures/hash/coordinate-set.ts +0 -1
- package/src/types/data-structures/hash/tree-map.ts +0 -1
- package/src/types/data-structures/hash/tree-set.ts +0 -1
- package/test/performance/data-structures/hash/coordinate-map.test.ts +0 -0
- package/test/performance/data-structures/hash/coordinate-set.test.ts +0 -0
- package/test/unit/data-structures/hash/coordinate-map.test.ts +0 -74
- package/test/unit/data-structures/hash/coordinate-set.test.ts +0 -66
|
@@ -1,4 +1,4 @@
|
|
|
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,r){if(z()){s=Reflect.construct}else{s=function t(t,e,r){var i=[null];i.push.apply(i,e);var n=Function.bind.apply(t,i);var u=new n;if(r)b(u,r.prototype);return u}}return s.apply(null,arguments)}function o(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 h(t,e,r){if(e)o(t.prototype,e);if(r)o(t,r);return t}function l(t,e,r){if(typeof Reflect!=="undefined"&&Reflect.get){l=Reflect.get}else{l=function t(t,e,r){var i=x(t,e);if(!i)return;var n=Object.getOwnPropertyDescriptor(i,e);if(n.get){return n.get.call(r||t)}return n.value}}return l(t,e,r||t)}function f(t){f=Object.setPrototypeOf?Object.getPrototypeOf:function t(t){return t.__proto__||Object.getPrototypeOf(t)};return f(t)}function c(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)b(t,e)}function v(t,e){if(e!=null&&typeof Symbol!=="undefined"&&e[Symbol.hasInstance]){return!!e[Symbol.hasInstance](t)}else{return t instanceof e}}function d(t){return Function.toString.call(t).indexOf("[native code]")!==-1}function y(t){if(typeof Symbol!=="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function g(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 _(){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 p(){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 k(t,e){if(e&&(E(e)==="object"||typeof e==="function")){return e}return i(t)}function b(t,e){b=Object.setPrototypeOf||function t(t,e){t.__proto__=e;return t};return b(t,e)}function m(t,r){return e(t)||g(t,r)||N(t,r)||_()}function x(t,e){while(!Object.prototype.hasOwnProperty.call(t,e)){t=f(t);if(t===null)break}return t}function w(t){return r(t)||y(t)||N(t)||p()}function E(t){"@swc/helpers - typeof";return t&&typeof Symbol!=="undefined"&&t.constructor===Symbol?"symbol":typeof t}function N(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 S(t){var e=typeof Map==="function"?new Map:undefined;S=function t(t){if(t===null||!d(t))return t;if(typeof t!=="function"){throw new TypeError("Super expression must either be null or a function")}if(typeof e!=="undefined"){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return s(t,arguments,f(this).constructor)}r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:false,writable:true,configurable:true}});return b(r,t)};return S(t)}function z(){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 M(t){var e=z();return function r(){var r=f(t),i;if(e){var n=f(this).constructor;i=Reflect.construct(r,arguments,n)}else{i=r.apply(this,arguments)}return k(this,i)}}function R(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 I(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 o=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":E(e))!="symbol"?e+"":e,r),r};var _={};o(_,{AVLTree:function(){return tV},AVLTreeNode:function(){return tL},AbstractEdge:function(){return tf},AbstractGraph:function(){return tc},AbstractVertex:function(){return tl},BST:function(){return tI},BSTNode:function(){return tR},BinaryIndexedTree:function(){return tO},BinaryTree:function(){return tM},BinaryTreeNode:function(){return tz},CP:function(){return tN},Character:function(){return tq},CoordinateMap:function(){return x},CoordinateSet:function(){return N},Deque:function(){return tt},DirectedEdge:function(){return td},DirectedGraph:function(){return ty},DirectedVertex:function(){return tv},DoublyLinkedList:function(){return Y},DoublyLinkedListNode:function(){return W},FamilyPosition:function(){return tw},FibonacciHeap:function(){return tn},FibonacciHeapNode:function(){return ti},HashMap:function(){return q},HashTable:function(){return b},HashTableNode:function(){return p},Heap:function(){return tr},IterateDirection:function(){return tS},IterationType:function(){return tx},LinkedListQueue:function(){return Z},MapEdge:function(){return tb},MapGraph:function(){return tm},MapVertex:function(){return tk},Matrix2D:function(){return tH},MatrixNTI2D:function(){return tj},MaxHeap:function(){return tu},MaxPriorityQueue:function(){return th},MinHeap:function(){return ta},MinPriorityQueue:function(){return to},Navigator:function(){return tU},ObjectDeque:function(){return te},PriorityQueue:function(){return ts},Queue:function(){return $},RBTNColor:function(){return tE},RedBlackTree:function(){return tB},RedBlackTreeNode:function(){return tC},SegmentTree:function(){return tA},SegmentTreeNode:function(){return tT},SinglyLinkedList:function(){return G},SinglyLinkedListNode:function(){return U},SkipList:function(){return J},SkipListNode:function(){return X},Stack:function(){return Q},THUNK_SYMBOL:function(){return L},TreeMap:function(){return z},TreeMultimap:function(){return tP},TreeMultimapNode:function(){return tF},TreeNode:function(){return tD},TreeSet:function(){return O},Trie:function(){return tW},TrieNode:function(){return tG},UndirectedEdge:function(){return t_},UndirectedGraph:function(){return tp},UndirectedVertex:function(){return tg},Vector2D:function(){return tK},arrayRemove:function(){return A},calcMinUnitsRequired:function(){return H},getMSB:function(){return P},isObjOrFunc:function(){return K},isThunk:function(){return V},rangeCheck:function(){return D},throwRangeError:function(){return j},toThunk:function(){return C},trampoline:function(){return B},trampolineAsync:function(){return F},uuidV4:function(){return T}});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},k=/*#__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)}h(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(k,"DEFAULT_CAPACITY",16),g(k,"LOAD_FACTOR",.75);var b=k;var x=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t){a(this,r);var n;n=e.call(this);g(i(n),"_joint","_");t!==void 0&&(n._joint=t);return n}h(r,[{key:"joint",get:function t(){return this._joint}},{key:"has",value:function t(t){return l(f(r.prototype),"has",this).call(this,t.join(this._joint))}},{key:"set",value:function t(t,e){return l(f(r.prototype),"set",this).call(this,t.join(this._joint),e)}},{key:"get",value:function t(t){return l(f(r.prototype),"get",this).call(this,t.join(this._joint))}},{key:"delete",value:function t(t){return l(f(r.prototype),"delete",this).call(this,t.join(this._joint))}}]);return r}(S(Map));var N=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t){a(this,r);var n;n=e.call(this);g(i(n),"_joint","_");t!==void 0&&(n._joint=t);return n}h(r,[{key:"joint",get:function t(){return this._joint}},{key:"has",value:function t(t){return l(f(r.prototype),"has",this).call(this,t.join(this._joint))}},{key:"add",value:function t(t){return l(f(r.prototype),"add",this).call(this,t.join(this._joint))}},{key:"delete",value:function t(t){return l(f(r.prototype),"delete",this).call(this,t.join(this._joint))}}]);return r}(S(Set));var z=function t(){a(this,t)};var O=function t(){a(this,t)};var T=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)})},A=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},L=Symbol("thunk"),V=function(t){return typeof t=="function"&&t.__THUNK__===L},C=function(t){var e=function(){return t()};return e.__THUNK__=L,e},B=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,w(r));for(;V(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 C(function(){return t.apply(void 0,w(r))})}})},F=function(t){return Object.assign(/*#__PURE__*/u(function(){var e,r,i,n;var u=arguments;return R(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,w(r))];case 1:n=a.sent();a.label=2;case 2:if(!(V(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 C(function(){return t.apply(void 0,w(r))})}})},P=function(t){return t<=0?0:1<<31-Math.clz32(t)},D=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)},j=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"The value is off-limits.";throw new RangeError(t)},K=function(t){var e=typeof t==="undefined"?"undefined":E(t);return e==="object"&&t!==null||e==="function"},H=function(t,e){return Math.floor((t+e-1)/e)};var q=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];a(this,t);g(this,"OBJ_KEY_INDEX",Symbol("OBJ_KEY_INDEX"));g(this,"_nodes",[]);g(this,"_orgMap",{});g(this,"_head");g(this,"_tail");g(this,"_sentinel");g(this,"_size",0);Object.setPrototypeOf(this._orgMap,null),this._sentinel={},this._sentinel.prev=this._sentinel.next=this._head=this._tail=this._sentinel;var r=true,i=false,n=undefined;try{for(var u=e[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=s.value;this.set(o[0],o[1])}}catch(t){i=true;n=t}finally{try{if(!r&&u.return!=null){u.return()}}finally{if(i){throw n}}}}h(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 R(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 R(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=arguments.length>2&&arguments[2]!==void 0?arguments[2]:K(t);var i;if(r){var n=t[this.OBJ_KEY_INDEX];if(n!==void 0)return this._nodes[n].value=e,this._size;Object.defineProperty(t,this.OBJ_KEY_INDEX,{value:this._nodes.length,configurable:!0}),i={key:t,value:e,prev:this._tail,next:this._sentinel},this._nodes.push(i)}else{var u=this._orgMap[t];if(u)return u.value=e,this._size;this._orgMap[t]=i={key:t,value:e,prev:this._tail,next:this._sentinel}}return this._size===0?(this._head=i,this._sentinel.next=i):this._tail.next=i,this._tail=i,this._sentinel.prev=i,++this._size}},{key:"get",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:K(t);if(e){var r=t[this.OBJ_KEY_INDEX];return r!==void 0?this._nodes[r].value:void 0}var i=this._orgMap[t];return i?i.value:void 0}},{key:"getAt",value:function t(t){D(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=arguments.length>1&&arguments[1]!==void 0?arguments[1]:K(t);var r;if(e){var i=t[this.OBJ_KEY_INDEX];if(i===void 0)return!1;delete t[this.OBJ_KEY_INDEX],r=this._nodes[i],delete this._nodes[i]}else{if(r=this._orgMap[t],r===void 0)return!1;delete this._orgMap[t]}return this._deleteNode(r),!0}},{key:"deleteAt",value:function t(t){D(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._nodes=[],this._orgMap={},Object.setPrototypeOf(this._orgMap,null),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:Symbol.iterator,value:function t(){var t;return R(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 U=function t(e){a(this,t);g(this,"value");g(this,"next");this.value=e,this.next=null},G=/*#__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}h(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 U(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 U(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;v(t,U)?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 U(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(v(t,U)?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 U(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(v(t,U)?r=t:r=this.getNode(t),r){var i=new U(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 R(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 W=function t(e){a(this,t);g(this,"value");g(this,"next");g(this,"prev");this.value=e,this.next=null,this.prev=null},Y=/*#__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}h(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 W(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 W(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 W(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(v(t,W)?r=t:r=this.getNode(t),r){var i=new W(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(v(t,W)?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(v(t,W)?r=t:r=this.getNode(t),r){var i=new W(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 R(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 X=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)},J=/*#__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 X(null,null,e),this._level=0,this._maxLevel=e,this._probability=r}h(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 X(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 Q=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_elements");this._elements=Array.isArray(e)?e:[]}h(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 Z=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(){a(this,r);return e.apply(this,arguments)}h(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}(G),$=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_nodes");g(this,"_offset");this._nodes=e||[],this._offset=0}h(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 R(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 tt=/*#__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?v(e.length,Function)?i=e.length():i=e.length:v(e.size,Function)?i=e.size():i=e.size,this._bucketSize=r,this._bucketCount=H(i,this._bucketSize)||1;for(var n=0;n<this._bucketCount;++n)this._buckets.push(new Array(this._bucketSize));var u=H(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 c=f.value;this.push(c)}}catch(t){o=true;h=t}finally{try{if(!s&&l.return!=null){l.return()}}finally{if(o){throw h}}}}h(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 R(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 R(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){D(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){D(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(D(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(D(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 R(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]=w(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}(),te=/*#__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)}h(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 tr=/*#__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())}h(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 w(this.elements)}},{key:"clone",value:function e(){var e=new t({comparator:this.comparator});return e._elements=w(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}(),ti=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},tn=/*#__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.")}h(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 ti(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 tu=/*#__PURE__*/function(t){c(r,t);var e=M(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 ta=/*#__PURE__*/function(t){c(r,t);var e=M(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 ts=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t){a(this,r);return e.call(this,t)}return r}(tr);var to=/*#__PURE__*/function(t){c(r,t);var e=M(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}(ts);var th=/*#__PURE__*/function(t){c(r,t);var e=M(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}(ts);var tl=function t(e,r){a(this,t);g(this,"key");g(this,"value");this.key=e,this.value=r},tf=/*#__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=T()}h(t,[{key:"hashCode",get:function t(){return this._hashCode}}]);return t}(),tc=/*#__PURE__*/function(){function t(){a(this,t);g(this,"_vertices",new Map)}h(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(v(t,tl))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(v(t,tf))return this._addEdgeOnly(t);if(v(e,tl)||typeof e=="string"||typeof e=="number"){if(!(this.hasVertex(t)&&this.hasVertex(e)))return!1;v(t,tl)&&(t=t.key),v(e,tl)&&(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 _=w(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 $([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 m=function(t,e,r,i){if(r.add(t),t===e){p=[k].concat(w(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),m(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 m(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,c=this._getVertex(t),d=e?this._getVertex(e):null;if(!c)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 x=b[1];v(x,tl)&&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(c,0),f.set(c,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=m(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(v(l,tl)){var c=[l],d=f.get(l);for(;d;)c.push(d),d=f.get(d);var y=c.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 O=z[Symbol.iterator](),T;!(M=(T=O.next()).done);M=true){var A=T.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&&O.return!=null){O.return()}}finally{if(R){throw I}}}}}return r&&h.forEach(function(t,e){e!==c&&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,c=this._getVertex(t),d=e?this._getVertex(e):null;if(!c)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];v(m,tl)&&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 ts({comparator:function(t,e){return t.key-e.key}});x.add({key:0,value:c}),h.set(c,0),f.set(c,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(v(l,tl)){var c=[l],d=f.get(l);for(;d;)c.push(d),d=f.get(d);var y=c.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 O=z[Symbol.iterator](),T;!(M=(T=O.next()).done);M=true){var A=T.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&&O.return!=null){O.return()}}finally{if(R){throw I}}}}}return r&&h.forEach(function(t,e){e!==c&&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,c=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<c;++g)for(var _=0;_<y;++_){var p=this.getEndsOfEdge(d[_]);if(p){var k=m(p,2),b=k[0],x=k[1],w=d[_].weight,E=a.get(b),N=a.get(x);E!==void 0&&N!==void 0&&a.get(b)!==1/0&&E+w<N&&(a.set(x,E+w),i&&s.set(x,b))}}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](),O;!(z=(O=I.next()).done);z=true){var T=O.value;var A=T[1];if(v(A,tl)){var L=[A],V=s.get(A);for(;V!==void 0;)L.push(V),V=s.get(V);var C=L.reverse();T[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 B=0;B<y;++B){var F=this.getEndsOfEdge(d[B]);if(F){var P=m(F,1),D=P[0],j=d[B].weight,K=a.get(D);K&&K!==1/0&&K+j<K&&(l=!0)}}return{hasNegativeCycle:l,distMap:a,preMap:s,paths:u,min:o,minPath:h}}},{key:"floydWarshall",value:function t(){var t;var e=w(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=m(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 v(t,tl)?t.key:t}}]);return t}();var tv=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t,i){a(this,r);return e.call(this,t,i)}return r}(tl),td=/*#__PURE__*/function(t){c(r,t);var e=M(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}(tf),ty=/*#__PURE__*/function(t){c(r,t);var e=M(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}h(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 tv(t,e!==null&&e!==void 0?e:t)}},{key:"createEdge",value:function t(t,e,r,i){return new td(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&&A(u,function(t){return t.dest===i.key});var a=this._inEdgeMap.get(i);return a&&(n=A(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&&A(n,function(t){return t.src===r.key});var u=this._inEdgeMap.get(i);u&&u.length>0&&(e=A(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 w(this.outgoingEdgesOf(t)).concat(w(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 c=true,d=false,y=undefined;try{for(var g=this.vertices[Symbol.iterator](),_;!(c=(_=g.next()).done);c=true){var p=_.value;r.get(p[1])===0&&f(p[1])}}catch(t){d=true;y=t}finally{try{if(!c&&g.return!=null){g.return()}}finally{if(d){throw y}}}return l?null:(t==="key"&&(h=h.map(function(t){return v(t,tv)?t.key:t})),h.reverse())}},{key:"edgeSet",value:function t(){var t=[];return this._outEdgeMap.forEach(function(e){t=w(t).concat(w(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}(tc);var tg=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t,i){a(this,r);return e.call(this,t,i)}return r}(tl),t_=/*#__PURE__*/function(t){c(r,t);var e=M(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}(tf),tp=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(){a(this,r);var t;t=e.call(this);g(i(t),"_edges");t._edges=new Map;return t}h(r,[{key:"edges",get:function t(){return this._edges}},{key:"createVertex",value:function t(t,e){return new tg(t,e!==null&&e!==void 0?e:t)}},{key:"createEdge",value:function t(t,e,r,i){return new t_(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=A(n,function(t){return t.vertices.includes(i.key)})[0]||null);var a=this._edges.get(i);return a&&A(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)})}),w(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}(tc);var tk=/*#__PURE__*/function(t){c(r,t);var e=M(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}(tv),tb=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t,i,n,u){a(this,r);return e.call(this,t,i,n,u)}return r}(td),tm=/*#__PURE__*/function(t){c(r,t);var e=M(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}h(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 tk(t,e,r,i)}},{key:"createEdge",value:function t(t,e,r,i){return new tb(t,e,r,i)}}]);return r}(ty);var tx=function(t){return t.ITERATIVE="ITERATIVE",t.RECURSIVE="RECURSIVE",t}(tx||{}),tw=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}(tw||{});var tE=function(t){return t[t.RED=1]="RED",t[t.BLACK=0]="BLACK",t}(tE||{});var tN=function(t){return t.lt="lt",t.eq="eq",t.gt="gt",t}(tN||{}),tS=function(t){return t[t.DEFAULT=0]="DEFAULT",t[t.REVERSE=1]="REVERSE",t}(tS||{});var tz=/*#__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}h(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}(),tM=/*#__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}h(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 tz(t,e)}},{key:"add",value:function t(t,e){var r=this;var i=function(t,e){var i=new $([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(v(t,tz))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(v(t,tz))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)&&v(t,tz)&&(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)&&v(t,tz)&&(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 $([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)&&v(t,tz)&&(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)&&v(t,tz)&&(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 $([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)&&v(t,tz)&&(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=B(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=B(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 v(t,tz)&&t.key.toString()!=="NaN"}},{key:"isNIL",value:function t(t){return v(t,tz)&&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 $([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 $([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=m(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 R(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,I(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,I(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=m(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=m(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(w(p)),f+y,c+2,f+Math.floor(y/2)]}if(e.isRealNode(t)&&!e.isRealNode(t.left)){var k=m(i(t.right),4),b=k[0],x=k[1],E=k[2],N=k[3],S="".concat(t.key),z=S.length,M=S+"_".repeat(z)+" ".repeat(x-z),R=" ".repeat(N+z)+"\\"+" ".repeat(x-z-1),I=b.map(function(t){return" ".repeat(N)+t});return[[M,R].concat(w(I)),x+z,E+2,Math.floor(N/2)]}var O=m(i(t.left),4),T=O[0],A=O[1],L=O[2],V=O[3],C=m(i(t.right),4),B=C[0],F=C[1],P=C[2],D=C[3],j="".concat(t.key),K=j.length,H=" ".repeat(V+1)+"_".repeat(A-V-1)+j+"_".repeat(D)+" ".repeat(F-D),q=" ".repeat(V)+"/"+" ".repeat(A-V-1+K+D)+"\\"+" ".repeat(F-D-1);L<P?(r=T).push.apply(r,w(new Array(P-L).fill(" ".repeat(A)))):P<L&&(n=B).push.apply(n,w(new Array(L-P).fill(" ".repeat(F))));var U=T.map(function(t,e){return t+" ".repeat(K)+B[e]});return[[H,q].concat(w(U)),A+F+K,Math.max(L,P)+2,A+Math.floor(K/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 tR=/*#__PURE__*/function(t){c(r,t);var e=M(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}h(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}(tz),tI=/*#__PURE__*/function(t){c(r,t);var e=M(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}h(r,[{key:"root",get:function t(){return this._root}},{key:"createNode",value:function t(t,e){return new tR(t,e)}},{key:"add",value:function t(t,e){if(t===null)return;var r,i;if(v(t,tR)?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 l(f(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]]}),h=[];function c(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=m(u.value,1),s=a[0];if(v(s,tR))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=m(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(c(o))h=o.sort(function(t,e){return t[0].key-e[0].key});else if(d(o))h=o.sort(function(t,e){return t[0]-e[0]});else throw new Error("Invalid input keysOrNodes");y=h.map(function(t){var e=m(t,1),r=e[0];return r}),g=h.map(function(t){var e=m(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,h.length-1]];for(;t.length>0;){var e=t.pop();if(e){var r=m(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 $([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 $([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 $([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=m(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}(tM);var tO=/*#__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=P(n),this._negativeCount=i<0?n:0}h(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 tT=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},tA=/*#__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=[])}h(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 tT(t,e,0);if(t===e)return new tT(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 tT(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 tL=/*#__PURE__*/function(t){c(r,t);var e=M(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}(tR),tV=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t){a(this,r);return e.call(this,t)}h(r,[{key:"createNode",value:function t(t,e){return new tL(t,e)}},{key:"add",value:function t(t,e){if(t===null)return;var i=l(f(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;v(t,tL)&&(e=function(t){return t});var i=l(f(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 h=o.value,c=h.needBalanced;c&&this._balancePath(c)}}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}(tI);var tC=/*#__PURE__*/function(t){c(r,t);var e=M(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}(tR),tB=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t){a(this,r);var n;n=e.call(this,t);g(i(n),"NIL",new tC(NaN));g(i(n),"_root");g(i(n),"_size",0);n._root=n.NIL;return n}h(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(v(t,tC))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 tC(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 v(t,tz)&&(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}(tI);var tF=/*#__PURE__*/function(t){c(r,t);var e=M(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}(tL),tP=/*#__PURE__*/function(t){c(r,t);var e=M(r);function r(t){a(this,r);var n;n=e.call(this,t);g(i(n),"_count",0);return n}h(r,[{key:"count",get:function t(){return this._count}},{key:"createNode",value:function t(t,e,r){return new tF(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(v(t,tF)?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(v(n,tF)){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=m(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(){l(f(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}(tV);var tD=/*#__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||[]}h(t,[{key:"addChildren",value:function e(e){this.children||(this.children=[]),v(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 tj=/*#__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)})}h(t,[{key:"toArray",value:function t(){return this._matrix}}]);return t}();var tK=/*#__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}h(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 tH=/*#__PURE__*/function(){function t(e){a(this,t);g(this,"_matrix");(typeof e==="undefined"?"undefined":E(e))>"u"?this._matrix=t.identity:v(e,tK)?(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}h(t,[{key:"m",get:function t(){return this._matrix}},{key:"toVector",value:function t(){return new tK(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 tq=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)}},tU=/*#__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 tq(o,i),this.onMove=n,this.onMove&&this.onMove(this._cur),this._VISITED=h,this._matrix[this._cur[0]][this._cur[1]]=this._VISITED}h(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=m(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=m(this._cur,2),r=e[0],i=e[1];this._matrix[r][i]=this._VISITED,this.onMove&&this.onMove(this._cur)}}]);return t}();var tG=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},tW=/*#__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 tG(""),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}}}}h(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 tG(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";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=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(_)}();/**
|
|
2
2
|
* data-structure-typed
|
|
3
3
|
*
|
|
4
4
|
* @author Tyler Zeng
|