| /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ | 
| import * as tslib_1 from "tslib"; | 
| import { Subscriber } from '../Subscriber'; | 
| export function sequenceEqual(compareTo, comparator) { | 
|     return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparator)); }; | 
| } | 
| var SequenceEqualOperator = /*@__PURE__*/ (function () { | 
|     function SequenceEqualOperator(compareTo, comparator) { | 
|         this.compareTo = compareTo; | 
|         this.comparator = comparator; | 
|     } | 
|     SequenceEqualOperator.prototype.call = function (subscriber, source) { | 
|         return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator)); | 
|     }; | 
|     return SequenceEqualOperator; | 
| }()); | 
| export { SequenceEqualOperator }; | 
| var SequenceEqualSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(SequenceEqualSubscriber, _super); | 
|     function SequenceEqualSubscriber(destination, compareTo, comparator) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.compareTo = compareTo; | 
|         _this.comparator = comparator; | 
|         _this._a = []; | 
|         _this._b = []; | 
|         _this._oneComplete = false; | 
|         _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this))); | 
|         return _this; | 
|     } | 
|     SequenceEqualSubscriber.prototype._next = function (value) { | 
|         if (this._oneComplete && this._b.length === 0) { | 
|             this.emit(false); | 
|         } | 
|         else { | 
|             this._a.push(value); | 
|             this.checkValues(); | 
|         } | 
|     }; | 
|     SequenceEqualSubscriber.prototype._complete = function () { | 
|         if (this._oneComplete) { | 
|             this.emit(this._a.length === 0 && this._b.length === 0); | 
|         } | 
|         else { | 
|             this._oneComplete = true; | 
|         } | 
|         this.unsubscribe(); | 
|     }; | 
|     SequenceEqualSubscriber.prototype.checkValues = function () { | 
|         var _c = this, _a = _c._a, _b = _c._b, comparator = _c.comparator; | 
|         while (_a.length > 0 && _b.length > 0) { | 
|             var a = _a.shift(); | 
|             var b = _b.shift(); | 
|             var areEqual = false; | 
|             try { | 
|                 areEqual = comparator ? comparator(a, b) : a === b; | 
|             } | 
|             catch (e) { | 
|                 this.destination.error(e); | 
|             } | 
|             if (!areEqual) { | 
|                 this.emit(false); | 
|             } | 
|         } | 
|     }; | 
|     SequenceEqualSubscriber.prototype.emit = function (value) { | 
|         var destination = this.destination; | 
|         destination.next(value); | 
|         destination.complete(); | 
|     }; | 
|     SequenceEqualSubscriber.prototype.nextB = function (value) { | 
|         if (this._oneComplete && this._a.length === 0) { | 
|             this.emit(false); | 
|         } | 
|         else { | 
|             this._b.push(value); | 
|             this.checkValues(); | 
|         } | 
|     }; | 
|     SequenceEqualSubscriber.prototype.completeB = function () { | 
|         if (this._oneComplete) { | 
|             this.emit(this._a.length === 0 && this._b.length === 0); | 
|         } | 
|         else { | 
|             this._oneComplete = true; | 
|         } | 
|     }; | 
|     return SequenceEqualSubscriber; | 
| }(Subscriber)); | 
| export { SequenceEqualSubscriber }; | 
| var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(SequenceEqualCompareToSubscriber, _super); | 
|     function SequenceEqualCompareToSubscriber(destination, parent) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.parent = parent; | 
|         return _this; | 
|     } | 
|     SequenceEqualCompareToSubscriber.prototype._next = function (value) { | 
|         this.parent.nextB(value); | 
|     }; | 
|     SequenceEqualCompareToSubscriber.prototype._error = function (err) { | 
|         this.parent.error(err); | 
|         this.unsubscribe(); | 
|     }; | 
|     SequenceEqualCompareToSubscriber.prototype._complete = function () { | 
|         this.parent.completeB(); | 
|         this.unsubscribe(); | 
|     }; | 
|     return SequenceEqualCompareToSubscriber; | 
| }(Subscriber)); | 
| //# sourceMappingURL=sequenceEqual.js.map |