diff --git "a/frontend/dist/frontend/browser/main.js" "b/frontend/dist/frontend/browser/main.js" new file mode 100644--- /dev/null +++ "b/frontend/dist/frontend/browser/main.js" @@ -0,0 +1,44624 @@ +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b ||= {}) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@angular/core/fesm2022/_effect-chunk.mjs +/** + * @license Angular v21.2.17 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + */ +var activeConsumer = null; +var inNotificationPhase = false; +var epoch = 1; +var postProducerCreatedFn = null; +var SIGNAL = /* @__PURE__ */ Symbol("SIGNAL"); +function setActiveConsumer(consumer) { + const prev = activeConsumer; + activeConsumer = consumer; + return prev; +} +function getActiveConsumer() { + return activeConsumer; +} +function isInNotificationPhase() { + return inNotificationPhase; +} +var REACTIVE_NODE = { + version: 0, + lastCleanEpoch: 0, + dirty: false, + producers: void 0, + producersTail: void 0, + consumers: void 0, + consumersTail: void 0, + recomputing: false, + consumerAllowSignalWrites: false, + consumerIsAlwaysLive: false, + kind: "unknown", + producerMustRecompute: () => false, + producerRecomputeValue: () => { + }, + consumerMarkedDirty: () => { + }, + consumerOnSignalRead: () => { + } +}; +function producerAccessed(node) { + if (inNotificationPhase) { + throw new Error(typeof ngDevMode !== "undefined" && ngDevMode ? `Assertion error: signal read during notification phase` : ""); + } + if (activeConsumer === null) { + return; + } + activeConsumer.consumerOnSignalRead(node); + const prevProducerLink = activeConsumer.producersTail; + if (prevProducerLink !== void 0 && prevProducerLink.producer === node) { + return; + } + let nextProducerLink = void 0; + const isRecomputing = activeConsumer.recomputing; + if (isRecomputing) { + nextProducerLink = prevProducerLink !== void 0 ? prevProducerLink.nextProducer : activeConsumer.producers; + if (nextProducerLink !== void 0 && nextProducerLink.producer === node) { + activeConsumer.producersTail = nextProducerLink; + nextProducerLink.lastReadVersion = node.version; + return; + } + } + const prevConsumerLink = node.consumersTail; + if (prevConsumerLink !== void 0 && prevConsumerLink.consumer === activeConsumer && (!isRecomputing || isValidLink(prevConsumerLink, activeConsumer))) { + return; + } + const isLive = consumerIsLive(activeConsumer); + const newLink = { + producer: node, + consumer: activeConsumer, + nextProducer: nextProducerLink, + prevConsumer: prevConsumerLink, + lastReadVersion: node.version, + nextConsumer: void 0 + }; + activeConsumer.producersTail = newLink; + if (prevProducerLink !== void 0) { + prevProducerLink.nextProducer = newLink; + } else { + activeConsumer.producers = newLink; + } + if (isLive) { + producerAddLiveConsumer(node, newLink); + } +} +function producerIncrementEpoch() { + epoch++; +} +function producerUpdateValueVersion(node) { + if (consumerIsLive(node) && !node.dirty) { + return; + } + if (!node.dirty && node.lastCleanEpoch === epoch) { + return; + } + if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) { + producerMarkClean(node); + return; + } + node.producerRecomputeValue(node); + producerMarkClean(node); +} +function producerNotifyConsumers(node) { + if (node.consumers === void 0) { + return; + } + const prev = inNotificationPhase; + inNotificationPhase = true; + try { + for (let link = node.consumers; link !== void 0; link = link.nextConsumer) { + const consumer = link.consumer; + if (!consumer.dirty) { + consumerMarkDirty(consumer); + } + } + } finally { + inNotificationPhase = prev; + } +} +function producerUpdatesAllowed() { + return activeConsumer?.consumerAllowSignalWrites !== false; +} +function consumerMarkDirty(node) { + node.dirty = true; + producerNotifyConsumers(node); + node.consumerMarkedDirty?.(node); +} +function producerMarkClean(node) { + node.dirty = false; + node.lastCleanEpoch = epoch; +} +function consumerBeforeComputation(node) { + if (node) resetConsumerBeforeComputation(node); + return setActiveConsumer(node); +} +function resetConsumerBeforeComputation(node) { + node.producersTail = void 0; + node.recomputing = true; +} +function consumerAfterComputation(node, prevConsumer) { + setActiveConsumer(prevConsumer); + if (node) finalizeConsumerAfterComputation(node); +} +function finalizeConsumerAfterComputation(node) { + node.recomputing = false; + const producersTail = node.producersTail; + let toRemove = producersTail !== void 0 ? producersTail.nextProducer : node.producers; + if (toRemove !== void 0) { + if (consumerIsLive(node)) { + do { + toRemove = producerRemoveLiveConsumerLink(toRemove); + } while (toRemove !== void 0); + } + if (producersTail !== void 0) { + producersTail.nextProducer = void 0; + } else { + node.producers = void 0; + } + } +} +function consumerPollProducersForChange(node) { + for (let link = node.producers; link !== void 0; link = link.nextProducer) { + const producer = link.producer; + const seenVersion = link.lastReadVersion; + if (seenVersion !== producer.version) { + return true; + } + producerUpdateValueVersion(producer); + if (seenVersion !== producer.version) { + return true; + } + } + return false; +} +function consumerDestroy(node) { + if (consumerIsLive(node)) { + let link = node.producers; + while (link !== void 0) { + link = producerRemoveLiveConsumerLink(link); + } + } + node.producers = void 0; + node.producersTail = void 0; + node.consumers = void 0; + node.consumersTail = void 0; +} +function producerAddLiveConsumer(node, link) { + const consumersTail = node.consumersTail; + const wasLive = consumerIsLive(node); + if (consumersTail !== void 0) { + link.nextConsumer = consumersTail.nextConsumer; + consumersTail.nextConsumer = link; + } else { + link.nextConsumer = void 0; + node.consumers = link; + } + link.prevConsumer = consumersTail; + node.consumersTail = link; + if (!wasLive) { + for (let link2 = node.producers; link2 !== void 0; link2 = link2.nextProducer) { + producerAddLiveConsumer(link2.producer, link2); + } + } +} +function producerRemoveLiveConsumerLink(link) { + const producer = link.producer; + const nextProducer = link.nextProducer; + const nextConsumer = link.nextConsumer; + const prevConsumer = link.prevConsumer; + link.nextConsumer = void 0; + link.prevConsumer = void 0; + if (nextConsumer !== void 0) { + nextConsumer.prevConsumer = prevConsumer; + } else { + producer.consumersTail = prevConsumer; + } + if (prevConsumer !== void 0) { + prevConsumer.nextConsumer = nextConsumer; + } else { + producer.consumers = nextConsumer; + if (!consumerIsLive(producer)) { + let producerLink = producer.producers; + while (producerLink !== void 0) { + producerLink = producerRemoveLiveConsumerLink(producerLink); + } + } + } + return nextProducer; +} +function consumerIsLive(node) { + return node.consumerIsAlwaysLive || node.consumers !== void 0; +} +function runPostProducerCreatedFn(node) { + postProducerCreatedFn?.(node); +} +function isValidLink(checkLink, consumer) { + const producersTail = consumer.producersTail; + if (producersTail !== void 0) { + let link = consumer.producers; + do { + if (link === checkLink) { + return true; + } + if (link === producersTail) { + break; + } + link = link.nextProducer; + } while (link !== void 0); + } + return false; +} +function defaultEquals(a, b) { + return Object.is(a, b); +} +function createComputed(computation, equal) { + const node = Object.create(COMPUTED_NODE); + node.computation = computation; + if (equal !== void 0) { + node.equal = equal; + } + const computed2 = () => { + producerUpdateValueVersion(node); + producerAccessed(node); + if (node.value === ERRORED) { + throw node.error; + } + return node.value; + }; + computed2[SIGNAL] = node; + if (typeof ngDevMode !== "undefined" && ngDevMode) { + computed2.toString = () => `[Computed${node.debugName ? " (" + node.debugName + ")" : ""}: ${String(node.value)}]`; + } + runPostProducerCreatedFn(node); + return computed2; +} +var UNSET = /* @__PURE__ */ Symbol("UNSET"); +var COMPUTING = /* @__PURE__ */ Symbol("COMPUTING"); +var ERRORED = /* @__PURE__ */ Symbol("ERRORED"); +var COMPUTED_NODE = /* @__PURE__ */ (() => { + return __spreadProps(__spreadValues({}, REACTIVE_NODE), { + value: UNSET, + dirty: true, + error: null, + equal: defaultEquals, + kind: "computed", + producerMustRecompute(node) { + return node.value === UNSET || node.value === COMPUTING; + }, + producerRecomputeValue(node) { + if (node.value === COMPUTING) { + throw new Error(typeof ngDevMode !== "undefined" && ngDevMode ? "Detected cycle in computations." : ""); + } + const oldValue = node.value; + node.value = COMPUTING; + const prevConsumer = consumerBeforeComputation(node); + let newValue; + let wasEqual = false; + try { + newValue = node.computation(); + setActiveConsumer(null); + wasEqual = oldValue !== UNSET && oldValue !== ERRORED && newValue !== ERRORED && node.equal(oldValue, newValue); + } catch (err) { + newValue = ERRORED; + node.error = err; + } finally { + consumerAfterComputation(node, prevConsumer); + } + if (wasEqual) { + node.value = oldValue; + return; + } + node.value = newValue; + node.version++; + } + }); +})(); +function defaultThrowError() { + throw new Error(); +} +var throwInvalidWriteToSignalErrorFn = defaultThrowError; +function throwInvalidWriteToSignalError(node) { + throwInvalidWriteToSignalErrorFn(node); +} +function setThrowInvalidWriteToSignalError(fn) { + throwInvalidWriteToSignalErrorFn = fn; +} +var postSignalSetFn = null; +function createSignal(initialValue, equal) { + const node = Object.create(SIGNAL_NODE); + node.value = initialValue; + if (equal !== void 0) { + node.equal = equal; + } + const getter = () => signalGetFn(node); + getter[SIGNAL] = node; + if (typeof ngDevMode !== "undefined" && ngDevMode) { + getter.toString = () => `[Signal${node.debugName ? " (" + node.debugName + ")" : ""}: ${String(node.value)}]`; + } + runPostProducerCreatedFn(node); + const set = (newValue) => signalSetFn(node, newValue); + const update = (updateFn) => signalUpdateFn(node, updateFn); + return [getter, set, update]; +} +function signalGetFn(node) { + producerAccessed(node); + return node.value; +} +function signalSetFn(node, newValue) { + if (!producerUpdatesAllowed()) { + throwInvalidWriteToSignalError(node); + } + if (!node.equal(node.value, newValue)) { + node.value = newValue; + signalValueChanged(node); + } +} +function signalUpdateFn(node, updater) { + if (!producerUpdatesAllowed()) { + throwInvalidWriteToSignalError(node); + } + signalSetFn(node, updater(node.value)); +} +var SIGNAL_NODE = /* @__PURE__ */ (() => { + return __spreadProps(__spreadValues({}, REACTIVE_NODE), { + equal: defaultEquals, + value: void 0, + kind: "signal" + }); +})(); +function signalValueChanged(node) { + node.version++; + producerIncrementEpoch(); + producerNotifyConsumers(node); + postSignalSetFn?.(node); +} +var BASE_EFFECT_NODE = /* @__PURE__ */ (() => __spreadProps(__spreadValues({}, REACTIVE_NODE), { + consumerIsAlwaysLive: true, + consumerAllowSignalWrites: true, + dirty: true, + kind: "effect" +}))(); +function runEffect(node) { + node.dirty = false; + if (node.version > 0 && !consumerPollProducersForChange(node)) { + return; + } + node.version++; + const prevNode = consumerBeforeComputation(node); + try { + node.cleanup(); + node.fn(); + } finally { + consumerAfterComputation(node, prevNode); + } +} + +// node_modules/rxjs/dist/esm/internal/util/isFunction.js +function isFunction(value) { + return typeof value === "function"; +} + +// node_modules/rxjs/dist/esm/internal/util/createErrorClass.js +function createErrorClass(createImpl) { + const _super = (instance) => { + Error.call(instance); + instance.stack = new Error().stack; + }; + const ctorFunc = createImpl(_super); + ctorFunc.prototype = Object.create(Error.prototype); + ctorFunc.prototype.constructor = ctorFunc; + return ctorFunc; +} + +// node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js +var UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) { + _super(this); + this.message = errors ? `${errors.length} errors occurred during unsubscription: +${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join("\n ")}` : ""; + this.name = "UnsubscriptionError"; + this.errors = errors; +}); + +// node_modules/rxjs/dist/esm/internal/util/arrRemove.js +function arrRemove(arr, item) { + if (arr) { + const index = arr.indexOf(item); + 0 <= index && arr.splice(index, 1); + } +} + +// node_modules/rxjs/dist/esm/internal/Subscription.js +var Subscription = class _Subscription { + constructor(initialTeardown) { + this.initialTeardown = initialTeardown; + this.closed = false; + this._parentage = null; + this._finalizers = null; + } + unsubscribe() { + let errors; + if (!this.closed) { + this.closed = true; + const { _parentage } = this; + if (_parentage) { + this._parentage = null; + if (Array.isArray(_parentage)) { + for (const parent of _parentage) { + parent.remove(this); + } + } else { + _parentage.remove(this); + } + } + const { initialTeardown: initialFinalizer } = this; + if (isFunction(initialFinalizer)) { + try { + initialFinalizer(); + } catch (e) { + errors = e instanceof UnsubscriptionError ? e.errors : [e]; + } + } + const { _finalizers } = this; + if (_finalizers) { + this._finalizers = null; + for (const finalizer of _finalizers) { + try { + execFinalizer(finalizer); + } catch (err) { + errors = errors !== null && errors !== void 0 ? errors : []; + if (err instanceof UnsubscriptionError) { + errors = [...errors, ...err.errors]; + } else { + errors.push(err); + } + } + } + } + if (errors) { + throw new UnsubscriptionError(errors); + } + } + } + add(teardown) { + var _a; + if (teardown && teardown !== this) { + if (this.closed) { + execFinalizer(teardown); + } else { + if (teardown instanceof _Subscription) { + if (teardown.closed || teardown._hasParent(this)) { + return; + } + teardown._addParent(this); + } + (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); + } + } + } + _hasParent(parent) { + const { _parentage } = this; + return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent); + } + _addParent(parent) { + const { _parentage } = this; + this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; + } + _removeParent(parent) { + const { _parentage } = this; + if (_parentage === parent) { + this._parentage = null; + } else if (Array.isArray(_parentage)) { + arrRemove(_parentage, parent); + } + } + remove(teardown) { + const { _finalizers } = this; + _finalizers && arrRemove(_finalizers, teardown); + if (teardown instanceof _Subscription) { + teardown._removeParent(this); + } + } +}; +Subscription.EMPTY = (() => { + const empty = new Subscription(); + empty.closed = true; + return empty; +})(); +var EMPTY_SUBSCRIPTION = Subscription.EMPTY; +function isSubscription(value) { + return value instanceof Subscription || value && "closed" in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe); +} +function execFinalizer(finalizer) { + if (isFunction(finalizer)) { + finalizer(); + } else { + finalizer.unsubscribe(); + } +} + +// node_modules/rxjs/dist/esm/internal/config.js +var config = { + onUnhandledError: null, + onStoppedNotification: null, + Promise: void 0, + useDeprecatedSynchronousErrorHandling: false, + useDeprecatedNextContext: false +}; + +// node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js +var timeoutProvider = { + setTimeout(handler, timeout2, ...args) { + const { delegate } = timeoutProvider; + if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { + return delegate.setTimeout(handler, timeout2, ...args); + } + return setTimeout(handler, timeout2, ...args); + }, + clearTimeout(handle) { + const { delegate } = timeoutProvider; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); + }, + delegate: void 0 +}; + +// node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js +function reportUnhandledError(err) { + timeoutProvider.setTimeout(() => { + const { onUnhandledError } = config; + if (onUnhandledError) { + onUnhandledError(err); + } else { + throw err; + } + }); +} + +// node_modules/rxjs/dist/esm/internal/util/noop.js +function noop() { +} + +// node_modules/rxjs/dist/esm/internal/NotificationFactories.js +var COMPLETE_NOTIFICATION = (() => createNotification("C", void 0, void 0))(); +function errorNotification(error) { + return createNotification("E", void 0, error); +} +function nextNotification(value) { + return createNotification("N", value, void 0); +} +function createNotification(kind, value, error) { + return { + kind, + value, + error + }; +} + +// node_modules/rxjs/dist/esm/internal/util/errorContext.js +var context = null; +function errorContext(cb) { + if (config.useDeprecatedSynchronousErrorHandling) { + const isRoot = !context; + if (isRoot) { + context = { errorThrown: false, error: null }; + } + cb(); + if (isRoot) { + const { errorThrown, error } = context; + context = null; + if (errorThrown) { + throw error; + } + } + } else { + cb(); + } +} +function captureError(err) { + if (config.useDeprecatedSynchronousErrorHandling && context) { + context.errorThrown = true; + context.error = err; + } +} + +// node_modules/rxjs/dist/esm/internal/Subscriber.js +var Subscriber = class extends Subscription { + constructor(destination) { + super(); + this.isStopped = false; + if (destination) { + this.destination = destination; + if (isSubscription(destination)) { + destination.add(this); + } + } else { + this.destination = EMPTY_OBSERVER; + } + } + static create(next, error, complete) { + return new SafeSubscriber(next, error, complete); + } + next(value) { + if (this.isStopped) { + handleStoppedNotification(nextNotification(value), this); + } else { + this._next(value); + } + } + error(err) { + if (this.isStopped) { + handleStoppedNotification(errorNotification(err), this); + } else { + this.isStopped = true; + this._error(err); + } + } + complete() { + if (this.isStopped) { + handleStoppedNotification(COMPLETE_NOTIFICATION, this); + } else { + this.isStopped = true; + this._complete(); + } + } + unsubscribe() { + if (!this.closed) { + this.isStopped = true; + super.unsubscribe(); + this.destination = null; + } + } + _next(value) { + this.destination.next(value); + } + _error(err) { + try { + this.destination.error(err); + } finally { + this.unsubscribe(); + } + } + _complete() { + try { + this.destination.complete(); + } finally { + this.unsubscribe(); + } + } +}; +var _bind = Function.prototype.bind; +function bind(fn, thisArg) { + return _bind.call(fn, thisArg); +} +var ConsumerObserver = class { + constructor(partialObserver) { + this.partialObserver = partialObserver; + } + next(value) { + const { partialObserver } = this; + if (partialObserver.next) { + try { + partialObserver.next(value); + } catch (error) { + handleUnhandledError(error); + } + } + } + error(err) { + const { partialObserver } = this; + if (partialObserver.error) { + try { + partialObserver.error(err); + } catch (error) { + handleUnhandledError(error); + } + } else { + handleUnhandledError(err); + } + } + complete() { + const { partialObserver } = this; + if (partialObserver.complete) { + try { + partialObserver.complete(); + } catch (error) { + handleUnhandledError(error); + } + } + } +}; +var SafeSubscriber = class extends Subscriber { + constructor(observerOrNext, error, complete) { + super(); + let partialObserver; + if (isFunction(observerOrNext) || !observerOrNext) { + partialObserver = { + next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0, + error: error !== null && error !== void 0 ? error : void 0, + complete: complete !== null && complete !== void 0 ? complete : void 0 + }; + } else { + let context2; + if (this && config.useDeprecatedNextContext) { + context2 = Object.create(observerOrNext); + context2.unsubscribe = () => this.unsubscribe(); + partialObserver = { + next: observerOrNext.next && bind(observerOrNext.next, context2), + error: observerOrNext.error && bind(observerOrNext.error, context2), + complete: observerOrNext.complete && bind(observerOrNext.complete, context2) + }; + } else { + partialObserver = observerOrNext; + } + } + this.destination = new ConsumerObserver(partialObserver); + } +}; +function handleUnhandledError(error) { + if (config.useDeprecatedSynchronousErrorHandling) { + captureError(error); + } else { + reportUnhandledError(error); + } +} +function defaultErrorHandler(err) { + throw err; +} +function handleStoppedNotification(notification, subscriber) { + const { onStoppedNotification } = config; + onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber)); +} +var EMPTY_OBSERVER = { + closed: true, + next: noop, + error: defaultErrorHandler, + complete: noop +}; + +// node_modules/rxjs/dist/esm/internal/symbol/observable.js +var observable = (() => typeof Symbol === "function" && Symbol.observable || "@@observable")(); + +// node_modules/rxjs/dist/esm/internal/util/identity.js +function identity(x) { + return x; +} + +// node_modules/rxjs/dist/esm/internal/util/pipe.js +function pipe(...fns) { + return pipeFromArray(fns); +} +function pipeFromArray(fns) { + if (fns.length === 0) { + return identity; + } + if (fns.length === 1) { + return fns[0]; + } + return function piped(input2) { + return fns.reduce((prev, fn) => fn(prev), input2); + }; +} + +// node_modules/rxjs/dist/esm/internal/Observable.js +var Observable = class _Observable { + constructor(subscribe) { + if (subscribe) { + this._subscribe = subscribe; + } + } + lift(operator) { + const observable2 = new _Observable(); + observable2.source = this; + observable2.operator = operator; + return observable2; + } + subscribe(observerOrNext, error, complete) { + const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete); + errorContext(() => { + const { operator, source } = this; + subscriber.add(operator ? operator.call(subscriber, source) : source ? this._subscribe(subscriber) : this._trySubscribe(subscriber)); + }); + return subscriber; + } + _trySubscribe(sink) { + try { + return this._subscribe(sink); + } catch (err) { + sink.error(err); + } + } + forEach(next, promiseCtor) { + promiseCtor = getPromiseCtor(promiseCtor); + return new promiseCtor((resolve, reject) => { + const subscriber = new SafeSubscriber({ + next: (value) => { + try { + next(value); + } catch (err) { + reject(err); + subscriber.unsubscribe(); + } + }, + error: reject, + complete: resolve + }); + this.subscribe(subscriber); + }); + } + _subscribe(subscriber) { + var _a; + return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); + } + [observable]() { + return this; + } + pipe(...operations) { + return pipeFromArray(operations)(this); + } + toPromise(promiseCtor) { + promiseCtor = getPromiseCtor(promiseCtor); + return new promiseCtor((resolve, reject) => { + let value; + this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value)); + }); + } +}; +Observable.create = (subscribe) => { + return new Observable(subscribe); +}; +function getPromiseCtor(promiseCtor) { + var _a; + return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise; +} +function isObserver(value) { + return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete); +} +function isSubscriber(value) { + return value && value instanceof Subscriber || isObserver(value) && isSubscription(value); +} + +// node_modules/rxjs/dist/esm/internal/util/lift.js +function hasLift(source) { + return isFunction(source === null || source === void 0 ? void 0 : source.lift); +} +function operate(init) { + return (source) => { + if (hasLift(source)) { + return source.lift(function(liftedSource) { + try { + return init(liftedSource, this); + } catch (err) { + this.error(err); + } + }); + } + throw new TypeError("Unable to lift unknown Observable type"); + }; +} + +// node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js +function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { + return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); +} +var OperatorSubscriber = class extends Subscriber { + constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { + super(destination); + this.onFinalize = onFinalize; + this.shouldUnsubscribe = shouldUnsubscribe; + this._next = onNext ? function(value) { + try { + onNext(value); + } catch (err) { + destination.error(err); + } + } : super._next; + this._error = onError ? function(err) { + try { + onError(err); + } catch (err2) { + destination.error(err2); + } finally { + this.unsubscribe(); + } + } : super._error; + this._complete = onComplete ? function() { + try { + onComplete(); + } catch (err) { + destination.error(err); + } finally { + this.unsubscribe(); + } + } : super._complete; + } + unsubscribe() { + var _a; + if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { + const { closed } = this; + super.unsubscribe(); + !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); + } + } +}; + +// node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js +var ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() { + _super(this); + this.name = "ObjectUnsubscribedError"; + this.message = "object unsubscribed"; +}); + +// node_modules/rxjs/dist/esm/internal/Subject.js +var Subject = class extends Observable { + constructor() { + super(); + this.closed = false; + this.currentObservers = null; + this.observers = []; + this.isStopped = false; + this.hasError = false; + this.thrownError = null; + } + lift(operator) { + const subject = new AnonymousSubject(this, this); + subject.operator = operator; + return subject; + } + _throwIfClosed() { + if (this.closed) { + throw new ObjectUnsubscribedError(); + } + } + next(value) { + errorContext(() => { + this._throwIfClosed(); + if (!this.isStopped) { + if (!this.currentObservers) { + this.currentObservers = Array.from(this.observers); + } + for (const observer of this.currentObservers) { + observer.next(value); + } + } + }); + } + error(err) { + errorContext(() => { + this._throwIfClosed(); + if (!this.isStopped) { + this.hasError = this.isStopped = true; + this.thrownError = err; + const { observers } = this; + while (observers.length) { + observers.shift().error(err); + } + } + }); + } + complete() { + errorContext(() => { + this._throwIfClosed(); + if (!this.isStopped) { + this.isStopped = true; + const { observers } = this; + while (observers.length) { + observers.shift().complete(); + } + } + }); + } + unsubscribe() { + this.isStopped = this.closed = true; + this.observers = this.currentObservers = null; + } + get observed() { + var _a; + return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; + } + _trySubscribe(subscriber) { + this._throwIfClosed(); + return super._trySubscribe(subscriber); + } + _subscribe(subscriber) { + this._throwIfClosed(); + this._checkFinalizedStatuses(subscriber); + return this._innerSubscribe(subscriber); + } + _innerSubscribe(subscriber) { + const { hasError, isStopped, observers } = this; + if (hasError || isStopped) { + return EMPTY_SUBSCRIPTION; + } + this.currentObservers = null; + observers.push(subscriber); + return new Subscription(() => { + this.currentObservers = null; + arrRemove(observers, subscriber); + }); + } + _checkFinalizedStatuses(subscriber) { + const { hasError, thrownError, isStopped } = this; + if (hasError) { + subscriber.error(thrownError); + } else if (isStopped) { + subscriber.complete(); + } + } + asObservable() { + const observable2 = new Observable(); + observable2.source = this; + return observable2; + } +}; +Subject.create = (destination, source) => { + return new AnonymousSubject(destination, source); +}; +var AnonymousSubject = class extends Subject { + constructor(destination, source) { + super(); + this.destination = destination; + this.source = source; + } + next(value) { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); + } + error(err) { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); + } + complete() { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); + } + _subscribe(subscriber) { + var _a, _b; + return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; + } +}; + +// node_modules/rxjs/dist/esm/internal/BehaviorSubject.js +var BehaviorSubject = class extends Subject { + constructor(_value) { + super(); + this._value = _value; + } + get value() { + return this.getValue(); + } + _subscribe(subscriber) { + const subscription = super._subscribe(subscriber); + !subscription.closed && subscriber.next(this._value); + return subscription; + } + getValue() { + const { hasError, thrownError, _value } = this; + if (hasError) { + throw thrownError; + } + this._throwIfClosed(); + return _value; + } + next(value) { + super.next(this._value = value); + } +}; + +// node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js +var dateTimestampProvider = { + now() { + return (dateTimestampProvider.delegate || Date).now(); + }, + delegate: void 0 +}; + +// node_modules/rxjs/dist/esm/internal/scheduler/Action.js +var Action = class extends Subscription { + constructor(scheduler, work) { + super(); + } + schedule(state, delay = 0) { + return this; + } +}; + +// node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js +var intervalProvider = { + setInterval(handler, timeout2, ...args) { + const { delegate } = intervalProvider; + if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) { + return delegate.setInterval(handler, timeout2, ...args); + } + return setInterval(handler, timeout2, ...args); + }, + clearInterval(handle) { + const { delegate } = intervalProvider; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle); + }, + delegate: void 0 +}; + +// node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js +var AsyncAction = class extends Action { + constructor(scheduler, work) { + super(scheduler, work); + this.scheduler = scheduler; + this.work = work; + this.pending = false; + } + schedule(state, delay = 0) { + var _a; + if (this.closed) { + return this; + } + this.state = state; + const id = this.id; + const scheduler = this.scheduler; + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, delay); + } + this.pending = true; + this.delay = delay; + this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay); + return this; + } + requestAsyncId(scheduler, _id, delay = 0) { + return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay); + } + recycleAsyncId(_scheduler, id, delay = 0) { + if (delay != null && this.delay === delay && this.pending === false) { + return id; + } + if (id != null) { + intervalProvider.clearInterval(id); + } + return void 0; + } + execute(state, delay) { + if (this.closed) { + return new Error("executing a cancelled action"); + } + this.pending = false; + const error = this._execute(state, delay); + if (error) { + return error; + } else if (this.pending === false && this.id != null) { + this.id = this.recycleAsyncId(this.scheduler, this.id, null); + } + } + _execute(state, _delay) { + let errored = false; + let errorValue; + try { + this.work(state); + } catch (e) { + errored = true; + errorValue = e ? e : new Error("Scheduled action threw falsy error"); + } + if (errored) { + this.unsubscribe(); + return errorValue; + } + } + unsubscribe() { + if (!this.closed) { + const { id, scheduler } = this; + const { actions } = scheduler; + this.work = this.state = this.scheduler = null; + this.pending = false; + arrRemove(actions, this); + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, null); + } + this.delay = null; + super.unsubscribe(); + } + } +}; + +// node_modules/rxjs/dist/esm/internal/Scheduler.js +var Scheduler = class _Scheduler { + constructor(schedulerActionCtor, now = _Scheduler.now) { + this.schedulerActionCtor = schedulerActionCtor; + this.now = now; + } + schedule(work, delay = 0, state) { + return new this.schedulerActionCtor(this, work).schedule(state, delay); + } +}; +Scheduler.now = dateTimestampProvider.now; + +// node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js +var AsyncScheduler = class extends Scheduler { + constructor(SchedulerAction, now = Scheduler.now) { + super(SchedulerAction, now); + this.actions = []; + this._active = false; + } + flush(action) { + const { actions } = this; + if (this._active) { + actions.push(action); + return; + } + let error; + this._active = true; + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (action = actions.shift()); + this._active = false; + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + } +}; + +// node_modules/rxjs/dist/esm/internal/scheduler/async.js +var asyncScheduler = new AsyncScheduler(AsyncAction); + +// node_modules/rxjs/dist/esm/internal/observable/empty.js +var EMPTY = new Observable((subscriber) => subscriber.complete()); + +// node_modules/rxjs/dist/esm/internal/util/isScheduler.js +function isScheduler(value) { + return value && isFunction(value.schedule); +} + +// node_modules/rxjs/dist/esm/internal/util/args.js +function last(arr) { + return arr[arr.length - 1]; +} +function popResultSelector(args) { + return isFunction(last(args)) ? args.pop() : void 0; +} +function popScheduler(args) { + return isScheduler(last(args)) ? args.pop() : void 0; +} + +// node_modules/tslib/tslib.es6.mjs +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() { + return this; + }, i; + function awaitReturn(f) { + return function(v) { + return Promise.resolve(v).then(f, reject); + }; + } + function verb(n, f) { + if (g[n]) { + i[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + if (f) i[n] = f(i[n]); + } + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); + } +} +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function(v) { + return new Promise(function(resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ value: v2, done: d }); + }, reject); + } +} + +// node_modules/rxjs/dist/esm/internal/util/isArrayLike.js +var isArrayLike = ((x) => x && typeof x.length === "number" && typeof x !== "function"); + +// node_modules/rxjs/dist/esm/internal/util/isPromise.js +function isPromise(value) { + return isFunction(value === null || value === void 0 ? void 0 : value.then); +} + +// node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js +function isInteropObservable(input2) { + return isFunction(input2[observable]); +} + +// node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js +function isAsyncIterable(obj) { + return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); +} + +// node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js +function createInvalidObservableTypeError(input2) { + return new TypeError(`You provided ${input2 !== null && typeof input2 === "object" ? "an invalid object" : `'${input2}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`); +} + +// node_modules/rxjs/dist/esm/internal/symbol/iterator.js +function getSymbolIterator() { + if (typeof Symbol !== "function" || !Symbol.iterator) { + return "@@iterator"; + } + return Symbol.iterator; +} +var iterator = getSymbolIterator(); + +// node_modules/rxjs/dist/esm/internal/util/isIterable.js +function isIterable(input2) { + return isFunction(input2 === null || input2 === void 0 ? void 0 : input2[iterator]); +} + +// node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js +function readableStreamLikeToAsyncGenerator(readableStream) { + return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() { + const reader = readableStream.getReader(); + try { + while (true) { + const { value, done } = yield __await(reader.read()); + if (done) { + return yield __await(void 0); + } + yield yield __await(value); + } + } finally { + reader.releaseLock(); + } + }); +} +function isReadableStreamLike(obj) { + return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader); +} + +// node_modules/rxjs/dist/esm/internal/observable/innerFrom.js +function innerFrom(input2) { + if (input2 instanceof Observable) { + return input2; + } + if (input2 != null) { + if (isInteropObservable(input2)) { + return fromInteropObservable(input2); + } + if (isArrayLike(input2)) { + return fromArrayLike(input2); + } + if (isPromise(input2)) { + return fromPromise(input2); + } + if (isAsyncIterable(input2)) { + return fromAsyncIterable(input2); + } + if (isIterable(input2)) { + return fromIterable(input2); + } + if (isReadableStreamLike(input2)) { + return fromReadableStreamLike(input2); + } + } + throw createInvalidObservableTypeError(input2); +} +function fromInteropObservable(obj) { + return new Observable((subscriber) => { + const obs = obj[observable](); + if (isFunction(obs.subscribe)) { + return obs.subscribe(subscriber); + } + throw new TypeError("Provided object does not correctly implement Symbol.observable"); + }); +} +function fromArrayLike(array) { + return new Observable((subscriber) => { + for (let i = 0; i < array.length && !subscriber.closed; i++) { + subscriber.next(array[i]); + } + subscriber.complete(); + }); +} +function fromPromise(promise) { + return new Observable((subscriber) => { + promise.then((value) => { + if (!subscriber.closed) { + subscriber.next(value); + subscriber.complete(); + } + }, (err) => subscriber.error(err)).then(null, reportUnhandledError); + }); +} +function fromIterable(iterable) { + return new Observable((subscriber) => { + for (const value of iterable) { + subscriber.next(value); + if (subscriber.closed) { + return; + } + } + subscriber.complete(); + }); +} +function fromAsyncIterable(asyncIterable) { + return new Observable((subscriber) => { + process(asyncIterable, subscriber).catch((err) => subscriber.error(err)); + }); +} +function fromReadableStreamLike(readableStream) { + return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream)); +} +function process(asyncIterable, subscriber) { + var asyncIterable_1, asyncIterable_1_1; + var e_1, _a; + return __awaiter(this, void 0, void 0, function* () { + try { + for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done; ) { + const value = asyncIterable_1_1.value; + subscriber.next(value); + if (subscriber.closed) { + return; + } + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1); + } finally { + if (e_1) throw e_1.error; + } + } + subscriber.complete(); + }); +} + +// node_modules/rxjs/dist/esm/internal/util/executeSchedule.js +function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) { + const scheduleSubscription = scheduler.schedule(function() { + work(); + if (repeat) { + parentSubscription.add(this.schedule(null, delay)); + } else { + this.unsubscribe(); + } + }, delay); + parentSubscription.add(scheduleSubscription); + if (!repeat) { + return scheduleSubscription; + } +} + +// node_modules/rxjs/dist/esm/internal/operators/observeOn.js +function observeOn(scheduler, delay = 0) { + return operate((source, subscriber) => { + source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay))); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js +function subscribeOn(scheduler, delay = 0) { + return operate((source, subscriber) => { + subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay)); + }); +} + +// node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js +function scheduleObservable(input2, scheduler) { + return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler)); +} + +// node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js +function schedulePromise(input2, scheduler) { + return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler)); +} + +// node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js +function scheduleArray(input2, scheduler) { + return new Observable((subscriber) => { + let i = 0; + return scheduler.schedule(function() { + if (i === input2.length) { + subscriber.complete(); + } else { + subscriber.next(input2[i++]); + if (!subscriber.closed) { + this.schedule(); + } + } + }); + }); +} + +// node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js +function scheduleIterable(input2, scheduler) { + return new Observable((subscriber) => { + let iterator2; + executeSchedule(subscriber, scheduler, () => { + iterator2 = input2[iterator](); + executeSchedule(subscriber, scheduler, () => { + let value; + let done; + try { + ({ value, done } = iterator2.next()); + } catch (err) { + subscriber.error(err); + return; + } + if (done) { + subscriber.complete(); + } else { + subscriber.next(value); + } + }, 0, true); + }); + return () => isFunction(iterator2 === null || iterator2 === void 0 ? void 0 : iterator2.return) && iterator2.return(); + }); +} + +// node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js +function scheduleAsyncIterable(input2, scheduler) { + if (!input2) { + throw new Error("Iterable cannot be null"); + } + return new Observable((subscriber) => { + executeSchedule(subscriber, scheduler, () => { + const iterator2 = input2[Symbol.asyncIterator](); + executeSchedule(subscriber, scheduler, () => { + iterator2.next().then((result) => { + if (result.done) { + subscriber.complete(); + } else { + subscriber.next(result.value); + } + }); + }, 0, true); + }); + }); +} + +// node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js +function scheduleReadableStreamLike(input2, scheduler) { + return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input2), scheduler); +} + +// node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js +function scheduled(input2, scheduler) { + if (input2 != null) { + if (isInteropObservable(input2)) { + return scheduleObservable(input2, scheduler); + } + if (isArrayLike(input2)) { + return scheduleArray(input2, scheduler); + } + if (isPromise(input2)) { + return schedulePromise(input2, scheduler); + } + if (isAsyncIterable(input2)) { + return scheduleAsyncIterable(input2, scheduler); + } + if (isIterable(input2)) { + return scheduleIterable(input2, scheduler); + } + if (isReadableStreamLike(input2)) { + return scheduleReadableStreamLike(input2, scheduler); + } + } + throw createInvalidObservableTypeError(input2); +} + +// node_modules/rxjs/dist/esm/internal/observable/from.js +function from(input2, scheduler) { + return scheduler ? scheduled(input2, scheduler) : innerFrom(input2); +} + +// node_modules/rxjs/dist/esm/internal/observable/of.js +function of(...args) { + const scheduler = popScheduler(args); + return from(args, scheduler); +} + +// node_modules/rxjs/dist/esm/internal/observable/throwError.js +function throwError(errorOrErrorFactory, scheduler) { + const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory; + const init = (subscriber) => subscriber.error(errorFactory()); + return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init); +} + +// node_modules/rxjs/dist/esm/internal/util/isObservable.js +function isObservable(obj) { + return !!obj && (obj instanceof Observable || isFunction(obj.lift) && isFunction(obj.subscribe)); +} + +// node_modules/rxjs/dist/esm/internal/util/EmptyError.js +var EmptyError = createErrorClass((_super) => function EmptyErrorImpl() { + _super(this); + this.name = "EmptyError"; + this.message = "no elements in sequence"; +}); + +// node_modules/rxjs/dist/esm/internal/util/isDate.js +function isValidDate(value) { + return value instanceof Date && !isNaN(value); +} + +// node_modules/rxjs/dist/esm/internal/operators/timeout.js +var TimeoutError = createErrorClass((_super) => function TimeoutErrorImpl(info = null) { + _super(this); + this.message = "Timeout has occurred"; + this.name = "TimeoutError"; + this.info = info; +}); +function timeout(config2, schedulerArg) { + const { first: first2, each, with: _with = timeoutErrorFactory, scheduler = schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler, meta = null } = isValidDate(config2) ? { first: config2 } : typeof config2 === "number" ? { each: config2 } : config2; + if (first2 == null && each == null) { + throw new TypeError("No timeout provided."); + } + return operate((source, subscriber) => { + let originalSourceSubscription; + let timerSubscription; + let lastValue = null; + let seen = 0; + const startTimer = (delay) => { + timerSubscription = executeSchedule(subscriber, scheduler, () => { + try { + originalSourceSubscription.unsubscribe(); + innerFrom(_with({ + meta, + lastValue, + seen + })).subscribe(subscriber); + } catch (err) { + subscriber.error(err); + } + }, delay); + }; + originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, (value) => { + timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); + seen++; + subscriber.next(lastValue = value); + each > 0 && startTimer(each); + }, void 0, void 0, () => { + if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) { + timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); + } + lastValue = null; + })); + !seen && startTimer(first2 != null ? typeof first2 === "number" ? first2 : +first2 - scheduler.now() : each); + }); +} +function timeoutErrorFactory(info) { + throw new TimeoutError(info); +} + +// node_modules/rxjs/dist/esm/internal/operators/map.js +function map(project, thisArg) { + return operate((source, subscriber) => { + let index = 0; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + subscriber.next(project.call(thisArg, value, index++)); + })); + }); +} + +// node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js +var { isArray } = Array; +function callOrApply(fn, args) { + return isArray(args) ? fn(...args) : fn(args); +} +function mapOneOrManyArgs(fn) { + return map((args) => callOrApply(fn, args)); +} + +// node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js +var { isArray: isArray2 } = Array; +var { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object; +function argsArgArrayOrObject(args) { + if (args.length === 1) { + const first2 = args[0]; + if (isArray2(first2)) { + return { args: first2, keys: null }; + } + if (isPOJO(first2)) { + const keys = getKeys(first2); + return { + args: keys.map((key) => first2[key]), + keys + }; + } + } + return { args, keys: null }; +} +function isPOJO(obj) { + return obj && typeof obj === "object" && getPrototypeOf(obj) === objectProto; +} + +// node_modules/rxjs/dist/esm/internal/util/createObject.js +function createObject(keys, values) { + return keys.reduce((result, key, i) => (result[key] = values[i], result), {}); +} + +// node_modules/rxjs/dist/esm/internal/observable/combineLatest.js +function combineLatest(...args) { + const scheduler = popScheduler(args); + const resultSelector = popResultSelector(args); + const { args: observables, keys } = argsArgArrayOrObject(args); + if (observables.length === 0) { + return from([], scheduler); + } + const result = new Observable(combineLatestInit(observables, scheduler, keys ? (values) => createObject(keys, values) : identity)); + return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result; +} +function combineLatestInit(observables, scheduler, valueTransform = identity) { + return (subscriber) => { + maybeSchedule(scheduler, () => { + const { length } = observables; + const values = new Array(length); + let active = length; + let remainingFirstValues = length; + for (let i = 0; i < length; i++) { + maybeSchedule(scheduler, () => { + const source = from(observables[i], scheduler); + let hasFirstValue = false; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + values[i] = value; + if (!hasFirstValue) { + hasFirstValue = true; + remainingFirstValues--; + } + if (!remainingFirstValues) { + subscriber.next(valueTransform(values.slice())); + } + }, () => { + if (!--active) { + subscriber.complete(); + } + })); + }, subscriber); + } + }, subscriber); + }; +} +function maybeSchedule(scheduler, execute, subscription) { + if (scheduler) { + executeSchedule(subscription, scheduler, execute); + } else { + execute(); + } +} + +// node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js +function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) { + const buffer = []; + let active = 0; + let index = 0; + let isComplete = false; + const checkComplete = () => { + if (isComplete && !buffer.length && !active) { + subscriber.complete(); + } + }; + const outerNext = (value) => active < concurrent ? doInnerSub(value) : buffer.push(value); + const doInnerSub = (value) => { + expand && subscriber.next(value); + active++; + let innerComplete = false; + innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => { + onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue); + if (expand) { + outerNext(innerValue); + } else { + subscriber.next(innerValue); + } + }, () => { + innerComplete = true; + }, void 0, () => { + if (innerComplete) { + try { + active--; + while (buffer.length && active < concurrent) { + const bufferedValue = buffer.shift(); + if (innerSubScheduler) { + executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue)); + } else { + doInnerSub(bufferedValue); + } + } + checkComplete(); + } catch (err) { + subscriber.error(err); + } + } + })); + }; + source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => { + isComplete = true; + checkComplete(); + })); + return () => { + additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer(); + }; +} + +// node_modules/rxjs/dist/esm/internal/operators/mergeMap.js +function mergeMap(project, resultSelector, concurrent = Infinity) { + if (isFunction(resultSelector)) { + return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent); + } else if (typeof resultSelector === "number") { + concurrent = resultSelector; + } + return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent)); +} + +// node_modules/rxjs/dist/esm/internal/operators/mergeAll.js +function mergeAll(concurrent = Infinity) { + return mergeMap(identity, concurrent); +} + +// node_modules/rxjs/dist/esm/internal/operators/concatAll.js +function concatAll() { + return mergeAll(1); +} + +// node_modules/rxjs/dist/esm/internal/observable/concat.js +function concat(...args) { + return concatAll()(from(args, popScheduler(args))); +} + +// node_modules/rxjs/dist/esm/internal/observable/defer.js +function defer(observableFactory) { + return new Observable((subscriber) => { + innerFrom(observableFactory()).subscribe(subscriber); + }); +} + +// node_modules/rxjs/dist/esm/internal/observable/forkJoin.js +function forkJoin(...args) { + const resultSelector = popResultSelector(args); + const { args: sources, keys } = argsArgArrayOrObject(args); + const result = new Observable((subscriber) => { + const { length } = sources; + if (!length) { + subscriber.complete(); + return; + } + const values = new Array(length); + let remainingCompletions = length; + let remainingEmissions = length; + for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) { + let hasValue = false; + innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => { + if (!hasValue) { + hasValue = true; + remainingEmissions--; + } + values[sourceIndex] = value; + }, () => remainingCompletions--, void 0, () => { + if (!remainingCompletions || !hasValue) { + if (!remainingEmissions) { + subscriber.next(keys ? createObject(keys, values) : values); + } + subscriber.complete(); + } + })); + } + }); + return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result; +} + +// node_modules/rxjs/dist/esm/internal/operators/filter.js +function filter(predicate, thisArg) { + return operate((source, subscriber) => { + let index = 0; + source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/catchError.js +function catchError(selector) { + return operate((source, subscriber) => { + let innerSub = null; + let syncUnsub = false; + let handledResult; + innerSub = source.subscribe(createOperatorSubscriber(subscriber, void 0, void 0, (err) => { + handledResult = innerFrom(selector(err, catchError(selector)(source))); + if (innerSub) { + innerSub.unsubscribe(); + innerSub = null; + handledResult.subscribe(subscriber); + } else { + syncUnsub = true; + } + })); + if (syncUnsub) { + innerSub.unsubscribe(); + innerSub = null; + handledResult.subscribe(subscriber); + } + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/concatMap.js +function concatMap(project, resultSelector) { + return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1); +} + +// node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js +function defaultIfEmpty(defaultValue) { + return operate((source, subscriber) => { + let hasValue = false; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + hasValue = true; + subscriber.next(value); + }, () => { + if (!hasValue) { + subscriber.next(defaultValue); + } + subscriber.complete(); + })); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/take.js +function take(count) { + return count <= 0 ? () => EMPTY : operate((source, subscriber) => { + let seen = 0; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + if (++seen <= count) { + subscriber.next(value); + if (count <= seen) { + subscriber.complete(); + } + } + })); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js +function throwIfEmpty(errorFactory = defaultErrorFactory) { + return operate((source, subscriber) => { + let hasValue = false; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + hasValue = true; + subscriber.next(value); + }, () => hasValue ? subscriber.complete() : subscriber.error(errorFactory()))); + }); +} +function defaultErrorFactory() { + return new EmptyError(); +} + +// node_modules/rxjs/dist/esm/internal/operators/finalize.js +function finalize(callback) { + return operate((source, subscriber) => { + try { + source.subscribe(subscriber); + } finally { + subscriber.add(callback); + } + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/first.js +function first(predicate, defaultValue) { + const hasDefaultValue = arguments.length >= 2; + return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError())); +} + +// node_modules/rxjs/dist/esm/internal/operators/takeLast.js +function takeLast(count) { + return count <= 0 ? () => EMPTY : operate((source, subscriber) => { + let buffer = []; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + buffer.push(value); + count < buffer.length && buffer.shift(); + }, () => { + for (const value of buffer) { + subscriber.next(value); + } + subscriber.complete(); + }, void 0, () => { + buffer = null; + })); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/startWith.js +function startWith(...values) { + const scheduler = popScheduler(values); + return operate((source, subscriber) => { + (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/switchMap.js +function switchMap(project, resultSelector) { + return operate((source, subscriber) => { + let innerSubscriber = null; + let index = 0; + let isComplete = false; + const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete(); + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe(); + let innerIndex = 0; + const outerIndex = index++; + innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => { + innerSubscriber = null; + checkComplete(); + })); + }, () => { + isComplete = true; + checkComplete(); + })); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/takeUntil.js +function takeUntil(notifier) { + return operate((source, subscriber) => { + innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop)); + !subscriber.closed && source.subscribe(subscriber); + }); +} + +// node_modules/rxjs/dist/esm/internal/operators/tap.js +function tap(observerOrNext, error, complete) { + const tapObserver = isFunction(observerOrNext) || error || complete ? { next: observerOrNext, error, complete } : observerOrNext; + return tapObserver ? operate((source, subscriber) => { + var _a; + (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); + let isUnsub = true; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + var _a2; + (_a2 = tapObserver.next) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, value); + subscriber.next(value); + }, () => { + var _a2; + isUnsub = false; + (_a2 = tapObserver.complete) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); + subscriber.complete(); + }, (err) => { + var _a2; + isUnsub = false; + (_a2 = tapObserver.error) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, err); + subscriber.error(err); + }, () => { + var _a2, _b; + if (isUnsub) { + (_a2 = tapObserver.unsubscribe) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); + } + (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver); + })); + }) : identity; +} + +// node_modules/@angular/core/fesm2022/_not_found-chunk.mjs +/** + * @license Angular v21.2.17 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + */ +var _currentInjector = void 0; +function getCurrentInjector() { + return _currentInjector; +} +function setCurrentInjector(injector) { + const former = _currentInjector; + _currentInjector = injector; + return former; +} +var NOT_FOUND = /* @__PURE__ */ Symbol("NotFound"); +function isNotFound(e) { + return e === NOT_FOUND || e?.name === "\u0275NotFound"; +} + +// node_modules/@angular/core/fesm2022/_untracked-chunk.mjs +/** + * @license Angular v21.2.17 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + */ +function createLinkedSignal(sourceFn, computationFn, equalityFn) { + const node = Object.create(LINKED_SIGNAL_NODE); + node.source = sourceFn; + node.computation = computationFn; + if (equalityFn != void 0) { + node.equal = equalityFn; + } + const linkedSignalGetter = () => { + producerUpdateValueVersion(node); + producerAccessed(node); + if (node.value === ERRORED) { + throw node.error; + } + return node.value; + }; + const getter = linkedSignalGetter; + getter[SIGNAL] = node; + if (typeof ngDevMode !== "undefined" && ngDevMode) { + getter.toString = () => `[LinkedSignal${node.debugName ? " (" + node.debugName + ")" : ""}: ${String(node.value)}]`; + } + runPostProducerCreatedFn(node); + return getter; +} +function linkedSignalSetFn(node, newValue) { + producerUpdateValueVersion(node); + signalSetFn(node, newValue); + producerMarkClean(node); +} +function linkedSignalUpdateFn(node, updater) { + producerUpdateValueVersion(node); + if (node.value === ERRORED) { + throw node.error; + } + signalUpdateFn(node, updater); + producerMarkClean(node); +} +var LINKED_SIGNAL_NODE = /* @__PURE__ */ (() => { + return __spreadProps(__spreadValues({}, REACTIVE_NODE), { + value: UNSET, + dirty: true, + error: null, + equal: defaultEquals, + kind: "linkedSignal", + producerMustRecompute(node) { + return node.value === UNSET || node.value === COMPUTING; + }, + producerRecomputeValue(node) { + if (node.value === COMPUTING) { + throw new Error(typeof ngDevMode !== "undefined" && ngDevMode ? "Detected cycle in computations." : ""); + } + const oldValue = node.value; + node.value = COMPUTING; + const prevConsumer = consumerBeforeComputation(node); + let newValue; + let wasEqual = false; + try { + const newSourceValue = node.source(); + const oldValueValid = oldValue !== UNSET && oldValue !== ERRORED; + const prev = oldValueValid ? { + source: node.sourceValue, + value: oldValue + } : void 0; + newValue = node.computation(newSourceValue, prev); + node.sourceValue = newSourceValue; + setActiveConsumer(null); + wasEqual = oldValueValid && newValue !== ERRORED && node.equal(oldValue, newValue); + } catch (err) { + newValue = ERRORED; + node.error = err; + } finally { + consumerAfterComputation(node, prevConsumer); + } + if (wasEqual) { + node.value = oldValue; + return; + } + node.value = newValue; + node.version++; + } + }); +})(); +function untracked(nonReactiveReadsFn) { + const prevConsumer = setActiveConsumer(null); + try { + return nonReactiveReadsFn(); + } finally { + setActiveConsumer(prevConsumer); + } +} + +// node_modules/@angular/core/fesm2022/primitives-signals.mjs +/** + * @license Angular v21.2.17 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + */ +var formatter = { + header: (sig, config2) => { + if (!isSignal(sig) || config2?.ngSkipFormatting) return null; + let value; + try { + value = sig(); + } catch (e) { + return ["span", `Signal(\u26A0\uFE0F Error)${e.message ? `: ${e.message}` : ""}`]; + } + const kind = "computation" in sig[SIGNAL] ? "Computed" : "Signal"; + const isPrimitive = value === null || !Array.isArray(value) && typeof value !== "object"; + return ["span", {}, ["span", {}, `${kind}(`], (() => { + if (isSignal(value)) { + return formatter.header(value, config2); + } else if (isPrimitive && value !== void 0 && typeof value !== "function") { + return ["object", { + object: value + }]; + } else { + return prettifyPreview(value); + } + })(), ["span", {}, `)`]]; + }, + hasBody: (sig, config2) => { + if (!isSignal(sig)) return false; + try { + sig(); + } catch { + return false; + } + return !config2?.ngSkipFormatting; + }, + body: (sig, config2) => { + const color = "var(--sys-color-primary)"; + return ["div", { + style: `background: #FFFFFF10; padding-left: 4px; padding-top: 2px; padding-bottom: 2px;` + }, ["div", { + style: `color: ${color}` + }, "Signal value: "], ["div", { + style: `padding-left: .5rem;` + }, ["object", { + object: sig(), + config: config2 + }]], ["div", { + style: `color: ${color}` + }, "Signal function: "], ["div", { + style: `padding-left: .5rem;` + }, ["object", { + object: sig, + config: __spreadProps(__spreadValues({}, config2), { + ngSkipFormatting: true + }) + }]]]; + } +}; +function prettifyPreview(value) { + if (value === null) return "null"; + if (Array.isArray(value)) return `Array(${value.length})`; + if (value instanceof Element) return `<${value.tagName.toLowerCase()}>`; + if (value instanceof URL) return `URL`; + switch (typeof value) { + case "undefined": { + return "undefined"; + } + case "function": { + if ("prototype" in value) { + return "class"; + } else { + return "() => {\u2026}"; + } + } + case "object": { + if (value.constructor.name === "Object") { + return "{\u2026}"; + } else { + return `${value.constructor.name} {}`; + } + } + default: { + return ["object", { + object: value, + config: { + ngSkipFormatting: true + } + }]; + } + } +} +function isSignal(value) { + return value[SIGNAL] !== void 0; +} +function installDevToolsSignalFormatter() { + globalThis.devtoolsFormatters ??= []; + if (!globalThis.devtoolsFormatters.some((f) => f === formatter)) { + globalThis.devtoolsFormatters.push(formatter); + } +} +if (typeof ngDevMode === "undefined" || ngDevMode) { + installDevToolsSignalFormatter(); +} + +// node_modules/@angular/core/fesm2022/primitives-di.mjs +/** + * @license Angular v21.2.17 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + */ + +// node_modules/@angular/core/fesm2022/_effect-chunk2.mjs +/** + * @license Angular v21.2.17 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + */ +var Version = class { + full; + major; + minor; + patch; + constructor(full) { + this.full = full; + const parts = full.split("."); + this.major = parts[0]; + this.minor = parts[1]; + this.patch = parts.slice(2).join("."); + } +}; +var VERSION = /* @__PURE__ */ new Version("21.2.17"); +var DOC_PAGE_BASE_URL = (() => { + const full = VERSION.full; + const isPreRelease = full.includes("-next") || full.includes("-rc") || full === "0.0.0-PLACEHOLDER"; + const prefix = isPreRelease ? "next" : `v${VERSION.major}`; + return `https://${prefix}.angular.dev`; +})(); +var ERROR_DETAILS_PAGE_BASE_URL = (() => { + return `${DOC_PAGE_BASE_URL}/errors`; +})(); +var XSS_SECURITY_URL = "https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss"; +var RuntimeError = class extends Error { + code; + constructor(code, message) { + super(formatRuntimeError(code, message)); + this.code = code; + } +}; +function formatRuntimeErrorCode(code) { + return `NG0${Math.abs(code)}`; +} +function formatRuntimeError(code, message) { + const fullCode = formatRuntimeErrorCode(code); + let errorMessage = `${fullCode}${message ? ": " + message : ""}`; + if (ngDevMode && code < 0) { + const addPeriodSeparator = !errorMessage.match(/[.,;!?\n]$/); + const separator = addPeriodSeparator ? "." : ""; + errorMessage = `${errorMessage}${separator} Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/${fullCode}`; + } + return errorMessage; +} +var _global = globalThis; +function ngDevModeResetPerfCounters() { + const locationString = typeof location !== "undefined" ? location.toString() : ""; + const newCounters = { + hydratedNodes: 0, + hydratedComponents: 0, + dehydratedViewsRemoved: 0, + dehydratedViewsCleanupRuns: 0, + componentsSkippedHydration: 0, + deferBlocksWithIncrementalHydration: 0 + }; + const allowNgDevModeTrue = locationString.indexOf("ngDevMode=false") === -1; + if (!allowNgDevModeTrue) { + _global["ngDevMode"] = false; + } else { + if (typeof _global["ngDevMode"] !== "object") { + _global["ngDevMode"] = {}; + } + Object.assign(_global["ngDevMode"], newCounters); + } + return newCounters; +} +function initNgDevMode() { + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (typeof ngDevMode !== "object" || Object.keys(ngDevMode).length === 0) { + ngDevModeResetPerfCounters(); + } + return typeof ngDevMode !== "undefined" && !!ngDevMode; + } + return false; +} +function getClosureSafeProperty(objWithPropertyToExtract) { + for (let key in objWithPropertyToExtract) { + if (objWithPropertyToExtract[key] === getClosureSafeProperty) { + return key; + } + } + throw Error(typeof ngDevMode !== "undefined" && ngDevMode ? "Could not find renamed property on target object." : ""); +} +function fillProperties(target, source) { + for (const key in source) { + if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) { + target[key] = source[key]; + } + } +} +function stringify(token) { + if (typeof token === "string") { + return token; + } + if (Array.isArray(token)) { + return `[${token.map(stringify).join(", ")}]`; + } + if (token == null) { + return "" + token; + } + const name = token.overriddenName || token.name; + if (name) { + return `${name}`; + } + const result = token.toString(); + if (result == null) { + return "" + result; + } + const newLineIndex = result.indexOf("\n"); + return newLineIndex >= 0 ? result.slice(0, newLineIndex) : result; +} +function concatStringsWithSpace(before, after) { + if (!before) return after || ""; + if (!after) return before; + return `${before} ${after}`; +} +function truncateMiddle(str, maxLength = 100) { + if (!str || maxLength < 1 || str.length <= maxLength) return str; + if (maxLength == 1) return str.substring(0, 1) + "..."; + const halfLimit = Math.round(maxLength / 2); + return str.substring(0, halfLimit) + "..." + str.substring(str.length - halfLimit); +} +var __forward_ref__ = getClosureSafeProperty({ + __forward_ref__: getClosureSafeProperty +}); +function forwardRef(forwardRefFn) { + forwardRefFn.__forward_ref__ = forwardRef; + if (ngDevMode) { + forwardRefFn.toString = function() { + return stringify(this()); + }; + } + return forwardRefFn; +} +function resolveForwardRef(type) { + return isForwardRef(type) ? type() : type; +} +function isForwardRef(fn) { + return typeof fn === "function" && fn.hasOwnProperty(__forward_ref__) && fn.__forward_ref__ === forwardRef; +} +function assertNumber(actual, msg) { + if (!(typeof actual === "number")) { + throwError2(msg, typeof actual, "number", "==="); + } +} +function assertNumberInRange(actual, minInclusive, maxInclusive) { + assertNumber(actual, "Expected a number"); + assertLessThanOrEqual(actual, maxInclusive, "Expected number to be less than or equal to"); + assertGreaterThanOrEqual(actual, minInclusive, "Expected number to be greater than or equal to"); +} +function assertString(actual, msg) { + if (!(typeof actual === "string")) { + throwError2(msg, actual === null ? "null" : typeof actual, "string", "==="); + } +} +function assertFunction(actual, msg) { + if (!(typeof actual === "function")) { + throwError2(msg, actual === null ? "null" : typeof actual, "function", "==="); + } +} +function assertEqual(actual, expected, msg) { + if (!(actual == expected)) { + throwError2(msg, actual, expected, "=="); + } +} +function assertNotEqual(actual, expected, msg) { + if (!(actual != expected)) { + throwError2(msg, actual, expected, "!="); + } +} +function assertSame(actual, expected, msg) { + if (!(actual === expected)) { + throwError2(msg, actual, expected, "==="); + } +} +function assertNotSame(actual, expected, msg) { + if (!(actual !== expected)) { + throwError2(msg, actual, expected, "!=="); + } +} +function assertLessThan(actual, expected, msg) { + if (!(actual < expected)) { + throwError2(msg, actual, expected, "<"); + } +} +function assertLessThanOrEqual(actual, expected, msg) { + if (!(actual <= expected)) { + throwError2(msg, actual, expected, "<="); + } +} +function assertGreaterThan(actual, expected, msg) { + if (!(actual > expected)) { + throwError2(msg, actual, expected, ">"); + } +} +function assertGreaterThanOrEqual(actual, expected, msg) { + if (!(actual >= expected)) { + throwError2(msg, actual, expected, ">="); + } +} +function assertDefined(actual, msg) { + if (actual == null) { + throwError2(msg, actual, null, "!="); + } +} +function throwError2(msg, actual, expected, comparison) { + throw new Error(`ASSERTION ERROR: ${msg}` + (comparison == null ? "" : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`)); +} +function assertDomNode(node) { + if (!(node instanceof Node)) { + throwError2(`The provided value must be an instance of a DOM Node but got ${stringify(node)}`); + } +} +function assertElement(node) { + if (!(node instanceof Element)) { + throwError2(`The provided value must be an element but got ${stringify(node)}`); + } +} +function assertIndexInRange(arr, index) { + assertDefined(arr, "Array must be defined."); + const maxLen = arr.length; + if (index < 0 || index >= maxLen) { + throwError2(`Index expected to be less than ${maxLen} but got ${index}`); + } +} +function assertOneOf(value, ...validValues) { + if (validValues.indexOf(value) !== -1) return true; + throwError2(`Expected value to be one of ${JSON.stringify(validValues)} but was ${JSON.stringify(value)}.`); +} +function assertNotReactive(fn) { + if (getActiveConsumer() !== null) { + throwError2(`${fn}() should never be called in a reactive context.`); + } +} +function \u0275\u0275defineInjectable(opts) { + return { + token: opts.token, + providedIn: opts.providedIn || null, + factory: opts.factory, + value: void 0 + }; +} +function \u0275\u0275defineInjector(options) { + return { + providers: options.providers || [], + imports: options.imports || [] + }; +} +function getInjectableDef(type) { + return getOwnDefinition(type, NG_PROV_DEF); +} +function isInjectable(type) { + return getInjectableDef(type) !== null; +} +function getOwnDefinition(type, field) { + return type.hasOwnProperty(field) && type[field] || null; +} +function getInheritedInjectableDef(type) { + const def = type?.[NG_PROV_DEF] ?? null; + if (def) { + ngDevMode && console.warn(`DEPRECATED: DI is instantiating a token "${type.name}" that inherits its @Injectable decorator but does not provide one itself. +This will become an error in a future version of Angular. Please add @Injectable() to the "${type.name}" class.`); + return def; + } else { + return null; + } +} +function getInjectorDef(type) { + return type && type.hasOwnProperty(NG_INJ_DEF) ? type[NG_INJ_DEF] : null; +} +var NG_PROV_DEF = getClosureSafeProperty({ + \u0275prov: getClosureSafeProperty +}); +var NG_INJ_DEF = getClosureSafeProperty({ + \u0275inj: getClosureSafeProperty +}); +var InjectionToken = class { + _desc; + ngMetadataName = "InjectionToken"; + \u0275prov; + constructor(_desc, options) { + this._desc = _desc; + this.\u0275prov = void 0; + if (typeof options == "number") { + (typeof ngDevMode === "undefined" || ngDevMode) && assertLessThan(options, 0, "Only negative numbers are supported here"); + this.__NG_ELEMENT_ID__ = options; + } else if (options !== void 0) { + this.\u0275prov = \u0275\u0275defineInjectable({ + token: this, + providedIn: options.providedIn || "root", + factory: options.factory + }); + } + } + get multi() { + return this; + } + toString() { + return `InjectionToken ${this._desc}`; + } +}; +var _injectorProfilerContext; +function getInjectorProfilerContext() { + !ngDevMode && throwError2("getInjectorProfilerContext should never be called in production mode"); + return _injectorProfilerContext; +} +function setInjectorProfilerContext(context2) { + !ngDevMode && throwError2("setInjectorProfilerContext should never be called in production mode"); + const previous = _injectorProfilerContext; + _injectorProfilerContext = context2; + return previous; +} +var injectorProfilerCallbacks = []; +var NOOP_PROFILER_REMOVAL = () => { +}; +function removeProfiler(profiler2) { + const profilerIdx = injectorProfilerCallbacks.indexOf(profiler2); + if (profilerIdx !== -1) { + injectorProfilerCallbacks.splice(profilerIdx, 1); + } +} +function setInjectorProfiler(injectorProfiler2) { + !ngDevMode && throwError2("setInjectorProfiler should never be called in production mode"); + if (injectorProfiler2 !== null) { + if (!injectorProfilerCallbacks.includes(injectorProfiler2)) { + injectorProfilerCallbacks.push(injectorProfiler2); + } + return () => removeProfiler(injectorProfiler2); + } else { + injectorProfilerCallbacks.length = 0; + return NOOP_PROFILER_REMOVAL; + } +} +function injectorProfiler(event) { + !ngDevMode && throwError2("Injector profiler should never be called in production mode"); + for (let i = 0; i < injectorProfilerCallbacks.length; i++) { + const injectorProfilerCallback = injectorProfilerCallbacks[i]; + injectorProfilerCallback(event); + } +} +function emitProviderConfiguredEvent(eventProvider, isViewProvider = false) { + !ngDevMode && throwError2("Injector profiler should never be called in production mode"); + let token; + if (typeof eventProvider === "function") { + token = eventProvider; + } else if (eventProvider instanceof InjectionToken) { + token = eventProvider; + } else { + token = resolveForwardRef(eventProvider.provide); + } + let provider = eventProvider; + if (eventProvider instanceof InjectionToken) { + provider = eventProvider.\u0275prov || eventProvider; + } + injectorProfiler({ + type: 2, + context: getInjectorProfilerContext(), + providerRecord: { + token, + provider, + isViewProvider + } + }); +} +function emitInjectorToCreateInstanceEvent(token) { + !ngDevMode && throwError2("Injector profiler should never be called in production mode"); + injectorProfiler({ + type: 5, + context: getInjectorProfilerContext(), + token + }); +} +function emitInstanceCreatedByInjectorEvent(instance) { + !ngDevMode && throwError2("Injector profiler should never be called in production mode"); + injectorProfiler({ + type: 1, + context: getInjectorProfilerContext(), + instance: { + value: instance + } + }); +} +function emitInjectEvent(token, value, flags) { + !ngDevMode && throwError2("Injector profiler should never be called in production mode"); + injectorProfiler({ + type: 0, + context: getInjectorProfilerContext(), + service: { + token, + value, + flags + } + }); +} +function emitEffectCreatedEvent(effect2) { + !ngDevMode && throwError2("Injector profiler should never be called in production mode"); + injectorProfiler({ + type: 3, + context: getInjectorProfilerContext(), + effect: effect2 + }); +} +function runInInjectorProfilerContext(injector, token, callback) { + !ngDevMode && throwError2("runInInjectorProfilerContext should never be called in production mode"); + const prevInjectContext = setInjectorProfilerContext({ + injector, + token + }); + try { + callback(); + } finally { + setInjectorProfilerContext(prevInjectContext); + } +} +function isEnvironmentProviders(value) { + return value && !!value.\u0275providers; +} +var NG_COMP_DEF = getClosureSafeProperty({ + \u0275cmp: getClosureSafeProperty +}); +var NG_DIR_DEF = getClosureSafeProperty({ + \u0275dir: getClosureSafeProperty +}); +var NG_PIPE_DEF = getClosureSafeProperty({ + \u0275pipe: getClosureSafeProperty +}); +var NG_MOD_DEF = getClosureSafeProperty({ + \u0275mod: getClosureSafeProperty +}); +var NG_FACTORY_DEF = getClosureSafeProperty({ + \u0275fac: getClosureSafeProperty +}); +var NG_ELEMENT_ID = getClosureSafeProperty({ + __NG_ELEMENT_ID__: getClosureSafeProperty +}); +var NG_ENV_ID = getClosureSafeProperty({ + __NG_ENV_ID__: getClosureSafeProperty +}); +function getNgModuleDef(type) { + assertTypeDefined(type, "@NgModule"); + return type[NG_MOD_DEF] || null; +} +function getNgModuleDefOrThrow(type) { + const ngModuleDef = getNgModuleDef(type); + if (!ngModuleDef) { + throw new RuntimeError(915, (typeof ngDevMode === "undefined" || ngDevMode) && `Type ${stringify(type)} does not have '\u0275mod' property.`); + } + return ngModuleDef; +} +function getComponentDef(type) { + assertTypeDefined(type, "@Component"); + return type[NG_COMP_DEF] || null; +} +function getDirectiveDefOrThrow(type) { + const def = getDirectiveDef(type); + if (!def) { + throw new RuntimeError(916, (typeof ngDevMode === "undefined" || ngDevMode) && `Type ${stringify(type)} does not have '\u0275dir' property.`); + } + return def; +} +function getDirectiveDef(type) { + assertTypeDefined(type, "@Directive"); + return type[NG_DIR_DEF] || null; +} +function getPipeDef(type) { + assertTypeDefined(type, "@Pipe"); + return type[NG_PIPE_DEF] || null; +} +function assertTypeDefined(type, symbolType) { + if (type == null) { + throw new RuntimeError(-919, (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot read ${symbolType} metadata. This can indicate a runtime circular dependency in your app that needs to be resolved.`); + } +} +function isStandalone(type) { + const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef(type); + return def !== null && def.standalone; +} +function renderStringify(value) { + if (typeof value === "string") return value; + if (value == null) return ""; + return String(value); +} +function stringifyForError(value) { + if (typeof value === "function") return value.name || value.toString(); + if (typeof value === "object" && value != null && typeof value.type === "function") { + return value.type.name || value.type.toString(); + } + return renderStringify(value); +} +function debugStringifyTypeForError(type) { + const componentDef = getComponentDef(type); + if (componentDef !== null && componentDef.debugInfo) { + return stringifyTypeFromDebugInfo(componentDef.debugInfo); + } + return stringifyForError(type); +} +function stringifyTypeFromDebugInfo(debugInfo) { + if (!debugInfo.filePath || !debugInfo.lineNumber) { + return debugInfo.className; + } else { + return `${debugInfo.className} (at ${debugInfo.filePath}:${debugInfo.lineNumber})`; + } +} +var NG_RUNTIME_ERROR_CODE = getClosureSafeProperty({ + "ngErrorCode": getClosureSafeProperty +}); +var NG_RUNTIME_ERROR_MESSAGE = getClosureSafeProperty({ + "ngErrorMessage": getClosureSafeProperty +}); +var NG_TOKEN_PATH = getClosureSafeProperty({ + "ngTokenPath": getClosureSafeProperty +}); +function cyclicDependencyError(token, path) { + const message = ngDevMode ? `Circular dependency detected for \`${token}\`.` : ""; + return createRuntimeError(message, -200, path); +} +function cyclicDependencyErrorWithDetails(token, path) { + return augmentRuntimeError(cyclicDependencyError(token, path), null); +} +function throwMixedMultiProviderError() { + throw new Error(`Cannot mix multi providers and regular providers`); +} +function throwInvalidProviderError(ngModuleType, providers, provider) { + if (ngModuleType && providers) { + const providerDetail = providers.map((v) => v == provider ? "?" + provider + "?" : "..."); + throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(", ")}]`); + } else if (isEnvironmentProviders(provider)) { + if (provider.\u0275fromNgModule) { + throw new RuntimeError(-207, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`); + } else { + throw new RuntimeError(-207, `Invalid providers present in a non-environment injector. 'EnvironmentProviders' can't be used for component providers.`); + } + } else { + throw new Error("Invalid provider"); + } +} +function throwProviderNotFoundError(token, injectorName) { + const errorMessage = ngDevMode && `No provider for ${stringifyForError(token)} found${injectorName ? ` in ${injectorName}` : ""}`; + throw new RuntimeError(-201, errorMessage); +} +function prependTokenToDependencyPath(error, token) { + error[NG_TOKEN_PATH] ??= []; + const currentPath = error[NG_TOKEN_PATH]; + let pathStr; + if (typeof token === "object" && "multi" in token && token?.multi === true) { + assertDefined(token.provide, "Token with multi: true should have a provide property"); + pathStr = stringifyForError(token.provide); + } else { + pathStr = stringifyForError(token); + } + if (currentPath[0] !== pathStr) { + error[NG_TOKEN_PATH].unshift(pathStr); + } +} +function augmentRuntimeError(error, source) { + const tokenPath = error[NG_TOKEN_PATH]; + const errorCode = error[NG_RUNTIME_ERROR_CODE]; + const message = error[NG_RUNTIME_ERROR_MESSAGE] || error.message; + error.message = formatErrorMessage(message, errorCode, tokenPath, source); + return error; +} +function createRuntimeError(message, code, path) { + const error = new RuntimeError(code, message); + error[NG_RUNTIME_ERROR_CODE] = code; + error[NG_RUNTIME_ERROR_MESSAGE] = message; + if (path) { + error[NG_TOKEN_PATH] = path; + } + return error; +} +function getRuntimeErrorCode(error) { + return error[NG_RUNTIME_ERROR_CODE]; +} +function formatErrorMessage(text, code, path = [], source = null) { + let pathDetails = ""; + if (path && path.length > 1) { + pathDetails = ` Path: ${path.join(" -> ")}.`; + } + const sourceDetails = source ? ` Source: ${source}.` : ""; + return formatRuntimeError(code, `${text}${sourceDetails}${pathDetails}`); +} +var _injectImplementation; +function getInjectImplementation() { + return _injectImplementation; +} +function setInjectImplementation(impl) { + const previous = _injectImplementation; + _injectImplementation = impl; + return previous; +} +function injectRootLimpMode(token, notFoundValue, flags) { + const injectableDef = getInjectableDef(token); + if (injectableDef && injectableDef.providedIn == "root") { + return injectableDef.value === void 0 ? injectableDef.value = injectableDef.factory() : injectableDef.value; + } + if (flags & 8) return null; + if (notFoundValue !== void 0) return notFoundValue; + throwProviderNotFoundError(token, typeof ngDevMode !== "undefined" && ngDevMode ? "Injector" : ""); +} +function assertInjectImplementationNotEqual(fn) { + ngDevMode && assertNotEqual(_injectImplementation, fn, "Calling \u0275\u0275inject would cause infinite recursion"); +} +var _THROW_IF_NOT_FOUND = {}; +var THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND; +var DI_DECORATOR_FLAG = "__NG_DI_FLAG__"; +var RetrievingInjector = class { + injector; + constructor(injector) { + this.injector = injector; + } + retrieve(token, options) { + const flags = convertToBitFlags(options) || 0; + try { + return this.injector.get(token, flags & 8 ? null : THROW_IF_NOT_FOUND, flags); + } catch (e) { + if (isNotFound(e)) { + return e; + } + throw e; + } + } +}; +function injectInjectorOnly(token, flags = 0) { + const currentInjector = getCurrentInjector(); + if (currentInjector === void 0) { + throw new RuntimeError(-203, ngDevMode && `The \`${stringify(token)}\` token injection failed. \`inject()\` function must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`); + } else if (currentInjector === null) { + return injectRootLimpMode(token, void 0, flags); + } else { + const options = convertToInjectOptions(flags); + const value = currentInjector.retrieve(token, options); + ngDevMode && emitInjectEvent(token, value, flags); + if (isNotFound(value)) { + if (options.optional) { + return null; + } + throw value; + } + return value; + } +} +function \u0275\u0275inject(token, flags = 0) { + return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags); +} +function \u0275\u0275invalidFactoryDep(index) { + throw new RuntimeError(202, ngDevMode && `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid. +This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator. + +Please check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.`); +} +function inject2(token, options) { + return \u0275\u0275inject(token, convertToBitFlags(options)); +} +function convertToBitFlags(flags) { + if (typeof flags === "undefined" || typeof flags === "number") { + return flags; + } + return 0 | (flags.optional && 8) | (flags.host && 1) | (flags.self && 2) | (flags.skipSelf && 4); +} +function convertToInjectOptions(flags) { + return { + optional: !!(flags & 8), + host: !!(flags & 1), + self: !!(flags & 2), + skipSelf: !!(flags & 4) + }; +} +function injectArgs(types) { + const args = []; + for (let i = 0; i < types.length; i++) { + const arg = resolveForwardRef(types[i]); + if (Array.isArray(arg)) { + if (arg.length === 0) { + throw new RuntimeError(900, ngDevMode && "Arguments array must have arguments."); + } + let type = void 0; + let flags = 0; + for (let j = 0; j < arg.length; j++) { + const meta = arg[j]; + const flag = getInjectFlag(meta); + if (typeof flag === "number") { + if (flag === -1) { + type = meta.token; + } else { + flags |= flag; + } + } else { + type = meta; + } + } + args.push(\u0275\u0275inject(type, flags)); + } else { + args.push(\u0275\u0275inject(arg)); + } + } + return args; +} +function attachInjectFlag(decorator, flag) { + decorator[DI_DECORATOR_FLAG] = flag; + decorator.prototype[DI_DECORATOR_FLAG] = flag; + return decorator; +} +function getInjectFlag(token) { + return token[DI_DECORATOR_FLAG]; +} +function getFactoryDef(type, throwNotFound) { + const hasFactoryDef = type.hasOwnProperty(NG_FACTORY_DEF); + if (!hasFactoryDef && throwNotFound === true && ngDevMode) { + throw new Error(`Type ${stringify(type)} does not have '\u0275fac' property.`); + } + return hasFactoryDef ? type[NG_FACTORY_DEF] : null; +} +function arrayEquals(a, b, identityAccessor) { + if (a.length !== b.length) return false; + for (let i = 0; i < a.length; i++) { + let valueA = a[i]; + let valueB = b[i]; + if (identityAccessor) { + valueA = identityAccessor(valueA); + valueB = identityAccessor(valueB); + } + if (valueB !== valueA) { + return false; + } + } + return true; +} +function flatten(list) { + return list.flat(Number.POSITIVE_INFINITY); +} +function deepForEach(input2, fn) { + input2.forEach((value) => Array.isArray(value) ? deepForEach(value, fn) : fn(value)); +} +function addToArray(arr, index, value) { + if (index >= arr.length) { + arr.push(value); + } else { + arr.splice(index, 0, value); + } +} +function removeFromArray(arr, index) { + if (index >= arr.length - 1) { + return arr.pop(); + } else { + return arr.splice(index, 1)[0]; + } +} +function newArray(size, value) { + const list = []; + for (let i = 0; i < size; i++) { + list.push(value); + } + return list; +} +function arraySplice(array, index, count) { + const length = array.length - count; + while (index < length) { + array[index] = array[index + count]; + index++; + } + while (count--) { + array.pop(); + } +} +function arrayInsert2(array, index, value1, value2) { + ngDevMode && assertLessThanOrEqual(index, array.length, "Can't insert past array end."); + let end = array.length; + if (end == index) { + array.push(value1, value2); + } else if (end === 1) { + array.push(value2, array[0]); + array[0] = value1; + } else { + end--; + array.push(array[end - 1], array[end]); + while (end > index) { + const previousEnd = end - 2; + array[end] = array[previousEnd]; + end--; + } + array[index] = value1; + array[index + 1] = value2; + } +} +function keyValueArraySet(keyValueArray, key, value) { + let index = keyValueArrayIndexOf(keyValueArray, key); + if (index >= 0) { + keyValueArray[index | 1] = value; + } else { + index = ~index; + arrayInsert2(keyValueArray, index, key, value); + } + return index; +} +function keyValueArrayGet(keyValueArray, key) { + const index = keyValueArrayIndexOf(keyValueArray, key); + if (index >= 0) { + return keyValueArray[index | 1]; + } + return void 0; +} +function keyValueArrayIndexOf(keyValueArray, key) { + return _arrayIndexOfSorted(keyValueArray, key, 1); +} +function _arrayIndexOfSorted(array, value, shift) { + ngDevMode && assertEqual(Array.isArray(array), true, "Expecting an array"); + let start = 0; + let end = array.length >> shift; + while (end !== start) { + const middle = start + (end - start >> 1); + const current = array[middle << shift]; + if (value === current) { + return middle << shift; + } else if (current > value) { + end = middle; + } else { + start = middle + 1; + } + } + return ~(end << shift); +} +var EMPTY_OBJ = {}; +var EMPTY_ARRAY = []; +if ((typeof ngDevMode === "undefined" || ngDevMode) && initNgDevMode()) { + Object.freeze(EMPTY_OBJ); + Object.freeze(EMPTY_ARRAY); +} +var ENVIRONMENT_INITIALIZER = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "ENVIRONMENT_INITIALIZER" : ""); +var INJECTOR$1 = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "INJECTOR" : "", -1); +var INJECTOR_DEF_TYPES = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "INJECTOR_DEF_TYPES" : ""); +var NullInjector = class { + get(token, notFoundValue = THROW_IF_NOT_FOUND) { + if (notFoundValue === THROW_IF_NOT_FOUND) { + const message = ngDevMode ? `No provider found for \`${stringify(token)}\`.` : ""; + const error = createRuntimeError(message, -201); + error.name = "\u0275NotFound"; + throw error; + } + return notFoundValue; + } +}; +function makeEnvironmentProviders(providers) { + return { + \u0275providers: providers + }; +} +function provideEnvironmentInitializer(initializerFn) { + return makeEnvironmentProviders([{ + provide: ENVIRONMENT_INITIALIZER, + multi: true, + useValue: initializerFn + }]); +} +function importProvidersFrom(...sources) { + return { + \u0275providers: internalImportProvidersFrom(true, sources), + \u0275fromNgModule: true + }; +} +function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) { + const providersOut = []; + const dedup = /* @__PURE__ */ new Set(); + let injectorTypesWithProviders; + const collectProviders = (provider) => { + providersOut.push(provider); + }; + deepForEach(sources, (source) => { + if ((typeof ngDevMode === "undefined" || ngDevMode) && checkForStandaloneCmp) { + const cmpDef = getComponentDef(source); + if (cmpDef?.standalone) { + throw new RuntimeError(800, `Importing providers supports NgModule or ModuleWithProviders but got a standalone component "${stringifyForError(source)}"`); + } + } + const internalSource = source; + if (walkProviderTree(internalSource, collectProviders, [], dedup)) { + injectorTypesWithProviders ||= []; + injectorTypesWithProviders.push(internalSource); + } + }); + if (injectorTypesWithProviders !== void 0) { + processInjectorTypesWithProviders(injectorTypesWithProviders, collectProviders); + } + return providersOut; +} +function processInjectorTypesWithProviders(typesWithProviders, visitor) { + for (let i = 0; i < typesWithProviders.length; i++) { + const { + ngModule, + providers + } = typesWithProviders[i]; + deepForEachProvider(providers, (provider) => { + ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule); + visitor(provider, ngModule); + }); + } +} +function walkProviderTree(container, visitor, parents, dedup) { + container = resolveForwardRef(container); + if (!container) return false; + let defType = null; + let injDef = getInjectorDef(container); + const cmpDef = !injDef && getComponentDef(container); + if (!injDef && !cmpDef) { + const ngModule = container.ngModule; + injDef = getInjectorDef(ngModule); + if (injDef) { + defType = ngModule; + } else { + return false; + } + } else if (cmpDef && !cmpDef.standalone) { + return false; + } else { + defType = container; + } + if (ngDevMode && parents.indexOf(defType) !== -1) { + const defName = stringify(defType); + const path = parents.map(stringify).concat(defName); + throw cyclicDependencyErrorWithDetails(defName, path); + } + const isDuplicate = dedup.has(defType); + if (cmpDef) { + if (isDuplicate) { + return false; + } + dedup.add(defType); + if (cmpDef.dependencies) { + const deps = typeof cmpDef.dependencies === "function" ? cmpDef.dependencies() : cmpDef.dependencies; + for (const dep of deps) { + walkProviderTree(dep, visitor, parents, dedup); + } + } + } else if (injDef) { + if (injDef.imports != null && !isDuplicate) { + ngDevMode && parents.push(defType); + dedup.add(defType); + let importTypesWithProviders; + try { + deepForEach(injDef.imports, (imported) => { + if (walkProviderTree(imported, visitor, parents, dedup)) { + importTypesWithProviders ||= []; + importTypesWithProviders.push(imported); + } + }); + } finally { + ngDevMode && parents.pop(); + } + if (importTypesWithProviders !== void 0) { + processInjectorTypesWithProviders(importTypesWithProviders, visitor); + } + } + if (!isDuplicate) { + const factory = getFactoryDef(defType) || (() => new defType()); + visitor({ + provide: defType, + useFactory: factory, + deps: EMPTY_ARRAY + }, defType); + visitor({ + provide: INJECTOR_DEF_TYPES, + useValue: defType, + multi: true + }, defType); + visitor({ + provide: ENVIRONMENT_INITIALIZER, + useValue: () => \u0275\u0275inject(defType), + multi: true + }, defType); + } + const defProviders = injDef.providers; + if (defProviders != null && !isDuplicate) { + const injectorType = container; + deepForEachProvider(defProviders, (provider) => { + ngDevMode && validateProvider(provider, defProviders, injectorType); + visitor(provider, injectorType); + }); + } + } else { + return false; + } + return defType !== container && container.providers !== void 0; +} +function validateProvider(provider, providers, containerType) { + if (isTypeProvider(provider) || isValueProvider(provider) || isFactoryProvider(provider) || isExistingProvider(provider)) { + return; + } + const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide)); + if (!classRef) { + throwInvalidProviderError(containerType, providers, provider); + } +} +function deepForEachProvider(providers, fn) { + for (let provider of providers) { + if (isEnvironmentProviders(provider)) { + provider = provider.\u0275providers; + } + if (Array.isArray(provider)) { + deepForEachProvider(provider, fn); + } else { + fn(provider); + } + } +} +var USE_VALUE = getClosureSafeProperty({ + provide: String, + useValue: getClosureSafeProperty +}); +function isValueProvider(value) { + return value !== null && typeof value == "object" && USE_VALUE in value; +} +function isExistingProvider(value) { + return !!(value && value.useExisting); +} +function isFactoryProvider(value) { + return !!(value && value.useFactory); +} +function isTypeProvider(value) { + return typeof value === "function"; +} +function isClassProvider(value) { + return !!value.useClass; +} +var INJECTOR_SCOPE = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "Set Injector scope." : ""); +var NOT_YET = {}; +var CIRCULAR = {}; +var NULL_INJECTOR = void 0; +function getNullInjector() { + if (NULL_INJECTOR === void 0) { + NULL_INJECTOR = new NullInjector(); + } + return NULL_INJECTOR; +} +var EnvironmentInjector = class { +}; +var R3Injector = class extends EnvironmentInjector { + parent; + source; + scopes; + records = /* @__PURE__ */ new Map(); + _ngOnDestroyHooks = /* @__PURE__ */ new Set(); + _onDestroyHooks = []; + get destroyed() { + return this._destroyed; + } + _destroyed = false; + injectorDefTypes; + constructor(providers, parent, source, scopes) { + super(); + this.parent = parent; + this.source = source; + this.scopes = scopes; + forEachSingleProvider(providers, (provider) => this.processProvider(provider)); + this.records.set(INJECTOR$1, makeRecord(void 0, this)); + if (scopes.has("environment")) { + this.records.set(EnvironmentInjector, makeRecord(void 0, this)); + } + const record = this.records.get(INJECTOR_SCOPE); + if (record != null && typeof record.value === "string") { + this.scopes.add(record.value); + } + this.injectorDefTypes = new Set(this.get(INJECTOR_DEF_TYPES, EMPTY_ARRAY, { + self: true + })); + } + retrieve(token, options) { + const flags = convertToBitFlags(options) || 0; + try { + return this.get(token, THROW_IF_NOT_FOUND, flags); + } catch (e) { + if (isNotFound(e)) { + return e; + } + throw e; + } + } + destroy() { + assertNotDestroyed(this); + this._destroyed = true; + const prevConsumer = setActiveConsumer(null); + try { + for (const service of this._ngOnDestroyHooks) { + service.ngOnDestroy(); + } + const onDestroyHooks = this._onDestroyHooks; + this._onDestroyHooks = []; + for (const hook of onDestroyHooks) { + hook(); + } + } finally { + this.records.clear(); + this._ngOnDestroyHooks.clear(); + this.injectorDefTypes.clear(); + setActiveConsumer(prevConsumer); + } + } + onDestroy(callback) { + assertNotDestroyed(this); + this._onDestroyHooks.push(callback); + return () => this.removeOnDestroy(callback); + } + runInContext(fn) { + assertNotDestroyed(this); + const previousInjector = setCurrentInjector(this); + const previousInjectImplementation = setInjectImplementation(void 0); + let prevInjectContext; + if (ngDevMode) { + prevInjectContext = setInjectorProfilerContext({ + injector: this, + token: null + }); + } + try { + return fn(); + } finally { + setCurrentInjector(previousInjector); + setInjectImplementation(previousInjectImplementation); + ngDevMode && setInjectorProfilerContext(prevInjectContext); + } + } + get(token, notFoundValue = THROW_IF_NOT_FOUND, options) { + assertNotDestroyed(this); + if (token.hasOwnProperty(NG_ENV_ID)) { + return token[NG_ENV_ID](this); + } + const flags = convertToBitFlags(options); + let prevInjectContext; + if (ngDevMode) { + prevInjectContext = setInjectorProfilerContext({ + injector: this, + token + }); + } + const previousInjector = setCurrentInjector(this); + const previousInjectImplementation = setInjectImplementation(void 0); + try { + if (!(flags & 4)) { + let record = this.records.get(token); + if (record === void 0) { + const def = couldBeInjectableType(token) && getInjectableDef(token); + if (def && this.injectableDefInScope(def)) { + if (ngDevMode) { + runInInjectorProfilerContext(this, token, () => { + emitProviderConfiguredEvent(token); + }); + } + record = makeRecord(injectableDefOrInjectorDefFactory(token), NOT_YET); + } else { + record = null; + } + this.records.set(token, record); + } + if (record != null) { + return this.hydrate(token, record, flags); + } + } + const nextInjector = !(flags & 2) ? this.parent : getNullInjector(); + notFoundValue = flags & 8 && notFoundValue === THROW_IF_NOT_FOUND ? null : notFoundValue; + return nextInjector.get(token, notFoundValue); + } catch (error) { + const errorCode = getRuntimeErrorCode(error); + if (errorCode === -200 || errorCode === -201) { + if (ngDevMode) { + prependTokenToDependencyPath(error, token); + if (previousInjector) { + throw error; + } else { + throw augmentRuntimeError(error, this.source); + } + } else { + throw new RuntimeError(errorCode, null); + } + } else { + throw error; + } + } finally { + setInjectImplementation(previousInjectImplementation); + setCurrentInjector(previousInjector); + ngDevMode && setInjectorProfilerContext(prevInjectContext); + } + } + resolveInjectorInitializers() { + const prevConsumer = setActiveConsumer(null); + const previousInjector = setCurrentInjector(this); + const previousInjectImplementation = setInjectImplementation(void 0); + let prevInjectContext; + if (ngDevMode) { + prevInjectContext = setInjectorProfilerContext({ + injector: this, + token: null + }); + } + try { + const initializers = this.get(ENVIRONMENT_INITIALIZER, EMPTY_ARRAY, { + self: true + }); + if (ngDevMode && !Array.isArray(initializers)) { + throw new RuntimeError(-209, `Unexpected type of the \`ENVIRONMENT_INITIALIZER\` token value (expected an array, but got ${typeof initializers}). Please check that the \`ENVIRONMENT_INITIALIZER\` token is configured as a \`multi: true\` provider.`); + } + for (const initializer of initializers) { + initializer(); + } + } finally { + setCurrentInjector(previousInjector); + setInjectImplementation(previousInjectImplementation); + ngDevMode && setInjectorProfilerContext(prevInjectContext); + setActiveConsumer(prevConsumer); + } + } + toString() { + if (ngDevMode) { + const tokens = []; + const records = this.records; + for (const token of records.keys()) { + tokens.push(stringify(token)); + } + return `R3Injector[${tokens.join(", ")}]`; + } + return "R3Injector[...]"; + } + processProvider(provider) { + provider = resolveForwardRef(provider); + let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider && provider.provide); + const record = providerToRecord(provider); + if (ngDevMode) { + runInInjectorProfilerContext(this, token, () => { + if (isValueProvider(provider)) { + emitInjectorToCreateInstanceEvent(token); + emitInstanceCreatedByInjectorEvent(provider.useValue); + } + emitProviderConfiguredEvent(provider); + }); + } + if (!isTypeProvider(provider) && provider.multi === true) { + let multiRecord = this.records.get(token); + if (multiRecord) { + if (ngDevMode && multiRecord.multi === void 0) { + throwMixedMultiProviderError(); + } + } else { + multiRecord = makeRecord(void 0, NOT_YET, true); + multiRecord.factory = () => injectArgs(multiRecord.multi); + this.records.set(token, multiRecord); + } + token = provider; + multiRecord.multi.push(provider); + } else { + if (ngDevMode) { + const existing = this.records.get(token); + if (existing && existing.multi !== void 0) { + throwMixedMultiProviderError(); + } + } + } + this.records.set(token, record); + } + hydrate(token, record, flags) { + const prevConsumer = setActiveConsumer(null); + try { + if (record.value === CIRCULAR) { + throw cyclicDependencyError(ngDevMode ? stringify(token) : ""); + } else if (record.value === NOT_YET) { + record.value = CIRCULAR; + if (ngDevMode) { + runInInjectorProfilerContext(this, token, () => { + emitInjectorToCreateInstanceEvent(token); + record.value = record.factory(void 0, flags); + emitInstanceCreatedByInjectorEvent(record.value); + }); + } else { + record.value = record.factory(void 0, flags); + } + } + if (typeof record.value === "object" && record.value && hasOnDestroy(record.value)) { + this._ngOnDestroyHooks.add(record.value); + } + return record.value; + } finally { + setActiveConsumer(prevConsumer); + } + } + injectableDefInScope(def) { + if (!def.providedIn) { + return false; + } + const providedIn = resolveForwardRef(def.providedIn); + if (typeof providedIn === "string") { + return providedIn === "any" || this.scopes.has(providedIn); + } else { + return this.injectorDefTypes.has(providedIn); + } + } + removeOnDestroy(callback) { + const destroyCBIdx = this._onDestroyHooks.indexOf(callback); + if (destroyCBIdx !== -1) { + this._onDestroyHooks.splice(destroyCBIdx, 1); + } + } +}; +function injectableDefOrInjectorDefFactory(token) { + const injectableDef = getInjectableDef(token); + const factory = injectableDef !== null ? injectableDef.factory : getFactoryDef(token); + if (factory !== null) { + return factory; + } + if (token instanceof InjectionToken) { + throw new RuntimeError(-204, ngDevMode && `Token ${stringify(token)} is missing a \u0275prov definition.`); + } + if (token instanceof Function) { + return getUndecoratedInjectableFactory(token); + } + throw new RuntimeError(-204, ngDevMode && "unreachable"); +} +function getUndecoratedInjectableFactory(token) { + const paramLength = token.length; + if (paramLength > 0) { + throw new RuntimeError(-204, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${newArray(paramLength, "?").join(", ")}).`); + } + const inheritedInjectableDef = getInheritedInjectableDef(token); + if (inheritedInjectableDef !== null) { + return () => inheritedInjectableDef.factory(token); + } else { + return () => new token(); + } +} +function providerToRecord(provider) { + if (isValueProvider(provider)) { + return makeRecord(void 0, provider.useValue); + } else { + const factory = providerToFactory(provider); + return makeRecord(factory, NOT_YET); + } +} +function providerToFactory(provider, ngModuleType, providers) { + let factory = void 0; + if (ngDevMode && isEnvironmentProviders(provider)) { + throwInvalidProviderError(void 0, providers, provider); + } + if (isTypeProvider(provider)) { + const unwrappedProvider = resolveForwardRef(provider); + return getFactoryDef(unwrappedProvider) || injectableDefOrInjectorDefFactory(unwrappedProvider); + } else { + if (isValueProvider(provider)) { + factory = () => resolveForwardRef(provider.useValue); + } else if (isFactoryProvider(provider)) { + factory = () => provider.useFactory(...injectArgs(provider.deps || [])); + } else if (isExistingProvider(provider)) { + factory = (_, flags) => \u0275\u0275inject(resolveForwardRef(provider.useExisting), flags !== void 0 && flags & 8 ? 8 : void 0); + } else { + const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide)); + if (ngDevMode && !classRef) { + throwInvalidProviderError(ngModuleType, providers, provider); + } + if (hasDeps(provider)) { + factory = () => new classRef(...injectArgs(provider.deps)); + } else { + return getFactoryDef(classRef) || injectableDefOrInjectorDefFactory(classRef); + } + } + } + return factory; +} +function assertNotDestroyed(injector) { + if (injector.destroyed) { + throw new RuntimeError(-205, ngDevMode && "Injector has already been destroyed."); + } +} +function makeRecord(factory, value, multi = false) { + return { + factory, + value, + multi: multi ? [] : void 0 + }; +} +function hasDeps(value) { + return !!value.deps; +} +function hasOnDestroy(value) { + return value !== null && typeof value === "object" && typeof value.ngOnDestroy === "function"; +} +function couldBeInjectableType(value) { + return typeof value === "function" || typeof value === "object" && value.ngMetadataName === "InjectionToken"; +} +function forEachSingleProvider(providers, fn) { + for (const provider of providers) { + if (Array.isArray(provider)) { + forEachSingleProvider(provider, fn); + } else if (provider && isEnvironmentProviders(provider)) { + forEachSingleProvider(provider.\u0275providers, fn); + } else { + fn(provider); + } + } +} +function runInInjectionContext(injector, fn) { + let internalInjector; + if (injector instanceof R3Injector) { + assertNotDestroyed(injector); + internalInjector = injector; + } else { + internalInjector = new RetrievingInjector(injector); + } + let prevInjectorProfilerContext; + if (ngDevMode) { + prevInjectorProfilerContext = setInjectorProfilerContext({ + injector, + token: null + }); + } + const prevInjector = setCurrentInjector(internalInjector); + const previousInjectImplementation = setInjectImplementation(void 0); + try { + return fn(); + } finally { + setCurrentInjector(prevInjector); + ngDevMode && setInjectorProfilerContext(prevInjectorProfilerContext); + setInjectImplementation(previousInjectImplementation); + } +} +function isInInjectionContext() { + return getInjectImplementation() !== void 0 || getCurrentInjector() != null; +} +function assertInInjectionContext(debugFn) { + if (!isInInjectionContext()) { + throw new RuntimeError(-203, ngDevMode && debugFn.name + "() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`"); + } +} +var HOST = 0; +var TVIEW = 1; +var FLAGS = 2; +var PARENT = 3; +var NEXT = 4; +var T_HOST = 5; +var HYDRATION = 6; +var CLEANUP = 7; +var CONTEXT = 8; +var INJECTOR = 9; +var ENVIRONMENT = 10; +var RENDERER = 11; +var CHILD_HEAD = 12; +var CHILD_TAIL = 13; +var DECLARATION_VIEW = 14; +var DECLARATION_COMPONENT_VIEW = 15; +var DECLARATION_LCONTAINER = 16; +var PREORDER_HOOK_FLAGS = 17; +var QUERIES = 18; +var ID = 19; +var EMBEDDED_VIEW_INJECTOR = 20; +var ON_DESTROY_HOOKS = 21; +var EFFECTS_TO_SCHEDULE = 22; +var EFFECTS = 23; +var REACTIVE_TEMPLATE_CONSUMER = 24; +var AFTER_RENDER_SEQUENCES_TO_ADD = 25; +var ANIMATIONS = 26; +var HEADER_OFFSET = 27; +var TYPE = 1; +var DEHYDRATED_VIEWS = 6; +var NATIVE = 7; +var VIEW_REFS = 8; +var MOVED_VIEWS = 9; +var CONTAINER_HEADER_OFFSET = 10; +function isLView(value) { + return Array.isArray(value) && typeof value[TYPE] === "object"; +} +function isLContainer(value) { + return Array.isArray(value) && value[TYPE] === true; +} +function isContentQueryHost(tNode) { + return (tNode.flags & 4) !== 0; +} +function isComponentHost(tNode) { + return tNode.componentOffset > -1; +} +function isDirectiveHost(tNode) { + return (tNode.flags & 1) === 1; +} +function isComponentDef(def) { + return !!def.template; +} +function isRootView(target) { + return (target[FLAGS] & 512) !== 0; +} +function isDestroyed(lView) { + return (lView[FLAGS] & 256) === 256; +} +function assertTNodeForLView(tNode, lView) { + assertTNodeForTView(tNode, lView[TVIEW]); +} +function assertTNodeCreationIndex(lView, index) { + const adjustedIndex = index + HEADER_OFFSET; + assertIndexInRange(lView, adjustedIndex); + assertLessThan(adjustedIndex, lView[TVIEW].bindingStartIndex, "TNodes should be created before any bindings"); +} +function assertTNodeForTView(tNode, tView) { + assertTNode(tNode); + const tData = tView.data; + for (let i = HEADER_OFFSET; i < tData.length; i++) { + if (tData[i] === tNode) { + return; + } + } + throwError2("This TNode does not belong to this TView."); +} +function assertTNode(tNode) { + assertDefined(tNode, "TNode must be defined"); + if (!(tNode && typeof tNode === "object" && tNode.hasOwnProperty("directiveStylingLast"))) { + throwError2("Not of type TNode, got: " + tNode); + } +} +function assertTIcu(tIcu) { + assertDefined(tIcu, "Expected TIcu to be defined"); + if (!(typeof tIcu.currentCaseLViewIndex === "number")) { + throwError2("Object is not of TIcu type."); + } +} +function assertComponentType(actual, msg = "Type passed in is not ComponentType, it does not have '\u0275cmp' property.") { + if (!getComponentDef(actual)) { + throwError2(msg); + } +} +function assertNgModuleType(actual, msg = "Type passed in is not NgModuleType, it does not have '\u0275mod' property.") { + if (!getNgModuleDef(actual)) { + throwError2(msg); + } +} +function assertHasParent(tNode) { + assertDefined(tNode, "currentTNode should exist!"); + assertDefined(tNode.parent, "currentTNode should have a parent"); +} +function assertLContainer(value) { + assertDefined(value, "LContainer must be defined"); + assertEqual(isLContainer(value), true, "Expecting LContainer"); +} +function assertLViewOrUndefined(value) { + value && assertEqual(isLView(value), true, "Expecting LView or undefined or null"); +} +function assertLView(value) { + assertDefined(value, "LView must be defined"); + assertEqual(isLView(value), true, "Expecting LView"); +} +function assertFirstCreatePass(tView, errMessage) { + assertEqual(tView.firstCreatePass, true, errMessage || "Should only be called in first create pass."); +} +function assertFirstUpdatePass(tView, errMessage) { + assertEqual(tView.firstUpdatePass, true, "Should only be called in first update pass."); +} +function assertDirectiveDef(obj) { + if (obj.type === void 0 || obj.selectors == void 0 || obj.inputs === void 0) { + throwError2(`Expected a DirectiveDef/ComponentDef and this object does not seem to have the expected shape.`); + } +} +function assertIndexInDeclRange(tView, index) { + assertBetween(HEADER_OFFSET, tView.bindingStartIndex, index); +} +function assertIndexInExpandoRange(lView, index) { + const tView = lView[1]; + assertBetween(tView.expandoStartIndex, lView.length, index); +} +function assertBetween(lower, upper, index) { + if (!(lower <= index && index < upper)) { + throwError2(`Index out of range (expecting ${lower} <= ${index} < ${upper})`); + } +} +function assertProjectionSlots(lView, errMessage) { + assertDefined(lView[DECLARATION_COMPONENT_VIEW], "Component views should exist."); + assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, "Components with projection nodes () must have projection slots defined."); +} +function assertParentView(lView, errMessage) { + assertDefined(lView, "Component views should always have a parent view (component's host view)"); +} +function assertNodeInjector(lView, injectorIndex) { + assertIndexInExpandoRange(lView, injectorIndex); + assertIndexInExpandoRange(lView, injectorIndex + 8); + assertNumber(lView[injectorIndex + 0], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 1], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 2], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 3], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 4], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 5], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 6], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 7], "injectorIndex should point to a bloom filter"); + assertNumber(lView[injectorIndex + 8], "injectorIndex should point to parent injector"); +} +var SVG_NAMESPACE = "svg"; +var MATH_ML_NAMESPACE = "math"; +function unwrapRNode(value) { + while (Array.isArray(value)) { + value = value[HOST]; + } + return value; +} +function unwrapLView(value) { + while (Array.isArray(value)) { + if (typeof value[TYPE] === "object") return value; + value = value[HOST]; + } + return null; +} +function getNativeByIndex(index, lView) { + ngDevMode && assertIndexInRange(lView, index); + ngDevMode && assertGreaterThanOrEqual(index, HEADER_OFFSET, "Expected to be past HEADER_OFFSET"); + return unwrapRNode(lView[index]); +} +function getNativeByTNode(tNode, lView) { + ngDevMode && assertTNodeForLView(tNode, lView); + ngDevMode && assertIndexInRange(lView, tNode.index); + const node = unwrapRNode(lView[tNode.index]); + return node; +} +function getTNode(tView, index) { + ngDevMode && assertGreaterThan(index, -1, "wrong index for TNode"); + ngDevMode && assertLessThan(index, tView.data.length, "wrong index for TNode"); + const tNode = tView.data[index]; + ngDevMode && tNode !== null && assertTNode(tNode); + return tNode; +} +function load(view, index) { + ngDevMode && assertIndexInRange(view, index); + return view[index]; +} +function store(tView, lView, index, value) { + if (index >= tView.data.length) { + tView.data[index] = null; + tView.blueprint[index] = null; + } + lView[index] = value; +} +function getComponentLViewByIndex(nodeIndex, hostView) { + ngDevMode && assertIndexInRange(hostView, nodeIndex); + const slotValue = hostView[nodeIndex]; + const lView = isLView(slotValue) ? slotValue : slotValue[HOST]; + return lView; +} +function isCreationMode(view) { + return (view[FLAGS] & 4) === 4; +} +function viewAttachedToChangeDetector(view) { + return (view[FLAGS] & 128) === 128; +} +function viewAttachedToContainer(view) { + return isLContainer(view[PARENT]); +} +function getConstant(consts, index) { + if (index === null || index === void 0) return null; + ngDevMode && assertIndexInRange(consts, index); + return consts[index]; +} +function resetPreOrderHookFlags(lView) { + lView[PREORDER_HOOK_FLAGS] = 0; +} +function markViewForRefresh(lView) { + if (lView[FLAGS] & 1024) { + return; + } + lView[FLAGS] |= 1024; + if (viewAttachedToChangeDetector(lView)) { + markAncestorsForTraversal(lView); + } +} +function walkUpViews(nestingLevel, currentView) { + while (nestingLevel > 0) { + ngDevMode && assertDefined(currentView[DECLARATION_VIEW], "Declaration view should be defined if nesting level is greater than 0."); + currentView = currentView[DECLARATION_VIEW]; + nestingLevel--; + } + return currentView; +} +function requiresRefreshOrTraversal(lView) { + return !!(lView[FLAGS] & (1024 | 8192) || lView[REACTIVE_TEMPLATE_CONSUMER]?.dirty); +} +function updateAncestorTraversalFlagsOnAttach(lView) { + lView[ENVIRONMENT].changeDetectionScheduler?.notify(8); + if (lView[FLAGS] & 64) { + lView[FLAGS] |= 1024; + } + if (requiresRefreshOrTraversal(lView)) { + markAncestorsForTraversal(lView); + } +} +function markAncestorsForTraversal(lView) { + lView[ENVIRONMENT].changeDetectionScheduler?.notify(0); + let parent = getLViewParent(lView); + while (parent !== null) { + if (parent[FLAGS] & 8192) { + break; + } + parent[FLAGS] |= 8192; + if (!viewAttachedToChangeDetector(parent)) { + break; + } + parent = getLViewParent(parent); + } +} +function storeLViewOnDestroy(lView, onDestroyCallback) { + if (isDestroyed(lView)) { + throw new RuntimeError(911, ngDevMode && "View has already been destroyed."); + } + if (lView[ON_DESTROY_HOOKS] === null) { + lView[ON_DESTROY_HOOKS] = []; + } + lView[ON_DESTROY_HOOKS].push(onDestroyCallback); +} +function removeLViewOnDestroy(lView, onDestroyCallback) { + if (lView[ON_DESTROY_HOOKS] === null) return; + const destroyCBIdx = lView[ON_DESTROY_HOOKS].indexOf(onDestroyCallback); + if (destroyCBIdx !== -1) { + lView[ON_DESTROY_HOOKS].splice(destroyCBIdx, 1); + } +} +function getLViewParent(lView) { + ngDevMode && assertLView(lView); + const parent = lView[PARENT]; + return isLContainer(parent) ? parent[PARENT] : parent; +} +function getOrCreateLViewCleanup(view) { + return view[CLEANUP] ??= []; +} +function getOrCreateTViewCleanup(tView) { + return tView.cleanup ??= []; +} +function storeCleanupWithContext(tView, lView, context2, cleanupFn) { + const lCleanup = getOrCreateLViewCleanup(lView); + ngDevMode && assertDefined(context2, "Cleanup context is mandatory when registering framework-level destroy hooks"); + lCleanup.push(context2); + if (tView.firstCreatePass) { + getOrCreateTViewCleanup(tView).push(cleanupFn, lCleanup.length - 1); + } else { + if (ngDevMode) { + Object.freeze(getOrCreateTViewCleanup(tView)); + } + } +} +var instructionState = { + lFrame: createLFrame(null), + bindingsEnabled: true, + skipHydrationRootTNode: null +}; +var CheckNoChangesMode; +(function(CheckNoChangesMode2) { + CheckNoChangesMode2[CheckNoChangesMode2["Off"] = 0] = "Off"; + CheckNoChangesMode2[CheckNoChangesMode2["Exhaustive"] = 1] = "Exhaustive"; + CheckNoChangesMode2[CheckNoChangesMode2["OnlyDirtyViews"] = 2] = "OnlyDirtyViews"; +})(CheckNoChangesMode || (CheckNoChangesMode = {})); +var _checkNoChangesMode = 0; +var _isRefreshingViews = false; +function getElementDepthCount() { + return instructionState.lFrame.elementDepthCount; +} +function increaseElementDepthCount() { + instructionState.lFrame.elementDepthCount++; +} +function decreaseElementDepthCount() { + instructionState.lFrame.elementDepthCount--; +} +function getBindingsEnabled() { + return instructionState.bindingsEnabled; +} +function isInSkipHydrationBlock() { + return instructionState.skipHydrationRootTNode !== null; +} +function isSkipHydrationRootTNode(tNode) { + return instructionState.skipHydrationRootTNode === tNode; +} +function \u0275\u0275enableBindings() { + instructionState.bindingsEnabled = true; +} +function \u0275\u0275disableBindings() { + instructionState.bindingsEnabled = false; +} +function leaveSkipHydrationBlock() { + instructionState.skipHydrationRootTNode = null; +} +function getLView() { + return instructionState.lFrame.lView; +} +function getTView() { + return instructionState.lFrame.tView; +} +function \u0275\u0275restoreView(viewToRestore) { + instructionState.lFrame.contextLView = viewToRestore; + return viewToRestore[CONTEXT]; +} +function \u0275\u0275resetView(value) { + instructionState.lFrame.contextLView = null; + return value; +} +function getCurrentTNode() { + let currentTNode = getCurrentTNodePlaceholderOk(); + while (currentTNode !== null && currentTNode.type === 64) { + currentTNode = currentTNode.parent; + } + return currentTNode; +} +function getCurrentTNodePlaceholderOk() { + return instructionState.lFrame.currentTNode; +} +function getCurrentParentTNode() { + const lFrame = instructionState.lFrame; + const currentTNode = lFrame.currentTNode; + return lFrame.isParent ? currentTNode : currentTNode.parent; +} +function setCurrentTNode(tNode, isParent) { + ngDevMode && tNode && assertTNodeForTView(tNode, instructionState.lFrame.tView); + const lFrame = instructionState.lFrame; + lFrame.currentTNode = tNode; + lFrame.isParent = isParent; +} +function isCurrentTNodeParent() { + return instructionState.lFrame.isParent; +} +function setCurrentTNodeAsNotParent() { + instructionState.lFrame.isParent = false; +} +function getContextLView() { + const contextLView = instructionState.lFrame.contextLView; + ngDevMode && assertDefined(contextLView, "contextLView must be defined."); + return contextLView; +} +function isInCheckNoChangesMode() { + !ngDevMode && throwError2("Must never be called in production mode"); + return _checkNoChangesMode !== CheckNoChangesMode.Off; +} +function isExhaustiveCheckNoChanges() { + !ngDevMode && throwError2("Must never be called in production mode"); + return _checkNoChangesMode === CheckNoChangesMode.Exhaustive; +} +function setIsInCheckNoChangesMode(mode) { + !ngDevMode && throwError2("Must never be called in production mode"); + _checkNoChangesMode = mode; +} +function isRefreshingViews() { + return _isRefreshingViews; +} +function setIsRefreshingViews(mode) { + const prev = _isRefreshingViews; + _isRefreshingViews = mode; + return prev; +} +function getBindingRoot() { + const lFrame = instructionState.lFrame; + let index = lFrame.bindingRootIndex; + if (index === -1) { + index = lFrame.bindingRootIndex = lFrame.tView.bindingStartIndex; + } + return index; +} +function getBindingIndex() { + return instructionState.lFrame.bindingIndex; +} +function setBindingIndex(value) { + return instructionState.lFrame.bindingIndex = value; +} +function nextBindingIndex() { + return instructionState.lFrame.bindingIndex++; +} +function incrementBindingIndex(count) { + const lFrame = instructionState.lFrame; + const index = lFrame.bindingIndex; + lFrame.bindingIndex = lFrame.bindingIndex + count; + return index; +} +function isInI18nBlock() { + return instructionState.lFrame.inI18n; +} +function setInI18nBlock(isInI18nBlock2) { + instructionState.lFrame.inI18n = isInI18nBlock2; +} +function setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex) { + const lFrame = instructionState.lFrame; + lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex; + setCurrentDirectiveIndex(currentDirectiveIndex); +} +function getCurrentDirectiveIndex() { + return instructionState.lFrame.currentDirectiveIndex; +} +function setCurrentDirectiveIndex(currentDirectiveIndex) { + instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex; +} +function getCurrentDirectiveDef(tData) { + const currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex; + return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex]; +} +function getCurrentQueryIndex() { + return instructionState.lFrame.currentQueryIndex; +} +function setCurrentQueryIndex(value) { + instructionState.lFrame.currentQueryIndex = value; +} +function getDeclarationTNode(lView) { + const tView = lView[TVIEW]; + if (tView.type === 2) { + ngDevMode && assertDefined(tView.declTNode, "Embedded TNodes should have declaration parents."); + return tView.declTNode; + } + if (tView.type === 1) { + return lView[T_HOST]; + } + return null; +} +function enterDI(lView, tNode, flags) { + ngDevMode && assertLViewOrUndefined(lView); + if (flags & 4) { + ngDevMode && assertTNodeForTView(tNode, lView[TVIEW]); + let parentTNode = tNode; + let parentLView = lView; + while (true) { + ngDevMode && assertDefined(parentTNode, "Parent TNode should be defined"); + parentTNode = parentTNode.parent; + if (parentTNode === null && !(flags & 1)) { + parentTNode = getDeclarationTNode(parentLView); + if (parentTNode === null) break; + ngDevMode && assertDefined(parentLView, "Parent LView should be defined"); + parentLView = parentLView[DECLARATION_VIEW]; + if (parentTNode.type & (2 | 8)) { + break; + } + } else { + break; + } + } + if (parentTNode === null) { + return false; + } else { + tNode = parentTNode; + lView = parentLView; + } + } + ngDevMode && assertTNodeForLView(tNode, lView); + const lFrame = instructionState.lFrame = allocLFrame(); + lFrame.currentTNode = tNode; + lFrame.lView = lView; + return true; +} +function enterView(newView) { + ngDevMode && assertNotEqual(newView[0], newView[1], "????"); + ngDevMode && assertLViewOrUndefined(newView); + const newLFrame = allocLFrame(); + if (ngDevMode) { + assertEqual(newLFrame.isParent, true, "Expected clean LFrame"); + assertEqual(newLFrame.lView, null, "Expected clean LFrame"); + assertEqual(newLFrame.tView, null, "Expected clean LFrame"); + assertEqual(newLFrame.selectedIndex, -1, "Expected clean LFrame"); + assertEqual(newLFrame.elementDepthCount, 0, "Expected clean LFrame"); + assertEqual(newLFrame.currentDirectiveIndex, -1, "Expected clean LFrame"); + assertEqual(newLFrame.currentNamespace, null, "Expected clean LFrame"); + assertEqual(newLFrame.bindingRootIndex, -1, "Expected clean LFrame"); + assertEqual(newLFrame.currentQueryIndex, 0, "Expected clean LFrame"); + } + const tView = newView[TVIEW]; + instructionState.lFrame = newLFrame; + ngDevMode && tView.firstChild && assertTNodeForTView(tView.firstChild, tView); + newLFrame.currentTNode = tView.firstChild; + newLFrame.lView = newView; + newLFrame.tView = tView; + newLFrame.contextLView = newView; + newLFrame.bindingIndex = tView.bindingStartIndex; + newLFrame.inI18n = false; +} +function allocLFrame() { + const currentLFrame = instructionState.lFrame; + const childLFrame = currentLFrame === null ? null : currentLFrame.child; + const newLFrame = childLFrame === null ? createLFrame(currentLFrame) : childLFrame; + return newLFrame; +} +function createLFrame(parent) { + const lFrame = { + currentTNode: null, + isParent: true, + lView: null, + tView: null, + selectedIndex: -1, + contextLView: null, + elementDepthCount: 0, + currentNamespace: null, + currentDirectiveIndex: -1, + bindingRootIndex: -1, + bindingIndex: -1, + currentQueryIndex: 0, + parent, + child: null, + inI18n: false + }; + parent !== null && (parent.child = lFrame); + return lFrame; +} +function leaveViewLight() { + const oldLFrame = instructionState.lFrame; + instructionState.lFrame = oldLFrame.parent; + oldLFrame.currentTNode = null; + oldLFrame.lView = null; + return oldLFrame; +} +var leaveDI = leaveViewLight; +function leaveView() { + const oldLFrame = leaveViewLight(); + oldLFrame.isParent = true; + oldLFrame.tView = null; + oldLFrame.selectedIndex = -1; + oldLFrame.contextLView = null; + oldLFrame.elementDepthCount = 0; + oldLFrame.currentDirectiveIndex = -1; + oldLFrame.currentNamespace = null; + oldLFrame.bindingRootIndex = -1; + oldLFrame.bindingIndex = -1; + oldLFrame.currentQueryIndex = 0; +} +function nextContextImpl(level) { + const contextLView = instructionState.lFrame.contextLView = walkUpViews(level, instructionState.lFrame.contextLView); + return contextLView[CONTEXT]; +} +function getSelectedIndex() { + return instructionState.lFrame.selectedIndex; +} +function setSelectedIndex(index) { + ngDevMode && index !== -1 && assertGreaterThanOrEqual(index, HEADER_OFFSET, "Index must be past HEADER_OFFSET (or -1)."); + ngDevMode && assertLessThan(index, instructionState.lFrame.lView.length, "Can't set index passed end of LView"); + instructionState.lFrame.selectedIndex = index; +} +function getSelectedTNode() { + const lFrame = instructionState.lFrame; + return getTNode(lFrame.tView, lFrame.selectedIndex); +} +function \u0275\u0275namespaceSVG() { + instructionState.lFrame.currentNamespace = SVG_NAMESPACE; +} +function \u0275\u0275namespaceMathML() { + instructionState.lFrame.currentNamespace = MATH_ML_NAMESPACE; +} +function \u0275\u0275namespaceHTML() { + namespaceHTMLInternal(); +} +function namespaceHTMLInternal() { + instructionState.lFrame.currentNamespace = null; +} +function getNamespace() { + return instructionState.lFrame.currentNamespace; +} +var _wasLastNodeCreated = true; +function wasLastNodeCreated() { + return _wasLastNodeCreated; +} +function lastNodeWasCreated(flag) { + _wasLastNodeCreated = flag; +} +function createInjector(defType, parent = null, additionalProviders = null, name) { + const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name); + injector.resolveInjectorInitializers(); + return injector; +} +function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = /* @__PURE__ */ new Set()) { + const providers = [additionalProviders || EMPTY_ARRAY, importProvidersFrom(defType)]; + let source = void 0; + if (ngDevMode) { + source = name || (typeof defType === "object" ? void 0 : stringify(defType)); + } + return new R3Injector(providers, parent || getNullInjector(), source || null, scopes); +} +var Injector = class _Injector { + static THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND; + static NULL = new NullInjector(); + static create(options, parent) { + if (Array.isArray(options)) { + return createInjector({ + name: "" + }, parent, options, ""); + } else { + const name = options.name ?? ""; + return createInjector({ + name + }, options.parent, options.providers, name); + } + } + static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ + token: _Injector, + providedIn: "any", + factory: () => \u0275\u0275inject(INJECTOR$1) + }); + static __NG_ELEMENT_ID__ = -1; +}; +var DOCUMENT = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "DocumentToken" : ""); +var DestroyRef = class { + static __NG_ELEMENT_ID__ = injectDestroyRef; + static __NG_ENV_ID__ = (injector) => injector; +}; +var NodeInjectorDestroyRef = class extends DestroyRef { + _lView; + constructor(_lView) { + super(); + this._lView = _lView; + } + get destroyed() { + return isDestroyed(this._lView); + } + onDestroy(callback) { + const lView = this._lView; + storeLViewOnDestroy(lView, callback); + return () => removeLViewOnDestroy(lView, callback); + } +}; +function injectDestroyRef() { + return new NodeInjectorDestroyRef(getLView()); +} +var SCHEDULE_IN_ROOT_ZONE_DEFAULT = false; +var DEBUG_TASK_TRACKER = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "DEBUG_TASK_TRACKER" : ""); +var PendingTasksInternal = class _PendingTasksInternal { + taskId = 0; + pendingTasks = /* @__PURE__ */ new Set(); + destroyed = false; + pendingTask = new BehaviorSubject(false); + debugTaskTracker = inject2(DEBUG_TASK_TRACKER, { + optional: true + }); + get hasPendingTasks() { + return this.destroyed ? false : this.pendingTask.value; + } + get hasPendingTasksObservable() { + if (this.destroyed) { + return new Observable((subscriber) => { + subscriber.next(false); + subscriber.complete(); + }); + } + return this.pendingTask; + } + add() { + if (!this.hasPendingTasks && !this.destroyed) { + this.pendingTask.next(true); + } + const taskId = this.taskId++; + this.pendingTasks.add(taskId); + this.debugTaskTracker?.add(taskId); + return taskId; + } + has(taskId) { + return this.pendingTasks.has(taskId); + } + remove(taskId) { + this.pendingTasks.delete(taskId); + this.debugTaskTracker?.remove(taskId); + if (this.pendingTasks.size === 0 && this.hasPendingTasks) { + this.pendingTask.next(false); + } + } + ngOnDestroy() { + this.pendingTasks.clear(); + if (this.hasPendingTasks) { + this.pendingTask.next(false); + } + this.destroyed = true; + this.pendingTask.unsubscribe(); + } + static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ + token: _PendingTasksInternal, + providedIn: "root", + factory: () => new _PendingTasksInternal() + }); +}; +var EventEmitter_ = class extends Subject { + __isAsync; + destroyRef = void 0; + pendingTasks = void 0; + constructor(isAsync = false) { + super(); + this.__isAsync = isAsync; + if (isInInjectionContext()) { + this.destroyRef = inject2(DestroyRef, { + optional: true + }) ?? void 0; + this.pendingTasks = inject2(PendingTasksInternal, { + optional: true + }) ?? void 0; + } + } + emit(value) { + const prevConsumer = setActiveConsumer(null); + try { + super.next(value); + } finally { + setActiveConsumer(prevConsumer); + } + } + subscribe(observerOrNext, error, complete) { + let nextFn = observerOrNext; + let errorFn = error || (() => null); + let completeFn = complete; + if (observerOrNext && typeof observerOrNext === "object") { + const observer = observerOrNext; + nextFn = observer.next?.bind(observer); + errorFn = observer.error?.bind(observer); + completeFn = observer.complete?.bind(observer); + } + if (this.__isAsync) { + errorFn = this.wrapInTimeout(errorFn); + if (nextFn) { + nextFn = this.wrapInTimeout(nextFn); + } + if (completeFn) { + completeFn = this.wrapInTimeout(completeFn); + } + } + const sink = super.subscribe({ + next: nextFn, + error: errorFn, + complete: completeFn + }); + if (observerOrNext instanceof Subscription) { + observerOrNext.add(sink); + } + return sink; + } + wrapInTimeout(fn) { + return (value) => { + const taskId = this.pendingTasks?.add(); + setTimeout(() => { + try { + fn(value); + } finally { + if (taskId !== void 0) { + this.pendingTasks?.remove(taskId); + } + } + }); + }; + } +}; +var EventEmitter = EventEmitter_; +function noop2(...args) { +} +function scheduleCallbackWithRafRace(callback) { + let timeoutId; + let animationFrameId; + function cleanup() { + callback = noop2; + try { + if (animationFrameId !== void 0 && typeof cancelAnimationFrame === "function") { + cancelAnimationFrame(animationFrameId); + } + if (timeoutId !== void 0) { + clearTimeout(timeoutId); + } + } catch { + } + } + timeoutId = setTimeout(() => { + callback(); + cleanup(); + }); + if (typeof requestAnimationFrame === "function") { + animationFrameId = requestAnimationFrame(() => { + callback(); + cleanup(); + }); + } + return () => cleanup(); +} +function scheduleCallbackWithMicrotask(callback) { + queueMicrotask(() => callback()); + return () => { + callback = noop2; + }; +} +var AsyncStackTaggingZoneSpec = class { + createTask; + constructor(namePrefix, consoleAsyncStackTaggingImpl = console) { + this.name = "asyncStackTagging for " + namePrefix; + this.createTask = consoleAsyncStackTaggingImpl?.createTask ?? (() => null); + } + name; + onScheduleTask(delegate, _current, target, task) { + task.consoleTask = this.createTask(`Zone - ${task.source || task.type}`); + return delegate.scheduleTask(target, task); + } + onInvokeTask(delegate, _currentZone, targetZone, task, applyThis, applyArgs) { + let ret; + if (task.consoleTask) { + ret = task.consoleTask.run(() => delegate.invokeTask(targetZone, task, applyThis, applyArgs)); + } else { + ret = delegate.invokeTask(targetZone, task, applyThis, applyArgs); + } + return ret; + } +}; +var isAngularZoneProperty = "isAngularZone"; +var angularZoneInstanceIdProperty = isAngularZoneProperty + "_ID"; +var ngZoneInstanceId = 0; +var NgZone = class _NgZone { + hasPendingMacrotasks = false; + hasPendingMicrotasks = false; + isStable = true; + onUnstable = new EventEmitter(false); + onMicrotaskEmpty = new EventEmitter(false); + onStable = new EventEmitter(false); + onError = new EventEmitter(false); + constructor(options) { + const { + enableLongStackTrace = false, + shouldCoalesceEventChangeDetection = false, + shouldCoalesceRunChangeDetection = false, + scheduleInRootZone = SCHEDULE_IN_ROOT_ZONE_DEFAULT + } = options; + if (typeof Zone == "undefined") { + throw new RuntimeError(908, ngDevMode && `In this configuration Angular requires Zone.js`); + } + Zone.assertZonePatched(); + const self = this; + self._nesting = 0; + self._outer = self._inner = Zone.current; + if (ngDevMode) { + self._inner = self._inner.fork(new AsyncStackTaggingZoneSpec("Angular")); + } + if (Zone["TaskTrackingZoneSpec"]) { + self._inner = self._inner.fork(new Zone["TaskTrackingZoneSpec"]()); + } + if (enableLongStackTrace && Zone["longStackTraceZoneSpec"]) { + self._inner = self._inner.fork(Zone["longStackTraceZoneSpec"]); + } + self.shouldCoalesceEventChangeDetection = !shouldCoalesceRunChangeDetection && shouldCoalesceEventChangeDetection; + self.shouldCoalesceRunChangeDetection = shouldCoalesceRunChangeDetection; + self.callbackScheduled = false; + self.scheduleInRootZone = scheduleInRootZone; + forkInnerZoneWithAngularBehavior(self); + } + static isInAngularZone() { + return typeof Zone !== "undefined" && Zone.current.get(isAngularZoneProperty) === true; + } + static assertInAngularZone() { + if (!_NgZone.isInAngularZone()) { + throw new RuntimeError(909, ngDevMode && "Expected to be in Angular Zone, but it is not!"); + } + } + static assertNotInAngularZone() { + if (_NgZone.isInAngularZone()) { + throw new RuntimeError(909, ngDevMode && "Expected to not be in Angular Zone, but it is!"); + } + } + run(fn, applyThis, applyArgs) { + return this._inner.run(fn, applyThis, applyArgs); + } + runTask(fn, applyThis, applyArgs, name) { + const zone = this._inner; + const task = zone.scheduleEventTask("NgZoneEvent: " + name, fn, EMPTY_PAYLOAD, noop2, noop2); + try { + return zone.runTask(task, applyThis, applyArgs); + } finally { + zone.cancelTask(task); + } + } + runGuarded(fn, applyThis, applyArgs) { + return this._inner.runGuarded(fn, applyThis, applyArgs); + } + runOutsideAngular(fn) { + return this._outer.run(fn); + } +}; +var EMPTY_PAYLOAD = {}; +function checkStable(zone) { + if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) { + try { + zone._nesting++; + zone.onMicrotaskEmpty.emit(null); + } finally { + zone._nesting--; + if (!zone.hasPendingMicrotasks) { + try { + zone.runOutsideAngular(() => zone.onStable.emit(null)); + } finally { + zone.isStable = true; + } + } + } + } +} +function delayChangeDetectionForEvents(zone) { + if (zone.isCheckStableRunning || zone.callbackScheduled) { + return; + } + zone.callbackScheduled = true; + function scheduleCheckStable() { + scheduleCallbackWithRafRace(() => { + zone.callbackScheduled = false; + updateMicroTaskStatus(zone); + zone.isCheckStableRunning = true; + checkStable(zone); + zone.isCheckStableRunning = false; + }); + } + if (zone.scheduleInRootZone) { + Zone.root.run(() => { + scheduleCheckStable(); + }); + } else { + zone._outer.run(() => { + scheduleCheckStable(); + }); + } + updateMicroTaskStatus(zone); +} +function forkInnerZoneWithAngularBehavior(zone) { + const delayChangeDetectionForEventsDelegate = () => { + delayChangeDetectionForEvents(zone); + }; + const instanceId = ngZoneInstanceId++; + zone._inner = zone._inner.fork({ + name: "angular", + properties: { + [isAngularZoneProperty]: true, + [angularZoneInstanceIdProperty]: instanceId, + [angularZoneInstanceIdProperty + instanceId]: true + }, + onInvokeTask: (delegate, current, target, task, applyThis, applyArgs) => { + if (shouldBeIgnoredByZone(applyArgs)) { + return delegate.invokeTask(target, task, applyThis, applyArgs); + } + try { + onEnter(zone); + return delegate.invokeTask(target, task, applyThis, applyArgs); + } finally { + if (zone.shouldCoalesceEventChangeDetection && task.type === "eventTask" || zone.shouldCoalesceRunChangeDetection) { + delayChangeDetectionForEventsDelegate(); + } + onLeave(zone); + } + }, + onInvoke: (delegate, current, target, callback, applyThis, applyArgs, source) => { + try { + onEnter(zone); + return delegate.invoke(target, callback, applyThis, applyArgs, source); + } finally { + if (zone.shouldCoalesceRunChangeDetection && !zone.callbackScheduled && !isSchedulerTick(applyArgs)) { + delayChangeDetectionForEventsDelegate(); + } + onLeave(zone); + } + }, + onHasTask: (delegate, current, target, hasTaskState) => { + delegate.hasTask(target, hasTaskState); + if (current === target) { + if (hasTaskState.change == "microTask") { + zone._hasPendingMicrotasks = hasTaskState.microTask; + updateMicroTaskStatus(zone); + checkStable(zone); + } else if (hasTaskState.change == "macroTask") { + zone.hasPendingMacrotasks = hasTaskState.macroTask; + } + } + }, + onHandleError: (delegate, current, target, error) => { + delegate.handleError(target, error); + zone.runOutsideAngular(() => zone.onError.emit(error)); + return false; + } + }); +} +function updateMicroTaskStatus(zone) { + if (zone._hasPendingMicrotasks || (zone.shouldCoalesceEventChangeDetection || zone.shouldCoalesceRunChangeDetection) && zone.callbackScheduled === true) { + zone.hasPendingMicrotasks = true; + } else { + zone.hasPendingMicrotasks = false; + } +} +function onEnter(zone) { + zone._nesting++; + if (zone.isStable) { + zone.isStable = false; + zone.onUnstable.emit(null); + } +} +function onLeave(zone) { + zone._nesting--; + checkStable(zone); +} +var NoopNgZone = class { + hasPendingMicrotasks = false; + hasPendingMacrotasks = false; + isStable = true; + onUnstable = new EventEmitter(); + onMicrotaskEmpty = new EventEmitter(); + onStable = new EventEmitter(); + onError = new EventEmitter(); + run(fn, applyThis, applyArgs) { + return fn.apply(applyThis, applyArgs); + } + runGuarded(fn, applyThis, applyArgs) { + return fn.apply(applyThis, applyArgs); + } + runOutsideAngular(fn) { + return fn(); + } + runTask(fn, applyThis, applyArgs, name) { + return fn.apply(applyThis, applyArgs); + } +}; +function shouldBeIgnoredByZone(applyArgs) { + return hasApplyArgsData(applyArgs, "__ignore_ng_zone__"); +} +function isSchedulerTick(applyArgs) { + return hasApplyArgsData(applyArgs, "__scheduler_tick__"); +} +function hasApplyArgsData(applyArgs, key) { + if (!Array.isArray(applyArgs)) { + return false; + } + if (applyArgs.length !== 1) { + return false; + } + return applyArgs[0]?.data?.[key] === true; +} +var ErrorHandler = class { + _console = console; + handleError(error) { + this._console.error("ERROR", error); + } +}; +var INTERNAL_APPLICATION_ERROR_HANDLER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "internal error handler" : "", { + factory: () => { + const zone = inject2(NgZone); + const injector = inject2(EnvironmentInjector); + let userErrorHandler; + return (e) => { + zone.runOutsideAngular(() => { + if (injector.destroyed && !userErrorHandler) { + setTimeout(() => { + throw e; + }); + } else { + userErrorHandler ??= injector.get(ErrorHandler); + userErrorHandler.handleError(e); + } + }); + }; + } +}); +var errorHandlerEnvironmentInitializer = { + provide: ENVIRONMENT_INITIALIZER, + useValue: () => { + const handler = inject2(ErrorHandler, { + optional: true + }); + if ((typeof ngDevMode === "undefined" || ngDevMode) && handler === null) { + throw new RuntimeError(402, `A required Injectable was not found in the dependency injection tree. If you are bootstrapping an NgModule, make sure that the \`BrowserModule\` is imported.`); + } + }, + multi: true +}; +var globalErrorListeners = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "GlobalErrorListeners" : "", { + factory: () => { + if (false) { + return; + } + const window2 = inject2(DOCUMENT).defaultView; + if (!window2) { + return; + } + const errorHandler2 = inject2(INTERNAL_APPLICATION_ERROR_HANDLER); + const rejectionListener = (e) => { + errorHandler2(e.reason); + e.preventDefault(); + }; + const errorListener = (e) => { + if (e.error) { + errorHandler2(e.error); + } else { + errorHandler2(new Error(ngDevMode ? `An ErrorEvent with no error occurred. See Error.cause for details: ${e.message}` : e.message, { + cause: e + })); + } + e.preventDefault(); + }; + const setupEventListeners = () => { + window2.addEventListener("unhandledrejection", rejectionListener); + window2.addEventListener("error", errorListener); + }; + if (typeof Zone !== "undefined") { + Zone.root.run(setupEventListeners); + } else { + setupEventListeners(); + } + inject2(DestroyRef).onDestroy(() => { + window2.removeEventListener("error", errorListener); + window2.removeEventListener("unhandledrejection", rejectionListener); + }); + } +}); +function provideBrowserGlobalErrorListeners() { + return makeEnvironmentProviders([provideEnvironmentInitializer(() => void inject2(globalErrorListeners))]); +} +function signal(initialValue, options) { + const [get, set, update] = createSignal(initialValue, options?.equal); + const signalFn = get; + const node = signalFn[SIGNAL]; + signalFn.set = set; + signalFn.update = update; + signalFn.asReadonly = signalAsReadonlyFn.bind(signalFn); + if (typeof ngDevMode !== "undefined" && ngDevMode) { + const debugName = options?.debugName; + node.debugName = debugName; + signalFn.toString = () => `[Signal${debugName ? " (" + debugName + ")" : ""}: ${signalFn()}]`; + } + return signalFn; +} +function signalAsReadonlyFn() { + const node = this[SIGNAL]; + if (node.readonlyFn === void 0) { + const readonlyFn = () => this(); + readonlyFn[SIGNAL] = node; + node.readonlyFn = readonlyFn; + } + return node.readonlyFn; +} +function assertNotInReactiveContext(debugFn, extraContext) { + if (getActiveConsumer() !== null) { + throw new RuntimeError(-602, ngDevMode && `${debugFn.name}() cannot be called from within a reactive context.${extraContext ? ` ${extraContext}` : ""}`); + } +} +var ViewContext = class { + view; + node; + constructor(view, node) { + this.view = view; + this.node = node; + } + static __NG_ELEMENT_ID__ = injectViewContext; +}; +function injectViewContext() { + return new ViewContext(getLView(), getCurrentTNode()); +} +var ChangeDetectionScheduler = class { +}; +var ZONELESS_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "Zoneless enabled" : "", { + factory: () => true +}); +var PROVIDED_ZONELESS = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "Zoneless provided" : "", { + factory: () => false +}); +var SCHEDULE_IN_ROOT_ZONE = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "run changes outside zone in root" : ""); +var PendingTasks = class _PendingTasks { + internalPendingTasks = inject2(PendingTasksInternal); + scheduler = inject2(ChangeDetectionScheduler); + errorHandler = inject2(INTERNAL_APPLICATION_ERROR_HANDLER); + add() { + const taskId = this.internalPendingTasks.add(); + return () => { + if (!this.internalPendingTasks.has(taskId)) { + return; + } + this.scheduler.notify(11); + this.internalPendingTasks.remove(taskId); + }; + } + run(fn) { + const removeTask = this.add(); + fn().catch(this.errorHandler).finally(removeTask); + } + static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ + token: _PendingTasks, + providedIn: "root", + factory: () => new _PendingTasks() + }); +}; +var EffectScheduler = class _EffectScheduler { + static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ + token: _EffectScheduler, + providedIn: "root", + factory: () => new ZoneAwareEffectScheduler() + }); +}; +var ZoneAwareEffectScheduler = class { + dirtyEffectCount = 0; + queues = /* @__PURE__ */ new Map(); + add(handle) { + this.enqueue(handle); + this.schedule(handle); + } + schedule(handle) { + if (!handle.dirty) { + return; + } + this.dirtyEffectCount++; + } + remove(handle) { + const zone = handle.zone; + const queue = this.queues.get(zone); + if (!queue.has(handle)) { + return; + } + queue.delete(handle); + if (handle.dirty) { + this.dirtyEffectCount--; + } + } + enqueue(handle) { + const zone = handle.zone; + if (!this.queues.has(zone)) { + this.queues.set(zone, /* @__PURE__ */ new Set()); + } + const queue = this.queues.get(zone); + if (queue.has(handle)) { + return; + } + queue.add(handle); + } + flush() { + while (this.dirtyEffectCount > 0) { + let ranOneEffect = false; + for (const [zone, queue] of this.queues) { + if (zone === null) { + ranOneEffect ||= this.flushQueue(queue); + } else { + ranOneEffect ||= zone.run(() => this.flushQueue(queue)); + } + } + if (!ranOneEffect) { + this.dirtyEffectCount = 0; + } + } + } + flushQueue(queue) { + let ranOneEffect = false; + for (const handle of queue) { + if (!handle.dirty) { + continue; + } + this.dirtyEffectCount--; + ranOneEffect = true; + handle.run(); + } + return ranOneEffect; + } +}; +var EffectRefImpl = class { + [SIGNAL]; + constructor(node) { + this[SIGNAL] = node; + } + destroy() { + this[SIGNAL].destroy(); + } +}; +function effect(effectFn, options) { + ngDevMode && assertNotInReactiveContext(effect, "Call `effect` outside of a reactive context. For example, schedule the effect inside the component constructor."); + if (ngDevMode && !options?.injector) { + assertInInjectionContext(effect); + } + if (ngDevMode && options?.allowSignalWrites !== void 0) { + console.warn(`The 'allowSignalWrites' flag is deprecated and no longer impacts effect() (writes are always allowed)`); + } + const injector = options?.injector ?? inject2(Injector); + let destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null; + let node; + const viewContext = injector.get(ViewContext, null, { + optional: true + }); + const notifier = injector.get(ChangeDetectionScheduler); + if (viewContext !== null) { + node = createViewEffect(viewContext.view, notifier, effectFn); + if (destroyRef instanceof NodeInjectorDestroyRef && destroyRef._lView === viewContext.view) { + destroyRef = null; + } + } else { + node = createRootEffect(effectFn, injector.get(EffectScheduler), notifier); + } + node.injector = injector; + if (destroyRef !== null) { + node.onDestroyFns = [destroyRef.onDestroy(() => node.destroy())]; + } + const effectRef = new EffectRefImpl(node); + if (ngDevMode) { + node.debugName = options?.debugName ?? ""; + const prevInjectorProfilerContext = setInjectorProfilerContext({ + injector, + token: null + }); + try { + emitEffectCreatedEvent(effectRef); + } finally { + setInjectorProfilerContext(prevInjectorProfilerContext); + } + } + return effectRef; +} +var EFFECT_NODE = /* @__PURE__ */ (() => __spreadProps(__spreadValues({}, BASE_EFFECT_NODE), { + cleanupFns: void 0, + zone: null, + onDestroyFns: null, + run() { + if (ngDevMode && isInNotificationPhase()) { + throw new Error(`Schedulers cannot synchronously execute watches while scheduling.`); + } + const prevRefreshingViews = setIsRefreshingViews(false); + try { + runEffect(this); + } finally { + setIsRefreshingViews(prevRefreshingViews); + } + }, + cleanup() { + if (!this.cleanupFns?.length) { + return; + } + const prevConsumer = setActiveConsumer(null); + try { + while (this.cleanupFns.length) { + this.cleanupFns.pop()(); + } + } finally { + this.cleanupFns = []; + setActiveConsumer(prevConsumer); + } + } +}))(); +var ROOT_EFFECT_NODE = /* @__PURE__ */ (() => __spreadProps(__spreadValues({}, EFFECT_NODE), { + consumerMarkedDirty() { + this.scheduler.schedule(this); + this.notifier.notify(12); + }, + destroy() { + consumerDestroy(this); + if (this.onDestroyFns !== null) { + for (const fn of this.onDestroyFns) { + fn(); + } + } + this.cleanup(); + this.scheduler.remove(this); + } +}))(); +var VIEW_EFFECT_NODE = /* @__PURE__ */ (() => __spreadProps(__spreadValues({}, EFFECT_NODE), { + consumerMarkedDirty() { + this.view[FLAGS] |= 8192; + markAncestorsForTraversal(this.view); + this.notifier.notify(13); + }, + destroy() { + consumerDestroy(this); + if (this.onDestroyFns !== null) { + for (const fn of this.onDestroyFns) { + fn(); + } + } + this.cleanup(); + this.view[EFFECTS]?.delete(this); + } +}))(); +function createViewEffect(view, notifier, fn) { + const node = Object.create(VIEW_EFFECT_NODE); + node.view = view; + node.zone = typeof Zone !== "undefined" ? Zone.current : null; + node.notifier = notifier; + node.fn = createEffectFn(node, fn); + view[EFFECTS] ??= /* @__PURE__ */ new Set(); + view[EFFECTS].add(node); + node.consumerMarkedDirty(node); + return node; +} +function createRootEffect(fn, scheduler, notifier) { + const node = Object.create(ROOT_EFFECT_NODE); + node.fn = createEffectFn(node, fn); + node.scheduler = scheduler; + node.notifier = notifier; + node.zone = typeof Zone !== "undefined" ? Zone.current : null; + node.scheduler.add(node); + node.notifier.notify(12); + return node; +} +function createEffectFn(node, fn) { + return () => { + fn((cleanupFn) => (node.cleanupFns ??= []).push(cleanupFn)); + }; +} + +// node_modules/@angular/core/fesm2022/_debug_node-chunk.mjs +/** + * @license Angular v21.2.17 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + */ +function noSideEffects(fn) { + return { + toString: fn + }.toString(); +} +var ANNOTATIONS = "__annotations__"; +var PARAMETERS = "__parameters__"; +var PROP_METADATA = "__prop__metadata__"; +function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) { + return noSideEffects(() => { + const metaCtor = makeMetadataCtor(props); + function DecoratorFactory(...args) { + if (this instanceof DecoratorFactory) { + metaCtor.call(this, ...args); + return this; + } + const annotationInstance = new DecoratorFactory(...args); + return function TypeDecorator(cls) { + if (typeFn) typeFn(cls, ...args); + const annotations = cls.hasOwnProperty(ANNOTATIONS) ? cls[ANNOTATIONS] : Object.defineProperty(cls, ANNOTATIONS, { + value: [] + })[ANNOTATIONS]; + annotations.push(annotationInstance); + return cls; + }; + } + if (parentClass) { + DecoratorFactory.prototype = Object.create(parentClass.prototype); + } + DecoratorFactory.prototype.ngMetadataName = name; + DecoratorFactory.annotationCls = DecoratorFactory; + return DecoratorFactory; + }); +} +function makeMetadataCtor(props) { + return function ctor(...args) { + if (props) { + const values = props(...args); + for (const propName in values) { + this[propName] = values[propName]; + } + } + }; +} +function makeParamDecorator(name, props, parentClass) { + return noSideEffects(() => { + const metaCtor = makeMetadataCtor(props); + function ParamDecoratorFactory(...args) { + if (this instanceof ParamDecoratorFactory) { + metaCtor.apply(this, args); + return this; + } + const annotationInstance = new ParamDecoratorFactory(...args); + ParamDecorator.annotation = annotationInstance; + return ParamDecorator; + function ParamDecorator(cls, unusedKey, index) { + const parameters = cls.hasOwnProperty(PARAMETERS) ? cls[PARAMETERS] : Object.defineProperty(cls, PARAMETERS, { + value: [] + })[PARAMETERS]; + while (parameters.length <= index) { + parameters.push(null); + } + (parameters[index] = parameters[index] || []).push(annotationInstance); + return cls; + } + } + ParamDecoratorFactory.prototype.ngMetadataName = name; + ParamDecoratorFactory.annotationCls = ParamDecoratorFactory; + return ParamDecoratorFactory; + }); +} +function makePropDecorator(name, props, parentClass, additionalProcessing) { + return noSideEffects(() => { + const metaCtor = makeMetadataCtor(props); + function PropDecoratorFactory(...args) { + if (this instanceof PropDecoratorFactory) { + metaCtor.apply(this, args); + return this; + } + const decoratorInstance = new PropDecoratorFactory(...args); + function PropDecorator(target, name2) { + if (target === void 0) { + throw new Error("Standard Angular field decorators are not supported in JIT mode."); + } + const constructor = target.constructor; + const meta = constructor.hasOwnProperty(PROP_METADATA) ? constructor[PROP_METADATA] : Object.defineProperty(constructor, PROP_METADATA, { + value: {} + })[PROP_METADATA]; + meta[name2] = meta.hasOwnProperty(name2) && meta[name2] || []; + meta[name2].unshift(decoratorInstance); + } + return PropDecorator; + } + if (parentClass) { + PropDecoratorFactory.prototype = Object.create(parentClass.prototype); + } + PropDecoratorFactory.prototype.ngMetadataName = name; + PropDecoratorFactory.annotationCls = PropDecoratorFactory; + return PropDecoratorFactory; + }); +} +var Inject = attachInjectFlag(makeParamDecorator("Inject", (token) => ({ + token +})), -1); +var Optional = attachInjectFlag(makeParamDecorator("Optional"), 8); +var Self = attachInjectFlag(makeParamDecorator("Self"), 2); +var SkipSelf = attachInjectFlag(makeParamDecorator("SkipSelf"), 4); +var Host = attachInjectFlag(makeParamDecorator("Host"), 1); +function getCompilerFacade(request) { + const globalNg = _global["ng"]; + if (globalNg && globalNg.\u0275compilerFacade) { + return globalNg.\u0275compilerFacade; + } + if (typeof ngDevMode === "undefined" || ngDevMode) { + console.error(`JIT compilation failed for ${request.kind}`, request.type); + let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available. + +`; + if (request.usage === 1) { + message += `The ${request.kind} is part of a library that has been partially compiled. +`; + message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback. +`; + message += "\n"; + message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled. +`; + } else { + message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead. +`; + } + message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server', +`; + message += `or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`; + throw new Error(message); + } else { + throw new Error("JIT compiler unavailable"); + } +} +var angularCoreDiEnv = { + "\u0275\u0275defineInjectable": \u0275\u0275defineInjectable, + "\u0275\u0275defineInjector": \u0275\u0275defineInjector, + "\u0275\u0275inject": \u0275\u0275inject, + "\u0275\u0275invalidFactoryDep": \u0275\u0275invalidFactoryDep, + "resolveForwardRef": resolveForwardRef +}; +var Type = Function; +function isType(v) { + return typeof v === "function"; +} +var ES5_DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/; +var ES2015_INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/; +var ES2015_INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/; +var ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/; +function isDelegateCtor(typeStr) { + return ES5_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr); +} +var ReflectionCapabilities = class { + _reflect; + constructor(reflect) { + this._reflect = reflect || _global["Reflect"]; + } + factory(t) { + return (...args) => new t(...args); + } + _zipTypesAndAnnotations(paramTypes, paramAnnotations) { + let result; + if (typeof paramTypes === "undefined") { + result = newArray(paramAnnotations.length); + } else { + result = newArray(paramTypes.length); + } + for (let i = 0; i < result.length; i++) { + if (typeof paramTypes === "undefined") { + result[i] = []; + } else if (paramTypes[i] && paramTypes[i] != Object) { + result[i] = [paramTypes[i]]; + } else { + result[i] = []; + } + if (paramAnnotations && paramAnnotations[i] != null) { + result[i] = result[i].concat(paramAnnotations[i]); + } + } + return result; + } + _ownParameters(type, parentCtor) { + const typeStr = type.toString(); + if (isDelegateCtor(typeStr)) { + return null; + } + if (type.parameters && type.parameters !== parentCtor.parameters) { + return type.parameters; + } + const tsickleCtorParams = type.ctorParameters; + if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) { + const ctorParameters = typeof tsickleCtorParams === "function" ? tsickleCtorParams() : tsickleCtorParams; + const paramTypes2 = ctorParameters.map((ctorParam) => ctorParam && ctorParam.type); + const paramAnnotations2 = ctorParameters.map((ctorParam) => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators)); + return this._zipTypesAndAnnotations(paramTypes2, paramAnnotations2); + } + const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS]; + const paramTypes = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata("design:paramtypes", type); + if (paramTypes || paramAnnotations) { + return this._zipTypesAndAnnotations(paramTypes, paramAnnotations); + } + return newArray(type.length); + } + parameters(type) { + if (!isType(type)) { + return []; + } + const parentCtor = getParentCtor(type); + let parameters = this._ownParameters(type, parentCtor); + if (!parameters && parentCtor !== Object) { + parameters = this.parameters(parentCtor); + } + return parameters || []; + } + _ownAnnotations(typeOrFunc, parentCtor) { + if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) { + let annotations = typeOrFunc.annotations; + if (typeof annotations === "function" && annotations.annotations) { + annotations = annotations.annotations; + } + return annotations; + } + if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) { + return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators); + } + if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) { + return typeOrFunc[ANNOTATIONS]; + } + return null; + } + annotations(typeOrFunc) { + if (!isType(typeOrFunc)) { + return []; + } + const parentCtor = getParentCtor(typeOrFunc); + const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || []; + const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : []; + return parentAnnotations.concat(ownAnnotations); + } + _ownPropMetadata(typeOrFunc, parentCtor) { + if (typeOrFunc.propMetadata && typeOrFunc.propMetadata !== parentCtor.propMetadata) { + let propMetadata = typeOrFunc.propMetadata; + if (typeof propMetadata === "function" && propMetadata.propMetadata) { + propMetadata = propMetadata.propMetadata; + } + return propMetadata; + } + if (typeOrFunc.propDecorators && typeOrFunc.propDecorators !== parentCtor.propDecorators) { + const propDecorators = typeOrFunc.propDecorators; + const propMetadata = {}; + Object.keys(propDecorators).forEach((prop) => { + propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]); + }); + return propMetadata; + } + if (typeOrFunc.hasOwnProperty(PROP_METADATA)) { + return typeOrFunc[PROP_METADATA]; + } + return null; + } + propMetadata(typeOrFunc) { + if (!isType(typeOrFunc)) { + return {}; + } + const parentCtor = getParentCtor(typeOrFunc); + const propMetadata = {}; + if (parentCtor !== Object) { + const parentPropMetadata = this.propMetadata(parentCtor); + Object.keys(parentPropMetadata).forEach((propName) => { + propMetadata[propName] = parentPropMetadata[propName]; + }); + } + const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor); + if (ownPropMetadata) { + Object.keys(ownPropMetadata).forEach((propName) => { + const decorators = []; + if (propMetadata.hasOwnProperty(propName)) { + decorators.push(...propMetadata[propName]); + } + decorators.push(...ownPropMetadata[propName]); + propMetadata[propName] = decorators; + }); + } + return propMetadata; + } + ownPropMetadata(typeOrFunc) { + if (!isType(typeOrFunc)) { + return {}; + } + return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {}; + } + hasLifecycleHook(type, lcProperty) { + return type instanceof Type && lcProperty in type.prototype; + } +}; +function convertTsickleDecoratorIntoMetadata(decoratorInvocations) { + if (!decoratorInvocations) { + return []; + } + return decoratorInvocations.map((decoratorInvocation) => { + const decoratorType = decoratorInvocation.type; + const annotationCls = decoratorType.annotationCls; + const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : []; + return new annotationCls(...annotationArgs); + }); +} +function getParentCtor(ctor) { + const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null; + const parentCtor = parentProto ? parentProto.constructor : null; + return parentCtor || Object; +} +function applyValueToInputField(instance, inputSignalNode, privateName, value) { + if (inputSignalNode !== null) { + inputSignalNode.applyValueToInputSignal(inputSignalNode, value); + } else { + instance[privateName] = value; + } +} +var SimpleChange = class { + previousValue; + currentValue; + firstChange; + constructor(previousValue, currentValue, firstChange) { + this.previousValue = previousValue; + this.currentValue = currentValue; + this.firstChange = firstChange; + } + isFirstChange() { + return this.firstChange; + } +}; +var \u0275\u0275NgOnChangesFeature = /* @__PURE__ */ (() => { + const \u0275\u0275NgOnChangesFeatureImpl = () => NgOnChangesFeatureImpl; + \u0275\u0275NgOnChangesFeatureImpl.ngInherit = true; + return \u0275\u0275NgOnChangesFeatureImpl; +})(); +function NgOnChangesFeatureImpl(definition) { + if (definition.type.prototype.ngOnChanges) { + definition.setInput = ngOnChangesSetInput; + } + return rememberChangeHistoryAndInvokeOnChangesHook; +} +function rememberChangeHistoryAndInvokeOnChangesHook() { + const simpleChangesStore = getSimpleChangesStore(this); + const current = simpleChangesStore?.current; + if (current) { + const previous = simpleChangesStore.previous; + if (previous === EMPTY_OBJ) { + simpleChangesStore.previous = current; + } else { + for (let key in current) { + previous[key] = current[key]; + } + } + simpleChangesStore.current = null; + this.ngOnChanges(current); + } +} +function ngOnChangesSetInput(instance, inputSignalNode, value, publicName, privateName) { + const declaredName = this.declaredInputs[publicName]; + ngDevMode && assertString(declaredName, "Name of input in ngOnChanges has to be a string"); + const simpleChangesStore = getSimpleChangesStore(instance) || setSimpleChangesStore(instance, { + previous: EMPTY_OBJ, + current: null + }); + const current = simpleChangesStore.current || (simpleChangesStore.current = {}); + const previous = simpleChangesStore.previous; + const previousChange = previous[declaredName]; + current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ); + applyValueToInputField(instance, inputSignalNode, privateName, value); +} +var SIMPLE_CHANGES_STORE = "__ngSimpleChanges__"; +function getSimpleChangesStore(instance) { + return instance[SIMPLE_CHANGES_STORE] || null; +} +function setSimpleChangesStore(instance, store2) { + return instance[SIMPLE_CHANGES_STORE] = store2; +} +var profilerCallbacks = []; +var NOOP_PROFILER_REMOVAL2 = () => { +}; +function removeProfiler2(profiler2) { + const profilerIdx = profilerCallbacks.indexOf(profiler2); + if (profilerIdx !== -1) { + profilerCallbacks.splice(profilerIdx, 1); + } +} +function setProfiler(profiler2) { + if (profiler2 !== null) { + if (!profilerCallbacks.includes(profiler2)) { + profilerCallbacks.push(profiler2); + } + return () => removeProfiler2(profiler2); + } else { + profilerCallbacks.length = 0; + return NOOP_PROFILER_REMOVAL2; + } +} +var profiler = function(event, instance = null, eventFn) { + for (let i = 0; i < profilerCallbacks.length; i++) { + const profilerCallback = profilerCallbacks[i]; + profilerCallback(event, instance, eventFn); + } +}; +var ProfilerEvent; +(function(ProfilerEvent2) { + ProfilerEvent2[ProfilerEvent2["TemplateCreateStart"] = 0] = "TemplateCreateStart"; + ProfilerEvent2[ProfilerEvent2["TemplateCreateEnd"] = 1] = "TemplateCreateEnd"; + ProfilerEvent2[ProfilerEvent2["TemplateUpdateStart"] = 2] = "TemplateUpdateStart"; + ProfilerEvent2[ProfilerEvent2["TemplateUpdateEnd"] = 3] = "TemplateUpdateEnd"; + ProfilerEvent2[ProfilerEvent2["LifecycleHookStart"] = 4] = "LifecycleHookStart"; + ProfilerEvent2[ProfilerEvent2["LifecycleHookEnd"] = 5] = "LifecycleHookEnd"; + ProfilerEvent2[ProfilerEvent2["OutputStart"] = 6] = "OutputStart"; + ProfilerEvent2[ProfilerEvent2["OutputEnd"] = 7] = "OutputEnd"; + ProfilerEvent2[ProfilerEvent2["BootstrapApplicationStart"] = 8] = "BootstrapApplicationStart"; + ProfilerEvent2[ProfilerEvent2["BootstrapApplicationEnd"] = 9] = "BootstrapApplicationEnd"; + ProfilerEvent2[ProfilerEvent2["BootstrapComponentStart"] = 10] = "BootstrapComponentStart"; + ProfilerEvent2[ProfilerEvent2["BootstrapComponentEnd"] = 11] = "BootstrapComponentEnd"; + ProfilerEvent2[ProfilerEvent2["ChangeDetectionStart"] = 12] = "ChangeDetectionStart"; + ProfilerEvent2[ProfilerEvent2["ChangeDetectionEnd"] = 13] = "ChangeDetectionEnd"; + ProfilerEvent2[ProfilerEvent2["ChangeDetectionSyncStart"] = 14] = "ChangeDetectionSyncStart"; + ProfilerEvent2[ProfilerEvent2["ChangeDetectionSyncEnd"] = 15] = "ChangeDetectionSyncEnd"; + ProfilerEvent2[ProfilerEvent2["AfterRenderHooksStart"] = 16] = "AfterRenderHooksStart"; + ProfilerEvent2[ProfilerEvent2["AfterRenderHooksEnd"] = 17] = "AfterRenderHooksEnd"; + ProfilerEvent2[ProfilerEvent2["ComponentStart"] = 18] = "ComponentStart"; + ProfilerEvent2[ProfilerEvent2["ComponentEnd"] = 19] = "ComponentEnd"; + ProfilerEvent2[ProfilerEvent2["DeferBlockStateStart"] = 20] = "DeferBlockStateStart"; + ProfilerEvent2[ProfilerEvent2["DeferBlockStateEnd"] = 21] = "DeferBlockStateEnd"; + ProfilerEvent2[ProfilerEvent2["DynamicComponentStart"] = 22] = "DynamicComponentStart"; + ProfilerEvent2[ProfilerEvent2["DynamicComponentEnd"] = 23] = "DynamicComponentEnd"; + ProfilerEvent2[ProfilerEvent2["HostBindingsUpdateStart"] = 24] = "HostBindingsUpdateStart"; + ProfilerEvent2[ProfilerEvent2["HostBindingsUpdateEnd"] = 25] = "HostBindingsUpdateEnd"; +})(ProfilerEvent || (ProfilerEvent = {})); +function registerPreOrderHooks(directiveIndex, directiveDef, tView) { + ngDevMode && assertFirstCreatePass(tView); + const { + ngOnChanges, + ngOnInit, + ngDoCheck + } = directiveDef.type.prototype; + if (ngOnChanges) { + const wrappedOnChanges = NgOnChangesFeatureImpl(directiveDef); + (tView.preOrderHooks ??= []).push(directiveIndex, wrappedOnChanges); + (tView.preOrderCheckHooks ??= []).push(directiveIndex, wrappedOnChanges); + } + if (ngOnInit) { + (tView.preOrderHooks ??= []).push(0 - directiveIndex, ngOnInit); + } + if (ngDoCheck) { + (tView.preOrderHooks ??= []).push(directiveIndex, ngDoCheck); + (tView.preOrderCheckHooks ??= []).push(directiveIndex, ngDoCheck); + } +} +function registerPostOrderHooks(tView, tNode) { + ngDevMode && assertFirstCreatePass(tView); + for (let i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) { + const directiveDef = tView.data[i]; + ngDevMode && assertDefined(directiveDef, "Expecting DirectiveDef"); + const lifecycleHooks = directiveDef.type.prototype; + const { + ngAfterContentInit, + ngAfterContentChecked, + ngAfterViewInit, + ngAfterViewChecked, + ngOnDestroy + } = lifecycleHooks; + if (ngAfterContentInit) { + (tView.contentHooks ??= []).push(-i, ngAfterContentInit); + } + if (ngAfterContentChecked) { + (tView.contentHooks ??= []).push(i, ngAfterContentChecked); + (tView.contentCheckHooks ??= []).push(i, ngAfterContentChecked); + } + if (ngAfterViewInit) { + (tView.viewHooks ??= []).push(-i, ngAfterViewInit); + } + if (ngAfterViewChecked) { + (tView.viewHooks ??= []).push(i, ngAfterViewChecked); + (tView.viewCheckHooks ??= []).push(i, ngAfterViewChecked); + } + if (ngOnDestroy != null) { + (tView.destroyHooks ??= []).push(i, ngOnDestroy); + } + } +} +function executeCheckHooks(lView, hooks, nodeIndex) { + callHooks(lView, hooks, 3, nodeIndex); +} +function executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) { + ngDevMode && assertNotEqual(initPhase, 3, "Init pre-order hooks should not be called more than once"); + if ((lView[FLAGS] & 3) === initPhase) { + callHooks(lView, hooks, initPhase, nodeIndex); + } +} +function incrementInitPhaseFlags(lView, initPhase) { + ngDevMode && assertNotEqual(initPhase, 3, "Init hooks phase should not be incremented after all init hooks have been run."); + let flags = lView[FLAGS]; + if ((flags & 3) === initPhase) { + flags &= 16383; + flags += 1; + lView[FLAGS] = flags; + } +} +function callHooks(currentView, arr, initPhase, currentNodeIndex) { + ngDevMode && assertEqual(isInCheckNoChangesMode(), false, "Hooks should never be run when in check no changes mode."); + const startIndex = currentNodeIndex !== void 0 ? currentView[PREORDER_HOOK_FLAGS] & 65535 : 0; + const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1; + const max = arr.length - 1; + let lastNodeIndexFound = 0; + for (let i = startIndex; i < max; i++) { + const hook = arr[i + 1]; + if (typeof hook === "number") { + lastNodeIndexFound = arr[i]; + if (currentNodeIndex != null && lastNodeIndexFound >= currentNodeIndex) { + break; + } + } else { + const isInitHook = arr[i] < 0; + if (isInitHook) { + currentView[PREORDER_HOOK_FLAGS] += 65536; + } + if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) { + callHook(currentView, initPhase, arr, i); + currentView[PREORDER_HOOK_FLAGS] = (currentView[PREORDER_HOOK_FLAGS] & 4294901760) + i + 2; + } + i++; + } + } +} +function callHookInternal(directive, hook) { + profiler(ProfilerEvent.LifecycleHookStart, directive, hook); + const prevConsumer = setActiveConsumer(null); + try { + hook.call(directive); + } finally { + setActiveConsumer(prevConsumer); + profiler(ProfilerEvent.LifecycleHookEnd, directive, hook); + } +} +function callHook(currentView, initPhase, arr, i) { + const isInitHook = arr[i] < 0; + const hook = arr[i + 1]; + const directiveIndex = isInitHook ? -arr[i] : arr[i]; + const directive = currentView[directiveIndex]; + if (isInitHook) { + const indexWithintInitPhase = currentView[FLAGS] >> 14; + if (indexWithintInitPhase < currentView[PREORDER_HOOK_FLAGS] >> 16 && (currentView[FLAGS] & 3) === initPhase) { + currentView[FLAGS] += 16384; + callHookInternal(directive, hook); + } + } else { + callHookInternal(directive, hook); + } +} +var NO_PARENT_INJECTOR = -1; +var NodeInjectorFactory = class { + factory; + name; + injectImpl; + resolving = false; + canSeeViewProviders; + multi; + componentProviders; + index; + providerFactory; + constructor(factory, isViewProvider, injectImplementation, name) { + this.factory = factory; + this.name = name; + ngDevMode && assertDefined(factory, "Factory not specified"); + ngDevMode && assertEqual(typeof factory, "function", "Expected factory function."); + this.canSeeViewProviders = isViewProvider; + this.injectImpl = injectImplementation; + } +}; +function toTNodeTypeAsString(tNodeType) { + let text = ""; + tNodeType & 1 && (text += "|Text"); + tNodeType & 2 && (text += "|Element"); + tNodeType & 4 && (text += "|Container"); + tNodeType & 8 && (text += "|ElementContainer"); + tNodeType & 16 && (text += "|Projection"); + tNodeType & 32 && (text += "|IcuContainer"); + tNodeType & 64 && (text += "|Placeholder"); + tNodeType & 128 && (text += "|LetDeclaration"); + return text.length > 0 ? text.substring(1) : text; +} +function isTNodeShape(value) { + return value != null && typeof value === "object" && (value.insertBeforeIndex === null || typeof value.insertBeforeIndex === "number" || Array.isArray(value.insertBeforeIndex)); +} +function hasClassInput(tNode) { + return (tNode.flags & 8) !== 0; +} +function hasStyleInput(tNode) { + return (tNode.flags & 16) !== 0; +} +function assertTNodeType(tNode, expectedTypes, message) { + assertDefined(tNode, "should be called with a TNode"); + if ((tNode.type & expectedTypes) === 0) { + throwError2(message || `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`); + } +} +function assertPureTNodeType(type) { + if (!(type === 2 || type === 1 || type === 4 || type === 8 || type === 32 || type === 16 || type === 64 || type === 128)) { + throwError2(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`); + } +} +function setUpAttributes(renderer, native, attrs) { + let i = 0; + while (i < attrs.length) { + const value = attrs[i]; + if (typeof value === "number") { + if (value !== 0) { + break; + } + i++; + const namespaceURI = attrs[i++]; + const attrName = attrs[i++]; + const attrVal = attrs[i++]; + renderer.setAttribute(native, attrName, attrVal, namespaceURI); + } else { + const attrName = value; + const attrVal = attrs[++i]; + if (isAnimationProp(attrName)) { + renderer.setProperty(native, attrName, attrVal); + } else { + renderer.setAttribute(native, attrName, attrVal); + } + i++; + } + } + return i; +} +function isNameOnlyAttributeMarker(marker) { + return marker === 3 || marker === 4 || marker === 6; +} +function isAnimationProp(name) { + return name.charCodeAt(0) === 64; +} +function mergeHostAttrs(dst, src) { + if (src === null || src.length === 0) ; + else if (dst === null || dst.length === 0) { + dst = src.slice(); + } else { + let srcMarker = -1; + for (let i = 0; i < src.length; i++) { + const item = src[i]; + if (typeof item === "number") { + srcMarker = item; + } else { + if (srcMarker === 0) ; + else if (srcMarker === -1 || srcMarker === 2) { + mergeHostAttribute(dst, srcMarker, item, null, src[++i]); + } else { + mergeHostAttribute(dst, srcMarker, item, null, null); + } + } + } + } + return dst; +} +function mergeHostAttribute(dst, marker, key1, key2, value) { + let i = 0; + let markerInsertPosition = dst.length; + if (marker === -1) { + markerInsertPosition = -1; + } else { + while (i < dst.length) { + const dstValue = dst[i++]; + if (typeof dstValue === "number") { + if (dstValue === marker) { + markerInsertPosition = -1; + break; + } else if (dstValue > marker) { + markerInsertPosition = i - 1; + break; + } + } + } + } + while (i < dst.length) { + const item = dst[i]; + if (typeof item === "number") { + break; + } else if (item === key1) { + { + if (value !== null) { + dst[i + 1] = value; + } + return; + } + } + i++; + if (value !== null) i++; + } + if (markerInsertPosition !== -1) { + dst.splice(markerInsertPosition, 0, marker); + i = markerInsertPosition + 1; + } + dst.splice(i++, 0, key1); + if (value !== null) { + dst.splice(i++, 0, value); + } +} +function hasParentInjector(parentLocation) { + return parentLocation !== NO_PARENT_INJECTOR; +} +function getParentInjectorIndex(parentLocation) { + if (ngDevMode) { + assertNumber(parentLocation, "Number expected"); + assertNotEqual(parentLocation, -1, "Not a valid state."); + const parentInjectorIndex = parentLocation & 32767; + assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, "Parent injector must be pointing past HEADER_OFFSET."); + } + return parentLocation & 32767; +} +function getParentInjectorViewOffset(parentLocation) { + return parentLocation >> 16; +} +function getParentInjectorView(location2, startView) { + let viewOffset = getParentInjectorViewOffset(location2); + let parentView = startView; + while (viewOffset > 0) { + parentView = parentView[DECLARATION_VIEW]; + viewOffset--; + } + return parentView; +} +var includeViewProviders = true; +function setIncludeViewProviders(v) { + const oldValue = includeViewProviders; + includeViewProviders = v; + return oldValue; +} +var BLOOM_SIZE = 256; +var BLOOM_MASK = BLOOM_SIZE - 1; +var BLOOM_BUCKET_BITS = 5; +var nextNgElementId = 0; +var NOT_FOUND2 = {}; +function bloomAdd(injectorIndex, tView, type) { + ngDevMode && assertEqual(tView.firstCreatePass, true, "expected firstCreatePass to be true"); + let id; + if (typeof type === "string") { + id = type.charCodeAt(0) || 0; + } else if (type.hasOwnProperty(NG_ELEMENT_ID)) { + id = type[NG_ELEMENT_ID]; + } + if (id == null) { + id = type[NG_ELEMENT_ID] = nextNgElementId++; + } + const bloomHash = id & BLOOM_MASK; + const mask = 1 << bloomHash; + tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask; +} +function getOrCreateNodeInjectorForNode(tNode, lView) { + const existingInjectorIndex = getInjectorIndex(tNode, lView); + if (existingInjectorIndex !== -1) { + return existingInjectorIndex; + } + const tView = lView[TVIEW]; + if (tView.firstCreatePass) { + tNode.injectorIndex = lView.length; + insertBloom(tView.data, tNode); + insertBloom(lView, null); + insertBloom(tView.blueprint, null); + } + const parentLoc = getParentInjectorLocation(tNode, lView); + const injectorIndex = tNode.injectorIndex; + if (hasParentInjector(parentLoc)) { + const parentIndex = getParentInjectorIndex(parentLoc); + const parentLView = getParentInjectorView(parentLoc, lView); + const parentData = parentLView[TVIEW].data; + for (let i = 0; i < 8; i++) { + lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i]; + } + } + lView[injectorIndex + 8] = parentLoc; + return injectorIndex; +} +function insertBloom(arr, footer) { + arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer); +} +function getInjectorIndex(tNode, lView) { + if (tNode.injectorIndex === -1 || tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex || lView[tNode.injectorIndex + 8] === null) { + return -1; + } else { + ngDevMode && assertIndexInRange(lView, tNode.injectorIndex); + return tNode.injectorIndex; + } +} +function getParentInjectorLocation(tNode, lView) { + if (tNode.parent && tNode.parent.injectorIndex !== -1) { + return tNode.parent.injectorIndex; + } + let declarationViewOffset = 0; + let parentTNode = null; + let lViewCursor = lView; + while (lViewCursor !== null) { + parentTNode = getTNodeFromLView(lViewCursor); + if (parentTNode === null) { + return NO_PARENT_INJECTOR; + } + ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]); + declarationViewOffset++; + lViewCursor = lViewCursor[DECLARATION_VIEW]; + if (parentTNode.injectorIndex !== -1) { + return parentTNode.injectorIndex | declarationViewOffset << 16; + } + } + return NO_PARENT_INJECTOR; +} +function diPublicInInjector(injectorIndex, tView, token) { + bloomAdd(injectorIndex, tView, token); +} +function injectAttributeImpl(tNode, attrNameToInject) { + ngDevMode && assertTNodeType(tNode, 12 | 3); + ngDevMode && assertDefined(tNode, "expecting tNode"); + if (attrNameToInject === "class") { + return tNode.classes; + } + if (attrNameToInject === "style") { + return tNode.styles; + } + const attrs = tNode.attrs; + if (attrs) { + const attrsLength = attrs.length; + let i = 0; + while (i < attrsLength) { + const value = attrs[i]; + if (isNameOnlyAttributeMarker(value)) break; + if (value === 0) { + i = i + 2; + } else if (typeof value === "number") { + i++; + while (i < attrsLength && typeof attrs[i] === "string") { + i++; + } + } else if (value === attrNameToInject) { + return attrs[i + 1]; + } else { + i = i + 2; + } + } + } + return null; +} +function notFoundValueOrThrow(notFoundValue, token, flags) { + if (flags & 8 || notFoundValue !== void 0) { + return notFoundValue; + } else { + throwProviderNotFoundError(token, "NodeInjector"); + } +} +function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) { + if (flags & 8 && notFoundValue === void 0) { + notFoundValue = null; + } + if ((flags & (2 | 1)) === 0) { + const moduleInjector = lView[INJECTOR]; + const previousInjectImplementation = setInjectImplementation(void 0); + try { + if (moduleInjector) { + return moduleInjector.get(token, notFoundValue, flags & 8); + } else { + return injectRootLimpMode(token, notFoundValue, flags & 8); + } + } finally { + setInjectImplementation(previousInjectImplementation); + } + } + return notFoundValueOrThrow(notFoundValue, token, flags); +} +function getOrCreateInjectable(tNode, lView, token, flags = 0, notFoundValue) { + if (tNode !== null) { + if (lView[FLAGS] & 2048 && !(flags & 2)) { + const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND2); + if (embeddedInjectorValue !== NOT_FOUND2) { + return embeddedInjectorValue; + } + } + const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND2); + if (value !== NOT_FOUND2) { + return value; + } + } + return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue); +} +function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) { + const bloomHash = bloomHashBitOrFactory(token); + if (typeof bloomHash === "function") { + if (!enterDI(lView, tNode, flags)) { + return flags & 1 ? notFoundValueOrThrow(notFoundValue, token, flags) : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue); + } + try { + let value; + if (ngDevMode) { + runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => { + emitInjectorToCreateInstanceEvent(token); + value = bloomHash(flags); + emitInstanceCreatedByInjectorEvent(value); + }); + } else { + value = bloomHash(flags); + } + if (value == null && !(flags & 8)) { + throwProviderNotFoundError(token); + } else { + return value; + } + } finally { + leaveDI(); + } + } else if (typeof bloomHash === "number") { + let previousTView = null; + let injectorIndex = getInjectorIndex(tNode, lView); + let parentLocation = NO_PARENT_INJECTOR; + let hostTElementNode = flags & 1 ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null; + if (injectorIndex === -1 || flags & 4) { + parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) : lView[injectorIndex + 8]; + if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) { + injectorIndex = -1; + } else { + previousTView = lView[TVIEW]; + injectorIndex = getParentInjectorIndex(parentLocation); + lView = getParentInjectorView(parentLocation, lView); + } + } + while (injectorIndex !== -1) { + ngDevMode && assertNodeInjector(lView, injectorIndex); + const tView = lView[TVIEW]; + ngDevMode && assertTNodeForLView(tView.data[injectorIndex + 8], lView); + if (bloomHasToken(bloomHash, injectorIndex, tView.data)) { + const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode); + if (instance !== NOT_FOUND2) { + return instance; + } + } + parentLocation = lView[injectorIndex + 8]; + if (parentLocation !== NO_PARENT_INJECTOR && shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8] === hostTElementNode) && bloomHasToken(bloomHash, injectorIndex, lView)) { + previousTView = tView; + injectorIndex = getParentInjectorIndex(parentLocation); + lView = getParentInjectorView(parentLocation, lView); + } else { + injectorIndex = -1; + } + } + } + return notFoundValue; +} +function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) { + const currentTView = lView[TVIEW]; + const tNode = currentTView.data[injectorIndex + 8]; + const canAccessViewProviders = previousTView == null ? isComponentHost(tNode) && includeViewProviders : previousTView != currentTView && (tNode.type & 3) !== 0; + const isHostSpecialCase = flags & 1 && hostTElementNode === tNode; + const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase); + if (injectableIdx !== null) { + return getNodeInjectable(lView, currentTView, injectableIdx, tNode, flags); + } else { + return NOT_FOUND2; + } +} +function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) { + const nodeProviderIndexes = tNode.providerIndexes; + const tInjectables = tView.data; + const injectablesStart = nodeProviderIndexes & 1048575; + const directivesStart = tNode.directiveStart; + const directiveEnd = tNode.directiveEnd; + const cptViewProvidersCount = nodeProviderIndexes >> 20; + const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount; + const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd; + for (let i = startingIndex; i < endIndex; i++) { + const providerTokenOrDef = tInjectables[i]; + if (i < directivesStart && token === providerTokenOrDef || i >= directivesStart && providerTokenOrDef.type === token) { + return i; + } + } + if (isHostSpecialCase) { + const dirDef = tInjectables[directivesStart]; + if (dirDef && isComponentDef(dirDef) && dirDef.type === token) { + return directivesStart; + } + } + return null; +} +var injectionPath = []; +function getNodeInjectable(lView, tView, index, tNode, flags) { + let value = lView[index]; + const tData = tView.data; + if (value instanceof NodeInjectorFactory) { + const factory = value; + ngDevMode && injectionPath.push(factory.name ?? "unknown"); + if (factory.resolving) { + let token2 = ""; + if (ngDevMode) { + token2 = stringifyForError(tData[index]); + throw cyclicDependencyErrorWithDetails(token2, injectionPath); + } else { + throw cyclicDependencyError(token2); + } + } + const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders); + factory.resolving = true; + const token = tData[index].type || tData[index]; + let prevInjectContext; + if (ngDevMode) { + const injector = new NodeInjector(tNode, lView); + prevInjectContext = setInjectorProfilerContext({ + injector, + token + }); + } + const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null; + const success = enterDI(lView, tNode, 0); + ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed."); + try { + ngDevMode && emitInjectorToCreateInstanceEvent(token); + value = lView[index] = factory.factory(void 0, flags, tData, lView, tNode); + ngDevMode && emitInstanceCreatedByInjectorEvent(value); + if (tView.firstCreatePass && index >= tNode.directiveStart) { + ngDevMode && assertDirectiveDef(tData[index]); + registerPreOrderHooks(index, tData[index], tView); + } + } finally { + ngDevMode && setInjectorProfilerContext(prevInjectContext); + previousInjectImplementation !== null && setInjectImplementation(previousInjectImplementation); + setIncludeViewProviders(previousIncludeViewProviders); + factory.resolving = false; + leaveDI(); + ngDevMode && (injectionPath = []); + } + } + return value; +} +function bloomHashBitOrFactory(token) { + ngDevMode && assertDefined(token, "token must be defined"); + if (typeof token === "string") { + return token.charCodeAt(0) || 0; + } + const tokenId = token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : void 0; + if (typeof tokenId === "number") { + if (tokenId >= 0) { + return tokenId & BLOOM_MASK; + } else { + ngDevMode && assertEqual(tokenId, -1, "Expecting to get Special Injector Id"); + return createNodeInjector; + } + } else { + return tokenId; + } +} +function bloomHasToken(bloomHash, injectorIndex, injectorView) { + const mask = 1 << bloomHash; + const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)]; + return !!(value & mask); +} +function shouldSearchParent(flags, isFirstHostTNode) { + return !(flags & 2) && !(flags & 1 && isFirstHostTNode); +} +function getNodeInjectorLView(nodeInjector) { + return nodeInjector._lView; +} +function getNodeInjectorTNode(nodeInjector) { + return nodeInjector._tNode; +} +var NodeInjector = class { + _tNode; + _lView; + constructor(_tNode, _lView) { + this._tNode = _tNode; + this._lView = _lView; + } + get(token, notFoundValue, flags) { + return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue); + } +}; +function createNodeInjector() { + return new NodeInjector(getCurrentTNode(), getLView()); +} +function \u0275\u0275getInheritedFactory(type) { + return noSideEffects(() => { + const ownConstructor = type.prototype.constructor; + const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor); + const objectPrototype = Object.prototype; + let parent = Object.getPrototypeOf(type.prototype).constructor; + while (parent && parent !== objectPrototype) { + const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent); + if (factory && factory !== ownFactory) { + return factory; + } + parent = Object.getPrototypeOf(parent); + } + return (t) => new t(); + }); +} +function getFactoryOf(type) { + if (isForwardRef(type)) { + return () => { + const factory = getFactoryOf(resolveForwardRef(type)); + return factory && factory(); + }; + } + return getFactoryDef(type); +} +function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) { + let currentTNode = tNode; + let currentLView = lView; + while (currentTNode !== null && currentLView !== null && currentLView[FLAGS] & 2048 && !isRootView(currentLView)) { + ngDevMode && assertTNodeForLView(currentTNode, currentLView); + const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | 2, NOT_FOUND2); + if (nodeInjectorValue !== NOT_FOUND2) { + return nodeInjectorValue; + } + let parentTNode = currentTNode.parent; + if (!parentTNode) { + const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR]; + if (embeddedViewInjector) { + const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND2, flags & -5); + if (embeddedViewInjectorValue !== NOT_FOUND2) { + return embeddedViewInjectorValue; + } + } + parentTNode = getTNodeFromLView(currentLView); + currentLView = currentLView[DECLARATION_VIEW]; + } + currentTNode = parentTNode; + } + return notFoundValue; +} +function getTNodeFromLView(lView) { + const tView = lView[TVIEW]; + const tViewType = tView.type; + if (tViewType === 2) { + ngDevMode && assertDefined(tView.declTNode, "Embedded TNodes should have declaration parents."); + return tView.declTNode; + } else if (tViewType === 1) { + return lView[T_HOST]; + } + return null; +} +function \u0275\u0275injectAttribute(attrNameToInject) { + return injectAttributeImpl(getCurrentTNode(), attrNameToInject); +} +var Attribute = makeParamDecorator("Attribute", (attributeName) => ({ + attributeName, + __NG_ELEMENT_ID__: () => \u0275\u0275injectAttribute(attributeName) +})); +var _reflect = null; +function getReflect() { + return _reflect = _reflect || new ReflectionCapabilities(); +} +function reflectDependencies(type) { + return convertDependencies(getReflect().parameters(type)); +} +function convertDependencies(deps) { + return deps.map((dep) => reflectDependency(dep)); +} +function reflectDependency(dep) { + const meta = { + token: null, + attribute: null, + host: false, + optional: false, + self: false, + skipSelf: false + }; + if (Array.isArray(dep) && dep.length > 0) { + for (let j = 0; j < dep.length; j++) { + const param = dep[j]; + if (param === void 0) { + continue; + } + const proto = Object.getPrototypeOf(param); + if (param instanceof Optional || proto.ngMetadataName === "Optional") { + meta.optional = true; + } else if (param instanceof SkipSelf || proto.ngMetadataName === "SkipSelf") { + meta.skipSelf = true; + } else if (param instanceof Self || proto.ngMetadataName === "Self") { + meta.self = true; + } else if (param instanceof Host || proto.ngMetadataName === "Host") { + meta.host = true; + } else if (param instanceof Inject) { + meta.token = param.token; + } else if (param instanceof Attribute) { + if (param.attributeName === void 0) { + throw new RuntimeError(-204, ngDevMode && `Attribute name must be defined.`); + } + meta.attribute = param.attributeName; + } else { + meta.token = param; + } + } + } else if (dep === void 0 || Array.isArray(dep) && dep.length === 0) { + meta.token = null; + } else { + meta.token = dep; + } + return meta; +} +function compileInjectable(type, meta) { + let ngInjectableDef = null; + let ngFactoryDef = null; + if (!type.hasOwnProperty(NG_PROV_DEF)) { + Object.defineProperty(type, NG_PROV_DEF, { + get: () => { + if (ngInjectableDef === null) { + const compiler = getCompilerFacade({ + usage: 0, + kind: "injectable", + type + }); + ngInjectableDef = compiler.compileInjectable(angularCoreDiEnv, `ng:///${type.name}/\u0275prov.js`, getInjectableMetadata(type, meta)); + } + return ngInjectableDef; + } + }); + } + if (!type.hasOwnProperty(NG_FACTORY_DEF)) { + Object.defineProperty(type, NG_FACTORY_DEF, { + get: () => { + if (ngFactoryDef === null) { + const compiler = getCompilerFacade({ + usage: 0, + kind: "injectable", + type + }); + ngFactoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/\u0275fac.js`, { + name: type.name, + type, + typeArgumentCount: 0, + deps: reflectDependencies(type), + target: compiler.FactoryTarget.Injectable + }); + } + return ngFactoryDef; + }, + configurable: true + }); + } +} +var USE_VALUE2 = getClosureSafeProperty({ + provide: String, + useValue: getClosureSafeProperty +}); +function isUseClassProvider(meta) { + return meta.useClass !== void 0; +} +function isUseValueProvider(meta) { + return USE_VALUE2 in meta; +} +function isUseFactoryProvider(meta) { + return meta.useFactory !== void 0; +} +function isUseExistingProvider(meta) { + return meta.useExisting !== void 0; +} +function getInjectableMetadata(type, srcMeta) { + const meta = srcMeta || { + providedIn: null + }; + const compilerMeta = { + name: type.name, + type, + typeArgumentCount: 0, + providedIn: meta.providedIn + }; + if ((isUseClassProvider(meta) || isUseFactoryProvider(meta)) && meta.deps !== void 0) { + compilerMeta.deps = convertDependencies(meta.deps); + } + if (isUseClassProvider(meta)) { + compilerMeta.useClass = meta.useClass; + } else if (isUseValueProvider(meta)) { + compilerMeta.useValue = meta.useValue; + } else if (isUseFactoryProvider(meta)) { + compilerMeta.useFactory = meta.useFactory; + } else if (isUseExistingProvider(meta)) { + compilerMeta.useExisting = meta.useExisting; + } + return compilerMeta; +} +var Injectable = makeDecorator("Injectable", void 0, void 0, void 0, (type, meta) => compileInjectable(type, meta)); +function injectElementRef() { + return createElementRef(getCurrentTNode(), getLView()); +} +function createElementRef(tNode, lView) { + return new ElementRef(getNativeByTNode(tNode, lView)); +} +var ElementRef = class { + nativeElement; + constructor(nativeElement) { + this.nativeElement = nativeElement; + } + static __NG_ELEMENT_ID__ = injectElementRef; +}; +function unwrapElementRef(value) { + return value instanceof ElementRef ? value.nativeElement : value; +} +function symbolIterator() { + return this._results[Symbol.iterator](); +} +var QueryList = class { + _emitDistinctChangesOnly; + dirty = true; + _onDirty = void 0; + _results = []; + _changesDetected = false; + _changes = void 0; + length = 0; + first = void 0; + last = void 0; + get changes() { + return this._changes ??= new Subject(); + } + constructor(_emitDistinctChangesOnly = false) { + this._emitDistinctChangesOnly = _emitDistinctChangesOnly; + } + get(index) { + return this._results[index]; + } + map(fn) { + return this._results.map(fn); + } + filter(fn) { + return this._results.filter(fn); + } + find(fn) { + return this._results.find(fn); + } + reduce(fn, init) { + return this._results.reduce(fn, init); + } + forEach(fn) { + this._results.forEach(fn); + } + some(fn) { + return this._results.some(fn); + } + toArray() { + return this._results.slice(); + } + toString() { + return this._results.toString(); + } + reset(resultsTree, identityAccessor) { + this.dirty = false; + const newResultFlat = flatten(resultsTree); + if (this._changesDetected = !arrayEquals(this._results, newResultFlat, identityAccessor)) { + this._results = newResultFlat; + this.length = newResultFlat.length; + this.last = newResultFlat[this.length - 1]; + this.first = newResultFlat[0]; + } + } + notifyOnChanges() { + if (this._changes !== void 0 && (this._changesDetected || !this._emitDistinctChangesOnly)) this._changes.next(this); + } + onDirty(cb) { + this._onDirty = cb; + } + setDirty() { + this.dirty = true; + this._onDirty?.(); + } + destroy() { + if (this._changes !== void 0) { + this._changes.complete(); + this._changes.unsubscribe(); + } + } + [Symbol.iterator] = /* @__PURE__ */ (() => symbolIterator)(); +}; +function hasInSkipHydrationBlockFlag(tNode) { + return (tNode.flags & 128) === 128; +} +var ChangeDetectionStrategy; +(function(ChangeDetectionStrategy2) { + ChangeDetectionStrategy2[ChangeDetectionStrategy2["OnPush"] = 0] = "OnPush"; + ChangeDetectionStrategy2[ChangeDetectionStrategy2["Eager"] = 1] = "Eager"; + ChangeDetectionStrategy2[ChangeDetectionStrategy2["Default"] = 1] = "Default"; +})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {})); +var TRACKED_LVIEWS = /* @__PURE__ */ new Map(); +var uniqueIdCounter = 0; +function getUniqueLViewId() { + return uniqueIdCounter++; +} +function registerLView(lView) { + ngDevMode && assertNumber(lView[ID], "LView must have an ID in order to be registered"); + TRACKED_LVIEWS.set(lView[ID], lView); +} +function getLViewById(id) { + ngDevMode && assertNumber(id, "ID used for LView lookup must be a number"); + return TRACKED_LVIEWS.get(id) || null; +} +function unregisterLView(lView) { + ngDevMode && assertNumber(lView[ID], "Cannot stop tracking an LView that does not have an ID"); + TRACKED_LVIEWS.delete(lView[ID]); +} +function getTrackedLViews() { + return TRACKED_LVIEWS; +} +var LContext = class { + lViewId; + nodeIndex; + native; + component; + directives; + localRefs; + get lView() { + return getLViewById(this.lViewId); + } + constructor(lViewId, nodeIndex, native) { + this.lViewId = lViewId; + this.nodeIndex = nodeIndex; + this.native = native; + } +}; +function getLContext(target) { + let mpValue = readPatchedData(target); + if (mpValue) { + if (isLView(mpValue)) { + const lView = mpValue; + let nodeIndex; + let component = void 0; + let directives = void 0; + if (isComponentInstance(target)) { + nodeIndex = findViaComponent(lView, target); + if (nodeIndex == -1) { + throw new Error("The provided component was not found in the application"); + } + component = target; + } else if (isDirectiveInstance(target)) { + nodeIndex = findViaDirective(lView, target); + if (nodeIndex == -1) { + throw new Error("The provided directive was not found in the application"); + } + directives = getDirectivesAtNodeIndex(nodeIndex, lView); + } else { + nodeIndex = findViaNativeElement(lView, target); + if (nodeIndex == -1) { + return null; + } + } + const native = unwrapRNode(lView[nodeIndex]); + const existingCtx = readPatchedData(native); + const context2 = existingCtx && !Array.isArray(existingCtx) ? existingCtx : createLContext(lView, nodeIndex, native); + if (component && context2.component === void 0) { + context2.component = component; + attachPatchData(context2.component, context2); + } + if (directives && context2.directives === void 0) { + context2.directives = directives; + for (let i = 0; i < directives.length; i++) { + attachPatchData(directives[i], context2); + } + } + attachPatchData(context2.native, context2); + mpValue = context2; + } + } else { + const rElement = target; + ngDevMode && assertDomNode(rElement); + let parent = rElement; + while (parent = parent.parentNode) { + const parentContext = readPatchedData(parent); + if (parentContext) { + const lView = Array.isArray(parentContext) ? parentContext : parentContext.lView; + if (!lView) { + return null; + } + const index = findViaNativeElement(lView, rElement); + if (index >= 0) { + const native = unwrapRNode(lView[index]); + const context2 = createLContext(lView, index, native); + attachPatchData(native, context2); + mpValue = context2; + break; + } + } + } + } + return mpValue || null; +} +function createLContext(lView, nodeIndex, native) { + return new LContext(lView[ID], nodeIndex, native); +} +function getComponentViewByInstance(componentInstance) { + let patchedData = readPatchedData(componentInstance); + let lView; + if (isLView(patchedData)) { + const contextLView = patchedData; + const nodeIndex = findViaComponent(contextLView, componentInstance); + lView = getComponentLViewByIndex(nodeIndex, contextLView); + const context2 = createLContext(contextLView, nodeIndex, lView[HOST]); + context2.component = componentInstance; + attachPatchData(componentInstance, context2); + attachPatchData(context2.native, context2); + } else { + const context2 = patchedData; + const contextLView = context2.lView; + ngDevMode && assertLView(contextLView); + lView = getComponentLViewByIndex(context2.nodeIndex, contextLView); + } + return lView; +} +var MONKEY_PATCH_KEY_NAME = "__ngContext__"; +function attachPatchData(target, data) { + ngDevMode && assertDefined(target, "Target expected"); + if (isLView(data)) { + target[MONKEY_PATCH_KEY_NAME] = data[ID]; + registerLView(data); + } else { + target[MONKEY_PATCH_KEY_NAME] = data; + } +} +function readPatchedData(target) { + ngDevMode && assertDefined(target, "Target expected"); + const data = target[MONKEY_PATCH_KEY_NAME]; + return typeof data === "number" ? getLViewById(data) : data || null; +} +function readPatchedLView(target) { + const value = readPatchedData(target); + if (value) { + return isLView(value) ? value : value.lView; + } + return null; +} +function isComponentInstance(instance) { + return instance && instance.constructor && instance.constructor.\u0275cmp; +} +function isDirectiveInstance(instance) { + return instance && instance.constructor && instance.constructor.\u0275dir; +} +function findViaNativeElement(lView, target) { + const tView = lView[TVIEW]; + for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) { + if (unwrapRNode(lView[i]) === target) { + return i; + } + } + return -1; +} +function traverseNextElement(tNode) { + if (tNode.child) { + return tNode.child; + } else if (tNode.next) { + return tNode.next; + } else { + while (tNode.parent && !tNode.parent.next) { + tNode = tNode.parent; + } + return tNode.parent && tNode.parent.next; + } +} +function findViaComponent(lView, componentInstance) { + const componentIndices = lView[TVIEW].components; + if (componentIndices) { + for (let i = 0; i < componentIndices.length; i++) { + const elementComponentIndex = componentIndices[i]; + const componentView = getComponentLViewByIndex(elementComponentIndex, lView); + if (componentView[CONTEXT] === componentInstance) { + return elementComponentIndex; + } + } + } else { + const rootComponentView = getComponentLViewByIndex(HEADER_OFFSET, lView); + const rootComponent = rootComponentView[CONTEXT]; + if (rootComponent === componentInstance) { + return HEADER_OFFSET; + } + } + return -1; +} +function findViaDirective(lView, directiveInstance) { + let tNode = lView[TVIEW].firstChild; + while (tNode) { + const directiveIndexStart = tNode.directiveStart; + const directiveIndexEnd = tNode.directiveEnd; + for (let i = directiveIndexStart; i < directiveIndexEnd; i++) { + if (lView[i] === directiveInstance) { + return tNode.index; + } + } + tNode = traverseNextElement(tNode); + } + return -1; +} +function getDirectivesAtNodeIndex(nodeIndex, lView) { + const tNode = lView[TVIEW].data[nodeIndex]; + if (tNode.directiveStart === 0) return EMPTY_ARRAY; + const results = []; + for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) { + const directiveInstance = lView[i]; + if (!isComponentInstance(directiveInstance)) { + results.push(directiveInstance); + } + } + return results; +} +function getComponentAtNodeIndex(nodeIndex, lView) { + const tNode = lView[TVIEW].data[nodeIndex]; + return isComponentHost(tNode) ? lView[tNode.directiveStart + tNode.componentOffset] : null; +} +function getRootView(componentOrLView) { + ngDevMode && assertDefined(componentOrLView, "component"); + let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView); + while (lView && !isRootView(lView)) { + lView = getLViewParent(lView); + } + ngDevMode && assertLView(lView); + return lView; +} +function getRootContext(viewOrComponent) { + const rootView = getRootView(viewOrComponent); + ngDevMode && assertDefined(rootView[CONTEXT], "Root view has no context. Perhaps it is disconnected?"); + return rootView[CONTEXT]; +} +function getFirstLContainer(lView) { + return getNearestLContainer(lView[CHILD_HEAD]); +} +function getNextLContainer(container) { + return getNearestLContainer(container[NEXT]); +} +function getNearestLContainer(viewOrContainer) { + while (viewOrContainer !== null && !isLContainer(viewOrContainer)) { + viewOrContainer = viewOrContainer[NEXT]; + } + return viewOrContainer; +} +function getComponent(element) { + ngDevMode && assertDomElement(element); + const context2 = getLContext(element); + if (context2 === null) return null; + if (context2.component === void 0) { + const lView = context2.lView; + if (lView === null) { + return null; + } + context2.component = getComponentAtNodeIndex(context2.nodeIndex, lView); + } + return context2.component; +} +function getContext(element) { + assertDomElement(element); + const context2 = getLContext(element); + const lView = context2 ? context2.lView : null; + return lView === null ? null : lView[CONTEXT]; +} +function getOwningComponent(elementOrDir) { + const context2 = getLContext(elementOrDir); + let lView = context2 ? context2.lView : null; + if (lView === null) return null; + let parent; + while (lView[TVIEW].type === 2 && (parent = getLViewParent(lView))) { + lView = parent; + } + return isRootView(lView) ? null : lView[CONTEXT]; +} +function getRootComponents(elementOrDir) { + const lView = readPatchedLView(elementOrDir); + return lView !== null ? [getRootContext(lView)] : []; +} +function getInjector(elementOrDir) { + const context2 = getLContext(elementOrDir); + const lView = context2 ? context2.lView : null; + if (lView === null) return Injector.NULL; + const tNode = lView[TVIEW].data[context2.nodeIndex]; + return new NodeInjector(tNode, lView); +} +function getDirectives(node) { + if (node instanceof Text) { + return []; + } + const context2 = getLContext(node); + const lView = context2 ? context2.lView : null; + if (lView === null) { + return []; + } + const tView = lView[TVIEW]; + const nodeIndex = context2.nodeIndex; + if (!tView?.data[nodeIndex]) { + return []; + } + if (context2.directives === void 0) { + context2.directives = getDirectivesAtNodeIndex(nodeIndex, lView); + } + return context2.directives === null ? [] : [...context2.directives]; +} +var AcxChangeDetectionStrategy; +(function(AcxChangeDetectionStrategy2) { + AcxChangeDetectionStrategy2[AcxChangeDetectionStrategy2["Default"] = 0] = "Default"; + AcxChangeDetectionStrategy2[AcxChangeDetectionStrategy2["OnPush"] = 1] = "OnPush"; +})(AcxChangeDetectionStrategy || (AcxChangeDetectionStrategy = {})); +var AcxViewEncapsulation; +(function(AcxViewEncapsulation2) { + AcxViewEncapsulation2[AcxViewEncapsulation2["Emulated"] = 0] = "Emulated"; + AcxViewEncapsulation2[AcxViewEncapsulation2["None"] = 1] = "None"; +})(AcxViewEncapsulation || (AcxViewEncapsulation = {})); +function getDirectiveMetadata$1(directiveOrComponentInstance) { + const { + constructor + } = directiveOrComponentInstance; + if (!constructor) { + throw new Error("Unable to find the instance constructor"); + } + const componentDef = getComponentDef(constructor); + if (componentDef) { + const inputs = extractInputDebugMetadata(componentDef.inputs); + return { + inputs, + outputs: componentDef.outputs, + encapsulation: componentDef.encapsulation, + changeDetection: componentDef.onPush ? ChangeDetectionStrategy.OnPush : ChangeDetectionStrategy.Eager + }; + } + const directiveDef = getDirectiveDef(constructor); + if (directiveDef) { + const inputs = extractInputDebugMetadata(directiveDef.inputs); + return { + inputs, + outputs: directiveDef.outputs + }; + } + return null; +} +function getHostElement(componentOrDirective) { + return getLContext(componentOrDirective).native; +} +function getListeners(element) { + ngDevMode && assertDomElement(element); + const lContext = getLContext(element); + const lView = lContext === null ? null : lContext.lView; + if (lView === null) return []; + const tView = lView[TVIEW]; + const lCleanup = lView[CLEANUP]; + const tCleanup = tView.cleanup; + const listeners = []; + if (tCleanup && lCleanup) { + for (let i = 0; i < tCleanup.length; ) { + const firstParam = tCleanup[i++]; + const secondParam = tCleanup[i++]; + if (typeof firstParam === "string") { + const name = firstParam; + const listenerElement = unwrapRNode(lView[secondParam]); + const callback = lCleanup[tCleanup[i++]]; + const useCaptureOrIndx = tCleanup[i++]; + const type = typeof useCaptureOrIndx === "boolean" || useCaptureOrIndx >= 0 ? "dom" : "output"; + const useCapture = typeof useCaptureOrIndx === "boolean" ? useCaptureOrIndx : false; + if (element == listenerElement) { + listeners.push({ + element, + name, + callback, + useCapture, + type + }); + } + } + } + } + listeners.sort(sortListeners); + return listeners; +} +function sortListeners(a, b) { + if (a.name == b.name) return 0; + return a.name < b.name ? -1 : 1; +} +function assertDomElement(value) { + if (typeof Element !== "undefined" && !(value instanceof Element)) { + throw new Error("Expecting instance of DOM Element"); + } +} +function extractInputDebugMetadata(inputs) { + const res = {}; + for (const key in inputs) { + if (inputs.hasOwnProperty(key)) { + const value = inputs[key]; + if (value !== void 0) { + res[key] = value[0]; + } + } + } + return res; +} +var DOCUMENT2 = void 0; +function setDocument(document2) { + DOCUMENT2 = document2; +} +function getDocument() { + if (DOCUMENT2 !== void 0) { + return DOCUMENT2; + } else if (typeof document !== "undefined") { + return document; + } + throw new RuntimeError(210, (typeof ngDevMode === "undefined" || ngDevMode) && `The document object is not available in this context. Make sure the DOCUMENT injection token is provided.`); +} +var APP_ID = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "AppId" : "", { + factory: () => DEFAULT_APP_ID +}); +var DEFAULT_APP_ID = "ng"; +var validAppIdInitializer = { + provide: ENVIRONMENT_INITIALIZER, + multi: true, + useValue: () => { + const appId = inject2(APP_ID); + const isAlphanumeric = /^[a-zA-Z0-9\-_]+$/.test(appId); + if (!isAlphanumeric) { + throw new RuntimeError(211, `APP_ID value "${appId}" is not alphanumeric. The APP_ID must be a string of alphanumeric characters. (a-zA-Z0-9), hyphens (-) and underscores (_) are allowed.`); + } + } +}; +var PLATFORM_INITIALIZER = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "Platform Initializer" : ""); +var PLATFORM_ID = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "Platform ID" : "", { + providedIn: "platform", + factory: () => "unknown" +}); +var ANIMATION_MODULE_TYPE = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "AnimationModuleType" : ""); +var CSP_NONCE = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "CSP nonce" : "", { + factory: () => { + return inject2(DOCUMENT).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce") || null; + } +}); +var IMAGE_CONFIG_DEFAULTS = { + breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840], + placeholderResolution: 30, + disableImageSizeWarning: false, + disableImageLazyLoadWarning: false +}; +var IMAGE_CONFIG = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "ImageConfig" : "", { + factory: () => IMAGE_CONFIG_DEFAULTS +}); +function makeStateKey(key) { + return key; +} +var TransferState = class _TransferState { + static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ + token: _TransferState, + providedIn: "root", + factory: () => { + const transferState = new _TransferState(); + if (true) { + transferState.store = retrieveTransferredState(inject2(DOCUMENT), inject2(APP_ID)); + } + return transferState; + } + }); + store = {}; + onSerializeCallbacks = {}; + get(key, defaultValue) { + return this.store[key] !== void 0 ? this.store[key] : defaultValue; + } + set(key, value) { + this.store[key] = value; + } + remove(key) { + delete this.store[key]; + } + hasKey(key) { + return this.store.hasOwnProperty(key); + } + get isEmpty() { + return Object.keys(this.store).length === 0; + } + onSerialize(key, callback) { + this.onSerializeCallbacks[key] = callback; + } + toJson() { + for (const key in this.onSerializeCallbacks) { + if (this.onSerializeCallbacks.hasOwnProperty(key)) { + try { + this.store[key] = this.onSerializeCallbacks[key](); + } catch (e) { + console.warn("Exception in onSerialize callback: ", e); + } + } + } + return JSON.stringify(this.store).replace(/ PRESERVE_HOST_CONTENT_DEFAULT +}); +var IS_I18N_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_I18N_HYDRATION_ENABLED" : ""); +var IS_EVENT_REPLAY_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_EVENT_REPLAY_ENABLED" : ""); +var EVENT_REPLAY_QUEUE = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "EVENT_REPLAY_QUEUE" : "", { + factory: () => [] +}); +var IS_INCREMENTAL_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_INCREMENTAL_HYDRATION_ENABLED" : ""); +var JSACTION_BLOCK_ELEMENT_MAP = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "JSACTION_BLOCK_ELEMENT_MAP" : "", { + factory: () => /* @__PURE__ */ new Map() +}); +var IS_ENABLED_BLOCKING_INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_ENABLED_BLOCKING_INITIAL_NAVIGATION" : ""); +var eventListenerOptions = { + passive: true, + capture: true +}; +var hoverTriggers = /* @__PURE__ */ new WeakMap(); +var interactionTriggers = /* @__PURE__ */ new WeakMap(); +var viewportTriggers = /* @__PURE__ */ new WeakMap(); +var interactionEventNames = ["click", "keydown"]; +var hoverEventNames = ["mouseenter", "mouseover", "focusin"]; +var intersectionObservers = /* @__PURE__ */ new Map(); +var DeferEventEntry = class { + callbacks = /* @__PURE__ */ new Set(); + listener = () => { + for (const callback of this.callbacks) { + callback(); + } + }; +}; +function onInteraction(trigger, callback) { + let entry = interactionTriggers.get(trigger); + if (!entry) { + entry = new DeferEventEntry(); + interactionTriggers.set(trigger, entry); + for (const name of interactionEventNames) { + trigger.addEventListener(name, entry.listener, eventListenerOptions); + } + } + entry.callbacks.add(callback); + return () => { + const { + callbacks, + listener + } = entry; + callbacks.delete(callback); + if (callbacks.size === 0) { + interactionTriggers.delete(trigger); + for (const name of interactionEventNames) { + trigger.removeEventListener(name, listener, eventListenerOptions); + } + } + }; +} +function onHover(trigger, callback) { + let entry = hoverTriggers.get(trigger); + if (!entry) { + entry = new DeferEventEntry(); + hoverTriggers.set(trigger, entry); + for (const name of hoverEventNames) { + trigger.addEventListener(name, entry.listener, eventListenerOptions); + } + } + entry.callbacks.add(callback); + return () => { + const { + callbacks, + listener + } = entry; + callbacks.delete(callback); + if (callbacks.size === 0) { + for (const name of hoverEventNames) { + trigger.removeEventListener(name, listener, eventListenerOptions); + } + hoverTriggers.delete(trigger); + } + }; +} +function createIntersectionObserver(options) { + const key = getIntersectionObserverKey(options); + return new IntersectionObserver((entries) => { + for (const current of entries) { + if (current.isIntersecting && viewportTriggers.has(current.target)) { + viewportTriggers.get(current.target)?.get(key)?.listener(); + } + } + }, options); +} +function onViewport(trigger, callback, observerFactoryFn, options) { + const key = getIntersectionObserverKey(options); + let entry = viewportTriggers.get(trigger)?.get(key); + if (!intersectionObservers.has(key)) { + intersectionObservers.set(key, { + observer: observerFactoryFn(options), + count: 0 + }); + } + const config2 = intersectionObservers.get(key); + if (!entry) { + entry = new DeferEventEntry(); + config2.observer.observe(trigger); + let triggerConfig = viewportTriggers.get(trigger); + if (triggerConfig) { + triggerConfig.set(key, entry); + } else { + triggerConfig = /* @__PURE__ */ new Map(); + viewportTriggers.set(trigger, triggerConfig); + } + triggerConfig.set(key, entry); + config2.count++; + } + entry.callbacks.add(callback); + return () => { + if (!viewportTriggers.get(trigger)?.has(key)) { + return; + } + entry.callbacks.delete(callback); + if (entry.callbacks.size === 0) { + config2.observer.unobserve(trigger); + config2.count--; + const triggerConfig = viewportTriggers.get(trigger); + if (triggerConfig) { + triggerConfig.delete(key); + if (triggerConfig.size === 0) { + viewportTriggers.delete(trigger); + } + } + } + if (config2.count === 0) { + config2.observer.disconnect(); + intersectionObservers.delete(key); + } + }; +} +function getIntersectionObserverKey(options) { + if (!options) { + return ""; + } + return `${options.rootMargin}/${typeof options.threshold === "number" ? options.threshold : options.threshold?.join("\n")}`; +} +var JSACTION_EVENT_CONTRACT = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "EVENT_CONTRACT_DETAILS" : "", { + factory: () => ({}) +}); +var handledEventElements = /* @__PURE__ */ new WeakMap(); +function markEventHandledForElement(event, element) { + if (event == null || typeof event !== "object") return; + let elements = handledEventElements.get(event); + if (!elements) { + elements = /* @__PURE__ */ new WeakSet(); + handledEventElements.set(event, elements); + } + elements.add(element); +} +var _stashEventListenerImpl = (lView, target, eventName, wrappedListener) => { +}; +function stashEventListenerImpl(lView, target, eventName, wrappedListener) { + _stashEventListenerImpl(lView, target, eventName, wrappedListener); +} +var DEHYDRATED_BLOCK_REGISTRY = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "DEHYDRATED_BLOCK_REGISTRY" : ""); +function isDetachedByI18n(tNode) { + return (tNode.flags & 32) === 32; +} +var TRANSFER_STATE_TOKEN_ID = "__nghData__"; +var NGH_DATA_KEY = makeStateKey(TRANSFER_STATE_TOKEN_ID); +var TRANSFER_STATE_DEFER_BLOCKS_INFO = "__nghDeferData__"; +var NGH_DEFER_BLOCKS_KEY = makeStateKey(TRANSFER_STATE_DEFER_BLOCKS_INFO); +function isInternalHydrationTransferStateKey(key) { + return key === TRANSFER_STATE_TOKEN_ID || key === TRANSFER_STATE_DEFER_BLOCKS_INFO; +} +var _retrieveHydrationInfoImpl = () => null; +function retrieveHydrationInfo(rNode, injector, isRootView2 = false) { + return _retrieveHydrationInfoImpl(rNode, injector, isRootView2); +} +function getLNodeForHydration(viewRef) { + let lView = viewRef._lView; + const tView = lView[TVIEW]; + if (tView.type === 2) { + return null; + } + if (isRootView(lView)) { + lView = lView[HEADER_OFFSET]; + } + return lView; +} +var HydrationStatus; +(function(HydrationStatus2) { + HydrationStatus2["Hydrated"] = "hydrated"; + HydrationStatus2["Skipped"] = "skipped"; + HydrationStatus2["Mismatched"] = "mismatched"; +})(HydrationStatus || (HydrationStatus = {})); +var HYDRATION_INFO_KEY = "__ngDebugHydrationInfo__"; +function patchHydrationInfo(node, info) { + node[HYDRATION_INFO_KEY] = info; +} +function markRNodeAsHavingHydrationMismatch(node, expectedNodeDetails = null, actualNodeDetails = null) { + if (!ngDevMode) { + throw new Error("Calling `markRNodeAsMismatchedByHydration` in prod mode is not supported and likely a mistake."); + } + while (node && !getComponent(node)) { + node = node?.parentNode; + } + if (node) { + patchHydrationInfo(node, { + status: HydrationStatus.Mismatched, + expectedNodeDetails, + actualNodeDetails + }); + } +} +function isIncrementalHydrationEnabled(injector) { + return injector.get(IS_INCREMENTAL_HYDRATION_ENABLED, false, { + optional: true + }); +} +var incrementalHydrationEnabledWarned = false; +function warnIncrementalHydrationNotConfigured() { + if (!incrementalHydrationEnabledWarned) { + incrementalHydrationEnabledWarned = true; + console.warn(formatRuntimeError(508, "Angular has detected that some `@defer` blocks use `hydrate` triggers, but incremental hydration was not enabled. Please ensure that the `withIncrementalHydration()` call is added as an argument for the `provideClientHydration()` function call in your application config.")); + } +} +function assertSsrIdDefined(ssrUniqueId) { + assertDefined(ssrUniqueId, "Internal error: expecting an SSR id for a defer block that should be hydrated, but the id is not present"); +} +function getParentBlockHydrationQueue(deferBlockId, injector) { + const dehydratedBlockRegistry = injector.get(DEHYDRATED_BLOCK_REGISTRY); + const transferState = injector.get(TransferState); + const deferBlockParents = transferState.get(NGH_DEFER_BLOCKS_KEY, {}); + let isTopMostDeferBlock = false; + let currentBlockId = deferBlockId; + let parentBlockPromise = null; + const hydrationQueue = []; + while (!isTopMostDeferBlock && currentBlockId) { + ngDevMode && assertEqual(hydrationQueue.indexOf(currentBlockId), -1, "Internal error: defer block hierarchy has a cycle."); + isTopMostDeferBlock = dehydratedBlockRegistry.has(currentBlockId); + const hydratingParentBlock = dehydratedBlockRegistry.hydrating.get(currentBlockId); + if (parentBlockPromise === null && hydratingParentBlock != null) { + parentBlockPromise = hydratingParentBlock.promise; + break; + } + hydrationQueue.unshift(currentBlockId); + currentBlockId = deferBlockParents[currentBlockId][DEFER_PARENT_BLOCK_ID]; + } + return { + parentBlockPromise, + hydrationQueue + }; +} +function refreshContentQueries(tView, lView) { + const contentQueries = tView.contentQueries; + if (contentQueries !== null) { + const prevConsumer = setActiveConsumer(null); + try { + for (let i = 0; i < contentQueries.length; i += 2) { + const queryStartIdx = contentQueries[i]; + const directiveDefIdx = contentQueries[i + 1]; + if (directiveDefIdx !== -1) { + const directiveDef = tView.data[directiveDefIdx]; + ngDevMode && assertDefined(directiveDef, "DirectiveDef not found."); + ngDevMode && assertDefined(directiveDef.contentQueries, "contentQueries function should be defined"); + setCurrentQueryIndex(queryStartIdx); + directiveDef.contentQueries(2, lView[directiveDefIdx], directiveDefIdx); + } + } + } finally { + setActiveConsumer(prevConsumer); + } + } +} +function executeViewQueryFn(flags, viewQueryFn, component) { + ngDevMode && assertDefined(viewQueryFn, "View queries function to execute must be defined."); + setCurrentQueryIndex(0); + const prevConsumer = setActiveConsumer(null); + try { + viewQueryFn(flags, component); + } finally { + setActiveConsumer(prevConsumer); + } +} +function executeContentQueries(tView, tNode, lView) { + if (isContentQueryHost(tNode)) { + const prevConsumer = setActiveConsumer(null); + try { + const start = tNode.directiveStart; + const end = tNode.directiveEnd; + for (let directiveIndex = start; directiveIndex < end; directiveIndex++) { + const def = tView.data[directiveIndex]; + if (def.contentQueries) { + const directiveInstance = lView[directiveIndex]; + ngDevMode && assertDefined(directiveIndex, "Incorrect reference to a directive defining a content query"); + def.contentQueries(1, directiveInstance, directiveIndex); + } + } + } finally { + setActiveConsumer(prevConsumer); + } + } +} +var ViewEncapsulation; +(function(ViewEncapsulation3) { + ViewEncapsulation3[ViewEncapsulation3["Emulated"] = 0] = "Emulated"; + ViewEncapsulation3[ViewEncapsulation3["None"] = 2] = "None"; + ViewEncapsulation3[ViewEncapsulation3["ShadowDom"] = 3] = "ShadowDom"; + ViewEncapsulation3[ViewEncapsulation3["ExperimentalIsolatedShadowDom"] = 4] = "ExperimentalIsolatedShadowDom"; +})(ViewEncapsulation || (ViewEncapsulation = {})); +var CUSTOM_ELEMENTS_SCHEMA = { + name: "custom-elements" +}; +var NO_ERRORS_SCHEMA = { + name: "no-errors-schema" +}; +var shouldThrowErrorOnUnknownElement = false; +var shouldThrowErrorOnUnknownProperty = false; +function validateElementIsKnown(lView, tNode) { + const tView = lView[TVIEW]; + if (tView.schemas === null) return; + const tagName = tNode.value; + if (!isDirectiveHost(tNode) && tagName !== null) { + const isUnknown = typeof HTMLUnknownElement !== "undefined" && HTMLUnknownElement && getNativeByTNode(tNode, lView) instanceof HTMLUnknownElement || typeof customElements !== "undefined" && tagName.indexOf("-") > -1 && !customElements.get(tagName); + if (isUnknown && !matchingSchemas(tView.schemas, tagName)) { + const isHostStandalone = isHostComponentStandalone(lView); + const templateLocation = getTemplateLocationDetails(lView); + const schemas = `'${isHostStandalone ? "@Component" : "@NgModule"}.schemas'`; + let message = `'${tagName}' is not a known element${templateLocation}: +`; + message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? "included in the '@Component.imports' of this component" : "a part of an @NgModule where this component is declared"}. +`; + if (tagName && tagName.indexOf("-") > -1) { + message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`; + } else { + message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`; + } + if (shouldThrowErrorOnUnknownElement) { + throw new RuntimeError(304, message); + } else { + console.error(formatRuntimeError(304, message)); + } + } + } +} +function isPropertyValid(element, propName, tagName, schemas) { + if (schemas === null) return true; + if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) { + return true; + } + return typeof Node === "undefined" || Node === null || !(element instanceof Node); +} +function handleUnknownPropertyError(propName, tagName, nodeType, lView) { + if (!tagName && nodeType === 4) { + tagName = "ng-template"; + } + const isHostStandalone = isHostComponentStandalone(lView); + const templateLocation = getTemplateLocationDetails(lView); + let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`; + const schemas = `'${isHostStandalone ? "@Component" : "@NgModule"}.schemas'`; + const importLocation = isHostStandalone ? "included in the '@Component.imports' of this component" : "a part of an @NgModule where this component is declared"; + if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) { + const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName); + message += ` +If the '${propName}' is an Angular control flow directive, please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`; + } else { + message += ` +1. If '${tagName}' is an Angular component and it has the '${propName}' input, then verify that it is ${importLocation}.`; + if (tagName && tagName.indexOf("-") > -1) { + message += ` +2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`; + message += ` +3. To allow any property add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`; + } else { + message += ` +2. To allow any property add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`; + } + } + reportUnknownPropertyError(message); +} +function reportUnknownPropertyError(message) { + if (shouldThrowErrorOnUnknownProperty) { + throw new RuntimeError(303, message); + } else { + console.error(formatRuntimeError(303, message)); + } +} +function getDeclarationComponentDef(lView) { + !ngDevMode && throwError2("Must never be called in production mode"); + const declarationLView = lView[DECLARATION_COMPONENT_VIEW]; + const context2 = declarationLView[CONTEXT]; + if (!context2) return null; + return context2.constructor ? getComponentDef(context2.constructor) : null; +} +function isHostComponentStandalone(lView) { + !ngDevMode && throwError2("Must never be called in production mode"); + const componentDef = getDeclarationComponentDef(lView); + return !!componentDef?.standalone; +} +function getTemplateLocationDetails(lView) { + !ngDevMode && throwError2("Must never be called in production mode"); + const hostComponentDef = getDeclarationComponentDef(lView); + const componentClassName = hostComponentDef?.type?.name; + return componentClassName ? ` (used in the '${componentClassName}' component template)` : ""; +} +var KNOWN_CONTROL_FLOW_DIRECTIVES = /* @__PURE__ */ new Map([["ngIf", "NgIf"], ["ngFor", "NgFor"], ["ngSwitchCase", "NgSwitchCase"], ["ngSwitchDefault", "NgSwitchDefault"]]); +function matchingSchemas(schemas, tagName) { + if (schemas !== null) { + for (let i = 0; i < schemas.length; i++) { + const schema = schemas[i]; + if (schema === NO_ERRORS_SCHEMA || schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf("-") > -1) { + return true; + } + } + } + return false; +} +var policy$1; +function getPolicy$1() { + if (policy$1 === void 0) { + policy$1 = null; + if (_global.trustedTypes) { + try { + policy$1 = _global.trustedTypes.createPolicy("angular", { + createHTML: (s) => s, + createScript: (s) => s, + createScriptURL: (s) => s + }); + } catch { + } + } + } + return policy$1; +} +function trustedHTMLFromString(html) { + return getPolicy$1()?.createHTML(html) || html; +} +function trustedScriptURLFromString(url) { + return getPolicy$1()?.createScriptURL(url) || url; +} +var policy; +function getPolicy() { + if (policy === void 0) { + policy = null; + if (_global.trustedTypes) { + try { + policy = _global.trustedTypes.createPolicy("angular#unsafe-bypass", { + createHTML: (s) => s, + createScript: (s) => s, + createScriptURL: (s) => s + }); + } catch { + } + } + } + return policy; +} +function trustedHTMLFromStringBypass(html) { + return getPolicy()?.createHTML(html) || html; +} +function trustedScriptFromStringBypass(script) { + return getPolicy()?.createScript(script) || script; +} +function trustedScriptURLFromStringBypass(url) { + return getPolicy()?.createScriptURL(url) || url; +} +var SafeValueImpl = class { + changingThisBreaksApplicationSecurity; + constructor(changingThisBreaksApplicationSecurity) { + this.changingThisBreaksApplicationSecurity = changingThisBreaksApplicationSecurity; + } + toString() { + return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${XSS_SECURITY_URL})`; + } +}; +var SafeHtmlImpl = class extends SafeValueImpl { + getTypeName() { + return "HTML"; + } +}; +var SafeStyleImpl = class extends SafeValueImpl { + getTypeName() { + return "Style"; + } +}; +var SafeScriptImpl = class extends SafeValueImpl { + getTypeName() { + return "Script"; + } +}; +var SafeUrlImpl = class extends SafeValueImpl { + getTypeName() { + return "URL"; + } +}; +var SafeResourceUrlImpl = class extends SafeValueImpl { + getTypeName() { + return "ResourceURL"; + } +}; +function unwrapSafeValue(value) { + return value instanceof SafeValueImpl ? value.changingThisBreaksApplicationSecurity : value; +} +function allowSanitizationBypassAndThrow(value, type) { + const actualType = getSanitizationBypassType(value); + if (actualType != null && actualType !== type) { + if (actualType === "ResourceURL" && type === "URL") return true; + throw new Error(`Required a safe ${type}, got a ${actualType} (see ${XSS_SECURITY_URL})`); + } + return actualType === type; +} +function getSanitizationBypassType(value) { + return value instanceof SafeValueImpl && value.getTypeName() || null; +} +function bypassSanitizationTrustHtml(trustedHtml) { + return new SafeHtmlImpl(trustedHtml); +} +function bypassSanitizationTrustStyle(trustedStyle) { + return new SafeStyleImpl(trustedStyle); +} +function bypassSanitizationTrustScript(trustedScript) { + return new SafeScriptImpl(trustedScript); +} +function bypassSanitizationTrustUrl(trustedUrl) { + return new SafeUrlImpl(trustedUrl); +} +function bypassSanitizationTrustResourceUrl(trustedResourceUrl) { + return new SafeResourceUrlImpl(trustedResourceUrl); +} +function getInertBodyHelper(defaultDoc) { + const inertDocumentHelper = new InertDocumentHelper(defaultDoc); + return isDOMParserAvailable() ? new DOMParserHelper(inertDocumentHelper) : inertDocumentHelper; +} +var DOMParserHelper = class { + inertDocumentHelper; + constructor(inertDocumentHelper) { + this.inertDocumentHelper = inertDocumentHelper; + } + getInertBodyElement(html) { + html = "" + html; + try { + const body = new window.DOMParser().parseFromString(trustedHTMLFromString(html), "text/html").body; + if (body === null) { + return this.inertDocumentHelper.getInertBodyElement(html); + } + body.firstChild?.remove(); + return body; + } catch { + return null; + } + } +}; +var InertDocumentHelper = class { + defaultDoc; + inertDocument; + constructor(defaultDoc) { + this.defaultDoc = defaultDoc; + this.inertDocument = this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"); + } + getInertBodyElement(html) { + const templateEl = this.inertDocument.createElement("template"); + templateEl.innerHTML = trustedHTMLFromString(html); + return templateEl; + } +}; +function isDOMParserAvailable() { + try { + return !!new window.DOMParser().parseFromString(trustedHTMLFromString(""), "text/html"); + } catch { + return false; + } +} +var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i; +function _sanitizeUrl(url) { + url = String(url); + if (url.match(SAFE_URL_PATTERN)) return url; + if (typeof ngDevMode === "undefined" || ngDevMode) { + console.warn(`WARNING: sanitizing unsafe URL value ${url} (see ${XSS_SECURITY_URL})`); + } + return "unsafe:" + url; +} +function tagSet(tags) { + const res = {}; + for (const t of tags.split(",")) res[t] = true; + return res; +} +function merge(...sets) { + const res = {}; + for (const s of sets) { + for (const v in s) { + if (s.hasOwnProperty(v)) res[v] = true; + } + } + return res; +} +var VOID_ELEMENTS = tagSet("area,br,col,hr,img,wbr"); +var OPTIONAL_END_TAG_BLOCK_ELEMENTS = tagSet("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"); +var OPTIONAL_END_TAG_INLINE_ELEMENTS = tagSet("rp,rt"); +var OPTIONAL_END_TAG_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, OPTIONAL_END_TAG_BLOCK_ELEMENTS); +var BLOCK_ELEMENTS = merge(OPTIONAL_END_TAG_BLOCK_ELEMENTS, tagSet("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")); +var INLINE_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, tagSet("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")); +var VALID_ELEMENTS = merge(VOID_ELEMENTS, BLOCK_ELEMENTS, INLINE_ELEMENTS, OPTIONAL_END_TAG_ELEMENTS); +var URI_ATTRS = tagSet("background,cite,href,itemtype,longdesc,poster,src,xlink:href"); +var HTML_ATTRS = tagSet("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"); +var ARIA_ATTRS = tagSet("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext"); +var VALID_ATTRS = merge(URI_ATTRS, HTML_ATTRS, ARIA_ATTRS); +var SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS = tagSet("script,style,template"); +var SanitizingHtmlSerializer = class { + sanitizedSomething = false; + buf = []; + sanitizeChildren(el) { + let current = el.firstChild; + let traverseContent = true; + let parentNodes = []; + while (current) { + if (current.nodeType === Node.ELEMENT_NODE) { + traverseContent = this.startElement(current); + } else if (current.nodeType === Node.TEXT_NODE) { + this.chars(current.nodeValue); + } else { + this.sanitizedSomething = true; + } + if (traverseContent && current.firstChild) { + parentNodes.push(current); + current = getFirstChild(current); + continue; + } + while (current) { + if (current.nodeType === Node.ELEMENT_NODE) { + this.endElement(current); + } + let next = getNextSibling(current); + if (next) { + current = next; + break; + } + current = parentNodes.pop(); + } + } + return this.buf.join(""); + } + startElement(element) { + const tagName = getNodeName(element).toLowerCase(); + if (!VALID_ELEMENTS.hasOwnProperty(tagName)) { + this.sanitizedSomething = true; + return !SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS.hasOwnProperty(tagName); + } + this.buf.push("<"); + this.buf.push(tagName); + const elAttrs = element.attributes; + for (let i = 0; i < elAttrs.length; i++) { + const elAttr = elAttrs.item(i); + const attrName = elAttr.name; + const lower = attrName.toLowerCase(); + if (!VALID_ATTRS.hasOwnProperty(lower)) { + this.sanitizedSomething = true; + continue; + } + let value = elAttr.value; + if (URI_ATTRS[lower]) value = _sanitizeUrl(value); + this.buf.push(" ", attrName, '="', encodeEntities(value), '"'); + } + this.buf.push(">"); + return true; + } + endElement(current) { + const tagName = getNodeName(current).toLowerCase(); + if (VALID_ELEMENTS.hasOwnProperty(tagName) && !VOID_ELEMENTS.hasOwnProperty(tagName)) { + this.buf.push(""); + } + } + chars(chars) { + this.buf.push(encodeEntities(chars)); + } +}; +function isClobberedElement(parentNode, childNode) { + return (parentNode.compareDocumentPosition(childNode) & Node.DOCUMENT_POSITION_CONTAINED_BY) !== Node.DOCUMENT_POSITION_CONTAINED_BY; +} +function getNextSibling(node) { + const nextSibling = node.nextSibling; + if (nextSibling && node !== nextSibling.previousSibling) { + throw clobberedElementError(nextSibling); + } + return nextSibling; +} +function getFirstChild(node) { + const firstChild = node.firstChild; + if (firstChild && isClobberedElement(node, firstChild)) { + throw clobberedElementError(firstChild); + } + return firstChild; +} +function getNodeName(node) { + const nodeName = node.nodeName; + return typeof nodeName === "string" ? nodeName : "FORM"; +} +function clobberedElementError(node) { + return new Error(`Failed to sanitize html because the element is clobbered: ${node.outerHTML}`); +} +var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; +var NON_ALPHANUMERIC_REGEXP = /([^\#-~ |!])/g; +function encodeEntities(value) { + return value.replace(/&/g, "&").replace(SURROGATE_PAIR_REGEXP, function(match2) { + const hi = match2.charCodeAt(0); + const low = match2.charCodeAt(1); + return "&#" + ((hi - 55296) * 1024 + (low - 56320) + 65536) + ";"; + }).replace(NON_ALPHANUMERIC_REGEXP, function(match2) { + return "&#" + match2.charCodeAt(0) + ";"; + }).replace(//g, ">"); +} +var inertBodyHelper; +function _sanitizeHtml(defaultDoc, unsafeHtmlInput) { + let inertBodyElement = null; + try { + inertBodyHelper = inertBodyHelper || getInertBodyHelper(defaultDoc); + let unsafeHtml = unsafeHtmlInput ? String(unsafeHtmlInput) : ""; + inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml); + let mXSSAttempts = 5; + let parsedHtml = unsafeHtml; + do { + if (mXSSAttempts === 0) { + throw new Error("Failed to sanitize html because the input is unstable"); + } + mXSSAttempts--; + unsafeHtml = parsedHtml; + parsedHtml = inertBodyElement.innerHTML; + inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml); + } while (unsafeHtml !== parsedHtml); + const sanitizer = new SanitizingHtmlSerializer(); + const safeHtml = sanitizer.sanitizeChildren(getTemplateContent(inertBodyElement) || inertBodyElement); + if ((typeof ngDevMode === "undefined" || ngDevMode) && sanitizer.sanitizedSomething) { + console.warn(`WARNING: sanitizing HTML stripped some content, see ${XSS_SECURITY_URL}`); + } + return trustedHTMLFromString(safeHtml); + } finally { + if (inertBodyElement) { + const parent = getTemplateContent(inertBodyElement) || inertBodyElement; + while (parent.firstChild) { + parent.firstChild.remove(); + } + } + } +} +function getTemplateContent(el) { + return "content" in el && isTemplateElement(el) ? el.content : null; +} +function isTemplateElement(el) { + return el.nodeType === Node.ELEMENT_NODE && el.nodeName === "TEMPLATE"; +} +var COMMENT_DISALLOWED = /^>|^->||--!>|)/g; +var COMMENT_DELIMITER_ESCAPED = "\u200B$1\u200B"; +function escapeCommentText(value) { + return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED)); +} +function createTextNode(renderer, value) { + return renderer.createText(value); +} +function updateTextNode(renderer, rNode, value) { + renderer.setValue(rNode, value); +} +function createCommentNode(renderer, value) { + return renderer.createComment(escapeCommentText(value)); +} +function createElementNode(renderer, name, namespace) { + return renderer.createElement(name, namespace); +} +function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) { + renderer.insertBefore(parent, child, beforeNode, isMove); +} +function nativeAppendChild(renderer, parent, child) { + ngDevMode && assertDefined(parent, "parent node must be defined"); + renderer.appendChild(parent, child); +} +function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) { + if (beforeNode !== null) { + nativeInsertBefore(renderer, parent, child, beforeNode, isMove); + } else { + nativeAppendChild(renderer, parent, child); + } +} +function nativeRemoveNode(renderer, rNode, isHostElement, requireSynchronousElementRemoval) { + renderer.removeChild(null, rNode, isHostElement, requireSynchronousElementRemoval); +} +function writeDirectStyle(renderer, element, newValue) { + ngDevMode && assertString(newValue, "'newValue' should be a string"); + renderer.setAttribute(element, "style", newValue); +} +function writeDirectClass(renderer, element, newValue) { + ngDevMode && assertString(newValue, "'newValue' should be a string"); + if (newValue === "") { + renderer.removeAttribute(element, "class"); + } else { + renderer.setAttribute(element, "class", newValue); + } +} +function setupStaticAttributes(renderer, element, tNode) { + const { + mergedAttrs, + classes, + styles + } = tNode; + if (mergedAttrs !== null) { + setUpAttributes(renderer, element, mergedAttrs); + } + if (classes !== null) { + writeDirectClass(renderer, element, classes); + } + if (styles !== null) { + writeDirectStyle(renderer, element, styles); + } +} +function enforceIframeSecurity(iframe) { + const lView = getLView(); + iframe.src = ""; + iframe.srcdoc = trustedHTMLFromString(""); + nativeRemoveNode(lView[RENDERER], iframe); +} +var SecurityContext; +(function(SecurityContext2) { + SecurityContext2[SecurityContext2["NONE"] = 0] = "NONE"; + SecurityContext2[SecurityContext2["HTML"] = 1] = "HTML"; + SecurityContext2[SecurityContext2["STYLE"] = 2] = "STYLE"; + SecurityContext2[SecurityContext2["SCRIPT"] = 3] = "SCRIPT"; + SecurityContext2[SecurityContext2["URL"] = 4] = "URL"; + SecurityContext2[SecurityContext2["RESOURCE_URL"] = 5] = "RESOURCE_URL"; + SecurityContext2[SecurityContext2["ATTRIBUTE_NO_BINDING"] = 6] = "ATTRIBUTE_NO_BINDING"; +})(SecurityContext || (SecurityContext = {})); +var _SECURITY_SCHEMA; +var SVG_NAMESPACE2 = "svg"; +var MATH_ML_NAMESPACE2 = "math"; +function SECURITY_SCHEMA() { + if (!_SECURITY_SCHEMA) { + _SECURITY_SCHEMA = {}; + registerContext(SecurityContext.HTML, void 0, [["iframe", ["srcdoc"]], ["*", ["innerHTML", "outerHTML"]]]); + registerContext(SecurityContext.STYLE, void 0, [["*", ["style"]]]); + registerContext(SecurityContext.URL, void 0, [["*", ["formAction"]], ["area", ["href"]], ["a", ["href", "xlink:href"]], ["form", ["action"]], ["img", ["src"]], ["video", ["src"]]]); + registerContext(SecurityContext.URL, MATH_ML_NAMESPACE2, [["annotation", ["href", "xlink:href"]], ["annotation-xml", ["href", "xlink:href"]], ["maction", ["href", "xlink:href"]], ["malignmark", ["href", "xlink:href"]], ["math", ["href", "xlink:href"]], ["mroot", ["href", "xlink:href"]], ["msqrt", ["href", "xlink:href"]], ["merror", ["href", "xlink:href"]], ["mfrac", ["href", "xlink:href"]], ["mglyph", ["href", "xlink:href"]], ["msub", ["href", "xlink:href"]], ["msup", ["href", "xlink:href"]], ["msubsup", ["href", "xlink:href"]], ["mmultiscripts", ["href", "xlink:href"]], ["mprescripts", ["href", "xlink:href"]], ["mi", ["href", "xlink:href"]], ["mn", ["href", "xlink:href"]], ["mo", ["href", "xlink:href"]], ["mpadded", ["href", "xlink:href"]], ["mphantom", ["href", "xlink:href"]], ["mrow", ["href", "xlink:href"]], ["ms", ["href", "xlink:href"]], ["mspace", ["href", "xlink:href"]], ["mstyle", ["href", "xlink:href"]], ["mtable", ["href", "xlink:href"]], ["mtd", ["href", "xlink:href"]], ["mtr", ["href", "xlink:href"]], ["mtext", ["href", "xlink:href"]], ["mover", ["href", "xlink:href"]], ["munder", ["href", "xlink:href"]], ["munderover", ["href", "xlink:href"]], ["semantics", ["href", "xlink:href"]], ["none", ["href", "xlink:href"]]]); + registerContext(SecurityContext.RESOURCE_URL, void 0, [["base", ["href"]], ["embed", ["src"]], ["frame", ["src"]], ["iframe", ["src"]], ["link", ["href"]], ["object", ["codebase", "data"]]]); + registerContext(SecurityContext.URL, SVG_NAMESPACE2, [["a", ["href", "xlink:href"]]]); + registerContext(SecurityContext.ATTRIBUTE_NO_BINDING, SVG_NAMESPACE2, [["animate", ["attributeName", "values", "to", "from"]], ["set", ["to", "attributeName"]], ["animateMotion", ["attributeName"]], ["animateTransform", ["attributeName"]]]); + registerContext(SecurityContext.ATTRIBUTE_NO_BINDING, void 0, [["unknown", ["attributeName", "values", "to", "from", "sandbox", "allow", "allowFullscreen", "referrerPolicy", "csp", "fetchPriority"]], ["iframe", ["sandbox", "allow", "allowFullscreen", "referrerPolicy", "csp", "fetchPriority"]]]); + } + return _SECURITY_SCHEMA; +} +function registerContext(ctx, namespace, specs) { + for (const [element, attributeNames] of specs) { + let tagName = namespace && element !== "*" && element !== "unknown" ? `:${namespace}:${element}` : element; + tagName = tagName.toLowerCase(); + for (const attr of attributeNames) { + _SECURITY_SCHEMA[`${tagName}|${attr.toLowerCase()}`] = ctx; + } + } +} +function \u0275\u0275sanitizeHtml(unsafeHtml) { + const sanitizer = getSanitizer(); + if (sanitizer) { + return trustedHTMLFromStringBypass(sanitizer.sanitize(SecurityContext.HTML, unsafeHtml) || ""); + } + if (allowSanitizationBypassAndThrow(unsafeHtml, "HTML")) { + return trustedHTMLFromStringBypass(unwrapSafeValue(unsafeHtml)); + } + return _sanitizeHtml(getDocument(), renderStringify(unsafeHtml)); +} +function \u0275\u0275sanitizeStyle(unsafeStyle) { + const sanitizer = getSanitizer(); + if (sanitizer) { + return sanitizer.sanitize(SecurityContext.STYLE, unsafeStyle) || ""; + } + if (allowSanitizationBypassAndThrow(unsafeStyle, "Style")) { + return unwrapSafeValue(unsafeStyle); + } + return renderStringify(unsafeStyle); +} +function \u0275\u0275sanitizeUrl(unsafeUrl) { + const sanitizer = getSanitizer(); + if (sanitizer) { + return sanitizer.sanitize(SecurityContext.URL, unsafeUrl) || ""; + } + if (allowSanitizationBypassAndThrow(unsafeUrl, "URL")) { + return unwrapSafeValue(unsafeUrl); + } + return _sanitizeUrl(renderStringify(unsafeUrl)); +} +function \u0275\u0275sanitizeResourceUrl(unsafeResourceUrl) { + const sanitizer = getSanitizer(); + if (sanitizer) { + return trustedScriptURLFromStringBypass(sanitizer.sanitize(SecurityContext.RESOURCE_URL, unsafeResourceUrl) || ""); + } + if (allowSanitizationBypassAndThrow(unsafeResourceUrl, "ResourceURL")) { + return trustedScriptURLFromStringBypass(unwrapSafeValue(unsafeResourceUrl)); + } + throw new RuntimeError(904, ngDevMode && `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`); +} +function \u0275\u0275sanitizeScript(unsafeScript) { + const sanitizer = getSanitizer(); + if (sanitizer) { + return trustedScriptFromStringBypass(sanitizer.sanitize(SecurityContext.SCRIPT, unsafeScript) || ""); + } + if (allowSanitizationBypassAndThrow(unsafeScript, "Script")) { + return trustedScriptFromStringBypass(unwrapSafeValue(unsafeScript)); + } + throw new RuntimeError(905, ngDevMode && "unsafe value used in a script context"); +} +function \u0275\u0275trustConstantHtml(html) { + if (ngDevMode && (!Array.isArray(html) || !Array.isArray(html.raw) || html.length !== 1)) { + throw new Error(`Unexpected interpolation in trusted HTML constant: ${html.join("?")}`); + } + return trustedHTMLFromString(html[0]); +} +function \u0275\u0275trustConstantResourceUrl(url) { + if (ngDevMode && (!Array.isArray(url) || !Array.isArray(url.raw) || url.length !== 1)) { + throw new Error(`Unexpected interpolation in trusted URL constant: ${url.join("?")}`); + } + return trustedScriptURLFromString(url[0]); +} +var RESOURCE_MAP = { + "embed": { + "src": true + }, + "frame": { + "src": true + }, + "iframe": { + "src": true + }, + "media": { + "src": true + }, + "base": { + "href": true + }, + "link": { + "href": true + }, + "object": { + "data": true, + "codebase": true + } +}; +function getUrlSanitizer(tag, prop) { + const isResource = RESOURCE_MAP[tag.toLowerCase()]?.[prop.toLowerCase()] === true; + return isResource ? \u0275\u0275sanitizeResourceUrl : \u0275\u0275sanitizeUrl; +} +function \u0275\u0275sanitizeUrlOrResourceUrl(unsafeUrl, tag, prop) { + return getUrlSanitizer(tag, prop)(unsafeUrl); +} +function validateAgainstEventProperties(name) { + if (name.toLowerCase().startsWith("on")) { + const errorMessage = `Binding to event property '${name}' is disallowed for security reasons, please use (${name.slice(2)})=... +If '${name}' is a directive input, make sure the directive is imported by the current module.`; + throw new RuntimeError(306, errorMessage); + } +} +function getSanitizer() { + const lView = getLView(); + return lView && lView[ENVIRONMENT].sanitizer; +} +var SECURITY_SENSITIVE_ATTRIBUTE_NAMES = /* @__PURE__ */ new Set(["href", "xlink:href"]); +var SVG_ANIMATION_ATTRIBUTE_NAME_CANDIDATES = ["attributeName", "attributename"]; +var SECURITY_SENSITIVE_ELEMENTS = { + "iframe": { + "sandbox": true, + "allow": true, + "allowfullscreen": true, + "referrerpolicy": true, + "csp": true, + "fetchpriority": true + }, + ":svg:animate": { + "attributename": true, + "to": SECURITY_SENSITIVE_ATTRIBUTE_NAMES, + "values": SECURITY_SENSITIVE_ATTRIBUTE_NAMES, + "from": SECURITY_SENSITIVE_ATTRIBUTE_NAMES + }, + ":svg:set": { + "attributename": true, + "to": SECURITY_SENSITIVE_ATTRIBUTE_NAMES + }, + ":svg:animatemotion": { + "attributename": true + }, + ":svg:animatetransform": { + "attributename": true + } +}; +function \u0275\u0275validateAttribute(value, tagName, attributeName) { + const lowerCaseTagName = tagName.toLowerCase(); + const lowerCaseAttrName = attributeName.toLowerCase(); + const index = getSelectedIndex(); + const tNode = index === -1 ? null : getSelectedTNode(); + if (tNode && tNode.type !== 2) { + return value; + } + const fullTagName = lowerCaseTagName[0] !== ":" && tNode?.namespace ? `:${tNode.namespace}:${lowerCaseTagName}` : lowerCaseTagName; + const validationConfig = SECURITY_SENSITIVE_ELEMENTS[fullTagName]?.[lowerCaseAttrName]; + if (!validationConfig) { + return value; + } + const lView = getLView(); + if (tNode && lowerCaseTagName === "iframe") { + const element = getNativeByTNode(tNode, lView); + enforceIframeSecurity(element); + } + const displayTagName = tagName[0] === ":" ? tagName.split(":").pop() : tagName; + if (typeof validationConfig !== "boolean") { + if (!tNode) { + const errorMessage2 = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied as a binding to the <${tagName}> element. For security reasons, the \`${attributeName}\` can be set on the <${tagName}> element as a static attribute only. +To fix this, switch the \`${attributeName}\` binding to a static attribute in a template or in host bindings section.`; + throw new RuntimeError(-910, errorMessage2); + } + const element = getNativeByTNode(tNode, lView); + const attributeNameValue = getSecuritySensitiveSVGAnimationAttributeName(element, validationConfig); + if (attributeNameValue) { + const errorMessage2 = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied as a binding to the <${displayTagName}> element${getTemplateLocationDetails(lView)}. For security reasons, the \`${attributeName}\` can be set on the <${displayTagName}> element as a static attribute only when the "attributeName" is set to '${attributeNameValue}'. +To fix this, switch the \`${attributeNameValue}\` binding to a static attribute in a template or in host bindings section.`; + throw new RuntimeError(-910, errorMessage2); + } + return value; + } + const errorMessage = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied as a binding to the <${displayTagName}> element${tNode ? getTemplateLocationDetails(lView) : ""}. For security reasons, the \`${attributeName}\` can be set on the <${displayTagName}> element as a static attribute only. +To fix this, switch the \`${attributeName}\` binding to a static attribute in a template or in host bindings section.`; + throw new RuntimeError(-910, errorMessage); +} +function getSecuritySensitiveSVGAnimationAttributeName(element, validationConfig) { + for (const attributeName of SVG_ANIMATION_ATTRIBUTE_NAME_CANDIDATES) { + const attributeNameValue = element.getAttribute(attributeName); + if (attributeNameValue !== null && validationConfig.has(attributeNameValue.toLowerCase())) { + return attributeNameValue; + } + } + return null; +} +var NG_REFLECT_ATTRS_FLAG_DEFAULT = false; +var NG_REFLECT_ATTRS_FLAG = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "NG_REFLECT_FLAG" : "", { + factory: () => NG_REFLECT_ATTRS_FLAG_DEFAULT +}); +function normalizeDebugBindingName(name) { + name = camelCaseToDashCase(name.replace(/[$@]/g, "_")); + return `ng-reflect-${name}`; +} +var CAMEL_CASE_REGEXP = /([A-Z])/g; +function camelCaseToDashCase(input2) { + return input2.replace(CAMEL_CASE_REGEXP, (...m) => "-" + m[1].toLowerCase()); +} +function normalizeDebugBindingValue(value) { + try { + return value != null ? value.toString().slice(0, 30) : value; + } catch (e) { + return "[ERROR] Exception while trying to serialize the value"; + } +} +function \u0275\u0275resolveWindow(element) { + return element.ownerDocument.defaultView; +} +function \u0275\u0275resolveDocument(element) { + return element.ownerDocument; +} +function \u0275\u0275resolveBody(element) { + return element.ownerDocument.body; +} +var INTERPOLATION_DELIMITER = `\uFFFD`; +function maybeUnwrapFn(value) { + if (value instanceof Function) { + return value(); + } else { + return value; + } +} +var VALUE_STRING_LENGTH_LIMIT = 200; +function assertStandaloneComponentType(type) { + assertComponentDef(type); + const componentDef = getComponentDef(type); + if (!componentDef.standalone) { + throw new RuntimeError(907, `The ${stringifyForError(type)} component is not marked as standalone, but Angular expects to have a standalone component here. Please make sure the ${stringifyForError(type)} component does not have the \`standalone: false\` flag in the decorator.`); + } +} +function assertComponentDef(type) { + if (!getComponentDef(type)) { + throw new RuntimeError(906, `The ${stringifyForError(type)} is not an Angular component, make sure it has the \`@Component\` decorator.`); + } +} +function throwMultipleComponentError(tNode, first2, second) { + throw new RuntimeError(-300, `Multiple components match node with tagname ${tNode.value}: ${stringifyForError(first2)} and ${stringifyForError(second)}`); +} +function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName, lView) { + const hostComponentDef = getDeclarationComponentDef(lView); + const componentClassName = hostComponentDef?.type?.name; + const field = propName ? ` for '${propName}'` : ""; + let msg = `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value${field}: '${formatValue(oldValue)}'. Current value: '${formatValue(currValue)}'.${componentClassName ? ` Expression location: ${componentClassName} component` : ""}`; + if (creationMode) { + msg += ` It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook?`; + } + throw new RuntimeError(-100, msg); +} +function formatValue(value) { + let strValue = String(value); + try { + if (Array.isArray(value) || strValue === "[object Object]") { + strValue = JSON.stringify(value); + } + } catch (error) { + } + return strValue.length > VALUE_STRING_LENGTH_LIMIT ? strValue.substring(0, VALUE_STRING_LENGTH_LIMIT) + "\u2026" : strValue; +} +function constructDetailsForInterpolation(lView, rootIndex, expressionIndex, meta, changedValue) { + const [propName, prefix, ...chunks] = meta.split(INTERPOLATION_DELIMITER); + let oldValue = prefix, newValue = prefix; + for (let i = 0; i < chunks.length; i++) { + const slotIdx = rootIndex + i; + oldValue += `${lView[slotIdx]}${chunks[i]}`; + newValue += `${slotIdx === expressionIndex ? changedValue : lView[slotIdx]}${chunks[i]}`; + } + return { + propName, + oldValue, + newValue + }; +} +function getExpressionChangedErrorDetails(lView, bindingIndex, oldValue, newValue) { + const tData = lView[TVIEW].data; + const metadata = tData[bindingIndex]; + if (typeof metadata === "string") { + if (metadata.indexOf(INTERPOLATION_DELIMITER) > -1) { + return constructDetailsForInterpolation(lView, bindingIndex, bindingIndex, metadata, newValue); + } + return { + propName: metadata, + oldValue, + newValue + }; + } + if (metadata === null) { + let idx = bindingIndex - 1; + while (typeof tData[idx] !== "string" && tData[idx + 1] === null) { + idx--; + } + const meta = tData[idx]; + if (typeof meta === "string") { + const matches = meta.match(new RegExp(INTERPOLATION_DELIMITER, "g")); + if (matches && matches.length - 1 > bindingIndex - idx) { + return constructDetailsForInterpolation(lView, idx, bindingIndex, meta, newValue); + } + } + } + return { + propName: void 0, + oldValue, + newValue + }; +} +function classIndexOf(className, classToSearch, startingIndex) { + ngDevMode && assertNotEqual(classToSearch, "", 'can not look for "" string.'); + let end = className.length; + while (true) { + const foundIndex = className.indexOf(classToSearch, startingIndex); + if (foundIndex === -1) return foundIndex; + if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32) { + const length = classToSearch.length; + if (foundIndex + length === end || className.charCodeAt(foundIndex + length) <= 32) { + return foundIndex; + } + } + startingIndex = foundIndex + 1; + } +} +var NG_TEMPLATE_SELECTOR = "ng-template"; +function isCssClassMatching(tNode, attrs, cssClassToMatch, isProjectionMode) { + ngDevMode && assertEqual(cssClassToMatch, cssClassToMatch.toLowerCase(), "Class name expected to be lowercase."); + let i = 0; + if (isProjectionMode) { + for (; i < attrs.length && typeof attrs[i] === "string"; i += 2) { + if (attrs[i] === "class" && classIndexOf(attrs[i + 1].toLowerCase(), cssClassToMatch, 0) !== -1) { + return true; + } + } + } else if (isInlineTemplate(tNode)) { + return false; + } + i = attrs.indexOf(1, i); + if (i > -1) { + let item; + while (++i < attrs.length && typeof (item = attrs[i]) === "string") { + if (item.toLowerCase() === cssClassToMatch) { + return true; + } + } + } + return false; +} +function isInlineTemplate(tNode) { + return tNode.type === 4 && tNode.value !== NG_TEMPLATE_SELECTOR; +} +function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) { + const tagNameToCompare = tNode.type === 4 && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value; + return currentSelector === tagNameToCompare; +} +function isNodeMatchingSelector(tNode, selector, isProjectionMode) { + ngDevMode && assertDefined(selector[0], "Selector should have a tag name"); + let mode = 4; + const nodeAttrs = tNode.attrs; + const nameOnlyMarkerIdx = nodeAttrs !== null ? getNameOnlyMarkerIndex(nodeAttrs) : 0; + let skipToNextSelector = false; + for (let i = 0; i < selector.length; i++) { + const current = selector[i]; + if (typeof current === "number") { + if (!skipToNextSelector && !isPositive(mode) && !isPositive(current)) { + return false; + } + if (skipToNextSelector && isPositive(current)) continue; + skipToNextSelector = false; + mode = current | mode & 1; + continue; + } + if (skipToNextSelector) continue; + if (mode & 4) { + mode = 2 | mode & 1; + if (current !== "" && !hasTagAndTypeMatch(tNode, current, isProjectionMode) || current === "" && selector.length === 1) { + if (isPositive(mode)) return false; + skipToNextSelector = true; + } + } else if (mode & 8) { + if (nodeAttrs === null || !isCssClassMatching(tNode, nodeAttrs, current, isProjectionMode)) { + if (isPositive(mode)) return false; + skipToNextSelector = true; + } + } else { + const selectorAttrValue = selector[++i]; + const attrIndexInNode = findAttrIndexInNode(current, nodeAttrs, isInlineTemplate(tNode), isProjectionMode); + if (attrIndexInNode === -1) { + if (isPositive(mode)) return false; + skipToNextSelector = true; + continue; + } + if (selectorAttrValue !== "") { + let nodeAttrValue; + if (attrIndexInNode > nameOnlyMarkerIdx) { + nodeAttrValue = ""; + } else { + ngDevMode && assertNotEqual(nodeAttrs[attrIndexInNode], 0, "We do not match directives on namespaced attributes"); + nodeAttrValue = nodeAttrs[attrIndexInNode + 1].toLowerCase(); + } + if (mode & 2 && selectorAttrValue !== nodeAttrValue) { + if (isPositive(mode)) return false; + skipToNextSelector = true; + } + } + } + } + return isPositive(mode) || skipToNextSelector; +} +function isPositive(mode) { + return (mode & 1) === 0; +} +function findAttrIndexInNode(name, attrs, isInlineTemplate2, isProjectionMode) { + if (attrs === null) return -1; + let i = 0; + if (isProjectionMode || !isInlineTemplate2) { + let bindingsMode = false; + while (i < attrs.length) { + const maybeAttrName = attrs[i]; + if (maybeAttrName === name) { + return i; + } else if (maybeAttrName === 3 || maybeAttrName === 6) { + bindingsMode = true; + } else if (maybeAttrName === 1 || maybeAttrName === 2) { + let value = attrs[++i]; + while (typeof value === "string") { + value = attrs[++i]; + } + continue; + } else if (maybeAttrName === 4) { + break; + } else if (maybeAttrName === 0) { + i += 4; + continue; + } + i += bindingsMode ? 1 : 2; + } + return -1; + } else { + return matchTemplateAttribute(attrs, name); + } +} +function isNodeMatchingSelectorList(tNode, selector, isProjectionMode = false) { + for (let i = 0; i < selector.length; i++) { + if (isNodeMatchingSelector(tNode, selector[i], isProjectionMode)) { + return true; + } + } + return false; +} +function getProjectAsAttrValue(tNode) { + const nodeAttrs = tNode.attrs; + if (nodeAttrs != null) { + const ngProjectAsAttrIdx = nodeAttrs.indexOf(5); + if ((ngProjectAsAttrIdx & 1) === 0) { + return nodeAttrs[ngProjectAsAttrIdx + 1]; + } + } + return null; +} +function getNameOnlyMarkerIndex(nodeAttrs) { + for (let i = 0; i < nodeAttrs.length; i++) { + const nodeAttr = nodeAttrs[i]; + if (isNameOnlyAttributeMarker(nodeAttr)) { + return i; + } + } + return nodeAttrs.length; +} +function matchTemplateAttribute(attrs, name) { + let i = attrs.indexOf(4); + if (i > -1) { + i++; + while (i < attrs.length) { + const attr = attrs[i]; + if (typeof attr === "number") return -1; + if (attr === name) return i; + i++; + } + } + return -1; +} +function isSelectorInSelectorList(selector, list) { + selectorListLoop: for (let i = 0; i < list.length; i++) { + const currentSelectorInList = list[i]; + if (selector.length !== currentSelectorInList.length) { + continue; + } + for (let j = 0; j < selector.length; j++) { + if (selector[j] !== currentSelectorInList[j]) { + continue selectorListLoop; + } + } + return true; + } + return false; +} +function maybeWrapInNotSelector(isNegativeMode, chunk) { + return isNegativeMode ? ":not(" + chunk.trim() + ")" : chunk; +} +function stringifyCSSSelector(selector) { + let result = selector[0]; + let i = 1; + let mode = 2; + let currentChunk = ""; + let isNegativeMode = false; + while (i < selector.length) { + let valueOrMarker = selector[i]; + if (typeof valueOrMarker === "string") { + if (mode & 2) { + const attrValue = selector[++i]; + currentChunk += "[" + valueOrMarker + (attrValue.length > 0 ? '="' + attrValue + '"' : "") + "]"; + } else if (mode & 8) { + currentChunk += "." + valueOrMarker; + } else if (mode & 4) { + currentChunk += " " + valueOrMarker; + } + } else { + if (currentChunk !== "" && !isPositive(valueOrMarker)) { + result += maybeWrapInNotSelector(isNegativeMode, currentChunk); + currentChunk = ""; + } + mode = valueOrMarker; + isNegativeMode = isNegativeMode || !isPositive(mode); + } + i++; + } + if (currentChunk !== "") { + result += maybeWrapInNotSelector(isNegativeMode, currentChunk); + } + return result; +} +function stringifyCSSSelectorList(selectorList) { + return selectorList.map(stringifyCSSSelector).join(","); +} +function extractAttrsAndClassesFromSelector(selector) { + const attrs = []; + const classes = []; + let i = 1; + let mode = 2; + while (i < selector.length) { + let valueOrMarker = selector[i]; + if (typeof valueOrMarker === "string") { + if (mode === 2) { + if (valueOrMarker !== "") { + attrs.push(valueOrMarker, selector[++i]); + } + } else if (mode === 8) { + classes.push(valueOrMarker); + } + } else { + if (!isPositive(mode)) break; + mode = valueOrMarker; + } + i++; + } + if (classes.length) { + attrs.push(1, ...classes); + } + return attrs; +} +var NO_CHANGE = typeof ngDevMode === "undefined" || ngDevMode ? { + __brand__: "NO_CHANGE" +} : {}; +function createTView(type, declTNode, templateFn, decls, vars, directives, pipes, viewQuery, schemas, constsOrFactory, ssrId) { + const bindingStartIndex = HEADER_OFFSET + decls; + const initialViewLength = bindingStartIndex + vars; + const blueprint = createViewBlueprint(bindingStartIndex, initialViewLength); + const consts = typeof constsOrFactory === "function" ? constsOrFactory() : constsOrFactory; + const tView = blueprint[TVIEW] = { + type, + blueprint, + template: templateFn, + queries: null, + viewQuery, + declTNode, + data: blueprint.slice().fill(null, bindingStartIndex), + bindingStartIndex, + expandoStartIndex: initialViewLength, + hostBindingOpCodes: null, + firstCreatePass: true, + firstUpdatePass: true, + staticViewQueries: false, + staticContentQueries: false, + preOrderHooks: null, + preOrderCheckHooks: null, + contentHooks: null, + contentCheckHooks: null, + viewHooks: null, + viewCheckHooks: null, + destroyHooks: null, + cleanup: null, + contentQueries: null, + components: null, + directiveRegistry: typeof directives === "function" ? directives() : directives, + pipeRegistry: typeof pipes === "function" ? pipes() : pipes, + firstChild: null, + schemas, + consts, + incompleteFirstPass: false, + ssrId + }; + if (ngDevMode) { + Object.seal(tView); + } + return tView; +} +function createViewBlueprint(bindingStartIndex, initialViewLength) { + const blueprint = []; + for (let i = 0; i < initialViewLength; i++) { + blueprint.push(i < bindingStartIndex ? null : NO_CHANGE); + } + return blueprint; +} +function getOrCreateComponentTView(def) { + const tView = def.tView; + if (tView === null || tView.incompleteFirstPass) { + const declTNode = null; + return def.tView = createTView(1, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts, def.id); + } + return tView; +} +function createLView(parentLView, tView, context2, flags, host, tHostNode, environment, renderer, injector, embeddedViewInjector, hydrationInfo) { + const lView = tView.blueprint.slice(); + lView[HOST] = host; + lView[FLAGS] = flags | 4 | 128 | 8 | 64 | 1024; + if (embeddedViewInjector !== null || parentLView && parentLView[FLAGS] & 2048) { + lView[FLAGS] |= 2048; + } + resetPreOrderHookFlags(lView); + ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView); + lView[PARENT] = lView[DECLARATION_VIEW] = parentLView; + lView[CONTEXT] = context2; + lView[ENVIRONMENT] = environment || parentLView && parentLView[ENVIRONMENT]; + ngDevMode && assertDefined(lView[ENVIRONMENT], "LViewEnvironment is required"); + lView[RENDERER] = renderer || parentLView && parentLView[RENDERER]; + ngDevMode && assertDefined(lView[RENDERER], "Renderer is required"); + lView[INJECTOR] = injector || parentLView && parentLView[INJECTOR] || null; + lView[T_HOST] = tHostNode; + lView[ID] = getUniqueLViewId(); + lView[HYDRATION] = hydrationInfo; + lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector; + ngDevMode && assertEqual(tView.type == 2 ? parentLView !== null : true, true, "Embedded views must have parentLView"); + lView[DECLARATION_COMPONENT_VIEW] = tView.type == 2 ? parentLView[DECLARATION_COMPONENT_VIEW] : lView; + return lView; +} +function createComponentLView(lView, hostTNode, def) { + const native = getNativeByTNode(hostTNode, lView); + const tView = getOrCreateComponentTView(def); + const rendererFactory = lView[ENVIRONMENT].rendererFactory; + const componentView = addToEndOfViewTree(lView, createLView(lView, tView, null, getInitialLViewFlagsFromDef(def), native, hostTNode, null, rendererFactory.createRenderer(native, def), null, null, null)); + return lView[hostTNode.index] = componentView; +} +function getInitialLViewFlagsFromDef(def) { + let flags = 16; + if (def.signals) { + flags = 4096; + } else if (def.onPush) { + flags = 64; + } + return flags; +} +function allocExpando(tView, lView, numSlotsToAlloc, initialValue) { + if (numSlotsToAlloc === 0) return -1; + if (ngDevMode) { + assertFirstCreatePass(tView); + assertSame(tView, lView[TVIEW], "`LView` must be associated with `TView`!"); + assertEqual(tView.data.length, lView.length, "Expecting LView to be same size as TView"); + assertEqual(tView.data.length, tView.blueprint.length, "Expecting Blueprint to be same size as TView"); + assertFirstUpdatePass(tView); + } + const allocIdx = lView.length; + for (let i = 0; i < numSlotsToAlloc; i++) { + lView.push(initialValue); + tView.blueprint.push(initialValue); + tView.data.push(null); + } + return allocIdx; +} +function addToEndOfViewTree(lView, lViewOrLContainer) { + if (lView[CHILD_HEAD]) { + lView[CHILD_TAIL][NEXT] = lViewOrLContainer; + } else { + lView[CHILD_HEAD] = lViewOrLContainer; + } + lView[CHILD_TAIL] = lViewOrLContainer; + return lViewOrLContainer; +} +function \u0275\u0275advance(delta = 1) { + ngDevMode && assertGreaterThan(delta, 0, "Can only advance forward"); + selectIndexInternal(getTView(), getLView(), getSelectedIndex() + delta, !!ngDevMode && isInCheckNoChangesMode()); +} +function selectIndexInternal(tView, lView, index, checkNoChangesMode) { + ngDevMode && assertIndexInDeclRange(lView[TVIEW], index); + if (!checkNoChangesMode) { + const hooksInitPhaseCompleted = (lView[FLAGS] & 3) === 3; + if (hooksInitPhaseCompleted) { + const preOrderCheckHooks = tView.preOrderCheckHooks; + if (preOrderCheckHooks !== null) { + executeCheckHooks(lView, preOrderCheckHooks, index); + } + } else { + const preOrderHooks = tView.preOrderHooks; + if (preOrderHooks !== null) { + executeInitAndCheckHooks(lView, preOrderHooks, 0, index); + } + } + } + setSelectedIndex(index); +} +var InputFlags; +(function(InputFlags2) { + InputFlags2[InputFlags2["None"] = 0] = "None"; + InputFlags2[InputFlags2["SignalBased"] = 1] = "SignalBased"; + InputFlags2[InputFlags2["HasDecoratorInputTransform"] = 2] = "HasDecoratorInputTransform"; +})(InputFlags || (InputFlags = {})); +function writeToDirectiveInput(def, instance, publicName, value) { + const prevConsumer = setActiveConsumer(null); + try { + if (ngDevMode) { + if (!def.inputs.hasOwnProperty(publicName)) { + throw new Error(`ASSERTION ERROR: Directive ${def.type.name} does not have an input with a public name of "${publicName}"`); + } + if (instance instanceof NodeInjectorFactory) { + throw new Error(`ASSERTION ERROR: Cannot write input to factory for type ${def.type.name}. Directive has not been created yet.`); + } + } + const [privateName, flags, transform] = def.inputs[publicName]; + let inputSignalNode = null; + if ((flags & InputFlags.SignalBased) !== 0) { + const field = instance[privateName]; + inputSignalNode = field[SIGNAL]; + } + if (inputSignalNode !== null && inputSignalNode.transformFn !== void 0) { + value = inputSignalNode.transformFn(value); + } else if (transform !== null) { + value = transform.call(instance, value); + } + if (def.setInput !== null) { + def.setInput(instance, inputSignalNode, value, publicName, privateName); + } else { + applyValueToInputField(instance, inputSignalNode, privateName, value); + } + } finally { + setActiveConsumer(prevConsumer); + } +} +var RendererStyleFlags2; +(function(RendererStyleFlags22) { + RendererStyleFlags22[RendererStyleFlags22["Important"] = 1] = "Important"; + RendererStyleFlags22[RendererStyleFlags22["DashCase"] = 2] = "DashCase"; +})(RendererStyleFlags2 || (RendererStyleFlags2 = {})); +var _icuContainerIterate; +function icuContainerIterate(tIcuContainerNode, lView) { + return _icuContainerIterate(tIcuContainerNode, lView); +} +function ensureIcuContainerVisitorLoaded(loader) { + if (_icuContainerIterate === void 0) { + _icuContainerIterate = loader(); + } +} +var ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "AnimationsDisabled" : "", { + factory: () => false +}); +var MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "MaxAnimationTimeout" : "", { + factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT +}); +var MAX_ANIMATION_TIMEOUT_DEFAULT = 4e3; +var DEFAULT_ANIMATIONS_DISABLED = false; +var areAnimationSupported = typeof document !== "undefined" && typeof document?.documentElement?.getAnimations === "function"; +function areAnimationsDisabled(lView) { + const injector = lView[INJECTOR]; + return injector.get(ANIMATIONS_DISABLED, DEFAULT_ANIMATIONS_DISABLED); +} +function assertAnimationTypes(value, instruction) { + if (value == null || typeof value !== "string" && typeof value !== "function") { + throw new RuntimeError(650, `'${instruction}' value must be a string of CSS classes or an animation function, got ${stringify(value)}`); + } +} +function assertElementNodes(nativeElement, instruction) { + if (nativeElement.nodeType !== Node.ELEMENT_NODE) { + throw new RuntimeError(650, `'${instruction}' can only be used on an element node, got ${stringify(nativeElement.nodeType)}`); + } +} +function trackEnterClasses(el, classList, cleanupFns) { + const elementData = enterClassMap.get(el); + if (elementData) { + for (const klass of classList) { + elementData.classList.push(klass); + } + for (const fn of cleanupFns) { + elementData.cleanupFns.push(fn); + } + } else { + enterClassMap.set(el, { + classList, + cleanupFns + }); + } +} +function cleanupEnterClassData(element) { + const elementData = enterClassMap.get(element); + if (elementData) { + for (const fn of elementData.cleanupFns) { + fn(); + } + enterClassMap.delete(element); + } + longestAnimations.delete(element); +} +var noOpAnimationComplete = () => { +}; +var enterClassMap = /* @__PURE__ */ new WeakMap(); +var longestAnimations = /* @__PURE__ */ new WeakMap(); +var leavingNodes = /* @__PURE__ */ new WeakMap(); +var reusedNodes = /* @__PURE__ */ new WeakSet(); +function clearLeavingNodes(tNode, el) { + const nodes = leavingNodes.get(tNode); + if (nodes && nodes.length > 0) { + const ix = nodes.findIndex((node) => node === el); + if (ix > -1) nodes.splice(ix, 1); + } + if (nodes?.length === 0) { + leavingNodes.delete(tNode); + } +} +function cancelLeavingNodes(tNode, newElement) { + const nodes = leavingNodes.get(tNode); + if (!nodes || nodes.length === 0) return; + const newParent = newElement.parentNode; + const prevSibling = newElement.previousSibling; + for (let i = nodes.length - 1; i >= 0; i--) { + const leavingEl = nodes[i]; + const leavingParent = leavingEl.parentNode; + if (leavingEl === newElement) { + nodes.splice(i, 1); + reusedNodes.add(leavingEl); + leavingEl.dispatchEvent(new CustomEvent("animationend", { + detail: { + cancel: true + } + })); + } else if (prevSibling && leavingEl === prevSibling || leavingParent && newParent && leavingParent !== newParent) { + nodes.splice(i, 1); + leavingEl.dispatchEvent(new CustomEvent("animationend", { + detail: { + cancel: true + } + })); + leavingEl.parentNode?.removeChild(leavingEl); + } + } +} +function trackLeavingNodes(tNode, el) { + const nodes = leavingNodes.get(tNode); + if (nodes) { + if (!nodes.includes(el)) { + nodes.push(el); + } + } else { + leavingNodes.set(tNode, [el]); + } +} +function getLViewEnterAnimations(lView) { + const animationData = lView[ANIMATIONS] ??= {}; + return animationData.enter ??= /* @__PURE__ */ new Map(); +} +function getLViewLeaveAnimations(lView) { + const animationData = lView[ANIMATIONS] ??= {}; + return animationData.leave ??= /* @__PURE__ */ new Map(); +} +function getClassListFromValue(value) { + const classes = typeof value === "function" ? value() : value; + let classList = Array.isArray(classes) ? classes : null; + if (typeof classes === "string") { + classList = classes.trim().split(/\s+/).filter((k) => k); + } + return classList; +} +function cancelAnimationsIfRunning(element, renderer) { + if (!areAnimationSupported) return; + const elementData = enterClassMap.get(element); + if (elementData && elementData.classList.length > 0 && elementHasClassList(element, elementData.classList)) { + for (const klass of elementData.classList) { + renderer.removeClass(element, klass); + } + } + cleanupEnterClassData(element); +} +function elementHasClassList(element, classList) { + for (const className of classList) { + if (element.classList.contains(className)) return true; + } + return false; +} +function getEventTarget(event) { + return event.composedPath ? event.composedPath()[0] : event.target; +} +function isLongestAnimation(event, nativeElement) { + const longestAnimation = longestAnimations.get(nativeElement); + if (longestAnimation === void 0) return true; + return nativeElement === getEventTarget(event) && (longestAnimation.animationName !== void 0 && event.animationName === longestAnimation.animationName || longestAnimation.propertyName !== void 0 && (longestAnimation.propertyName === "all" || event.propertyName === longestAnimation.propertyName)); +} +function addAnimationToLView(animations, tNode, fn) { + const nodeAnimations = animations.get(tNode.index) ?? { + animateFns: [] + }; + nodeAnimations.animateFns.push(fn); + animations.set(tNode.index, nodeAnimations); +} +function cleanupAfterLeaveAnimations(resolvers, cleanupFns) { + if (resolvers) { + for (const fn of resolvers) { + fn(); + } + } + for (const fn of cleanupFns) { + fn(); + } +} +function clearLViewNodeAnimationResolvers(lView, tNode) { + const nodeAnimations = getLViewLeaveAnimations(lView).get(tNode.index); + if (nodeAnimations) nodeAnimations.resolvers = void 0; +} +function leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns) { + clearLeavingNodes(tNode, nativeElement); + cleanupAfterLeaveAnimations(resolvers, cleanupFns); + clearLViewNodeAnimationResolvers(lView, tNode); +} +function parseCssTimeUnitsToMs(value) { + if (!value) return 0; + const multiplier = value.toLowerCase().indexOf("ms") > -1 ? 1 : 1e3; + return parseFloat(value) * multiplier; +} +function parseCssPropertyValue(computedStyle, name) { + const value = computedStyle.getPropertyValue(name); + return value.split(",").map((part) => part.trim()); +} +function getLongestComputedTransition(computedStyle) { + const transitionedProperties = parseCssPropertyValue(computedStyle, "transition-property"); + const rawDurations = parseCssPropertyValue(computedStyle, "transition-duration"); + const rawDelays = parseCssPropertyValue(computedStyle, "transition-delay"); + const longest = { + propertyName: "", + duration: 0, + animationName: void 0 + }; + for (let i = 0; i < transitionedProperties.length; i++) { + const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]); + if (duration > longest.duration) { + longest.propertyName = transitionedProperties[i]; + longest.duration = duration; + } + } + return longest; +} +function getLongestComputedAnimation(computedStyle) { + const rawNames = parseCssPropertyValue(computedStyle, "animation-name"); + const rawDelays = parseCssPropertyValue(computedStyle, "animation-delay"); + const rawDurations = parseCssPropertyValue(computedStyle, "animation-duration"); + const rawIterationCounts = parseCssPropertyValue(computedStyle, "animation-iteration-count"); + const longest = { + animationName: "", + propertyName: void 0, + duration: 0 + }; + for (let i = 0; i < rawNames.length; i++) { + const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]); + const iterationCount = rawIterationCounts[i]; + if (duration > longest.duration && iterationCount !== "infinite") { + longest.animationName = rawNames[i]; + longest.duration = duration; + } + } + return longest; +} +function isShorterThanExistingAnimation(existing, longest) { + return existing !== void 0 && existing.duration > longest.duration; +} +function longestExists(longest) { + return (longest.animationName != void 0 || longest.propertyName != void 0) && longest.duration > 0; +} +function determineLongestAnimationFromComputedStyles(el, animationsMap) { + const computedStyle = getComputedStyle(el); + const longestAnimation = getLongestComputedAnimation(computedStyle); + const longestTransition = getLongestComputedTransition(computedStyle); + const longest = longestAnimation.duration > longestTransition.duration ? longestAnimation : longestTransition; + if (isShorterThanExistingAnimation(animationsMap.get(el), longest)) return; + if (longestExists(longest)) { + animationsMap.set(el, longest); + } +} +function determineLongestAnimation(el, animationsMap, areAnimationSupported2) { + if (!areAnimationSupported2) return; + const animations = el.getAnimations(); + return animations.length === 0 ? determineLongestAnimationFromComputedStyles(el, animationsMap) : determineLongestAnimationFromElementAnimations(el, animationsMap, animations); +} +function determineLongestAnimationFromElementAnimations(el, animationsMap, animations) { + let longest = { + animationName: void 0, + propertyName: void 0, + duration: 0 + }; + for (const animation of animations) { + const timing = animation.effect?.getTiming(); + if (timing?.iterations === Infinity) { + continue; + } + const animDuration = typeof timing?.duration === "number" ? timing.duration : 0; + let duration = (timing?.delay ?? 0) + animDuration; + const playbackRate = animation.playbackRate; + if (playbackRate !== void 0 && playbackRate !== 0 && playbackRate !== 1) { + duration /= Math.abs(playbackRate); + } + let propertyName; + let animationName; + if (animation.animationName) { + animationName = animation.animationName; + } else { + propertyName = animation.transitionProperty; + } + if (duration >= longest.duration) { + longest = { + animationName, + propertyName, + duration + }; + } + } + if (isShorterThanExistingAnimation(animationsMap.get(el), longest)) return; + if (longestExists(longest)) { + animationsMap.set(el, longest); + } +} +var allLeavingAnimations = /* @__PURE__ */ new Set(); +var TracingAction; +(function(TracingAction2) { + TracingAction2[TracingAction2["CHANGE_DETECTION"] = 0] = "CHANGE_DETECTION"; + TracingAction2[TracingAction2["AFTER_NEXT_RENDER"] = 1] = "AFTER_NEXT_RENDER"; +})(TracingAction || (TracingAction = {})); +var TracingService = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "TracingService" : ""); +var markedFeatures = /* @__PURE__ */ new Set(); +function performanceMarkFeature(feature) { + if (markedFeatures.has(feature)) { + return; + } + markedFeatures.add(feature); + performance?.mark?.("mark_feature_usage", { + detail: { + feature + } + }); +} +var AfterRenderManager = class _AfterRenderManager { + impl = null; + execute() { + this.impl?.execute(); + } + static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ + token: _AfterRenderManager, + providedIn: "root", + factory: () => new _AfterRenderManager() + }); +}; +var AFTER_RENDER_PHASES = /* @__PURE__ */ (() => [0, 1, 2, 3])(); +var AfterRenderImpl = class _AfterRenderImpl { + ngZone = inject2(NgZone); + scheduler = inject2(ChangeDetectionScheduler); + errorHandler = inject2(ErrorHandler, { + optional: true + }); + sequences = /* @__PURE__ */ new Set(); + deferredRegistrations = /* @__PURE__ */ new Set(); + executing = false; + constructor() { + inject2(TracingService, { + optional: true + }); + } + execute() { + const hasSequencesToExecute = this.sequences.size > 0; + if (hasSequencesToExecute) { + profiler(ProfilerEvent.AfterRenderHooksStart); + } + this.executing = true; + for (const phase of AFTER_RENDER_PHASES) { + for (const sequence of this.sequences) { + if (sequence.erroredOrDestroyed || !sequence.hooks[phase]) { + continue; + } + try { + sequence.pipelinedValue = this.ngZone.runOutsideAngular(() => this.maybeTrace(() => { + const hookFn = sequence.hooks[phase]; + const value = hookFn(sequence.pipelinedValue); + return value; + }, sequence.snapshot)); + } catch (err) { + sequence.erroredOrDestroyed = true; + this.errorHandler?.handleError(err); + } + } + } + this.executing = false; + for (const sequence of this.sequences) { + sequence.afterRun(); + if (sequence.once) { + this.sequences.delete(sequence); + sequence.destroy(); + } + } + for (const sequence of this.deferredRegistrations) { + this.sequences.add(sequence); + } + if (this.deferredRegistrations.size > 0) { + this.scheduler.notify(7); + } + this.deferredRegistrations.clear(); + if (hasSequencesToExecute) { + profiler(ProfilerEvent.AfterRenderHooksEnd); + } + } + register(sequence) { + const { + view + } = sequence; + if (view !== void 0) { + (view[AFTER_RENDER_SEQUENCES_TO_ADD] ??= []).push(sequence); + markAncestorsForTraversal(view); + view[FLAGS] |= 8192; + } else if (!this.executing) { + this.addSequence(sequence); + } else { + this.deferredRegistrations.add(sequence); + } + } + addSequence(sequence) { + this.sequences.add(sequence); + this.scheduler.notify(7); + } + unregister(sequence) { + if (this.executing && this.sequences.has(sequence)) { + sequence.erroredOrDestroyed = true; + sequence.pipelinedValue = void 0; + sequence.once = true; + } else { + this.sequences.delete(sequence); + this.deferredRegistrations.delete(sequence); + } + } + maybeTrace(fn, snapshot) { + return snapshot ? snapshot.run(TracingAction.AFTER_NEXT_RENDER, fn) : fn(); + } + static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ + token: _AfterRenderImpl, + providedIn: "root", + factory: () => new _AfterRenderImpl() + }); +}; +var AfterRenderSequence = class { + impl; + hooks; + view; + once; + snapshot; + erroredOrDestroyed = false; + pipelinedValue = void 0; + unregisterOnDestroy; + constructor(impl, hooks, view, once, destroyRef, snapshot = null) { + this.impl = impl; + this.hooks = hooks; + this.view = view; + this.once = once; + this.snapshot = snapshot; + this.unregisterOnDestroy = destroyRef?.onDestroy(() => this.destroy()); + } + afterRun() { + this.erroredOrDestroyed = false; + this.pipelinedValue = void 0; + this.snapshot?.dispose(); + this.snapshot = null; + } + destroy() { + this.impl.unregister(this); + this.unregisterOnDestroy?.(); + const scheduled2 = this.view?.[AFTER_RENDER_SEQUENCES_TO_ADD]; + if (scheduled2) { + this.view[AFTER_RENDER_SEQUENCES_TO_ADD] = scheduled2.filter((s) => s !== this); + } + } +}; +function afterEveryRender(callbackOrSpec, options) { + ngDevMode && assertNotInReactiveContext(afterEveryRender, "Call `afterEveryRender` outside of a reactive context. For example, schedule the render callback inside the component constructor`."); + if (ngDevMode && !options?.injector) { + assertInInjectionContext(afterEveryRender); + } + const injector = options?.injector ?? inject2(Injector); + if (false) { + return NOOP_AFTER_RENDER_REF; + } + performanceMarkFeature("NgAfterRender"); + return afterEveryRenderImpl(callbackOrSpec, injector, options, false); +} +function afterNextRender(callbackOrSpec, options) { + if (ngDevMode && !options?.injector) { + assertInInjectionContext(afterNextRender); + } + const injector = options?.injector ?? inject2(Injector); + if (false) { + return NOOP_AFTER_RENDER_REF; + } + performanceMarkFeature("NgAfterNextRender"); + return afterEveryRenderImpl(callbackOrSpec, injector, options, true); +} +function getHooks(callbackOrSpec) { + if (callbackOrSpec instanceof Function) { + return [void 0, void 0, callbackOrSpec, void 0]; + } else { + return [callbackOrSpec.earlyRead, callbackOrSpec.write, callbackOrSpec.mixedReadWrite, callbackOrSpec.read]; + } +} +function afterEveryRenderImpl(callbackOrSpec, injector, options, once) { + const manager = injector.get(AfterRenderManager); + manager.impl ??= injector.get(AfterRenderImpl); + const tracing = injector.get(TracingService, null, { + optional: true + }); + const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null; + const viewContext = injector.get(ViewContext, null, { + optional: true + }); + const sequence = new AfterRenderSequence(manager.impl, getHooks(callbackOrSpec), viewContext?.view, once, destroyRef, tracing?.snapshot(null)); + manager.impl.register(sequence); + return sequence; +} +var ANIMATION_QUEUE = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "AnimationQueue" : "", { + factory: () => { + return { + queue: /* @__PURE__ */ new Set(), + isScheduled: false, + scheduler: null, + injector: inject2(EnvironmentInjector) + }; + } +}); +function addToAnimationQueue(injector, animationFns, animationData) { + const animationQueue = injector.get(ANIMATION_QUEUE); + if (Array.isArray(animationFns)) { + for (const animateFn of animationFns) { + animationQueue.queue.add(animateFn); + animationData?.detachedLeaveAnimationFns?.push(animateFn); + } + } else { + animationQueue.queue.add(animationFns); + animationData?.detachedLeaveAnimationFns?.push(animationFns); + } + animationQueue.scheduler && animationQueue.scheduler(injector); +} +function removeFromAnimationQueue(injector, animationData) { + const animationQueue = injector.get(ANIMATION_QUEUE); + if (animationData.detachedLeaveAnimationFns) { + for (const animationFn of animationData.detachedLeaveAnimationFns) { + animationQueue.queue.delete(animationFn); + } + animationData.detachedLeaveAnimationFns = void 0; + } +} +function scheduleAnimationQueue(injector) { + const animationQueue = injector.get(ANIMATION_QUEUE); + if (!animationQueue.isScheduled) { + afterNextRender(() => { + animationQueue.isScheduled = false; + for (let animateFn of animationQueue.queue) { + animateFn(); + } + animationQueue.queue.clear(); + }, { + injector: animationQueue.injector + }); + animationQueue.isScheduled = true; + } +} +function initializeAnimationQueueScheduler(injector) { + const animationQueue = injector.get(ANIMATION_QUEUE); + animationQueue.scheduler = scheduleAnimationQueue; + animationQueue.scheduler(injector); +} +function queueEnterAnimations(injector, enterAnimations) { + for (const [_, nodeAnimations] of enterAnimations) { + addToAnimationQueue(injector, nodeAnimations.animateFns); + } +} +function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) { + const enterAnimations = parentLView?.[ANIMATIONS]?.enter; + if (parent !== null && enterAnimations && enterAnimations.has(tNode.index)) { + queueEnterAnimations(injector, enterAnimations); + } +} +function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHandle, tNode, beforeNode, parentLView) { + if (lNodeToHandle != null) { + let lContainer; + let isComponent2 = false; + if (isLContainer(lNodeToHandle)) { + lContainer = lNodeToHandle; + } else if (isLView(lNodeToHandle)) { + isComponent2 = true; + ngDevMode && assertDefined(lNodeToHandle[HOST], "HOST must be defined for a component LView"); + lNodeToHandle = lNodeToHandle[HOST]; + } + const rNode = unwrapRNode(lNodeToHandle); + if (action === 0 && parent !== null) { + maybeQueueEnterAnimation(parentLView, parent, tNode, injector); + if (beforeNode == null) { + nativeAppendChild(renderer, parent, rNode); + } else { + nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true); + } + } else if (action === 1 && parent !== null) { + maybeQueueEnterAnimation(parentLView, parent, tNode, injector); + nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true); + cancelLeavingNodes(tNode, rNode); + } else if (action === 2) { + if (parentLView?.[ANIMATIONS]?.leave?.has(tNode.index)) { + trackLeavingNodes(tNode, rNode); + } + reusedNodes.delete(rNode); + runLeaveAnimationsWithCallback(parentLView, tNode, injector, (nodeHasLeaveAnimations) => { + if (reusedNodes.has(rNode)) { + reusedNodes.delete(rNode); + return; + } + nativeRemoveNode(renderer, rNode, isComponent2, nodeHasLeaveAnimations); + }); + } else if (action === 3) { + reusedNodes.delete(rNode); + runLeaveAnimationsWithCallback(parentLView, tNode, injector, () => { + renderer.destroyNode(rNode); + }); + } + if (lContainer != null) { + applyContainer(renderer, action, injector, lContainer, tNode, parent, beforeNode); + } + } +} +function removeViewFromDOM(tView, lView) { + detachViewFromDOM(tView, lView); + lView[HOST] = null; + lView[T_HOST] = null; +} +function addViewToDOM(tView, parentTNode, renderer, lView, parentNativeNode, beforeNode) { + lView[HOST] = parentNativeNode; + lView[T_HOST] = parentTNode; + applyView(tView, lView, renderer, 1, parentNativeNode, beforeNode); +} +function detachViewFromDOM(tView, lView) { + lView[ENVIRONMENT].changeDetectionScheduler?.notify(9); + applyView(tView, lView, lView[RENDERER], 2, null, null); +} +function destroyViewTree(rootView) { + let lViewOrLContainer = rootView[CHILD_HEAD]; + if (!lViewOrLContainer) { + return cleanUpView(rootView[TVIEW], rootView); + } + while (lViewOrLContainer) { + let next = null; + if (isLView(lViewOrLContainer)) { + next = lViewOrLContainer[CHILD_HEAD]; + } else { + ngDevMode && assertLContainer(lViewOrLContainer); + const firstView = lViewOrLContainer[CONTAINER_HEADER_OFFSET]; + if (firstView) next = firstView; + } + if (!next) { + while (lViewOrLContainer && !lViewOrLContainer[NEXT] && lViewOrLContainer !== rootView) { + if (isLView(lViewOrLContainer)) { + cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer); + } + lViewOrLContainer = lViewOrLContainer[PARENT]; + } + if (lViewOrLContainer === null) lViewOrLContainer = rootView; + if (isLView(lViewOrLContainer)) { + cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer); + } + next = lViewOrLContainer && lViewOrLContainer[NEXT]; + } + lViewOrLContainer = next; + } +} +function detachMovedView(declarationContainer, lView) { + ngDevMode && assertLContainer(declarationContainer); + ngDevMode && assertDefined(declarationContainer[MOVED_VIEWS], "A projected view should belong to a non-empty projected views collection"); + const movedViews = declarationContainer[MOVED_VIEWS]; + const declarationViewIndex = movedViews.indexOf(lView); + movedViews.splice(declarationViewIndex, 1); +} +function destroyLView(tView, lView) { + if (isDestroyed(lView)) { + return; + } + const renderer = lView[RENDERER]; + if (renderer.destroyNode) { + applyView(tView, lView, renderer, 3, null, null); + } + destroyViewTree(lView); +} +function cleanUpView(tView, lView) { + if (isDestroyed(lView)) { + return; + } + const prevConsumer = setActiveConsumer(null); + try { + lView[FLAGS] &= ~128; + lView[FLAGS] |= 256; + lView[REACTIVE_TEMPLATE_CONSUMER] && consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]); + executeOnDestroys(tView, lView); + processCleanups(tView, lView); + if (lView[TVIEW].type === 1) { + lView[RENDERER].destroy(); + } + const declarationContainer = lView[DECLARATION_LCONTAINER]; + if (declarationContainer !== null && isLContainer(lView[PARENT])) { + if (declarationContainer !== lView[PARENT]) { + detachMovedView(declarationContainer, lView); + } + const lQueries = lView[QUERIES]; + if (lQueries !== null) { + lQueries.detachView(tView); + } + } + unregisterLView(lView); + } finally { + setActiveConsumer(prevConsumer); + } +} +function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) { + const animations = lView?.[ANIMATIONS]; + if (animations == null || animations.leave == void 0 || !animations.leave.has(tNode.index)) return callback(false); + if (lView) allLeavingAnimations.add(lView[ID]); + addToAnimationQueue(injector, () => { + if (animations.leave && animations.leave.has(tNode.index)) { + const leaveAnimationMap = animations.leave; + const leaveAnimations = leaveAnimationMap.get(tNode.index); + const runningAnimations = []; + if (leaveAnimations) { + for (let index = 0; index < leaveAnimations.animateFns.length; index++) { + const animationFn = leaveAnimations.animateFns[index]; + const { + promise + } = animationFn(); + runningAnimations.push(promise); + } + animations.detachedLeaveAnimationFns = void 0; + } + animations.running = Promise.allSettled(runningAnimations); + runAfterLeaveAnimations(lView, callback); + } else { + if (lView) allLeavingAnimations.delete(lView[ID]); + callback(false); + } + }, animations); +} +function runAfterLeaveAnimations(lView, callback) { + const runningAnimations = lView[ANIMATIONS]?.running; + if (runningAnimations) { + runningAnimations.then(() => { + lView[ANIMATIONS].running = void 0; + allLeavingAnimations.delete(lView[ID]); + callback(true); + }); + return; + } + callback(false); +} +function processCleanups(tView, lView) { + ngDevMode && assertNotReactive(processCleanups.name); + const tCleanup = tView.cleanup; + const lCleanup = lView[CLEANUP]; + if (tCleanup !== null) { + for (let i = 0; i < tCleanup.length - 1; i += 2) { + if (typeof tCleanup[i] === "string") { + const targetIdx = tCleanup[i + 3]; + ngDevMode && assertNumber(targetIdx, "cleanup target must be a number"); + if (targetIdx >= 0) { + lCleanup[targetIdx](); + } else { + lCleanup[-targetIdx].unsubscribe(); + } + i += 2; + } else { + const context2 = lCleanup[tCleanup[i + 1]]; + tCleanup[i].call(context2); + } + } + } + if (lCleanup !== null) { + lView[CLEANUP] = null; + } + const destroyHooks = lView[ON_DESTROY_HOOKS]; + if (destroyHooks !== null) { + lView[ON_DESTROY_HOOKS] = null; + for (let i = 0; i < destroyHooks.length; i++) { + const destroyHooksFn = destroyHooks[i]; + ngDevMode && assertFunction(destroyHooksFn, "Expecting destroy hook to be a function."); + destroyHooksFn(); + } + } + const effects = lView[EFFECTS]; + if (effects !== null) { + lView[EFFECTS] = null; + for (const effect2 of effects) { + effect2.destroy(); + } + } +} +function executeOnDestroys(tView, lView) { + ngDevMode && assertNotReactive(executeOnDestroys.name); + let destroyHooks; + if (tView != null && (destroyHooks = tView.destroyHooks) != null) { + for (let i = 0; i < destroyHooks.length; i += 2) { + const context2 = lView[destroyHooks[i]]; + if (!(context2 instanceof NodeInjectorFactory)) { + const toCall = destroyHooks[i + 1]; + if (Array.isArray(toCall)) { + for (let j = 0; j < toCall.length; j += 2) { + const callContext = context2[toCall[j]]; + const hook = toCall[j + 1]; + profiler(ProfilerEvent.LifecycleHookStart, callContext, hook); + try { + hook.call(callContext); + } finally { + profiler(ProfilerEvent.LifecycleHookEnd, callContext, hook); + } + } + } else { + profiler(ProfilerEvent.LifecycleHookStart, context2, toCall); + try { + toCall.call(context2); + } finally { + profiler(ProfilerEvent.LifecycleHookEnd, context2, toCall); + } + } + } + } + } +} +function getParentRElement(tView, tNode, lView) { + return getClosestRElement(tView, tNode.parent, lView); +} +function getClosestRElement(tView, tNode, lView) { + let parentTNode = tNode; + while (parentTNode !== null && parentTNode.type & (8 | 32 | 128)) { + tNode = parentTNode; + parentTNode = tNode.parent; + } + if (parentTNode === null) { + return lView[HOST]; + } else { + ngDevMode && assertTNodeType(parentTNode, 3 | 4); + if (isComponentHost(parentTNode)) { + ngDevMode && assertTNodeForLView(parentTNode, lView); + const { + encapsulation + } = tView.data[parentTNode.directiveStart + parentTNode.componentOffset]; + if (encapsulation === ViewEncapsulation.None || encapsulation === ViewEncapsulation.Emulated) { + return null; + } + } + return getNativeByTNode(parentTNode, lView); + } +} +function getInsertInFrontOfRNode(parentTNode, currentTNode, lView) { + return _getInsertInFrontOfRNodeWithI18n(parentTNode, currentTNode, lView); +} +function getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView) { + if (parentTNode.type & (8 | 32)) { + return getNativeByTNode(parentTNode, lView); + } + return null; +} +var _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithNoI18n; +var _processI18nInsertBefore; +function setI18nHandling(getInsertInFrontOfRNodeWithI18n2, processI18nInsertBefore2) { + _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithI18n2; + _processI18nInsertBefore = processI18nInsertBefore2; +} +function appendChild(tView, lView, childRNode, childTNode) { + const parentRNode = getParentRElement(tView, childTNode, lView); + const renderer = lView[RENDERER]; + const parentTNode = childTNode.parent || lView[T_HOST]; + const anchorNode = getInsertInFrontOfRNode(parentTNode, childTNode, lView); + if (parentRNode != null) { + if (Array.isArray(childRNode)) { + for (let i = 0; i < childRNode.length; i++) { + nativeAppendOrInsertBefore(renderer, parentRNode, childRNode[i], anchorNode, false); + } + } else { + nativeAppendOrInsertBefore(renderer, parentRNode, childRNode, anchorNode, false); + } + } + _processI18nInsertBefore !== void 0 && _processI18nInsertBefore(renderer, childTNode, lView, childRNode, parentRNode); +} +function getFirstNativeNode(lView, tNode) { + if (tNode !== null) { + ngDevMode && assertTNodeType(tNode, 3 | 12 | 32 | 16 | 128); + const tNodeType = tNode.type; + if (tNodeType & 3) { + return getNativeByTNode(tNode, lView); + } else if (tNodeType & 4) { + return getBeforeNodeForView(-1, lView[tNode.index]); + } else if (tNodeType & 8) { + const elIcuContainerChild = tNode.child; + if (elIcuContainerChild !== null) { + return getFirstNativeNode(lView, elIcuContainerChild); + } else { + const rNodeOrLContainer = lView[tNode.index]; + if (isLContainer(rNodeOrLContainer)) { + return getBeforeNodeForView(-1, rNodeOrLContainer); + } else { + return unwrapRNode(rNodeOrLContainer); + } + } + } else if (tNodeType & 128) { + return getFirstNativeNode(lView, tNode.next); + } else if (tNodeType & 32) { + let nextRNode = icuContainerIterate(tNode, lView); + let rNode = nextRNode(); + return rNode || unwrapRNode(lView[tNode.index]); + } else { + const projectionNodes = getProjectionNodes(lView, tNode); + if (projectionNodes !== null) { + if (Array.isArray(projectionNodes)) { + return projectionNodes[0]; + } + const parentView = getLViewParent(lView[DECLARATION_COMPONENT_VIEW]); + ngDevMode && assertParentView(parentView); + return getFirstNativeNode(parentView, projectionNodes); + } else { + return getFirstNativeNode(lView, tNode.next); + } + } + } + return null; +} +function getProjectionNodes(lView, tNode) { + if (tNode !== null) { + const componentView = lView[DECLARATION_COMPONENT_VIEW]; + const componentHost = componentView[T_HOST]; + const slotIdx = tNode.projection; + ngDevMode && assertProjectionSlots(lView); + return componentHost.projection[slotIdx]; + } + return null; +} +function getBeforeNodeForView(viewIndexInContainer, lContainer) { + const nextViewIndex = CONTAINER_HEADER_OFFSET + viewIndexInContainer + 1; + if (nextViewIndex < lContainer.length) { + const lView = lContainer[nextViewIndex]; + const firstTNodeOfView = lView[TVIEW].firstChild; + if (firstTNodeOfView !== null) { + return getFirstNativeNode(lView, firstTNodeOfView); + } + } + return lContainer[NATIVE]; +} +function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) { + while (tNode != null) { + ngDevMode && assertTNodeForLView(tNode, lView); + const injector = lView[INJECTOR]; + if (tNode.type === 128) { + tNode = tNode.next; + continue; + } + ngDevMode && assertTNodeType(tNode, 3 | 12 | 16 | 32); + const rawSlotValue = lView[tNode.index]; + const tNodeType = tNode.type; + if (isProjection) { + if (action === 0) { + rawSlotValue && attachPatchData(unwrapRNode(rawSlotValue), lView); + tNode.flags |= 2; + } + } + if (!isDetachedByI18n(tNode)) { + if (tNodeType & 8) { + applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false); + applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView); + } else if (tNodeType & 32) { + const nextRNode = icuContainerIterate(tNode, lView); + let rNode; + while (rNode = nextRNode()) { + applyToElementOrContainer(action, renderer, injector, parentRElement, rNode, tNode, beforeNode, lView); + } + applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView); + } else if (tNodeType & 16) { + applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode); + } else { + ngDevMode && assertTNodeType(tNode, 3 | 4); + applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView); + } + } + tNode = isProjection ? tNode.projectionNext : tNode.next; + } +} +function applyView(tView, lView, renderer, action, parentRElement, beforeNode) { + applyNodes(renderer, action, tView.firstChild, lView, parentRElement, beforeNode, false); +} +function applyProjection(tView, lView, tProjectionNode) { + const renderer = lView[RENDERER]; + const parentRNode = getParentRElement(tView, tProjectionNode, lView); + const parentTNode = tProjectionNode.parent || lView[T_HOST]; + let beforeNode = getInsertInFrontOfRNode(parentTNode, tProjectionNode, lView); + applyProjectionRecursive(renderer, 0, lView, tProjectionNode, parentRNode, beforeNode); +} +function applyProjectionRecursive(renderer, action, lView, tProjectionNode, parentRElement, beforeNode) { + const componentLView = lView[DECLARATION_COMPONENT_VIEW]; + const componentNode = componentLView[T_HOST]; + ngDevMode && assertEqual(typeof tProjectionNode.projection, "number", "expecting projection index"); + const nodeToProjectOrRNodes = componentNode.projection[tProjectionNode.projection]; + if (Array.isArray(nodeToProjectOrRNodes)) { + for (let i = 0; i < nodeToProjectOrRNodes.length; i++) { + const rNode = nodeToProjectOrRNodes[i]; + applyToElementOrContainer(action, renderer, lView[INJECTOR], parentRElement, rNode, tProjectionNode, beforeNode, lView); + } + } else { + let nodeToProject = nodeToProjectOrRNodes; + const projectedComponentLView = componentLView[PARENT]; + if (hasInSkipHydrationBlockFlag(tProjectionNode)) { + nodeToProject.flags |= 128; + } + applyNodes(renderer, action, nodeToProject, projectedComponentLView, parentRElement, beforeNode, true); + } +} +function applyContainer(renderer, action, injector, lContainer, tNode, parentRElement, beforeNode) { + ngDevMode && assertLContainer(lContainer); + const anchor = lContainer[NATIVE]; + const native = unwrapRNode(lContainer); + if (anchor !== native) { + applyToElementOrContainer(action, renderer, injector, parentRElement, anchor, tNode, beforeNode); + } + for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) { + const lView = lContainer[i]; + applyView(lView[TVIEW], lView, renderer, action, parentRElement, anchor); + } +} +function applyStyling(renderer, isClassBased, rNode, prop, value) { + if (isClassBased) { + if (!value) { + renderer.removeClass(rNode, prop); + } else { + renderer.addClass(rNode, prop); + } + } else { + let flags = prop.indexOf("-") === -1 ? void 0 : RendererStyleFlags2.DashCase; + if (value == null) { + renderer.removeStyle(rNode, prop, flags); + } else { + const isImportant = typeof value === "string" ? value.endsWith("!important") : false; + if (isImportant) { + value = value.slice(0, -10); + flags |= RendererStyleFlags2.Important; + } + renderer.setStyle(rNode, prop, value, flags); + } + } +} +function executeTemplate(tView, lView, templateFn, rf, context2) { + const prevSelectedIndex = getSelectedIndex(); + const isUpdatePhase = rf & 2; + try { + setSelectedIndex(-1); + if (isUpdatePhase && lView.length > HEADER_OFFSET) { + selectIndexInternal(tView, lView, HEADER_OFFSET, !!ngDevMode && isInCheckNoChangesMode()); + } + const preHookType = isUpdatePhase ? ProfilerEvent.TemplateUpdateStart : ProfilerEvent.TemplateCreateStart; + profiler(preHookType, context2, templateFn); + templateFn(rf, context2); + } finally { + setSelectedIndex(prevSelectedIndex); + const postHookType = isUpdatePhase ? ProfilerEvent.TemplateUpdateEnd : ProfilerEvent.TemplateCreateEnd; + profiler(postHookType, context2, templateFn); + } +} +function createDirectivesInstances(tView, lView, tNode) { + instantiateAllDirectives(tView, lView, tNode); + if ((tNode.flags & 64) === 64) { + invokeDirectivesHostBindings(tView, lView, tNode); + } +} +function saveResolvedLocalsInData(viewData, tNode, localRefExtractor = getNativeByTNode) { + const localNames = tNode.localNames; + if (localNames !== null) { + let localIndex = tNode.index + 1; + for (let i = 0; i < localNames.length; i += 2) { + const index = localNames[i + 1]; + const value = index === -1 ? localRefExtractor(tNode, viewData) : viewData[index]; + viewData[localIndex++] = value; + } + } +} +function locateHostElement(renderer, elementOrSelector, encapsulation, injector) { + const preserveHostContent = injector.get(PRESERVE_HOST_CONTENT, PRESERVE_HOST_CONTENT_DEFAULT); + const preserveContent = preserveHostContent || encapsulation === ViewEncapsulation.ShadowDom || encapsulation === ViewEncapsulation.ExperimentalIsolatedShadowDom; + const rootElement = renderer.selectRootElement(elementOrSelector, preserveContent); + if (rootElement.tagName.toLowerCase() === "script") { + throw new RuntimeError(905, ngDevMode && `"