"use strict";var dequeTyped=(()=>{var b=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var B=(r,s,t)=>s in r?b(r,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[s]=t;var w=(r,s)=>{for(var t in s)b(r,t,{get:s[t],enumerable:!0})},y=(r,s,t,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of L(s))!v.call(r,n)&&n!==t&&b(r,n,{get:()=>s[n],enumerable:!(e=I(s,n))||e.enumerable});return r};var C=r=>y(b({},"__esModule",{value:!0}),r);var h=(r,s,t)=>B(r,typeof s!="symbol"?s+"":s,t);var O={};w(O,{DFSOperation:()=>g,Deque:()=>m,ERR:()=>E,Range:()=>_,raise:()=>l});var c=(r,s,t,e)=>{if(r<s||r>t)throw new RangeError(e!=null?e:`Index ${r} is out of range [${s}, ${t}].`)};var d=(r,s)=>Math.floor((r+s-1)/s);function l(r,s){throw new r(s)}var E={indexOutOfRange:(r,s,t,e)=>`${e?e+": ":""}Index ${r} is out of range [${s}, ${t}].`,invalidIndex:r=>`${r?r+": ":""}Index must be an integer.`,invalidArgument:(r,s)=>`${s?s+": ":""}${r}`,comparatorRequired:r=>`${r?r+": ":""}Comparator is required for non-number/non-string/non-Date keys.`,invalidKey:(r,s)=>`${s?s+": ":""}${r}`,notAFunction:(r,s)=>`${s?s+": ":""}${r} must be a function.`,invalidEntry:r=>`${r?r+": ":""}Each entry must be a [key, value] tuple.`,invalidNaN:r=>`${r?r+": ":""}NaN is not a valid key.`,invalidDate:r=>`${r?r+": ":""}Invalid Date key.`,reduceEmpty:r=>`${r?r+": ":""}Reduce of empty structure with no initial value.`,callbackReturnType:(r,s,t)=>`${t?t+": ":""}Callback must return ${r}; got ${s}.`,invalidOperation:(r,s)=>`${s?s+": ":""}${r}`,matrixDimensionMismatch:r=>`Matrix: Dimensions must be compatible for ${r}.`,matrixSingular:()=>"Matrix: Singular matrix, inverse does not exist.",matrixNotSquare:()=>"Matrix: Must be square for inversion.",matrixNotRectangular:()=>"Matrix: Must be rectangular for transposition.",matrixRowMismatch:(r,s)=>`Matrix: Expected row length ${r}, but got ${s}.`,orderStatisticNotEnabled:(r,s)=>`${s?s+": ":""}${r}() requires enableOrderStatistic: true.`};var g=(t=>(t[t.VISIT=0]="VISIT",t[t.PROCESS=1]="PROCESS",t))(g||{}),_=class{constructor(s,t,e=!0,n=!0){this.low=s;this.high=t;this.includeLow=e;this.includeHigh=n}isInRange(s,t){let e=this.includeLow?t(s,this.low)>=0:t(s,this.low)>0,n=this.includeHigh?t(s,this.high)<=0:t(s,this.high)<0;return e&&n}};var f=class{constructor(s){h(this,"_toElementFn");if(s){let{toElementFn:t}=s;typeof t=="function"?this._toElementFn=t:t&&l(TypeError,"toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...s){yield*this._getIterator(...s)}*values(){for(let s of this)yield s}every(s,t){let e=0;for(let n of this)if(t===void 0){if(!s(n,e++,this))return!1}else if(!s.call(t,n,e++,this))return!1;return!0}some(s,t){let e=0;for(let n of this)if(t===void 0){if(s(n,e++,this))return!0}else if(s.call(t,n,e++,this))return!0;return!1}forEach(s,t){let e=0;for(let n of this)t===void 0?s(n,e++,this):s.call(t,n,e++,this)}find(s,t){let e=0;for(let n of this)if(t===void 0){if(s(n,e++,this))return n}else if(s.call(t,n,e++,this))return n}has(s){for(let t of this)if(t===s)return!0;return!1}includes(s){return this.has(s)}*entries(){let s=0;for(let t of this)yield[s++,t]}*keys(){let s=0;for(let t of this)yield s++}reduce(s,t){let e=0,n=this[Symbol.iterator](),i;if(arguments.length>=2)i=t;else{let u=n.next();u.done&&l(TypeError,"Reduce of empty structure with no initial value"),i=u.value,e=1}for(let u of n)i=s(i,u,e++,this);return i}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var k=class r extends f{constructor(t){super(t);h(this,"_maxLen",-1);if(t){let{maxLen:e}=t;typeof e=="number"&&e>0&&e%1===0&&(this._maxLen=e)}}get maxLen(){return this._maxLen}indexOf(t,e=0){if(this.length===0)return-1;e<0&&(e=this.length+e),e<0&&(e=0);for(let n=e;n<this.length;n++)if(this.at(n)===t)return n;return-1}lastIndexOf(t,e=this.length-1){if(this.length===0)return-1;e>=this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(let n=e;n>=0;n--)if(this.at(n)===t)return n;return-1}findIndex(t,e){for(let n=0;n<this.length;n++){let i=this.at(n);if(i!==void 0&&t.call(e,i,n,this))return n}return-1}concat(...t){let e=this.clone();for(let n of t)n instanceof r?e.pushMany(n):e.push(n);return e}sort(t){let e=this.toArray();e.sort(t),this.clear();for(let n of e)this.push(n);return this}splice(t,e=0,...n){let i=this._createInstance();t=t<0?this.length+t:t,t=Math.max(0,Math.min(t,this.length)),e=Math.max(0,Math.min(e,this.length-t));for(let u=0;u<e;u++){let o=this.deleteAt(t);o!==void 0&&i.push(o)}for(let u=0;u<n.length;u++)this.addAt(t+u,n[u]);return i}join(t=","){return this.toArray().join(t)}toReversedArray(){let t=[];for(let e=this.length-1;e>=0;e--)t.push(this.at(e));return t}reduceRight(t,e){let n=e!=null?e:0;for(let i=this.length-1;i>=0;i--)n=t(n,this.at(i),i,this);return n}slice(t=0,e=this.length){t=t<0?this.length+t:t,e=e<0?this.length+e:e;let n=this._createInstance();for(let i=t;i<e;i++)n.push(this.at(i));return n}fill(t,e=0,n=this.length){if(e=e<0?this.length+e:e,n=n<0?this.length+n:n,e<0&&(e=0),n>this.length&&(n=this.length),e>=n)return this;for(let i=e;i<n;i++)this.setAt(i,t);return this}toReversed(){let t=this.clone();return t.reverse(),t}};var m=class extends k{constructor(t=[],e){super(e);h(this,"_equals",(t,e)=>Object.is(t,e));h(this,"_bucketSize",4096);h(this,"_autoCompactRatio",.5);h(this,"_compactCounter",0);h(this,"_bucketFirst",0);h(this,"_firstInBucket",0);h(this,"_bucketLast",0);h(this,"_lastInBucket",0);h(this,"_bucketCount",0);h(this,"_buckets",[]);h(this,"_length",0);if(e){let{bucketSize:u,autoCompactRatio:o}=e;typeof u=="number"&&(this._bucketSize=u),typeof o=="number"&&(this._autoCompactRatio=o)}let n;"length"in t?n=typeof t.length=="function"?t.length():t.length:n=typeof t.size=="function"?t.size():t.size,this._bucketCount=d(n,this._bucketSize)||1;for(let u=0;u<this._bucketCount;++u)this._buckets.push(new Array(this._bucketSize));let i=d(n,this._bucketSize);this._bucketFirst=this._bucketLast=(this._bucketCount>>1)-(i>>1),this._firstInBucket=this._lastInBucket=this._bucketSize-n%this._bucketSize>>1,this.pushMany(t)}get bucketSize(){return this._bucketSize}get autoCompactRatio(){return this._autoCompactRatio}set autoCompactRatio(t){this._autoCompactRatio=t}get bucketFirst(){return this._bucketFirst}get firstInBucket(){return this._firstInBucket}get bucketLast(){return this._bucketLast}get lastInBucket(){return this._lastInBucket}get bucketCount(){return this._bucketCount}get buckets(){return this._buckets}get length(){return this._length}peek(){return this.first}get first(){if(this._length!==0)return this._buckets[this._bucketFirst][this._firstInBucket]}get last(){if(this._length!==0)return this._buckets[this._bucketLast][this._lastInBucket]}static fromArray(t,e){return new this(t,e)}push(t){return this._length&&(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._length+=1,this._buckets[this._bucketLast][this._lastInBucket]=t,this._maxLen>0&&this._length>this._maxLen&&this.shift(),!0}pop(){if(this._length===0)return;let t=this._buckets[this._bucketLast][this._lastInBucket];return this._length!==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._length-=1,this._autoCompact(),t}shift(){if(this._length===0)return;let t=this._buckets[this._bucketFirst][this._firstInBucket];return this._length!==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._length-=1,this._autoCompact(),t}unshift(t){return this._length&&(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._length+=1,this._buckets[this._bucketFirst][this._firstInBucket]=t,this._maxLen>0&&this._length>this._maxLen&&this.pop(),!0}pushMany(t){let e=[];for(let n of t)this.toElementFn?e.push(this.push(this.toElementFn(n))):e.push(this.push(n));return e}unshiftMany(t=[]){let e=[];for(let n of t)this.toElementFn?e.push(this.unshift(this.toElementFn(n))):e.push(this.unshift(n));return e}isEmpty(){return this._length===0}clear(){this._buckets=[new Array(this._bucketSize)],this._bucketCount=1,this._bucketFirst=this._bucketLast=this._length=0,this._firstInBucket=this._lastInBucket=this._bucketSize>>1}at(t){if(t<0||t>=this._length)return;let{bucketIndex:e,indexInBucket:n}=this._getBucketAndPosition(t);return this._buckets[e][n]}setAt(t,e){c(t,0,this._length-1);let{bucketIndex:n,indexInBucket:i}=this._getBucketAndPosition(t);return this._buckets[n][i]=e,!0}addAt(t,e,n=1){let i=this._length;if(c(t,0,i),t===0)for(;n--;)this.unshift(e);else if(t===this._length)for(;n--;)this.push(e);else{let u=[];for(let o=t;o<this._length;++o){let a=this.at(o);a!==void 0&&u.push(a)}this.cut(t-1,!0);for(let o=0;o<n;++o)this.push(e);for(let o=0;o<u.length;++o)this.push(u[o])}return!0}cut(t,e=!1){if(e){if(t<0)return this.clear(),this;let{bucketIndex:n,indexInBucket:i}=this._getBucketAndPosition(t);return this._bucketLast=n,this._lastInBucket=i,this._length=t+1,this}else{let n=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen});n._setBucketSize(this._bucketSize);for(let i=0;i<=t;i++){let u=this.at(i);u!==void 0&&n.push(u)}return n}}splice(t,e=this._length-t,...n){c(t,0,this._length),e<0&&(e=0),t+e>this._length&&(e=this._length-t);let i=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen});i._setBucketSize(this._bucketSize);for(let o=0;o<e;o++){let a=this.at(t+o);a!==void 0&&i.push(a)}let u=[];for(let o=t+e;o<this._length;o++){let a=this.at(o);a!==void 0&&u.push(a)}this.cut(t-1,!0);for(let o of n)this.push(o);for(let o of u)this.push(o);return i}cutRest(t,e=!1){if(e){if(t<0)return this;let{bucketIndex:n,indexInBucket:i}=this._getBucketAndPosition(t);return this._bucketFirst=n,this._firstInBucket=i,this._length=this._length-t,this}else{let n=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen});n._setBucketSize(this._bucketSize),t<0&&(t=0);for(let i=t;i<this._length;i++){let u=this.at(i);u!==void 0&&n.push(u)}return n}}deleteAt(t){c(t,0,this._length-1);let e;if(t===0)return this.shift();if(t===this._length-1)return e=this.last,this.pop(),e;{let n=this._length-1,{bucketIndex:i,indexInBucket:u}=this._getBucketAndPosition(t);e=this._buckets[i][u];for(let o=t;o<n;o++){let{bucketIndex:a,indexInBucket:p}=this._getBucketAndPosition(o),{bucketIndex:x,indexInBucket:R}=this._getBucketAndPosition(o+1);this._buckets[a][p]=this._buckets[x][R]}return this.pop(),e}}delete(t){let e=this._length;if(e===0)return!1;let n=0,i=0;for(;n<e;){let u=this.at(n);this._equals(u,t)||(this.setAt(i,u),i+=1),n+=1}return this.cut(i-1,!0),!0}deleteWhere(t){for(let e=0;e<this._length;e++){let n=this.at(e);if(t(n,e,this))return this.deleteAt(e),!0}return!1}setEquality(t){return this._equals=t,this}findLast(t){for(let e=this.length-1;e>=0;e--){let n=this.at(e);if(t(n,e,this))return n}}findLastIndex(t){for(let e=this.length-1;e>=0;e--)if(t(this.at(e),e,this))return e;return-1}reverse(){this._buckets.reverse().forEach(function(u){u.reverse()});let{_bucketFirst:t,_bucketLast:e,_firstInBucket:n,_lastInBucket:i}=this;return this._bucketFirst=this._bucketCount-e-1,this._bucketLast=this._bucketCount-t-1,this._firstInBucket=this._bucketSize-i-1,this._lastInBucket=this._bucketSize-n-1,this}unique(){if(this._length<=1)return this;let t=1,e=this.at(0);for(let n=1;n<this._length;++n){let i=this.at(n);this._equals(i,e)||(e=i,this.setAt(t++,i))}return this.cut(t-1,!0),this}_autoCompact(){if(this._autoCompactRatio<=0||this._bucketCount<=1||(this._compactCounter++,this._compactCounter<this._bucketSize))return;this._compactCounter=0,this._length/(this._bucketCount*this._bucketSize)<this._autoCompactRatio&&this.shrinkToFit()}compact(){let t=this._bucketCount;return this.shrinkToFit(),this._bucketCount<t}shrinkToFit(){if(this._length===0)return;let t=[];if(this._bucketFirst<=this._bucketLast)for(let e=this._bucketFirst;e<=this._bucketLast;++e)t.push(this._buckets[e]);else{for(let e=this._bucketFirst;e<this._bucketCount;++e)t.push(this._buckets[e]);for(let e=0;e<=this._bucketLast;++e)t.push(this._buckets[e])}this._bucketFirst=0,this._bucketLast=t.length-1,this._buckets=t,this._bucketCount=t.length,this._compactCounter=0}clone(){return this._createLike(this,{bucketSize:this.bucketSize,toElementFn:this.toElementFn,maxLen:this._maxLen})}filter(t,e){let n=this._createInstance({toElementFn:this.toElementFn,maxLen:this._maxLen});n._setBucketSize(this._bucketSize);let i=0;for(let u of this)t.call(e,u,i,this)&&n.push(u),i++;return n}mapSame(t,e){let n=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen});n._setBucketSize(this._bucketSize);let i=0;for(let u of this){let o=e===void 0?t(u,i++,this):t.call(e,u,i++,this);n.push(o)}return n}map(t,e,n){let i=this._createLike([],{...e!=null?e:{},bucketSize:this._bucketSize,maxLen:this._maxLen}),u=0;for(let o of this){let a=n===void 0?t(o,u,this):t.call(n,o,u,this);i.push(a),u++}return i}_setBucketSize(t){this._bucketSize=t,this._length===0&&(this._buckets=[new Array(this._bucketSize)],this._bucketCount=1,this._bucketFirst=this._bucketLast=0,this._firstInBucket=this._lastInBucket=this._bucketSize>>1)}*_getIterator(){for(let t=0;t<this._length;++t){let e=this.at(t);e!==void 0&&(yield e)}}_reallocate(t){let e=[],n=t||this._bucketCount>>1||1;for(let i=0;i<n;++i)e[i]=new Array(this._bucketSize);for(let i=this._bucketFirst;i<this._bucketCount;++i)e[e.length]=this._buckets[i];for(let i=0;i<this._bucketLast;++i)e[e.length]=this._buckets[i];e[e.length]=[...this._buckets[this._bucketLast]],this._bucketFirst=n,this._bucketLast=e.length-1;for(let i=0;i<n;++i)e[e.length]=new Array(this._bucketSize);this._buckets=e,this._bucketCount=e.length}_getBucketAndPosition(t){let e,n,i=this._firstInBucket+t;return e=this._bucketFirst+Math.floor(i/this._bucketSize),e>=this._bucketCount&&(e-=this._bucketCount),n=(i+1)%this._bucketSize-1,n<0&&(n=this._bucketSize-1),{bucketIndex:e,indexInBucket:n}}_createInstance(t){let e=this.constructor;return new e([],t)}_createLike(t=[],e){let n=this.constructor;return new n(t,e)}*_getReverseIterator(){for(let t=this._length-1;t>-1;t--){let e=this.at(t);e!==void 0&&(yield e)}}};return C(O);})();
/**
 * data-structure-typed
 *
 * @author Pablo Zeng
 * @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
 * @license MIT License
 */
//# sourceMappingURL=deque-typed.min.js.map