From 5be78fbc4b27c5b39181c38995d1aad81dcd468a Mon Sep 17 00:00:00 2001 From: erKam Date: Wed, 14 Oct 2026 08:10:41 +0000 Subject: [PATCH 1/2] perf(ui): cache build-meta in the panel's RPC client The Dashboard asked the server for build-meta every time it loaded, although the answer only changes when the dev server restarts. Turn on devframe's client cache for an explicit list, PANEL_CACHED_RPC, that holds only pangular:build-meta, and mark build-meta cacheable. Every other call still reaches the server. devframe clears the cache when the connection status changes and the panel replaces a dropped client, so a restarted server is always asked again. --- app/src/__tests__/app-shell.test.ts | 32 +++- app/src/app.ts | 7 +- app/src/rpc.ts | 10 ++ .../src/content/contributing/development.md | 2 + apps/docs/src/content/inspectors/dashboard.md | 2 + .../src/__tests__/panel-rpc-cache.test.ts | 164 ++++++++++++++++++ packages/devtools/src/config.ts | 11 ++ packages/devtools/src/rpc/build-meta.ts | 5 + 8 files changed, 229 insertions(+), 4 deletions(-) create mode 100644 packages/devtools/src/__tests__/panel-rpc-cache.test.ts diff --git a/app/src/__tests__/app-shell.test.ts b/app/src/__tests__/app-shell.test.ts index e9160562..d949319a 100644 --- a/app/src/__tests__/app-shell.test.ts +++ b/app/src/__tests__/app-shell.test.ts @@ -8,6 +8,10 @@ const connection = vi.hoisted(() => ({ answers: [] as boolean[], /** Sends a `connection:status` event to the last connected client's listeners. */ emitStatus: (_status: string) => {}, + /** The options each attempt passed to `connectDevframe`. */ + options: [] as unknown[], + /** How many clients the panel closed. */ + closed: 0, })); function fakeClient(): DevframeRpcClient { @@ -27,12 +31,15 @@ function fakeClient(): DevframeRpcClient { return () => {}; }, }, - close: () => {}, + close: () => { + connection.closed++; + }, } as unknown as DevframeRpcClient; } vi.mock('devframe/client', () => ({ - connectDevframe: () => { + connectDevframe: (options?: unknown) => { + connection.options.push(options); const ok = connection.answers[connection.attempts++] ?? false; return ok ? Promise.resolve(fakeClient()) : Promise.reject(new Error('no server')); }, @@ -55,6 +62,8 @@ afterEach(() => { document.body.innerHTML = ''; connection.attempts = 0; connection.answers = []; + connection.options = []; + connection.closed = 0; TestBed.resetTestingModule(); }); @@ -112,6 +121,25 @@ describe('App connection retry', () => { fixture.destroy(); }); + it('caches only build-meta, in a new client after the connection drops', async () => { + connection.answers = [true, true]; + const fixture = TestBed.createComponent(App); + await settle(fixture); + expect(connection.options[0]).toMatchObject({ + cacheOptions: { functions: ['pangular:build-meta'] }, + }); + + // A restarted server gets a new client, so nothing cached before is reused. + connection.emitStatus('disconnected'); + await settle(fixture); + expect(connection.closed).toBe(1); + await vi.waitFor(() => expect(connection.attempts).toBe(2), { timeout: 3000 }); + expect(connection.options[1]).toMatchObject({ + cacheOptions: { functions: ['pangular:build-meta'] }, + }); + fixture.destroy(); + }); + it('stops retrying once the panel is gone', async () => { connection.answers = [false, true]; const fixture = TestBed.createComponent(App); diff --git a/app/src/app.ts b/app/src/app.ts index 74aeee11..0855ca4c 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -46,7 +46,7 @@ import { hostPageId, scopeToPage } from './page-id'; import { angularNativePage, type PlatformPage } from './native-page'; import { initialTab, storeTab, storedTab } from './tab-memory'; import { detectBaseURL } from './base-url'; -import { clearHighlightsOnHide, rpcTry } from './rpc'; +import { clearHighlightsOnHide, panelCacheOptions, rpcTry } from './rpc'; import { EditorOpener } from './ui/source-link'; import { viewAccent } from './view-accents'; import { @@ -1279,7 +1279,10 @@ export class App implements OnInit, OnDestroy { this.connecting = true; clearTimeout(this.retryTimer); const baseURL = detectBaseURL(); - connectDevframe(baseURL ? { baseURL } : {}).then( + connectDevframe({ + ...(baseURL ? { baseURL } : {}), + cacheOptions: panelCacheOptions(), + }).then( (client) => { this.connecting = false; if (this.destroyed) { diff --git a/app/src/rpc.ts b/app/src/rpc.ts index 15fb5770..1d88774b 100644 --- a/app/src/rpc.ts +++ b/app/src/rpc.ts @@ -1,5 +1,15 @@ +import { PANEL_CACHED_RPC } from '@pangular-inspector/devtools/config'; import type { DevframeRpcClient } from 'devframe/client'; +/** + * The panel client's devframe `cacheOptions`: an explicit list, so only the + * functions in `PANEL_CACHED_RPC` are cached, never whatever else the server + * advertises as cacheable. devframe clears it when the connection changes. + */ +export function panelCacheOptions(): { functions: string[] } { + return { functions: [...PANEL_CACHED_RPC] }; +} + /** Calls a `pangular` RPC; resolves `null` without a client, rejections propagate. */ export function rpcCall( client: DevframeRpcClient | null, diff --git a/apps/docs/src/content/contributing/development.md b/apps/docs/src/content/contributing/development.md index a227bd55..d6350863 100644 --- a/apps/docs/src/content/contributing/development.md +++ b/apps/docs/src/content/contributing/development.md @@ -232,6 +232,8 @@ If a code change needs no docs change, add the `no-docs` label to the pull reque 3. Map it to its inspector in `RPC_INSPECTOR` in `packages/devtools/src/config.ts`, so turning the inspector off removes it. 4. Call it from the UI in `app/src/pages/`. +The panel's devframe client caches the functions listed in `PANEL_CACHED_RPC` in `packages/devtools/src/config.ts`, and only those. A cached call is answered from the client until the connection drops, so a restarted server is asked again. Add a function there only when its answer can't change while the server runs, and give it `type: 'static'` or `cacheable: true`. Live page data and source scans never qualify. + ### Add a tab 1. Create a component in `app/src/pages/`. diff --git a/apps/docs/src/content/inspectors/dashboard.md b/apps/docs/src/content/inspectors/dashboard.md index 394983e9..d731b3e0 100644 --- a/apps/docs/src/content/inspectors/dashboard.md +++ b/apps/docs/src/content/inspectors/dashboard.md @@ -102,6 +102,8 @@ The Forms and SSR & HTTP cards read the live page only, and update while it runs If the project block says **Project details unavailable**, check that the dev server is running, then click **Try again**. In a [static report](../getting-started/cli.md#static-report) there is no **Try again** button, so run `pangular build` again to rebuild the report. +The panel reads the project details once per connection and keeps them. If you upgrade a package or edit `angular.json` while the dev server runs, restart the dev server or reload the panel to see the change. + ## FAQ diff --git a/packages/devtools/src/__tests__/panel-rpc-cache.test.ts b/packages/devtools/src/__tests__/panel-rpc-cache.test.ts new file mode 100644 index 00000000..f60c8dd6 --- /dev/null +++ b/packages/devtools/src/__tests__/panel-rpc-cache.test.ts @@ -0,0 +1,164 @@ +import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { defineDevframe } from 'devframe'; +import { createDevServer } from 'devframe/adapters/dev'; +import { connectDevframe, type DevframeRpcClient } from 'devframe/client'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { PANEL_CACHED_RPC, RPC_INSPECTOR, SHARED_RPC } from '../config.ts'; +import { getBuildMeta } from '../rpc/build-meta.ts'; + +type Started = Awaited>; + +/** + * A devframe server with the real `build-meta` and a live query, each counting + * the calls that reach the server, so the tests see what the client cached. + */ +async function startServer(cwd: string, calls: Map): Promise { + const count = (name: string) => calls.set(name, (calls.get(name) ?? 0) + 1); + const definition = defineDevframe({ + id: 'pangular', + name: 'Pangular Inspector', + version: '0.0.0', + packageName: '@pangular-inspector/devtools', + homepage: 'https://pangular-inspector.dev', + description: 'Cache test server', + setup(ctx) { + const my = ctx.scope('pangular'); + my.rpc.register({ + ...getBuildMeta, + setup: async (setupCtx) => { + // The dev server's context reads process.cwd(); point it at the fixture. + const { handler } = await getBuildMeta.setup!({ ...setupCtx, cwd }); + return { + handler: (...args: []) => { + count('build-meta'); + return handler!(...args); + }, + }; + }, + }); + my.rpc.register({ + name: 'list-pages', + type: 'query', + jsonSerializable: true, + handler: () => { + count('list-pages'); + return []; + }, + }); + }, + }); + return createDevServer(definition, { + host: '127.0.0.1', + port: 0, + auth: false, + mcp: false, + openBrowser: false, + }); +} + +function scoped(client: DevframeRpcClient) { + return client.scope('pangular').rpc as unknown as { + call: (name: string) => Promise; + }; +} + +describe('panel RPC cache', () => { + let cwd: string; + const servers: Started[] = []; + const clients: DevframeRpcClient[] = []; + + beforeEach(() => { + cwd = mkdtempSync(join(tmpdir(), 'pangular-cache-')); + writeFileSync(join(cwd, 'package.json'), JSON.stringify({ name: 'cache-demo' })); + }); + + afterEach(async () => { + for (const client of clients.splice(0)) client.close?.(); + for (const server of servers.splice(0)) await server.close().catch(() => undefined); + rmSync(cwd, { recursive: true, force: true }); + vi.unstubAllGlobals(); + }); + + async function connect(server: Started): Promise { + // The browser client resolves the socket URL against its page location. + vi.stubGlobal('location', new URL(`${server.origin}/`)); + // It also reuses the connection an earlier client stored on the global + // object, which points at an earlier server here. + const stored = globalThis as Record; + delete stored['__DEVFRAME_CONNECTION__']; + delete stored['__DEVFRAME_CONNECTION_META__']; + const client = await connectDevframe({ + baseURL: `${server.origin}/`, + cacheOptions: { functions: [...PANEL_CACHED_RPC] }, + webmcp: false, + callTimeout: 5000, + }); + clients.push(client); + await client.ensureTrusted(); + return client; + } + + async function start(calls: Map): Promise { + const server = await startServer(cwd, calls); + servers.push(server); + return server; + } + + it('lists only static or cacheable functions the panel server registers', () => { + expect(PANEL_CACHED_RPC).toEqual(['pangular:build-meta']); + expect(getBuildMeta.type).toBe('static'); + expect(getBuildMeta.cacheable).toBe(true); + for (const name of PANEL_CACHED_RPC) { + const bare = name.replace(/^pangular:/, ''); + expect(SHARED_RPC.includes(bare) || bare in RPC_INSPECTOR).toBe(true); + } + }); + + it('answers a repeat build-meta call from the cache', async () => { + const calls = new Map(); + const client = await connect(await start(calls)); + const first = (await scoped(client).call('build-meta')) as { projectName: string }; + const second = await scoped(client).call('build-meta'); + expect(first.projectName).toBe('cache-demo'); + expect(second).toEqual(first); + expect(calls.get('build-meta')).toBe(1); + expect(client.cacheManager.has('pangular:build-meta', [])).toBe(true); + }); + + it('sends every call of a function outside the list to the server', async () => { + const calls = new Map(); + const client = await connect(await start(calls)); + await scoped(client).call('list-pages'); + await scoped(client).call('list-pages'); + await scoped(client).call('list-pages'); + expect(calls.get('list-pages')).toBe(3); + expect(client.cacheManager.has('pangular:list-pages', [])).toBe(false); + }); + + it('asks a restarted server again instead of serving the old answer', async () => { + const before = new Map(); + const server = await start(before); + const client = await connect(server); + await scoped(client).call('build-meta'); + expect(client.cacheManager.has('pangular:build-meta', [])).toBe(true); + + const dropped = new Promise((resolve) => + client.events.on('connection:status', (status) => { + if (status !== 'connected') resolve(); + }), + ); + await server.close(); + await dropped; + // devframe clears the cache when the connection status changes. + expect(client.cacheManager.has('pangular:build-meta', [])).toBe(false); + + writeFileSync(join(cwd, 'package.json'), JSON.stringify({ name: 'renamed-demo' })); + const after = new Map(); + const next = await connect(await start(after)); + const meta = (await scoped(next).call('build-meta')) as { projectName: string }; + expect(meta.projectName).toBe('renamed-demo'); + expect(after.get('build-meta')).toBe(1); + }); +}); diff --git a/packages/devtools/src/config.ts b/packages/devtools/src/config.ts index 60595f18..d0cac836 100644 --- a/packages/devtools/src/config.ts +++ b/packages/devtools/src/config.ts @@ -992,6 +992,17 @@ export const SHARED_RPC: readonly string[] = [ 'axe-result', ]; +/** + * Server RPC functions the panel's devframe client caches (its `cacheOptions`), + * so a repeat call is answered without a round trip. Only functions whose + * answer can't change while the server runs belong here, each one `static` or + * marked `cacheable: true`. Live page data and source scans never do: they + * change as the app runs and as files are edited. devframe drops the cache + * when the connection drops, and the panel connects a new client then, so a + * restarted server is asked again. + */ +export const PANEL_CACHED_RPC: readonly string[] = ['pangular:build-meta']; + /** * The inspector each server RPC function belongs to. A function missing here * is shared and always registered. diff --git a/packages/devtools/src/rpc/build-meta.ts b/packages/devtools/src/rpc/build-meta.ts index db93eed5..7ab1f4a6 100644 --- a/packages/devtools/src/rpc/build-meta.ts +++ b/packages/devtools/src/rpc/build-meta.ts @@ -18,6 +18,11 @@ const BuildMetaSchema = v.object({ export const getBuildMeta = defineRpcFunction({ name: 'build-meta', type: 'static', + // Versions, project name and SSR come from package.json, node_modules and + // angular.json, which a running dev server doesn't reload, so the panel + // caches the answer for the connection (PANEL_CACHED_RPC). `static` already + // implies it for devframe; the flag says so here. + cacheable: true, jsonSerializable: true, snapshot: true, args: [], From b7ac18305983a20c67aba0d69561fcbfbcd4b693 Mon Sep 17 00:00:00 2001 From: erKam Date: Wed, 14 Oct 2026 08:11:13 +0000 Subject: [PATCH 2/2] build(extension): rebuild the panel bundle Rebuild extension/ui so the extension's panel caches build-meta like the hosted panel. --- ...=> browser-agent-rpc-BXhoSh1z-rr8okg_T.js} | 2 +- .../{index-BUftb8RW.js => index-CF_JeO4X.js} | 138 +++++++++--------- extension/ui/index.html | 2 +- 3 files changed, 71 insertions(+), 71 deletions(-) rename extension/ui/assets/{browser-agent-rpc-BXhoSh1z-BF1s_IvO.js => browser-agent-rpc-BXhoSh1z-rr8okg_T.js} (93%) rename extension/ui/assets/{index-BUftb8RW.js => index-CF_JeO4X.js} (82%) diff --git a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-BF1s_IvO.js b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-rr8okg_T.js similarity index 93% rename from extension/ui/assets/browser-agent-rpc-BXhoSh1z-BF1s_IvO.js rename to extension/ui/assets/browser-agent-rpc-BXhoSh1z-rr8okg_T.js index 6e5ae2b4..993dbc6d 100644 --- a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-BF1s_IvO.js +++ b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-rr8okg_T.js @@ -1 +1 @@ -import{t as e}from"./index-BUftb8RW.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file +import{t as e}from"./index-CF_JeO4X.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file diff --git a/extension/ui/assets/index-BUftb8RW.js b/extension/ui/assets/index-CF_JeO4X.js similarity index 82% rename from extension/ui/assets/index-BUftb8RW.js rename to extension/ui/assets/index-CF_JeO4X.js index 88f400fd..1b612475 100644 --- a/extension/ui/assets/index-BUftb8RW.js +++ b/extension/ui/assets/index-CF_JeO4X.js @@ -5,10 +5,10 @@ `):``,this.name=`UnsubscriptionError`,this.errors=t}});function hr(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var gr=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=lr(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(fr(c))try{c()}catch(e){i=e instanceof mr?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=lr(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{yr(f)}catch(e){i??=[],e instanceof mr?i=dr(dr([],ur(i)),ur(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new mr(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)yr(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&hr(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&hr(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),_r=gr.EMPTY;function vr(e){return e instanceof gr||e&&`closed`in e&&fr(e.remove)&&fr(e.add)&&fr(e.unsubscribe)}function yr(e){fr(e)?e():e.unsubscribe()}var br={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},xr={setTimeout:function(e,t){var n=[...arguments].slice(2),r=xr.delegate;return r?.setTimeout?r.setTimeout.apply(r,dr([e,t],ur(n))):setTimeout.apply(void 0,dr([e,t],ur(n)))},clearTimeout:function(e){return(xr.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Sr(e){xr.setTimeout(function(){var t=br.onUnhandledError;if(t)t(e);else throw e})}function Cr(){}var wr=(function(){return Dr(`C`,void 0,void 0)})();function Tr(e){return Dr(`E`,void 0,e)}function Er(e){return Dr(`N`,e,void 0)}function Dr(e,t,n){return{kind:e,value:t,error:n}}var Or=null;function kr(e){if(br.useDeprecatedSynchronousErrorHandling){var t=!Or;if(t&&(Or={errorThrown:!1,error:null}),e(),t){var n=Or,r=n.errorThrown,i=n.error;if(Or=null,r)throw i}}else e()}function Ar(e){br.useDeprecatedSynchronousErrorHandling&&Or&&(Or.errorThrown=!0,Or.error=e)}var jr=function(e){cr(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,vr(t)&&t.add(n)):n.destination=zr,n}return t.create=function(e,t,n){return new Fr(e,t,n)},t.prototype.next=function(e){this.isStopped?Rr(Er(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Rr(Tr(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Rr(wr,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(gr),Mr=Function.prototype.bind;function Nr(e,t){return Mr.call(e,t)}var Pr=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Ir(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Ir(e)}else Ir(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Ir(e)}},e}(),Fr=function(e){cr(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(fr(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&br.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Nr(t.next,o),error:t.error&&Nr(t.error,o),complete:t.complete&&Nr(t.complete,o)}):a=t}return i.destination=new Pr(a),i}return t}(jr);function Ir(e){br.useDeprecatedSynchronousErrorHandling?Ar(e):Sr(e)}function Lr(e){throw e}function Rr(e,t){var n=br.onStoppedNotification;n&&xr.setTimeout(function(){return n(e,t)})}var zr={closed:!0,next:Cr,error:Lr,complete:Cr},Br=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Vr(e){return e}function Hr(e){return e.length===0?Vr:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Ur=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=Kr(e)?e:new Fr(e,t,n);return kr(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=Wr(t),new t(function(t,r){var i=new Fr({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[Br]=function(){return this},e.prototype.pipe=function(){return Hr([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=Wr(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function Wr(e){return e??br.Promise??Promise}function Gr(e){return e&&fr(e.next)&&fr(e.error)&&fr(e.complete)}function Kr(e){return e&&e instanceof jr||Gr(e)&&vr(e)}function qr(e){return fr(e?.lift)}function Jr(e){return function(t){if(qr(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function Yr(e,t,n,r,i){return new Xr(e,t,n,r,i)}var Xr=function(e){cr(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(jr),Zr=pr(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Qr=function(e){cr(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new $r(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Zr},t.prototype.next=function(e){var t=this;kr(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=lr(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;kr(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;kr(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?_r:(this.currentObservers=null,a.push(e),new gr(function(){t.currentObservers=null,hr(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Ur;return e.source=this,e},t.create=function(e,t){return new $r(e,t)},t}(Ur),$r=function(e){cr(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??_r},t}(Qr),ei=function(e){cr(t,e);function t(t){var n=e.call(this)||this;return n._value=t,n}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(Qr);function ti(e,t){return Jr(function(n,r){var i=0;n.subscribe(Yr(r,function(n){r.next(e.call(t,n,i++))}))})}var ni=`https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss`,ri=class extends Error{code;constructor(e,t){super(ai(e,t)),this.code=e}};function ii(e){return`NG0${Math.abs(e)}`}function ai(e,t){return`${ii(e)}${t?`: `+t:``}`}function oi(e){for(let t in e)if(e[t]===oi)return t;throw Error(``)}function si(e){if(typeof e==`string`)return e;if(Array.isArray(e))return`[${e.map(si).join(`, `)}]`;if(e==null)return``+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return``+n;let r=n.indexOf(` `);return r>=0?n.slice(0,r):n}function ci(e,t){return e?t?`${e} ${t}`:e:t||``}var li=oi({__forward_ref__:oi});function ui(e){return e.__forward_ref__=ui,e}function di(e){return fi(e)?e():e}function fi(e){return typeof e==`function`&&Object.hasOwn(e,li)&&e.__forward_ref__===ui}function pi(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function mi(e){return hi(e,vi)}function hi(e,t){return Object.hasOwn(e,t)&&e[t]||null}function gi(e){return(e?.[vi]??null)||null}function _i(e){return e&&Object.hasOwn(e,yi)?e[yi]:null}var vi=oi({ɵprov:oi}),yi=oi({ɵinj:oi}),bi=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(e,t){this._desc=e,this.ɵprov=void 0,typeof t==`number`?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.ɵprov=pi({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function xi(e){return e&&!!e.ɵproviders}var tee=oi({ɵcmp:oi}),nee=oi({ɵdir:oi}),ree=oi({ɵpipe:oi}),Si=oi({ɵfac:oi}),Ci=oi({__NG_ELEMENT_ID__:oi}),wi=oi({__NG_ENV_ID__:oi});function Ti(e){return Oi(e,`@Component`),e[tee]||null}function Ei(e){return Oi(e,`@Directive`),e[nee]||null}function Di(e){return Oi(e,`@Pipe`),e[ree]||null}function Oi(e,t){if(e==null)throw new ri(-919,!1)}function ki(e){return typeof e==`string`?e:e==null?``:String(e)}var Ai=oi({ngErrorCode:oi}),ji=oi({ngErrorMessage:oi}),Mi=oi({ngTokenPath:oi});function Ni(e,t){return Fi(``,-200,t)}function Pi(e,t){throw new ri(-201,!1)}function Fi(e,t,n){let r=new ri(t,e);return r[Ai]=t,r[ji]=e,n&&(r[Mi]=n),r}function Ii(e){return e[Ai]}var Li;function Ri(){return Li}function zi(e){let t=Li;return Li=e,t}function Bi(e,t,n){let r=mi(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Pi(e,``)}var Vi=globalThis,Hi={},Ui=`__NG_DI_FLAG__`,Wi=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=qi(t)||0;try{return this.injector.get(e,n&8?null:Hi,n)}catch(e){if(tr(e))return e;throw e}}};function Gi(e,t=0){let n=Qn();if(n===void 0)throw new ri(-203,!1);if(n===null)return Bi(e,void 0,t);{let r=Ji(t),i=n.retrieve(e,r);if(tr(i)){if(r.optional)return null;throw i}return i}}function Ki(e,t=0){return(Ri()||Gi)(di(e),t)}function C(e,t){return Ki(e,qi(t))}function qi(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Ji(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function Yi(e){let t=[];for(let n=0;nArray.isArray(e)?ea(e,t):t(e))}function ta(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function na(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function ra(e,t){let n=[];for(let r=0;rt;){let t=i-2;e[i]=e[t],i--}e[t]=n,e[t+1]=r}}function aa(e,t,n){let r=sa(e,t);return r>=0?e[r|1]=n:(r=~r,ia(e,r,t,n)),r}function oa(e,t){let n=sa(e,t);if(n>=0)return e[n|1]}function sa(e,t){return ca(e,t,1)}function ca(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let a=r+(i-r>>1),o=e[a<t?i=a:r=a+1}return~(i<{n.push(e)};return ea(t,e=>{let t=e;va(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&_a(i,a),n}function _a(e,t){for(let n=0;n{t(e,r)})}}function va(e,t,n,r){if(e=di(e),!e)return!1;let i=null,a=_i(e),o=!a&&Ti(e);if(!a&&!o){let t=e.ngModule;if(a=_i(t),a)i=t;else return!1}else if(o&&!o.standalone)return!1;else i=e;let s=r.has(i);if(o){if(s)return!1;if(r.add(i),o.dependencies){let e=typeof o.dependencies==`function`?o.dependencies():o.dependencies;for(let i of e)va(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ea(a.imports,i=>{va(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&_a(e,t)}if(!s){let e=Zi(i)||(()=>new i);t({provide:i,useFactory:e,deps:ua},i),t({provide:pa,useValue:i,multi:!0},i),t({provide:da,useValue:()=>Ki(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;ya(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function ya(e,t){for(let n of e)xi(n)&&(n=n.ɵproviders),Array.isArray(n)?ya(n,t):t(n)}var ba=oi({provide:String,useValue:oi});function xa(e){return typeof e==`object`&&!!e&&ba in e}function Sa(e){return!!(e&&e.useExisting)}function Ca(e){return!!(e&&e.useFactory)}function wa(e){return typeof e==`function`}var Ta=new bi(``),Ea={},Da={},Oa=void 0;function ka(){return Oa===void 0&&(Oa=new ma),Oa}var Aa=class{},ja=class extends Aa{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,Va(e,e=>this.processProvider(e)),this.records.set(fa,La(void 0,this)),r.has(`environment`)&&this.records.set(Aa,La(void 0,this));let i=this.records.get(Ta);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(pa,ua,{self:!0}))}retrieve(e,t){let n=qi(t)||0;try{return this.get(e,Hi,n)}catch(e){if(tr(e))return e;throw e}}destroy(){Ia(this),this._destroyed=!0;let e=fn(null);try{for(let e of this._ngOnDestroyHooks)e.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let t of e)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),fn(e)}}onDestroy(e){return Ia(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){Ia(this);let t=$n(this),n=zi(void 0);try{return e()}finally{$n(t),zi(n)}}get(e,t=Hi,n){if(Ia(this),Object.hasOwn(e,wi))return e[wi](this);let r=qi(n),i=$n(this),a=zi(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=Ba(e)&&mi(e);t=n&&this.injectableDefInScope(n)?La(Ma(e),Ea):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?ka():this.parent;return t=r&8&&t===Hi?null:t,n.get(e,t)}catch(e){let t=Ii(e);throw t===-200||t===-201?new ri(t,null):e}finally{zi(a),$n(i)}}resolveInjectorInitializers(){let e=fn(null),t=$n(this),n=zi(void 0);try{let e=this.get(da,ua,{self:!0});for(let t of e)t()}finally{$n(t),zi(n),fn(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=di(e);let t=wa(e)?e:di(e&&e.provide),n=Pa(e);if(!wa(e)&&e.multi===!0){let n=this.records.get(t);n||(n=La(void 0,Ea,!0),n.factory=()=>Yi(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=fn(null);try{if(t.value===Da)throw Ni(``);return t.value===Ea&&(t.value=Da,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&za(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{fn(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=di(e.providedIn);return typeof t==`string`?t===`any`||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Ma(e){let t=mi(e),n=t===null?Zi(e):t.factory;if(n!==null)return n;if(e instanceof bi)throw new ri(-204,!1);if(e instanceof Function)return Na(e);throw new ri(-204,!1)}function Na(e){if(e.length>0)throw new ri(-204,!1);let t=gi(e);return t===null?()=>new e:()=>t.factory(e)}function Pa(e){return xa(e)?La(void 0,e.useValue):La(Fa(e),Ea)}function Fa(e,t,n){let r;if(wa(e)){let t=di(e);return Zi(t)||Ma(t)}if(xa(e))r=()=>di(e.useValue);else if(Ca(e))r=()=>e.useFactory(...Yi(e.deps||[]));else if(Sa(e))r=(t,n)=>Ki(di(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=di(e&&(e.useClass||e.provide));if(Ra(e))r=()=>new t(...Yi(e.deps));else return Zi(t)||Ma(t)}return r}function Ia(e){if(e.destroyed)throw new ri(-205,!1)}function La(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Ra(e){return!!e.deps}function za(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function Ba(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Va(e,t){for(let n of e)Array.isArray(n)?Va(n,t):n&&xi(n)?Va(n.ɵproviders,t):t(n)}function Ha(e,t){let n;e instanceof ja?(Ia(e),n=e):n=new Wi(e);let r=$n(n),i=zi(void 0);try{return t()}finally{$n(r),zi(i)}}function Ua(){return Ri()!==void 0||Qn()!=null}var Wa=1;function Ga(e){return Array.isArray(e)&&typeof e[Wa]==`object`}function Ka(e){return Array.isArray(e)&&e[Wa]===!0}function qa(e){return!!(e.flags&4)}function Ja(e){return e.componentOffset>-1}function Ya(e){return(e.flags&1)==1}function Xa(e){return!!e.template}function Za(e){return!!(e[2]&512)}function Qa(e){return(e[2]&256)==256}var $a=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})($a||{}),eo=`math`;function to(e){for(;Array.isArray(e);)e=e[0];return e}function no(e,t){return to(t[e])}function ro(e,t){return to(t[e.index])}function io(e,t){return e.data[t]}function ao(e,t){return e[t]}function oo(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function so(e,t){let n=t[e];return Ga(n)?n:n[0]}function co(e){return(e[2]&128)==128}function lo(e){return Ka(e[3])}function uo(e,t){return t==null?null:e[t]}function fo(e){e[17]=0}function po(e){e[2]&1024||(e[2]|=1024,co(e)&&_o(e))}function mo(e,t){for(;e>0;)t=t[14],e--;return t}function ho(e){return!!(e[2]&9216||e[24]?.dirty)}function go(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),ho(e)&&_o(e)}function _o(e){e[10].changeDetectionScheduler?.notify(0);let t=bo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!co(t)));)t=bo(t)}function vo(e,t){if(Qa(e))throw new ri(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function yo(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function bo(e){let t=e[3];return Ka(t)?t[3]:t}function xo(e){return e[7]??=[]}function So(e){return e.cleanup??=[]}function Co(e,t,n,r){let i=xo(t);i.push(n),e.firstCreatePass&&So(e).push(r,i.length-1)}var wo={lFrame:$o(null),bindingsEnabled:!0,skipHydrationRootTNode:null},To=!1;function Eo(){return wo.lFrame.elementDepthCount}function Do(){wo.lFrame.elementDepthCount++}function Oo(){wo.lFrame.elementDepthCount--}function ko(){return wo.bindingsEnabled}function Ao(){return wo.skipHydrationRootTNode!==null}function jo(e){return wo.skipHydrationRootTNode===e}function Mo(){wo.skipHydrationRootTNode=null}function No(){return wo.lFrame.lView}function Po(){return wo.lFrame.tView}function w(e){return wo.lFrame.contextLView=e,e[8]}function T(e){return wo.lFrame.contextLView=null,e}function Fo(){let e=Io();for(;e!==null&&e.type===64;)e=e.parent;return e}function Io(){return wo.lFrame.currentTNode}function Lo(){let e=wo.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Ro(e,t){let n=wo.lFrame;n.currentTNode=e,n.isParent=t}function zo(){return wo.lFrame.isParent}function Bo(){wo.lFrame.isParent=!1}function Vo(){return wo.lFrame.contextLView}function Ho(){return To}function Uo(e){let t=To;return To=e,t}function Wo(){let e=wo.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Go(){return wo.lFrame.bindingIndex}function iee(e){return wo.lFrame.bindingIndex=e}function Ko(){return wo.lFrame.bindingIndex++}function qo(e){let t=wo.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function aee(){return wo.lFrame.inI18n}function oee(e,t){let n=wo.lFrame;n.bindingIndex=n.bindingRootIndex=e,Jo(t)}function see(){return wo.lFrame.currentDirectiveIndex}function Jo(e){wo.lFrame.currentDirectiveIndex=e}function cee(e){let t=wo.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function lee(){return wo.lFrame.currentQueryIndex}function Yo(e){wo.lFrame.currentQueryIndex=e}function uee(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function Xo(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=uee(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=wo.lFrame=Qo();return r.currentTNode=t,r.lView=e,!0}function Zo(e){let t=Qo(),n=e[1];wo.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Qo(){let e=wo.lFrame,t=e===null?null:e.child;return t===null?$o(e):t}function $o(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function es(){let e=wo.lFrame;return wo.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var ts=es;function ns(){let e=es();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function rs(e){return(wo.lFrame.contextLView=mo(e,wo.lFrame.contextLView))[8]}function is(){return wo.lFrame.selectedIndex}function as(e){wo.lFrame.selectedIndex=e}function os(){let e=wo.lFrame;return io(e.tView,e.selectedIndex)}function E(){wo.lFrame.currentNamespace=`svg`}function ss(){cs()}function cs(){wo.lFrame.currentNamespace=null}function ls(){return wo.lFrame.currentNamespace}var us=!0;function ds(){return us}function fs(e){us=e}function ps(e,t=null,n=null,r){let i=ms(e,t,n,r);return i.resolveInjectorInitializers(),i}function ms(e,t=null,n=null,r,i=new Set){return new ja([n||ua,ha(e)],t||ka(),null,i)}var hs=class e{static THROW_IF_NOT_FOUND=Hi;static NULL=new ma;static create(e,t){if(Array.isArray(e))return ps({name:``},t,e,``);{let t=e.name??``;return ps({name:t},e.parent,e.providers,t)}}static ɵprov=pi({token:e,providedIn:`any`,factory:()=>Ki(fa)});static __NG_ELEMENT_ID__=-1},gs=new bi(``),_s=class{static __NG_ELEMENT_ID__=ys;static __NG_ENV_ID__=e=>e},vs=class extends _s{_lView;constructor(e){super(),this._lView=e}get destroyed(){return Qa(this._lView)}onDestroy(e){let t=this._lView;return vo(t,e),()=>yo(t,e)}};function ys(){return new vs(No())}var bs=new bi(``),xs=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new ei(!1);debugTaskTracker=C(bs,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Ur(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=pi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Ss=class extends Qr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,Ua()&&(this.destroyRef=C(_s,{optional:!0})??void 0,this.pendingTasks=C(xs,{optional:!0})??void 0)}emit(e){let t=fn(null);try{super.next(e)}finally{fn(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),a=n;if(e&&typeof e==`object`){let t=e;r=t.next?.bind(t),i=t.error?.bind(t),a=t.complete?.bind(t)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&=this.wrapInTimeout(r),a&&=this.wrapInTimeout(a));let o=super.subscribe({next:r,error:i,complete:a});return e instanceof gr&&e.add(o),o}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}};function Cs(...e){}function ws(e){let t,n;function r(){e=Cs;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function Ts(e){return queueMicrotask(()=>e()),()=>{e=Cs}}var Es=`isAngularZone`,Ds=`isAngularZone_ID`,Os=0,ks=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Ss(!1);onMicrotaskEmpty=new Ss(!1);onStable=new Ss(!1);onError=new Ss(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new ri(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=i,Ns(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Es)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new ri(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new ri(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){let i=this._inner,a=i.scheduleEventTask(`NgZoneEvent: `+r,e,As,Cs,Cs);try{return i.runTask(a,t,n)}finally{i.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}},As={};function js(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Ms(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){ws(()=>{e.callbackScheduled=!1,Ps(e),e.isCheckStableRunning=!0,js(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Ps(e)}function Ns(e){let t=()=>{Ms(e)},n=Os++;e._inner=e._inner.fork({name:`angular`,properties:{[Es]:!0,[Ds]:n,[Ds+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(Rs(s))return n.invokeTask(i,a,o,s);try{return Fs(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Is(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Fs(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!zs(s)&&t(),Is(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Ps(e),js(e)):i.change==`macroTask`&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,n,r,i)=>(t.handleError(r,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Ps(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Fs(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Is(e){e._nesting--,js(e)}var Ls=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Ss;onMicrotaskEmpty=new Ss;onStable=new Ss;onError=new Ss;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function Rs(e){return Bs(e,`__ignore_ng_zone__`)}function zs(e){return Bs(e,`__scheduler_tick__`)}function Bs(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Vs=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},Hs=new bi(``,{factory:()=>{let e=C(ks),t=C(Aa),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(Vs),n.handleError(r))})}}}),Us={provide:da,useValue:()=>{C(Vs,{optional:!0})},multi:!0};function D(e,t){let[n,r,i]=Un(e,t?.equal),a=n;return a[dn],a.set=r,a.update=i,a.asReadonly=Ws.bind(a),a}function Ws(){let e=this[dn];if(e.readonlyFn===void 0){let t=()=>this();t[dn]=e,e.readonlyFn=t}return e.readonlyFn}var Gs=new bi(``,{factory:()=>Ks}),Ks=`ng`,qs=new bi(``),Js=new bi(``,{providedIn:`platform`,factory:()=>`unknown`}),Ys=new bi(``,{factory:()=>C(gs).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),Xs=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=Zs}return e})();function Zs(){return new Xs(No(),Fo())}var Qs=class{},$s=new bi(``,{factory:()=>!0}),ec=new bi(``),tc=(()=>{class e{static ɵprov=pi({token:e,providedIn:`root`,factory:()=>new nc})}return e})(),nc=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)e||=t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},rc=class{[dn];constructor(e){this[dn]=e}destroy(){this[dn].destroy()}};function ic(e,t){let n=t?.injector??C(hs),r=t?.manualCleanup===!0?null:n.get(_s),i,a=n.get(Xs,null,{optional:!0}),o=n.get(Qs);return a===null?i=lc(e,n.get(tc),o):(i=cc(a.view,o,e),r instanceof vs&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new rc(i)}var ac={...Yn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=Uo(!1);try{Xn(this)}finally{Uo(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=fn(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],fn(e)}}},oc={...ac,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(Dn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},sc={...ac,consumerMarkedDirty(){this.view[2]|=8192,_o(this.view),this.notifier.notify(13)},destroy(){if(Dn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function cc(e,t,n){let r=Object.create(sc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=uc(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function lc(e,t,n){let r=Object.create(oc);return r.fn=uc(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function uc(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function dc(e){return typeof e==`function`&&e[dn]!==void 0}function fc(e){return dc(e)&&typeof e.set==`function`}var pc=Symbol(`InputSignalNode#UNSET`),mc={...qn,transformFn:void 0,applyValueToInputSignal(e,t){Gn(e,t)}};function hc(e){return{toString:e}.toString()}var gc=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(gc||{}),_c=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function vc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var yc=null,bc=(()=>{yc=Sc;let e=()=>Sc;return e.ngInherit=!0,e})();function xc(){return yc}function Sc(e){return e.type.prototype.ngOnChanges&&(e.setInput=wc),Cc}function Cc(){let e=Ec(this),t=e?.current;if(t){let n=e.previous;if(n===la)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function wc(e,t,n,r,i){let a=this.declaredInputs[r],o=Ec(e)||Dc(e,{previous:la,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new _c(l&&l.currentValue,n,c===la),vc(e,t,i,n)}var Tc=`__ngSimpleChanges__`;function Ec(e){return Object.hasOwn(e,Tc)&&e[Tc]||null}function Dc(e,t){return e[Tc]=t}var Oc=[],kc=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[17]+=65536),(s>14>16&&(e[2]&3)===t&&(e[2]+=16384,Ic(o,a)):Ic(o,a)}var Rc=-1,zc=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function Bc(e){return!!(e.flags&8)}function Vc(e){return!!(e.flags&16)}function Hc(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function Xc(e,t){let n=Yc(e),r=t;for(;n>0;)r=r[14],n--;return r}var Zc=!0;function Qc(e){let t=Zc;return Zc=e,t}var $c=255,el=5,tl=0,nl={};function rl(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,Ci)&&(r=n[Ci]),r??=n[Ci]=tl++;let i=r&$c,a=1<>el)]|=a}function il(e,t){let n=ol(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,al(r.data,e),al(t,null),al(r.blueprint,null));let i=sl(e,t),a=e.injectorIndex;if(qc(i)){let e=Jc(i),n=Xc(i,t),r=n[1].data;for(let i=0;i<8;i++)t[a+i]=n[e+i]|r[e+i]}return t[a+8]=i,a}function al(e,t){e.push(0,0,0,0,0,0,0,0,t)}function ol(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function sl(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=Sl(i),r===null)return Rc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Rc}function cl(e,t,n){rl(e,t,n)}function ll(e,t,n){if(n&8||e!==void 0)return e;Pi(t,`NodeInjector`)}function ul(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=zi(void 0);try{return i?i.get(t,r,n&8):Bi(t,r,n&8)}finally{zi(a)}}return ll(r,t,n)}function dl(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=xl(e,t,n,r,nl);if(i!==nl)return i}let i=fl(e,t,n,r,nl);if(i!==nl)return i}return ul(t,n,r,i)}function fl(e,t,n,r,i){let a=gl(n);if(typeof a==`function`){if(!Xo(t,e,r))return r&1?ll(i,n,r):ul(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Pi(n);else return e}finally{ts()}}else if(typeof a==`number`){let i=null,o=ol(e,t),s=Rc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?sl(e,t):t[o+8],s===Rc||!vl(r,!1)?o=-1:(i=t[1],o=Jc(s),t=Xc(s,t)));o!==-1;){let e=t[1];if(_l(a,o,e.data)){let e=pl(o,t,n,i,r,c);if(e!==nl)return e}s=t[o+8],s!==Rc&&vl(r,t[1].data[o+8]===c)&&_l(a,o,t)?(i=e,o=Jc(s),t=Xc(s,t)):o=-1}}return i}function pl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=ml(s,o,n,r==null?Ja(s)&&Zc:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?nl:hl(t,o,c,s,i)}function ml(e,t,n,r,i){let a=e.providerIndexes,o=t.data,s=a&1048575,c=e.directiveStart,l=e.directiveEnd,u=a>>20,d=r?s:s+u,f=i?s+u:l;for(let e=d;e=c&&t.type===n)return e}if(i){let e=o[c];if(e&&Xa(e)&&e.type===n)return c}return null}function hl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof zc){let s=a;if(s.resolving)throw Ni(``);let c=Qc(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?zi(s.injectImpl):null;Xo(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Ac(n,o[n],t)}finally{l!==null&&zi(l),Qc(c),s.resolving=!1,ts()}}return a}function gl(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,Ci)?e[Ci]:void 0;return typeof t==`number`?t>=0?t&$c:bl:t}function _l(e,t,n){let r=1<>el)]&r)}function vl(e,t){return!(e&2)&&!(e&1&&t)}var yl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return dl(this._tNode,this._lView,e,qi(n),t)}};function bl(){return new yl(Fo(),No())}function xl(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!Za(o);){let e=fl(a,o,n,r|2,nl);if(e!==nl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,nl,r);if(t!==nl)return t}t=Sl(o),o=o[14]}a=t}return i}function Sl(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function Cl(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function wl(){return Tl(Fo(),No())}function Tl(e,t){return new El(ro(e,t))}var El=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=wl}return e})();function Dl(e){return e instanceof El?e.nativeElement:e}function Ol(){return this._results[Symbol.iterator]()}var kl=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new Qr}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=$i(e);(this._changesDetected=!Qi(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=Ol};function Al(e){return(e.flags&128)==128}var jl=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(jl||{}),Ml=new Map,Nl=0;function Pl(){return Nl++}function Fl(e){Ml.set(e[19],e)}function Il(e){Ml.delete(e[19])}var Ll=`__ngContext__`;function Rl(e,t){Ga(t)?(e[Ll]=t[19],Fl(t)):e[Ll]=t}function zl(e){return Vl(e[12])}function Bl(e){return Vl(e[4])}function Vl(e){for(;e!==null&&!Ka(e);)e=e[4];return e}var Hl=void 0;function Ul(e){Hl=e}function Wl(){if(Hl!==void 0)return Hl;if(typeof document<`u`)return document;throw new ri(210,!1)}var Gl=!1,Kl=new bi(``,{factory:()=>Gl}),ql=new WeakMap;function Jl(e,t){if(typeof e!=`object`||!e)return;let n=ql.get(e);n||(n=new WeakSet,ql.set(e,n)),n.add(t)}function Yl(e){return(e.flags&32)==32}var Xl=()=>null;function Zl(e,t,n=!1){return Xl(e,t,n)}function Ql(e,t){let n=e.contentQueries;if(n!==null){let r=fn(null);try{for(let r=0;r|^->||--!>|)/g,uu=`​$1​`;function du(e){return e.replace(cu,e=>e.replace(lu,uu))}function fu(e,t){return e.createText(t)}function pu(e,t,n){e.setValue(t,n)}function mu(e,t){return e.createComment(du(t))}function hu(e,t,n){return e.createElement(t,n)}function gu(e,t,n,r,i){e.insertBefore(t,n,r,i)}function _u(e,t,n){e.appendChild(t,n)}function vu(e,t,n,r,i){r===null?_u(e,t,n):gu(e,t,n,r,i)}function yu(e,t,n,r){e.removeChild(null,t,n,r)}function bu(e,t,n){e.setAttribute(t,`style`,n)}function xu(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function Su(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&Hc(e,t,r),i!==null&&xu(e,t,i),a!==null&&bu(e,t,a)}function Cu(e){let t=wu();return t?t.sanitize($a.URL,e)||``:iu(e,`URL`)?ru(e):su(ki(e))}function wu(){let e=No();return e&&e[10].sanitizer}function Tu(e){return e.ownerDocument.defaultView}function Eu(e){return e.ownerDocument}function Du(e,t,n){let r=e.length;for(;;){let i=e.indexOf(t,n);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let n=t.length;if(i+n===r||e.charCodeAt(i+n)<=32)return i}n=i+1}}var Ou=`ng-template`;function ku(e,t,n,r){let i=0;if(r){for(;i-1){let e;for(;++ia?``:i[u+1].toLowerCase(),r&2&&l!==e){if(Nu(r))return!1;o=!0}}}}}return Nu(r)||o}function Nu(e){return!(e&1)}function Pu(e,t,n,r){if(t===null)return-1;let i=0;if(r||!n){let n=!1;for(;i-1)for(n++;n0?`="`+t+`"`:``)+`]`}else r&8?i+=`.`+o:r&4&&(i+=` `+o)}else i!==``&&!Nu(o)&&(t+=Bu(a,i),i=``),r=o,a||=!Nu(r);n++}return i!==``&&(t+=Bu(a,i)),t}function Hu(e){return e.map(Vu).join(`,`)}function Uu(e){let t=[],n=[],r=1,i=2;for(;r!1});function Yu(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function Xu(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function Zu(e){let t=Xu(e,`transition-property`),n=Xu(e,`transition-duration`),r=Xu(e,`transition-delay`),i={propertyName:``,duration:0,animationName:void 0};for(let e=0;ei.duration&&(i.propertyName=t[e],i.duration=a)}return i}function dee(e){let t=Xu(e,`animation-name`),n=Xu(e,`animation-delay`),r=Xu(e,`animation-duration`),i=Xu(e,`animation-iteration-count`),a={animationName:``,propertyName:void 0,duration:0};for(let e=0;ea.duration&&s!==`infinite`&&(a.animationName=t[e],a.duration=o)}return a}function Qu(e,t){return e!==void 0&&e.duration>t.duration}function $u(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function ed(e){let t=e.effect?.getTiming();if(t===void 0)return;let n=typeof t.duration==`number`?t.duration:0,r=(t.delay??0)+n,i=e.playbackRate;return i!==void 0&&i!==0&&i!==1&&(r/=Math.abs(i)),r}function fee(e,t){let n=getComputedStyle(e),r=dee(n),i=Zu(n),a=r.duration>i.duration?r:i;Qu(t.get(e),a)||$u(a)&&t.set(e,a)}function pee(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?fee(e,t):mee(e,t,r)}function mee(e,t,n){let r={animationName:void 0,propertyName:void 0,duration:0};for(let e of n){if(e.effect?.getTiming()?.iterations===1/0)continue;let t=ed(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}Qu(t.get(e),r)||$u(r)&&t.set(e,r)}var td=new Set,hee=!1,gee=1,nd=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function _ee(e){return e[9].get(Ju,hee)}function vee(e,t,n){let r=id.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else id.set(e,{classList:t,cleanupFns:n})}function rd(e){let t=id.get(e);if(t){for(let e of t.cleanupFns)e();id.delete(e)}ad.delete(e)}var id=new WeakMap,ad=new WeakMap,od=new WeakMap;function sd(e){return e?e[14]??e:null}var cd=new WeakSet;function ld(e,t,n){let r=od.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=sd(n);for(let e=r.length-1;e>=0;e--){let{el:n,declarationView:s}=r[e],c=n.parentNode;n===t?(r.splice(e,1),cd.add(n),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):(a&&n===a||c&&i&&c!==i&&(o===null||s===null||o===s))&&(r.splice(e,1),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),n.parentNode?.removeChild(n))}}function ud(e,t,n){let r=sd(n),i=od.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):od.set(e,[{el:t,declarationView:r}])}function dd(e){let t=e[26]??={};return t.enter??=new Map}function fd(e){let t=typeof e==`function`?e():e,n=Array.isArray(t)?t:null;return typeof t==`string`&&(n=t.trim().split(/\s+/).filter(e=>e)),n}function pd(e){return e.composedPath?e.composedPath()[0]:e.target}function md(e,t){let n=ad.get(t);if(n===void 0)return!0;if(t!==pd(e))return!1;let r=e.animation;if(r){let e=ed(r);if(e!==void 0&&e+gee{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=pi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),xd=[0,1,2,3],Sd=(()=>{class e{ngZone=C(ks);scheduler=C(Qs);errorHandler=C(Vs,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){C(_d,{optional:!0})}execute(){let e=this.sequences.size>0;e&&kc(gc.AfterRenderHooksStart),this.executing=!0;for(let e of xd)for(let t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let n=t.hooks[e];return n(t.pipelinedValue)},t.snapshot))}catch(e){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(e)}this.executing=!1;for(let e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(let e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&kc(gc.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),_o(t),t[2]|=8192)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,t){return t?t.run(gd.AFTER_NEXT_RENDER,e):e()}static ɵprov=pi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Cd=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(e,t,n,r,i,a=null){this.impl=e,this.hooks=t,this.view=n,this.once=r,this.snapshot=a,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let e=this.view?.[25];e&&(this.view[25]=e.filter(e=>e!==this))}};function wd(e,t){let n=t?.injector??C(hs);return yd(`NgAfterNextRender`),Ed(e,n,t,!0)}function Td(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Ed(e,t,n,r){let i=t.get(bd);i.impl??=t.get(Sd);let a=t.get(_d,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(_s),s=t.get(Xs,null,{optional:!0}),c=new Cd(i.impl,Td(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var Dd=new bi(``,{factory:()=>{let e=C(Aa),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function Od(e,t,n){let r=e.get(Dd);if(Array.isArray(t))for(let e of t)r.queue.add(e),n?.detachedLeaveAnimationFns?.push(e);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function kd(e,t){let n=e.get(Dd);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Ad(e,t){let n=e.get(Dd);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function jd(e){let t=e.get(Dd);t.isScheduled||=(wd(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Md(e){let t=e.get(Dd);t.scheduler=jd,t.scheduler(e)}function Nd(e,t){for(let[n,r]of t)Od(e,r.animateFns)}function Pd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&Nd(r,i)}function Fd(e,t,n,r){try{n.get(fa)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&kd(n,i.enter.get(t.index).animateFns);let a=Id(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];Rd(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&td.add(e[19]),Od(n,()=>Ld(e,t,i||void 0,a,r),i||void 0)}function Id(e,t,n){let r=new Map,i=n?.leave;if(i&&i.has(t.index)&&r.set(t.index,i.get(t.index)),e&&i)for(let[n,a]of i){if(r.has(n))continue;let i=e[1].data[n].parent;for(;i;){if(i===t){r.set(n,a);break}i=i.parent}}return r}function Ld(e,t,n,r,i){let a=[];if(n&&n.leave)for(let[e]of r){if(!n.leave.has(e))continue;let t=n.leave.get(e);for(let e of t.animateFns){let{promise:t}=e();a.push(t)}n.detachedLeaveAnimationFns=void 0}if(e&&Rd(e,t,a),a.length>0){let t=n||e?.[26];if(t){let n=t.running;n&&a.push(n),t.running=Promise.allSettled(a),Bd(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&td.delete(e[19]),i(!0)})}else e&&td.delete(e[19]),i(!1)}function Rd(e,t,n){if(t.type&12){let r=e[t.index];if(Ka(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,td.delete(e[19])),n(!0)})}function Vd(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;Ka(i)?c=i:Ga(i)&&(l=!0,i=i[0]);let u=to(i);e===0&&r!==null?(Pd(s,r,a,n),o==null?_u(t,r,u):gu(t,r,u,o||null,!0)):e===1&&r!==null?(Pd(s,r,a,n),gu(t,r,u,o||null,!0),ld(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&ud(a,u,s),cd.delete(u),Fd(s,a,n,e=>{if(cd.has(u)){cd.delete(u);return}yu(t,u,l,e)})):e===3&&(cd.delete(u),Fd(s,a,n,()=>{t.destroyNode(u)})),c!=null&&ff(t,e,n,c,a,r,o)}}function Hd(e,t){Wd(e,t),t[0]=null,t[5]=null}function Ud(e,t,n,r,i,a){r[0]=i,r[5]=t,cf(e,r,n,1,i,a)}function Wd(e,t){t[10].changeDetectionScheduler?.notify(9),cf(e,t,t[11],2,null,null)}function Gd(e){let t=e[12];if(!t)return Jd(e[1],e);for(;t;){let n=null;if(Ga(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)Ga(t)&&Jd(t[1],t),t=t[3];t===null&&(t=e),Ga(t)&&Jd(t[1],t),n=t&&t[4]}t=n}}function Kd(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function qd(e,t){if(Qa(t))return;let n=t[11];n.destroyNode&&cf(e,t,n,3,null,null),Gd(t)}function Jd(e,t){if(Qa(t))return;let n=fn(null);try{t[2]&=-129,t[2]|=256,t[24]&&Dn(t[24]),Xd(e,t),Yd(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&Ka(t[3])){n!==t[3]&&Kd(n,t);let r=t[18];r!==null&&r.detachView(e)}Il(t)}finally{fn(n)}}function Yd(e,t){let n=e.cleanup,r=t[7];if(n!==null)for(let e=0;e=0?r[t]():r[-t].unsubscribe(),e+=2}else{let t=r[n[e+1]];n[e].call(t)}r!==null&&(t[7]=null);let i=t[21];if(i!==null){t[21]=null;for(let e=0;e27&&Sf(e,t,27,!1),kc(o?gc.TemplateUpdateStart:gc.TemplateCreateStart,i,n),n(r,i)}finally{as(a),kc(o?gc.TemplateUpdateEnd:gc.TemplateCreateEnd,i,n)}}function Ef(e,t,n){Nf(e,t,n),(n.flags&64)==64&&Pf(e,t,n)}function Df(e,t,n=ro){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a{_o(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function ip(e){let t=e[24]??Object.create(ap);return t.lView=e,t}var ap={...mn,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=bo(e.lView);for(;t&&!op(t[1]);)t=bo(t);t&&po(t)},consumerOnSignalRead(){this.lView[24]=this}};function op(e){return e.type!==2}function sp(e){if(e[23]===null)return;let t=!0;for(;t;){let n=!1;for(let t of e[23])if(t.dirty&&(n=!0,t.zone===null||Zone.current===t.zone?t.run():t.zone.run(()=>t.run()),e[23]===null))return;t=n&&!!(e[2]&8192)}}var cp=100;function lp(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{up(e,t)}finally{n.end?.()}}function up(e,t){let n=Ho();try{Uo(!0),gp(e,t);let n=0;for(;ho(e);){if(n===cp)throw new ri(103,!1);n++,gp(e,1)}}finally{Uo(n)}}function dp(e,t,n,r){if(Qa(t))return;let i=t[2];Zo(t);let a=!0,o=null,s=null;op(e)?(s=ep(t),o=Sn(s)):pn()===null?(a=!1,s=ip(t),o=Sn(s)):t[24]&&=(Dn(t[24]),null);try{fo(t),iee(e.bindingStartIndex),n!==null&&Tf(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Mc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&Nc(t,n,0,null),Pc(t,0)}if(pp(t),sp(t),fp(t,0),e.contentQueries!==null&&Ql(e,t),a){let n=e.contentCheckHooks;n!==null&&Mc(t,n)}else{let n=e.contentHooks;n!==null&&Nc(t,n,1),Pc(t,1)}vp(e,t);let o=e.components;o!==null&&_p(t,o,0);let s=e.viewQuery;if(s!==null&&$l(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Mc(t,n)}else{let n=e.viewHooks;n!==null&&Nc(t,n,2),Pc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}Qf(t),t[2]&=-73}catch(e){throw _o(t),e}finally{s!==null&&(wn(s,o),a&&np(s)),ns()}}function fp(e,t){for(let n=zl(e);n!==null;n=Bl(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=na(e,10+t);Hd(r[1],r);let o=a[18];o!==null&&o.detachView(a[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Tp(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(wp(e,n),na(t,n))}this._attachedToViewContainer=!1}qd(this._lView[1],this._lView)}onDestroy(e){vo(this._lView,e)}markForCheck(){yp(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){go(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,lp(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new ri(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=Za(this._lView),t=this._lView[16];t!==null&&!e&&Kd(t,this._lView),Wd(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new ri(902,!1);this._appRef=e;let t=Za(this._lView),n=this._lView[16];n!==null&&!t&&Ep(n,this._lView),go(this._lView)}},Op=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=kp;constructor(e,t,n){this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){return new Dp(Jf(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function kp(){return Ap(Fo(),No())}function Ap(e,t){return e.type&4?new Op(t,e,Tl(e,t)):null}function jp(e,t,n,r,i){let a=e.data[t];if(a===null)a=Mp(e,t,n,r,i),aee()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Lo();a.injectorIndex=e===null?-1:e.injectorIndex}return Ro(a,!0),a}function Mp(e,t,n,r,i){let a=Io(),o=zo(),s=o?a:a&&a.parent,c=e.data[t]=Pp(e,s,n,t,r,i);return Np(e,c,a,o),c}function Np(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function Pp(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return Ao()&&(s|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:o,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,namespace:ls(),attrs:a,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Fp(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?Ip(e,n):r.push(e);e[6]=r}function Ip(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,Rp=()=>null;function zp(e,t){return Lp(e,t)}function Bp(e,t,n){return Rp(e,t,n)}var Vp=class{},Hp=class{},Up=(()=>{class e{static ɵprov=pi({token:e,providedIn:`root`,factory:()=>null})}return e})();function Wp(e){return e.debugInfo?.className||e.type.name||null}var Gp={},Kp=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,Gp,n);return r!==Gp||t===Gp?r:this.parentInjector.get(e,t,n)}};function qp(e,t,n){return e[t]=n}function Jp(e,t){return e[t]}function Yp(e,t,n){if(n===Wu)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function Xp(e,t,n,r){let i=Yp(e,t,n);return Yp(e,t+1,r)||i}function Zp(e,t,n,r,i){let a=Xp(e,t,n,r);return Yp(e,t+2,i)||a}function Qp(e,t,n,r,i,a){let o=Xp(e,t,n,r);return Xp(e,t+2,i,a)||o}function $p(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&Jl(i,a),yp(Ja(e)?so(e.index,t):t,5);let o=t[8],s=em(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=em(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function em(e,t,n,r){let i=fn(null);try{return kc(gc.OutputStart,t,n),n(r)!==!1}catch(t){return Hf(e,t),!1}finally{kc(gc.OutputEnd,t,n),fn(i)}}function tm(e,t,n,r,i,a,o,s){let c=Ya(e),l=!1,u=null;if(!r&&c&&(u=rm(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=ro(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);nm(a)||im(r?t=>r(to(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function nm(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function rm(e,t,n,r){let i=e.cleanup;if(i!=null)for(let e=0;er?n[r]:null}typeof a==`string`&&(e+=2)}return null}function im(e,t,n,r,i,a,o){let s=t.firstCreatePass?So(t):null,c=xo(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function am(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);im(e.index,s,t,i,a,c,!0)}var om=Symbol(`BINDING`),sm=new bi(``);function cm(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,a=0;if(t!==null)for(let e=0;e0&&(n.directiveToIndex=new Map);for(let c=0;c0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function Sm(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,i]=e[t],a={propName:n,templateName:t,isSignal:(r&Cf.SignalBased)!==0};return i&&(a.transform=i),a})}function Am(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function jm(e,t,n){let r=t instanceof Aa?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new Kp(n,r):n}function Mm(e){let t=e.get(Hp,null);if(t===null)throw new ri(407,!1);return{rendererFactory:t,sanitizer:e.get(Up,null),changeDetectionScheduler:e.get(Qs,null),ngReflect:!1,tracingService:e.get(_d,null,{optional:!0})}}function Nm(e,t,n){let r=Fm(e);return hu(t,r,r===`svg`?`svg`:r===`math`?eo:n)}function Pm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new ri(905,!1)}function Fm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var Im=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=km(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Am(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=Hu(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){kc(gc.DynamicComponentStart);let s=fn(null);try{let s=this.componentDef,c=jm(s,r||this.ngModule,e),l=Mm(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(Wp(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{fn(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=Lm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?Of(l,r,s.encapsulation,t):Nm(s,l,o??null);Pm(u);let d=t.get(sm,null),f=Rm(u,()=>t.get(gs,null)??Wl());d&&d.addHost(f);let p=a?.some(Bm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(Bm)),m=_f(null,c,null,512|yf(s),null,null,e,l,t,null,Zl(u,t,!0));d&&Dm&&f instanceof ShadowRoot&&vo(m,()=>{d.removeHost(f)}),m[27]=u,Zo(m);let h=null;try{let e=wm(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);Su(l,u,e),Rl(u,m),Ef(c,m,e),eu(c,e,m),Tm(c,e),n!==void 0&&Hm(e,this.ngContentSelectors,n),h=so(e.index,m),m[8]=h[8],Kf(c,m,null)}catch(e){throw h!==null&&Il(h),Il(m),e}finally{kc(gc.DynamicComponentEnd),ns()}return new Vm(this.componentType,m,!!p)}};function Lm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:Uu(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[om].requiredVars,e.create&&(e.targetIdx=0,(a??=[]).push(e)),e.update&&(e.targetIdx=0,(o??=[]).push(e));if(r)for(let e=0;e{if(n&1&&e)for(let t of e)t.create();if(n&2&&t)for(let e of t)e.update()}}function Bm(e){let t=e[om].kind;return t===`input`||t===`twoWay`}var Vm=class extends Vp{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=io(t[1],27),this.location=Tl(this._tNode,t),this.instance=so(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new Dp(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView;Uf(n,r[1],r,e,t),this.previousInputValues.set(e,t),yp(so(n.index,r),1)}get injector(){return new yl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function Hm(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=Wm}return e})();function Wm(){return Jm(Fo(),No())}var Gm=class e extends Um{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return Tl(this._hostTNode,this._hostLView)}get injector(){return new yl(this._hostTNode,this._hostLView)}get parentInjector(){let e=sl(this._hostTNode,this._hostLView);if(qc(e)){let t=Xc(e,this._hostLView),n=Jc(e),r=t[1].data[n+8];return new yl(r,t)}return new yl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=Km(this._lContainer);return t!==null&&t[e]||null}get length(){return this._lContainer.length-10}createEmbeddedView(e,t,n){let r,i;typeof n==`number`?r=n:n!=null&&(r=n.index,i=n.injector);let a=zp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,Yf(this._hostTNode,a)),o}createComponent(e,t,n,r,i,a,o){let s,c=t||{};s=c.index,n=c.injector,r=c.projectableNodes,i=c.environmentInjector||c.ngModuleRef,a=c.directives,o=c.bindings;let l=new Im(Ti(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(Aa,null);e&&(i=e)}let d=Ti(l.componentType??{}),f=zp(this._lContainer,d?.id??null),p=f?.firstChild??null,m=l.create(u,r,p,i,a,o,this._getHostElementNamespace());return this.insertImpl(m.hostView,s,Yf(this._hostTNode,f)),m}_getHostElementNamespace(){if(this._hostTNode.type&2){let e=this._hostTNode.parent??this._hostLView[5];return e!==null&&e.type&2&&typeof e.value==`string`&&e.value.toLowerCase()===`foreignobject`?null:e?.namespace??null}return this._hostTNode.namespace}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(t,n,r){let i=t._lView;if(lo(i)){let n=this.indexOf(t);if(n!==-1)this.detach(n);else{let n=i[3],r=new e(n,n[5],n[3]);r.detach(r.indexOf(t))}}let a=this._adjustIndex(n),o=this._lContainer;return Sp(o,i,a,r),t.attachToViewContainerRef(),ta(qm(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=Km(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=wp(this._lContainer,t);n&&(na(qm(this._lContainer),t),qd(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=wp(this._lContainer,t);return n&&na(qm(this._lContainer),t)!=null?new Dp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function Km(e){return e[8]}function qm(e){return e[8]||=[]}function Jm(e,t){let n,r=t[e.index];return Ka(r)?n=r:(n=bp(r,t,null,e),t[e.index]=n,xf(t,n)),Xm(n,t,e,r),new Gm(n,e,t)}function Ym(e,t){let n=e[11],r=n.createComment(``),i=ro(t,e);return gu(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var Xm=$m,Zm=()=>!1;function Qm(e,t,n){return Zm(e,t,n)}function $m(e,t,n,r){if(e[7])return;let i;i=n.type&8?to(r):Ym(t,n),e[7]=i}var eh=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},th=class e{queries;constructor(e=[]){this.queries=e}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries===null?n.length:t.contentQueries[0],i=[];for(let e=0;e0)r.push(o[e/2]);else{let i=a[e+1],o=t[-n];for(let e=10;ee.trim())}function hh(e,t,n){e.queries===null&&(e.queries=new rh),e.queries.track(new ih(t,n))}function gh(e,t){return e.queries.getByIndex(t)}function _h(e,t){let n=e[1],r=gh(n,t);return r.crossesNgTemplate?uh(n,e,t,[]):lh(n,e,r,t)}function vh(e,t,n){let r,i=Nn(()=>{r._dirtyCounter();let n=Sh(r,e);if(t&&n===void 0)throw new ri(-951,!1);return n});return r=i[dn],r._dirtyCounter=D(0),r._flatValue=void 0,i}function yh(e){return vh(!0,!1,e)}function bh(e){return vh(!0,!0,e)}function xh(e,t){let n=e[dn];n._lView=No(),n._queryIndex=t,n._queryList=dh(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function Sh(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:ua;let i=dh(n,r),a=_h(n,r);return i.reset(a,Dl),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function Ch(e){return!!e&&typeof e.then==`function`}function wh(e){return!!e&&typeof e.subscribe==`function`}var Th=class{},Eh=class extends Th{injector;instance=null;constructor(e){super();let t=new ja([...e.providers,{provide:Th,useValue:this}],e.parent||ka(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Dh(e,t,n=null){return new Eh({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var Oh=(()=>{class e{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let t=ga(!1,e.type),n=t.length>0?Dh([t],this._injector,``):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=pi({token:e,providedIn:`environment`,factory:()=>new e(Ki(Aa))})}return e})();function k(e){return hc(()=>{let t=Ph(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==jl.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(Oh).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||tu.Emulated,styles:e.styles||ua,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&yd(`NgStandalone`),Fh(n);let r=e.dependencies;return n.directiveDefs=Ih(r,kh),n.pipeDefs=Ih(r,Di),n.id=Lh(n),n})}function kh(e){return Ti(e)||Ei(e)}function Ah(e,t){if(e==null)return la;let n={};for(let r in e)if(Object.hasOwn(e,r)){let i=e[r],a,o,s,c;Array.isArray(i)?(s=i[0],a=i[1],o=i[2]??a,c=i[3]||null):(a=i,o=i,s=Cf.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function jh(e){if(e==null)return la;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function Mh(e){return hc(()=>{let t=Ph(e);return Fh(t),t})}function Nh(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function Ph(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||la,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||ua,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Ah(e.inputs,t),outputs:jh(e.outputs),debugInfo:null}}function Fh(e){e.features?.forEach(t=>t(e))}function Ih(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let e of n){let n=t(e);n!==null&&r.push(n)}return r}:null}function Lh(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let e of r.join(`|`))t=Math.imul(31,t)+e.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var Rh=new bi(``),zh=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=C(Rh,{optional:!0})??[];injector=C(hs);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=Ha(this.injector,t);if(Ch(n))e.push(n);else if(wh(n)){let t=new Promise((e,t)=>{n.subscribe({complete:e,error:t})});e.push(t)}}let t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(e=>{this.reject(e)}),e.length===0&&t(),this.initialized=!0}static ɵfac=function(t){return new(t||e)};static ɵprov=Cl({token:e,factory:e.ɵfac})}return e})();function Bh(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=Gc(e.mergedAttrs,e.attrs);let t=e.tView=mf(2,e,i,a,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),t.queries=n.queries.embeddedTView(e))}s&&(e.flags|=s),Ro(e,!1);let c=Wh(n,t,e,r);ds()&&nf(n,t,c,e),Rl(c,t);let l=bp(c,t,c,e);t[r+27]=l,xf(t,l),Qm(l,e,t)}function Vh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=jp(t,d,4,o||null,s||null),ko()&&um(t,e,f,uo(t.consts,l),If),jc(t,f)):f=t.data[d],Bh(f,e,t,n,r,i,a,c),Ya(f)&&Ef(t,e,f),l!=null&&Df(e,f,u),f}function Hh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=jp(t,d,4,o||null,s||null),l!=null){let e=uo(t.consts,l);f.localNames=[];for(let t=0;t{throw new ri(600,``)})}var Yh=10,Xh=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=C(Hs);afterRenderManager=C(bd);zonelessEnabled=C($s);rootEffectScheduler=C(tc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Qr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=C(xs);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(ti(e=>!e))}constructor(){C(_d,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=C(Aa);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=hs.NULL){return this._injector.get(ks).run(()=>{if(kc(gc.BootstrapComponentStart),!this._injector.get(zh).done)throw new ri(405,``);let r=Ti(e),i=this._injector.get(Th),a=new Im(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=Zh(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(Kh,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),Qh(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),kc(gc.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){kc(gc.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(gd.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw kc(gc.ChangeDetectionEnd),new ri(101,!1);let e=fn(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,fn(e),this.afterTick.next(),kc(gc.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Hp,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++ho(e))){this.dirtyFlags|=2;return}this.dirtyFlags&=-8}attachView(e){let t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){let t=e;Qh(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(e){this.internalErrorHandler(e)}this.components.push(e),this._injector.get(qh,[]).forEach(t=>t(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>Qh(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new ri(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static ɵfac=function(t){return new(t||e)};static ɵprov=Cl({token:e,factory:e.ɵfac})}return e})();function Zh(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function Qh(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function A(e,t,n,r){let i=No();return Yp(i,Ko(),t)&&(Po(),Lf(os(),i,e,t,n,r)),A}function $h(e){if(yd(`NgAnimateEnter`),!nd)return $h;let t=No();if(_ee(t))return $h;let n=Fo(),r=t[9].get(ks);return hd(dd(t),n,()=>eg(t,n,e,r)),Md(t[9]),Nd(t[9],dd(t)),$h}function eg(e,t,n,r){let i=ro(t,e),a=e[11],o=fd(n),s=[],c=!1,l=e=>{if(pd(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{pd(e)===i&&(md(e,i)&&(c=!0),tg(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),vee(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(pee(i,ad,nd),!ad.has(i))){for(let e of o)a.removeClass(i,e);rd(i)}})})}}function tg(e,t,n){let r=id.get(t);if(pd(e)===t&&r&&md(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);rd(t)}}var ng=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let e=this.detach(n);this.attach(n,i),this.attach(r,e)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function rg(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function ig(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){fn(r);let c=t.length-1;for(fn(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=rg(o,r,o,l,n);if(u!==0){u<0&&e.updateValue(o,l),o++;continue}let d=e.at(s),f=t[c],p=rg(s,d,c,f,n);if(p!==0){p<0&&e.updateValue(s,f),s--,c--;continue}let m=n(o,r),h=n(s,d),g=n(o,l);if(Object.is(g,h)){let t=n(c,f);Object.is(t,m)?(e.swap(o,s),e.updateValue(s,f),c--,s--):e.move(s,o),e.updateValue(o,l),o++;continue}if(i??=new cg,a??=sg(e,o,s,n),ag(e,i,o,g))e.updateValue(o,l),o++,s++;else if(a.has(g))i.set(m,e.detach(o)),s--;else{let n=e.create(o,t[o]);e.attach(o,n),o++,s++}}for(;o<=c;)og(e,i,n,o,t[o]),o++}else if(t!=null){fn(r);let c=t[Symbol.iterator]();fn(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=rg(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new cg,a??=sg(e,o,s,n);let u=n(o,r);if(ag(e,i,o,u))e.updateValue(o,r),o++,s++,l=c.next();else if(!a.has(u))e.attach(o,e.create(o,r)),o++,s++,l=c.next();else{let r=n(o,t);i.set(r,e.detach(o)),s--}}}for(;!l.done;)og(e,i,n,e.length,l.value),l=c.next()}for(;o<=s;)e.destroy(e.detach(s--));i?.forEach(t=>{e.destroy(t)})}function ag(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function og(e,t,n,r,i){if(ag(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function sg(e,t,n,r){let i=new Set;for(let a=t;a<=n;a++)i.add(r(a,e.at(a)));return i}var cg=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function j(e,t,n,r,i,a,o,s){yd(`NgControlFlow`);let c=No(),l=Po();return Hh(c,l,e,t,n,r,i,uo(l.consts,a),256,o,s),lg}function lg(e,t,n,r,i,a,o,s){yd(`NgControlFlow`);let c=No(),l=Po();return Hh(c,l,e,t,n,r,i,uo(l.consts,a),512,o,s),lg}function M(e,t){yd(`NgControlFlow`);let n=No(),r=Ko(),i=n[r]===Wu?-1:n[r],a=i===-1?void 0:hg(n,27+i);if(Yp(n,r,e)){let r=fn(null);try{if(a!==void 0&&Cp(a,0),e!==-1){let r=27+e,i=hg(n,r),a=bg(n[1],r),o=Bp(i,a,n);Sp(i,Jf(n,a,t,{dehydratedView:o}),0,Yf(a,o))}}finally{fn(r)}}else if(a!==void 0){let e=xp(a,0);e!==void 0&&(e[8]=t)}}var ug=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-10}};function dg(e){return e}function fg(e,t){return t}var pg=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function N(e,t,n,r,i,a,o,s,c,l,u,d,f){yd(`NgControlFlow`);let p=No(),m=Po(),h=c!==void 0,g=No(),_=new pg(h,s?o.bind(g[15][8]):o);g[27+e]=_,Hh(p,m,e+1,t,n,r,i,uo(m.consts,a),256),h&&Hh(p,m,e+2,c,l,u,d,uo(m.consts,f),512)}var mg=class extends ng{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-10}at(e){return this.getLView(e)[8].$implicit}attach(e,t){let n=t[6];this.needsIndexUpdate||=e!==this.length,Sp(this.lContainer,t,e,Yf(this.templateTNode,n)),gg(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,_g(this.lContainer,e),vg(this.lContainer,e)}create(e,t){let n=zp(this.lContainer,this.templateTNode.tView.ssrId);return Jf(this.hostLView,this.templateTNode,new ug(this.lContainer,t,e),{dehydratedView:n})}destroy(e){qd(e[1],e)}updateValue(e,t){this.getLView(e)[8].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let e=n[9];Ad(e,r),td.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function _g(e,t){if(e.length<=10)return;let n=e[10+t],r=n?n[26]:void 0;r&&r.leave&&r.leave.size>0&&(r.detachedLeaveAnimationFns=[])}function vg(e,t){return wp(e,t)}function yg(e,t){return xp(e,t)}function bg(e,t){return io(e,t)}function F(e,t,n){let r=No();return Yp(r,Ko(),t)&&(Po(),Af(os(),r,e,t,r[11],n)),F}function xg(e,t,n,r,i){Uf(t,e,n,i?`class`:`style`,r)}function I(e,t,n,r){let i=No(),a=i[1],o=e+27,s=a.firstCreatePass?wm(o,i,2,t,If,ko(),n,r):a.data[o];if(Ja(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(Wp(o),()=>(Sg(e,t,i,s,r),I))}}return Sg(e,t,i,s,r),I}function Sg(e,t,n,r,i){if(Bf(r,n,e,t,wg),Ya(r)){let e=n[1];Ef(e,n,r),eu(e,r,n)}i!=null&&Df(n,r)}function L(){let e=Po(),t=Vf(Fo());return e.firstCreatePass&&Tm(e,t),jo(t)&&Mo(),Oo(),t.classesWithoutHost!=null&&Bc(t)&&xg(e,t,No(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&Vc(t)&&xg(e,t,No(),t.stylesWithoutHost,!1),L}function R(e,t,n,r){return I(e,t,n,r),L(),R}function z(e,t,n,r){let i=No(),a=i[1],o=e+27,s=a.firstCreatePass?Em(o,a,2,t,n,r):a.data[o];return Bf(s,i,e,t,wg),r!=null&&Df(i,s),z}function B(){return jo(Vf(Fo()))&&Mo(),Oo(),B}function Cg(e,t,n,r){return z(e,t,n,r),B(),Cg}var wg=(e,t,n,r,i)=>(fs(!0),hu(t[11],r,ls()));function Tg(e,t,n){let r=No(),i=r[1],a=e+27,o=i.firstCreatePass?wm(a,r,8,`ng-container`,If,ko(),t,n):i.data[a];if(Bf(o,r,e,`ng-container`,Og),Ya(o)){let e=r[1];Ef(e,r,o),eu(e,o,r)}return n!=null&&Df(r,o),Tg}function Eg(){let e=Po(),t=Vf(Fo());return e.firstCreatePass&&Tm(e,t),Eg}function Dg(e,t,n){return Tg(e,t,n),Eg(),Dg}var Og=(e,t,n,r,i)=>(fs(!0),mu(t[11],``));function V(){return No()}function kg(e,t,n){let r=No();return Yp(r,Ko(),t)&&(Po(),jf(os(),r,e,t,r[11],n)),kg}var Ag=void 0;function jg(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var Mg=[`en`,[[`a`,`p`],[`AM`,`PM`]],[[`AM`,`PM`]],[[`S`,`M`,`T`,`W`,`T`,`F`,`S`],[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`]],Ag,[[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]],Ag,[[`B`,`A`],[`BC`,`AD`],[`Before Christ`,`Anno Domini`]],0,[6,0],[`M/d/yy`,`MMM d, y`,`MMMM d, y`,`EEEE, MMMM d, y`],[`h:mm a`,`h:mm:ss a`,`h:mm:ss a z`,`h:mm:ss a zzzz`],[`{1}, {0}`,Ag,Ag,Ag],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,jg],Ng=Object.create(null);function Pg(e){let t=Lg(e),n=Fg(t);if(n)return n;let r=t.split(`-`)[0];if(n=Fg(r),n)return n;if(r===`en`)return Mg;throw new ri(701,!1)}function Fg(e){if(!(e in Ng)){let t=Vi.ng&&Vi.ng.common&&Vi.ng.common.locales&&Vi.ng.common.locales[e];return t!==void 0&&(Ng[e]=t),t}return Ng[e]}var Ig={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencyCode:15,CurrencySymbol:16,CurrencyName:17,Currencies:18,Directionality:19,PluralCase:20,ExtraData:21};function Lg(e){return e.toLowerCase().replace(/_/g,`-`)}var Rg=`en-US`;function zg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function H(e,t,n){let r=No(),i=Po(),a=Fo();return Bg(i,r,r[11],a,e,t,n),H}function U(e,t,n){let r=No(),i=Po(),a=Fo();return(a.type&3||n)&&tm(a,i,r,n,r[11],e,t,$p(a,r,t)),U}function Bg(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=$p(r,t,a),tm(r,e,t,o,n,i,a,c)&&(s=!1)),s){let e=r.outputs?.[i],n=r.hostDirectiveOutputs?.[i];if(n&&n.length)for(let e=0;e>17&32767}function Xg(e){return(e&2)==2}function Zg(e,t){return e&131071|t<<17}function Qg(e){return e|2}function $g(e){return(e&131068)>>2}function e_(e,t){return e&-131069|t<<2}function t_(e){return(e&1)==1}function n_(e){return e|1}function r_(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=Yg(o),c=$g(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||sa(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=Yg(e[s+1]);e[r+1]=Jg(t,s),t!==0&&(e[t+1]=e_(e[t+1],r)),e[s+1]=Zg(e[s+1],r)}else e[r+1]=Jg(s,0),s!==0&&(e[s+1]=e_(e[s+1],r)),s=r}else e[r+1]=Jg(c,0),s===0?s=r:e[c+1]=e_(e[c+1],r),c=r;l&&(e[r+1]=Qg(e[r+1])),a_(e,u,r,!0),a_(e,u,r,!1),i_(t,u,e,r,a),o=Jg(s,c),a?t.classBindings=o:t.styleBindings=o}function i_(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&sa(a,t)>=0&&(n[r+1]=n_(n[r+1]))}function a_(e,t,n,r){let i=e[n+1],a=t===null,o=r?Yg(i):$g(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];o_(n,t)&&(s=!0,e[o+1]=r?n_(i):Qg(i)),o=r?Yg(i):$g(i)}s&&(e[n+1]=r?Qg(i):n_(i))}function o_(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?sa(e,t)>=0:!1}var s_={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function c_(e){return e.substring(s_.key,s_.keyEnd)}function l_(e){return d_(e),u_(e,f_(e,0,s_.textEnd))}function u_(e,t){let n=s_.textEnd;return n===t?-1:(t=s_.keyEnd=p_(e,s_.key=t,n),f_(e,t,n))}function d_(e){s_.key=0,s_.keyEnd=0,s_.value=0,s_.valueEnd=0,s_.textEnd=e.length}function f_(e,t,n){for(;t32;)t++;return t}function G(e,t,n){return g_(e,t,n,!1),G}function K(e,t){return g_(e,t,null,!0),K}function m_(e){__(D_,h_,e,!0)}function h_(e,t){for(let n=l_(t);n>=0;n=u_(t,n))aa(e,c_(t),!0)}function g_(e,t,n,r){let i=No(),a=Po(),o=qo(2);if(a.firstUpdatePass&&y_(a,e,o,r),t!==Wu&&Yp(i,o,t)){let s=a.data[is()];k_(a,s,i,i[11],e,i[o+1]=M_(t,n),r,o)}}function __(e,t,n,r){let i=Po(),a=qo(2);i.firstUpdatePass&&y_(i,null,a,r);let o=No();if(n!==Wu&&Yp(o,a,n)){let s=i.data[is()];if(N_(s,r)&&!v_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=ci(e,n||``)),xg(i,s,o,n,r)}else O_(i,s,o,o[11],o[a+1],o[a+1]=E_(e,t,n),r,a)}}function v_(e,t){return t>=e.expandoStartIndex}function y_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[is()],o=v_(e,n);N_(a,r)&&t===null&&!o&&(t=!1),t=b_(i,a,t,r),r_(i,a,t,n,o,r)}}function b_(e,t,n,r){let i=cee(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=w_(null,e,t,n,r),n=T_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=w_(i,e,t,n,r),a===null){let n=x_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=w_(null,e,t,n[1],r),n=T_(n,t.attrs,r),S_(e,t,r,n))}else a=C_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function x_(e,t,n){let r=n?t.classBindings:t.styleBindings;if($g(r)!==0)return e[Yg(r)]}function S_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[Yg(i)]=r}function C_(e,t,n){let r,i=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0;){let t=e[i],a=Array.isArray(t),c=a?t[1]:t,l=c===null,u=n[i+1];u===Wu&&(u=l?ua:void 0);let d=l?oa(u,r):c===r?u:void 0;if(a&&!j_(d)&&(d=oa(t,r)),j_(d)&&(s=d,o))return s;let f=e[i+1];i=o?Yg(f):$g(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=oa(e,r))}return s}function j_(e){return e!==void 0}function M_(e,t){return e==null||e===``||(typeof t==`string`?e=ru(e)+t:typeof e==`object`&&(e=si(ru(e)))),e}function N_(e,t){return!!(e.flags&(t?8:16))}function q(e,t=``){let n=No(),r=Po(),i=e+27,a=r.firstCreatePass?jp(r,i,1,t,null):r.data[i],o=P_(r,n,a,t);n[i]=o,ds()&&nf(r,n,o,a),Ro(a,!1)}var P_=(e,t,n,r)=>(fs(!0),fu(t[11],r));function F_(e,t,n,r=``){return Yp(e,Ko(),n)?t+ki(n)+r:Wu}function I_(e,t,n,r,i,a=``){let o=Xp(e,Go(),n,i);return qo(2),o?t+ki(n)+r+ki(i)+a:Wu}function L_(e,t,n,r,i,a,o,s=``){let c=Zp(e,Go(),n,i,o);return qo(3),c?t+ki(n)+r+ki(i)+a+ki(o)+s:Wu}function R_(e,t,n,r,i,a,o,s,c,l=``){let u=Qp(e,Go(),n,i,o,c);return qo(4),u?t+ki(n)+r+ki(i)+a+ki(o)+s+ki(c)+l:Wu}function J(e){return Y(``,e),J}function Y(e,t,n){let r=No(),i=F_(r,e,t,n);return i!==Wu&&V_(r,is(),i),Y}function X(e,t,n,r,i){let a=No(),o=I_(a,e,t,n,r,i);return o!==Wu&&V_(a,is(),o),X}function z_(e,t,n,r,i,a,o){let s=No(),c=L_(s,e,t,n,r,i,a,o);return c!==Wu&&V_(s,is(),c),z_}function B_(e,t,n,r,i,a,o,s,c){let l=No(),u=R_(l,e,t,n,r,i,a,o,s,c);return u!==Wu&&V_(l,is(),u),B_}function V_(e,t,n){let r=no(t,e);pu(e[11],r,n)}function H_(e,t,n){fc(t)&&(t=t());let r=No();return Yp(r,Ko(),t)&&(Po(),Af(os(),r,e,t,r[11],n)),H_}function U_(e,t){let n=fc(e);return n&&e.set(t),n}function W_(e,t){let n=No(),r=Po(),i=Fo();return Bg(r,n,n[11],i,e,t),W_}var G_={};function K_(e){yd(`NgLet`);let t=Po(),n=No(),r=e+27;return Ro(jp(t,r,128,null,null),!1),oo(t,n,r,G_),K_}function q_(e){return oo(Po(),No(),is(),e),e}function J_(e){let t=ao(Vo(),27+e);if(t===G_)throw new ri(314,!1);return t}function Y_(e,t,n=``){return F_(No(),e,t,n)}function X_(e,t){let n=Wo()+e,r=No();return r[n]===Wu?qp(r,n,t()):Jp(r,n)}function Z_(e,t,n){return tv(No(),Wo(),e,t,n)}function Q_(e,t,n,r){return nv(No(),Wo(),e,t,n,r)}function $_(e,t,n,r,i){return rv(No(),Wo(),e,t,n,r,i)}function ev(e,t){let n=e[t];return n===Wu?void 0:n}function tv(e,t,n,r,i,a){let o=t+n;return Yp(e,o,i)?qp(e,o+1,a?r.call(a,i):r(i)):ev(e,o+1)}function nv(e,t,n,r,i,a,o){let s=t+n;return Xp(e,s,i,a)?qp(e,s+2,o?r.call(o,i,a):r(i,a)):ev(e,s+2)}function rv(e,t,n,r,i,a,o,s){let c=t+n;return Zp(e,c,i,a,o)?qp(e,c+3,s?r.call(s,i,a,o):r(i,a,o)):ev(e,c+3)}function iv(e,t){let n=Po(),r,i=e+27;n.firstCreatePass?(r=av(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??=[]).push(i,r.onDestroy)):r=n.data[i];let a=r.factory||(r.factory=Zi(r.type,!0)),o=zi(lm);try{let e=Qc(!1),t=a();return Qc(e),oo(n,No(),i,t),t}finally{zi(o)}}function av(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function ov(e,t,n){let r=e+27,i=No(),a=ao(i,r);return cv(i,r)?tv(i,Wo(),t,a.transform,n,a):a.transform(n)}function sv(e,t,n,r){let i=e+27,a=No(),o=ao(a,i);return cv(a,i)?nv(a,Wo(),t,o.transform,n,r,o):o.transform(n,r)}function cv(e,t){return e[1].data[t].pure}function lv(e,t){return Ap(e,t)}var uv=(()=>{class e{applicationErrorHandler=C(Hs);appRef=C(Xh);taskService=C(xs);ngZone=C(ks);zonelessEnabled=C($s);tracing=C(_d,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new gr;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Ds):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(C(ec,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let e=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(e);return}this.switchToMicrotaskScheduler(),this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&e===5)return;switch(e){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let t=this.useMicrotaskScheduler?Ts:ws;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>t(()=>this.tick())):this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(`isAngularZone_ID`+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(e){this.applicationErrorHandler(e)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static ɵfac=function(t){return new(t||e)};static ɵprov=Cl({token:e,factory:e.ɵfac})}return e})();function dv(){return[{provide:Qs,useExisting:uv},{provide:ks,useClass:Ls},{provide:$s,useValue:!0}]}function yee(){return typeof $localize<`u`&&$localize.locale||`en-US`}var fv=new bi(``,{factory:()=>C(fv,{optional:!0,skipSelf:!0})||yee()}),pv=class{destroyed=!1;listeners=null;errorHandler=C(Vs,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=C(_s);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new ri(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{let t=this.listeners?this.listeners.indexOf(e):-1;t>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[t]=null):this.listeners.splice(t,1))}}}emit(e){if(this.destroyed){console.warn(ai(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=fn(null);try{for(let t of this.listeners)try{t!==null&&t(e)}catch(e){this.errorHandler?.handleError(e)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&bee(this.listeners)),fn(t),this.isEmitting=!1}}};function bee(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function Z(e,t){return Nn(e,t?.equal)}function mv(e){return or(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var xee=e=>e;function Q(e,t){return typeof e==`function`?hv(nr(e,xee,t?.equal),t?.debugName,t?.set):hv(nr(e.source,e.computation,e.equal),e.debugName,e.set)}function hv(e,t,n){let r=e[dn],i=e;if(n!==void 0){let t=e=>rr(r,e);i.set=e=>n(e,t),i.update=r=>n(r(mv(e)),t)}else i.set=e=>rr(r,e),i.update=e=>ir(r,e);return i.asReadonly=Ws.bind(e),i}function gv(e,t){let n=Object.create(mc);n.value=e,n.transformFn=t?.transform;function r(){if(hn(n),n.value===pc)throw new ri(-950,null);return n.value}return r[dn]=n,r}function _v(e){return new pv}function vv(e,t){return gv(e,t)}function See(e){return gv(pc,e)}var $=(vv.required=See,vv);function yv(e,t){let n=Object.create(mc),r=new pv;n.value=e;function i(){return hn(n),bv(n.value),n.value}return i[dn]=n,i.asReadonly=Ws.bind(i),i.set=e=>{n.equal(n.value,e)||(Gn(n,e),r.emit(e))},i.update=e=>{bv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function bv(e){if(e===pc)throw new ri(952,!1)}function xv(e,t){return yv(e,t)}function Cee(e){return yv(pc,e)}var Sv=(xv.required=Cee,xv);function Cv(e,t){return yh(t)}function wee(e,t){return bh(t)}var wv=(Cv.required=wee,Cv),Tv=new bi(``),Tee=new bi(``);function Ev(e){return!e.moduleRef}function Eee(e){let t=Ev(e)?e.r3Injector:e.moduleRef.injector,n=t.get(ks);return n.run(()=>{Ev(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Hs),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),Ev(e)){let n=()=>t.destroy(),r=e.platformInjector.get(Tv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(Tv);n.add(t),e.moduleRef.onDestroy(()=>{Qh(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return Oee(r,n,()=>{let n=t.get(xs),r=n.add(),i=t.get(zh);return i.runInitializers(),i.donePromise.then(()=>{if(zg(t.get(fv,Rg)||`en-US`),!t.get(Tee,!0))return Ev(e)?t.get(Xh):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Ev(e)){let n=t.get(Xh);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return Dee?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var Dee;function Oee(e,t,n){try{let r=n();return Ch(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var Dv=null;function Ov(e=[],t){return hs.create({name:t,providers:[{provide:Ta,useValue:`platform`},{provide:Tv,useValue:new Set([()=>Dv=null])},...e]})}function kv(e=[]){if(Dv)return Dv;let t=Ov(e);return Dv=t,Jh(),Av(t),t}function Av(e){let t=e.get(qs,null);Ha(e,()=>{t?.forEach(e=>e())})}function jv(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;kc(gc.BootstrapApplicationStart);try{let e=i?.injector??kv(r);return Eee({r3Injector:new Eh({providers:[dv(),Us,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{kc(gc.BootstrapApplicationEnd)}}function Mv(e){return typeof e==`boolean`?e:e!=null&&e!==`false`}var Nv=Symbol(`NOT_SET`),Pv=new Set,Fv={...qn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:Nv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(hn(r),r.value),r.signal[dn]=r,r.registerCleanupFn=e=>(r.cleanup??=new Set).add(e),this.nodes[e]=r,this.hooks[e]=e=>r.phaseFn(e)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();super.destroy();for(let e of this.nodes)if(e)try{for(let t of e.cleanup??Pv)t()}finally{Dn(e)}}};function Lv(e,t){let n=t?.injector??C(hs),r=n.get(Qs),i=n.get(bd),a=n.get(_d,null,{optional:!0});i.impl??=n.get(Sd);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(Xs,null,{optional:!0}),c=new Iv(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var Rv=null;function zv(){return Rv}function Bv(e){Rv??=e}var Vv=class{},Hv=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(Hv||{}),Uv=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(Uv||{}),Wv=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(Wv||{}),Gv={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Kv(e){return Pg(e)[Ig.LocaleId]}function qv(e,t,n){let r=Pg(e);return iy(iy([r[Ig.DayPeriodsFormat],r[Ig.DayPeriodsStandalone]],t),n)}function Jv(e,t,n){let r=Pg(e);return iy(iy([r[Ig.DaysFormat],r[Ig.DaysStandalone]],t),n)}function Yv(e,t,n){let r=Pg(e);return iy(iy([r[Ig.MonthsFormat],r[Ig.MonthsStandalone]],t),n)}function Xv(e,t){let n=Pg(e)[Ig.Eras];return iy(n,t)}function Zv(e,t){return iy(Pg(e)[Ig.DateFormat],t)}function Qv(e,t){return iy(Pg(e)[Ig.TimeFormat],t)}function $v(e,t){let n=Pg(e)[Ig.DateTimeFormat];return iy(n,t)}function ey(e,t){let n=Pg(e),r=n[Ig.NumberSymbols][t];if(r===void 0){if(t===Gv.CurrencyDecimal)return n[Ig.NumberSymbols][Gv.Decimal];if(t===Gv.CurrencyGroup)return n[Ig.NumberSymbols][Gv.Group]}return r}function ty(e){if(!e[Ig.ExtraData])throw new ri(2303,!1)}function ny(e){let t=Pg(e);return ty(t),(t[Ig.ExtraData][2]||[]).map(e=>typeof e==`string`?ay(e):[ay(e[0]),ay(e[1])])}function ry(e,t,n){let r=Pg(e);return ty(r),iy(iy([r[Ig.ExtraData][0],r[Ig.ExtraData][1]],t)||[],n)||[]}function iy(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new ri(2304,!1)}function ay(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var oy=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,sy=Object.create(null),cy=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,ly=256;function uy(e,t,n,r){let i=Ny(e);dy(t),t=py(n,t)||t;let a=[],o;for(;t;)if(o=cy.exec(t),o){a=a.concat(o.slice(1));let e=a.pop();if(!e)break;t=e}else{a.push(t);break}let s=i.getTimezoneOffset();r&&(s=Ay(r,s),i=My(i,r));let c=``;return a.forEach(e=>{let t=ky(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function dy(e){if(e.length>ly)throw new ri(2300,!1)}function fy(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function py(e,t){let n=Kv(e);if(sy[n]??=Object.create(null),sy[n][t])return sy[n][t];let r=``;switch(t){case`shortDate`:r=Zv(e,Wv.Short);break;case`mediumDate`:r=Zv(e,Wv.Medium);break;case`longDate`:r=Zv(e,Wv.Long);break;case`fullDate`:r=Zv(e,Wv.Full);break;case`shortTime`:r=Qv(e,Wv.Short);break;case`mediumTime`:r=Qv(e,Wv.Medium);break;case`longTime`:r=Qv(e,Wv.Long);break;case`fullTime`:r=Qv(e,Wv.Full);break;case`short`:let t=py(e,`shortTime`),n=py(e,`shortDate`);r=my($v(e,Wv.Short),[t,n]);break;case`medium`:let i=py(e,`mediumTime`),a=py(e,`mediumDate`);r=my($v(e,Wv.Medium),[i,a]);break;case`long`:let o=py(e,`longTime`),s=py(e,`longDate`);r=my($v(e,Wv.Long),[o,s]);break;case`full`:let c=py(e,`fullTime`),l=py(e,`fullDate`);r=my($v(e,Wv.Full),[c,l])}return r&&(sy[n][t]=r),r}function my(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function hy(e,t,n=`-`,r,i){let a=``;(e<0||i&&e<=0)&&(i?e=-e+1:(e=-e,a=n));let o=String(e);for(;o.length0||s>-n)&&(s+=n),e===3)s===0&&n===-12&&(s=12);else if(e===6)return gy(s,t);let c=ey(o,Gv.MinusSign);return hy(s,t,c,r,i)}}function vy(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new ri(2301,!1)}}function yy(e,t,n=Hv.Format,r=!1){return function(i,a){return by(i,a,e,t,n,r)}}function by(e,t,n,r,i,a){switch(n){case 2:return Yv(t,i,r)[e.getMonth()];case 1:return Jv(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=ny(t),a=ry(t,i,r),s=e.findIndex(e=>{if(Array.isArray(e)){let[t,r]=e,i=n>=t.hours&&o>=t.minutes,a=n0?Math.floor(i/60):Math.ceil(i/60);switch(e){case 0:return(i>=0?`+`:``)+hy(o,2,a)+hy(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+hy(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+hy(o,2,a)+`:`+hy(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+hy(o,2,a)+`:`+hy(Math.abs(i%60),2,a);default:throw new ri(2310,!1)}}}var Sy=0,Cy=4;function wy(e){let t=fy(e,Sy,1).getDay();return fy(e,0,1+(t<=Cy?Cy:11)-t)}function Ty(e){let t=e.getDay(),n=t===0?-3:Cy-t;return fy(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Ey(e,t=!1){return function(n,r){let i;if(t){let e=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,t=n.getDate();i=1+Math.floor((t+e)/7)}else{let e=Ty(n),t=wy(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return hy(i,e,ey(r,Gv.MinusSign))}}function Dy(e,t=!1){return function(n,r){return hy(Ty(n).getFullYear(),e,ey(r,Gv.MinusSign),t)}}var Oy=Object.create(null);function ky(e){if(Oy[e])return Oy[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=yy(3,Uv.Abbreviated);break;case`GGGG`:t=yy(3,Uv.Wide);break;case`GGGGG`:t=yy(3,Uv.Narrow);break;case`y`:t=_y(0,1,0,!1,!0);break;case`yy`:t=_y(0,2,0,!0,!0);break;case`yyy`:t=_y(0,3,0,!1,!0);break;case`yyyy`:t=_y(0,4,0,!1,!0);break;case`Y`:t=Dy(1);break;case`YY`:t=Dy(2,!0);break;case`YYY`:t=Dy(3);break;case`YYYY`:t=Dy(4);break;case`M`:case`L`:t=_y(1,1,1);break;case`MM`:case`LL`:t=_y(1,2,1);break;case`MMM`:t=yy(2,Uv.Abbreviated);break;case`MMMM`:t=yy(2,Uv.Wide);break;case`MMMMM`:t=yy(2,Uv.Narrow);break;case`LLL`:t=yy(2,Uv.Abbreviated,Hv.Standalone);break;case`LLLL`:t=yy(2,Uv.Wide,Hv.Standalone);break;case`LLLLL`:t=yy(2,Uv.Narrow,Hv.Standalone);break;case`w`:t=Ey(1);break;case`ww`:t=Ey(2);break;case`W`:t=Ey(1,!0);break;case`d`:t=_y(2,1);break;case`dd`:t=_y(2,2);break;case`c`:case`cc`:t=_y(7,1);break;case`ccc`:t=yy(1,Uv.Abbreviated,Hv.Standalone);break;case`cccc`:t=yy(1,Uv.Wide,Hv.Standalone);break;case`ccccc`:t=yy(1,Uv.Narrow,Hv.Standalone);break;case`cccccc`:t=yy(1,Uv.Short,Hv.Standalone);break;case`E`:case`EE`:case`EEE`:t=yy(1,Uv.Abbreviated);break;case`EEEE`:t=yy(1,Uv.Wide);break;case`EEEEE`:t=yy(1,Uv.Narrow);break;case`EEEEEE`:t=yy(1,Uv.Short);break;case`a`:case`aa`:case`aaa`:t=yy(0,Uv.Abbreviated);break;case`aaaa`:t=yy(0,Uv.Wide);break;case`aaaaa`:t=yy(0,Uv.Narrow);break;case`b`:case`bb`:case`bbb`:t=yy(0,Uv.Abbreviated,Hv.Standalone,!0);break;case`bbbb`:t=yy(0,Uv.Wide,Hv.Standalone,!0);break;case`bbbbb`:t=yy(0,Uv.Narrow,Hv.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=yy(0,Uv.Abbreviated,Hv.Format,!0);break;case`BBBB`:t=yy(0,Uv.Wide,Hv.Format,!0);break;case`BBBBB`:t=yy(0,Uv.Narrow,Hv.Format,!0);break;case`h`:t=_y(3,1,-12);break;case`hh`:t=_y(3,2,-12);break;case`H`:t=_y(3,1);break;case`HH`:t=_y(3,2);break;case`m`:t=_y(4,1);break;case`mm`:t=_y(4,2);break;case`s`:t=_y(5,1);break;case`ss`:t=_y(5,2);break;case`S`:t=_y(6,1);break;case`SS`:t=_y(6,2);break;case`SSS`:t=_y(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=xy(0);break;case`ZZZZZ`:t=xy(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=xy(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=xy(2);break;default:return null}return Oy[e]=t,t}function Ay(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function jy(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function My(e,t,n){let r=e.getTimezoneOffset();return jy(e,-1*(Ay(t,r)-r))}function Ny(e){if(Fy(e))return e;if(typeof e==`number`&&!isNaN(e))return new Date(e);if(typeof e==`string`){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[t,n=1,r=1]=e.split(`-`).map(e=>+e);return fy(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(oy))return Py(n)}let t=new Date(e);if(!Fy(t))throw new ri(2311,!1);return t}function Py(e){let t=new Date(0),n=0,r=0,i=e[8]?t.setUTCFullYear:t.setFullYear,a=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),i.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let o=Number(e[4]||0)-n,s=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(`0.`+(e[7]||0))*1e3);return a.call(t,o,s,c,l),t}function Fy(e){return e instanceof Date&&!isNaN(e.valueOf())}var Iy=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=C(hs);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let e=this._viewContainerRef;if(this._viewRef&&e.remove(e.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let t=this._createContextForwardProxy();this._viewRef=e.createEmbeddedView(this.ngTemplateOutlet,t,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector===`outlet`?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,n):!1,get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static ɵfac=function(t){return new(t||e)(lm(Um))};static ɵdir=Mh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[bc]})}return e})();function Ly(e,t){return new ri(2100,!1)}var Ry=`mediumDate`,zy=new bi(``),By=new bi(``),Vy=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(t,n,r,i){if(t==null||t===``||t!==t)return null;try{let e=n??this.defaultOptions?.dateFormat??Ry,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return uy(t,e,i||this.locale,a)}catch(t){throw Ly(e,t.message)}}static ɵfac=function(t){return new(t||e)(lm(fv,16),lm(zy,24),lm(By,24))};static ɵpipe=Nh({name:`date`,type:e,pure:!0})}return e})(),Hy=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=Nh({name:`json`,type:e,pure:!1})}return e})();function Uy(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let e=n.indexOf(`=`),[r,i]=e==-1?[n,``]:[n.slice(0,e),n.slice(e+1)];if(r.trim()!==t)continue;let a=i;try{a=decodeURIComponent(i)}catch{}return a.length>1&&a[0]===`"`&&a[a.length-1]===`"`&&(a=a.slice(1,-1)),a}return null}var Wy=`browser`,Gy=class{_doc;constructor(e){this._doc=e}manager},Ky=(()=>{class e extends Gy{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n,r){return e.addEventListener(t,n,r),()=>this.removeEventListener(e,t,n,r)}removeEventListener(e,t,n,r){return e.removeEventListener(t,n,r)}static ɵfac=function(t){return new(t||e)(Ki(gs))};static ɵprov=pi({token:e,factory:e.ɵfac})}return e})(),qy=new bi(``),Jy=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,t){this._zone=t,e.forEach(e=>{e.manager=this});let n=e.filter(e=>!(e instanceof Ky));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof Ky);r&&this._plugins.push(r)}addEventListener(e,t,n,r){return this._findPluginFor(t).addEventListener(e,t,n,r)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(t=>t.supports(e)),!t)throw new ri(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(Ki(qy),Ki(ks))};static ɵprov=pi({token:e,factory:e.ɵfac})}return e})(),Yy=`ng-app-id`;function Xy(e){for(let t of e)t.remove()}function Zy(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function Qy(e,t,n,r){let i=e.head?.querySelectorAll(`style[${Yy}="${t}"],link[${Yy}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(Yy),e instanceof HTMLLinkElement?r.set(e.href.slice(e.href.lastIndexOf(`/`)+1),{usage:0,elements:[e]}):e.textContent&&n.set(e.textContent,{usage:0,elements:[e]});return!0}function $y(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var eb=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,Qy(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,Zy);t?.forEach(e=>this.addUsage(e,this.external,$y))}removeStyles(e,t){for(let t of e)this.removeUsage(t,this.inline);t?.forEach(e=>this.removeUsage(e,this.external))}addUsage(e,t,n){let r=t.get(e);r?r.usage++:t.set(e,{usage:1,elements:[...this.hosts].map(t=>this.addElement(t,n(e,this.doc)))})}removeUsage(e,t){let n=t.get(e);n&&(n.usage--,n.usage<=0&&(Xy(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])Xy(e);this.hosts.clear()}addHost(e){if(!this.hosts.has(e)){this.hosts.add(e);for(let[t,{elements:n}]of this.inline)n.push(this.addElement(e,Zy(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,$y(t,this.doc)))}}removeHost(e){this.hosts.delete(e);for(let t of[...this.inline.values(),...this.external.values()]){let n=[];for(let r of t.elements)r.parentNode===e?r.remove():n.push(r);t.elements=n}}addElement(e,t){return this.nonce&&t.setAttribute(`nonce`,this.nonce),e.appendChild(t)}static ɵfac=function(t){return new(t||e)(Ki(gs),Ki(Gs),Ki(Ys,8),Ki(Js))};static ɵprov=pi({token:e,factory:e.ɵfac})}return e})(),tb={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`,math:`http://www.w3.org/1998/Math/MathML`},nb=/%COMP%/g,rb=`%COMP%`,ib=`_nghost-${rb}`,ab=`_ngcontent-${rb}`,ob=!0,sb=new bi(``,{factory:()=>ob}),cb=new bi(``);function lb(e){return ab.replace(nb,e)}function ub(e){return ib.replace(nb,e)}function db(e,t){return t.map(t=>t.replace(nb,e))}var fb=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(e,t,n,r,i,a,o=null,s=null,c=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=i,this.ngZone=a,this.nonce=o,this.tracingService=s,this.cssVarNamespace=c??``,this.defaultRenderer=new pb(e,i,a,this.tracingService,this.cssVarNamespace)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;let n=this.getOrCreateRenderer(e,t);return n instanceof _b?n.applyToHost(e):n instanceof gb&&n.applyStyles(),n}getOrCreateRenderer(e,t){let n=this.rendererByCompId,r=n.get(t.id);if(!r){let i=this.doc,a=this.ngZone,o=this.eventManager,s=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,l=this.tracingService;switch(t.encapsulation){case tu.Emulated:r=new _b(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case tu.ShadowDom:return new hb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case tu.ExperimentalIsolatedShadowDom:return new hb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new gb(o,s,t,c,i,a,l,this.cssVarNamespace)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static ɵfac=function(t){return new(t||e)(Ki(Jy),Ki(sm),Ki(Gs),Ki(sb),Ki(gs),Ki(ks),Ki(Ys),Ki(_d,8),Ki(cb,8))};static ɵprov=pi({token:e,factory:e.ɵfac})}return e})(),pb=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r,i=``){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS(tb[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(mb(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=mb(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new ri(-5106,!1);r.insertBefore(t,n)}}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e==`string`?this.doc.querySelector(e):e;if(!n)throw new ri(-5104,!1);return t||(n.textContent=``),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+`:`+t;let i=tb[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=tb[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){let i=t.startsWith(`--`);i&&(t=t.replace(`%NS%`,this.cssVarNamespace)),i||r&(Gu.DashCase|Gu.Important)?e.style.setProperty(t,n,r&Gu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&Gu.DashCase?e.style.removeProperty(t):e.style[t]=``}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e==`string`&&(e=zv().getGlobalEventTarget(this.doc,e),!e))throw new ri(-5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t===`__ngUnwrap__`)return e;e(t)===!1&&t.preventDefault()}}};function mb(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var hb=class extends pb{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,a,o,s,c){super(e,r,i,o,s),this.hostEl=t,this.sharedStylesHost=c,this.shadowRoot=t.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let l=n.styles;l=db(n.id,l).map(e=>e.replace(/%NS%/g,s));for(let e of l){let t=document.createElement(`style`);a&&t.setAttribute(`nonce`,a),t.textContent=e,this.shadowRoot.appendChild(t)}let u=n.getExternalStyles?.();if(u)for(let e of u){let t=$y(e,r);a&&t.setAttribute(`nonce`,a),this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},gb=class extends pb{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,a,o,s,c){super(e,i,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let l=n.styles,u=c?db(c,l):l;this.styles=u.map(e=>e.replace(/%NS%/g,s)),this.styleUrls=n.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&td.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},_b=class extends gb{contentAttr;hostAttr;constructor(e,t,n,r,i,a,o,s,c){let l=r+`-`+n.id;super(e,t,n,i,a,o,s,c,l),this.contentAttr=lb(l),this.hostAttr=ub(l)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,``)}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,``),n}},vb=class e extends Vv{supportsDOMEvents=!0;static makeCurrent(){Bv(new e)}onAndCancel(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return t||=this.getDefaultDocument(),t.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,t){return t===`window`?window:t===`document`?e:t===`body`?e.body:null}getBaseHref(e){let t=bb();return t==null?null:xb(t)}resetBaseElement(){yb=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return Uy(document.cookie,e)}},yb=null;function bb(){return yb||=document.head.querySelector(`base`),yb?yb.getAttribute(`href`):null}function xb(e){return new URL(e,document.baseURI).pathname}var Sb=[`alt`,`control`,`meta`,`shift`],Cb={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},wb={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},Tb=(()=>{class e extends Gy{constructor(e){super(e)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,n,r,i){let a=e.parseEventName(n),o=e.eventCallback(a.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>zv().onAndCancel(t,a.domEventName,o,i))}static parseEventName(t){let n=t.toLowerCase().split(`.`),r=n.shift();if(n.length===0||r!==`keydown`&&r!==`keyup`)return null;let i=e._normalizeKey(n.pop()),a=``,o=n.indexOf(`code`);if(o>-1&&(n.splice(o,1),a=`code.`),Sb.forEach(e=>{let t=n.indexOf(e);t>-1&&(n.splice(t,1),a+=e+`.`)}),a+=i,n.length!=0||i.length===0)return null;let s={};return s.domEventName=r,s.fullKey=a,s}static matchEventFullKeyCode(e,t){let n=Cb[e.key]||e.key,r=``;return t.indexOf(`code.`)>-1&&(n=e.code,r=`code.`),n==null||!n?!1:(n=n.toLowerCase(),n===` `?n=`space`:n===`.`&&(n=`dot`),Sb.forEach(t=>{if(t!==n){let n=wb[t];n(e)&&(r+=t+`.`)}}),r+=n,r===t)}static eventCallback(t,n,r){return i=>{e.matchEventFullKeyCode(i,t)&&r.runGuarded(()=>n(i))}}static _normalizeKey(e){return e===`esc`?`escape`:e}static ɵfac=function(t){return new(t||e)(Ki(gs))};static ɵprov=pi({token:e,factory:e.ɵfac})}return e})();async function Eb(e,t,n){return jv({rootComponent:e,...Db(t,n)})}function Db(e,t){return{platformRef:t?.platformRef,appProviders:[...Mb,...e?.providers??[]],platformProviders:jb}}function Ob(){vb.makeCurrent()}function kb(){return new Vs}function Ab(){return Ul(document),document}var jb=[{provide:Js,useValue:Wy},{provide:qs,useValue:Ob,multi:!0},{provide:gs,useFactory:Ab}],Mb=[{provide:Ta,useValue:`root`},{provide:Vs,useFactory:kb},{provide:qy,useClass:Ky,multi:!0},{provide:qy,useClass:Tb,multi:!0},fb,{provide:sm,useClass:eb},{provide:eb,useExisting:sm},Jy,{provide:Hp,useExisting:fb},[]];function Nb(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e{let r=new Lb({code:i,why:Fb(a.why,e),fix:Fb(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:Fb(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function Bb(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n{e=n,t=r}),resolve:e,reject:t}}var Kb=Math.random.bind(Math),qb=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Jb(e=21){let t=``,n=e;for(;n--;)t+=qb[Kb()*64|0];return t}var Yb=6e4,Xb=e=>e,Zb=Xb,{clearTimeout:Qb,setTimeout:$b}=globalThis;function ex(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=Xb,deserialize:s=Zb,resolver:c,bind:l=`rpc`,timeout:u=Yb,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=Gb(),_=Jb();s.i=_;let ee;async function te(n=s){return u>=0&&(ee=$b(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof ee==`object`&&(ee=ee.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:ee,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,te,d):await te()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{Qb(ee),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:te,get $closed(){return f},get $meta(){return t.meta},$close:ee,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function ee(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(ne)}function te(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function ne(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(Qb(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(ne),h}function tx(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var nx=Object.freeze({type:`object`,additionalProperties:!0});function rx(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return nx}return nx}function ix(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;rn[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function ox(e,t){return ax(e,t)??[e]}function sx(e){return typeof e==`string`?`'${e}'`:new dx().serialize(e)}var cx=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,lx=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[cx.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function ux(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;ia?-1:1)}return e.length===t.length?r:e.lengththis.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),fx=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],px=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],mx=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,hx=[],gx=class{_data=new _x;_hash=new _x([...fx]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)hx[n]=e[t+n]|0;else{let e=hx[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=hx[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;hx[n]=t+hx[n-7]+i+hx[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+px[n]+hx[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=_x.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function vx(e){return new gx().finalize(e).toBase64()}function yx(e){return vx(sx(e))}function bx(e){return yx(e)}function xx(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var Sx=/^[\w+.-]{2,}:\/\//;function Cx(e){return e.endsWith(`/`)?e:`${e}/`}function wx(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function Tx(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?Cx(n)+e.replace(/^\.?\//,``):e);return n}function Ex(e,t){if(!t||t===`/`||Sx.test(e))return e;let n=wx(t);return e.startsWith(n)?e:Tx(n,e)}function Dx(e,t){let n=e.match(Sx);return t+(n?e.slice(n[0].length):e)}var Ox=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function kx(e=21){let t=``,n=e;for(;n--;)t+=Ox[Math.random()*64|0];return t}var Ax=Symbol.for(`immer-nothing`),jx=Symbol.for(`immer-draftable`),Mx=Symbol.for(`immer-state`),Nx=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function Px(e,...t){{let n=Nx[e],r=iS(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var Fx=Object,Ix=Fx.getPrototypeOf,Lx=`constructor`,Rx=`prototype`,zx=`configurable`,Bx=`enumerable`,Vx=`writable`,Hx=`value`,Ux=e=>!!e&&!!e[Mx];function Wx(e){return e?qx(e)||eS(e)||!!e[jx]||!!e[Lx]?.[jx]||tS(e)||nS(e):!1}var Gx=Fx[Rx][Lx].toString(),Kx=new WeakMap;function qx(e){if(!e||!rS(e))return!1;let t=Ix(e);if(t===null||t===Fx[Rx])return!0;let n=Fx.hasOwnProperty.call(t,Lx)&&t[Lx];if(n===Object)return!0;if(!iS(n))return!1;let r=Kx.get(n);return r===void 0&&(r=Function.toString.call(n),Kx.set(n,r)),r===Gx}function Jx(e,t,n=!0){Yx(e)===0?(n?Reflect.ownKeys(e):Fx.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function Yx(e){let t=e[Mx];return t?t.type_:eS(e)?1:tS(e)?2:nS(e)?3:0}var Xx=(e,t,n=Yx(e))=>n===2?e.has(t):Fx[Rx].hasOwnProperty.call(e,t),Zx=(e,t,n=Yx(e))=>n===2?e.get(t):e[t],Qx=(e,t,n,r=Yx(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function $x(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var eS=Array.isArray,tS=e=>e instanceof Map,nS=e=>e instanceof Set,rS=e=>typeof e==`object`,iS=e=>typeof e==`function`,aS=e=>typeof e==`boolean`;function oS(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var sS=e=>rS(e)?e?.[Mx]:null,cS=e=>e.copy_||e.base_,lS=e=>e.modified_?e.copy_:e.base_;function uS(e,t){if(tS(e))return new Map(e);if(nS(e))return new Set(e);if(eS(e))return Array[Rx].slice.call(e);let n=qx(e);if(t===!0||t===`class_only`&&!n){let t=Fx.getOwnPropertyDescriptors(e);delete t[Mx];let n=Reflect.ownKeys(t);for(let r=0;r1&&Fx.defineProperties(e,{set:pS,add:pS,clear:pS,delete:pS}),Fx.freeze(e),t&&Jx(e,(e,t)=>{dS(t,!0)},!1),e)}function fS(){Px(2)}var pS={[Hx]:fS};function mS(e){return e===null||!rS(e)||Fx.isFrozen(e)}var hS=`MapSet`,gS=`Patches`,_S=`ArrayMethods`,vS={};function yS(e){let t=vS[e];return t||Px(0,e),t}var bS=e=>!!vS[e];function xS(e,t){vS[e]||(vS[e]=t)}var SS,CS=()=>SS,wS=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:bS(hS)?yS(hS):void 0,arrayMethodsPlugin_:bS(_S)?yS(_S):void 0});function TS(e,t){t&&(e.patchPlugin_=yS(gS),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function ES(e){DS(e),e.drafts_.forEach(kS),e.drafts_=null}function DS(e){e===SS&&(SS=e.parent_)}var OS=e=>SS=wS(SS,e);function kS(e){let t=e[Mx];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function AS(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[Mx].modified_&&(ES(t),Px(4)),Wx(e)&&(e=jS(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[Mx].base_,e,t)}else e=jS(t,n);return MS(t,e,!0),ES(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===Ax?void 0:e}function jS(e,t){if(mS(t))return t;let n=t[Mx];if(!n)return BS(t,e.handledSet_,e);if(!PS(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);RS(n,e)}return n.copy_}function MS(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&dS(t,n)}function NS(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var PS=(e,t)=>e.scope_===t,FS=[];function IS(e,t,n,r){let i=cS(e),a=e.type_;if(r!==void 0&&Zx(i,r,a)===t){Qx(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Jx(i,(e,n)=>{if(Ux(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??FS;for(let e of o)Qx(i,e,n,a)}function LS(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!PS(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=lS(i);IS(e,i.draft_??i,a,n),RS(i,r)})}function RS(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}NS(e)}}function zS(e,t,n){let{scope_:r}=e;if(Ux(n)){let i=n[Mx];PS(i,r)&&i.callbacks_.push(function(){YS(e),IS(e,n,lS(i),t)})}else Wx(n)&&e.callbacks_.push(function(){let i=cS(e);e.type_===3?i.has(n)&&BS(n,r.handledSet_,r):Zx(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&BS(Zx(e.copy_,t,e.type_),r.handledSet_,r)})}function BS(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||Ux(e)||t.has(e)||!Wx(e)||mS(e)?e:(t.add(e),Jx(e,(r,i)=>{if(Ux(i)){let t=i[Mx];PS(t,n)&&(Qx(e,r,lS(t),e.type_),NS(t))}else Wx(i)&&BS(i,t,n)}),e)}function VS(e,t){let n=eS(e),r={type_:+!!n,scope_:t?t.scope_:CS(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=HS;n&&(i=[r],a=US);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var HS={get(e,t){if(t===Mx)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=cS(e);if(!Xx(i,t,e.type_))return KS(e,i,t);let a=i[t];if(e.finalized_||!Wx(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&oS(t))return a;if(a===WS(e.base_,t)||GS(e,t,a)){YS(e);let n=e.type_===1?+t:t,r=ZS(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in cS(e)},ownKeys(e){return Reflect.ownKeys(cS(e))},set(e,t,n){let r=qS(cS(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=WS(cS(e),t),i=r?.[Mx];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.delete(t),!0;if($x(n,r)&&(n!==void 0||Xx(e.base_,t,e.type_)))return!0;YS(e),JS(e)}return e.copy_[t]===n&&(n!==void 0||Xx(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),zS(e,t,n),!0)},deleteProperty(e,t){return YS(e),WS(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),JS(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=cS(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Vx]:!0,[zx]:e.type_!==1||t!==`length`,[Bx]:r[Bx],[Hx]:n[t]}},defineProperty(){Px(11)},getPrototypeOf(e){return Ix(e.base_)},setPrototypeOf(){Px(12)}},US={};for(let e in HS){let t=HS[e];US[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}US.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Px(13),US.set.call(this,e,t,void 0)},US.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&Px(14),HS.set.call(this,e[0],t,n,e[0])};function WS(e,t){let n=e[Mx];return(n?cS(n):e)[t]}function GS(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Wx(n)||n[Mx]?!1:e.baseRefs_.has(n)}function KS(e,t,n){let r=qS(t,n);return r?Hx in r?r[Hx]:r.get?.call(e.draft_):void 0}function qS(e,t){if(!(t in e))return;let n=Ix(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Ix(n)}}function JS(e){e.modified_||(e.modified_=!0,e.parent_&&JS(e.parent_))}function YS(e){e.copy_||=(e.assigned_=new Map,uS(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var XS=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(iS(e)&&!iS(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}iS(t)||Px(6),n!==void 0&&!iS(n)&&Px(7);let r;if(Wx(e)){let i=OS(this),a=ZS(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?ES(i):DS(i)}return TS(i,n),AS(r,i)}if(!e||!rS(e)){if(r=t(e),r===void 0&&(r=e),r===Ax&&(r=void 0),this.autoFreeze_&&dS(r,!0),n){let t=[],i=[];yS(gS).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}Px(1,e)},this.produceWithPatches=(e,t)=>{if(iS(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},aS(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),aS(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),aS(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Wx(e)||Px(8),Ux(e)&&(e=QS(e));let t=OS(this),n=ZS(t,e,void 0);return n[Mx].isManual_=!0,DS(t),n}finishDraft(e,t){let n=e&&e[Mx];(!n||!n.isManual_)&&Px(9);let{scope_:r}=n;return TS(r,t),AS(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=yS(gS).applyPatches_;return Ux(e)?r(e,t):this.produce(e,e=>r(e,t))}};function ZS(e,t,n,r){let[i,a]=tS(t)?yS(hS).proxyMap_(t,n):nS(t)?yS(hS).proxySet_(t,n):VS(t,n);return(n?.scope_??CS()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?LS(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function QS(e){return Ux(e)||Px(10,e),$S(e)}function $S(e){if(!Wx(e)||mS(e))return e;let t=e[Mx],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=uS(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=uS(e,!0);return Jx(n,(e,t)=>{Qx(n,e,$S(t))},r),t&&(t.finalized_=!1),n}function eC(){Nx.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=sS(Zx(e,n.key_)),i=Zx(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||Xx(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e{let u=Zx(o,e,c),f=Zx(s,e,c),p=l?Xx(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===Ax?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e[e,u(t)]));if(nS(e))return new Set(Array.from(e).map(u));let t=Object.create(Ix(e));for(let n in e)t[n]=u(e[n]);return Xx(e,jx)&&(t[jx]=e[jx]),t}function d(e){return Ux(e)?u(e):e}xS(gS,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var tC=new XS,nC=tC.produce,rC=tC.produceWithPatches.bind(tC),iC=tC.applyPatches.bind(tC),aC=1e3;function oC(e,t){if(e.add(t),e.size>aC){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function sC(e){let{enablePatches:t=!1}=e;t&&eC();let n=xx(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=kx())=>{i.has(t)||(eC(),r=iC(r,e),oC(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=kx())=>{if(!i.has(a)){if(oC(i,a),t){let[t,i]=rC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=nC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var cC=typeof self==`object`?self:globalThis,lC=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),uC=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function dC(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=lC.has(e)?cC[e]:void 0;return n(new(r??cC.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&uC.has(a))return n(new cC[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function fC(e){return dC(new Map,e)(0)}var pC=``,{toString:mC}={},{keys:hC}=Object;function gC(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=mC.call(e).slice(8,-1);switch(n){case`Array`:return[1,pC];case`Object`:return[2,pC];case`Date`:return[3,pC];case`RegExp`:return[4,pC];case`Map`:return[5,pC];case`Set`:return[6,pC];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function _C([e,t]){return e===0&&(t===`function`||t===`symbol`)}function vC(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=gC(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of hC(r))(e||!_C(gC(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(_C(gC(n))||_C(gC(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!_C(gC(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function yC(e,t={}){let n=[];return vC(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:bC,stringify:xC}=JSON,SC={json:!0,lossy:!0};function CC(e){return fC(bC(e))}function wC(e){return xC(yC(e,SC))}function TC(e){return fC(e)}function EC(e){return wC(e)}function DC(e){return CC(e)}var OC=256,kC=class extends Error{name=`StreamClosedError`};function AC(e={}){let t=e.id??kx(),n=Math.max(0,e.replayWindow??0),r=xx(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new kC(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=MC(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function jC(e={}){let t=e.id??kx(),n=Math.max(1,e.highWaterMark??OC),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function MC(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var NC=128;function PC(e){return e.replace(/[^\w-]+/g,`_`).slice(0,NC)}var FC=`modulepreload`,IC=function(e,t){return new URL(e,t).href},LC={},RC=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=IC(t,n),t=s(t),t in LC)return;LC[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:FC,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},zC=`__connection.json`,BC=`__DEVFRAME_CONNECTION__`,VC=`x-birpc-session`,HC=`__rpc-dump/index.json`,UC=`devframe:services`,WC=`devframe_otp`,GC=`devframe_auth_token`;Vb.postMessage.remoteAssetsError;var KC=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>bx(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},qC=Wb({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function JC(e){if(e.agent&&e.jsonSerializable===!1)throw qC.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function YC(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function XC(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function ZC(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function ew(e,t){let n=e.handler;if(!n){let r=await $C(e,t);if(!r.handler)throw qC.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await ZC(e.name,r,t),o=await a(...n);return await QC(e.name,i,o)}}var tw=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return ew(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw qC.DF0021({name:e.name});JC(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw qC.DF0022({name:e.name});JC(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await ew(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw qC.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function nw(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw iw(t,`undefined`,r,e);return n}return i!==null&&rw(i,r,e,t),n})}function rw(e,t,n,r){if(typeof e==`bigint`)throw iw(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw iw(r,`Map`,t,n);if(e instanceof Set)throw iw(r,`Set`,t,n);if(e instanceof Date)throw iw(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw iw(r,e.constructor?.name??`class instance`,t,n)}function iw(e,t,n,r){let i=aw(n,r);return qC.DF0020({name:e||``,type:t,path:i})}function aw(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var ow=`__DEVFRAME_CONNECTION_META__`,sw=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function cw(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function lw(){return cw(BC)}function uw(){return cw(ow)}function dw(e){if(e)return e;try{let e=localStorage.getItem(sw);if(e)return e}catch{}return cw(sw)}function fw(e){globalThis[BC]=e,globalThis[ow]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&pw(e.authToken)}function pw(e){try{localStorage.setItem(sw,e)}catch{}globalThis[sw]=e;let t=lw();t&&(globalThis[BC]={...t,authToken:e})}function mw(e){let t=Ex(zC,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function hw(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function gw(){let e=lw();if(e)return hw(e,dw()??e.authToken??e.connectionMeta.authToken);let t=uw();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??mw(`./`),authToken:dw(t.authToken)}}async function _w(e={}){if(e.connection){let t=hw(e.connection,dw(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return fw(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:mw(t[0]??`./`),authToken:dw(e.authToken??e.connectionMeta.authToken)};return fw(n),n}let n=gw();if(n){let t=hw(n,dw(e.authToken??n.authToken??n.connectionMeta.authToken));return fw(t),t}let r=[];for(let n of t){let t=Ex(zC,n),i=mw(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:dw(e.authToken??r.authToken)};return fw(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var vw=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function yw(e=WC){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function bw(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function xw(e=WC){let t=yw(e);return t&&bw(e),t}async function Sw(e,t={}){let n=xw(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Cw(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(UC,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function ww(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:Vb.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:Vb.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=sC({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise((t,n)=>{if(e.isTrusted)d().then(t,n);else{t(u);let n=!1;e.events.on(Vb.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var Tw=new Map;function Ew(e=Tw){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?nw(n,r??``):`s:${EC(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?DC(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Dw(){}function Ow(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function kw(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function Aw(e){let{onConnected:t=Dw,onError:n=Dw,onDisconnected:r=Dw,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${GC}=${encodeURIComponent(e.authToken)}`);let s=Ew(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function ee(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Ow(r);if(!e)break;r=e.rest;let{event:t,data:n}=kw(e.frame);n.length>0&&_(t,n.join(` -`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[VC]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function jw(e,t){let{channel:n,rpcOptions:r={}}=t;return ex(e,{...n,timeout:-1,...r,proxify:!1})}function Mw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(Vb.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new vw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new vw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(Vb.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new vw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(Vb.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(Vb.client.connectionError,e),m(new vw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new vw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),te=jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:Vb.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new vw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(Vb.client.connectionError,e),m(e),i.emit(Vb.client.isTrustedUpdated,!1)}});let ne=n;async function re(e){ne=e;let t=await te.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new vw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(Vb.client.connectionError,e)}return i.emit(Vb.client.isTrustedUpdated,c),t.isTrusted}async function ie(e){let t=(await te.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(ne=t,c=!0,d.resolve(!0),f(`connected`),i.emit(Vb.client.isTrustedUpdated,!0)),t}async function ae(e={}){await te.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function oe(){return c?!0:re(ne??``)}async function se(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:oe,requestTrustWithToken:re,requestTrustWithCode:ie,requestAuthCode:ae,ensureTrusted:se,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Vb.client.error,n,t),Promise.reject(n)):g(te.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(Vb.client.error,t,String(e[0]));return}return te.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Vb.client.error,n,t),Promise.reject(n)):g(te.$callOptional(...e),t)},close:()=>{ee.close()}}}function Nw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Pw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Nw(n.sse,r??`./`,location);return Mw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Aw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Fw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Iw(r)?Fw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Iw(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function Lw(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function Rw(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function zw(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function Bw(e){if(e.error)throw Fw(e.error);return e.output}function Vw(e){return e.some(e=>e!=null)}function Hw(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function Uw(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?TC(e):e}function a(e,t){return i(Hw(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return zw(r)?Bw(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(Lw(r)){if(Vw(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(Rw(r)){let e=bx(n),i=r.records[e];if(i)return Bw(await s(i,r.serialization));if(r.fallback)return Bw(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!Vw(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Ww(e){let t=Uw(await e.fetchJsonFromBases(HC),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var Gw=``;function Kw(e,t){return`${e}${Gw}${t}`}function qw(e){let t=new Map,n=new Map;e.client.register({name:Vb.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Kw(e,n))?._push(r,i)}}),e.client.register({name:Vb.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Kw(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:Vb.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=Kw(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(Vb.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(Gw);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=Kw(n,r),o=t.get(a);if(o)return o;let s=jC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(Vb.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=Kw(t,r),a=n.get(i);if(a)return a;let o=AC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function Jw(){}var Yw=new Map;function Xw(e){let t=e.url;e.authToken&&(t=`${t}?${GC}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Jw,onError:i=Jw,onDisconnected:a=Jw,definitions:o=Yw}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Ew(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function Zw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Dx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function Qw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Zw(n.websocket,r??`./`,location);return Mw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Xw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function $w(e){return e.includes(`:`)}function eT(e,t){return $w(t)?t:`${e}:${t}`}function tT(e){return{async get(t){return(await e()).value()?.[t]},async set(t,n){(await e()).mutate(e=>{if(e===void 0)return{[t]:n};e[t]=n})},async delete(t){(await e()).mutate(e=>{e!==void 0&&delete e[t]})},async all(){return(await e()).value()??{}},async onChange(t){return(await e()).on(`updated`,e=>t(e??{}))}}}function nT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=(async()=>(await e.ensureTrusted(),e.sharedState.get(r)))().catch(e=>{throw i=void 0,e}),i}return tT(a)}function rT(e,t){return{global:nT(e,t,`global`),project:nT(e,t,`project`)}}function iT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if($w(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(eT(t,n),...r)),callEvent:((n,...r)=>e.callEvent(eT(t,n),...r)),callOptional:((n,...r)=>e.callOptional(eT(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(eT(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(eT(t,n),r,i),upload:(n,r)=>e.streaming.upload(eT(t,n),r)}},settings:rT(e,t),scope:e.scope}}function aT(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function oT(e,t={}){let n=t.modelContext??aT();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=PC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=tx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:ix(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>sT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function sT(e,t,n){try{let r=ox(n,e.args?.length);return{content:[{type:`text`,text:cT(await(await ew(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:lT(e)}]}}}function cT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function lT(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function uT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function dT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=xx(),a=Array.isArray(t)?t:[t],o=await _w(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new KC({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new tw(f),m=e.webmcp===!1?void 0:oT(p),h,g=!1,_=0,ee;function te(){_++,ee=void 0,d.clear(),r===!0&&d.updateOptions({functions:[]})}r&&(p.register({name:Vb.broadcast.cacheInvalidate,type:`event`,handler:te}),i.on(Vb.client.connectionStatus,te),i.on(Vb.client.isTrustedUpdated,te));async function ne(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ex(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let re=e.callTimeout??0,ie=re>0?re:1/0,ae,oe={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){let a=performance.now()+ie;if(await n.onRequest?.call(this,e,t,i),r===!0&&e.i&&ae.isTrusted&&!e.m.startsWith(`anonymous:`)&&e.m!==`devframe:rpc:cacheable-functions`){function t(){if(performance.now()>=a)throw new vw(`timeout`,`[devframe] RPC call "${e.m}" timed out after ${re}ms`)}for(;!ee&&(t(),!(g||ae.status!==`connected`));){let e=_;ee=ae.callOptional(`devframe:rpc:cacheable-functions`).then(t=>{e===_&&d.updateOptions({functions:t??[]})}).catch(t=>{throw e===_&&(ee=void 0),t}),await ee}await ee,t()}let o=_;if(r&&e.i&&!g&&ae.isTrusted&&d.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);o===_&&!g&&d.apply(e,n)}else await t(e)}}},se=uT(e.transport??`auto`,s);ae=se===`static`?await Ww({fetchJsonFromBases:ne}):se===`sse`?Pw({...oe,sseOptions:e.sseOptions}):Qw({...oe,wsOptions:e.wsOptions});let ce;try{ce=new BroadcastChannel(`devframe-auth`)}catch{}let le,ue=!1;function de(e){return((...t)=>ue||!le?e(...t):le.then(()=>e(...t)))}function fe(){g=!0,te();try{h?.(),m?.()}finally{try{ce?.close()}finally{ae.close?.()}}}let pe={events:i,get isTrusted(){return ae.isTrusted},get status(){return ae.status},get connectionError(){return ae.connectionError},get transport(){return ae.transport??se},get connection(){return o},connectionMeta:s,ensureTrusted:ae.ensureTrusted,requestTrust:ae.requestTrust,requestTrustWithToken:async e=>(pw(e),o={...o,authToken:e},ae.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await ae.requestTrustWithCode(e);if(!t)return!1;pw(t),o={...o,authToken:t};try{ce?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>ae.requestAuthCode(e),call:de(ae.call),callEvent:de(ae.callEvent),callOptional:de(ae.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:fe};pe.sharedState=ww(pe),pe.streaming=qw(pe),pe.services=Cw(pe);let me=new Map;pe.scope=(e=>{if(!e)return pe;let t=me.get(e);return t||(t=iT(pe,e),me.set(e,t)),t}),f.rpc=pe;function he(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ge(){if(e.simpleAuth!==!1&&he()&&typeof globalThis.prompt==`function`)for(await pe.requestAuthCode().catch(()=>{});!pe.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await pe.requestTrustWithCode(t))return}}async function _e(){let t=await ae.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Sw(pe,{param:n}):!1;t||r||pe.isTrusted||await ge()}return le=_e().then(()=>{ue=!0},()=>{ue=!0}),s.mcp&&RC(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-BF1s_IvO.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(pe))}).catch(()=>{}),ce&&(ce.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&pe.requestTrustWithToken(e.data.authToken)}),pe}var fT=dT,pT=[`components`,`injectors`,`signals`,`ngrx`,`tanstackQuery`,`forms`,`router`,`pipes`,`http`,`analog`,`capacitor`,`errors`,`plugins`],mT=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`];function hT(e){return`pangular:${e}`}var gT=[`forms`,`router`,`ngrx`,`http`,`analog`,`components`,`tanstackQuery`,`plugins`],_T={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3},capacitorCalls:{default:200,min:10,max:2e3},idleAfterMs:{default:6e4,min:0,max:6e5}},vT={"opted-out":`the request sets transferCache: false`,post:`POST requests are left out unless includePostRequests is set`,method:`only GET, HEAD and POST requests are cached`,"auth-headers":`it sends an Authorization, Proxy-Authorization or Cookie header`,credentials:`it sends credentials (withCredentials or credentials: include/same-origin)`,"no-cache-request":`the request asks for no-store, no-cache or private`,"no-cache-response":`the response has Cache-Control no-store, no-cache or private`,"set-cookie":`the response sets a cookie`,error:`failed responses are not stored`,mocked:`a fault rule answered before the transfer cache ran`,"cache-off-or-filter":`the transfer cache is off, or its filter (or another withHttpTransferCacheOptions setting) left it out`},yT=[[200,`OK`],[201,`Created`],[202,`Accepted`],[203,`Non-Authoritative Information`],[204,`No Content`],[205,`Reset Content`],[206,`Partial Content`],[207,`Multi-Status`],[208,`Already Reported`],[226,`IM Used`],[300,`Multiple Choices`],[301,`Moved Permanently`],[302,`Found`],[303,`See Other`],[304,`Not Modified`],[307,`Temporary Redirect`],[308,`Permanent Redirect`],[400,`Bad Request`],[401,`Unauthorized`],[402,`Payment Required`],[403,`Forbidden`],[404,`Not Found`],[405,`Method Not Allowed`],[406,`Not Acceptable`],[407,`Proxy Authentication Required`],[408,`Request Timeout`],[409,`Conflict`],[410,`Gone`],[411,`Length Required`],[412,`Precondition Failed`],[413,`Content Too Large`],[414,`URI Too Long`],[415,`Unsupported Media Type`],[416,`Range Not Satisfiable`],[417,`Expectation Failed`],[418,`I'm a Teapot`],[421,`Misdirected Request`],[422,`Unprocessable Content`],[423,`Locked`],[424,`Failed Dependency`],[425,`Too Early`],[426,`Upgrade Required`],[428,`Precondition Required`],[429,`Too Many Requests`],[431,`Request Header Fields Too Large`],[451,`Unavailable For Legal Reasons`],[499,`Client Closed Request`],[500,`Internal Server Error`],[501,`Not Implemented`],[502,`Bad Gateway`],[503,`Service Unavailable`],[504,`Gateway Timeout`],[505,`HTTP Version Not Supported`],[506,`Variant Also Negotiates`],[507,`Insufficient Storage`],[508,`Loop Detected`],[510,`Not Extended`],[511,`Network Authentication Required`],[520,`Web Server Returned an Unknown Error`],[521,`Web Server Is Down`],[522,`Connection Timed Out`],[523,`Origin Is Unreachable`],[524,`A Timeout Occurred`]];function bT(e){return yT.some(([t])=>t===e)}var xT=/^[a-z][a-z0-9-]{0,39}$/;function ST(e,t){let n=t.plugins?.[e],r=t.inspectors.plugins&&xT.test(e)&&(n?.enabled??!0);return{enabled:r,tools:r&&t.agent.tools.plugins&&(n?.tools??!0),actions:r&&t.actions.plugins&&(n?.actions??!0)}}var CT=`pangular`,wT={mod:`Mod`,ctrl:`Ctrl`,control:`Ctrl`,meta:`Meta`,cmd:`Meta`,command:`Meta`,alt:`Alt`,option:`Alt`,opt:`Alt`,shift:`Shift`},TT=[`Mod`,`Ctrl`,`Meta`,`Alt`,`Shift`];function ET(e){if(typeof e!=`string`||e.length>40)return;let t=e.split(`+`).map(e=>e.trim());if(t.some(e=>!e))return;let n=new Set,r;for(let e of t){let t=wT[e.toLowerCase()];if(t){if(n.has(t))return;n.add(t);continue}if(r!==void 0)return;if(/^[a-z0-9]$/i.test(e))r=e.toUpperCase();else if(/^f([1-9]|1[0-2])$/i.test(e))r=e.toUpperCase();else return}if(r&&[...n].some(e=>e!==`Shift`)&&!(n.has(`Mod`)&&(n.has(`Ctrl`)||n.has(`Meta`))))return[...TT.filter(e=>n.has(e)),r].join(`+`)}function DT(e,t,n){let r=t.split(`+`),i=r.pop(),a=new Set(r),o=a.has(`Ctrl`)||a.has(`Mod`)&&!n,s=a.has(`Meta`)||a.has(`Mod`)&&n;if(e.ctrlKey!==o||e.metaKey!==s||e.altKey!==a.has(`Alt`)||e.shiftKey!==a.has(`Shift`))return!1;if(/^F\d+$/.test(i))return e.key.toUpperCase()===i;let c=/^\d$/.test(i)?`Digit${i}`:`Key${i}`;return e.code?e.code===c:e.key.toUpperCase()===i}function OT(e,t){if(!t)return e.replace(/^Mod\b/,`Ctrl`);let n={Mod:`⌘`,Meta:`⌘`,Ctrl:`⌃`,Alt:`⌥`,Shift:`⇧`};return e.split(`+`).map(e=>n[e]??e).join(``)}var kT=[{id:`dashboard`,label:`Dashboard`},{id:`timeline`,label:`Timeline`},{id:`audit`,label:`Audit`},{id:`analog`,label:`Analog`,inspector:`analog`},{id:`components`,label:`Components`,inspector:`components`},{id:`routes`,label:`Routes`,inspector:`router`},{id:`signals`,label:`Signals`,inspector:`signals`},{id:`injectors`,label:`Injectors`,inspector:`injectors`},{id:`store`,label:`Store`,inspector:`ngrx`},{id:`queries`,label:`Queries`,inspector:`tanstackQuery`},{id:`forms`,label:`Forms`,inspector:`forms`},{id:`pipes`,label:`Pipes`,inspector:`pipes`},{id:`network`,label:`SSR & HTTP`,inspector:`http`},{id:`errors`,label:`Errors`,inspector:`errors`},{id:`capacitor`,label:`Capacitor`,inspector:`capacitor`},{id:`plugins`,label:`Plugins`,inspector:`plugins`}],AT=1e4;function jT(e){return kT.filter(t=>!(`inspector`in t)||e.inspectors[t.inspector])}var MT={components:`a component instance, by its id in the component tree`,injectors:`a component's element injector, by the component's id`,forms:`a form, by its id`},NT=200;function PT(e){let t=new URLSearchParams({tab:e.tab});return e.id&&t.set(`id`,e.id),e.page&&t.set(`page`,e.page),`#${t.toString()}`}function FT(e){let t=new URLSearchParams(e.replace(/^#/,``)),n=e=>{let n=t.get(e)?.trim();return n&&n.length<=NT?n:void 0},r=n(`tab`);if(!r)return null;let i=n(`id`),a=n(`page`);return{tab:r,...i?{id:i}:{},...a?{page:a}:{}}}var IT=[{id:`settings`,title:`Open settings`,group:`Go to`,keywords:`preferences tabs`},{id:`pick-component`,title:`Pick component on page`,group:`Actions`,keywords:`select inspect element`,inspector:`components`},{id:`cd-record-start`,title:`Start recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-record-stop`,title:`Stop recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-clear`,title:`Clear change detection recording`,group:`Actions`,keywords:`reset recordings cycles`,inspector:`components`},{id:`theme:system`,title:`Theme: follow the system`,group:`Theme`,keywords:`auto`},{id:`theme:light`,title:`Theme: light`,group:`Theme`},{id:`theme:dark`,title:`Theme: dark`,group:`Theme`},{id:`dock:float`,title:`Popup: float`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:bottom`,title:`Popup: dock to the bottom`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:right`,title:`Popup: dock to the right`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:reset-size`,title:`Popup: reset the docked size`,group:`Popup`,keywords:`splitter resize height width`,popupOnly:!0},{id:`popout`,title:`Popup: open in its own window`,group:`Popup`,keywords:`pop out detach new window`,popupOnly:!0},{id:`popout:return`,title:`Popup: back into the page`,group:`Popup`,keywords:`pop in attach dock window`,popupOnly:!0}];function LT(e){let t=jT(e).map(e=>({id:`tab:${e.id}`,title:`Go to ${e.label}`,group:`Go to`,keywords:`tab open`})),n=IT.filter(t=>!t.inspector||e.inspectors[t.inspector]).map(({inspector:e,...t})=>t);return[...t,...n]}function RT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function zT(e,t){return typeof e==`boolean`?e:t}var BT=100,VT=100;function HT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=VT);return[...new Set(t)].slice(0,BT)}function UT(e,t){let{default:n,min:r,max:i}=_T[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function WT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function GT(e){let t=RT(e),n=RT(t.agent),r=RT(t.inspectors),i=RT(n.tools),a=RT(t.actions),o=zT(t.actions,!0),s=RT(t.redaction),c=RT(t.limits),l=WT(pT,e=>zT(r[e],!0));return{inspectors:l,agent:{readOnly:zT(n.readOnly,!1),tools:WT(pT,e=>l[e]&&zT(i[e],!0)),browserTools:zT(n.browserTools,!1)},actions:WT(gT,e=>l[e]&&zT(a[e],o)),redaction:{secretNames:HT(s.secretNames),unmask:HT(s.unmask)},limits:Object.fromEntries(Object.keys(_T).map(e=>[e,UT(c[e],e)])),popup:{hotkey:JT(RT(t.popup).hotkey)},plugins:qT(t.plugins)}}var KT=100;function qT(e){let t={};for(let[n,r]of Object.entries(RT(e)).slice(0,KT)){if(!xT.test(n))continue;if(typeof r==`boolean`){t[n]={enabled:r,tools:!0,actions:!0};continue}let e=RT(r);r!==void 0&&Object.keys(e).length&&(t[n]={enabled:zT(e.enabled,!0),tools:zT(e.tools,!0),actions:zT(e.actions,!0)})}return t}function JT(e){return e===!1?!1:ET(e)??`Alt+Shift+P`}function YT(e){let t=e?.configs;return GT(t?.[CT])}function XT(e){return`${{forms:`Writing to forms`,router:`Navigating and clearing navigations`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and SSR overrides, and clearing HTTP calls`,analog:`Calling API routes and clearing server calls`,components:`Editing component properties and signals`,tanstackQuery:`Invalidating and refetching TanStack queries`,plugins:`Running plugin actions`}[e]} is turned off in the devtools config (actions.${e}).`}var ZT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,tanstackQuery:`TanStack Query`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`,capacitor:`Capacitor`,errors:`Errors`,plugins:`Plugins`},QT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`,components:`Component edits`,tanstackQuery:`TanStack Query invalidate and refetch`,plugins:`Plugin actions`},$T={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`,capacitorCalls:e=>`${e} Capacitor plugin calls`,idleAfterMs:e=>e?`idle ${e/1e3} s after the last agent call`:`never idle`};function eE(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=pT.filter(t=>e.inspectors[t]);n(`Inspectors off`,pT.filter(t=>!e.inspectors[t]).map(e=>ZT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>ZT[e])),n(`Blocked actions`,gT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>QT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(_T).filter(t=>e.limits[t]!==_T[t].default).map(t=>$T[t](e.limits[t]))),e.popup.hotkey!==`Alt+Shift+P`&&n(`Popup shortcut`,[e.popup.hotkey===!1?`Off`:e.popup.hotkey]);let i=Object.entries(e.plugins??{});return n(`Plugins off`,i.filter(([,e])=>!e.enabled).map(([e])=>e)),n(`Plugin tools or actions off`,i.filter(([,e])=>e.enabled&&(!e.tools||!e.actions)).map(([e,t])=>`${e} (${[!t.tools&&`tools`,!t.actions&&`actions`].filter(Boolean).join(`, `)})`)),t}function tE(e){let t={tags:[],directives:[],text:``},n=e.toLowerCase();return n=n.replace(/<\s*([^<>\s]+)\s*>/g,(e,n)=>(t.tags.push({value:n,exact:!0}),` `)),n=n.replace(/\[\s*([^[\]\s]+)\s*\]/g,(e,n)=>(t.directives.push({value:n,exact:!0}),` `)),n=n.replace(/(^|\s)([<[])([^<>[\]\s]*)$/,(e,n,r,i)=>(i&&(r===`<`?t.tags:t.directives).push({value:i,exact:!1}),n)),t.text=n.replace(/\s+/g,` `).trim(),t}function nE(e){return!e.tags.length&&!e.directives.length&&!e.text}function rE(e,t){let n=e.tag.toLowerCase(),r=(e.directives??[]).map(e=>e.toLowerCase()),i=(e.attributes??[]).map(e=>e.toLowerCase()),a=[...r,...r.map(e=>e.replace(/directive$/,``)),...i];for(let{value:e,exact:r}of t.tags)if(r?n!==e:!n.startsWith(e))return!1;for(let{value:e,exact:n}of t.directives)if(!a.some(t=>n?t===e:t.includes(e)))return!1;if(t.text){let a=t.text;if(!(e.name.toLowerCase().includes(a)||n.includes(a)||r.some(e=>e.includes(a))||i.some(e=>e.includes(a))))return!1}return!0}var iE={debugApi:{subject:`Live data`,since:`12.0`},injectorProviders:{subject:`Reading providers and environment injectors`,since:`16.2`},injectorMetadata:{subject:`The full injector tree`,since:`17.0`},isSignal:{subject:`Telling signals apart in component values`,since:`17.1`},signalGraph:{subject:`The live signal graph`,since:`20.1`},deferBlocks:{subject:`Listing @defer blocks`,since:`19.1`},forBlocks:{subject:`Listing @for blocks`,since:`22.0`},profiler:{subject:`Recording change detection`,since:`20.0`},angularProfiling:{subject:`Angular profiling`,since:`20.0`},routerInstance:{subject:`The router debug util`,since:`20.3`}};function aE(e){let t=/^(\d+)\.(\d+)/.exec(e.trim());return t?`${t[1]}.${t[2]}`:e.trim()}function oE(e){let t=/^(\d+)(?:\.(\d+))?/.exec(e.trim());return t?[Number(t[1]),Number(t[2]??0)]:null}function sE(e,t){let n=oE(e),r=oE(t);return!n||!r?!1:n[0]===r[0]?n[1]>=r[1]:n[0]>r[0]}function cE(e,t){return e?.capabilities?.[t]===!1}function lE(e,t){let n=iE[e],r=`${n.subject} needs Angular ${n.since} or later`;if(!t)return`${r}; this page's Angular version is unknown.`;let i=aE(t);return sE(t,n.since)?`${r} in a development build; this page runs Angular ${i} without it, which usually means a production build.`:`${r}; this page runs Angular ${i}.`}var uE=`pangular-page-id`,dE=null;function fE(e){dE=e}function pE(){if(dE)return dE;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(uE)||null)}catch{return null}}function mE(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function hE(e,t){return e?t?e.pages?.[t]??null:e:null}function gE(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function _E(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function vE(e,t,n){return _E(e,t,n).then(e=>e,()=>null)}function yE(e){return e?.connectionMeta.backend===`static`}function bE(e){let t=()=>{let t=e()?.scope(`pangular`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function xE(e){return e.split(`@`)[1]??``}var SE={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},CE={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},wE=vE,TE={key:`name looks secret`,"input-type":`password input`,autocomplete:`autocomplete is a secret kind`,marker:`marked as mask`,parent:`inside a secret group`,config:`listed in mask`};function EE(e){return TE[e]??e}var DE=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function OE(e,t){return await wE(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function kE(e){return`${e.ok?e.message??`Done.`:e.error??`Failed.`}${e.skipped?.length?` Skipped: ${e.skipped.map(e=>`${e.path} (${e.reason})`).join(`, `)}.`:``}${e.status?` Status: ${e.status}.`:``}`}var AE=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function jE(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(AE,(e,t)=>t??(e===`**`?``:e))}function ME(e){return YT(e?.connectionMeta)}function NE(e,t){return ME(e).actions[t]}var PE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,queries:`tanstackQuery`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`,capacitor:`capacitor`,errors:`errors`,plugins:`plugins`};function FE(e){return PE[e]}var IE=`https://pangular-inspector.dev/getting-started/configuration/#inspectors-and-agent-tools`;function LE(e,t){let n=PE[e];return!n||t.inspectors[n]}function RE(e,t){e&1&&(E(),Cg(0,`rect`,5)(1,`rect`,6)(2,`rect`,7)(3,`rect`,8))}function zE(e,t){e&1&&(E(),Cg(0,`path`,9)(1,`circle`,10)(2,`circle`,11)(3,`path`,12))}function BE(e,t){e&1&&(E(),Cg(0,`path`,13)(1,`path`,14))}function VE(e,t){e&1&&(E(),Cg(0,`path`,15)(1,`path`,16)(2,`path`,17))}function HE(e,t){e&1&&(E(),Cg(0,`circle`,18)(1,`path`,19)(2,`circle`,20))}function UE(e,t){e&1&&(E(),Cg(0,`path`,1))}function WE(e,t){e&1&&(E(),Cg(0,`path`,21)(1,`path`,22)(2,`path`,23)(3,`path`,24))}function GE(e,t){e&1&&(E(),Cg(0,`ellipse`,25)(1,`path`,26)(2,`path`,27))}function KE(e,t){e&1&&(E(),Cg(0,`rect`,28)(1,`path`,29)(2,`path`,30)(3,`path`,31))}function qE(e,t){e&1&&(E(),Cg(0,`circle`,32)(1,`path`,9)(2,`path`,33))}function JE(e,t){e&1&&(E(),Cg(0,`path`,34)(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`circle`,38))}function YE(e,t){e&1&&(E(),Cg(0,`circle`,39)(1,`path`,40))}function XE(e,t){e&1&&(E(),Cg(0,`ellipse`,41)(1,`path`,42)(2,`path`,43)(3,`path`,44)(4,`path`,45))}function ZE(e,t){e&1&&(E(),Cg(0,`circle`,32)(1,`path`,46)(2,`path`,47))}function QE(e,t){e&1&&(E(),Cg(0,`path`,2))}function $E(e,t){e&1&&(E(),Cg(0,`path`,3))}function eD(e,t){e&1&&(E(),Cg(0,`path`,4))}var tD=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:18,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`M10 3h4v3a2 2 0 1 0 4 0V5h1a2 2 0 0 1 2 2v4h-2a2 2 0 1 0 0 4h2v4a2 2 0 0 1-2 2h-4v-2a2 2 0 1 0-4 0v2H7a2 2 0 0 1-2-2v-4H4a2 2 0 1 1 0-4h1V7a2 2 0 0 1 2-2h3Z`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`fill`,`currentColor`,`stroke`,`none`,`transform`,`translate(1.8 1.8) scale(0.85)`,`d`,`M24 3.7l-5.766 5.766 5.725 5.736-3.713 3.712L5.073 3.742 8.786.03l5.736 5.726L20.284 0 24 3.7zM.029 8.785l3.713-3.713 15.173 15.173-3.713 3.714-5.732-5.726L3.7 24 0 20.285l5.754-5.764L.029 8.785z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M3 12h18`],[`cx`,`7`,`cy`,`12`,`r`,`2`],[`cx`,`14`,`cy`,`12`,`r`,`2`],[`d`,`M18 7v10`],[`d`,`M9 11l2 2 4-4`],[`d`,`M12 3 4 6v6c0 4.5 3.4 8.3 8 9 4.6-.7 8-4.5 8-9V6l-8-3Z`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`],[`cx`,`12`,`cy`,`12`,`r`,`3`],[`d`,`M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z`],[`cx`,`11`,`cy`,`5`,`rx`,`8`,`ry`,`3`],[`d`,`M3 5v6c0 1.66 3.58 3 8 3`],[`d`,`M3 11v6c0 1.66 3.58 3 8 3`],[`d`,`M21 14a4 4 0 1 1-1.2-2.85L21 12.3`],[`d`,`M21 9v3.3h-3.3`],[`d`,`M12 7v6`],[`d`,`M12 16.5v.01`]],template:function(e,t){if(e&1&&(E(),z(0,`svg`,0),j(1,RE,4,0)(2,zE,4,0)(3,BE,2,0)(4,VE,3,0)(5,HE,3,0)(6,UE,1,0,`:svg:path`,1)(7,WE,4,0)(8,GE,3,0)(9,KE,4,0)(10,qE,3,0)(11,JE,5,0)(12,YE,2,0)(13,XE,5,0)(14,ZE,3,0)(15,QE,1,0,`:svg:path`,2)(16,$E,1,0,`:svg:path`,3)(17,eD,1,0,`:svg:path`,4),B()),e&2){let e;O(),M((e=t.name())===`dashboard`?1:e===`timeline`?2:e===`audit`?3:e===`components`?4:e===`routes`?5:e===`signals`?6:e===`injectors`?7:e===`store`?8:e===`forms`?9:e===`network`?10:e===`pipes`?11:e===`settings`?12:e===`queries`?13:e===`errors`?14:e===`plugins`?15:e===`analog`?16:e===`capacitor`?17:-1)}},styles:[`[_nghost-%COMP%] { +`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[VC]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function jw(e,t){let{channel:n,rpcOptions:r={}}=t;return ex(e,{...n,timeout:-1,...r,proxify:!1})}function Mw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(Vb.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new vw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new vw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(Vb.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new vw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(Vb.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(Vb.client.connectionError,e),m(new vw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new vw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),te=jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:Vb.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new vw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(Vb.client.connectionError,e),m(e),i.emit(Vb.client.isTrustedUpdated,!1)}});let ne=n;async function re(e){ne=e;let t=await te.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new vw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(Vb.client.connectionError,e)}return i.emit(Vb.client.isTrustedUpdated,c),t.isTrusted}async function ie(e){let t=(await te.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(ne=t,c=!0,d.resolve(!0),f(`connected`),i.emit(Vb.client.isTrustedUpdated,!0)),t}async function ae(e={}){await te.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function oe(){return c?!0:re(ne??``)}async function se(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:oe,requestTrustWithToken:re,requestTrustWithCode:ie,requestAuthCode:ae,ensureTrusted:se,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Vb.client.error,n,t),Promise.reject(n)):g(te.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(Vb.client.error,t,String(e[0]));return}return te.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Vb.client.error,n,t),Promise.reject(n)):g(te.$callOptional(...e),t)},close:()=>{ee.close()}}}function Nw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Pw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Nw(n.sse,r??`./`,location);return Mw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Aw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Fw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Iw(r)?Fw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Iw(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function Lw(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function Rw(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function zw(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function Bw(e){if(e.error)throw Fw(e.error);return e.output}function Vw(e){return e.some(e=>e!=null)}function Hw(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function Uw(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?TC(e):e}function a(e,t){return i(Hw(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return zw(r)?Bw(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(Lw(r)){if(Vw(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(Rw(r)){let e=bx(n),i=r.records[e];if(i)return Bw(await s(i,r.serialization));if(r.fallback)return Bw(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!Vw(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Ww(e){let t=Uw(await e.fetchJsonFromBases(HC),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var Gw=``;function Kw(e,t){return`${e}${Gw}${t}`}function qw(e){let t=new Map,n=new Map;e.client.register({name:Vb.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Kw(e,n))?._push(r,i)}}),e.client.register({name:Vb.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Kw(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:Vb.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=Kw(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(Vb.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(Gw);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=Kw(n,r),o=t.get(a);if(o)return o;let s=jC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(Vb.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=Kw(t,r),a=n.get(i);if(a)return a;let o=AC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function Jw(){}var Yw=new Map;function Xw(e){let t=e.url;e.authToken&&(t=`${t}?${GC}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Jw,onError:i=Jw,onDisconnected:a=Jw,definitions:o=Yw}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Ew(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function Zw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Dx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function Qw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Zw(n.websocket,r??`./`,location);return Mw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Xw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function $w(e){return e.includes(`:`)}function eT(e,t){return $w(t)?t:`${e}:${t}`}function tT(e){return{async get(t){return(await e()).value()?.[t]},async set(t,n){(await e()).mutate(e=>{if(e===void 0)return{[t]:n};e[t]=n})},async delete(t){(await e()).mutate(e=>{e!==void 0&&delete e[t]})},async all(){return(await e()).value()??{}},async onChange(t){return(await e()).on(`updated`,e=>t(e??{}))}}}function nT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=(async()=>(await e.ensureTrusted(),e.sharedState.get(r)))().catch(e=>{throw i=void 0,e}),i}return tT(a)}function rT(e,t){return{global:nT(e,t,`global`),project:nT(e,t,`project`)}}function iT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if($w(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(eT(t,n),...r)),callEvent:((n,...r)=>e.callEvent(eT(t,n),...r)),callOptional:((n,...r)=>e.callOptional(eT(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(eT(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(eT(t,n),r,i),upload:(n,r)=>e.streaming.upload(eT(t,n),r)}},settings:rT(e,t),scope:e.scope}}function aT(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function oT(e,t={}){let n=t.modelContext??aT();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=PC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=tx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:ix(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>sT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function sT(e,t,n){try{let r=ox(n,e.args?.length);return{content:[{type:`text`,text:cT(await(await ew(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:lT(e)}]}}}function cT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function lT(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function uT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function dT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=xx(),a=Array.isArray(t)?t:[t],o=await _w(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new KC({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new tw(f),m=e.webmcp===!1?void 0:oT(p),h,g=!1,_=0,ee;function te(){_++,ee=void 0,d.clear(),r===!0&&d.updateOptions({functions:[]})}r&&(p.register({name:Vb.broadcast.cacheInvalidate,type:`event`,handler:te}),i.on(Vb.client.connectionStatus,te),i.on(Vb.client.isTrustedUpdated,te));async function ne(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ex(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let re=e.callTimeout??0,ie=re>0?re:1/0,ae,oe={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){let a=performance.now()+ie;if(await n.onRequest?.call(this,e,t,i),r===!0&&e.i&&ae.isTrusted&&!e.m.startsWith(`anonymous:`)&&e.m!==`devframe:rpc:cacheable-functions`){function t(){if(performance.now()>=a)throw new vw(`timeout`,`[devframe] RPC call "${e.m}" timed out after ${re}ms`)}for(;!ee&&(t(),!(g||ae.status!==`connected`));){let e=_;ee=ae.callOptional(`devframe:rpc:cacheable-functions`).then(t=>{e===_&&d.updateOptions({functions:t??[]})}).catch(t=>{throw e===_&&(ee=void 0),t}),await ee}await ee,t()}let o=_;if(r&&e.i&&!g&&ae.isTrusted&&d.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);o===_&&!g&&d.apply(e,n)}else await t(e)}}},se=uT(e.transport??`auto`,s);ae=se===`static`?await Ww({fetchJsonFromBases:ne}):se===`sse`?Pw({...oe,sseOptions:e.sseOptions}):Qw({...oe,wsOptions:e.wsOptions});let ce;try{ce=new BroadcastChannel(`devframe-auth`)}catch{}let le,ue=!1;function de(e){return((...t)=>ue||!le?e(...t):le.then(()=>e(...t)))}function fe(){g=!0,te();try{h?.(),m?.()}finally{try{ce?.close()}finally{ae.close?.()}}}let pe={events:i,get isTrusted(){return ae.isTrusted},get status(){return ae.status},get connectionError(){return ae.connectionError},get transport(){return ae.transport??se},get connection(){return o},connectionMeta:s,ensureTrusted:ae.ensureTrusted,requestTrust:ae.requestTrust,requestTrustWithToken:async e=>(pw(e),o={...o,authToken:e},ae.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await ae.requestTrustWithCode(e);if(!t)return!1;pw(t),o={...o,authToken:t};try{ce?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>ae.requestAuthCode(e),call:de(ae.call),callEvent:de(ae.callEvent),callOptional:de(ae.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:fe};pe.sharedState=ww(pe),pe.streaming=qw(pe),pe.services=Cw(pe);let me=new Map;pe.scope=(e=>{if(!e)return pe;let t=me.get(e);return t||(t=iT(pe,e),me.set(e,t)),t}),f.rpc=pe;function he(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ge(){if(e.simpleAuth!==!1&&he()&&typeof globalThis.prompt==`function`)for(await pe.requestAuthCode().catch(()=>{});!pe.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await pe.requestTrustWithCode(t))return}}async function _e(){let t=await ae.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Sw(pe,{param:n}):!1;t||r||pe.isTrusted||await ge()}return le=_e().then(()=>{ue=!0},()=>{ue=!0}),s.mcp&&RC(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-rr8okg_T.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(pe))}).catch(()=>{}),ce&&(ce.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&pe.requestTrustWithToken(e.data.authToken)}),pe}var fT=dT,pT=[`components`,`injectors`,`signals`,`ngrx`,`tanstackQuery`,`forms`,`router`,`pipes`,`http`,`analog`,`capacitor`,`errors`,`plugins`],mT=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`];function hT(e){return`pangular:${e}`}var gT=[`forms`,`router`,`ngrx`,`http`,`analog`,`components`,`tanstackQuery`,`plugins`],_T={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3},capacitorCalls:{default:200,min:10,max:2e3},idleAfterMs:{default:6e4,min:0,max:6e5}},vT={"opted-out":`the request sets transferCache: false`,post:`POST requests are left out unless includePostRequests is set`,method:`only GET, HEAD and POST requests are cached`,"auth-headers":`it sends an Authorization, Proxy-Authorization or Cookie header`,credentials:`it sends credentials (withCredentials or credentials: include/same-origin)`,"no-cache-request":`the request asks for no-store, no-cache or private`,"no-cache-response":`the response has Cache-Control no-store, no-cache or private`,"set-cookie":`the response sets a cookie`,error:`failed responses are not stored`,mocked:`a fault rule answered before the transfer cache ran`,"cache-off-or-filter":`the transfer cache is off, or its filter (or another withHttpTransferCacheOptions setting) left it out`},yT=[[200,`OK`],[201,`Created`],[202,`Accepted`],[203,`Non-Authoritative Information`],[204,`No Content`],[205,`Reset Content`],[206,`Partial Content`],[207,`Multi-Status`],[208,`Already Reported`],[226,`IM Used`],[300,`Multiple Choices`],[301,`Moved Permanently`],[302,`Found`],[303,`See Other`],[304,`Not Modified`],[307,`Temporary Redirect`],[308,`Permanent Redirect`],[400,`Bad Request`],[401,`Unauthorized`],[402,`Payment Required`],[403,`Forbidden`],[404,`Not Found`],[405,`Method Not Allowed`],[406,`Not Acceptable`],[407,`Proxy Authentication Required`],[408,`Request Timeout`],[409,`Conflict`],[410,`Gone`],[411,`Length Required`],[412,`Precondition Failed`],[413,`Content Too Large`],[414,`URI Too Long`],[415,`Unsupported Media Type`],[416,`Range Not Satisfiable`],[417,`Expectation Failed`],[418,`I'm a Teapot`],[421,`Misdirected Request`],[422,`Unprocessable Content`],[423,`Locked`],[424,`Failed Dependency`],[425,`Too Early`],[426,`Upgrade Required`],[428,`Precondition Required`],[429,`Too Many Requests`],[431,`Request Header Fields Too Large`],[451,`Unavailable For Legal Reasons`],[499,`Client Closed Request`],[500,`Internal Server Error`],[501,`Not Implemented`],[502,`Bad Gateway`],[503,`Service Unavailable`],[504,`Gateway Timeout`],[505,`HTTP Version Not Supported`],[506,`Variant Also Negotiates`],[507,`Insufficient Storage`],[508,`Loop Detected`],[510,`Not Extended`],[511,`Network Authentication Required`],[520,`Web Server Returned an Unknown Error`],[521,`Web Server Is Down`],[522,`Connection Timed Out`],[523,`Origin Is Unreachable`],[524,`A Timeout Occurred`]];function bT(e){return yT.some(([t])=>t===e)}var xT=/^[a-z][a-z0-9-]{0,39}$/;function ST(e,t){let n=t.plugins?.[e],r=t.inspectors.plugins&&xT.test(e)&&(n?.enabled??!0);return{enabled:r,tools:r&&t.agent.tools.plugins&&(n?.tools??!0),actions:r&&t.actions.plugins&&(n?.actions??!0)}}var CT=`pangular`,wT={mod:`Mod`,ctrl:`Ctrl`,control:`Ctrl`,meta:`Meta`,cmd:`Meta`,command:`Meta`,alt:`Alt`,option:`Alt`,opt:`Alt`,shift:`Shift`},TT=[`Mod`,`Ctrl`,`Meta`,`Alt`,`Shift`];function ET(e){if(typeof e!=`string`||e.length>40)return;let t=e.split(`+`).map(e=>e.trim());if(t.some(e=>!e))return;let n=new Set,r;for(let e of t){let t=wT[e.toLowerCase()];if(t){if(n.has(t))return;n.add(t);continue}if(r!==void 0)return;if(/^[a-z0-9]$/i.test(e))r=e.toUpperCase();else if(/^f([1-9]|1[0-2])$/i.test(e))r=e.toUpperCase();else return}if(r&&[...n].some(e=>e!==`Shift`)&&!(n.has(`Mod`)&&(n.has(`Ctrl`)||n.has(`Meta`))))return[...TT.filter(e=>n.has(e)),r].join(`+`)}function DT(e,t,n){let r=t.split(`+`),i=r.pop(),a=new Set(r),o=a.has(`Ctrl`)||a.has(`Mod`)&&!n,s=a.has(`Meta`)||a.has(`Mod`)&&n;if(e.ctrlKey!==o||e.metaKey!==s||e.altKey!==a.has(`Alt`)||e.shiftKey!==a.has(`Shift`))return!1;if(/^F\d+$/.test(i))return e.key.toUpperCase()===i;let c=/^\d$/.test(i)?`Digit${i}`:`Key${i}`;return e.code?e.code===c:e.key.toUpperCase()===i}function OT(e,t){if(!t)return e.replace(/^Mod\b/,`Ctrl`);let n={Mod:`⌘`,Meta:`⌘`,Ctrl:`⌃`,Alt:`⌥`,Shift:`⇧`};return e.split(`+`).map(e=>n[e]??e).join(``)}var kT=[{id:`dashboard`,label:`Dashboard`},{id:`timeline`,label:`Timeline`},{id:`audit`,label:`Audit`},{id:`analog`,label:`Analog`,inspector:`analog`},{id:`components`,label:`Components`,inspector:`components`},{id:`routes`,label:`Routes`,inspector:`router`},{id:`signals`,label:`Signals`,inspector:`signals`},{id:`injectors`,label:`Injectors`,inspector:`injectors`},{id:`store`,label:`Store`,inspector:`ngrx`},{id:`queries`,label:`Queries`,inspector:`tanstackQuery`},{id:`forms`,label:`Forms`,inspector:`forms`},{id:`pipes`,label:`Pipes`,inspector:`pipes`},{id:`network`,label:`SSR & HTTP`,inspector:`http`},{id:`errors`,label:`Errors`,inspector:`errors`},{id:`capacitor`,label:`Capacitor`,inspector:`capacitor`},{id:`plugins`,label:`Plugins`,inspector:`plugins`}],AT=1e4;function jT(e){return kT.filter(t=>!(`inspector`in t)||e.inspectors[t.inspector])}var MT={components:`a component instance, by its id in the component tree`,injectors:`a component's element injector, by the component's id`,forms:`a form, by its id`},NT=200;function PT(e){let t=new URLSearchParams({tab:e.tab});return e.id&&t.set(`id`,e.id),e.page&&t.set(`page`,e.page),`#${t.toString()}`}function FT(e){let t=new URLSearchParams(e.replace(/^#/,``)),n=e=>{let n=t.get(e)?.trim();return n&&n.length<=NT?n:void 0},r=n(`tab`);if(!r)return null;let i=n(`id`),a=n(`page`);return{tab:r,...i?{id:i}:{},...a?{page:a}:{}}}var IT=[{id:`settings`,title:`Open settings`,group:`Go to`,keywords:`preferences tabs`},{id:`pick-component`,title:`Pick component on page`,group:`Actions`,keywords:`select inspect element`,inspector:`components`},{id:`cd-record-start`,title:`Start recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-record-stop`,title:`Stop recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-clear`,title:`Clear change detection recording`,group:`Actions`,keywords:`reset recordings cycles`,inspector:`components`},{id:`theme:system`,title:`Theme: follow the system`,group:`Theme`,keywords:`auto`},{id:`theme:light`,title:`Theme: light`,group:`Theme`},{id:`theme:dark`,title:`Theme: dark`,group:`Theme`},{id:`dock:float`,title:`Popup: float`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:bottom`,title:`Popup: dock to the bottom`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:right`,title:`Popup: dock to the right`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:reset-size`,title:`Popup: reset the docked size`,group:`Popup`,keywords:`splitter resize height width`,popupOnly:!0},{id:`popout`,title:`Popup: open in its own window`,group:`Popup`,keywords:`pop out detach new window`,popupOnly:!0},{id:`popout:return`,title:`Popup: back into the page`,group:`Popup`,keywords:`pop in attach dock window`,popupOnly:!0}];function LT(e){let t=jT(e).map(e=>({id:`tab:${e.id}`,title:`Go to ${e.label}`,group:`Go to`,keywords:`tab open`})),n=IT.filter(t=>!t.inspector||e.inspectors[t.inspector]).map(({inspector:e,...t})=>t);return[...t,...n]}function RT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function zT(e,t){return typeof e==`boolean`?e:t}var BT=100,VT=100;function HT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=VT);return[...new Set(t)].slice(0,BT)}function UT(e,t){let{default:n,min:r,max:i}=_T[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function WT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function GT(e){let t=RT(e),n=RT(t.agent),r=RT(t.inspectors),i=RT(n.tools),a=RT(t.actions),o=zT(t.actions,!0),s=RT(t.redaction),c=RT(t.limits),l=WT(pT,e=>zT(r[e],!0));return{inspectors:l,agent:{readOnly:zT(n.readOnly,!1),tools:WT(pT,e=>l[e]&&zT(i[e],!0)),browserTools:zT(n.browserTools,!1)},actions:WT(gT,e=>l[e]&&zT(a[e],o)),redaction:{secretNames:HT(s.secretNames),unmask:HT(s.unmask)},limits:Object.fromEntries(Object.keys(_T).map(e=>[e,UT(c[e],e)])),popup:{hotkey:JT(RT(t.popup).hotkey)},plugins:qT(t.plugins)}}var KT=100;function qT(e){let t={};for(let[n,r]of Object.entries(RT(e)).slice(0,KT)){if(!xT.test(n))continue;if(typeof r==`boolean`){t[n]={enabled:r,tools:!0,actions:!0};continue}let e=RT(r);r!==void 0&&Object.keys(e).length&&(t[n]={enabled:zT(e.enabled,!0),tools:zT(e.tools,!0),actions:zT(e.actions,!0)})}return t}function JT(e){return e===!1?!1:ET(e)??`Alt+Shift+P`}function YT(e){let t=e?.configs;return GT(t?.[CT])}function XT(e){return`${{forms:`Writing to forms`,router:`Navigating and clearing navigations`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and SSR overrides, and clearing HTTP calls`,analog:`Calling API routes and clearing server calls`,components:`Editing component properties and signals`,tanstackQuery:`Invalidating and refetching TanStack queries`,plugins:`Running plugin actions`}[e]} is turned off in the devtools config (actions.${e}).`}var ZT=[`pangular:build-meta`],QT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,tanstackQuery:`TanStack Query`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`,capacitor:`Capacitor`,errors:`Errors`,plugins:`Plugins`},$T={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`,components:`Component edits`,tanstackQuery:`TanStack Query invalidate and refetch`,plugins:`Plugin actions`},eE={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`,capacitorCalls:e=>`${e} Capacitor plugin calls`,idleAfterMs:e=>e?`idle ${e/1e3} s after the last agent call`:`never idle`};function tE(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=pT.filter(t=>e.inspectors[t]);n(`Inspectors off`,pT.filter(t=>!e.inspectors[t]).map(e=>QT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>QT[e])),n(`Blocked actions`,gT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>$T[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(_T).filter(t=>e.limits[t]!==_T[t].default).map(t=>eE[t](e.limits[t]))),e.popup.hotkey!==`Alt+Shift+P`&&n(`Popup shortcut`,[e.popup.hotkey===!1?`Off`:e.popup.hotkey]);let i=Object.entries(e.plugins??{});return n(`Plugins off`,i.filter(([,e])=>!e.enabled).map(([e])=>e)),n(`Plugin tools or actions off`,i.filter(([,e])=>e.enabled&&(!e.tools||!e.actions)).map(([e,t])=>`${e} (${[!t.tools&&`tools`,!t.actions&&`actions`].filter(Boolean).join(`, `)})`)),t}function nE(e){let t={tags:[],directives:[],text:``},n=e.toLowerCase();return n=n.replace(/<\s*([^<>\s]+)\s*>/g,(e,n)=>(t.tags.push({value:n,exact:!0}),` `)),n=n.replace(/\[\s*([^[\]\s]+)\s*\]/g,(e,n)=>(t.directives.push({value:n,exact:!0}),` `)),n=n.replace(/(^|\s)([<[])([^<>[\]\s]*)$/,(e,n,r,i)=>(i&&(r===`<`?t.tags:t.directives).push({value:i,exact:!1}),n)),t.text=n.replace(/\s+/g,` `).trim(),t}function rE(e){return!e.tags.length&&!e.directives.length&&!e.text}function iE(e,t){let n=e.tag.toLowerCase(),r=(e.directives??[]).map(e=>e.toLowerCase()),i=(e.attributes??[]).map(e=>e.toLowerCase()),a=[...r,...r.map(e=>e.replace(/directive$/,``)),...i];for(let{value:e,exact:r}of t.tags)if(r?n!==e:!n.startsWith(e))return!1;for(let{value:e,exact:n}of t.directives)if(!a.some(t=>n?t===e:t.includes(e)))return!1;if(t.text){let a=t.text;if(!(e.name.toLowerCase().includes(a)||n.includes(a)||r.some(e=>e.includes(a))||i.some(e=>e.includes(a))))return!1}return!0}var aE={debugApi:{subject:`Live data`,since:`12.0`},injectorProviders:{subject:`Reading providers and environment injectors`,since:`16.2`},injectorMetadata:{subject:`The full injector tree`,since:`17.0`},isSignal:{subject:`Telling signals apart in component values`,since:`17.1`},signalGraph:{subject:`The live signal graph`,since:`20.1`},deferBlocks:{subject:`Listing @defer blocks`,since:`19.1`},forBlocks:{subject:`Listing @for blocks`,since:`22.0`},profiler:{subject:`Recording change detection`,since:`20.0`},angularProfiling:{subject:`Angular profiling`,since:`20.0`},routerInstance:{subject:`The router debug util`,since:`20.3`}};function oE(e){let t=/^(\d+)\.(\d+)/.exec(e.trim());return t?`${t[1]}.${t[2]}`:e.trim()}function sE(e){let t=/^(\d+)(?:\.(\d+))?/.exec(e.trim());return t?[Number(t[1]),Number(t[2]??0)]:null}function cE(e,t){let n=sE(e),r=sE(t);return!n||!r?!1:n[0]===r[0]?n[1]>=r[1]:n[0]>r[0]}function lE(e,t){return e?.capabilities?.[t]===!1}function uE(e,t){let n=aE[e],r=`${n.subject} needs Angular ${n.since} or later`;if(!t)return`${r}; this page's Angular version is unknown.`;let i=oE(t);return cE(t,n.since)?`${r} in a development build; this page runs Angular ${i} without it, which usually means a production build.`:`${r}; this page runs Angular ${i}.`}var dE=`pangular-page-id`,fE=null;function pE(e){fE=e}function mE(){if(fE)return fE;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(dE)||null)}catch{return null}}function hE(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function gE(e,t){return e?t?e.pages?.[t]??null:e:null}function _E(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function vE(){return{functions:[...ZT]}}function yE(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function bE(e,t,n){return yE(e,t,n).then(e=>e,()=>null)}function xE(e){return e?.connectionMeta.backend===`static`}function SE(e){let t=()=>{let t=e()?.scope(`pangular`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function CE(e){return e.split(`@`)[1]??``}var wE={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},TE={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},EE=bE,DE={key:`name looks secret`,"input-type":`password input`,autocomplete:`autocomplete is a secret kind`,marker:`marked as mask`,parent:`inside a secret group`,config:`listed in mask`};function OE(e){return DE[e]??e}var kE=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function AE(e,t){return await EE(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function jE(e){return`${e.ok?e.message??`Done.`:e.error??`Failed.`}${e.skipped?.length?` Skipped: ${e.skipped.map(e=>`${e.path} (${e.reason})`).join(`, `)}.`:``}${e.status?` Status: ${e.status}.`:``}`}var ME=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function NE(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(ME,(e,t)=>t??(e===`**`?``:e))}function PE(e){return YT(e?.connectionMeta)}function FE(e,t){return PE(e).actions[t]}var IE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,queries:`tanstackQuery`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`,capacitor:`capacitor`,errors:`errors`,plugins:`plugins`};function LE(e){return IE[e]}var RE=`https://pangular-inspector.dev/getting-started/configuration/#inspectors-and-agent-tools`;function zE(e,t){let n=IE[e];return!n||t.inspectors[n]}function BE(e,t){e&1&&(E(),Cg(0,`rect`,5)(1,`rect`,6)(2,`rect`,7)(3,`rect`,8))}function VE(e,t){e&1&&(E(),Cg(0,`path`,9)(1,`circle`,10)(2,`circle`,11)(3,`path`,12))}function HE(e,t){e&1&&(E(),Cg(0,`path`,13)(1,`path`,14))}function UE(e,t){e&1&&(E(),Cg(0,`path`,15)(1,`path`,16)(2,`path`,17))}function WE(e,t){e&1&&(E(),Cg(0,`circle`,18)(1,`path`,19)(2,`circle`,20))}function GE(e,t){e&1&&(E(),Cg(0,`path`,1))}function KE(e,t){e&1&&(E(),Cg(0,`path`,21)(1,`path`,22)(2,`path`,23)(3,`path`,24))}function qE(e,t){e&1&&(E(),Cg(0,`ellipse`,25)(1,`path`,26)(2,`path`,27))}function JE(e,t){e&1&&(E(),Cg(0,`rect`,28)(1,`path`,29)(2,`path`,30)(3,`path`,31))}function YE(e,t){e&1&&(E(),Cg(0,`circle`,32)(1,`path`,9)(2,`path`,33))}function XE(e,t){e&1&&(E(),Cg(0,`path`,34)(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`circle`,38))}function ZE(e,t){e&1&&(E(),Cg(0,`circle`,39)(1,`path`,40))}function QE(e,t){e&1&&(E(),Cg(0,`ellipse`,41)(1,`path`,42)(2,`path`,43)(3,`path`,44)(4,`path`,45))}function $E(e,t){e&1&&(E(),Cg(0,`circle`,32)(1,`path`,46)(2,`path`,47))}function eD(e,t){e&1&&(E(),Cg(0,`path`,2))}function tD(e,t){e&1&&(E(),Cg(0,`path`,3))}function nD(e,t){e&1&&(E(),Cg(0,`path`,4))}var rD=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:18,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`M10 3h4v3a2 2 0 1 0 4 0V5h1a2 2 0 0 1 2 2v4h-2a2 2 0 1 0 0 4h2v4a2 2 0 0 1-2 2h-4v-2a2 2 0 1 0-4 0v2H7a2 2 0 0 1-2-2v-4H4a2 2 0 1 1 0-4h1V7a2 2 0 0 1 2-2h3Z`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`fill`,`currentColor`,`stroke`,`none`,`transform`,`translate(1.8 1.8) scale(0.85)`,`d`,`M24 3.7l-5.766 5.766 5.725 5.736-3.713 3.712L5.073 3.742 8.786.03l5.736 5.726L20.284 0 24 3.7zM.029 8.785l3.713-3.713 15.173 15.173-3.713 3.714-5.732-5.726L3.7 24 0 20.285l5.754-5.764L.029 8.785z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M3 12h18`],[`cx`,`7`,`cy`,`12`,`r`,`2`],[`cx`,`14`,`cy`,`12`,`r`,`2`],[`d`,`M18 7v10`],[`d`,`M9 11l2 2 4-4`],[`d`,`M12 3 4 6v6c0 4.5 3.4 8.3 8 9 4.6-.7 8-4.5 8-9V6l-8-3Z`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`],[`cx`,`12`,`cy`,`12`,`r`,`3`],[`d`,`M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z`],[`cx`,`11`,`cy`,`5`,`rx`,`8`,`ry`,`3`],[`d`,`M3 5v6c0 1.66 3.58 3 8 3`],[`d`,`M3 11v6c0 1.66 3.58 3 8 3`],[`d`,`M21 14a4 4 0 1 1-1.2-2.85L21 12.3`],[`d`,`M21 9v3.3h-3.3`],[`d`,`M12 7v6`],[`d`,`M12 16.5v.01`]],template:function(e,t){if(e&1&&(E(),z(0,`svg`,0),j(1,BE,4,0)(2,VE,4,0)(3,HE,2,0)(4,UE,3,0)(5,WE,3,0)(6,GE,1,0,`:svg:path`,1)(7,KE,4,0)(8,qE,3,0)(9,JE,4,0)(10,YE,3,0)(11,XE,5,0)(12,ZE,2,0)(13,QE,5,0)(14,$E,3,0)(15,eD,1,0,`:svg:path`,2)(16,tD,1,0,`:svg:path`,3)(17,nD,1,0,`:svg:path`,4),B()),e&2){let e;O(),M((e=t.name())===`dashboard`?1:e===`timeline`?2:e===`audit`?3:e===`components`?4:e===`routes`?5:e===`signals`?6:e===`injectors`?7:e===`store`?8:e===`forms`?9:e===`network`?10:e===`pipes`?11:e===`settings`?12:e===`queries`?13:e===`errors`?14:e===`plugins`?15:e===`analog`?16:e===`capacitor`?17:-1)}},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-shrink: 0; -}`]})},nD=(e,t)=>t.tab,rD=(e,t)=>t.label;function iD(e,t){e&1&&q(0),e&2&&Y(` `,W().meta()?.projectName,` `)}function aD(e,t){e&1&&q(0,` Project details unavailable `)}function oD(e,t){e&1&&q(0,` Loading… `)}function sD(e,t){e&1&&(q(0,` Run `),I(1,`code`),q(2,`pangular build`),L(),q(3,` again to rebuild the report. `))}function cD(e,t){e&1&&q(0,` Check that the dev server is running. `)}function lD(e,t){if(e&1){let e=V();I(0,`button`,12),H(`click`,function(){return w(e),T(W(2).loadMeta())}),q(1,`Try again`),L()}}function uD(e,t){if(e&1&&(I(0,`p`,10),j(1,sD,4,0)(2,cD,1,0),L(),j(3,lD,2,0,`button`,11)),e&2){let e=W();O(),M(e.staticReport()?1:2),O(2),M(e.staticReport()?-1:3)}}function dD(e,t){e&1&&(I(0,`li`,5)(1,`span`),q(2,`Analog`),L(),q(3),L()),e&2&&(O(3),J(t))}function fD(e,t){e&1&&(I(0,`li`)(1,`span`),q(2,`Change detection`),L(),q(3),L()),e&2&&(O(3),J(t))}function pD(e,t){if(e&1&&(I(0,`span`,19),q(1),L(),I(2,`span`,20),q(3),L()),e&2){let e=W().$implicit,t=W();O(),J(t.cards()[e.tab]?.value),O(2),J(t.cards()[e.tab]?.sub)}}function mD(e,t){e&1&&(I(0,`span`,21),q(1,`–`),L(),I(2,`span`,20),q(3,`Count unavailable`),L())}function hD(e,t){e&1&&(R(0,`span`,22),I(1,`span`,20),q(2,`Counting…`),L())}function gD(e,t){if(e&1){let e=V();I(0,`button`,13),H(`click`,function(){let t=w(e).$implicit;return T(W().navigate.emit(t.tab))}),I(1,`span`,14)(2,`span`,15),R(3,`app-tab-icon`,16),L(),I(4,`span`,17),q(5,`→`),L()(),I(6,`span`,18),q(7),L(),j(8,pD,4,2)(9,mD,4,0)(10,hD,3,0),L()}if(e&2){let e,n=t.$implicit,r=t.$index,i=W().stateOf(n.tab);G(`animation-delay`,60*r,`ms`),A(`aria-busy`,i===`loading`),O(3),F(`name`,n.tab),O(4),J(n.label),O(),M((e=i)===`ready`?8:e===`error`?9:10)}}function _D(e,t){e&1&&(I(0,`p`),q(1,`Loading…`),L())}function vD(e,t){if(e&1&&(I(0,`div`)(1,`dt`),q(2),L(),I(3,`dd`),q(4),L()()),e&2){let e=t.$implicit;O(2),J(e.label),O(2),J(e.value)}}function yD(e,t){if(e&1&&(I(0,`dl`),N(1,vD,5,2,`div`,null,rD),L()),e&2){let e=W();O(),P(e.configItems())}}function bD(e,t){e&1&&(I(0,`p`),q(1,`Defaults`),L())}var xD=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`},{tab:`forms`,label:`Forms`},{tab:`network`,label:`SSR & HTTP`}];function SD(e){return xD.filter(t=>LE(t.tab,e))}var CD={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function wD(e){return e&&Object.hasOwn(CD,e)?CD[e]:null}var TD=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),ED={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function DD(e,t,n){return`${e} ${e===1?t:n}`}function OD(e,t){for(let n of e??[])t(n),OD(n.children,t)}function kD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${DD(t,`directive`,`directives`)}`}}function AD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${DD(t,`redirect`,`redirects`)}`}}function jD(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=ED[e]??[e,e];return DD(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function MD(e,t){let n=e?.forms??[],r=t?n.filter(e=>xE(e.id)===t):n;if(!r.length)return{value:0,sub:`no forms on the page yet`};let i=r.filter(e=>e.root?.status===`INVALID`).length;return{value:r.length,sub:`${r.length===1?`form`:`forms`} · ${i} invalid`}}function ND(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function PD(e,t){let n=e?.pages??[],r=t?n.find(e=>e.pageId===t)??null:n.reduce((e,t)=>!e||t.reportedAt>e.reportedAt?t:e,null),i=t&&!r?[]:e?.serverCalls??[],a=r?.initialUrl,o=[...a?i.filter(e=>!e.pageUrl||e.pageUrl===a):i,...r?.calls??[]];if(!o.length)return{value:0,sub:`no calls recorded yet`};let s=o.filter(ND).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var FD=class e{rpc=$(null);navigate=_v();staticReport=Z(()=>yE(this.rpc()));meta=D(null);config=Z(()=>ME(this.rpc()));stats=Z(()=>this.rpc()?SD(this.config()):[]);configItems=Z(()=>eE(this.config()));metaState=D(`loading`);states=D({});rows=D({});injectorTree=D(null);signalGraph=D(null);formsState=D(null);httpState=D(null);pageId=pE();destroyRef=C(_s);stopLive=[];zone=Z(()=>wD(hE(this.injectorTree(),this.pageId)?.zone));liveInjectors=Z(()=>{let e=hE(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return OD(e.roots,r),OD(e.environment,r),{injectors:t,providers:n}});liveSignals=Z(()=>{let e=gE(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>TD.has(e.kind??``)).length:null});cards=Z(()=>{let e=this.rows(),t={};if(e.components&&(t.components=kD(e.components)),e.routes&&(t.routes=AD(e.routes)),e.store&&(t.store=jD(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();r?t.injectors={value:r.injectors,sub:`live injectors · ${DD(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`});let i=this.formsState();i&&(t.forms=MD(i,this.pageId));let a=this.httpState();return a&&(t.network=PD(a,this.pageId)),t});loadMeta(e=this.rpc()){e&&(this.metaState.set(`loading`),e.scope(`pangular`).rpc.call(`build-meta`).then(t=>{this.rpc()===e&&(this.meta.set(t),this.metaState.set(`ready`))}).catch(()=>{this.rpc()===e&&this.metaState.set(`error`)}))}constructor(){ic(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`pangular`);this.states.set({}),this.rows.set({}),this.formsState.set(null),this.httpState.set(null),this.loadMeta(e);let n=ME(e),r=e=>LE(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`pangular`).rpc,r=async(t,r,i)=>{let a=e=>i&&this.states.update(t=>({...t,[i]:e}));try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),a(`ready`),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{if(this.destroyRef.destroyed||this.rpc()!==e)return;r(null),a(`error`)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e)),LE(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),LE(`network`,t)&&r(`http`,e=>this.httpState.set(e??{}),`network`)])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[1,`hint`],[`type`,`button`,1,`retry`],[`type`,`button`,1,`retry`,3,`click`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(I(0,`section`,0)(1,`div`,1)(2,`p`,2),q(3,`Project`),L(),I(4,`h2`,3),j(5,iD,1,1)(6,aD,1,0)(7,oD,1,0),L(),j(8,uD,4,2),L(),I(9,`ul`,4)(10,`li`)(11,`span`),q(12,`Angular`),L(),q(13),L(),I(14,`li`)(15,`span`),q(16,`TypeScript`),L(),q(17),L(),I(18,`li`)(19,`span`),q(20,`SSR`),L(),q(21),L(),j(22,dD,4,1,`li`,5),j(23,fD,4,1,`li`),L()(),I(24,`div`,6),N(25,gD,11,6,`button`,7,nD),L(),I(27,`section`,8)(28,`h2`,9),q(29,`Configuration`),L(),j(30,_D,2,0,`p`)(31,yD,3,0,`dl`)(32,bD,2,0,`p`),L()),e&2){let e,n,r;A(`aria-busy`,t.metaState()===`loading`),O(4),K(`muted`,t.metaState()!==`ready`),O(),M((e=t.metaState())===`ready`?5:e===`error`?6:7),O(3),M(t.metaState()===`error`?8:-1),O(),K(`pending`,t.metaState()===`loading`),O(4),J(t.meta()?.angularVersion??`…`),O(4),J(t.meta()?.typescript??`…`),O(4),J(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),O(),M((n=t.meta()?.analog)?22:-1,n),O(),M((r=t.zone())?23:-1,r),O(2),P(t.stats()),O(2),A(`aria-busy`,!t.rpc()),O(3),M(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[tD],styles:[`[_nghost-%COMP%] { +}`]})},iD=(e,t)=>t.tab,aD=(e,t)=>t.label;function oD(e,t){e&1&&q(0),e&2&&Y(` `,W().meta()?.projectName,` `)}function sD(e,t){e&1&&q(0,` Project details unavailable `)}function cD(e,t){e&1&&q(0,` Loading… `)}function lD(e,t){e&1&&(q(0,` Run `),I(1,`code`),q(2,`pangular build`),L(),q(3,` again to rebuild the report. `))}function uD(e,t){e&1&&q(0,` Check that the dev server is running. `)}function dD(e,t){if(e&1){let e=V();I(0,`button`,12),H(`click`,function(){return w(e),T(W(2).loadMeta())}),q(1,`Try again`),L()}}function fD(e,t){if(e&1&&(I(0,`p`,10),j(1,lD,4,0)(2,uD,1,0),L(),j(3,dD,2,0,`button`,11)),e&2){let e=W();O(),M(e.staticReport()?1:2),O(2),M(e.staticReport()?-1:3)}}function pD(e,t){e&1&&(I(0,`li`,5)(1,`span`),q(2,`Analog`),L(),q(3),L()),e&2&&(O(3),J(t))}function mD(e,t){e&1&&(I(0,`li`)(1,`span`),q(2,`Change detection`),L(),q(3),L()),e&2&&(O(3),J(t))}function hD(e,t){if(e&1&&(I(0,`span`,19),q(1),L(),I(2,`span`,20),q(3),L()),e&2){let e=W().$implicit,t=W();O(),J(t.cards()[e.tab]?.value),O(2),J(t.cards()[e.tab]?.sub)}}function gD(e,t){e&1&&(I(0,`span`,21),q(1,`–`),L(),I(2,`span`,20),q(3,`Count unavailable`),L())}function _D(e,t){e&1&&(R(0,`span`,22),I(1,`span`,20),q(2,`Counting…`),L())}function vD(e,t){if(e&1){let e=V();I(0,`button`,13),H(`click`,function(){let t=w(e).$implicit;return T(W().navigate.emit(t.tab))}),I(1,`span`,14)(2,`span`,15),R(3,`app-tab-icon`,16),L(),I(4,`span`,17),q(5,`→`),L()(),I(6,`span`,18),q(7),L(),j(8,hD,4,2)(9,gD,4,0)(10,_D,3,0),L()}if(e&2){let e,n=t.$implicit,r=t.$index,i=W().stateOf(n.tab);G(`animation-delay`,60*r,`ms`),A(`aria-busy`,i===`loading`),O(3),F(`name`,n.tab),O(4),J(n.label),O(),M((e=i)===`ready`?8:e===`error`?9:10)}}function yD(e,t){e&1&&(I(0,`p`),q(1,`Loading…`),L())}function bD(e,t){if(e&1&&(I(0,`div`)(1,`dt`),q(2),L(),I(3,`dd`),q(4),L()()),e&2){let e=t.$implicit;O(2),J(e.label),O(2),J(e.value)}}function xD(e,t){if(e&1&&(I(0,`dl`),N(1,bD,5,2,`div`,null,aD),L()),e&2){let e=W();O(),P(e.configItems())}}function SD(e,t){e&1&&(I(0,`p`),q(1,`Defaults`),L())}var CD=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`},{tab:`forms`,label:`Forms`},{tab:`network`,label:`SSR & HTTP`}];function wD(e){return CD.filter(t=>zE(t.tab,e))}var TD={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function ED(e){return e&&Object.hasOwn(TD,e)?TD[e]:null}var DD=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),OD={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function kD(e,t,n){return`${e} ${e===1?t:n}`}function AD(e,t){for(let n of e??[])t(n),AD(n.children,t)}function jD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${kD(t,`directive`,`directives`)}`}}function MD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${kD(t,`redirect`,`redirects`)}`}}function ND(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=OD[e]??[e,e];return kD(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function PD(e,t){let n=e?.forms??[],r=t?n.filter(e=>CE(e.id)===t):n;if(!r.length)return{value:0,sub:`no forms on the page yet`};let i=r.filter(e=>e.root?.status===`INVALID`).length;return{value:r.length,sub:`${r.length===1?`form`:`forms`} · ${i} invalid`}}function FD(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function ID(e,t){let n=e?.pages??[],r=t?n.find(e=>e.pageId===t)??null:n.reduce((e,t)=>!e||t.reportedAt>e.reportedAt?t:e,null),i=t&&!r?[]:e?.serverCalls??[],a=r?.initialUrl,o=[...a?i.filter(e=>!e.pageUrl||e.pageUrl===a):i,...r?.calls??[]];if(!o.length)return{value:0,sub:`no calls recorded yet`};let s=o.filter(FD).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var LD=class e{rpc=$(null);navigate=_v();staticReport=Z(()=>xE(this.rpc()));meta=D(null);config=Z(()=>PE(this.rpc()));stats=Z(()=>this.rpc()?wD(this.config()):[]);configItems=Z(()=>tE(this.config()));metaState=D(`loading`);states=D({});rows=D({});injectorTree=D(null);signalGraph=D(null);formsState=D(null);httpState=D(null);pageId=mE();destroyRef=C(_s);stopLive=[];zone=Z(()=>ED(gE(this.injectorTree(),this.pageId)?.zone));liveInjectors=Z(()=>{let e=gE(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return AD(e.roots,r),AD(e.environment,r),{injectors:t,providers:n}});liveSignals=Z(()=>{let e=_E(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>DD.has(e.kind??``)).length:null});cards=Z(()=>{let e=this.rows(),t={};if(e.components&&(t.components=jD(e.components)),e.routes&&(t.routes=MD(e.routes)),e.store&&(t.store=ND(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();r?t.injectors={value:r.injectors,sub:`live injectors · ${kD(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`});let i=this.formsState();i&&(t.forms=PD(i,this.pageId));let a=this.httpState();return a&&(t.network=ID(a,this.pageId)),t});loadMeta(e=this.rpc()){e&&(this.metaState.set(`loading`),e.scope(`pangular`).rpc.call(`build-meta`).then(t=>{this.rpc()===e&&(this.meta.set(t),this.metaState.set(`ready`))}).catch(()=>{this.rpc()===e&&this.metaState.set(`error`)}))}constructor(){ic(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`pangular`);this.states.set({}),this.rows.set({}),this.formsState.set(null),this.httpState.set(null),this.loadMeta(e);let n=PE(e),r=e=>zE(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`pangular`).rpc,r=async(t,r,i)=>{let a=e=>i&&this.states.update(t=>({...t,[i]:e}));try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),a(`ready`),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{if(this.destroyRef.destroyed||this.rpc()!==e)return;r(null),a(`error`)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e)),zE(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),zE(`network`,t)&&r(`http`,e=>this.httpState.set(e??{}),`network`)])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[1,`hint`],[`type`,`button`,1,`retry`],[`type`,`button`,1,`retry`,3,`click`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(I(0,`section`,0)(1,`div`,1)(2,`p`,2),q(3,`Project`),L(),I(4,`h2`,3),j(5,oD,1,1)(6,sD,1,0)(7,cD,1,0),L(),j(8,fD,4,2),L(),I(9,`ul`,4)(10,`li`)(11,`span`),q(12,`Angular`),L(),q(13),L(),I(14,`li`)(15,`span`),q(16,`TypeScript`),L(),q(17),L(),I(18,`li`)(19,`span`),q(20,`SSR`),L(),q(21),L(),j(22,pD,4,1,`li`,5),j(23,mD,4,1,`li`),L()(),I(24,`div`,6),N(25,vD,11,6,`button`,7,iD),L(),I(27,`section`,8)(28,`h2`,9),q(29,`Configuration`),L(),j(30,yD,2,0,`p`)(31,xD,3,0,`dl`)(32,SD,2,0,`p`),L()),e&2){let e,n,r;A(`aria-busy`,t.metaState()===`loading`),O(4),K(`muted`,t.metaState()!==`ready`),O(),M((e=t.metaState())===`ready`?5:e===`error`?6:7),O(3),M(t.metaState()===`error`?8:-1),O(),K(`pending`,t.metaState()===`loading`),O(4),J(t.meta()?.angularVersion??`…`),O(4),J(t.meta()?.typescript??`…`),O(4),J(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),O(),M((n=t.meta()?.analog)?22:-1,n),O(),M((r=t.zone())?23:-1,r),O(2),P(t.stats()),O(2),A(`aria-busy`,!t.rpc()),O(3),M(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[rD],styles:[`[_nghost-%COMP%] { display: block; max-width: 1200px; } @@ -325,7 +325,7 @@ h2.muted[_ngcontent-%COMP%] { .skeleton[_ngcontent-%COMP%] { animation: none; } -}`]})},ID=`pangular:panel-action-result`,LD=6e3,RD=0;function zD(e=window){return e.location.protocol===`chrome-extension:`&&e.parent!==e}function BD(e,t=window){let n=`pa-${Date.now().toString(36)}-${++RD}`;return new Promise(r=>{let i=e=>{t.clearTimeout(o),t.removeEventListener(`message`,a),r(e)},a=({source:e,origin:r,data:a})=>{if(e!==t.parent||r!==t.location.origin)return;let o=a;if(o?.type!==ID||o.requestId!==n)return;let{opened:s,error:c}=a;i({ok:o.ok===!0,...s===`file`||s===`class`?{opened:s}:{},...typeof c==`string`?{error:c}:{}})},o=t.setTimeout(()=>i({ok:!1,error:`timeout`}),LD);t.addEventListener(`message`,a),t.parent.postMessage({...e,requestId:n},t.location.origin)})}var VD=class e{available=zD();reveal(e,t){return BD({type:`pangular:reveal-element`,pageId:e,id:t})}openSource(e,t,n){return BD({type:`pangular:open-source`,pageId:e,id:t,...n?{file:n.file,line:n.line}:{}})}static ɵfac=function(t){return new(t||e)};static ɵprov=Cl({token:e,factory:e.ɵfac})};function HD(e){let t=e?.pages;return t&&typeof t==`object`?t:{}}function UD(e){let t=C(_s),n=D({}),r=null,i=null,a=async e=>{i?.(),i=null,r=e;try{let a=await e.scope(`pangular`).rpc.sharedState(`page-angular`);if(t.destroyed||r!==e)return;let o=e=>n.set(HD(e));o(a.value()),i=a.on(`updated`,o)}catch{r===e&&n.set({})}};return ic(()=>{let t=e();t&&t!==r&&mv(()=>void a(t))}),t.onDestroy(()=>i?.()),n.asReadonly()}function WD(e,t){if(t)return e[t]??null;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n}var GD=[`*`];function KD(e,t){if(e&1&&(z(0,`div`,1)(1,`p`,2),q(2),B(),z(3,`p`,3),q(4),Ug(5),z(6,`a`,4),q(7,`Supported versions`),B()()()),e&2){let e=W();K(`compact`,e.compact()),O(2),J(e.title()),O(2),Y(` `,t,` `),O(2),kg(`href`,e.docsUrl,Cu)}}var qD=`https://pangular-inspector.dev/getting-started/installation/#supported-angular-versions`,JD=class e{page=$(null);capability=$.required();missing=$(!1,{transform:Mv});compact=$(!1,{transform:Mv});docsUrl=qD;text=Z(()=>{let e=this.page();return!this.missing()&&!cE(e,this.capability())?null:lE(this.capability(),e?.version)});title=Z(()=>{let e=this.page()?.version;return e?`Not available on Angular ${aE(e)}`:`Not available on this page`});static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-angular-unavailable`]],inputs:{page:[1,`page`],capability:[1,`capability`],missing:[1,`missing`],compact:[1,`compact`]},ngContentSelectors:GD,decls:1,vars:1,consts:[[`role`,`status`,1,`unavailable`,3,`compact`],[`role`,`status`,1,`unavailable`],[1,`title`],[1,`hint`],[`target`,`_blank`,`rel`,`noopener noreferrer`,3,`href`]],template:function(e,t){if(e&1&&(Hg(),j(0,KD,8,5,`div`,0)),e&2){let e;M((e=t.text())?0:-1,e)}},styles:[`[_nghost-%COMP%] { +}`]})},RD=`pangular:panel-action-result`,zD=6e3,BD=0;function VD(e=window){return e.location.protocol===`chrome-extension:`&&e.parent!==e}function HD(e,t=window){let n=`pa-${Date.now().toString(36)}-${++BD}`;return new Promise(r=>{let i=e=>{t.clearTimeout(o),t.removeEventListener(`message`,a),r(e)},a=({source:e,origin:r,data:a})=>{if(e!==t.parent||r!==t.location.origin)return;let o=a;if(o?.type!==RD||o.requestId!==n)return;let{opened:s,error:c}=a;i({ok:o.ok===!0,...s===`file`||s===`class`?{opened:s}:{},...typeof c==`string`?{error:c}:{}})},o=t.setTimeout(()=>i({ok:!1,error:`timeout`}),zD);t.addEventListener(`message`,a),t.parent.postMessage({...e,requestId:n},t.location.origin)})}var UD=class e{available=VD();reveal(e,t){return HD({type:`pangular:reveal-element`,pageId:e,id:t})}openSource(e,t,n){return HD({type:`pangular:open-source`,pageId:e,id:t,...n?{file:n.file,line:n.line}:{}})}static ɵfac=function(t){return new(t||e)};static ɵprov=Cl({token:e,factory:e.ɵfac})};function WD(e){let t=e?.pages;return t&&typeof t==`object`?t:{}}function GD(e){let t=C(_s),n=D({}),r=null,i=null,a=async e=>{i?.(),i=null,r=e;try{let a=await e.scope(`pangular`).rpc.sharedState(`page-angular`);if(t.destroyed||r!==e)return;let o=e=>n.set(WD(e));o(a.value()),i=a.on(`updated`,o)}catch{r===e&&n.set({})}};return ic(()=>{let t=e();t&&t!==r&&mv(()=>void a(t))}),t.onDestroy(()=>i?.()),n.asReadonly()}function KD(e,t){if(t)return e[t]??null;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n}var qD=[`*`];function JD(e,t){if(e&1&&(z(0,`div`,1)(1,`p`,2),q(2),B(),z(3,`p`,3),q(4),Ug(5),z(6,`a`,4),q(7,`Supported versions`),B()()()),e&2){let e=W();K(`compact`,e.compact()),O(2),J(e.title()),O(2),Y(` `,t,` `),O(2),kg(`href`,e.docsUrl,Cu)}}var YD=`https://pangular-inspector.dev/getting-started/installation/#supported-angular-versions`,XD=class e{page=$(null);capability=$.required();missing=$(!1,{transform:Mv});compact=$(!1,{transform:Mv});docsUrl=YD;text=Z(()=>{let e=this.page();return!this.missing()&&!lE(e,this.capability())?null:uE(this.capability(),e?.version)});title=Z(()=>{let e=this.page()?.version;return e?`Not available on Angular ${oE(e)}`:`Not available on this page`});static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-angular-unavailable`]],inputs:{page:[1,`page`],capability:[1,`capability`],missing:[1,`missing`],compact:[1,`compact`]},ngContentSelectors:qD,decls:1,vars:1,consts:[[`role`,`status`,1,`unavailable`,3,`compact`],[`role`,`status`,1,`unavailable`],[1,`title`],[1,`hint`],[`target`,`_blank`,`rel`,`noopener noreferrer`,3,`href`]],template:function(e,t){if(e&1&&(Hg(),j(0,JD,8,5,`div`,0)),e&2){let e;M((e=t.text())?0:-1,e)}},styles:[`[_nghost-%COMP%] { display: block; } @@ -372,7 +372,7 @@ a[_ngcontent-%COMP%] { a[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--%NS%accent); outline-offset: 2px; -}`]})};function YD(e){return e?.platform===`angular-native`}function XD(e){return YD(e)||e?.platform===`nativescript`}function ZD(e,t){let n=Object.values(e??{}).filter(YD);if(t&&n.some(e=>e.pageId===t))return t;let r=null;for(let e of n)(!r||e.reportedAt>r.reportedAt)&&(r=e);return r?.pageId??null}var QD=[`trigger`],$D=[`list`],eO=(e,t)=>t.value;function tO(e,t){if(e&1&&(z(0,`span`,4),q(1),B()),e&2){let e=W();O(),J(e.current().hint)}}function nO(e,t){if(e&1&&(z(0,`span`,15),q(1),B()),e&2){let e=W().$implicit;O(),J(e.hint)}}function rO(e,t){if(e&1){let e=V();z(0,`li`,11),U(`pointerenter`,function(){let t=w(e).$index;return T(W(2).active.set(t))})(`pointerdown`,function(e){return e.preventDefault()})(`click`,function(){let t=w(e).$index;return T(W(2).choose(t))}),E(),z(1,`svg`,12),Cg(2,`path`,13),B(),ss(),z(3,`span`,14),q(4),B(),j(5,nO,2,1,`span`,15),B()}if(e&2){let e=t.$implicit,n=t.$index,r=W(2);K(`active`,n===r.active())(`selected`,e.value===r.value()),A(`id`,r.uid+`-opt-`+n)(`aria-selected`,e.value===r.value())(`aria-disabled`,e.disabled||null),O(4),J(e.label),O(),M(e.hint?5:-1)}}function iO(e,t){if(e&1&&(z(0,`li`,10),q(1),B()),e&2){let e=W(2);O(),J(e.emptyText())}}function aO(e,t){if(e&1&&(z(0,`ul`,8,1),$h(`list-in`),U(`pointerdown`,function(e){return e.preventDefault()}),N(2,rO,6,9,`li`,9,eO,!1,iO,2,1,`li`,10),B()),e&2){let e=W();K(`up`,e.dropUp()),A(`id`,e.uid+`-list`)(`aria-labelledby`,e.labelledBy()||e.uid+`-trigger`),O(2),P(e.options())}}var oO=0,sO=class e{options=$.required();value=Sv(null);placeholder=$(`Select…`);ariaLabel=$(``);labelledBy=$(``);describedBy=$(``);disabled=$(!1);emptyText=$(`Nothing to choose`);uid=`app-select-${++oO}`;open=D(!1);active=D(-1);dropUp=D(!1);current=Z(()=>this.options().find(e=>e.value===this.value())??null);host=C(El);injector=C(hs);trigger=wv.required(`trigger`);list=wv(`list`);typed=``;typedAt=0;toggle(){this.open()?this.close():this.show()}choose(e){let t=this.options()[e];t&&!t.disabled&&(this.value.set(t.value),this.close(),this.trigger().nativeElement.focus())}onKey(e){let t=this.options(),n=this.open();switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!n){this.show();return}this.move(e.key===`ArrowDown`?1:-1);return;case`Home`:case`End`:if(!n)return;e.preventDefault(),this.setActive(e.key===`Home`?this.firstEnabled(0,1):this.firstEnabled(t.length-1,-1));return;case`Enter`:case` `:e.preventDefault(),n&&this.active()>=0?this.choose(this.active()):this.show();return;case`Escape`:if(!n)return;e.preventDefault(),e.stopPropagation(),this.close();return;case`Tab`:n&&this.close();return;default:e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&this.typeAhead(e.key)}}onBlur(e){let t=e.relatedTarget;t&&this.host.nativeElement.contains(t)||this.close()}onOutside(e){this.open()&&!this.host.nativeElement.contains(e.target)&&this.close()}show(){if(this.disabled())return;let e=this.host.nativeElement.getBoundingClientRect(),t=window.innerHeight-e.bottom;this.dropUp.set(t<220&&e.top>t);let n=this.options().findIndex(e=>e.value===this.value());this.open.set(!0),this.setActive(n>=0?n:this.firstEnabled(0,1))}close(){this.open.set(!1),this.active.set(-1)}move(e){let t=this.firstEnabled(this.active()+e,e);t>=0&&this.setActive(t)}firstEnabled(e,t){let n=this.options();for(let r=e;r>=0&&r{(this.list()?.nativeElement.querySelector(`#${this.uid}-opt-${e}`))?.scrollIntoView({block:`nearest`})},{injector:this.injector})}typeAhead(e){let t=performance.now();this.typed=t-this.typedAt>600?e.toLowerCase():this.typed+e.toLowerCase(),this.typedAt=t;let n=this.options().findIndex(e=>!e.disabled&&e.label.toLowerCase().startsWith(this.typed));n<0||(this.open()?this.setActive(n):this.value.set(this.options()[n].value))}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-select`]],viewQuery:function(e,t){e&1&&Gg(t.trigger,QD,5)(t.list,$D,5),e&2&&Kg(2)},hostAttrs:[1,`app-select`],hostVars:2,hostBindings:function(e,t){e&1&&H(`pointerdown`,function(e){return t.onOutside(e)},Eu),e&2&&K(`open`,t.open())},inputs:{options:[1,`options`],value:[1,`value`],placeholder:[1,`placeholder`],ariaLabel:[1,`ariaLabel`],labelledBy:[1,`labelledBy`],describedBy:[1,`describedBy`],disabled:[1,`disabled`],emptyText:[1,`emptyText`]},outputs:{value:`valueChange`},decls:8,vars:13,consts:[[`trigger`,``],[`list`,``],[`type`,`button`,`role`,`combobox`,`aria-haspopup`,`listbox`,1,`trigger`,3,`click`,`keydown`,`blur`,`disabled`],[1,`value`],[1,`value-hint`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m6 9 6 6 6-6`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`up`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`pointerdown`],[`role`,`option`,3,`active`,`selected`],[`role`,`option`,`aria-disabled`,`true`,1,`empty`],[`role`,`option`,3,`pointerenter`,`pointerdown`,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`check`],[`d`,`m5 12 5 5 9-10`],[1,`label`],[1,`hint`]],template:function(e,t){e&1&&(z(0,`button`,2,0),U(`click`,function(){return t.toggle()})(`keydown`,function(e){return t.onKey(e)})(`blur`,function(e){return t.onBlur(e)}),z(2,`span`,3),q(3),B(),j(4,tO,2,1,`span`,4),E(),z(5,`svg`,5),Cg(6,`path`,6),B()(),j(7,aO,5,5,`ul`,7)),e&2&&(kg(`disabled`,t.disabled()),A(`id`,t.uid+`-trigger`)(`aria-controls`,t.uid+`-list`)(`aria-expanded`,t.open())(`aria-label`,t.ariaLabel()||null)(`aria-labelledby`,t.labelledBy()||null)(`aria-describedby`,t.describedBy()||null)(`aria-activedescendant`,t.open()&&t.active()>=0?t.uid+`-opt-`+t.active():null),O(2),K(`placeholder`,!t.current()),O(),Y(` `,t.current()?.label??t.placeholder(),` `),O(),M(t.current()?.hint?4:-1),O(3),M(t.open()?7:-1))},styles:[`[_nghost-%COMP%] { +}`]})};function ZD(e){return e?.platform===`angular-native`}function QD(e){return ZD(e)||e?.platform===`nativescript`}function $D(e,t){let n=Object.values(e??{}).filter(ZD);if(t&&n.some(e=>e.pageId===t))return t;let r=null;for(let e of n)(!r||e.reportedAt>r.reportedAt)&&(r=e);return r?.pageId??null}var eO=[`trigger`],tO=[`list`],nO=(e,t)=>t.value;function rO(e,t){if(e&1&&(z(0,`span`,4),q(1),B()),e&2){let e=W();O(),J(e.current().hint)}}function iO(e,t){if(e&1&&(z(0,`span`,15),q(1),B()),e&2){let e=W().$implicit;O(),J(e.hint)}}function aO(e,t){if(e&1){let e=V();z(0,`li`,11),U(`pointerenter`,function(){let t=w(e).$index;return T(W(2).active.set(t))})(`pointerdown`,function(e){return e.preventDefault()})(`click`,function(){let t=w(e).$index;return T(W(2).choose(t))}),E(),z(1,`svg`,12),Cg(2,`path`,13),B(),ss(),z(3,`span`,14),q(4),B(),j(5,iO,2,1,`span`,15),B()}if(e&2){let e=t.$implicit,n=t.$index,r=W(2);K(`active`,n===r.active())(`selected`,e.value===r.value()),A(`id`,r.uid+`-opt-`+n)(`aria-selected`,e.value===r.value())(`aria-disabled`,e.disabled||null),O(4),J(e.label),O(),M(e.hint?5:-1)}}function oO(e,t){if(e&1&&(z(0,`li`,10),q(1),B()),e&2){let e=W(2);O(),J(e.emptyText())}}function sO(e,t){if(e&1&&(z(0,`ul`,8,1),$h(`list-in`),U(`pointerdown`,function(e){return e.preventDefault()}),N(2,aO,6,9,`li`,9,nO,!1,oO,2,1,`li`,10),B()),e&2){let e=W();K(`up`,e.dropUp()),A(`id`,e.uid+`-list`)(`aria-labelledby`,e.labelledBy()||e.uid+`-trigger`),O(2),P(e.options())}}var cO=0,lO=class e{options=$.required();value=Sv(null);placeholder=$(`Select…`);ariaLabel=$(``);labelledBy=$(``);describedBy=$(``);disabled=$(!1);emptyText=$(`Nothing to choose`);uid=`app-select-${++cO}`;open=D(!1);active=D(-1);dropUp=D(!1);current=Z(()=>this.options().find(e=>e.value===this.value())??null);host=C(El);injector=C(hs);trigger=wv.required(`trigger`);list=wv(`list`);typed=``;typedAt=0;toggle(){this.open()?this.close():this.show()}choose(e){let t=this.options()[e];t&&!t.disabled&&(this.value.set(t.value),this.close(),this.trigger().nativeElement.focus())}onKey(e){let t=this.options(),n=this.open();switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!n){this.show();return}this.move(e.key===`ArrowDown`?1:-1);return;case`Home`:case`End`:if(!n)return;e.preventDefault(),this.setActive(e.key===`Home`?this.firstEnabled(0,1):this.firstEnabled(t.length-1,-1));return;case`Enter`:case` `:e.preventDefault(),n&&this.active()>=0?this.choose(this.active()):this.show();return;case`Escape`:if(!n)return;e.preventDefault(),e.stopPropagation(),this.close();return;case`Tab`:n&&this.close();return;default:e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&this.typeAhead(e.key)}}onBlur(e){let t=e.relatedTarget;t&&this.host.nativeElement.contains(t)||this.close()}onOutside(e){this.open()&&!this.host.nativeElement.contains(e.target)&&this.close()}show(){if(this.disabled())return;let e=this.host.nativeElement.getBoundingClientRect(),t=window.innerHeight-e.bottom;this.dropUp.set(t<220&&e.top>t);let n=this.options().findIndex(e=>e.value===this.value());this.open.set(!0),this.setActive(n>=0?n:this.firstEnabled(0,1))}close(){this.open.set(!1),this.active.set(-1)}move(e){let t=this.firstEnabled(this.active()+e,e);t>=0&&this.setActive(t)}firstEnabled(e,t){let n=this.options();for(let r=e;r>=0&&r{(this.list()?.nativeElement.querySelector(`#${this.uid}-opt-${e}`))?.scrollIntoView({block:`nearest`})},{injector:this.injector})}typeAhead(e){let t=performance.now();this.typed=t-this.typedAt>600?e.toLowerCase():this.typed+e.toLowerCase(),this.typedAt=t;let n=this.options().findIndex(e=>!e.disabled&&e.label.toLowerCase().startsWith(this.typed));n<0||(this.open()?this.setActive(n):this.value.set(this.options()[n].value))}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-select`]],viewQuery:function(e,t){e&1&&Gg(t.trigger,eO,5)(t.list,tO,5),e&2&&Kg(2)},hostAttrs:[1,`app-select`],hostVars:2,hostBindings:function(e,t){e&1&&H(`pointerdown`,function(e){return t.onOutside(e)},Eu),e&2&&K(`open`,t.open())},inputs:{options:[1,`options`],value:[1,`value`],placeholder:[1,`placeholder`],ariaLabel:[1,`ariaLabel`],labelledBy:[1,`labelledBy`],describedBy:[1,`describedBy`],disabled:[1,`disabled`],emptyText:[1,`emptyText`]},outputs:{value:`valueChange`},decls:8,vars:13,consts:[[`trigger`,``],[`list`,``],[`type`,`button`,`role`,`combobox`,`aria-haspopup`,`listbox`,1,`trigger`,3,`click`,`keydown`,`blur`,`disabled`],[1,`value`],[1,`value-hint`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m6 9 6 6 6-6`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`up`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`pointerdown`],[`role`,`option`,3,`active`,`selected`],[`role`,`option`,`aria-disabled`,`true`,1,`empty`],[`role`,`option`,3,`pointerenter`,`pointerdown`,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`check`],[`d`,`m5 12 5 5 9-10`],[1,`label`],[1,`hint`]],template:function(e,t){e&1&&(z(0,`button`,2,0),U(`click`,function(){return t.toggle()})(`keydown`,function(e){return t.onKey(e)})(`blur`,function(e){return t.onBlur(e)}),z(2,`span`,3),q(3),B(),j(4,rO,2,1,`span`,4),E(),z(5,`svg`,5),Cg(6,`path`,6),B()(),j(7,sO,5,5,`ul`,7)),e&2&&(kg(`disabled`,t.disabled()),A(`id`,t.uid+`-trigger`)(`aria-controls`,t.uid+`-list`)(`aria-expanded`,t.open())(`aria-label`,t.ariaLabel()||null)(`aria-labelledby`,t.labelledBy()||null)(`aria-describedby`,t.describedBy()||null)(`aria-activedescendant`,t.open()&&t.active()>=0?t.uid+`-opt-`+t.active():null),O(2),K(`placeholder`,!t.current()),O(),Y(` `,t.current()?.label??t.placeholder(),` `),O(),M(t.current()?.hint?4:-1),O(3),M(t.open()?7:-1))},styles:[`[_nghost-%COMP%] { position: relative; display: inline-flex; min-width: 0; @@ -567,7 +567,7 @@ li.selected[_ngcontent-%COMP%] .check[_ngcontent-%COMP%] { .chevron[_ngcontent-%COMP%] { transition: none; } -}`]})};function cO(e,t){let n=tE(t);if(nE(n))return{nodes:e,matches:0};let r=0,i=e=>e.flatMap(e=>{let t=rE(e,n);t&&r++;let a=i(e.children);return t||a.length?[{...e,children:a}]:[]});return{nodes:i(e),matches:r}}function lO(e){return e.flatMap(e=>e.kind===`directive`?lO(e.children):[{...e,children:lO(e.children)}])}function uO(e){return(e.attributes?.length?e.attributes:e.directives??[e.name]).map(e=>`[${e}]`).join(` `)}var dO={hydrated:`Hydrated`,skipped:`Skipped`,mismatched:`Mismatch`,client:`Client`};function fO(e){return dO[e]}function pO(e,t,n,r=!1,i=0){let a=r?`${e}+`:`${e}`;if(n)return`${t} of ${r?`${e+i}+`:e+i}`;let o=i?` · ${i} directive ${i===1?`host`:`hosts`}`:``;return`${a} ${e===1&&!r?`instance`:`instances`}${o}`}function mO(e,t,n,r=!1,i=0){if(!n.trim())return``;if(!t)return`No components match.`;let a=e+i,o=r?`${a}+`:`${a}`,s=!r&&a===1;return`${t} of ${o} ${i?s?`row`:`rows`:s?`instance`:`instances`} match.`}function hO(e){let t=e?.components,n=e?.depth;return t&&n?`Showing the first ${t} component instances, and none nested more than ${n} elements deep. Others are not listed or searchable.`:t?`Showing the first ${t} component instances. Others are not listed or searchable.`:n?`Components nested more than ${n} elements deep are not listed or searchable.`:`The page has more components than the tree shows.`}function gO(e,t){let n=t?.detail?.id??null,r=t?.pageId??null;if(r!==e.pageId)return{pageId:r,selectedId:n,detailId:n,destroyed:null};let i=e.selectedId;return n&&n!==e.detailId&&n!==i&&(i=n),i&&t&&!t.truncated&&!_O(t.roots,i)?{pageId:r,selectedId:null,detailId:n,destroyed:i}:{pageId:r,selectedId:i,detailId:n,destroyed:null}}function _O(e,t){return e.some(e=>e.id===t||_O(e.children,t))}function vO(e,t,n){let r=e.indexOf(n);if(r<0)return null;for(let n=r+1;n=0;n--)if(t.has(e[n]))return e[n];return null}var yO=(e,t)=>t.key,bO=(e,t)=>t.id;function xO(e,t){e&1&&(z(0,`p`,2),q(1,` The HTML came from the server, but no component was hydrated, so the app rendered again on the client. Add `),z(2,`code`),q(3,`provideClientHydration()`),B(),q(4,` and use a development build to see each component's status. `),B())}function SO(e,t){if(e&1&&(z(0,`li`)(1,`span`,9),q(2),B(),q(3),B()),e&2){let e=t.$implicit;m_(`count count-`+e.key),O(2),J(e.value),O(),Y(` `,e.label,` `)}}function CO(e,t){if(e&1&&(z(0,`span`,15),q(1,`Expected `),z(2,`code`),q(3),B()()),e&2){let e=W().$implicit;O(3),J(e.expected)}}function wO(e,t){if(e&1&&(z(0,`span`,15),q(1,`Found `),z(2,`code`),q(3),B()()),e&2){let e=W().$implicit;O(3),J(e.actual)}}function TO(e,t){if(e&1){let e=V();z(0,`li`)(1,`button`,12),U(`click`,function(){let t=w(e).$implicit;return T(W(4).showNode.emit(t.id))})(`focus`,function(){let t=w(e).$implicit;return T(W(4).highlight.emit(t.id))})(`blur`,function(){return w(e),T(W(4).highlight.emit(null))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(4).highlight.emit(t.id))})(`mouseleave`,function(){return w(e),T(W(4).highlight.emit(null))}),z(2,`span`,13),q(3),B(),z(4,`span`,14),q(5),B(),j(6,CO,4,1,`span`,15),j(7,wO,4,1,`span`,15),B()()}if(e&2){let e=t.$implicit;O(3),J(e.name),O(2),Y(`<`,e.tag,`>`),O(),M(e.expected?6:-1),O(),M(e.actual?7:-1)}}function EO(e,t){if(e&1&&(z(0,`h3`,10),q(1,`Mismatches`),B(),z(2,`ul`,11),N(3,TO,8,4,`li`,null,bO),B()),e&2){let e=W(2);O(3),P(e.mismatches)}}function DO(e,t){if(e&1){let e=V();z(0,`div`,3)(1,`ul`,4),N(2,SO,4,4,`li`,5,yO),B(),z(4,`button`,6),U(`click`,function(){return w(e),T(W(2).toggleOverlay())}),E(),z(5,`svg`,7),Cg(6,`rect`,8),B(),q(7,` Outline on page `),B()(),j(8,EO,5,0)}if(e&2){let e=W(),t=W();O(2),P(t.counts()),O(2),A(`aria-pressed`,t.overlayOn()),O(4),M(e.mismatches.length?8:-1)}}function OO(e,t){e&1&&j(0,xO,5,0,`p`,2)(1,DO,9,2),e&2&&M(+!!t.hydrated)}function kO(e,t){e&1&&(z(0,`p`,2),q(1,` This page was not rendered on the server, so there is nothing to hydrate. With server-side rendering and `),z(2,`code`),q(3,`provideClientHydration()`),B(),q(4,`, each component shows whether it was hydrated, skipped or mismatched. `),B())}var AO=class e{report=$(void 0);overlay=_v();showNode=_v();highlight=_v();overlayOn=Q(()=>this.report()?.overlay===!0);counts=Z(()=>{let e=this.report()?.counts;return e?[{key:`hydrated`,label:`hydrated`,value:e.hydrated},{key:`skipped`,label:`skipped`,value:e.skipped},{key:`mismatched`,label:`mismatched`,value:e.mismatched},{key:`client`,label:`created on the client`,value:e.client},{key:`dehydratedBlocks`,label:e.dehydratedBlocks===1?`dehydrated @defer block`:`dehydrated @defer blocks`,value:e.dehydratedBlocks}]:[]});toggleOverlay(){let e=!this.overlayOn();this.overlayOn.set(e),this.overlay.emit(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-hydration-section`]],inputs:{report:[1,`report`]},outputs:{overlay:`overlay`,showNode:`showNode`,highlight:`highlight`},decls:5,vars:1,consts:[[`aria-labelledby`,`ct-hydration-title`,1,`hydration`],[`id`,`ct-hydration-title`,1,`title`],[1,`empty`],[1,`summary`],[`aria-label`,`Hydration summary`,1,`counts`],[3,`class`],[`type`,`button`,1,`outline`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`x`,`3`,`y`,`3`,`width`,`18`,`height`,`18`,`rx`,`2`,`stroke-dasharray`,`4 3`],[1,`num`],[1,`label`],[1,`mismatches`],[`type`,`button`,1,`mismatch`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`mono`,`muted`],[1,`detail-line`]],template:function(e,t){if(e&1&&(z(0,`section`,0)(1,`h2`,1),q(2,`Hydration`),B(),j(3,OO,2,1)(4,kO,5,0,`p`,2),B()),e&2){let e;O(3),M((e=t.report())?3:4,e)}},styles:[`.hydration[_ngcontent-%COMP%] { +}`]})};function uO(e,t){let n=nE(t);if(rE(n))return{nodes:e,matches:0};let r=0,i=e=>e.flatMap(e=>{let t=iE(e,n);t&&r++;let a=i(e.children);return t||a.length?[{...e,children:a}]:[]});return{nodes:i(e),matches:r}}function dO(e){return e.flatMap(e=>e.kind===`directive`?dO(e.children):[{...e,children:dO(e.children)}])}function fO(e){return(e.attributes?.length?e.attributes:e.directives??[e.name]).map(e=>`[${e}]`).join(` `)}var pO={hydrated:`Hydrated`,skipped:`Skipped`,mismatched:`Mismatch`,client:`Client`};function mO(e){return pO[e]}function hO(e,t,n,r=!1,i=0){let a=r?`${e}+`:`${e}`;if(n)return`${t} of ${r?`${e+i}+`:e+i}`;let o=i?` · ${i} directive ${i===1?`host`:`hosts`}`:``;return`${a} ${e===1&&!r?`instance`:`instances`}${o}`}function gO(e,t,n,r=!1,i=0){if(!n.trim())return``;if(!t)return`No components match.`;let a=e+i,o=r?`${a}+`:`${a}`,s=!r&&a===1;return`${t} of ${o} ${i?s?`row`:`rows`:s?`instance`:`instances`} match.`}function _O(e){let t=e?.components,n=e?.depth;return t&&n?`Showing the first ${t} component instances, and none nested more than ${n} elements deep. Others are not listed or searchable.`:t?`Showing the first ${t} component instances. Others are not listed or searchable.`:n?`Components nested more than ${n} elements deep are not listed or searchable.`:`The page has more components than the tree shows.`}function vO(e,t){let n=t?.detail?.id??null,r=t?.pageId??null;if(r!==e.pageId)return{pageId:r,selectedId:n,detailId:n,destroyed:null};let i=e.selectedId;return n&&n!==e.detailId&&n!==i&&(i=n),i&&t&&!t.truncated&&!yO(t.roots,i)?{pageId:r,selectedId:null,detailId:n,destroyed:i}:{pageId:r,selectedId:i,detailId:n,destroyed:null}}function yO(e,t){return e.some(e=>e.id===t||yO(e.children,t))}function bO(e,t,n){let r=e.indexOf(n);if(r<0)return null;for(let n=r+1;n=0;n--)if(t.has(e[n]))return e[n];return null}var xO=(e,t)=>t.key,SO=(e,t)=>t.id;function CO(e,t){e&1&&(z(0,`p`,2),q(1,` The HTML came from the server, but no component was hydrated, so the app rendered again on the client. Add `),z(2,`code`),q(3,`provideClientHydration()`),B(),q(4,` and use a development build to see each component's status. `),B())}function wO(e,t){if(e&1&&(z(0,`li`)(1,`span`,9),q(2),B(),q(3),B()),e&2){let e=t.$implicit;m_(`count count-`+e.key),O(2),J(e.value),O(),Y(` `,e.label,` `)}}function TO(e,t){if(e&1&&(z(0,`span`,15),q(1,`Expected `),z(2,`code`),q(3),B()()),e&2){let e=W().$implicit;O(3),J(e.expected)}}function EO(e,t){if(e&1&&(z(0,`span`,15),q(1,`Found `),z(2,`code`),q(3),B()()),e&2){let e=W().$implicit;O(3),J(e.actual)}}function DO(e,t){if(e&1){let e=V();z(0,`li`)(1,`button`,12),U(`click`,function(){let t=w(e).$implicit;return T(W(4).showNode.emit(t.id))})(`focus`,function(){let t=w(e).$implicit;return T(W(4).highlight.emit(t.id))})(`blur`,function(){return w(e),T(W(4).highlight.emit(null))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(4).highlight.emit(t.id))})(`mouseleave`,function(){return w(e),T(W(4).highlight.emit(null))}),z(2,`span`,13),q(3),B(),z(4,`span`,14),q(5),B(),j(6,TO,4,1,`span`,15),j(7,EO,4,1,`span`,15),B()()}if(e&2){let e=t.$implicit;O(3),J(e.name),O(2),Y(`<`,e.tag,`>`),O(),M(e.expected?6:-1),O(),M(e.actual?7:-1)}}function OO(e,t){if(e&1&&(z(0,`h3`,10),q(1,`Mismatches`),B(),z(2,`ul`,11),N(3,DO,8,4,`li`,null,SO),B()),e&2){let e=W(2);O(3),P(e.mismatches)}}function kO(e,t){if(e&1){let e=V();z(0,`div`,3)(1,`ul`,4),N(2,wO,4,4,`li`,5,xO),B(),z(4,`button`,6),U(`click`,function(){return w(e),T(W(2).toggleOverlay())}),E(),z(5,`svg`,7),Cg(6,`rect`,8),B(),q(7,` Outline on page `),B()(),j(8,OO,5,0)}if(e&2){let e=W(),t=W();O(2),P(t.counts()),O(2),A(`aria-pressed`,t.overlayOn()),O(4),M(e.mismatches.length?8:-1)}}function AO(e,t){e&1&&j(0,CO,5,0,`p`,2)(1,kO,9,2),e&2&&M(+!!t.hydrated)}function jO(e,t){e&1&&(z(0,`p`,2),q(1,` This page was not rendered on the server, so there is nothing to hydrate. With server-side rendering and `),z(2,`code`),q(3,`provideClientHydration()`),B(),q(4,`, each component shows whether it was hydrated, skipped or mismatched. `),B())}var MO=class e{report=$(void 0);overlay=_v();showNode=_v();highlight=_v();overlayOn=Q(()=>this.report()?.overlay===!0);counts=Z(()=>{let e=this.report()?.counts;return e?[{key:`hydrated`,label:`hydrated`,value:e.hydrated},{key:`skipped`,label:`skipped`,value:e.skipped},{key:`mismatched`,label:`mismatched`,value:e.mismatched},{key:`client`,label:`created on the client`,value:e.client},{key:`dehydratedBlocks`,label:e.dehydratedBlocks===1?`dehydrated @defer block`:`dehydrated @defer blocks`,value:e.dehydratedBlocks}]:[]});toggleOverlay(){let e=!this.overlayOn();this.overlayOn.set(e),this.overlay.emit(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-hydration-section`]],inputs:{report:[1,`report`]},outputs:{overlay:`overlay`,showNode:`showNode`,highlight:`highlight`},decls:5,vars:1,consts:[[`aria-labelledby`,`ct-hydration-title`,1,`hydration`],[`id`,`ct-hydration-title`,1,`title`],[1,`empty`],[1,`summary`],[`aria-label`,`Hydration summary`,1,`counts`],[3,`class`],[`type`,`button`,1,`outline`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`x`,`3`,`y`,`3`,`width`,`18`,`height`,`18`,`rx`,`2`,`stroke-dasharray`,`4 3`],[1,`num`],[1,`label`],[1,`mismatches`],[`type`,`button`,1,`mismatch`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`mono`,`muted`],[1,`detail-line`]],template:function(e,t){if(e&1&&(z(0,`section`,0)(1,`h2`,1),q(2,`Hydration`),B(),j(3,AO,2,1)(4,jO,5,0,`p`,2),B()),e&2){let e;O(3),M((e=t.report())?3:4,e)}},styles:[`.hydration[_ngcontent-%COMP%] { margin-top: 16px; } @@ -738,7 +738,7 @@ svg[_ngcontent-%COMP%] { button[_ngcontent-%COMP%] { transition: none; } -}`]})};function jO(e){return new Date(e).toLocaleTimeString()}var MO=/[ \t\n\r]/;function NO(e){let t=e.trim(),n;try{n=JSON.parse(t)}catch{return null}if(typeof n!=`object`||!n)return null;let r=``,i=0,a=()=>`\n${` `.repeat(i)}`;for(let e=0;e0?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})};function NO(e){return new Date(e).toLocaleTimeString()}var PO=/[ \t\n\r]/;function FO(e){let t=e.trim(),n;try{n=JSON.parse(t)}catch{return null}if(typeof n!=`object`||!n)return null;let r=``,i=0,a=()=>`\n${` `.repeat(i)}`;for(let e=0;e0?0:-1)},styles:[`[_nghost-%COMP%] { display: block; } @@ -765,7 +765,7 @@ a[_ngcontent-%COMP%] { a[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--%NS%accent); outline-offset: 2px; -}`]})},LO=864e13,RO=200,zO=300,BO=100,VO=10,HO=100,UO=2e3,WO=2e3,GO=4e3,KO=1e3,qO=100,JO=3,YO=50,XO={component:`c`,hook:`h`,afterRender:`r`,output:`o`},ZO=Object.values(XO),QO=e=>!!e&&typeof e==`object`&&!Array.isArray(e),$O=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:0,ek=(e,t)=>typeof e==`string`?e.slice(0,t):``,tk=e=>$O(e)>0?$O(e):void 0,nk=(e,t)=>Array.isArray(e)?e.slice(0,t):[];function rk(e){if(!QO(e))return null;let t=ek(e.name,RO);return t?{name:t,checks:$O(e.checks),ms:$O(e.ms)}:null}function ik(e,t){if(!Array.isArray(e)||e.length!==5)return null;let[n,r,i,a,o]=e;return typeof n!=`number`||!Number.isInteger(n)||n<0||n>=t||typeof r!=`number`||!Number.isFinite(r)||Math.abs(r)>1e7||typeof a!=`number`||!Number.isInteger(a)||a<0||a>KO||typeof o!=`string`||!ZO.includes(o)?null:[n,r,$O(i),a,o]}function ak(e,t){if(!QO(e)||typeof e.id!=`number`)return null;let n=nk(e.components,VO).map(rk).filter(e=>!!e),r=ek(e.trigger,zO),i=nk(e.spans,40).map(e=>ik(e,t)).filter(e=>!!e),a=Array.isArray(e.spans)?e.spans.length-40:0,o=Math.floor($O(e.droppedSpans))+Math.max(0,a),s={t:typeof e.t==`number`?$O(e.t):void 0,hookMs:tk(e.hookMs),afterRenderMs:tk(e.afterRenderMs),outputMs:tk(e.outputMs)},c=lk(e.cause),l=tk(e.refreshed),u=tk(e.unchanged);return{id:$O(e.id),at:$O(e.at),ms:$O(e.ms),passes:$O(e.passes),...r?{trigger:r}:{},checks:$O(e.checks),components:n,...Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0)),...i.length?{spans:i}:{},...o?{droppedSpans:o}:{},...c?{cause:c}:{},...l?{refreshed:l}:{},...u?{unchanged:u}:{}}}var ok=[`event`,`http`,`timer`,`signal`,`effect`,`markForCheck`,`input`,`view`,`tick`,`zone`,`unknown`],sk={event:`Event`,http:`HTTP response`,timer:`Timer`,signal:`Signal write`,effect:`Effect`,markForCheck:`markForCheck`,input:`setInput`,view:`View change`,tick:`ApplicationRef.tick`,zone:`zone.js only`,unknown:`Unknown`},ck=e=>typeof e==`string`&&ok.includes(e);function lk(e){if(!QO(e)||!ck(e.kind))return;let t=[`component`,`listener`,`event`,`target`,`signal`,`task`],n={kind:e.kind};ck(e.via)&&(n.via=e.via);for(let r of t){let t=ek(e[r],RO);t&&(n[r]=t)}e.zone===!0&&(n.zone=!0);let r=nk(e.stack,JO).map(e=>ek(e,zO)).filter(Boolean);r.length&&(n.stack=r);let i=Math.floor($O(e.more));return i&&(n.more=i),n}function uk(e){if(!QO(e))return null;let t=ek(e.name,RO);if(!t)return null;let n=e.strategy;return{name:t,refreshed:Math.floor($O(e.refreshed)),unchanged:Math.floor($O(e.unchanged)),...n===`OnPush`||n===`Eager`?{strategy:n}:{}}}function dk(e){if(!QO(e))return null;let t=ek(e.name,RO),n=ek(e.input,RO);if(!t||!n)return null;let r=ek(e.parent,RO);return{name:t,input:n,...r?{parent:r}:{},inPlace:Math.floor($O(e.inPlace)),sameContents:Math.floor($O(e.sameContents))}}function fk(e){if(!QO(e))return null;let t=ek(e.name,RO);if(!t)return null;let n=nk(e.tasks,3).map(e=>ek(e,RO)).filter(Boolean);return{name:t,ticks:Math.floor($O(e.ticks)),...n.length?{tasks:n}:{}}}function pk(e){if(!QO(e))return;let t={};if(QO(e.causes))for(let n of ok){let r=Math.floor($O(e.causes[n]));r&&(t[n]=r)}let n=nk(e.components,HO).map(uk).filter(e=>!!e),r=nk(e.inputs,YO).map(dk).filter(e=>!!e),i=nk(e.zone,YO).map(fk).filter(e=>!!e),a=Math.floor($O(e.major));return{triggers:e.triggers===!0,waste:e.waste===!0,...a&&a<1e3?{major:a}:{},causes:t,components:n,...r.length?{inputs:r}:{},...i.length?{zone:i}:{},...typeof e.zoneJs==`boolean`?{zoneJs:e.zoneJs}:{}}}function mk(e){let t=[],n=e.component?` in ${e.component}${e.listener?` (${e.listener})`:``}`:``;switch(e.kind){case`event`:t.push(`${e.event??`Template listener`}${e.target?` on ${e.target}`:``}${n}`);break;case`http`:t.push(`HTTP response${n}`);break;case`timer`:t.push(`${e.task??`Timer`}${n}`);break;case`zone`:t.push(`zone.js tick with no Angular notification${e.task?` after ${e.task}`:``}`);break;case`tick`:t.push(`ApplicationRef.tick()${n}`);break;default:t.push(`${sk[e.kind]}${n}`)}return e.signal?t.push(e.signal===`?`?`wrote an unnamed signal`:`wrote signal ${e.signal}`):e.via&&e.via!==e.kind&&t.push(`via ${sk[e.via]}`),e.zone&&e.kind!==`zone`&&t.push(`run by zone.js`),e.more&&t.push(`${e.more} more notification${e.more===1?``:`s`}`),t.join(`, `)}function hk(e){if(!e)return[];let t=[],n=(e.major??0)>=22;for(let r of e.components){if(r.refreshed<10)continue;let e=r.refreshed-r.unchanged;if(e/r.refreshed>.2)continue;let i=`refreshed ${r.refreshed} times and changed something in ${e}`;r.strategy===`Eager`?t.push({name:r.name,kind:`on-push`,text:n?`${r.name} was ${i}. It opts out of OnPush, which is the default from Angular 22: remove \`changeDetection: ChangeDetectionStrategy.Eager\` (or \`Default\`) so Angular skips it until an input, event, signal or markForCheck marks it.`:`${r.name} was ${i}. Add \`changeDetection: ChangeDetectionStrategy.OnPush\` so Angular skips it until an input, event, signal or markForCheck marks it.`}):r.strategy===`OnPush`&&t.push({name:r.name,kind:`already-on-push`,text:`${r.name} was ${i}, and it is already OnPush${n?` (the default from Angular 22)`:``}. Something keeps marking it: an input that gets a new reference each time, an event or output in it, markForCheck, or a signal it reads that is set to an equal value.`})}for(let n of e.inputs??[]){let e=n.parent?` set by ${n.parent}`:``;n.inPlace&&t.push({name:n.name,kind:`in-place`,text:`Input ${n.input} of ${n.name}${e} changed in place ${n.inPlace} time${n.inPlace===1?``:`s`}: same reference, different contents. OnPush components, computed and signal equality don't see that. Pass a new object or array instead of mutating it.`}),n.sameContents&&t.push({name:n.name,kind:`same-contents`,text:`Input ${n.input} of ${n.name}${e} got a new reference with the same contents ${n.sameContents} time${n.sameContents===1?``:`s`}, so Angular refreshed ${n.name} for nothing. Keep the reference when nothing changed, for example with a computed instead of a method call in the template.`})}for(let n of e.zone??[]){let e=n.tasks?.length?` (after ${n.tasks.join(`, `)})`:``;t.push({name:n.name,kind:`zone`,text:`${n.name} changed in ${n.ticks} tick${n.ticks===1?``:`s`} that only zone.js started${e}. Without zone.js it would not update: keep that state in a signal, or call markForCheck after changing it.`})}return t}function gk(e){let t=rk(e);return!t||!QO(e)?null:{...t,maxMs:$O(e.maxMs),cycles:$O(e.cycles)}}function _k(e){if(!QO(e))return null;let t=ek(e.name,RO),n=ek(e.hook,BO);if(!t||!n)return null;let{calls:r,ms:i,maxMs:a}=e;return{name:t,hook:n,calls:$O(r),ms:$O(i),maxMs:$O(a)}}function vk(e){if(!QO(e))return null;let t=ek(e.name,RO);if(!t)return null;let n=ek(e.listener,RO);return{name:t,...n?{listener:n}:{},calls:$O(e.calls),ms:$O(e.ms),maxMs:$O(e.maxMs)}}function yk(e){if(QO(e)&&$O(e.runs))return{runs:$O(e.runs),ms:$O(e.ms),maxMs:$O(e.maxMs)}}function bk(e,t){if(!QO(e))return null;let n=nk(e.spanNames,GO).map(e=>ek(e,zO)),r=Array.isArray(e.cycles)?e.cycles.slice(-Math.min(t,WO)).map(e=>ak(e,n.length)).filter(e=>!!e):[],i={},a=0;if(QO(e.hosts)){let t=Object.entries(e.hosts);a=Math.max(0,t.length-UO);for(let[e,n]of t.slice(0,UO))e.length<50&&$O(n)&&(i[e]=$O(n))}let o=Array.isArray(e.components)?e.components:[],s=Math.floor($O(e.droppedClasses))+Math.max(0,o.length-HO),c=Math.floor($O(e.droppedHosts))+a,l=nk(e.hooks,qO).map(_k).filter(e=>!!e),u=nk(e.outputs,qO).map(vk).filter(e=>!!e),d=Math.max(0,nk(e.hooks,1/0).length-qO)+Math.max(0,nk(e.outputs,1/0).length-qO),f=Math.floor($O(e.droppedTimings))+d,p=yk(e.afterRender),m=r.some(e=>e.spans?.length),h=pk(e.diagnosis);return{recording:e.recording===!0,startedAt:typeof e.startedAt==`number`&&e.startedAt<=LO?$O(e.startedAt):null,dropped:$O(e.dropped),cycles:r,components:o.slice(0,HO).map(gk).filter(e=>!!e),...s?{droppedClasses:s}:{},hosts:i,...c?{droppedHosts:c}:{},...l.length?{hooks:l}:{},...u.length?{outputs:u}:{},...f?{droppedTimings:f}:{},...p?{afterRender:p}:{},...m?{spanNames:n}:{},...h?{diagnosis:h}:{}}}var xk=`pangular-inspector/change-detection`;function Sk(e,t,n=Date.now()){return{format:xk,version:1,exportedAt:n,pageId:t,recording:{...bk(e,WO)??e,recording:!1,hosts:{}}}}function Ck(e,t){if(e.length>2e7||e.length*3>2e7&&new TextEncoder().encode(e).byteLength>2e7)return{ok:!1,error:`The file is larger than 20 MB.`};let n;try{n=JSON.parse(e)}catch{return{ok:!1,error:`The file is not valid JSON.`}}if(!QO(n))return{ok:!1,error:`The file is not a recording.`};if(n.format!==void 0&&n.format!==`pangular-inspector/change-detection`)return{ok:!1,error:`The file is not a change detection recording.`};let r=QO(n.recording)?n.recording:n;if(!Array.isArray(r.cycles))return{ok:!1,error:`The file has no change detection cycles.`};let i=bk(r,t);if(!i)return{ok:!1,error:`The file is not a recording.`};let a=ek(n.pageId??r.pageId,49)||`imported`,o=tk(n.exportedAt);return{ok:!0,pageId:a,...o?{exportedAt:o}:{},recording:{...i,recording:!1}}}var wk=1,Tk=1,Ek=2,Dk={c:`component`,h:`lifecycle-hook`,r:`after-render`,o:`output`},Ok=e=>Math.round(e*1e6)/1e3;function kk(e,t){let n=e.spanNames??[],r=e.cycles[0]?.at??0,i=e.startedAt??r,a=[],o=0,s=0;for(let t of e.cycles){let e=t.t??Math.max(0,t.at-i),r=e+t.ms;a.push({name:`Change detection #${t.id}`,cat:`change-detection`,ph:`X`,pid:wk,tid:Tk,ts:Ok(e),dur:Ok(t.ms),args:{checks:t.checks,passes:t.passes,...t.trigger?{trigger:t.trigger}:{},...t.hookMs?{hookMs:t.hookMs}:{},...t.afterRenderMs?{afterRenderMs:t.afterRenderMs}:{},...t.outputMs?{outputMs:t.outputMs}:{},...t.cause?{cause:mk(t.cause)}:{},...t.unchanged?{unchanged:t.unchanged}:{},slowest:t.components.map(e=>`${e.name} ${e.checks}x ${e.ms}ms`)}}),s+=t.droppedSpans??0;let c=[{end:r}],l=[...t.spans??[]].sort((e,t)=>e[1]-t[1]||t[2]-e[2]);for(let[r,i,s,u,d]of l){o++;let l=n[r]??`?`;if(d===XO.output){let n=e+i;a.push({name:l,cat:Dk[d],ph:`X`,pid:wk,tid:Ek,ts:Ok(n),dur:Ok(i<0?Math.max(0,Math.min(s,-i)):s),args:{cycle:t.id}});continue}let f=Math.max(e,e+i);for(;c.length>1&&c.at(-1).end<=f;)c.pop();let p=c.at(-1).end,m=Math.min(f+s,p);me.ts??0));if(c<0)for(let e of a)e.ts=Ok((e.ts-c)/1e3);a.sort((e,t)=>e.ts-t.ts||t.dur-e.dur);let l=(e,t,n)=>({name:t,ph:`M`,pid:wk,tid:e,args:{name:n}});return{traceEvents:[l(0,`process_name`,`Angular change detection (page ${t})`),l(Tk,`thread_name`,`Change detection`),l(Ek,`thread_name`,`Outputs`),...a],displayTimeUnit:`ms`,otherData:{source:`Pangular Inspector change detection recording`,pageId:t,cycles:e.cycles.length,droppedCycles:e.dropped,spans:o,droppedSpans:s,...e.startedAt&&e.startedAt<=LO?{startedAt:new Date(e.startedAt).toISOString()}:{}}}}var Ak=16.6;function jk(e){return e.ms>Ak}function Mk(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}function Nk(e,t){if(!t)return[...e];let n=Math.min(t.from,t.to),r=Math.max(t.from,t.to),i=e.filter(e=>e.id>=n&&e.id<=r);return i.length?i:[...e]}function Pk(e){let t=new Map;for(let n of e)for(let e of n.components){let n=t.get(e.name);n?(n.checks+=e.checks,n.ms+=e.ms,n.maxMs=Math.max(n.maxMs,e.ms),n.cycles+=1):t.set(e.name,{name:e.name,checks:e.checks,ms:e.ms,maxMs:e.ms,cycles:1})}return[...t.values()].sort((e,t)=>t.ms-e.ms||e.name.localeCompare(t.name))}function Fk(e){let t=e.reduce((e,t)=>Math.max(e,t.ms),0);return Math.max(t,Ak*1.25)}function Ik(e,t,n=3){let r=e.map(e=>({item:e,value:t(e)})).filter(e=>e.value>0).sort((e,t)=>t.value-e.value),i=r.reduce((e,t)=>e+t.value,0);if(!i)return[];let a=n/i,o=[],s=0,c=0,l=n,u=1,d=[],f=(e,t)=>{let n=e.reduce((e,t)=>e+t,0),r=Math.max(...e),i=Math.min(...e);return Math.max(t*t*r/(n*n),n*n/(t*t*i))},p=()=>{let e=d.reduce((e,t)=>e+t.area,0);if(l>=u){let t=e/u,n=c;for(let e of d){let r=e.area/t;o.push({item:e.item,x:s,y:n,w:t,h:r}),n+=r}s+=t,l-=t}else{let t=e/l,n=s;for(let e of d){let r=e.area/t;o.push({item:e.item,x:n,y:c,w:r,h:t}),n+=r}c+=t,u-=t}d=[]};for(let e of r){let t=e.value*a,n=Math.min(l,u),r=d.map(e=>e.area);d.length&&f([...r,t],n)>f(r,n)&&p(),d.push({item:e.item,area:t})}return d.length&&p(),o.map(e=>({item:e.item,x:e.x/n*100,y:e.y*100,w:e.w/n*100,h:e.h*100}))}var Lk={c:`component`,h:`hook`,r:`afterRender`,o:`output`};function Rk(e,t){if(t===`c`)return e||null;if(t===`h`){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):null}if(t===`o`){let t=e.indexOf(` (`),n=t>0?e.slice(0,t):e;return n&&n!==`?`?n:null}return null}function zk(e,t){let n=e.filter(e=>e.spans?.length);if(!n.length)return null;let r=n.map(e=>{let t=e.spans,n=Math.min(0,...t.map(e=>e[1])),r=Math.max(e.ms,...t.map(e=>e[1]+e[2]));return{cycle:e,spans:t,from:n,width:Math.max(r-n,.001)}}),i=r.reduce((e,t)=>e+t.width,0),a=[],o=[],s=0,c=0;for(let{cycle:e,spans:n,from:l,width:u}of r){o.push({id:e.id,x:s/i*100,w:u/i*100,droppedSpans:e.droppedSpans??0});let r=[...n].sort((e,t)=>e[1]-t[1]||e[3]-t[3]),d=[];for(let[n,o,u,f,p]of r){let r=t[n]??`unknown`,m=d[f-1],h=f>0&&m!==void 0&&ot.kind,Vk=(e,t)=>t.name,Hk=(e,t)=>t.name+`.`+t.input;function Uk(e,t){e&1&&(z(0,`p`,3),q(1,` The page has no Angular change detection scheduler the overlay could find (it needs Angular 18 or later), so cycles have no cause. `),B())}function Wk(e,t){if(e&1&&(z(0,`tr`)(1,`td`),q(2),B(),z(3,`td`,6),q(4),B()()),e&2){let e=t.$implicit;O(2),J(e.label),O(2),J(e.count)}}function Gk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),q(4,`Trigger`),B(),z(5,`th`,5),q(6,`Cycles`),B()()(),z(7,`tbody`),N(8,Wk,5,2,`tr`,null,Bk),B()()),e&2){let e=W(2);O(8),P(e.causes())}}function Kk(e,t){e&1&&(z(0,`p`,3),q(1,`No cycle has a cause yet.`),B())}function qk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),q(2),B(),z(3,`td`,6),q(4),B(),z(5,`td`,7),q(6),B()()),e&2){let e=t.$implicit;O(2),J(e.name),O(2),J(e.ticks),O(2),J(e.tasks?.join(`, `))}}function Jk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),q(4,`Component`),B(),z(5,`th`,5),q(6,`Zone-only ticks`),B(),z(7,`th`,4),q(8,`After`),B()()(),z(9,`tbody`),N(10,qk,7,3,`tr`,null,Vk),B()()),e&2){let e=W(3);O(10),P(e.zone())}}function Yk(e,t){if(e&1&&(z(0,`p`,3),q(1),B()),e&2){let e=W(3);O(),J(e.zoneNote())}}function Xk(e,t){if(e&1&&(z(0,`div`)(1,`h4`),q(2,`Depends on zone.js`),B(),j(3,Jk,12,0,`table`)(4,Yk,2,1,`p`,3),B()),e&2){let e=W(),t=W();O(3),M(t.zone().length?3:e.triggers?4:-1)}}function Zk(e,t){e&1&&(z(0,`p`,3),q(1,`The page can't watch DOM updates, so wasted checks are not counted.`),B())}function Qk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),q(2),B(),z(3,`td`,6),q(4),B(),z(5,`td`,6),q(6),B(),z(7,`td`),q(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),J(e.name),O(2),J(e.refreshed),O(2),X(``,e.unchanged,` (`,n.share(e.unchanged,e.refreshed),`)`),O(2),J(e.strategy??`Unknown`)}}function $k(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),q(4,`Component`),B(),z(5,`th`,5),q(6,`Refreshed`),B(),z(7,`th`,5),q(8,`Changed nothing`),B(),z(9,`th`,4),q(10,`Strategy`),B()()(),z(11,`tbody`),N(12,Qk,9,5,`tr`,null,Vk),B()()),e&2){let e=W(2);O(12),P(e.wasted())}}function eA(e,t){e&1&&(z(0,`p`,3),q(1,`Every refreshed check changed something.`),B())}function tA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),q(2),B(),z(3,`td`,7),q(4),B(),z(5,`td`,6),q(6),B(),z(7,`td`,6),q(8),B()()),e&2){let e=t.$implicit;O(2),X(``,e.name,`.`,e.input),O(2),J(e.parent??`Unknown`),O(2),J(e.inPlace),O(2),J(e.sameContents)}}function nA(e,t){if(e&1&&(z(0,`h4`),q(1,`Inputs that break OnPush`),B(),z(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,4),q(6,`Input`),B(),z(7,`th`,4),q(8,`Set by`),B(),z(9,`th`,5),q(10,`Changed in place`),B(),z(11,`th`,5),q(12,`Same contents, new reference`),B()()(),z(13,`tbody`),N(14,tA,9,5,`tr`,null,Hk),B()()),e&2){let e=W(2);O(14),P(e.inputs())}}function rA(e,t){if(e&1&&(z(0,`li`),q(1),B()),e&2){let e=t.$implicit;O(),J(e.text)}}function iA(e,t){if(e&1&&(z(0,`h4`),q(1,`Hints`),B(),z(2,`ul`,8),N(3,rA,2,1,`li`,null,dg),B()),e&2){let e=W(2);O(3),P(e.hints())}}function aA(e,t){if(e&1&&(z(0,`section`,0)(1,`h3`,1),q(2,`Why it ran and what it wasted`),B(),z(3,`div`,2)(4,`div`)(5,`h4`),q(6,`What started the cycles`),B(),j(7,Uk,2,0,`p`,3)(8,Gk,10,0,`table`)(9,Kk,2,0,`p`,3),B(),j(10,Xk,5,1,`div`),B(),z(11,`h4`),q(12,`Wasted checks`),B(),j(13,Zk,2,0,`p`,3)(14,$k,14,0,`table`)(15,eA,2,0,`p`,3),j(16,nA,16,0),j(17,iA,5,0),B()),e&2){let e=t,n=W();O(7),M(e.triggers?n.causes().length?8:9:7),O(3),M(n.hasZone()?10:-1),O(3),M(e.waste?n.wasted().length?14:15:13),O(3),M(n.inputs().length?16:-1),O(),M(n.hints().length?17:-1)}}var oA=10,sA=class e{page=$(null);diagnosis=Z(()=>this.page()?.diagnosis??null);causes=Z(()=>{let e=this.diagnosis()?.causes??{};return ok.filter(t=>e[t]).map(t=>({kind:t,label:sk[t],count:e[t]}))});zone=Z(()=>(this.diagnosis()?.zone??[]).slice(0,oA));zoneTicks=Z(()=>this.diagnosis()?.causes.zone??0);hasZone=Z(()=>this.diagnosis()?.zoneJs??(this.zone().length>0||this.zoneTicks()>0));zoneNote=Z(()=>{let e=this.zoneTicks();return e?`${e} ${e===1?`tick`:`ticks`} came from zone.js alone, and no component changed in them.`:`No component changed in a tick only zone.js started.`});wasted=Z(()=>(this.diagnosis()?.components??[]).filter(e=>e.unchanged>0).slice(0,oA));inputs=Z(()=>(this.diagnosis()?.inputs??[]).slice(0,oA));hints=Z(()=>hk(this.diagnosis()??void 0).slice(0,oA));share(e,t){return t?`${Math.round(e/t*100)}%`:`0%`}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-diagnosis`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[`aria-labelledby`,`cd-diagnosis-heading`,1,`diagnosis`],[`id`,`cd-diagnosis-heading`],[1,`grid`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`num`],[1,`mono`],[1,`hints`]],template:function(e,t){if(e&1&&j(0,aA,18,5,`section`,0),e&2){let e;M((e=t.diagnosis())?0:-1,e)}},styles:[`[_nghost-%COMP%] { +}`]})},zO=864e13,BO=200,VO=300,HO=100,UO=10,WO=100,GO=2e3,KO=2e3,qO=4e3,JO=1e3,YO=100,XO=3,ZO=50,QO={component:`c`,hook:`h`,afterRender:`r`,output:`o`},$O=Object.values(QO),ek=e=>!!e&&typeof e==`object`&&!Array.isArray(e),tk=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:0,nk=(e,t)=>typeof e==`string`?e.slice(0,t):``,rk=e=>tk(e)>0?tk(e):void 0,ik=(e,t)=>Array.isArray(e)?e.slice(0,t):[];function ak(e){if(!ek(e))return null;let t=nk(e.name,BO);return t?{name:t,checks:tk(e.checks),ms:tk(e.ms)}:null}function ok(e,t){if(!Array.isArray(e)||e.length!==5)return null;let[n,r,i,a,o]=e;return typeof n!=`number`||!Number.isInteger(n)||n<0||n>=t||typeof r!=`number`||!Number.isFinite(r)||Math.abs(r)>1e7||typeof a!=`number`||!Number.isInteger(a)||a<0||a>JO||typeof o!=`string`||!$O.includes(o)?null:[n,r,tk(i),a,o]}function sk(e,t){if(!ek(e)||typeof e.id!=`number`)return null;let n=ik(e.components,UO).map(ak).filter(e=>!!e),r=nk(e.trigger,VO),i=ik(e.spans,40).map(e=>ok(e,t)).filter(e=>!!e),a=Array.isArray(e.spans)?e.spans.length-40:0,o=Math.floor(tk(e.droppedSpans))+Math.max(0,a),s={t:typeof e.t==`number`?tk(e.t):void 0,hookMs:rk(e.hookMs),afterRenderMs:rk(e.afterRenderMs),outputMs:rk(e.outputMs)},c=dk(e.cause),l=rk(e.refreshed),u=rk(e.unchanged);return{id:tk(e.id),at:tk(e.at),ms:tk(e.ms),passes:tk(e.passes),...r?{trigger:r}:{},checks:tk(e.checks),components:n,...Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0)),...i.length?{spans:i}:{},...o?{droppedSpans:o}:{},...c?{cause:c}:{},...l?{refreshed:l}:{},...u?{unchanged:u}:{}}}var ck=[`event`,`http`,`timer`,`signal`,`effect`,`markForCheck`,`input`,`view`,`tick`,`zone`,`unknown`],lk={event:`Event`,http:`HTTP response`,timer:`Timer`,signal:`Signal write`,effect:`Effect`,markForCheck:`markForCheck`,input:`setInput`,view:`View change`,tick:`ApplicationRef.tick`,zone:`zone.js only`,unknown:`Unknown`},uk=e=>typeof e==`string`&&ck.includes(e);function dk(e){if(!ek(e)||!uk(e.kind))return;let t=[`component`,`listener`,`event`,`target`,`signal`,`task`],n={kind:e.kind};uk(e.via)&&(n.via=e.via);for(let r of t){let t=nk(e[r],BO);t&&(n[r]=t)}e.zone===!0&&(n.zone=!0);let r=ik(e.stack,XO).map(e=>nk(e,VO)).filter(Boolean);r.length&&(n.stack=r);let i=Math.floor(tk(e.more));return i&&(n.more=i),n}function fk(e){if(!ek(e))return null;let t=nk(e.name,BO);if(!t)return null;let n=e.strategy;return{name:t,refreshed:Math.floor(tk(e.refreshed)),unchanged:Math.floor(tk(e.unchanged)),...n===`OnPush`||n===`Eager`?{strategy:n}:{}}}function pk(e){if(!ek(e))return null;let t=nk(e.name,BO),n=nk(e.input,BO);if(!t||!n)return null;let r=nk(e.parent,BO);return{name:t,input:n,...r?{parent:r}:{},inPlace:Math.floor(tk(e.inPlace)),sameContents:Math.floor(tk(e.sameContents))}}function mk(e){if(!ek(e))return null;let t=nk(e.name,BO);if(!t)return null;let n=ik(e.tasks,3).map(e=>nk(e,BO)).filter(Boolean);return{name:t,ticks:Math.floor(tk(e.ticks)),...n.length?{tasks:n}:{}}}function hk(e){if(!ek(e))return;let t={};if(ek(e.causes))for(let n of ck){let r=Math.floor(tk(e.causes[n]));r&&(t[n]=r)}let n=ik(e.components,WO).map(fk).filter(e=>!!e),r=ik(e.inputs,ZO).map(pk).filter(e=>!!e),i=ik(e.zone,ZO).map(mk).filter(e=>!!e),a=Math.floor(tk(e.major));return{triggers:e.triggers===!0,waste:e.waste===!0,...a&&a<1e3?{major:a}:{},causes:t,components:n,...r.length?{inputs:r}:{},...i.length?{zone:i}:{},...typeof e.zoneJs==`boolean`?{zoneJs:e.zoneJs}:{}}}function gk(e){let t=[],n=e.component?` in ${e.component}${e.listener?` (${e.listener})`:``}`:``;switch(e.kind){case`event`:t.push(`${e.event??`Template listener`}${e.target?` on ${e.target}`:``}${n}`);break;case`http`:t.push(`HTTP response${n}`);break;case`timer`:t.push(`${e.task??`Timer`}${n}`);break;case`zone`:t.push(`zone.js tick with no Angular notification${e.task?` after ${e.task}`:``}`);break;case`tick`:t.push(`ApplicationRef.tick()${n}`);break;default:t.push(`${lk[e.kind]}${n}`)}return e.signal?t.push(e.signal===`?`?`wrote an unnamed signal`:`wrote signal ${e.signal}`):e.via&&e.via!==e.kind&&t.push(`via ${lk[e.via]}`),e.zone&&e.kind!==`zone`&&t.push(`run by zone.js`),e.more&&t.push(`${e.more} more notification${e.more===1?``:`s`}`),t.join(`, `)}function _k(e){if(!e)return[];let t=[],n=(e.major??0)>=22;for(let r of e.components){if(r.refreshed<10)continue;let e=r.refreshed-r.unchanged;if(e/r.refreshed>.2)continue;let i=`refreshed ${r.refreshed} times and changed something in ${e}`;r.strategy===`Eager`?t.push({name:r.name,kind:`on-push`,text:n?`${r.name} was ${i}. It opts out of OnPush, which is the default from Angular 22: remove \`changeDetection: ChangeDetectionStrategy.Eager\` (or \`Default\`) so Angular skips it until an input, event, signal or markForCheck marks it.`:`${r.name} was ${i}. Add \`changeDetection: ChangeDetectionStrategy.OnPush\` so Angular skips it until an input, event, signal or markForCheck marks it.`}):r.strategy===`OnPush`&&t.push({name:r.name,kind:`already-on-push`,text:`${r.name} was ${i}, and it is already OnPush${n?` (the default from Angular 22)`:``}. Something keeps marking it: an input that gets a new reference each time, an event or output in it, markForCheck, or a signal it reads that is set to an equal value.`})}for(let n of e.inputs??[]){let e=n.parent?` set by ${n.parent}`:``;n.inPlace&&t.push({name:n.name,kind:`in-place`,text:`Input ${n.input} of ${n.name}${e} changed in place ${n.inPlace} time${n.inPlace===1?``:`s`}: same reference, different contents. OnPush components, computed and signal equality don't see that. Pass a new object or array instead of mutating it.`}),n.sameContents&&t.push({name:n.name,kind:`same-contents`,text:`Input ${n.input} of ${n.name}${e} got a new reference with the same contents ${n.sameContents} time${n.sameContents===1?``:`s`}, so Angular refreshed ${n.name} for nothing. Keep the reference when nothing changed, for example with a computed instead of a method call in the template.`})}for(let n of e.zone??[]){let e=n.tasks?.length?` (after ${n.tasks.join(`, `)})`:``;t.push({name:n.name,kind:`zone`,text:`${n.name} changed in ${n.ticks} tick${n.ticks===1?``:`s`} that only zone.js started${e}. Without zone.js it would not update: keep that state in a signal, or call markForCheck after changing it.`})}return t}function vk(e){let t=ak(e);return!t||!ek(e)?null:{...t,maxMs:tk(e.maxMs),cycles:tk(e.cycles)}}function yk(e){if(!ek(e))return null;let t=nk(e.name,BO),n=nk(e.hook,HO);if(!t||!n)return null;let{calls:r,ms:i,maxMs:a}=e;return{name:t,hook:n,calls:tk(r),ms:tk(i),maxMs:tk(a)}}function bk(e){if(!ek(e))return null;let t=nk(e.name,BO);if(!t)return null;let n=nk(e.listener,BO);return{name:t,...n?{listener:n}:{},calls:tk(e.calls),ms:tk(e.ms),maxMs:tk(e.maxMs)}}function xk(e){if(ek(e)&&tk(e.runs))return{runs:tk(e.runs),ms:tk(e.ms),maxMs:tk(e.maxMs)}}function Sk(e,t){if(!ek(e))return null;let n=ik(e.spanNames,qO).map(e=>nk(e,VO)),r=Array.isArray(e.cycles)?e.cycles.slice(-Math.min(t,KO)).map(e=>sk(e,n.length)).filter(e=>!!e):[],i={},a=0;if(ek(e.hosts)){let t=Object.entries(e.hosts);a=Math.max(0,t.length-GO);for(let[e,n]of t.slice(0,GO))e.length<50&&tk(n)&&(i[e]=tk(n))}let o=Array.isArray(e.components)?e.components:[],s=Math.floor(tk(e.droppedClasses))+Math.max(0,o.length-WO),c=Math.floor(tk(e.droppedHosts))+a,l=ik(e.hooks,YO).map(yk).filter(e=>!!e),u=ik(e.outputs,YO).map(bk).filter(e=>!!e),d=Math.max(0,ik(e.hooks,1/0).length-YO)+Math.max(0,ik(e.outputs,1/0).length-YO),f=Math.floor(tk(e.droppedTimings))+d,p=xk(e.afterRender),m=r.some(e=>e.spans?.length),h=hk(e.diagnosis);return{recording:e.recording===!0,startedAt:typeof e.startedAt==`number`&&e.startedAt<=zO?tk(e.startedAt):null,dropped:tk(e.dropped),cycles:r,components:o.slice(0,WO).map(vk).filter(e=>!!e),...s?{droppedClasses:s}:{},hosts:i,...c?{droppedHosts:c}:{},...l.length?{hooks:l}:{},...u.length?{outputs:u}:{},...f?{droppedTimings:f}:{},...p?{afterRender:p}:{},...m?{spanNames:n}:{},...h?{diagnosis:h}:{}}}var Ck=`pangular-inspector/change-detection`;function wk(e,t,n=Date.now()){return{format:Ck,version:1,exportedAt:n,pageId:t,recording:{...Sk(e,KO)??e,recording:!1,hosts:{}}}}function Tk(e,t){if(e.length>2e7||e.length*3>2e7&&new TextEncoder().encode(e).byteLength>2e7)return{ok:!1,error:`The file is larger than 20 MB.`};let n;try{n=JSON.parse(e)}catch{return{ok:!1,error:`The file is not valid JSON.`}}if(!ek(n))return{ok:!1,error:`The file is not a recording.`};if(n.format!==void 0&&n.format!==`pangular-inspector/change-detection`)return{ok:!1,error:`The file is not a change detection recording.`};let r=ek(n.recording)?n.recording:n;if(!Array.isArray(r.cycles))return{ok:!1,error:`The file has no change detection cycles.`};let i=Sk(r,t);if(!i)return{ok:!1,error:`The file is not a recording.`};let a=nk(n.pageId??r.pageId,49)||`imported`,o=rk(n.exportedAt);return{ok:!0,pageId:a,...o?{exportedAt:o}:{},recording:{...i,recording:!1}}}var Ek=1,Dk=1,Ok=2,kk={c:`component`,h:`lifecycle-hook`,r:`after-render`,o:`output`},Ak=e=>Math.round(e*1e6)/1e3;function jk(e,t){let n=e.spanNames??[],r=e.cycles[0]?.at??0,i=e.startedAt??r,a=[],o=0,s=0;for(let t of e.cycles){let e=t.t??Math.max(0,t.at-i),r=e+t.ms;a.push({name:`Change detection #${t.id}`,cat:`change-detection`,ph:`X`,pid:Ek,tid:Dk,ts:Ak(e),dur:Ak(t.ms),args:{checks:t.checks,passes:t.passes,...t.trigger?{trigger:t.trigger}:{},...t.hookMs?{hookMs:t.hookMs}:{},...t.afterRenderMs?{afterRenderMs:t.afterRenderMs}:{},...t.outputMs?{outputMs:t.outputMs}:{},...t.cause?{cause:gk(t.cause)}:{},...t.unchanged?{unchanged:t.unchanged}:{},slowest:t.components.map(e=>`${e.name} ${e.checks}x ${e.ms}ms`)}}),s+=t.droppedSpans??0;let c=[{end:r}],l=[...t.spans??[]].sort((e,t)=>e[1]-t[1]||t[2]-e[2]);for(let[r,i,s,u,d]of l){o++;let l=n[r]??`?`;if(d===QO.output){let n=e+i;a.push({name:l,cat:kk[d],ph:`X`,pid:Ek,tid:Ok,ts:Ak(n),dur:Ak(i<0?Math.max(0,Math.min(s,-i)):s),args:{cycle:t.id}});continue}let f=Math.max(e,e+i);for(;c.length>1&&c.at(-1).end<=f;)c.pop();let p=c.at(-1).end,m=Math.min(f+s,p);me.ts??0));if(c<0)for(let e of a)e.ts=Ak((e.ts-c)/1e3);a.sort((e,t)=>e.ts-t.ts||t.dur-e.dur);let l=(e,t,n)=>({name:t,ph:`M`,pid:Ek,tid:e,args:{name:n}});return{traceEvents:[l(0,`process_name`,`Angular change detection (page ${t})`),l(Dk,`thread_name`,`Change detection`),l(Ok,`thread_name`,`Outputs`),...a],displayTimeUnit:`ms`,otherData:{source:`Pangular Inspector change detection recording`,pageId:t,cycles:e.cycles.length,droppedCycles:e.dropped,spans:o,droppedSpans:s,...e.startedAt&&e.startedAt<=zO?{startedAt:new Date(e.startedAt).toISOString()}:{}}}}var Mk=16.6;function Nk(e){return e.ms>Mk}function Pk(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}function Fk(e,t){if(!t)return[...e];let n=Math.min(t.from,t.to),r=Math.max(t.from,t.to),i=e.filter(e=>e.id>=n&&e.id<=r);return i.length?i:[...e]}function Ik(e){let t=new Map;for(let n of e)for(let e of n.components){let n=t.get(e.name);n?(n.checks+=e.checks,n.ms+=e.ms,n.maxMs=Math.max(n.maxMs,e.ms),n.cycles+=1):t.set(e.name,{name:e.name,checks:e.checks,ms:e.ms,maxMs:e.ms,cycles:1})}return[...t.values()].sort((e,t)=>t.ms-e.ms||e.name.localeCompare(t.name))}function Lk(e){let t=e.reduce((e,t)=>Math.max(e,t.ms),0);return Math.max(t,Mk*1.25)}function Rk(e,t,n=3){let r=e.map(e=>({item:e,value:t(e)})).filter(e=>e.value>0).sort((e,t)=>t.value-e.value),i=r.reduce((e,t)=>e+t.value,0);if(!i)return[];let a=n/i,o=[],s=0,c=0,l=n,u=1,d=[],f=(e,t)=>{let n=e.reduce((e,t)=>e+t,0),r=Math.max(...e),i=Math.min(...e);return Math.max(t*t*r/(n*n),n*n/(t*t*i))},p=()=>{let e=d.reduce((e,t)=>e+t.area,0);if(l>=u){let t=e/u,n=c;for(let e of d){let r=e.area/t;o.push({item:e.item,x:s,y:n,w:t,h:r}),n+=r}s+=t,l-=t}else{let t=e/l,n=s;for(let e of d){let r=e.area/t;o.push({item:e.item,x:n,y:c,w:r,h:t}),n+=r}c+=t,u-=t}d=[]};for(let e of r){let t=e.value*a,n=Math.min(l,u),r=d.map(e=>e.area);d.length&&f([...r,t],n)>f(r,n)&&p(),d.push({item:e.item,area:t})}return d.length&&p(),o.map(e=>({item:e.item,x:e.x/n*100,y:e.y*100,w:e.w/n*100,h:e.h*100}))}var zk={c:`component`,h:`hook`,r:`afterRender`,o:`output`};function Bk(e,t){if(t===`c`)return e||null;if(t===`h`){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):null}if(t===`o`){let t=e.indexOf(` (`),n=t>0?e.slice(0,t):e;return n&&n!==`?`?n:null}return null}function Vk(e,t){let n=e.filter(e=>e.spans?.length);if(!n.length)return null;let r=n.map(e=>{let t=e.spans,n=Math.min(0,...t.map(e=>e[1])),r=Math.max(e.ms,...t.map(e=>e[1]+e[2]));return{cycle:e,spans:t,from:n,width:Math.max(r-n,.001)}}),i=r.reduce((e,t)=>e+t.width,0),a=[],o=[],s=0,c=0;for(let{cycle:e,spans:n,from:l,width:u}of r){o.push({id:e.id,x:s/i*100,w:u/i*100,droppedSpans:e.droppedSpans??0});let r=[...n].sort((e,t)=>e[1]-t[1]||e[3]-t[3]),d=[];for(let[n,o,u,f,p]of r){let r=t[n]??`unknown`,m=d[f-1],h=f>0&&m!==void 0&&ot.kind,Uk=(e,t)=>t.name,Wk=(e,t)=>t.name+`.`+t.input;function Gk(e,t){e&1&&(z(0,`p`,3),q(1,` The page has no Angular change detection scheduler the overlay could find (it needs Angular 18 or later), so cycles have no cause. `),B())}function Kk(e,t){if(e&1&&(z(0,`tr`)(1,`td`),q(2),B(),z(3,`td`,6),q(4),B()()),e&2){let e=t.$implicit;O(2),J(e.label),O(2),J(e.count)}}function qk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),q(4,`Trigger`),B(),z(5,`th`,5),q(6,`Cycles`),B()()(),z(7,`tbody`),N(8,Kk,5,2,`tr`,null,Hk),B()()),e&2){let e=W(2);O(8),P(e.causes())}}function Jk(e,t){e&1&&(z(0,`p`,3),q(1,`No cycle has a cause yet.`),B())}function Yk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),q(2),B(),z(3,`td`,6),q(4),B(),z(5,`td`,7),q(6),B()()),e&2){let e=t.$implicit;O(2),J(e.name),O(2),J(e.ticks),O(2),J(e.tasks?.join(`, `))}}function Xk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),q(4,`Component`),B(),z(5,`th`,5),q(6,`Zone-only ticks`),B(),z(7,`th`,4),q(8,`After`),B()()(),z(9,`tbody`),N(10,Yk,7,3,`tr`,null,Uk),B()()),e&2){let e=W(3);O(10),P(e.zone())}}function Zk(e,t){if(e&1&&(z(0,`p`,3),q(1),B()),e&2){let e=W(3);O(),J(e.zoneNote())}}function Qk(e,t){if(e&1&&(z(0,`div`)(1,`h4`),q(2,`Depends on zone.js`),B(),j(3,Xk,12,0,`table`)(4,Zk,2,1,`p`,3),B()),e&2){let e=W(),t=W();O(3),M(t.zone().length?3:e.triggers?4:-1)}}function $k(e,t){e&1&&(z(0,`p`,3),q(1,`The page can't watch DOM updates, so wasted checks are not counted.`),B())}function eA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),q(2),B(),z(3,`td`,6),q(4),B(),z(5,`td`,6),q(6),B(),z(7,`td`),q(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),J(e.name),O(2),J(e.refreshed),O(2),X(``,e.unchanged,` (`,n.share(e.unchanged,e.refreshed),`)`),O(2),J(e.strategy??`Unknown`)}}function tA(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),q(4,`Component`),B(),z(5,`th`,5),q(6,`Refreshed`),B(),z(7,`th`,5),q(8,`Changed nothing`),B(),z(9,`th`,4),q(10,`Strategy`),B()()(),z(11,`tbody`),N(12,eA,9,5,`tr`,null,Uk),B()()),e&2){let e=W(2);O(12),P(e.wasted())}}function nA(e,t){e&1&&(z(0,`p`,3),q(1,`Every refreshed check changed something.`),B())}function rA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),q(2),B(),z(3,`td`,7),q(4),B(),z(5,`td`,6),q(6),B(),z(7,`td`,6),q(8),B()()),e&2){let e=t.$implicit;O(2),X(``,e.name,`.`,e.input),O(2),J(e.parent??`Unknown`),O(2),J(e.inPlace),O(2),J(e.sameContents)}}function iA(e,t){if(e&1&&(z(0,`h4`),q(1,`Inputs that break OnPush`),B(),z(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,4),q(6,`Input`),B(),z(7,`th`,4),q(8,`Set by`),B(),z(9,`th`,5),q(10,`Changed in place`),B(),z(11,`th`,5),q(12,`Same contents, new reference`),B()()(),z(13,`tbody`),N(14,rA,9,5,`tr`,null,Wk),B()()),e&2){let e=W(2);O(14),P(e.inputs())}}function aA(e,t){if(e&1&&(z(0,`li`),q(1),B()),e&2){let e=t.$implicit;O(),J(e.text)}}function oA(e,t){if(e&1&&(z(0,`h4`),q(1,`Hints`),B(),z(2,`ul`,8),N(3,aA,2,1,`li`,null,dg),B()),e&2){let e=W(2);O(3),P(e.hints())}}function sA(e,t){if(e&1&&(z(0,`section`,0)(1,`h3`,1),q(2,`Why it ran and what it wasted`),B(),z(3,`div`,2)(4,`div`)(5,`h4`),q(6,`What started the cycles`),B(),j(7,Gk,2,0,`p`,3)(8,qk,10,0,`table`)(9,Jk,2,0,`p`,3),B(),j(10,Qk,5,1,`div`),B(),z(11,`h4`),q(12,`Wasted checks`),B(),j(13,$k,2,0,`p`,3)(14,tA,14,0,`table`)(15,nA,2,0,`p`,3),j(16,iA,16,0),j(17,oA,5,0),B()),e&2){let e=t,n=W();O(7),M(e.triggers?n.causes().length?8:9:7),O(3),M(n.hasZone()?10:-1),O(3),M(e.waste?n.wasted().length?14:15:13),O(3),M(n.inputs().length?16:-1),O(),M(n.hints().length?17:-1)}}var cA=10,lA=class e{page=$(null);diagnosis=Z(()=>this.page()?.diagnosis??null);causes=Z(()=>{let e=this.diagnosis()?.causes??{};return ck.filter(t=>e[t]).map(t=>({kind:t,label:lk[t],count:e[t]}))});zone=Z(()=>(this.diagnosis()?.zone??[]).slice(0,cA));zoneTicks=Z(()=>this.diagnosis()?.causes.zone??0);hasZone=Z(()=>this.diagnosis()?.zoneJs??(this.zone().length>0||this.zoneTicks()>0));zoneNote=Z(()=>{let e=this.zoneTicks();return e?`${e} ${e===1?`tick`:`ticks`} came from zone.js alone, and no component changed in them.`:`No component changed in a tick only zone.js started.`});wasted=Z(()=>(this.diagnosis()?.components??[]).filter(e=>e.unchanged>0).slice(0,cA));inputs=Z(()=>(this.diagnosis()?.inputs??[]).slice(0,cA));hints=Z(()=>_k(this.diagnosis()??void 0).slice(0,cA));share(e,t){return t?`${Math.round(e/t*100)}%`:`0%`}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-diagnosis`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[`aria-labelledby`,`cd-diagnosis-heading`,1,`diagnosis`],[`id`,`cd-diagnosis-heading`],[1,`grid`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`num`],[1,`mono`],[1,`hints`]],template:function(e,t){if(e&1&&j(0,sA,18,5,`section`,0),e&2){let e;M((e=t.diagnosis())?0:-1,e)}},styles:[`[_nghost-%COMP%] { display: block; } @@ -844,7 +844,7 @@ td.mono[_ngcontent-%COMP%] { .hints[_ngcontent-%COMP%] li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%] { margin-top: 4px; -}`]})},cA=(e,t)=>t.cycle.id,lA=(e,t)=>t.id;function uA(e,t){if(e&1){let e=V();z(0,`button`,27),U(`click`,function(){return w(e),T(W().showAll())}),q(1,`Show all cycles`),B()}}function dA(e,t){if(e&1&&Cg(0,`div`,28),e&2){let e=t;G(`left`,e.left,`%`)(`width`,e.width,`%`)}}function fA(e,t){if(e&1&&(z(0,`div`,29),Cg(1,`span`,30),B()),e&2){let e=t.$implicit,n=W();K(`over`,e.over)(`out`,!n.inRange(e.index)&&!!n.range())(`active`,n.focused()&&n.active()===e.index),kg(`id`,n.optionId(e.index)),A(`data-index`,e.index)(`aria-selected`,n.inRange(e.index))(`aria-label`,e.label),O(),G(`height`,e.height,`%`)}}function pA(e,t){e&1&&(z(0,`span`,33),q(1,`over budget`),B())}function mA(e,t){if(e&1&&(z(0,`p`),q(1,` after `),z(2,`span`,35),q(3),B()()),e&2){let e=W();O(3),J(e.cycle.trigger)}}function hA(e,t){if(e&1&&(z(0,`p`,34)(1,`span`,36),q(2),B(),z(3,`span`),q(4),B()()),e&2){let e=t.$implicit,n=W(2);O(2),J(e.name),O(2),J(n.fmt(e.ms))}}function gA(e,t){if(e&1&&(z(0,`div`,31)(1,`p`,32)(2,`strong`),q(3),B(),z(4,`span`),q(5),B(),j(6,pA,2,0,`span`,33),B(),j(7,mA,4,1,`p`),z(8,`p`),q(9),B(),N(10,hA,5,2,`p`,34,dg),B()),e&2){let e=t,n=W();G(`left`,e.left)(`right`,e.right),O(3),J(n.fmt(e.cycle.ms)),O(2),Y(`cycle `,e.cycle.id),O(),M(e.over?6:-1),O(),M(e.cycle.trigger?7:-1),O(2),B_(` `,e.cycle.checks,` `,e.cycle.checks===1?`check`:`checks`,`, `,e.cycle.passes,` `,e.cycle.passes===1?`pass`:`passes`,` `),O(),P(e.top)}}function _A(e,t){if(e&1&&Cg(0,`span`),e&2){let e=t.$implicit;K(`over`,e.over)}}function vA(e,t){if(e&1&&q(0),e&2){let e=t,n=W(2);X(` `,e.name,` (`,n.fmt(e.ms),`) `)}}function yA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,37),q(2),B(),z(3,`td`,37),q(4),B(),z(5,`td`),q(6),B(),z(7,`td`,37),q(8),B(),z(9,`td`,37),q(10),B(),z(11,`td`,35),q(12),B(),z(13,`td`,35),j(14,vA,1,2),B()()),e&2){let e,n=t.$implicit,r=W();O(2),J(n.id),O(2),J(r.fmt(n.ms)),O(2),J(r.isOver(n)?`Over`:`Within`),O(2),J(n.checks),O(2),J(n.passes),O(2),J(n.trigger??``),O(2),M((e=n.components[0])?14:-1,e)}}var bA=0,xA=80,SA=10,CA=class e{cycles=$([]);range=Sv(null);gapUntil=xA;budgetLabel=`${Ak} ms budget`;uid=`cd-chart-${bA++}`;hintId=`${this.uid}-hint`;active=D(null);anchor=null;dragging=!1;hover=D(null);focused=D(!1);max=Z(()=>Fk(this.cycles()));budgetAt=Z(()=>Ak/this.max()*100);bars=Z(()=>{let e=this.max();return this.cycles().map((t,n)=>({cycle:t,index:n,height:t.ms/e*100,over:jk(t),label:this.describe(t)}))});firstId=Z(()=>this.cycles()[0]?.id??0);lastId=Z(()=>this.cycles().at(-1)?.id??0);span=Z(()=>{let e=this.range();if(!e)return null;let t=this.cycles(),n=Math.min(e.from,e.to),r=Math.max(e.from,e.to),i=t.findIndex(e=>e.id>=n),a=-1;for(let e=t.length-1;e>=0;e--)if(t[e].id<=r){a=e;break}return i<0||aNk(this.cycles(),this.range()));startId=Z(()=>this.selected()[0]?.id??``);endId=Z(()=>this.selected().at(-1)?.id??``);band=Z(()=>{let e=this.span(),t=this.cycles().length;return!e||!t?null:{left:e.start/t*100,width:(e.end-e.start+1)/t*100}});summary=Z(()=>{let e=this.selected(),t=e.filter(jk).length;return`${this.span()?e.length===1?`Cycle ${e[0].id}`:`Cycles ${e[0].id} to ${e.at(-1).id} (${e.length})`:`All ${e.length} ${e.length===1?`cycle`:`cycles`}`}. ${t} over the ${Ak} ms budget.`});tableLabel=Z(()=>this.span()?`Picked cycles, ${this.summary()}`:`All recorded cycles`);activeOptionId=Z(()=>{let e=this.active();return this.focused()&&e!==null&&e{let e=this.hover()??(this.focused()?this.active():null),t=e===null?void 0:this.cycles()[e];return!t||e===null?null:{cycle:t,over:jk(t),top:t.components.slice(0,3),...this.tipSide(e)}});tipSide(e){let t=this.cycles().length;return e+.5=t.start&&e<=t.end}describe(e){let t=[`Cycle ${e.id}`,Mk(e.ms)];jk(e)&&t.push(`over budget`),e.trigger&&t.push(`after ${e.trigger}`),t.push(`${e.checks} ${e.checks===1?`check`:`checks`}`);let n=e.components[0];return n&&t.push(`slowest ${n.name} ${Mk(n.ms)}`),t.join(`, `)}select(e,t){let n=this.cycles(),r=n[Math.min(e,t)],i=n[Math.max(e,t)];r&&i&&this.range.set({from:r.id,to:i.id})}showAll(){this.range.set(null),this.anchor=null}setEnd(e,t){if(!this.cycles().length)return;let n=t.target,r=Number.parseInt(n.value,10);if(Number.isNaN(r)){n.value=String(e===`from`?this.startId():this.endId());return}let i=Math.min(Math.max(r,this.firstId()),this.lastId()),a=this.selected(),o=e===`from`?i:a[0]?.id??this.firstId(),s=e===`to`?i:a.at(-1)?.id??this.lastId();this.range.set({from:Math.min(o,s),to:Math.max(o,s)}),n.value=String(e===`from`?Math.min(o,s):Math.max(o,s))}onFocus(){this.focused.set(!0),(this.active()===null||this.active()>=this.cycles().length)&&this.active.set(this.span()?.start??Math.max(this.cycles().length-1,0)),this.anchor??=this.active()}onKey(e){let t=this.cycles().length;if(!t)return;let n=Math.min(this.active()??t-1,t-1),r=null;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=n+1;break;case`ArrowLeft`:case`ArrowUp`:r=n-1;break;case`PageDown`:r=n+SA;break;case`PageUp`:r=n-SA;break;case`Home`:r=0;break;case`End`:r=t-1;break;case`Enter`:case` `:e.preventDefault(),this.anchor=n,this.select(n,n);return;case`Escape`:this.range()&&(e.preventDefault(),this.showAll());return;default:return}e.preventDefault(),r=Math.min(Math.max(r,0),t-1),this.active.set(r),this.hover.set(null),e.shiftKey?(this.anchor??=n,this.select(this.anchor,r)):this.anchor=r}indexAt(e){let t=e.target?.closest?.(`[data-index]`);if(t)return Number(t.getAttribute(`data-index`));let n=e.currentTarget?.getBoundingClientRect(),r=this.cycles().length;if(!n?.width||!r)return null;let i=(e.clientX-n.left)/n.width;return Math.min(Math.max(Math.floor(i*r),0),r-1)}startDrag(e){if(e.button!==0)return;let t=this.indexAt(e);t!==null&&(this.dragging=!0,this.anchor=t,this.active.set(t),this.select(t,t))}onPointerMove(e){let t=this.indexAt(e);this.hover.set(t),this.dragging&&t!==null&&this.anchor!==null&&(this.active.set(t),this.select(this.anchor,t))}endDrag(){this.dragging=!1}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-cycle-chart`]],hostBindings:function(e,t){e&1&&H(`pointerup`,function(){return t.endDrag()},Tu)(`pointercancel`,function(){return t.endDrag()},Tu)},inputs:{cycles:[1,`cycles`],range:[1,`range`]},outputs:{range:`rangeChange`},decls:69,vars:25,consts:[[1,`range`],[`type`,`number`,`inputmode`,`numeric`,3,`change`,`min`,`max`,`value`],[`type`,`button`],[1,`summary`],[1,`hint`,3,`id`],[1,`plot`],[`aria-hidden`,`true`,1,`axis`],[1,`tick`,`top`],[1,`tick`,`zero`],[1,`area`],[`aria-hidden`,`true`,1,`band`,3,`left`,`width`],[`aria-hidden`,`true`,1,`budget`],[`role`,`listbox`,`aria-multiselectable`,`true`,`aria-orientation`,`horizontal`,`tabindex`,`0`,1,`bars`,3,`keydown`,`focus`,`blur`,`pointerdown`,`pointermove`,`pointerleave`],[`role`,`option`,1,`col`,3,`id`,`over`,`out`,`active`],[`aria-hidden`,`true`,1,`tip`,3,`left`,`right`],[`aria-hidden`,`true`,1,`markers`],[3,`over`],[`aria-label`,`Chart key`,1,`legend`],[`aria-hidden`,`true`,1,`key`,`ok`],[`aria-hidden`,`true`,1,`key`,`over`],[`aria-hidden`,`true`,1,`key-marker`],[`aria-hidden`,`true`,1,`key`,`line`],[1,`table`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[`type`,`button`,3,`click`],[`aria-hidden`,`true`,1,`band`],[`role`,`option`,1,`col`,3,`id`],[1,`bar`],[`aria-hidden`,`true`,1,`tip`],[1,`tip-head`],[1,`flag`],[1,`tip-row`],[1,`mono`],[1,`mono`,`name`],[1,`num`]],template:function(e,t){if(e&1&&(z(0,`div`,0)(1,`label`)(2,`span`),q(3,`Start`),B(),z(4,`input`,1),U(`change`,function(e){return t.setEnd(`from`,e)}),B()(),z(5,`label`)(6,`span`),q(7,`End`),B(),z(8,`input`,1),U(`change`,function(e){return t.setEnd(`to`,e)}),B()(),j(9,uA,2,0,`button`,2),z(10,`p`,3),q(11),B()(),z(12,`p`,4),q(13,` Drag across the bars to pick a range of cycles. With the chart focused, the arrow keys move between cycles, Shift with an arrow key extends the range, Enter picks one cycle and Escape shows all cycles again. `),B(),z(14,`div`,5)(15,`div`,6)(16,`span`,7),q(17),B(),z(18,`span`,8),q(19,`0 ms`),B()(),z(20,`div`,9),j(21,dA,1,4,`div`,10),z(22,`div`,11)(23,`span`),q(24),B()(),z(25,`div`,12),U(`keydown`,function(e){return t.onKey(e)})(`focus`,function(){return t.onFocus()})(`blur`,function(){return t.focused.set(!1)})(`pointerdown`,function(e){return t.startDrag(e)})(`pointermove`,function(e){return t.onPointerMove(e)})(`pointerleave`,function(){return t.hover.set(null)}),N(26,fA,2,12,`div`,13,cA),B(),j(28,gA,12,12,`div`,14),B()(),z(29,`div`,15),N(30,_A,1,2,`span`,16,cA),B(),z(32,`ul`,17)(33,`li`),Cg(34,`span`,18),q(35,`Within budget`),B(),z(36,`li`),Cg(37,`span`,19)(38,`span`,20),q(39,`Over budget `),B(),z(40,`li`),Cg(41,`span`,21),q(42),B()(),z(43,`details`,22)(44,`summary`),q(45,`Show the cycles as a table`),B(),z(46,`div`,23)(47,`table`)(48,`caption`,24),q(49),B(),z(50,`thead`)(51,`tr`)(52,`th`,25),q(53,`Cycle`),B(),z(54,`th`,25),q(55,`Duration`),B(),z(56,`th`,26),q(57,`Budget`),B(),z(58,`th`,25),q(59,`Checks`),B(),z(60,`th`,25),q(61,`Passes`),B(),z(62,`th`,26),q(63,`After`),B(),z(64,`th`,26),q(65,`Slowest component`),B()()(),z(66,`tbody`),N(67,yA,15,7,`tr`,null,lA),B()()()()),e&2){let e,n;O(4),kg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.startId()),O(4),kg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.endId()),O(),M(t.range()?9:-1),O(2),J(t.summary()),O(),kg(`id`,t.hintId),O(2),K(`flush`,t.bars().length>t.gapUntil),O(3),J(t.fmt(t.max())),O(4),M((e=t.band())?21:-1,e),O(),G(`bottom`,t.budgetAt(),`%`),O(2),J(t.budgetLabel),O(),A(`aria-label`,`Change detection cycles, `+t.summary())(`aria-describedby`,t.hintId)(`aria-activedescendant`,t.activeOptionId()),O(),P(t.bars()),O(2),M((n=t.tip())?28:-1,n),O(),K(`flush`,t.bars().length>t.gapUntil),O(),P(t.bars()),O(12),J(t.budgetLabel),O(4),A(`aria-label`,t.tableLabel()),O(3),Y(` `,t.tableLabel(),` `),O(18),P(t.selected())}},styles:[`[_nghost-%COMP%] { +}`]})},uA=(e,t)=>t.cycle.id,dA=(e,t)=>t.id;function fA(e,t){if(e&1){let e=V();z(0,`button`,27),U(`click`,function(){return w(e),T(W().showAll())}),q(1,`Show all cycles`),B()}}function pA(e,t){if(e&1&&Cg(0,`div`,28),e&2){let e=t;G(`left`,e.left,`%`)(`width`,e.width,`%`)}}function mA(e,t){if(e&1&&(z(0,`div`,29),Cg(1,`span`,30),B()),e&2){let e=t.$implicit,n=W();K(`over`,e.over)(`out`,!n.inRange(e.index)&&!!n.range())(`active`,n.focused()&&n.active()===e.index),kg(`id`,n.optionId(e.index)),A(`data-index`,e.index)(`aria-selected`,n.inRange(e.index))(`aria-label`,e.label),O(),G(`height`,e.height,`%`)}}function hA(e,t){e&1&&(z(0,`span`,33),q(1,`over budget`),B())}function gA(e,t){if(e&1&&(z(0,`p`),q(1,` after `),z(2,`span`,35),q(3),B()()),e&2){let e=W();O(3),J(e.cycle.trigger)}}function _A(e,t){if(e&1&&(z(0,`p`,34)(1,`span`,36),q(2),B(),z(3,`span`),q(4),B()()),e&2){let e=t.$implicit,n=W(2);O(2),J(e.name),O(2),J(n.fmt(e.ms))}}function vA(e,t){if(e&1&&(z(0,`div`,31)(1,`p`,32)(2,`strong`),q(3),B(),z(4,`span`),q(5),B(),j(6,hA,2,0,`span`,33),B(),j(7,gA,4,1,`p`),z(8,`p`),q(9),B(),N(10,_A,5,2,`p`,34,dg),B()),e&2){let e=t,n=W();G(`left`,e.left)(`right`,e.right),O(3),J(n.fmt(e.cycle.ms)),O(2),Y(`cycle `,e.cycle.id),O(),M(e.over?6:-1),O(),M(e.cycle.trigger?7:-1),O(2),B_(` `,e.cycle.checks,` `,e.cycle.checks===1?`check`:`checks`,`, `,e.cycle.passes,` `,e.cycle.passes===1?`pass`:`passes`,` `),O(),P(e.top)}}function yA(e,t){if(e&1&&Cg(0,`span`),e&2){let e=t.$implicit;K(`over`,e.over)}}function bA(e,t){if(e&1&&q(0),e&2){let e=t,n=W(2);X(` `,e.name,` (`,n.fmt(e.ms),`) `)}}function xA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,37),q(2),B(),z(3,`td`,37),q(4),B(),z(5,`td`),q(6),B(),z(7,`td`,37),q(8),B(),z(9,`td`,37),q(10),B(),z(11,`td`,35),q(12),B(),z(13,`td`,35),j(14,bA,1,2),B()()),e&2){let e,n=t.$implicit,r=W();O(2),J(n.id),O(2),J(r.fmt(n.ms)),O(2),J(r.isOver(n)?`Over`:`Within`),O(2),J(n.checks),O(2),J(n.passes),O(2),J(n.trigger??``),O(2),M((e=n.components[0])?14:-1,e)}}var SA=0,CA=80,wA=10,TA=class e{cycles=$([]);range=Sv(null);gapUntil=CA;budgetLabel=`${Mk} ms budget`;uid=`cd-chart-${SA++}`;hintId=`${this.uid}-hint`;active=D(null);anchor=null;dragging=!1;hover=D(null);focused=D(!1);max=Z(()=>Lk(this.cycles()));budgetAt=Z(()=>Mk/this.max()*100);bars=Z(()=>{let e=this.max();return this.cycles().map((t,n)=>({cycle:t,index:n,height:t.ms/e*100,over:Nk(t),label:this.describe(t)}))});firstId=Z(()=>this.cycles()[0]?.id??0);lastId=Z(()=>this.cycles().at(-1)?.id??0);span=Z(()=>{let e=this.range();if(!e)return null;let t=this.cycles(),n=Math.min(e.from,e.to),r=Math.max(e.from,e.to),i=t.findIndex(e=>e.id>=n),a=-1;for(let e=t.length-1;e>=0;e--)if(t[e].id<=r){a=e;break}return i<0||aFk(this.cycles(),this.range()));startId=Z(()=>this.selected()[0]?.id??``);endId=Z(()=>this.selected().at(-1)?.id??``);band=Z(()=>{let e=this.span(),t=this.cycles().length;return!e||!t?null:{left:e.start/t*100,width:(e.end-e.start+1)/t*100}});summary=Z(()=>{let e=this.selected(),t=e.filter(Nk).length;return`${this.span()?e.length===1?`Cycle ${e[0].id}`:`Cycles ${e[0].id} to ${e.at(-1).id} (${e.length})`:`All ${e.length} ${e.length===1?`cycle`:`cycles`}`}. ${t} over the ${Mk} ms budget.`});tableLabel=Z(()=>this.span()?`Picked cycles, ${this.summary()}`:`All recorded cycles`);activeOptionId=Z(()=>{let e=this.active();return this.focused()&&e!==null&&e{let e=this.hover()??(this.focused()?this.active():null),t=e===null?void 0:this.cycles()[e];return!t||e===null?null:{cycle:t,over:Nk(t),top:t.components.slice(0,3),...this.tipSide(e)}});tipSide(e){let t=this.cycles().length;return e+.5=t.start&&e<=t.end}describe(e){let t=[`Cycle ${e.id}`,Pk(e.ms)];Nk(e)&&t.push(`over budget`),e.trigger&&t.push(`after ${e.trigger}`),t.push(`${e.checks} ${e.checks===1?`check`:`checks`}`);let n=e.components[0];return n&&t.push(`slowest ${n.name} ${Pk(n.ms)}`),t.join(`, `)}select(e,t){let n=this.cycles(),r=n[Math.min(e,t)],i=n[Math.max(e,t)];r&&i&&this.range.set({from:r.id,to:i.id})}showAll(){this.range.set(null),this.anchor=null}setEnd(e,t){if(!this.cycles().length)return;let n=t.target,r=Number.parseInt(n.value,10);if(Number.isNaN(r)){n.value=String(e===`from`?this.startId():this.endId());return}let i=Math.min(Math.max(r,this.firstId()),this.lastId()),a=this.selected(),o=e===`from`?i:a[0]?.id??this.firstId(),s=e===`to`?i:a.at(-1)?.id??this.lastId();this.range.set({from:Math.min(o,s),to:Math.max(o,s)}),n.value=String(e===`from`?Math.min(o,s):Math.max(o,s))}onFocus(){this.focused.set(!0),(this.active()===null||this.active()>=this.cycles().length)&&this.active.set(this.span()?.start??Math.max(this.cycles().length-1,0)),this.anchor??=this.active()}onKey(e){let t=this.cycles().length;if(!t)return;let n=Math.min(this.active()??t-1,t-1),r=null;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=n+1;break;case`ArrowLeft`:case`ArrowUp`:r=n-1;break;case`PageDown`:r=n+wA;break;case`PageUp`:r=n-wA;break;case`Home`:r=0;break;case`End`:r=t-1;break;case`Enter`:case` `:e.preventDefault(),this.anchor=n,this.select(n,n);return;case`Escape`:this.range()&&(e.preventDefault(),this.showAll());return;default:return}e.preventDefault(),r=Math.min(Math.max(r,0),t-1),this.active.set(r),this.hover.set(null),e.shiftKey?(this.anchor??=n,this.select(this.anchor,r)):this.anchor=r}indexAt(e){let t=e.target?.closest?.(`[data-index]`);if(t)return Number(t.getAttribute(`data-index`));let n=e.currentTarget?.getBoundingClientRect(),r=this.cycles().length;if(!n?.width||!r)return null;let i=(e.clientX-n.left)/n.width;return Math.min(Math.max(Math.floor(i*r),0),r-1)}startDrag(e){if(e.button!==0)return;let t=this.indexAt(e);t!==null&&(this.dragging=!0,this.anchor=t,this.active.set(t),this.select(t,t))}onPointerMove(e){let t=this.indexAt(e);this.hover.set(t),this.dragging&&t!==null&&this.anchor!==null&&(this.active.set(t),this.select(this.anchor,t))}endDrag(){this.dragging=!1}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-cycle-chart`]],hostBindings:function(e,t){e&1&&H(`pointerup`,function(){return t.endDrag()},Tu)(`pointercancel`,function(){return t.endDrag()},Tu)},inputs:{cycles:[1,`cycles`],range:[1,`range`]},outputs:{range:`rangeChange`},decls:69,vars:25,consts:[[1,`range`],[`type`,`number`,`inputmode`,`numeric`,3,`change`,`min`,`max`,`value`],[`type`,`button`],[1,`summary`],[1,`hint`,3,`id`],[1,`plot`],[`aria-hidden`,`true`,1,`axis`],[1,`tick`,`top`],[1,`tick`,`zero`],[1,`area`],[`aria-hidden`,`true`,1,`band`,3,`left`,`width`],[`aria-hidden`,`true`,1,`budget`],[`role`,`listbox`,`aria-multiselectable`,`true`,`aria-orientation`,`horizontal`,`tabindex`,`0`,1,`bars`,3,`keydown`,`focus`,`blur`,`pointerdown`,`pointermove`,`pointerleave`],[`role`,`option`,1,`col`,3,`id`,`over`,`out`,`active`],[`aria-hidden`,`true`,1,`tip`,3,`left`,`right`],[`aria-hidden`,`true`,1,`markers`],[3,`over`],[`aria-label`,`Chart key`,1,`legend`],[`aria-hidden`,`true`,1,`key`,`ok`],[`aria-hidden`,`true`,1,`key`,`over`],[`aria-hidden`,`true`,1,`key-marker`],[`aria-hidden`,`true`,1,`key`,`line`],[1,`table`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[`type`,`button`,3,`click`],[`aria-hidden`,`true`,1,`band`],[`role`,`option`,1,`col`,3,`id`],[1,`bar`],[`aria-hidden`,`true`,1,`tip`],[1,`tip-head`],[1,`flag`],[1,`tip-row`],[1,`mono`],[1,`mono`,`name`],[1,`num`]],template:function(e,t){if(e&1&&(z(0,`div`,0)(1,`label`)(2,`span`),q(3,`Start`),B(),z(4,`input`,1),U(`change`,function(e){return t.setEnd(`from`,e)}),B()(),z(5,`label`)(6,`span`),q(7,`End`),B(),z(8,`input`,1),U(`change`,function(e){return t.setEnd(`to`,e)}),B()(),j(9,fA,2,0,`button`,2),z(10,`p`,3),q(11),B()(),z(12,`p`,4),q(13,` Drag across the bars to pick a range of cycles. With the chart focused, the arrow keys move between cycles, Shift with an arrow key extends the range, Enter picks one cycle and Escape shows all cycles again. `),B(),z(14,`div`,5)(15,`div`,6)(16,`span`,7),q(17),B(),z(18,`span`,8),q(19,`0 ms`),B()(),z(20,`div`,9),j(21,pA,1,4,`div`,10),z(22,`div`,11)(23,`span`),q(24),B()(),z(25,`div`,12),U(`keydown`,function(e){return t.onKey(e)})(`focus`,function(){return t.onFocus()})(`blur`,function(){return t.focused.set(!1)})(`pointerdown`,function(e){return t.startDrag(e)})(`pointermove`,function(e){return t.onPointerMove(e)})(`pointerleave`,function(){return t.hover.set(null)}),N(26,mA,2,12,`div`,13,uA),B(),j(28,vA,12,12,`div`,14),B()(),z(29,`div`,15),N(30,yA,1,2,`span`,16,uA),B(),z(32,`ul`,17)(33,`li`),Cg(34,`span`,18),q(35,`Within budget`),B(),z(36,`li`),Cg(37,`span`,19)(38,`span`,20),q(39,`Over budget `),B(),z(40,`li`),Cg(41,`span`,21),q(42),B()(),z(43,`details`,22)(44,`summary`),q(45,`Show the cycles as a table`),B(),z(46,`div`,23)(47,`table`)(48,`caption`,24),q(49),B(),z(50,`thead`)(51,`tr`)(52,`th`,25),q(53,`Cycle`),B(),z(54,`th`,25),q(55,`Duration`),B(),z(56,`th`,26),q(57,`Budget`),B(),z(58,`th`,25),q(59,`Checks`),B(),z(60,`th`,25),q(61,`Passes`),B(),z(62,`th`,26),q(63,`After`),B(),z(64,`th`,26),q(65,`Slowest component`),B()()(),z(66,`tbody`),N(67,xA,15,7,`tr`,null,dA),B()()()()),e&2){let e,n;O(4),kg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.startId()),O(4),kg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.endId()),O(),M(t.range()?9:-1),O(2),J(t.summary()),O(),kg(`id`,t.hintId),O(2),K(`flush`,t.bars().length>t.gapUntil),O(3),J(t.fmt(t.max())),O(4),M((e=t.band())?21:-1,e),O(),G(`bottom`,t.budgetAt(),`%`),O(2),J(t.budgetLabel),O(),A(`aria-label`,`Change detection cycles, `+t.summary())(`aria-describedby`,t.hintId)(`aria-activedescendant`,t.activeOptionId()),O(),P(t.bars()),O(2),M((n=t.tip())?28:-1,n),O(),K(`flush`,t.bars().length>t.gapUntil),O(),P(t.bars()),O(12),J(t.budgetLabel),O(4),A(`aria-label`,t.tableLabel()),O(3),Y(` `,t.tableLabel(),` `),O(18),P(t.selected())}},styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1224,7 +1224,7 @@ td.mono[_ngcontent-%COMP%] { .bar[_ngcontent-%COMP%] { transition: none; } -}`]})},wA=(e,t)=>t.id,TA=(e,t)=>t.index,EA=(e,t)=>t.kind;function DA(e,t){if(e&1&&(z(0,`p`,0),q(1),B()),e&2){let e=W(2);O(),X(` Pick `,e.max,` cycles or fewer to see their spans. `,e.count(),` are picked. `)}}function OA(e,t){if(e&1&&(z(0,`span`),q(1),B()),e&2){let e=t.$implicit;G(`left`,e.x,`%`)(`width`,e.w,`%`),O(),Y(`cycle `,e.id)}}function kA(e,t){if(e&1){let e=V();z(0,`button`,11),U(`focus`,function(){let t=w(e).$implicit;return T(W(3).current.set(t.index))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(3).hover.set(t.index))})(`mouseleave`,function(){return w(e),T(W(3).hover.set(null))})(`click`,function(){let t=w(e).$implicit;return T(W(3).choose(t))}),z(1,`span`,12),q(2),B()()}if(e&2){let e=t.$implicit,n=W(3);m_(Y_(`block kind-`,e.kind)),G(`left`,e.x,`%`)(`width`,e.w,`%`)(`top`,e.depth*n.row,`px`),K(`narrow`,e.w<4),A(`tabindex`,e.index===n.tabStop()?0:-1)(`data-index`,e.index)(`aria-label`,n.describe(e))(`aria-disabled`,e.component?null:`true`),O(2),J(e.name)}}function AA(e,t){if(e&1&&(z(0,`li`),Cg(1,`span`,13),q(2),B()),e&2){let e=t.$implicit;O(),m_(Y_(`key kind-`,e.kind)),O(),J(e.label)}}function jA(e,t){if(e&1&&(z(0,`p`,0),q(1),B()),e&2){let e=W(3);O(),X(` Each cycle keeps its longest spans. `,e.dropped(),` shorter `,e.dropped()===1?`span was`:`spans were`,` left out. `)}}function MA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,17),q(2),B(),z(3,`td`,18),q(4),B(),z(5,`td`),q(6),B(),z(7,`td`,17),q(8),B(),z(9,`td`,17),q(10),B(),z(11,`td`,17),q(12),B(),z(13,`td`,17),q(14),B()()),e&2){let e=t.$implicit,n=W(4);O(2),J(e.cycleId),O(),G(`padding-left`,6+e.depth*8,`px`),O(),J(e.name),O(2),J(n.kindLabel(e)),O(2),J(e.depth),O(2),J(n.fmt(e.start)),O(2),J(n.fmt(e.ms)),O(2),J(n.fmt(e.selfMs))}}function NA(e,t){if(e&1&&(z(0,`div`,10)(1,`table`)(2,`caption`,14),q(3),B(),z(4,`thead`)(5,`tr`)(6,`th`,15),q(7,`Cycle`),B(),z(8,`th`,16),q(9,`Span`),B(),z(10,`th`,16),q(11,`Kind`),B(),z(12,`th`,15),q(13,`Depth`),B(),z(14,`th`,15),q(15,`Start`),B(),z(16,`th`,15),q(17,`Total`),B(),z(18,`th`,15),q(19,`Self`),B()()(),z(20,`tbody`),N(21,MA,15,9,`tr`,null,TA),B()()()),e&2){let e=W(),t=W(2);A(`aria-label`,t.tableLabel()),O(3),Y(` `,t.tableLabel(),` `),O(18),P(e.blocks)}}function PA(e,t){if(e&1){let e=V();z(0,`div`,1),U(`keydown`,function(t){return w(e),T(W(2).onKey(t))}),z(1,`div`,2),N(2,OA,2,5,`span`,3,wA),B(),z(4,`div`,4),N(5,kA,3,16,`button`,5,TA),B()(),z(7,`p`,6),q(8),B(),z(9,`ul`,7),N(10,AA,3,4,`li`,null,EA),B(),z(12,`p`,8),q(13,` Arrow keys move along a row, Up goes to the enclosing span and Down to the first nested one. Enter on a component shows it in the tree. `),B(),j(14,jA,2,2,`p`,0),z(15,`details`,9),U(`toggle`,function(t){return w(e),T(W(2).onToggle(t))}),z(16,`summary`),q(17,`Show the spans as a table`),B(),j(18,NA,23,2,`div`,10),B()}if(e&2){let e=t,n=W(2);A(`aria-label`,n.label()),O(2),P(e.cycles),O(2),G(`height`,e.depth*n.row,`px`),O(),P(e.blocks),O(3),J(n.readout()),O(2),P(n.kinds),O(4),M(n.dropped()?14:-1),O(4),M(n.tableOpen()?18:-1)}}function FA(e,t){if(e&1&&(z(0,`h3`),q(1,`Spans in the picked cycles`),B(),j(2,DA,2,2,`p`,0)(3,PA,19,6)),e&2){let e,t=W();O(2),M(t.tooMany()?2:(e=t.graph())?3:-1,e)}}var IA=22;function LA(e,t){for(let n=e.length-1;n>=0;n--)if(t(e[n]))return e[n]}var RA=class e{cycles=$([]);names=$([]);scope=$(`the recording`);pick=_v();row=IA;max=30;kinds=[`c`,`h`,`r`,`o`].map(e=>({kind:e,label:Lk[e]}));current=D(0);tableOpen=D(!1);hover=D(null);hasSpans=Z(()=>this.cycles().some(e=>e.spans?.length));count=Z(()=>this.cycles().length);tooMany=Z(()=>this.count()>30);graph=Z(()=>this.tooMany()?null:zk(this.cycles(),this.names()));tabStop=Z(()=>Math.min(this.current(),Math.max((this.graph()?.blocks.length??1)-1,0)));dropped=Z(()=>this.graph()?.cycles.reduce((e,t)=>e+t.droppedSpans,0)??0);label=Z(()=>`Spans in ${this.scope()} over time, nested by depth. Pick a component to show it in the tree.`);readout=Z(()=>{let e=(this.graph()?.blocks??[])[this.hover()??this.tabStop()];return e?this.describe(e):``});tableLabel=Z(()=>`Timed spans in ${this.scope()}`);fmt(e){return Mk(e)}kindLabel(e){return Lk[e.kind]}onToggle(e){this.tableOpen.set(e.target.open)}describe(e){let t=[e.name,Lk[e.kind],`${Mk(e.ms)} total`];return e.selfMs!==e.ms&&t.push(`${Mk(e.selfMs)} self`),t.push(e.start<0?`cycle ${e.cycleId}, ${Mk(-e.start)} before it started`:`cycle ${e.cycleId} at ${Mk(e.start)}`),t.join(`, `)}choose(e){this.current.set(e.index),e.component&&this.pick.emit(e.component)}onKey(e){let t=this.graph()?.blocks??[];if(!t.length)return;let n=t[this.tabStop()],r;switch(e.key){case`ArrowRight`:r=t.find(e=>e.index>n.index&&e.depth===n.depth);break;case`ArrowLeft`:r=LA(t,e=>e.indexe.indexe.parent===n.index)??t.find(e=>e.index>n.index&&e.depth===n.depth+1);break;case`Home`:r=t[0];break;case`End`:r=t.at(-1);break;default:return}e.preventDefault(),this.hover.set(null),r&&(this.current.set(r.index),e.currentTarget.querySelector(`button[data-index="${r.index}"]`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-flame-graph`]],inputs:{cycles:[1,`cycles`],names:[1,`names`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:1,vars:1,consts:[[1,`note`],[`role`,`group`,1,`flame`,3,`keydown`],[`aria-hidden`,`true`,1,`cycles`],[3,`left`,`width`],[1,`rows`],[`type`,`button`,3,`class`,`narrow`,`left`,`width`,`top`],[`aria-hidden`,`true`,1,`readout`],[`aria-label`,`Span kinds`,1,`legend`],[1,`hint`],[1,`table`,3,`toggle`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[`type`,`button`,3,`focus`,`mouseenter`,`mouseleave`,`click`],[1,`text`],[`aria-hidden`,`true`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[1,`num`],[1,`mono`]],template:function(e,t){e&1&&j(0,FA,4,1),e&2&&M(t.hasSpans()?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})},EA=(e,t)=>t.id,DA=(e,t)=>t.index,OA=(e,t)=>t.kind;function kA(e,t){if(e&1&&(z(0,`p`,0),q(1),B()),e&2){let e=W(2);O(),X(` Pick `,e.max,` cycles or fewer to see their spans. `,e.count(),` are picked. `)}}function AA(e,t){if(e&1&&(z(0,`span`),q(1),B()),e&2){let e=t.$implicit;G(`left`,e.x,`%`)(`width`,e.w,`%`),O(),Y(`cycle `,e.id)}}function jA(e,t){if(e&1){let e=V();z(0,`button`,11),U(`focus`,function(){let t=w(e).$implicit;return T(W(3).current.set(t.index))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(3).hover.set(t.index))})(`mouseleave`,function(){return w(e),T(W(3).hover.set(null))})(`click`,function(){let t=w(e).$implicit;return T(W(3).choose(t))}),z(1,`span`,12),q(2),B()()}if(e&2){let e=t.$implicit,n=W(3);m_(Y_(`block kind-`,e.kind)),G(`left`,e.x,`%`)(`width`,e.w,`%`)(`top`,e.depth*n.row,`px`),K(`narrow`,e.w<4),A(`tabindex`,e.index===n.tabStop()?0:-1)(`data-index`,e.index)(`aria-label`,n.describe(e))(`aria-disabled`,e.component?null:`true`),O(2),J(e.name)}}function MA(e,t){if(e&1&&(z(0,`li`),Cg(1,`span`,13),q(2),B()),e&2){let e=t.$implicit;O(),m_(Y_(`key kind-`,e.kind)),O(),J(e.label)}}function NA(e,t){if(e&1&&(z(0,`p`,0),q(1),B()),e&2){let e=W(3);O(),X(` Each cycle keeps its longest spans. `,e.dropped(),` shorter `,e.dropped()===1?`span was`:`spans were`,` left out. `)}}function PA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,17),q(2),B(),z(3,`td`,18),q(4),B(),z(5,`td`),q(6),B(),z(7,`td`,17),q(8),B(),z(9,`td`,17),q(10),B(),z(11,`td`,17),q(12),B(),z(13,`td`,17),q(14),B()()),e&2){let e=t.$implicit,n=W(4);O(2),J(e.cycleId),O(),G(`padding-left`,6+e.depth*8,`px`),O(),J(e.name),O(2),J(n.kindLabel(e)),O(2),J(e.depth),O(2),J(n.fmt(e.start)),O(2),J(n.fmt(e.ms)),O(2),J(n.fmt(e.selfMs))}}function FA(e,t){if(e&1&&(z(0,`div`,10)(1,`table`)(2,`caption`,14),q(3),B(),z(4,`thead`)(5,`tr`)(6,`th`,15),q(7,`Cycle`),B(),z(8,`th`,16),q(9,`Span`),B(),z(10,`th`,16),q(11,`Kind`),B(),z(12,`th`,15),q(13,`Depth`),B(),z(14,`th`,15),q(15,`Start`),B(),z(16,`th`,15),q(17,`Total`),B(),z(18,`th`,15),q(19,`Self`),B()()(),z(20,`tbody`),N(21,PA,15,9,`tr`,null,DA),B()()()),e&2){let e=W(),t=W(2);A(`aria-label`,t.tableLabel()),O(3),Y(` `,t.tableLabel(),` `),O(18),P(e.blocks)}}function IA(e,t){if(e&1){let e=V();z(0,`div`,1),U(`keydown`,function(t){return w(e),T(W(2).onKey(t))}),z(1,`div`,2),N(2,AA,2,5,`span`,3,EA),B(),z(4,`div`,4),N(5,jA,3,16,`button`,5,DA),B()(),z(7,`p`,6),q(8),B(),z(9,`ul`,7),N(10,MA,3,4,`li`,null,OA),B(),z(12,`p`,8),q(13,` Arrow keys move along a row, Up goes to the enclosing span and Down to the first nested one. Enter on a component shows it in the tree. `),B(),j(14,NA,2,2,`p`,0),z(15,`details`,9),U(`toggle`,function(t){return w(e),T(W(2).onToggle(t))}),z(16,`summary`),q(17,`Show the spans as a table`),B(),j(18,FA,23,2,`div`,10),B()}if(e&2){let e=t,n=W(2);A(`aria-label`,n.label()),O(2),P(e.cycles),O(2),G(`height`,e.depth*n.row,`px`),O(),P(e.blocks),O(3),J(n.readout()),O(2),P(n.kinds),O(4),M(n.dropped()?14:-1),O(4),M(n.tableOpen()?18:-1)}}function LA(e,t){if(e&1&&(z(0,`h3`),q(1,`Spans in the picked cycles`),B(),j(2,kA,2,2,`p`,0)(3,IA,19,6)),e&2){let e,t=W();O(2),M(t.tooMany()?2:(e=t.graph())?3:-1,e)}}var RA=22;function zA(e,t){for(let n=e.length-1;n>=0;n--)if(t(e[n]))return e[n]}var BA=class e{cycles=$([]);names=$([]);scope=$(`the recording`);pick=_v();row=RA;max=30;kinds=[`c`,`h`,`r`,`o`].map(e=>({kind:e,label:zk[e]}));current=D(0);tableOpen=D(!1);hover=D(null);hasSpans=Z(()=>this.cycles().some(e=>e.spans?.length));count=Z(()=>this.cycles().length);tooMany=Z(()=>this.count()>30);graph=Z(()=>this.tooMany()?null:Vk(this.cycles(),this.names()));tabStop=Z(()=>Math.min(this.current(),Math.max((this.graph()?.blocks.length??1)-1,0)));dropped=Z(()=>this.graph()?.cycles.reduce((e,t)=>e+t.droppedSpans,0)??0);label=Z(()=>`Spans in ${this.scope()} over time, nested by depth. Pick a component to show it in the tree.`);readout=Z(()=>{let e=(this.graph()?.blocks??[])[this.hover()??this.tabStop()];return e?this.describe(e):``});tableLabel=Z(()=>`Timed spans in ${this.scope()}`);fmt(e){return Pk(e)}kindLabel(e){return zk[e.kind]}onToggle(e){this.tableOpen.set(e.target.open)}describe(e){let t=[e.name,zk[e.kind],`${Pk(e.ms)} total`];return e.selfMs!==e.ms&&t.push(`${Pk(e.selfMs)} self`),t.push(e.start<0?`cycle ${e.cycleId}, ${Pk(-e.start)} before it started`:`cycle ${e.cycleId} at ${Pk(e.start)}`),t.join(`, `)}choose(e){this.current.set(e.index),e.component&&this.pick.emit(e.component)}onKey(e){let t=this.graph()?.blocks??[];if(!t.length)return;let n=t[this.tabStop()],r;switch(e.key){case`ArrowRight`:r=t.find(e=>e.index>n.index&&e.depth===n.depth);break;case`ArrowLeft`:r=zA(t,e=>e.indexe.indexe.parent===n.index)??t.find(e=>e.index>n.index&&e.depth===n.depth+1);break;case`Home`:r=t[0];break;case`End`:r=t.at(-1);break;default:return}e.preventDefault(),this.hover.set(null),r&&(this.current.set(r.index),e.currentTarget.querySelector(`button[data-index="${r.index}"]`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-flame-graph`]],inputs:{cycles:[1,`cycles`],names:[1,`names`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:1,vars:1,consts:[[1,`note`],[`role`,`group`,1,`flame`,3,`keydown`],[`aria-hidden`,`true`,1,`cycles`],[3,`left`,`width`],[1,`rows`],[`type`,`button`,3,`class`,`narrow`,`left`,`width`,`top`],[`aria-hidden`,`true`,1,`readout`],[`aria-label`,`Span kinds`,1,`legend`],[1,`hint`],[1,`table`,3,`toggle`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[`type`,`button`,3,`focus`,`mouseenter`,`mouseleave`,`click`],[1,`text`],[`aria-hidden`,`true`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[1,`num`],[1,`mono`]],template:function(e,t){e&1&&j(0,LA,4,1),e&2&&M(t.hasSpans()?0:-1)},styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1431,7 +1431,7 @@ td.mono[_ngcontent-%COMP%] { .num[_ngcontent-%COMP%] { text-align: right; font-variant-numeric: tabular-nums; -}`]})};function zA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),q(2),B(),z(3,`td`,6),q(4),B(),z(5,`td`,6),q(6),B(),z(7,`td`,6),q(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),X(``,e.name,`.`,e.hook),O(2),J(e.calls),O(2),J(n.ms(e.ms)),O(2),J(n.ms(e.maxMs))}}function BA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),q(2,`Lifecycle hooks`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),q(7,`Hook`),B(),z(8,`th`,4),q(9,`Calls`),B(),z(10,`th`,4),q(11,`Time`),B(),z(12,`th`,4),q(13,`Slowest`),B()()(),z(14,`tbody`),N(15,zA,9,5,`tr`,null,dg),B()()()),e&2){let e=W(2);O(15),P(e.hooks())}}function VA(e,t){if(e&1&&q(0),e&2){let e=W().$implicit;Y(` (`,e.listener,`) `)}}function HA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),q(2),j(3,VA,1,1),B(),z(4,`td`,6),q(5),B(),z(6,`td`,6),q(7),B(),z(8,`td`,6),q(9),B()()),e&2){let e=t.$implicit,n=W(3);O(2),Y(` `,e.name,` `),O(),M(e.listener?3:-1),O(2),J(e.calls),O(2),J(n.ms(e.ms)),O(2),J(n.ms(e.maxMs))}}function UA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),q(2,`Output listeners`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),q(7,`Listener`),B(),z(8,`th`,4),q(9,`Calls`),B(),z(10,`th`,4),q(11,`Time`),B(),z(12,`th`,4),q(13,`Slowest`),B()()(),z(14,`tbody`),N(15,HA,10,5,`tr`,null,dg),B()()()),e&2){let e=W(2);O(15),P(e.outputs())}}function WA(e,t){if(e&1&&(z(0,`p`,1),q(1),B()),e&2){let e=t,n=W(2);O(),B_(` afterRender callbacks ran `,e.runs,` `,e.runs===1?`time`:`times`,`, `,n.ms(e.ms),` in total, slowest `,n.ms(e.maxMs),`. `)}}function GA(e,t){if(e&1&&(z(0,`p`,2),q(1),B()),e&2){let e=W(2);O(),X(` `,e.dropped(),` more hook or output `,e.dropped()===1?`row is`:`rows are`,` left out. A recording lists at most 100 of each. `)}}function KA(e,t){if(e&1&&(z(0,`div`,0),j(1,BA,17,0,`div`),j(2,UA,17,0,`div`),B(),j(3,WA,2,4,`p`,1),j(4,GA,2,2,`p`,2)),e&2){let e,t=W();O(),M(t.hooks().length?1:-1),O(),M(t.outputs().length?2:-1),O(),M((e=t.afterRender())?3:-1,e),O(),M(t.dropped()?4:-1)}}var qA=10;function JA(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}var YA=class e{page=$(null);hooks=Z(()=>(this.page()?.hooks??[]).slice(0,qA));outputs=Z(()=>(this.page()?.outputs??[]).slice(0,qA));afterRender=Z(()=>{let e=this.page()?.afterRender;return e?.runs?e:null});dropped=Z(()=>this.page()?.droppedTimings??0);ms(e){return JA(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-timing`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[1,`timing`],[1,`after-render`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`mono`],[1,`num`]],template:function(e,t){e&1&&j(0,KA,5,4),e&2&&M(t.hooks().length||t.outputs().length||t.afterRender()?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})};function VA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),q(2),B(),z(3,`td`,6),q(4),B(),z(5,`td`,6),q(6),B(),z(7,`td`,6),q(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),X(``,e.name,`.`,e.hook),O(2),J(e.calls),O(2),J(n.ms(e.ms)),O(2),J(n.ms(e.maxMs))}}function HA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),q(2,`Lifecycle hooks`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),q(7,`Hook`),B(),z(8,`th`,4),q(9,`Calls`),B(),z(10,`th`,4),q(11,`Time`),B(),z(12,`th`,4),q(13,`Slowest`),B()()(),z(14,`tbody`),N(15,VA,9,5,`tr`,null,dg),B()()()),e&2){let e=W(2);O(15),P(e.hooks())}}function UA(e,t){if(e&1&&q(0),e&2){let e=W().$implicit;Y(` (`,e.listener,`) `)}}function WA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),q(2),j(3,UA,1,1),B(),z(4,`td`,6),q(5),B(),z(6,`td`,6),q(7),B(),z(8,`td`,6),q(9),B()()),e&2){let e=t.$implicit,n=W(3);O(2),Y(` `,e.name,` `),O(),M(e.listener?3:-1),O(2),J(e.calls),O(2),J(n.ms(e.ms)),O(2),J(n.ms(e.maxMs))}}function GA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),q(2,`Output listeners`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),q(7,`Listener`),B(),z(8,`th`,4),q(9,`Calls`),B(),z(10,`th`,4),q(11,`Time`),B(),z(12,`th`,4),q(13,`Slowest`),B()()(),z(14,`tbody`),N(15,WA,10,5,`tr`,null,dg),B()()()),e&2){let e=W(2);O(15),P(e.outputs())}}function KA(e,t){if(e&1&&(z(0,`p`,1),q(1),B()),e&2){let e=t,n=W(2);O(),B_(` afterRender callbacks ran `,e.runs,` `,e.runs===1?`time`:`times`,`, `,n.ms(e.ms),` in total, slowest `,n.ms(e.maxMs),`. `)}}function qA(e,t){if(e&1&&(z(0,`p`,2),q(1),B()),e&2){let e=W(2);O(),X(` `,e.dropped(),` more hook or output `,e.dropped()===1?`row is`:`rows are`,` left out. A recording lists at most 100 of each. `)}}function JA(e,t){if(e&1&&(z(0,`div`,0),j(1,HA,17,0,`div`),j(2,GA,17,0,`div`),B(),j(3,KA,2,4,`p`,1),j(4,qA,2,2,`p`,2)),e&2){let e,t=W();O(),M(t.hooks().length?1:-1),O(),M(t.outputs().length?2:-1),O(),M((e=t.afterRender())?3:-1,e),O(),M(t.dropped()?4:-1)}}var YA=10;function XA(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}var ZA=class e{page=$(null);hooks=Z(()=>(this.page()?.hooks??[]).slice(0,YA));outputs=Z(()=>(this.page()?.outputs??[]).slice(0,YA));afterRender=Z(()=>{let e=this.page()?.afterRender;return e?.runs?e:null});dropped=Z(()=>this.page()?.droppedTimings??0);ms(e){return XA(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-timing`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[1,`timing`],[1,`after-render`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`mono`],[1,`num`]],template:function(e,t){e&1&&j(0,JA,5,4),e&2&&M(t.hooks().length||t.outputs().length||t.afterRender()?0:-1)},styles:[`[_nghost-%COMP%] { display: block; } @@ -1491,7 +1491,7 @@ td.mono[_ngcontent-%COMP%] { margin: 8px 0 0; color: var(--%NS%text-2); font-size: 12px; -}`]})};function XA(e,t){if(e&1&&(z(0,`p`,5),q(1),B()),e&2){let e=W();O(),J(e.error())}}function ZA(e,t){let n=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t,document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}var QA=class e{page=$(null);maxCycles=$(200);imported=_v();error=D(``);hasCycles(){return(this.page()?.cycles.length??0)>0}exportJson(){let e=this.page();e&&ZA(Sk(e,e.pageId),`change-detection-${e.pageId}.json`)}exportTrace(){let e=this.page();e&&ZA(kk(e,e.pageId),`change-detection-${e.pageId}.trace.json`)}async read(e){let t=e.files?.[0];if(e.value=``,!t)return;if(t.size>2e7){this.error.set(`${t.name}: The file is larger than 20 MB.`);return}let n;try{n=await t.text()}catch{this.error.set(`Could not read the file.`);return}let r=Ck(n,this.maxCycles());if(!r.ok){this.error.set(`${t.name}: ${r.error}`);return}this.error.set(``),this.imported.emit({fileName:t.name,page:{...r.recording,pageId:r.pageId,supported:!0}})}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-transfer`]],inputs:{page:[1,`page`],maxCycles:[1,`maxCycles`]},outputs:{imported:`imported`},decls:10,vars:3,consts:[[`file`,``],[`role`,`group`,`aria-label`,`Export and import the recording`,1,`transfer`],[`type`,`button`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[`type`,`file`,`accept`,`.json,application/json`,`hidden`,``,3,`change`],[`role`,`alert`,1,`error`]],template:function(e,t){if(e&1){let e=V();z(0,`div`,1)(1,`button`,2),U(`click`,function(){return t.exportJson()}),q(2,`Export JSON`),B(),z(3,`button`,2),U(`click`,function(){return t.exportTrace()}),q(4,` Export trace (Perfetto) `),B(),z(5,`button`,3),U(`click`,function(){return w(e),T(qg(8).click())}),q(6,`Import`),B(),z(7,`input`,4,0),U(`change`,function(){w(e);let n=qg(8);return T(t.read(n))}),B()(),j(9,XA,2,1,`p`,5)}e&2&&(O(),kg(`disabled`,!t.hasCycles()),O(2),kg(`disabled`,!t.hasCycles()),O(6),M(t.error()?9:-1))},styles:[`[_nghost-%COMP%] { +}`]})};function QA(e,t){if(e&1&&(z(0,`p`,5),q(1),B()),e&2){let e=W();O(),J(e.error())}}function $A(e,t){let n=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t,document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}var ej=class e{page=$(null);maxCycles=$(200);imported=_v();error=D(``);hasCycles(){return(this.page()?.cycles.length??0)>0}exportJson(){let e=this.page();e&&$A(wk(e,e.pageId),`change-detection-${e.pageId}.json`)}exportTrace(){let e=this.page();e&&$A(jk(e,e.pageId),`change-detection-${e.pageId}.trace.json`)}async read(e){let t=e.files?.[0];if(e.value=``,!t)return;if(t.size>2e7){this.error.set(`${t.name}: The file is larger than 20 MB.`);return}let n;try{n=await t.text()}catch{this.error.set(`Could not read the file.`);return}let r=Tk(n,this.maxCycles());if(!r.ok){this.error.set(`${t.name}: ${r.error}`);return}this.error.set(``),this.imported.emit({fileName:t.name,page:{...r.recording,pageId:r.pageId,supported:!0}})}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-transfer`]],inputs:{page:[1,`page`],maxCycles:[1,`maxCycles`]},outputs:{imported:`imported`},decls:10,vars:3,consts:[[`file`,``],[`role`,`group`,`aria-label`,`Export and import the recording`,1,`transfer`],[`type`,`button`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[`type`,`file`,`accept`,`.json,application/json`,`hidden`,``,3,`change`],[`role`,`alert`,1,`error`]],template:function(e,t){if(e&1){let e=V();z(0,`div`,1)(1,`button`,2),U(`click`,function(){return t.exportJson()}),q(2,`Export JSON`),B(),z(3,`button`,2),U(`click`,function(){return t.exportTrace()}),q(4,` Export trace (Perfetto) `),B(),z(5,`button`,3),U(`click`,function(){return w(e),T(qg(8).click())}),q(6,`Import`),B(),z(7,`input`,4,0),U(`change`,function(){w(e);let n=qg(8);return T(t.read(n))}),B()(),j(9,QA,2,1,`p`,5)}e&2&&(O(),kg(`disabled`,!t.hasCycles()),O(2),kg(`disabled`,!t.hasCycles()),O(6),M(t.error()?9:-1))},styles:[`[_nghost-%COMP%] { display: contents; } @@ -1533,7 +1533,7 @@ button[_ngcontent-%COMP%]:disabled { margin: 0; color: var(--%NS%danger-text); font-size: 12px; -}`]})},$A=(e,t)=>t.stat.name;function ej(e,t){if(e&1&&(z(0,`span`,8),q(1),B()),e&2){let e=W(2).$implicit;O(),Y(``,e.other,` more`)}}function tj(e,t){if(e&1&&(z(0,`div`,6)(1,`span`,7),q(2),B(),j(3,ej,2,1,`span`,8),B()),e&2){let e=W().$implicit;G(`--%NS%tone`,e.tone+`%`),O(2),J(e.label),O(),M(e.roomy?3:-1)}}function nj(e,t){if(e&1&&(z(0,`span`,10),q(1),B(),z(2,`span`,11),q(3),B()),e&2){let e=W(2).$implicit,t=W(2);O(),J(e.stat.name),O(2),J(t.fmt(e.stat.ms))}}function rj(e,t){if(e&1){let e=V();z(0,`button`,9),U(`focus`,function(){w(e);let t=W().$index;return T(W(2).current.set(t))})(`click`,function(){w(e);let t=W().$implicit;return T(W(2).pick.emit(t.stat.name))}),j(1,nj,4,2),B()}if(e&2){let e=W(),t=e.$implicit,n=e.$index,r=W(2);G(`--%NS%tone`,t.tone+`%`),A(`tabindex`,n===r.tabStop()?0:-1)(`aria-label`,t.label)(`data-index`,n),O(),M(t.roomy?1:-1)}}function ij(e,t){if(e&1&&(z(0,`li`),j(1,tj,4,4,`div`,4)(2,rj,2,6,`button`,5),B()),e&2){let e=t.$implicit;G(`left`,e.x,`%`)(`top`,e.y,`%`)(`width`,e.w,`%`)(`height`,e.h,`%`),O(),M(e.other?1:2)}}function aj(e,t){if(e&1){let e=V();z(0,`ul`,2),U(`keydown`,function(t){return w(e),T(W().onKey(t))}),N(1,ij,3,9,`li`,3,$A),B()}if(e&2){let e=W();A(`aria-label`,e.label()),O(),P(e.cells())}}function oj(e,t){e&1&&(z(0,`p`,1),q(1,`No component time in these cycles.`),B())}var sj=24,cj=3,lj=class e{stats=$([]);scope=$(`the recording`);pick=_v();current=D(0);label=Z(()=>`Self time per component in ${this.scope()}, largest first. Pick one to show it in the tree.`);cells=Z(()=>{let e=this.stats().filter(e=>e.ms>0),t=e.slice(0,sj),n=e.slice(sj),r=n.reduce((e,t)=>e+t.ms,0),i=t.map(e=>({stat:e,other:0}));n.length&&i.push({stat:{name:`Other components`,checks:0,ms:r,maxMs:0,cycles:0},other:n.length});let a=e.reduce((e,t)=>e+t.ms,0),o=t[0]?.ms??1,s=Ik(i,e=>e.stat.ms,cj);return s.sort((e,t)=>Number(e.item.other>0)-Number(t.item.other>0)),s.map(e=>{let{stat:t,other:n}=e.item,r=a?Math.round(t.ms/a*100):0;return{stat:t,other:n,x:e.x,y:e.y,w:e.w,h:e.h,tone:n?0:14+Math.round(26*Math.min(t.ms/o,1)),roomy:e.w>=10&&e.h>=22,label:n?`${n} more components, ${Mk(t.ms)}, ${r}% of self time`:`${t.name}, ${Mk(t.ms)} self time, ${r}%, ${t.checks} ${t.checks===1?`check`:`checks`}`}})});tabStop=Z(()=>Math.min(this.current(),Math.max(this.cells().filter(e=>!e.other).length-1,0)));fmt(e){return Mk(e)}onKey(e){let t=this.cells().filter(e=>!e.other).length;if(!t)return;let n=this.tabStop(),r;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=Math.min(n+1,t-1);break;case`ArrowLeft`:case`ArrowUp`:r=Math.max(n-1,0);break;case`Home`:r=0;break;case`End`:r=t-1;break;default:return}e.preventDefault(),this.current.set(r),e.currentTarget.querySelector(`button[data-index="${r}"]`)?.focus()}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-treemap`]],inputs:{stats:[1,`stats`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:2,vars:1,consts:[[1,`map`],[1,`empty`],[1,`map`,3,`keydown`],[3,`left`,`top`,`width`,`height`],[1,`cell`,`other`,3,`--%NS%tone`],[`type`,`button`,1,`cell`,3,`--%NS%tone`],[1,`cell`,`other`],[1,`sr-only`],[`aria-hidden`,`true`,1,`name`],[`type`,`button`,1,`cell`,3,`focus`,`click`],[1,`name`,`mono`],[1,`ms`]],template:function(e,t){e&1&&j(0,aj,3,1,`ul`,0)(1,oj,2,0,`p`,1),e&2&&M(+!t.cells().length)},styles:[`[_nghost-%COMP%] { +}`]})},tj=(e,t)=>t.stat.name;function nj(e,t){if(e&1&&(z(0,`span`,8),q(1),B()),e&2){let e=W(2).$implicit;O(),Y(``,e.other,` more`)}}function rj(e,t){if(e&1&&(z(0,`div`,6)(1,`span`,7),q(2),B(),j(3,nj,2,1,`span`,8),B()),e&2){let e=W().$implicit;G(`--%NS%tone`,e.tone+`%`),O(2),J(e.label),O(),M(e.roomy?3:-1)}}function ij(e,t){if(e&1&&(z(0,`span`,10),q(1),B(),z(2,`span`,11),q(3),B()),e&2){let e=W(2).$implicit,t=W(2);O(),J(e.stat.name),O(2),J(t.fmt(e.stat.ms))}}function aj(e,t){if(e&1){let e=V();z(0,`button`,9),U(`focus`,function(){w(e);let t=W().$index;return T(W(2).current.set(t))})(`click`,function(){w(e);let t=W().$implicit;return T(W(2).pick.emit(t.stat.name))}),j(1,ij,4,2),B()}if(e&2){let e=W(),t=e.$implicit,n=e.$index,r=W(2);G(`--%NS%tone`,t.tone+`%`),A(`tabindex`,n===r.tabStop()?0:-1)(`aria-label`,t.label)(`data-index`,n),O(),M(t.roomy?1:-1)}}function oj(e,t){if(e&1&&(z(0,`li`),j(1,rj,4,4,`div`,4)(2,aj,2,6,`button`,5),B()),e&2){let e=t.$implicit;G(`left`,e.x,`%`)(`top`,e.y,`%`)(`width`,e.w,`%`)(`height`,e.h,`%`),O(),M(e.other?1:2)}}function sj(e,t){if(e&1){let e=V();z(0,`ul`,2),U(`keydown`,function(t){return w(e),T(W().onKey(t))}),N(1,oj,3,9,`li`,3,tj),B()}if(e&2){let e=W();A(`aria-label`,e.label()),O(),P(e.cells())}}function cj(e,t){e&1&&(z(0,`p`,1),q(1,`No component time in these cycles.`),B())}var lj=24,uj=3,dj=class e{stats=$([]);scope=$(`the recording`);pick=_v();current=D(0);label=Z(()=>`Self time per component in ${this.scope()}, largest first. Pick one to show it in the tree.`);cells=Z(()=>{let e=this.stats().filter(e=>e.ms>0),t=e.slice(0,lj),n=e.slice(lj),r=n.reduce((e,t)=>e+t.ms,0),i=t.map(e=>({stat:e,other:0}));n.length&&i.push({stat:{name:`Other components`,checks:0,ms:r,maxMs:0,cycles:0},other:n.length});let a=e.reduce((e,t)=>e+t.ms,0),o=t[0]?.ms??1,s=Rk(i,e=>e.stat.ms,uj);return s.sort((e,t)=>Number(e.item.other>0)-Number(t.item.other>0)),s.map(e=>{let{stat:t,other:n}=e.item,r=a?Math.round(t.ms/a*100):0;return{stat:t,other:n,x:e.x,y:e.y,w:e.w,h:e.h,tone:n?0:14+Math.round(26*Math.min(t.ms/o,1)),roomy:e.w>=10&&e.h>=22,label:n?`${n} more components, ${Pk(t.ms)}, ${r}% of self time`:`${t.name}, ${Pk(t.ms)} self time, ${r}%, ${t.checks} ${t.checks===1?`check`:`checks`}`}})});tabStop=Z(()=>Math.min(this.current(),Math.max(this.cells().filter(e=>!e.other).length-1,0)));fmt(e){return Pk(e)}onKey(e){let t=this.cells().filter(e=>!e.other).length;if(!t)return;let n=this.tabStop(),r;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=Math.min(n+1,t-1);break;case`ArrowLeft`:case`ArrowUp`:r=Math.max(n-1,0);break;case`Home`:r=0;break;case`End`:r=t-1;break;default:return}e.preventDefault(),this.current.set(r),e.currentTarget.querySelector(`button[data-index="${r}"]`)?.focus()}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-treemap`]],inputs:{stats:[1,`stats`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:2,vars:1,consts:[[1,`map`],[1,`empty`],[1,`map`,3,`keydown`],[3,`left`,`top`,`width`,`height`],[1,`cell`,`other`,3,`--%NS%tone`],[`type`,`button`,1,`cell`,3,`--%NS%tone`],[1,`cell`,`other`],[1,`sr-only`],[`aria-hidden`,`true`,1,`name`],[`type`,`button`,1,`cell`,3,`focus`,`click`],[1,`name`,`mono`],[1,`ms`]],template:function(e,t){e&1&&j(0,sj,3,1,`ul`,0)(1,cj,2,0,`p`,1),e&2&&M(+!t.cells().length)},styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1609,7 +1609,7 @@ button.cell[_ngcontent-%COMP%]:focus-visible { .empty[_ngcontent-%COMP%] { margin: 8px 0; color: var(--%NS%text-2); -}`]})},uj=(e,t)=>t.id;function dj(e,t){if(e&1){let e=V();I(0,`button`,15),H(`click`,function(){return w(e),T(W(2).clear())}),q(1,`Clear`),L()}}function fj(e,t){if(e&1){let e=V();I(0,`button`,12),H(`click`,function(){return w(e),T(W().toggle())}),R(1,`span`,13),q(2),L(),j(3,dj,2,0,`button`,14)}if(e&2){let e=W();K(`on`,e.recording()),F(`disabled`,!e.pageId()),O(2),Y(` `,e.recording()?`Stop recording`:`Record`,` `),O(),M(e.cycles().length?3:-1)}}function pj(e,t){if(e&1){let e=V();I(0,`p`,6)(1,`span`,16),q(2,`Imported recording`),L(),I(3,`span`,17),q(4),L(),I(5,`button`,15),H(`click`,function(){return w(e),T(W().closeImport())}),q(6,`Back to live recording`),L()()}e&2&&(O(4),J(t.fileName))}function mj(e,t){e&1&&q(0,` An app on a device has no DOM, so checks that changed nothing are not counted there. `)}function hj(e,t){e&1&&R(0,`app-angular-unavailable`,8),e&2&&F(`page`,W().angularPage())}function gj(e,t){e&1&&(I(0,`p`,10),q(1,`Angular profiling stays on until the page reloads.`),L())}function _j(e,t){e&1&&R(0,`app-angular-unavailable`,21),e&2&&F(`page`,W(2).angularPage())}function vj(e,t){if(e&1){let e=V();I(0,`div`,18)(1,`span`,19),q(2,`Live views`),L(),I(3,`button`,20),H(`click`,function(){w(e);let t=W();return T(t.setView(`flash`,!t.views().flash))}),R(4,`span`,13),q(5,` Flash checks `),L(),I(6,`button`,20),H(`click`,function(){w(e);let t=W();return T(t.setView(`track`,!t.views().track))}),R(7,`span`,13),q(8,` Performance track `),L(),I(9,`button`,20),H(`click`,function(){return w(e),T(W().setView(`angularProfiling`,!0))}),R(10,`span`,13),q(11,` Angular profiling `),L()(),I(12,`p`,7),q(13,` Flash checks draws a box over each component on the page as Angular checks it, with its name and how often it was checked, fading over a second. Performance track adds a Pangular track to the Chrome Performance panel with every component check, hook and output. Angular profiling turns on Angular's own track there. `),L(),j(14,gj,2,0,`p`,10)(15,_j,1,1,`app-angular-unavailable`,21)}if(e&2){let e=W();O(3),F(`disabled`,!e.canShowViews()),A(`aria-pressed`,e.views().flash),O(3),F(`disabled`,!e.canShowViews()),A(`aria-pressed`,e.views().track),O(3),F(`disabled`,!e.canShowViews()||e.views().angularProfiling||!e.views().angularProfilingAvailable),A(`aria-pressed`,e.views().angularProfiling),O(5),M(e.views().angularProfiling?14:e.views().angularProfilingAvailable?-1:15)}}function yj(e,t){if(e&1&&(I(0,`p`,10),q(1),L()),e&2){let e=t.$implicit;O(),J(e)}}function bj(e,t){if(e&1&&(I(0,`p`,24),q(1),L()),e&2){let e=W(2);O(),Y(` `,e.range()?`The picked cycles have no timed spans, so there is no flame graph for them.`:`This recording has no timed spans, so there is no flame graph. A recording from an older version, or a file saved without spans, has none.`,` `)}}function xj(e,t){e&1&&(I(0,`p`,10),q(1,` For picked cycles, totals come from the 10 slowest components each cycle lists. `),L())}function Sj(e,t){if(e&1){let e=V();I(0,`h3`),q(1,`Cycles`),L(),I(2,`app-cd-cycle-chart`,22),W_(`rangeChange`,function(t){w(e);let n=W();return U_(n.range,t)||(n.range=t),T(t)}),L(),I(3,`app-cd-flame-graph`,23),H(`pick`,function(t){return w(e),T(W().showComponent.emit(t))}),L(),j(4,bj,2,1,`p`,24),I(5,`h3`),q(6,`Self time by component`),L(),j(7,xj,2,0,`p`,10),I(8,`app-cd-treemap`,25),H(`pick`,function(t){return w(e),T(W().showComponent.emit(t))}),L()}if(e&2){let e=W();O(2),F(`cycles`,e.cycles()),H_(`range`,e.range),O(),F(`cycles`,e.picked())(`names`,e.spanNames())(`scope`,e.scope()),O(),M(e.hasSpans()?-1:4),O(3),M(e.range()?7:-1),O(),F(`stats`,e.stats())(`scope`,e.scope())}}function Cj(e,t){if(e&1&&(I(0,`tr`)(1,`td`,17),q(2),L(),I(3,`td`,31),q(4),L(),I(5,`td`,31),q(6),L(),I(7,`td`,31),q(8),L()()),e&2){let e=t.$implicit,n=W(2);O(2),J(e.name),O(2),J(e.checks),O(2),J(n.ms(e.ms)),O(2),J(n.ms(e.maxMs))}}function wj(e,t){e&1&&(I(0,`tr`)(1,`td`,32),q(2,`No component time in the picked cycles.`),L()())}function Tj(e,t){if(e&1&&(I(0,`span`,34),q(1,`from `),I(2,`span`,17),q(3),L()()),e&2){let e=W(3);O(3),J(e.causeText(t))}}function Ej(e,t){if(e&1&&(I(0,`span`,34),q(1,`after `),I(2,`span`,17),q(3),L()()),e&2){let e=W().$implicit;O(3),J(e.trigger)}}function Dj(e,t){if(e&1&&(I(0,`span`,35),q(1),L()),e&2){let e=W().$implicit;O(),Y(``,e.unchanged,` changed nothing`)}}function Oj(e,t){if(e&1&&(I(0,`span`,35),q(1),L()),e&2){let e=W().$implicit,t=W(2);O(),Y(`hooks `,t.ms(e.hookMs))}}function kj(e,t){if(e&1&&(I(0,`span`,35),q(1),L()),e&2){let e=W().$implicit,t=W(2);O(),Y(`afterRender `,t.ms(e.afterRenderMs))}}function Aj(e,t){if(e&1&&(I(0,`span`,36),q(1,` slowest `),I(2,`span`,17),q(3),L(),q(4),L()),e&2){let e=t,n=W(3);O(3),J(e.name),O(),Y(` `,n.ms(e.ms),` `)}}function jj(e,t){if(e&1&&(I(0,`li`)(1,`span`,33),q(2),L(),I(3,`span`,17),q(4),L(),I(5,`span`),q(6),L(),j(7,Tj,4,1,`span`,34)(8,Ej,4,1,`span`,34),j(9,Dj,2,1,`span`,35),j(10,Oj,2,1,`span`,35),j(11,kj,2,1,`span`,35),j(12,Aj,5,2,`span`,36),L()),e&2){let e,n,r=t.$implicit,i=W(2);O(2),J(i.clock(r.at)),O(2),J(i.ms(r.ms)),O(2),B_(` `,r.checks,` `,r.checks===1?`check`:`checks`,`, `,r.passes,` `,r.passes===1?`pass`:`passes`,` `),O(),M((e=r.cause)?7:r.trigger?8:-1,e),O(2),M(r.unchanged?9:-1),O(),M(r.hookMs?10:-1),O(),M(r.afterRenderMs?11:-1),O(),M((n=r.components[0])?12:-1,n)}}function Mj(e,t){if(e&1&&(I(0,`div`,26)(1,`div`)(2,`h3`),q(3),L(),I(4,`table`)(5,`thead`)(6,`tr`)(7,`th`,27),q(8,`Component`),L(),I(9,`th`,28),q(10,`Checks`),L(),I(11,`th`,28),q(12,`Self time`),L(),I(13,`th`,28),q(14,`Slowest`),L()()(),I(15,`tbody`),N(16,Cj,9,4,`tr`,null,dg,!1,wj,3,0,`tr`),L()()(),I(19,`div`)(20,`h3`),q(21,`Latest cycles`),L(),I(22,`ol`,29),N(23,jj,13,11,`li`,null,uj),L()()(),R(25,`app-cd-timing`,30)(26,`app-cd-diagnosis`,30)),e&2){let e=W();O(3),Y(` `,e.range()?`Slowest components in the picked cycles`:`Slowest components`,` `),O(13),P(e.slowest()),O(7),P(e.latest()),O(2),F(`page`,e.page()),O(),F(`page`,e.page())}}function Nj(e,t){e&1&&(I(0,`p`,11),q(1,`Use the app. Cycles show up here as Angular runs change detection.`),L())}var Pj=10,Fj=class e{livePage=$(null,{alias:`page`});pageId=$(null);rpc=$(null);native=$(!1);angularPages=UD(()=>this.rpc());angularPage=Z(()=>WD(this.angularPages(),this.pageId()));showComponent=_v();range=D(null);imported=D(null);page=Z(()=>this.imported()?.page??this.livePage());views=Q(()=>this.livePage()?.options??{flash:!1,track:!1,angularProfiling:!1,angularProfilingAvailable:!0});canShowViews=Z(()=>!!this.pageId()&&this.livePage()?.supported!==!1);message=D(``);announcement=D(``);recording=Z(()=>this.page()?.recording===!0);cycles=Z(()=>this.page()?.cycles??[]);maxCycles=Z(()=>ME(this.rpc()).limits.cdCycles);picked=Z(()=>Nk(this.cycles(),this.range()));hasSpans=Z(()=>this.picked().some(e=>e.spans?.length));spanNames=Z(()=>this.page()?.spanNames??[]);stats=Z(()=>this.range()?Pk(this.picked()):[...this.page()?.components??[]].sort((e,t)=>t.ms-e.ms));scope=Z(()=>{let e=this.range()?this.picked():[];return e.length?e.length===1?`cycle ${e[0].id}`:`cycles ${e[0].id} to ${e.at(-1).id}`:`the recording`});slowest=Z(()=>this.stats().slice(0,Pj));latest=Z(()=>this.cycles().slice(-30).reverse());capNotes=Z(()=>{let e=this.page()?.droppedClasses??0,t=this.page()?.droppedHosts??0,n=[];return e>0&&n.push(`${e} more component ${e===1?`class was`:`classes were`} checked than a recording keeps, so ${e===1?`it is`:`they are`} left out of these totals.`),t>0&&n.push(`${t} component ${t===1?`instance was`:`instances were`} checked past the 2000 a recording counts, so ${t===1?`its tree row shows`:`their tree rows show`} no check count.`),n});status=Z(()=>{if(this.message())return this.message();let e=this.cycles().length;return this.imported()?`${e} ${e===1?`cycle`:`cycles`} imported.`:this.recording()?`Recording. ${e} ${e===1?`cycle`:`cycles`} so far.`:e?`${e} ${e===1?`cycle`:`cycles`} recorded.`:``});ms(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}clock(e){return jO(e)}causeText(e){return mk(e)}async toggle(){this.recording()?await this.send({on:!1},``,()=>{let e=this.cycles().length;return`Recording stopped. ${e} ${e===1?`cycle`:`cycles`} recorded.`}):await this.send({on:!0},`Starting…`,()=>`Recording started.`)}showImport(e){this.message.set(``),this.range.set(null),this.imported.set(e);let t=e.page.cycles.length;this.announce(`Imported ${e.fileName}: ${t} ${t===1?`cycle`:`cycles`}. Showing the imported recording.`)}closeImport(){this.imported.set(null),this.range.set(null),this.announce(`Showing the live recording.`)}async clear(){this.range.set(null),await this.send({clear:!0},``,()=>`Cleared the recorded cycles.`)}async setView(e,t){let n=this.views();this.views.set({...n,[e]:t});let r={flash:t?`Flash checks on.`:`Flash checks off.`,track:t?`Performance track on. Record in the Chrome Performance panel to see it.`:`Performance track off.`,angularProfiling:`Angular profiling on. It stays on until the page reloads.`}[e];await this.send({[e]:t},``,()=>r,`request-change-detection-options`)||this.views.set(n)}async send(e,t,n,r=`request-change-detection-record`){this.message.set(t);try{if(!this.rpc())throw Error(`no client`);return await _E(this.rpc(),r,{pageId:this.pageId(),...e}),this.message.set(``),this.announce(n()),!0}catch{let e=`Could not reach the page.`;return this.message.set(e),this.announce(e),!1}}announce(e){this.announcement.update(t=>t===e?`${e} `:e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-recording`]],inputs:{livePage:[1,`page`,`livePage`],pageId:[1,`pageId`],rpc:[1,`rpc`],native:[1,`native`]},outputs:{showComponent:`showComponent`},decls:22,vars:13,consts:[[`aria-labelledby`,`cd-heading`,1,`cd`],[1,`cd-head`],[`id`,`cd-heading`],[3,`imported`,`page`,`maxCycles`],[1,`status`],[`role`,`status`,1,`sr-only`],[1,`imported`],[1,`hint`],[`capability`,`profiler`,`missing`,``,`compact`,``,3,`page`],[`what`,`cycles`,`limit`,`cdCycles`,3,`dropped`,`max`],[1,`note`],[1,`empty`],[`type`,`button`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`dot`],[`type`,`button`],[`type`,`button`,3,`click`],[1,`badge`],[1,`mono`],[`role`,`group`,`aria-labelledby`,`cd-views-label`,1,`views`],[`id`,`cd-views-label`,1,`views-label`],[`type`,`button`,1,`view`,3,`click`,`disabled`],[`capability`,`angularProfiling`,`missing`,``,`compact`,``,3,`page`],[3,`rangeChange`,`cycles`,`range`],[3,`pick`,`cycles`,`names`,`scope`],[1,`spans-note`],[3,`pick`,`stats`,`scope`],[1,`cd-grid`],[`scope`,`col`],[`scope`,`col`,1,`num`],[`aria-label`,`Latest change detection cycles, newest first`,1,`cycles`],[3,`page`],[1,`num`],[`colspan`,`4`],[1,`when`],[1,`trigger`],[1,`timing`],[1,`top`]],template:function(e,t){if(e&1&&(I(0,`section`,0)(1,`div`,1)(2,`h2`,2),q(3,`Change detection`),L(),j(4,fj,4,5),I(5,`app-cd-transfer`,3),H(`imported`,function(e){return t.showImport(e)}),L(),I(6,`p`,4),q(7),L(),I(8,`p`,5),q(9),L()(),j(10,pj,7,1,`p`,6),I(11,`p`,7),q(12,` Records each change detection cycle with Angular's profiler: how long it took, how many components it checked, what started it and which checks changed nothing. Tree rows show how often each instance was checked. Times come from a development build. While it records, the page also wraps Angular's scheduler, adds a signal write hook and watches DOM updates; all of it stops with the recording. `),j(13,mj,1,0),L(),j(14,hj,1,1,`app-angular-unavailable`,8),j(15,vj,16,7),R(16,`app-limit-note`,9),N(17,yj,2,1,`p`,10,fg),j(19,Sj,9,9),j(20,Mj,27,4)(21,Nj,2,0,`p`,11),L()),e&2){let e;O(4),M(t.imported()?-1:4),O(),F(`page`,t.page())(`maxCycles`,t.maxCycles()),O(2),J(t.status()),O(2),J(t.announcement()),O(),M((e=t.imported())?10:-1,e),O(3),M(t.native()?13:-1),O(),M(t.page()?.supported===!1?14:-1),O(),M(!t.imported()&&!t.native()?15:-1),O(),F(`dropped`,t.page()?.dropped??0)(`max`,t.maxCycles()),O(),P(t.capNotes()),O(2),M(t.cycles().length?19:-1),O(),M(t.page()?.components?.length?20:t.recording()?21:-1)}},dependencies:[JD,IO,YA,sA,QA,CA,RA,lj],styles:[`[_nghost-%COMP%] { +}`]})},fj=(e,t)=>t.id;function pj(e,t){if(e&1){let e=V();I(0,`button`,15),H(`click`,function(){return w(e),T(W(2).clear())}),q(1,`Clear`),L()}}function mj(e,t){if(e&1){let e=V();I(0,`button`,12),H(`click`,function(){return w(e),T(W().toggle())}),R(1,`span`,13),q(2),L(),j(3,pj,2,0,`button`,14)}if(e&2){let e=W();K(`on`,e.recording()),F(`disabled`,!e.pageId()),O(2),Y(` `,e.recording()?`Stop recording`:`Record`,` `),O(),M(e.cycles().length?3:-1)}}function hj(e,t){if(e&1){let e=V();I(0,`p`,6)(1,`span`,16),q(2,`Imported recording`),L(),I(3,`span`,17),q(4),L(),I(5,`button`,15),H(`click`,function(){return w(e),T(W().closeImport())}),q(6,`Back to live recording`),L()()}e&2&&(O(4),J(t.fileName))}function gj(e,t){e&1&&q(0,` An app on a device has no DOM, so checks that changed nothing are not counted there. `)}function _j(e,t){e&1&&R(0,`app-angular-unavailable`,8),e&2&&F(`page`,W().angularPage())}function vj(e,t){e&1&&(I(0,`p`,10),q(1,`Angular profiling stays on until the page reloads.`),L())}function yj(e,t){e&1&&R(0,`app-angular-unavailable`,21),e&2&&F(`page`,W(2).angularPage())}function bj(e,t){if(e&1){let e=V();I(0,`div`,18)(1,`span`,19),q(2,`Live views`),L(),I(3,`button`,20),H(`click`,function(){w(e);let t=W();return T(t.setView(`flash`,!t.views().flash))}),R(4,`span`,13),q(5,` Flash checks `),L(),I(6,`button`,20),H(`click`,function(){w(e);let t=W();return T(t.setView(`track`,!t.views().track))}),R(7,`span`,13),q(8,` Performance track `),L(),I(9,`button`,20),H(`click`,function(){return w(e),T(W().setView(`angularProfiling`,!0))}),R(10,`span`,13),q(11,` Angular profiling `),L()(),I(12,`p`,7),q(13,` Flash checks draws a box over each component on the page as Angular checks it, with its name and how often it was checked, fading over a second. Performance track adds a Pangular track to the Chrome Performance panel with every component check, hook and output. Angular profiling turns on Angular's own track there. `),L(),j(14,vj,2,0,`p`,10)(15,yj,1,1,`app-angular-unavailable`,21)}if(e&2){let e=W();O(3),F(`disabled`,!e.canShowViews()),A(`aria-pressed`,e.views().flash),O(3),F(`disabled`,!e.canShowViews()),A(`aria-pressed`,e.views().track),O(3),F(`disabled`,!e.canShowViews()||e.views().angularProfiling||!e.views().angularProfilingAvailable),A(`aria-pressed`,e.views().angularProfiling),O(5),M(e.views().angularProfiling?14:e.views().angularProfilingAvailable?-1:15)}}function xj(e,t){if(e&1&&(I(0,`p`,10),q(1),L()),e&2){let e=t.$implicit;O(),J(e)}}function Sj(e,t){if(e&1&&(I(0,`p`,24),q(1),L()),e&2){let e=W(2);O(),Y(` `,e.range()?`The picked cycles have no timed spans, so there is no flame graph for them.`:`This recording has no timed spans, so there is no flame graph. A recording from an older version, or a file saved without spans, has none.`,` `)}}function Cj(e,t){e&1&&(I(0,`p`,10),q(1,` For picked cycles, totals come from the 10 slowest components each cycle lists. `),L())}function wj(e,t){if(e&1){let e=V();I(0,`h3`),q(1,`Cycles`),L(),I(2,`app-cd-cycle-chart`,22),W_(`rangeChange`,function(t){w(e);let n=W();return U_(n.range,t)||(n.range=t),T(t)}),L(),I(3,`app-cd-flame-graph`,23),H(`pick`,function(t){return w(e),T(W().showComponent.emit(t))}),L(),j(4,Sj,2,1,`p`,24),I(5,`h3`),q(6,`Self time by component`),L(),j(7,Cj,2,0,`p`,10),I(8,`app-cd-treemap`,25),H(`pick`,function(t){return w(e),T(W().showComponent.emit(t))}),L()}if(e&2){let e=W();O(2),F(`cycles`,e.cycles()),H_(`range`,e.range),O(),F(`cycles`,e.picked())(`names`,e.spanNames())(`scope`,e.scope()),O(),M(e.hasSpans()?-1:4),O(3),M(e.range()?7:-1),O(),F(`stats`,e.stats())(`scope`,e.scope())}}function Tj(e,t){if(e&1&&(I(0,`tr`)(1,`td`,17),q(2),L(),I(3,`td`,31),q(4),L(),I(5,`td`,31),q(6),L(),I(7,`td`,31),q(8),L()()),e&2){let e=t.$implicit,n=W(2);O(2),J(e.name),O(2),J(e.checks),O(2),J(n.ms(e.ms)),O(2),J(n.ms(e.maxMs))}}function Ej(e,t){e&1&&(I(0,`tr`)(1,`td`,32),q(2,`No component time in the picked cycles.`),L()())}function Dj(e,t){if(e&1&&(I(0,`span`,34),q(1,`from `),I(2,`span`,17),q(3),L()()),e&2){let e=W(3);O(3),J(e.causeText(t))}}function Oj(e,t){if(e&1&&(I(0,`span`,34),q(1,`after `),I(2,`span`,17),q(3),L()()),e&2){let e=W().$implicit;O(3),J(e.trigger)}}function kj(e,t){if(e&1&&(I(0,`span`,35),q(1),L()),e&2){let e=W().$implicit;O(),Y(``,e.unchanged,` changed nothing`)}}function Aj(e,t){if(e&1&&(I(0,`span`,35),q(1),L()),e&2){let e=W().$implicit,t=W(2);O(),Y(`hooks `,t.ms(e.hookMs))}}function jj(e,t){if(e&1&&(I(0,`span`,35),q(1),L()),e&2){let e=W().$implicit,t=W(2);O(),Y(`afterRender `,t.ms(e.afterRenderMs))}}function Mj(e,t){if(e&1&&(I(0,`span`,36),q(1,` slowest `),I(2,`span`,17),q(3),L(),q(4),L()),e&2){let e=t,n=W(3);O(3),J(e.name),O(),Y(` `,n.ms(e.ms),` `)}}function Nj(e,t){if(e&1&&(I(0,`li`)(1,`span`,33),q(2),L(),I(3,`span`,17),q(4),L(),I(5,`span`),q(6),L(),j(7,Dj,4,1,`span`,34)(8,Oj,4,1,`span`,34),j(9,kj,2,1,`span`,35),j(10,Aj,2,1,`span`,35),j(11,jj,2,1,`span`,35),j(12,Mj,5,2,`span`,36),L()),e&2){let e,n,r=t.$implicit,i=W(2);O(2),J(i.clock(r.at)),O(2),J(i.ms(r.ms)),O(2),B_(` `,r.checks,` `,r.checks===1?`check`:`checks`,`, `,r.passes,` `,r.passes===1?`pass`:`passes`,` `),O(),M((e=r.cause)?7:r.trigger?8:-1,e),O(2),M(r.unchanged?9:-1),O(),M(r.hookMs?10:-1),O(),M(r.afterRenderMs?11:-1),O(),M((n=r.components[0])?12:-1,n)}}function Pj(e,t){if(e&1&&(I(0,`div`,26)(1,`div`)(2,`h3`),q(3),L(),I(4,`table`)(5,`thead`)(6,`tr`)(7,`th`,27),q(8,`Component`),L(),I(9,`th`,28),q(10,`Checks`),L(),I(11,`th`,28),q(12,`Self time`),L(),I(13,`th`,28),q(14,`Slowest`),L()()(),I(15,`tbody`),N(16,Tj,9,4,`tr`,null,dg,!1,Ej,3,0,`tr`),L()()(),I(19,`div`)(20,`h3`),q(21,`Latest cycles`),L(),I(22,`ol`,29),N(23,Nj,13,11,`li`,null,fj),L()()(),R(25,`app-cd-timing`,30)(26,`app-cd-diagnosis`,30)),e&2){let e=W();O(3),Y(` `,e.range()?`Slowest components in the picked cycles`:`Slowest components`,` `),O(13),P(e.slowest()),O(7),P(e.latest()),O(2),F(`page`,e.page()),O(),F(`page`,e.page())}}function Fj(e,t){e&1&&(I(0,`p`,11),q(1,`Use the app. Cycles show up here as Angular runs change detection.`),L())}var Ij=10,Lj=class e{livePage=$(null,{alias:`page`});pageId=$(null);rpc=$(null);native=$(!1);angularPages=GD(()=>this.rpc());angularPage=Z(()=>KD(this.angularPages(),this.pageId()));showComponent=_v();range=D(null);imported=D(null);page=Z(()=>this.imported()?.page??this.livePage());views=Q(()=>this.livePage()?.options??{flash:!1,track:!1,angularProfiling:!1,angularProfilingAvailable:!0});canShowViews=Z(()=>!!this.pageId()&&this.livePage()?.supported!==!1);message=D(``);announcement=D(``);recording=Z(()=>this.page()?.recording===!0);cycles=Z(()=>this.page()?.cycles??[]);maxCycles=Z(()=>PE(this.rpc()).limits.cdCycles);picked=Z(()=>Fk(this.cycles(),this.range()));hasSpans=Z(()=>this.picked().some(e=>e.spans?.length));spanNames=Z(()=>this.page()?.spanNames??[]);stats=Z(()=>this.range()?Ik(this.picked()):[...this.page()?.components??[]].sort((e,t)=>t.ms-e.ms));scope=Z(()=>{let e=this.range()?this.picked():[];return e.length?e.length===1?`cycle ${e[0].id}`:`cycles ${e[0].id} to ${e.at(-1).id}`:`the recording`});slowest=Z(()=>this.stats().slice(0,Ij));latest=Z(()=>this.cycles().slice(-30).reverse());capNotes=Z(()=>{let e=this.page()?.droppedClasses??0,t=this.page()?.droppedHosts??0,n=[];return e>0&&n.push(`${e} more component ${e===1?`class was`:`classes were`} checked than a recording keeps, so ${e===1?`it is`:`they are`} left out of these totals.`),t>0&&n.push(`${t} component ${t===1?`instance was`:`instances were`} checked past the 2000 a recording counts, so ${t===1?`its tree row shows`:`their tree rows show`} no check count.`),n});status=Z(()=>{if(this.message())return this.message();let e=this.cycles().length;return this.imported()?`${e} ${e===1?`cycle`:`cycles`} imported.`:this.recording()?`Recording. ${e} ${e===1?`cycle`:`cycles`} so far.`:e?`${e} ${e===1?`cycle`:`cycles`} recorded.`:``});ms(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}clock(e){return NO(e)}causeText(e){return gk(e)}async toggle(){this.recording()?await this.send({on:!1},``,()=>{let e=this.cycles().length;return`Recording stopped. ${e} ${e===1?`cycle`:`cycles`} recorded.`}):await this.send({on:!0},`Starting…`,()=>`Recording started.`)}showImport(e){this.message.set(``),this.range.set(null),this.imported.set(e);let t=e.page.cycles.length;this.announce(`Imported ${e.fileName}: ${t} ${t===1?`cycle`:`cycles`}. Showing the imported recording.`)}closeImport(){this.imported.set(null),this.range.set(null),this.announce(`Showing the live recording.`)}async clear(){this.range.set(null),await this.send({clear:!0},``,()=>`Cleared the recorded cycles.`)}async setView(e,t){let n=this.views();this.views.set({...n,[e]:t});let r={flash:t?`Flash checks on.`:`Flash checks off.`,track:t?`Performance track on. Record in the Chrome Performance panel to see it.`:`Performance track off.`,angularProfiling:`Angular profiling on. It stays on until the page reloads.`}[e];await this.send({[e]:t},``,()=>r,`request-change-detection-options`)||this.views.set(n)}async send(e,t,n,r=`request-change-detection-record`){this.message.set(t);try{if(!this.rpc())throw Error(`no client`);return await yE(this.rpc(),r,{pageId:this.pageId(),...e}),this.message.set(``),this.announce(n()),!0}catch{let e=`Could not reach the page.`;return this.message.set(e),this.announce(e),!1}}announce(e){this.announcement.update(t=>t===e?`${e} `:e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-cd-recording`]],inputs:{livePage:[1,`page`,`livePage`],pageId:[1,`pageId`],rpc:[1,`rpc`],native:[1,`native`]},outputs:{showComponent:`showComponent`},decls:22,vars:13,consts:[[`aria-labelledby`,`cd-heading`,1,`cd`],[1,`cd-head`],[`id`,`cd-heading`],[3,`imported`,`page`,`maxCycles`],[1,`status`],[`role`,`status`,1,`sr-only`],[1,`imported`],[1,`hint`],[`capability`,`profiler`,`missing`,``,`compact`,``,3,`page`],[`what`,`cycles`,`limit`,`cdCycles`,3,`dropped`,`max`],[1,`note`],[1,`empty`],[`type`,`button`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`dot`],[`type`,`button`],[`type`,`button`,3,`click`],[1,`badge`],[1,`mono`],[`role`,`group`,`aria-labelledby`,`cd-views-label`,1,`views`],[`id`,`cd-views-label`,1,`views-label`],[`type`,`button`,1,`view`,3,`click`,`disabled`],[`capability`,`angularProfiling`,`missing`,``,`compact`,``,3,`page`],[3,`rangeChange`,`cycles`,`range`],[3,`pick`,`cycles`,`names`,`scope`],[1,`spans-note`],[3,`pick`,`stats`,`scope`],[1,`cd-grid`],[`scope`,`col`],[`scope`,`col`,1,`num`],[`aria-label`,`Latest change detection cycles, newest first`,1,`cycles`],[3,`page`],[1,`num`],[`colspan`,`4`],[1,`when`],[1,`trigger`],[1,`timing`],[1,`top`]],template:function(e,t){if(e&1&&(I(0,`section`,0)(1,`div`,1)(2,`h2`,2),q(3,`Change detection`),L(),j(4,mj,4,5),I(5,`app-cd-transfer`,3),H(`imported`,function(e){return t.showImport(e)}),L(),I(6,`p`,4),q(7),L(),I(8,`p`,5),q(9),L()(),j(10,hj,7,1,`p`,6),I(11,`p`,7),q(12,` Records each change detection cycle with Angular's profiler: how long it took, how many components it checked, what started it and which checks changed nothing. Tree rows show how often each instance was checked. Times come from a development build. While it records, the page also wraps Angular's scheduler, adds a signal write hook and watches DOM updates; all of it stops with the recording. `),j(13,gj,1,0),L(),j(14,_j,1,1,`app-angular-unavailable`,8),j(15,bj,16,7),R(16,`app-limit-note`,9),N(17,xj,2,1,`p`,10,fg),j(19,wj,9,9),j(20,Pj,27,4)(21,Fj,2,0,`p`,11),L()),e&2){let e;O(4),M(t.imported()?-1:4),O(),F(`page`,t.page())(`maxCycles`,t.maxCycles()),O(2),J(t.status()),O(2),J(t.announcement()),O(),M((e=t.imported())?10:-1,e),O(3),M(t.native()?13:-1),O(),M(t.page()?.supported===!1?14:-1),O(),M(!t.imported()&&!t.native()?15:-1),O(),F(`dropped`,t.page()?.dropped??0)(`max`,t.maxCycles()),O(),P(t.capNotes()),O(2),M(t.cycles().length?19:-1),O(),M(t.page()?.components?.length?20:t.recording()?21:-1)}},dependencies:[XD,RO,ZA,lA,ej,TA,BA,dj],styles:[`[_nghost-%COMP%] { display: block; margin-top: 16px; } @@ -1811,7 +1811,7 @@ td.mono[_ngcontent-%COMP%] { .trigger[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%], .top[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%] { overflow-wrap: anywhere; -}`]})},Ij=[`*`];function Lj(e,t){e&1&&q(0),e&2&&J(W(2).label())}function Rj(e,t){e&1&&Ug(0,0,null,Lj,1,1)}function zj(e,t){if(e&1&&(I(0,`span`,4),q(1),L()),e&2){let e=W(2);O(),J(e.message())}}function Bj(e,t){if(e&1){let e=V();I(0,`button`,2),H(`click`,function(){return w(e),T(W().open())}),Dg(1,3),L(),j(2,zj,2,1,`span`,4)}if(e&2){let e=W(),t=qg(1);F(`title`,`Open `+e.label()+` in your editor`),A(`aria-label`,`Open `+e.label()+` in your editor`),O(),F(`ngTemplateOutlet`,t),O(),M(e.message()?2:-1)}}function Vj(e,t){if(e&1&&(I(0,`span`,1),Dg(1,3),L()),e&2){let e=W(),t=qg(1);F(`title`,e.label()),O(),F(`ngTemplateOutlet`,t)}}var Hj=class e{source=D(D(null));client=Z(()=>this.source()());available=Z(()=>{let e=this.client();return!!e&&!yE(e)});use(e){this.source.set(e)}async open(e,t){if(!this.available())return{ok:!1,error:`No server is connected.`};try{let n=await _E(this.client(),`open-in-editor`,{file:e,...t?{line:t}:{}});return n?.ok?{ok:!0}:{ok:!1,error:n?.error??`The server did not open it.`}}catch{return{ok:!1,error:`The server did not open it.`}}}static ɵfac=function(t){return new(t||e)};static ɵprov=Cl({token:e,factory:e.ɵfac})};function Uj(e,t){return t?`${e}:${t}`:e}var Wj=class e{editor=C(Hj);file=$.required();line=$(void 0);label=Z(()=>Uj(this.file(),this.line()));message=D(``);async open(){this.message.set(``);let e=await this.editor.open(this.file(),this.line()??void 0);e.ok||this.message.set(`Not opened: ${e.error}`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-source-link`]],inputs:{file:[1,`file`],line:[1,`line`]},ngContentSelectors:Ij,decls:4,vars:1,consts:[[`text`,``],[1,`source-text`,3,`title`],[`type`,`button`,1,`source-link`,3,`click`,`title`],[3,`ngTemplateOutlet`],[`role`,`alert`,1,`message`]],template:function(e,t){e&1&&(Hg(),Uh(0,Rj,2,0,`ng-template`,null,0,lv),j(2,Bj,3,4)(3,Vj,2,2,`span`,1)),e&2&&(O(2),M(t.editor.available()?2:3))},dependencies:[Iy],styles:[`[_nghost-%COMP%] { +}`]})},Rj=[`*`];function zj(e,t){e&1&&q(0),e&2&&J(W(2).label())}function Bj(e,t){e&1&&Ug(0,0,null,zj,1,1)}function Vj(e,t){if(e&1&&(I(0,`span`,4),q(1),L()),e&2){let e=W(2);O(),J(e.message())}}function Hj(e,t){if(e&1){let e=V();I(0,`button`,2),H(`click`,function(){return w(e),T(W().open())}),Dg(1,3),L(),j(2,Vj,2,1,`span`,4)}if(e&2){let e=W(),t=qg(1);F(`title`,`Open `+e.label()+` in your editor`),A(`aria-label`,`Open `+e.label()+` in your editor`),O(),F(`ngTemplateOutlet`,t),O(),M(e.message()?2:-1)}}function Uj(e,t){if(e&1&&(I(0,`span`,1),Dg(1,3),L()),e&2){let e=W(),t=qg(1);F(`title`,e.label()),O(),F(`ngTemplateOutlet`,t)}}var Wj=class e{source=D(D(null));client=Z(()=>this.source()());available=Z(()=>{let e=this.client();return!!e&&!xE(e)});use(e){this.source.set(e)}async open(e,t){if(!this.available())return{ok:!1,error:`No server is connected.`};try{let n=await yE(this.client(),`open-in-editor`,{file:e,...t?{line:t}:{}});return n?.ok?{ok:!0}:{ok:!1,error:n?.error??`The server did not open it.`}}catch{return{ok:!1,error:`The server did not open it.`}}}static ɵfac=function(t){return new(t||e)};static ɵprov=Cl({token:e,factory:e.ɵfac})};function Gj(e,t){return t?`${e}:${t}`:e}var Kj=class e{editor=C(Wj);file=$.required();line=$(void 0);label=Z(()=>Gj(this.file(),this.line()));message=D(``);async open(){this.message.set(``);let e=await this.editor.open(this.file(),this.line()??void 0);e.ok||this.message.set(`Not opened: ${e.error}`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-source-link`]],inputs:{file:[1,`file`],line:[1,`line`]},ngContentSelectors:Rj,decls:4,vars:1,consts:[[`text`,``],[1,`source-text`,3,`title`],[`type`,`button`,1,`source-link`,3,`click`,`title`],[3,`ngTemplateOutlet`],[`role`,`alert`,1,`message`]],template:function(e,t){e&1&&(Hg(),Uh(0,Bj,2,0,`ng-template`,null,0,lv),j(2,Hj,3,4)(3,Uj,2,2,`span`,1)),e&2&&(O(2),M(t.editor.available()?2:3))},dependencies:[Iy],styles:[`[_nghost-%COMP%] { display: inline; min-width: 0; } @@ -1846,7 +1846,7 @@ td.mono[_ngcontent-%COMP%] { color: var(--%NS%danger-text); font-family: var(--%NS%font-sans); font-size: 0.92em; -}`]})},Gj=[`field`],Kj=[`editButton`],qj=[`valueBox`];function Jj(e,t){if(e&1){let e=V();z(0,`div`,5)(1,`label`,6),q(2),B(),z(3,`input`,7,0),U(`input`,function(t){return w(e),T(W().draft.set(t.target.value))})(`keydown.enter`,function(t){w(e);let n=W();return t.preventDefault(),T(n.apply())})(`keydown.escape`,function(t){w(e);let n=W();return t.preventDefault(),t.stopPropagation(),T(n.cancel())}),B(),z(5,`button`,8),U(`click`,function(){return w(e),T(W().apply())}),q(6,`Apply`),B(),z(7,`button`,9),U(`click`,function(){return w(e),T(W().cancel())}),q(8,`Cancel`),B()(),z(9,`p`,10),q(10),B()}if(e&2){let e=W();O(),kg(`htmlFor`,e.fieldId),O(),Y(`New value of `,e.prop().name,`, as JSON`),O(),kg(`id`,e.fieldId)(`value`,e.draft())(`readOnly`,e.busy()),A(`aria-busy`,e.busy()?`true`:null)(`aria-invalid`,e.error()?`true`:null)(`aria-describedby`,e.hintId+(e.error()?` `+e.errorId:``)),O(2),kg(`disabled`,e.busy()),O(4),kg(`id`,e.hintId),O(),Y(` JSON, such as "text", 42, true or `,e.objectSample,`. Enter applies, Escape cancels. `)}}function Yj(e,t){if(e&1&&(z(0,`pre`,null,1),q(2),iv(3,`json`),B()),e&2){let e=W(2);A(`tabindex`,e.scrollable()?0:null)(`role`,e.scrollable()?`region`:null)(`aria-label`,e.scrollable()?`Value of `+e.prop().name:null),O(2),J(ov(3,4,e.prop().value))}}function Xj(e,t){if(e&1){let e=V();z(0,`button`,14,2),U(`click`,function(){return w(e),T(W(2).start())}),q(2,` Edit `),B()}if(e&2){let e=W(2);kg(`disabled`,e.busy()),A(`aria-label`,`Edit `+e.prop().name)}}function Zj(e,t){if(e&1&&(z(0,`p`,13),q(1),B()),e&2){let e=W(2);O(),J(e.prop().locked)}}function Qj(e,t){if(e&1&&(z(0,`div`,11),j(1,Yj,4,6,`pre`),j(2,Xj,3,2,`button`,12),B(),j(3,Zj,2,1,`p`,13)),e&2){let e=W();O(),M(e.bare()?-1:1),O(),M(e.editable()?2:-1),O(),M(e.writes()&&e.prop().locked?3:-1)}}function $j(e,t){if(e&1&&(z(0,`p`,3),q(1),B()),e&2){let e=W();kg(`id`,e.errorId),O(),J(e.error())}}var eM=0;function tM(e){let t=e.trim();if(!t)return{error:`Type a JSON value, such as "text", 42, true, null or [1, 2].`};try{return{value:JSON.parse(t)}}catch{return{error:`Not valid JSON. Put text in double quotes, such as "Paris".`}}}var nM=class e{prop=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);bare=$(!1);readDraft=$(null);fieldId=`prop-edit-${++eM}`;hintId=`${this.fieldId}-hint`;errorId=`${this.fieldId}-error`;objectSample=`{"a": 1}`;editing=D(!1);draft=D(``);busy=D(!1);error=D(``);done=D(``);editable=Z(()=>this.writes()&&!!this.prop().edit&&!!this.pageId()&&!!this.rpc());field=wv(`field`);editButton=wv(`editButton`);valueBox=wv(`valueBox`);injector=C(hs);scrollable=D(!1);constructor(){Lv(()=>{this.prop();let e=this.valueBox()?.nativeElement;this.scrollable.set(!!e&&e.scrollHeight>e.clientHeight+1)})}async start(){let e=this.prop().value;this.error.set(``),this.done.set(``);let t=this.readDraft();if(t){this.busy.set(!0);let n=await t();if(this.busy.set(!1),n.error!==void 0){this.error.set(n.error);return}e=n.value}this.draft.set(e===void 0?``:JSON.stringify(e)),this.editing.set(!0),wd(()=>{let e=this.field()?.nativeElement;e?.focus(),e?.select()},{injector:this.injector})}cancel(){this.editing()&&(this.editing.set(!1),this.busy.set(!1),this.error.set(``),this.focusEdit())}async apply(){if(this.busy())return;let e=tM(this.draft());if(`error`in e){this.error.set(e.error);return}let t=this.prop(),n=this.rpc(),r=this.pageId();if(!n||!r||!t.edit)return;this.busy.set(!0),this.error.set(``);let i;try{i=await n.scope(`pangular`).rpc.call(`request-component-edit`,{pageId:r,request:{id:this.componentId(),path:t.prop,value:e.value,kind:t.edit}})??{}}catch{i={error:`The devtools server did not answer. Try again.`}}this.busy.set(!1),this.editing()&&(i.ok?(this.editing.set(!1),this.done.set(`Set ${t.name}.`),this.focusEdit()):(this.error.set(i.error??`The page did not write it.`),this.field()?.nativeElement.focus()))}focusEdit(){wd(()=>this.editButton()?.nativeElement.focus(),{injector:this.injector})}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-prop-value`]],viewQuery:function(e,t){e&1&&Gg(t.field,Gj,5)(t.editButton,Kj,5)(t.valueBox,qj,5),e&2&&Kg(3)},inputs:{prop:[1,`prop`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],bare:[1,`bare`],readDraft:[1,`readDraft`]},decls:5,vars:3,consts:[[`field`,``],[`valueBox`,``],[`editButton`,``],[`role`,`alert`,1,`error`,3,`id`],[`role`,`status`,1,`sr-only`],[1,`editor`],[1,`sr-only`,3,`for`],[`type`,`text`,`autocomplete`,`off`,`spellcheck`,`false`,1,`field`,`mono`,3,`input`,`keydown.enter`,`keydown.escape`,`id`,`value`,`readOnly`],[`type`,`button`,1,`primary`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[1,`hint`,3,`id`],[1,`view`],[`type`,`button`,1,`edit`,3,`disabled`],[1,`locked`],[`type`,`button`,1,`edit`,3,`click`,`disabled`]],template:function(e,t){e&1&&(j(0,Jj,11,11)(1,Qj,4,3),j(2,$j,2,2,`p`,3),z(3,`p`,4),q(4),B()),e&2&&(M(+!t.editing()),O(2),M(t.error()?2:-1),O(2),J(t.done()))},dependencies:[Hy],styles:[`[_nghost-%COMP%] { +}`]})},qj=[`field`],Jj=[`editButton`],Yj=[`valueBox`];function Xj(e,t){if(e&1){let e=V();z(0,`div`,5)(1,`label`,6),q(2),B(),z(3,`input`,7,0),U(`input`,function(t){return w(e),T(W().draft.set(t.target.value))})(`keydown.enter`,function(t){w(e);let n=W();return t.preventDefault(),T(n.apply())})(`keydown.escape`,function(t){w(e);let n=W();return t.preventDefault(),t.stopPropagation(),T(n.cancel())}),B(),z(5,`button`,8),U(`click`,function(){return w(e),T(W().apply())}),q(6,`Apply`),B(),z(7,`button`,9),U(`click`,function(){return w(e),T(W().cancel())}),q(8,`Cancel`),B()(),z(9,`p`,10),q(10),B()}if(e&2){let e=W();O(),kg(`htmlFor`,e.fieldId),O(),Y(`New value of `,e.prop().name,`, as JSON`),O(),kg(`id`,e.fieldId)(`value`,e.draft())(`readOnly`,e.busy()),A(`aria-busy`,e.busy()?`true`:null)(`aria-invalid`,e.error()?`true`:null)(`aria-describedby`,e.hintId+(e.error()?` `+e.errorId:``)),O(2),kg(`disabled`,e.busy()),O(4),kg(`id`,e.hintId),O(),Y(` JSON, such as "text", 42, true or `,e.objectSample,`. Enter applies, Escape cancels. `)}}function Zj(e,t){if(e&1&&(z(0,`pre`,null,1),q(2),iv(3,`json`),B()),e&2){let e=W(2);A(`tabindex`,e.scrollable()?0:null)(`role`,e.scrollable()?`region`:null)(`aria-label`,e.scrollable()?`Value of `+e.prop().name:null),O(2),J(ov(3,4,e.prop().value))}}function Qj(e,t){if(e&1){let e=V();z(0,`button`,14,2),U(`click`,function(){return w(e),T(W(2).start())}),q(2,` Edit `),B()}if(e&2){let e=W(2);kg(`disabled`,e.busy()),A(`aria-label`,`Edit `+e.prop().name)}}function $j(e,t){if(e&1&&(z(0,`p`,13),q(1),B()),e&2){let e=W(2);O(),J(e.prop().locked)}}function eM(e,t){if(e&1&&(z(0,`div`,11),j(1,Zj,4,6,`pre`),j(2,Qj,3,2,`button`,12),B(),j(3,$j,2,1,`p`,13)),e&2){let e=W();O(),M(e.bare()?-1:1),O(),M(e.editable()?2:-1),O(),M(e.writes()&&e.prop().locked?3:-1)}}function tM(e,t){if(e&1&&(z(0,`p`,3),q(1),B()),e&2){let e=W();kg(`id`,e.errorId),O(),J(e.error())}}var nM=0;function rM(e){let t=e.trim();if(!t)return{error:`Type a JSON value, such as "text", 42, true, null or [1, 2].`};try{return{value:JSON.parse(t)}}catch{return{error:`Not valid JSON. Put text in double quotes, such as "Paris".`}}}var iM=class e{prop=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);bare=$(!1);readDraft=$(null);fieldId=`prop-edit-${++nM}`;hintId=`${this.fieldId}-hint`;errorId=`${this.fieldId}-error`;objectSample=`{"a": 1}`;editing=D(!1);draft=D(``);busy=D(!1);error=D(``);done=D(``);editable=Z(()=>this.writes()&&!!this.prop().edit&&!!this.pageId()&&!!this.rpc());field=wv(`field`);editButton=wv(`editButton`);valueBox=wv(`valueBox`);injector=C(hs);scrollable=D(!1);constructor(){Lv(()=>{this.prop();let e=this.valueBox()?.nativeElement;this.scrollable.set(!!e&&e.scrollHeight>e.clientHeight+1)})}async start(){let e=this.prop().value;this.error.set(``),this.done.set(``);let t=this.readDraft();if(t){this.busy.set(!0);let n=await t();if(this.busy.set(!1),n.error!==void 0){this.error.set(n.error);return}e=n.value}this.draft.set(e===void 0?``:JSON.stringify(e)),this.editing.set(!0),wd(()=>{let e=this.field()?.nativeElement;e?.focus(),e?.select()},{injector:this.injector})}cancel(){this.editing()&&(this.editing.set(!1),this.busy.set(!1),this.error.set(``),this.focusEdit())}async apply(){if(this.busy())return;let e=rM(this.draft());if(`error`in e){this.error.set(e.error);return}let t=this.prop(),n=this.rpc(),r=this.pageId();if(!n||!r||!t.edit)return;this.busy.set(!0),this.error.set(``);let i;try{i=await n.scope(`pangular`).rpc.call(`request-component-edit`,{pageId:r,request:{id:this.componentId(),path:t.prop,value:e.value,kind:t.edit}})??{}}catch{i={error:`The devtools server did not answer. Try again.`}}this.busy.set(!1),this.editing()&&(i.ok?(this.editing.set(!1),this.done.set(`Set ${t.name}.`),this.focusEdit()):(this.error.set(i.error??`The page did not write it.`),this.field()?.nativeElement.focus()))}focusEdit(){wd(()=>this.editButton()?.nativeElement.focus(),{injector:this.injector})}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-prop-value`]],viewQuery:function(e,t){e&1&&Gg(t.field,qj,5)(t.editButton,Jj,5)(t.valueBox,Yj,5),e&2&&Kg(3)},inputs:{prop:[1,`prop`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],bare:[1,`bare`],readDraft:[1,`readDraft`]},decls:5,vars:3,consts:[[`field`,``],[`valueBox`,``],[`editButton`,``],[`role`,`alert`,1,`error`,3,`id`],[`role`,`status`,1,`sr-only`],[1,`editor`],[1,`sr-only`,3,`for`],[`type`,`text`,`autocomplete`,`off`,`spellcheck`,`false`,1,`field`,`mono`,3,`input`,`keydown.enter`,`keydown.escape`,`id`,`value`,`readOnly`],[`type`,`button`,1,`primary`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[1,`hint`,3,`id`],[1,`view`],[`type`,`button`,1,`edit`,3,`disabled`],[1,`locked`],[`type`,`button`,1,`edit`,3,`click`,`disabled`]],template:function(e,t){e&1&&(j(0,Xj,11,11)(1,eM,4,3),j(2,tM,2,2,`p`,3),z(3,`p`,4),q(4),B()),e&2&&(M(+!t.editing()),O(2),M(t.error()?2:-1),O(2),J(t.done()))},dependencies:[Hy],styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1969,7 +1969,7 @@ button.edit[_ngcontent-%COMP%] { .error[_ngcontent-%COMP%] { color: var(--%NS%danger-text); -}`]})},rM=1e3,iM={depth:5,limit:100},aM=`[redacted]`;function oM(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function sM(e){return oM(e)&&typeof e.$more==`number`&&Object.keys(e).length===1}function cM(e){return oM(e)&&typeof e.$collapsed==`string`&&typeof e.size==`number`&&Object.keys(e).length===2}function lM(e){return e===`Array`?`array`:e===`Map`?`map`:e===`Set`?`set`:`object`}function uM(e){return e.$type===`Map`&&Array.isArray(e.entries)}function dM(e){return e.$type===`Set`&&Array.isArray(e.values)}function fM(e){return Object.keys(e).filter(e=>e!==`$type`&&e!==`$more`)}function pM(e){if(!e||typeof e!=`object`)return null;if(cM(e))return e.size<=0?null:{kind:lM(e.$collapsed),type:e.$collapsed,size:e.size,collapsed:!0};if(sM(e))return null;if(Array.isArray(e)){let t=e.at(-1),n=sM(t)?t.$more:0,r=e.length-+!!n+n;return r?{kind:`array`,type:`Array`,size:r,collapsed:!1}:null}let t=e;if(uM(t)||dM(t)){let e=typeof t.size==`number`?t.size:0,n=uM(t)?`map`:`set`;return e?{kind:n,type:n===`map`?`Map`:`Set`,size:e,collapsed:!1}:null}let n=typeof t.$more==`number`?t.$more:0,r=fM(t).length+n,i=typeof t.$type==`string`?t.$type:`Object`;return r?{kind:`object`,type:i,size:r,collapsed:!1}:null}function mM(e){if(typeof e==`string`)return JSON.stringify(e);let t=pM(e);if(t)return _M(t);try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function hM(e){let t=pM(e);if(!t||t.collapsed)return{children:[],more:0};if(Array.isArray(e)){let n=(sM(e.at(-1))?e.slice(0,-1):e).map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:n,more:t.size-n.length}}let n=e;if(t.kind===`map`){let e=n.entries.map((e,t)=>{let[n,r]=Array.isArray(e)?e:[void 0,e];return{key:String(t),label:mM(n),value:r}});return{children:e,more:Math.max(0,t.size-e.length)}}if(t.kind===`set`){let e=n.values.map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:e,more:Math.max(0,t.size-e.length)}}return{children:fM(n).map(e=>({key:e,label:e,value:n[e]})),more:typeof n.$more==`number`?n.$more:0}}function gM(e,t,n){return`${e} ${e===1?t:n}`}function _M(e){let t={array:gM(e.size,`item`,`items`),object:gM(e.size,`key`,`keys`),map:gM(e.size,`entry`,`entries`),set:gM(e.size,`value`,`values`)}[e.kind];return`${e.type} (${t})`}function vM(e,t){return JSON.stringify(t===void 0?e:[t,...e])}function yM(e,t){return e.map((e,n)=>n===0?e:(t?t[n-1]!==`object`:/^\d+$/.test(e))?`[${e}]`:`.${e}`).join(``)}function bM(e){return e.every(e=>e&&e===e.trim()&&!/[.[\]]/.test(e))?e.join(`.`):null}var xM=/^\[(Getter|Unreadable|Circular|Truncated|Function\b.*|Promise)\]$/;function SM(e){return e===null||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e!==aM&&!xM.test(e)&&!e.endsWith(`…`)}function CM(e,t){return!e||t.kind===`map`||t.kind===`set`||e===`signal`&&t.kind===`object`&&t.type!==`Object`?null:e}function wM(e,t,n,r,i=500){let a=[],o=r.trim().toLowerCase();if(!o)return a;let s=new Set,c=(e,t)=>{let r=vM(e);if(!(s.has(r)||a.length>=i)){s.add(r);for(let r of hM(t).children){let t=[...e,r.key];if(r.label.toLowerCase().includes(o)&&a.push(t),!pM(r.value))continue;let i=n(t)??(pM(r.value)?.collapsed?void 0:r.value);i!==void 0&&c(t,i)}}};return c(e,n(e)??t),a}var TM=(e,t)=>t.id;function EM(e,t){if(e&1){let e=V();I(0,`button`,2),H(`click`,function(){w(e);let t=W().$implicit;return T(W(3).toggle(t))}),E(),I(1,`svg`,3),R(2,`path`,4),L(),ss(),I(3,`span`,14),q(4),L(),I(5,`span`,5),q(6),L()()}if(e&2){let e=W().$implicit;A(`aria-expanded`,e.open)(`aria-label`,e.label+`: `+e.text),O(4),Y(``,e.label,`:`),O(2),J(e.text)}}function DM(e,t){if(e&1&&R(0,`app-prop-value`,15),e&2){let e=W(5);F(`prop`,t)(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}function OM(e,t){if(e&1&&(I(0,`span`,16),q(1),L()),e&2){let e=W(2).$implicit;O(),J(e.text)}}function kM(e,t){if(e&1&&(I(0,`span`,14),q(1),L(),j(2,DM,1,5,`app-prop-value`,15)(3,OM,2,1,`span`,16)),e&2){let e,t=W().$implicit;O(),Y(``,t.label,`:`),O(),M((e=t.edit)?2:3,e)}}function AM(e,t){if(e&1){let e=V();I(0,`button`,17),H(`click`,function(){w(e);let t=W().$implicit;return T(W(3).more(t))}),q(1),I(2,`span`,18),q(3),L()()}if(e&2){let e=W().$implicit,t=W(3);O(),Y(` Show `,t.step(e),` more `),O(2),Y(`(`,e.more,` not listed)`)}}function jM(e,t){e&1&&(I(0,`span`,12),q(1,`Reading from the page…`),L())}function MM(e,t){if(e&1&&(I(0,`span`,13),q(1),L()),e&2){let e=W().$implicit;O(),J(e.text)}}function NM(e,t){if(e&1&&(I(0,`li`,9),j(1,EM,7,4,`button`,10)(2,kM,4,2)(3,AM,4,2,`button`,11)(4,jM,2,0,`span`,12)(5,MM,2,1,`span`,13),L()),e&2){let e,n=t.$implicit;G(`padding-left`,n.depth*14,`px`),O(),M((e=n.kind)===`node`?1:e===`leaf`?2:e===`more`?3:e===`loading`?4:e===`error`?5:-1)}}function PM(e,t){if(e&1&&(I(0,`ul`,7),N(1,NM,6,3,`li`,8,TM),L()),e&2){let e=W(2);F(`id`,e.listId),A(`aria-label`,e.prop().name+` entries`),O(),P(e.rows())}}function FM(e,t){if(e&1){let e=V();I(0,`div`,1)(1,`button`,2),H(`click`,function(){return w(e),T(W().toggleRoot())}),E(),I(2,`svg`,3),R(3,`path`,4),L(),ss(),I(4,`span`,5),q(5),L()(),R(6,`app-prop-value`,6),L(),j(7,PM,3,2,`ul`,7)}if(e&2){let e=t,n=W();O(),A(`aria-expanded`,n.rootOpen())(`aria-controls`,n.rootOpen()?n.listId:null)(`aria-label`,n.prop().name+`: `+n.summaryOf(e)),O(4),J(n.summaryOf(e)),O(),F(`bare`,!0)(`prop`,n.prop())(`componentId`,n.componentId())(`pageId`,n.pageId())(`rpc`,n.rpc())(`writes`,n.writes())(`readDraft`,n.readWhole),O(),M(n.rootOpen()?7:-1)}}function IM(e,t){if(e&1&&R(0,`app-prop-value`,0),e&2){let e=W();F(`prop`,e.prop())(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}var LM=0;function RM(e){if(e===void 0)return`undefined`;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function zM(e){if(Array.isArray(e))return e.every(zM);if(e&&typeof e==`object`){let t=e;return![`$collapsed`,`$more`,`$type`].some(e=>Object.hasOwn(t,e))&&Object.values(t).every(zM)}return SM(e)}var BM=class e{prop=$.required();store=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);directive=$(void 0);query=$(``);listId=`value-tree-${++LM}`;host=C(El);pendingMore=null;constructor(){Lv(()=>{let e=this.rows(),t=this.pendingMore;if(!t)return;let n=e.findIndex(e=>(e.kind===`leaf`||e.kind===`node`)&&!t.has(e.id));if(n<0)return;this.pendingMore=null;let r=document.activeElement;r&&r!==document.body&&r.isConnected||this.focusNear(n)})}rootPath=Z(()=>[this.prop().prop]);rootValue=Z(()=>this.store().level(this.rootPath(),this.directive())??this.prop().value);root=Z(()=>pM(this.rootValue()));needle=Z(()=>this.query().trim().toLowerCase());matches=Z(()=>{let e=this.needle(),t=this.prop();if(!e||[t.name,t.prop].some(t=>t.toLowerCase().includes(e)))return null;let n=this.store(),r=this.directive();return wM(this.rootPath(),this.rootValue(),e=>n.level(e,r),e)});rootOpen=Z(()=>!!this.matches()?.length||this.store().isOpen(this.rootPath(),this.directive()));rows=Z(()=>{let e=this.root();if(!e)return[];let t=this.store(),n=this.directive(),r=this.matches(),i=new Set,a=new Set;for(let e of r??[]){a.add(vM(e));for(let t=2;t<=e.length;t++)i.add(vM(e.slice(0,t)))}let o=this.prop(),s=this.writes()&&n===void 0,c=[],l=(e,o,d,f,p,m)=>{let{children:h,more:g}=hM(e);for(let e of h){let h=[...o,e.key],g=vM(h);if(r&&!m&&!i.has(g))continue;let _=pM(e.value),ee=vM(h,n);if(!_){let t=p&&SM(e.value)?bM(h):null;c.push({id:ee,kind:`leaf`,depth:f,path:h,label:e.label,text:RM(e.value),edit:s&&t&&p?{name:yM(h,[...d]),prop:t,value:e.value,edit:p}:void 0});continue}let te=!!r&&!m&&i.has(g)&&!a.has(g)||t.isOpen(h,n);if(c.push({id:ee,kind:`node`,depth:f,path:h,label:e.label,text:_M(_),container:_,open:te}),!te)continue;let ne=t.level(h,n)??(_.collapsed?void 0:e.value),re=[...d,_.kind];ne===void 0?t.errors().has(ee)?c.push({...u(h,f+1,`error`),text:t.errors().get(ee)}):c.push(u(h,f+1,`loading`)):l(ne,h,re,f+1,CM(p,_),m||a.has(g))}g>0&&(!r||m)&&c.push({...u(o,f,`more`),more:g,listed:h.length})},u=(e,t,r)=>({id:`${vM(e,n)}:${r}`,kind:r,depth:t,path:e,label:``,text:``});return l(this.rootValue(),this.rootPath(),[e.kind],0,s?CM(o.editInside??null,e):null,!r),c});readWhole=async()=>{let e=await this.store().read(this.rootPath(),iM.depth,iM.limit);return e.ok?zM(e.value)?{value:e.value}:{error:`Too large to edit as a whole. Open it to edit the values inside.`}:{error:e.error??`The page did not read it.`}};summaryOf(e){return _M(e)}toggleRoot(){this.pendingMore=null,this.store().toggle(this.rootPath(),this.directive(),!1)}toggle(e){this.pendingMore=null,this.store().toggle(e.path,this.directive(),!!e.container?.collapsed)}more(e){this.pendingMore=new Set(this.rows().map(e=>e.id)),this.store().more(e.path,this.directive(),e.listed??0)}focusNear(e){let t=this.host.nativeElement,n=Array.from(t.querySelectorAll(`#${this.listId} > li`)),r=e=>e?.querySelector(`button:not([disabled]), input, textarea, [tabindex="0"]`);(n.slice(e).map(r).find(Boolean)??n.slice(0,e).reverse().map(r).find(Boolean)??t.querySelector(`.root > .toggle`))?.focus()}step(e){return Math.min(100,e.more??0)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-value-tree`]],inputs:{prop:[1,`prop`],store:[1,`store`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],directive:[1,`directive`],query:[1,`query`]},decls:2,vars:1,consts:[[3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`root`],[`type`,`button`,1,`toggle`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m9 6 6 6-6 6`],[1,`summary`,`mono`],[1,`whole`,3,`bare`,`prop`,`componentId`,`pageId`,`rpc`,`writes`,`readDraft`],[1,`entries`,3,`id`],[1,`entry`,3,`padding-left`],[1,`entry`],[`type`,`button`,1,`toggle`],[`type`,`button`,1,`more`],[`role`,`status`,1,`muted`],[`role`,`alert`,1,`error`],[1,`key`,`mono`],[1,`leaf-edit`,3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`leaf`,`mono`],[`type`,`button`,1,`more`,3,`click`],[1,`muted`]],template:function(e,t){if(e&1&&j(0,FM,8,12)(1,IM,1,5,`app-prop-value`,0),e&2){let e;M((e=t.root())?0:1,e)}},dependencies:[nM],styles:[`[_nghost-%COMP%] { +}`]})},aM=1e3,oM={depth:5,limit:100},sM=`[redacted]`;function cM(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function lM(e){return cM(e)&&typeof e.$more==`number`&&Object.keys(e).length===1}function uM(e){return cM(e)&&typeof e.$collapsed==`string`&&typeof e.size==`number`&&Object.keys(e).length===2}function dM(e){return e===`Array`?`array`:e===`Map`?`map`:e===`Set`?`set`:`object`}function fM(e){return e.$type===`Map`&&Array.isArray(e.entries)}function pM(e){return e.$type===`Set`&&Array.isArray(e.values)}function mM(e){return Object.keys(e).filter(e=>e!==`$type`&&e!==`$more`)}function hM(e){if(!e||typeof e!=`object`)return null;if(uM(e))return e.size<=0?null:{kind:dM(e.$collapsed),type:e.$collapsed,size:e.size,collapsed:!0};if(lM(e))return null;if(Array.isArray(e)){let t=e.at(-1),n=lM(t)?t.$more:0,r=e.length-+!!n+n;return r?{kind:`array`,type:`Array`,size:r,collapsed:!1}:null}let t=e;if(fM(t)||pM(t)){let e=typeof t.size==`number`?t.size:0,n=fM(t)?`map`:`set`;return e?{kind:n,type:n===`map`?`Map`:`Set`,size:e,collapsed:!1}:null}let n=typeof t.$more==`number`?t.$more:0,r=mM(t).length+n,i=typeof t.$type==`string`?t.$type:`Object`;return r?{kind:`object`,type:i,size:r,collapsed:!1}:null}function gM(e){if(typeof e==`string`)return JSON.stringify(e);let t=hM(e);if(t)return yM(t);try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function _M(e){let t=hM(e);if(!t||t.collapsed)return{children:[],more:0};if(Array.isArray(e)){let n=(lM(e.at(-1))?e.slice(0,-1):e).map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:n,more:t.size-n.length}}let n=e;if(t.kind===`map`){let e=n.entries.map((e,t)=>{let[n,r]=Array.isArray(e)?e:[void 0,e];return{key:String(t),label:gM(n),value:r}});return{children:e,more:Math.max(0,t.size-e.length)}}if(t.kind===`set`){let e=n.values.map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:e,more:Math.max(0,t.size-e.length)}}return{children:mM(n).map(e=>({key:e,label:e,value:n[e]})),more:typeof n.$more==`number`?n.$more:0}}function vM(e,t,n){return`${e} ${e===1?t:n}`}function yM(e){let t={array:vM(e.size,`item`,`items`),object:vM(e.size,`key`,`keys`),map:vM(e.size,`entry`,`entries`),set:vM(e.size,`value`,`values`)}[e.kind];return`${e.type} (${t})`}function bM(e,t){return JSON.stringify(t===void 0?e:[t,...e])}function xM(e,t){return e.map((e,n)=>n===0?e:(t?t[n-1]!==`object`:/^\d+$/.test(e))?`[${e}]`:`.${e}`).join(``)}function SM(e){return e.every(e=>e&&e===e.trim()&&!/[.[\]]/.test(e))?e.join(`.`):null}var CM=/^\[(Getter|Unreadable|Circular|Truncated|Function\b.*|Promise)\]$/;function wM(e){return e===null||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e!==sM&&!CM.test(e)&&!e.endsWith(`…`)}function TM(e,t){return!e||t.kind===`map`||t.kind===`set`||e===`signal`&&t.kind===`object`&&t.type!==`Object`?null:e}function EM(e,t,n,r,i=500){let a=[],o=r.trim().toLowerCase();if(!o)return a;let s=new Set,c=(e,t)=>{let r=bM(e);if(!(s.has(r)||a.length>=i)){s.add(r);for(let r of _M(t).children){let t=[...e,r.key];if(r.label.toLowerCase().includes(o)&&a.push(t),!hM(r.value))continue;let i=n(t)??(hM(r.value)?.collapsed?void 0:r.value);i!==void 0&&c(t,i)}}};return c(e,n(e)??t),a}var DM=(e,t)=>t.id;function OM(e,t){if(e&1){let e=V();I(0,`button`,2),H(`click`,function(){w(e);let t=W().$implicit;return T(W(3).toggle(t))}),E(),I(1,`svg`,3),R(2,`path`,4),L(),ss(),I(3,`span`,14),q(4),L(),I(5,`span`,5),q(6),L()()}if(e&2){let e=W().$implicit;A(`aria-expanded`,e.open)(`aria-label`,e.label+`: `+e.text),O(4),Y(``,e.label,`:`),O(2),J(e.text)}}function kM(e,t){if(e&1&&R(0,`app-prop-value`,15),e&2){let e=W(5);F(`prop`,t)(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}function AM(e,t){if(e&1&&(I(0,`span`,16),q(1),L()),e&2){let e=W(2).$implicit;O(),J(e.text)}}function jM(e,t){if(e&1&&(I(0,`span`,14),q(1),L(),j(2,kM,1,5,`app-prop-value`,15)(3,AM,2,1,`span`,16)),e&2){let e,t=W().$implicit;O(),Y(``,t.label,`:`),O(),M((e=t.edit)?2:3,e)}}function MM(e,t){if(e&1){let e=V();I(0,`button`,17),H(`click`,function(){w(e);let t=W().$implicit;return T(W(3).more(t))}),q(1),I(2,`span`,18),q(3),L()()}if(e&2){let e=W().$implicit,t=W(3);O(),Y(` Show `,t.step(e),` more `),O(2),Y(`(`,e.more,` not listed)`)}}function NM(e,t){e&1&&(I(0,`span`,12),q(1,`Reading from the page…`),L())}function PM(e,t){if(e&1&&(I(0,`span`,13),q(1),L()),e&2){let e=W().$implicit;O(),J(e.text)}}function FM(e,t){if(e&1&&(I(0,`li`,9),j(1,OM,7,4,`button`,10)(2,jM,4,2)(3,MM,4,2,`button`,11)(4,NM,2,0,`span`,12)(5,PM,2,1,`span`,13),L()),e&2){let e,n=t.$implicit;G(`padding-left`,n.depth*14,`px`),O(),M((e=n.kind)===`node`?1:e===`leaf`?2:e===`more`?3:e===`loading`?4:e===`error`?5:-1)}}function IM(e,t){if(e&1&&(I(0,`ul`,7),N(1,FM,6,3,`li`,8,DM),L()),e&2){let e=W(2);F(`id`,e.listId),A(`aria-label`,e.prop().name+` entries`),O(),P(e.rows())}}function LM(e,t){if(e&1){let e=V();I(0,`div`,1)(1,`button`,2),H(`click`,function(){return w(e),T(W().toggleRoot())}),E(),I(2,`svg`,3),R(3,`path`,4),L(),ss(),I(4,`span`,5),q(5),L()(),R(6,`app-prop-value`,6),L(),j(7,IM,3,2,`ul`,7)}if(e&2){let e=t,n=W();O(),A(`aria-expanded`,n.rootOpen())(`aria-controls`,n.rootOpen()?n.listId:null)(`aria-label`,n.prop().name+`: `+n.summaryOf(e)),O(4),J(n.summaryOf(e)),O(),F(`bare`,!0)(`prop`,n.prop())(`componentId`,n.componentId())(`pageId`,n.pageId())(`rpc`,n.rpc())(`writes`,n.writes())(`readDraft`,n.readWhole),O(),M(n.rootOpen()?7:-1)}}function RM(e,t){if(e&1&&R(0,`app-prop-value`,0),e&2){let e=W();F(`prop`,e.prop())(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}var zM=0;function BM(e){if(e===void 0)return`undefined`;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function VM(e){if(Array.isArray(e))return e.every(VM);if(e&&typeof e==`object`){let t=e;return![`$collapsed`,`$more`,`$type`].some(e=>Object.hasOwn(t,e))&&Object.values(t).every(VM)}return wM(e)}var HM=class e{prop=$.required();store=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);directive=$(void 0);query=$(``);listId=`value-tree-${++zM}`;host=C(El);pendingMore=null;constructor(){Lv(()=>{let e=this.rows(),t=this.pendingMore;if(!t)return;let n=e.findIndex(e=>(e.kind===`leaf`||e.kind===`node`)&&!t.has(e.id));if(n<0)return;this.pendingMore=null;let r=document.activeElement;r&&r!==document.body&&r.isConnected||this.focusNear(n)})}rootPath=Z(()=>[this.prop().prop]);rootValue=Z(()=>this.store().level(this.rootPath(),this.directive())??this.prop().value);root=Z(()=>hM(this.rootValue()));needle=Z(()=>this.query().trim().toLowerCase());matches=Z(()=>{let e=this.needle(),t=this.prop();if(!e||[t.name,t.prop].some(t=>t.toLowerCase().includes(e)))return null;let n=this.store(),r=this.directive();return EM(this.rootPath(),this.rootValue(),e=>n.level(e,r),e)});rootOpen=Z(()=>!!this.matches()?.length||this.store().isOpen(this.rootPath(),this.directive()));rows=Z(()=>{let e=this.root();if(!e)return[];let t=this.store(),n=this.directive(),r=this.matches(),i=new Set,a=new Set;for(let e of r??[]){a.add(bM(e));for(let t=2;t<=e.length;t++)i.add(bM(e.slice(0,t)))}let o=this.prop(),s=this.writes()&&n===void 0,c=[],l=(e,o,d,f,p,m)=>{let{children:h,more:g}=_M(e);for(let e of h){let h=[...o,e.key],g=bM(h);if(r&&!m&&!i.has(g))continue;let _=hM(e.value),ee=bM(h,n);if(!_){let t=p&&wM(e.value)?SM(h):null;c.push({id:ee,kind:`leaf`,depth:f,path:h,label:e.label,text:BM(e.value),edit:s&&t&&p?{name:xM(h,[...d]),prop:t,value:e.value,edit:p}:void 0});continue}let te=!!r&&!m&&i.has(g)&&!a.has(g)||t.isOpen(h,n);if(c.push({id:ee,kind:`node`,depth:f,path:h,label:e.label,text:yM(_),container:_,open:te}),!te)continue;let ne=t.level(h,n)??(_.collapsed?void 0:e.value),re=[...d,_.kind];ne===void 0?t.errors().has(ee)?c.push({...u(h,f+1,`error`),text:t.errors().get(ee)}):c.push(u(h,f+1,`loading`)):l(ne,h,re,f+1,TM(p,_),m||a.has(g))}g>0&&(!r||m)&&c.push({...u(o,f,`more`),more:g,listed:h.length})},u=(e,t,r)=>({id:`${bM(e,n)}:${r}`,kind:r,depth:t,path:e,label:``,text:``});return l(this.rootValue(),this.rootPath(),[e.kind],0,s?TM(o.editInside??null,e):null,!r),c});readWhole=async()=>{let e=await this.store().read(this.rootPath(),oM.depth,oM.limit);return e.ok?VM(e.value)?{value:e.value}:{error:`Too large to edit as a whole. Open it to edit the values inside.`}:{error:e.error??`The page did not read it.`}};summaryOf(e){return yM(e)}toggleRoot(){this.pendingMore=null,this.store().toggle(this.rootPath(),this.directive(),!1)}toggle(e){this.pendingMore=null,this.store().toggle(e.path,this.directive(),!!e.container?.collapsed)}more(e){this.pendingMore=new Set(this.rows().map(e=>e.id)),this.store().more(e.path,this.directive(),e.listed??0)}focusNear(e){let t=this.host.nativeElement,n=Array.from(t.querySelectorAll(`#${this.listId} > li`)),r=e=>e?.querySelector(`button:not([disabled]), input, textarea, [tabindex="0"]`);(n.slice(e).map(r).find(Boolean)??n.slice(0,e).reverse().map(r).find(Boolean)??t.querySelector(`.root > .toggle`))?.focus()}step(e){return Math.min(100,e.more??0)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-value-tree`]],inputs:{prop:[1,`prop`],store:[1,`store`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],directive:[1,`directive`],query:[1,`query`]},decls:2,vars:1,consts:[[3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`root`],[`type`,`button`,1,`toggle`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m9 6 6 6-6 6`],[1,`summary`,`mono`],[1,`whole`,3,`bare`,`prop`,`componentId`,`pageId`,`rpc`,`writes`,`readDraft`],[1,`entries`,3,`id`],[1,`entry`,3,`padding-left`],[1,`entry`],[`type`,`button`,1,`toggle`],[`type`,`button`,1,`more`],[`role`,`status`,1,`muted`],[`role`,`alert`,1,`error`],[1,`key`,`mono`],[1,`leaf-edit`,3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`leaf`,`mono`],[`type`,`button`,1,`more`,3,`click`],[1,`muted`]],template:function(e,t){if(e&1&&j(0,LM,8,12)(1,RM,1,5,`app-prop-value`,0),e&2){let e;M((e=t.root())?0:1,e)}},dependencies:[iM],styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -2091,7 +2091,7 @@ button.edit[_ngcontent-%COMP%] { .more[_ngcontent-%COMP%] { transition: none; } -}`]})};function VM(e,t){return e.length>t.length&&e.startsWith(`${t.slice(0,-1)},`)}var HM=class{sender;target={rpc:null,pageId:null,componentId:null};fetched=D(new Map);pushed=D({});open=D(new Set);loading=D(new Set);errors=D(new Map);limits=new Map;generation=0;constructor(e){this.sender=e}follow(e,t){let n=e.componentId===this.target.componentId&&e.pageId===this.target.pageId;this.target=e,n||(this.generation++,this.fetched.set(new Map),this.open.set(new Set),this.loading.set(new Set),this.errors.set(new Map),this.limits.clear()),this.pushed.set(t??{})}level(e,t){let n=vM(e,t),r=this.pushed();return Object.hasOwn(r,n)?r[n]:this.fetched().get(n)}isOpen(e,t){return this.open().has(vM(e,t))}toggle(e,t,n){let r=vM(e,t),i=new Set(this.open());if(i.has(r)){for(let e of i)(e===r||VM(e,r))&&i.delete(e);this.open.set(i),this.send({path:e,directive:t,forget:!0});return}i.add(r),this.open.set(i),n&&this.load(e,t,this.limits.get(r)??30)}more(e,t,n){let r=vM(e,t),i=Math.min(rM,Math.max(n,this.limits.get(r)??0)+100);this.limits.set(r,i),this.load(e,t,i)}async read(e,t,n){return this.send({path:e,depth:t,limit:n})}async load(e,t,n){let r=vM(e,t),i=this.generation;this.loading.update(e=>new Set(e).add(r));let a=await this.send({path:e,directive:t,limit:n,watch:!0});i===this.generation&&(this.loading.update(e=>{let t=new Set(e);return t.delete(r),t}),this.errors.update(e=>{let t=new Map(e);return a.ok?t.delete(r):t.set(r,a.error??`The page did not read it.`),t}),a.ok&&this.fetched.update(e=>new Map(e).set(r,a.value)))}async send(e){if(this.sender){if(e.forget)return{ok:!0};let{directive:t,watch:n,...r}=e;try{return await this.sender(r)}catch{return{error:`The devtools server did not answer. Try again.`}}}let{rpc:t,pageId:n,componentId:r}=this.target;if(!t||!n||!r)return{error:`No live page to read from.`};let{directive:i,...a}=e;try{return await t.scope(`pangular`).rpc.call(`request-component-value`,{pageId:n,request:{id:r,...a,...i===void 0?{}:{directive:i}}})??{}}catch{return{error:`The devtools server did not answer. Try again.`}}}};function UM(e,t){if(e&1&&(z(0,`span`,1),q(1),B()),e&2){let e=W(2);O(),Y(`: `,e.label())}}function WM(e,t){if(e&1&&(z(0,`span`,1),q(1),B()),e&2){let e=W(3);O(),Y(`: `,e.label())}}function GM(e,t){if(e&1){let e=V();z(0,`button`,4),U(`click`,function(){return w(e),T(W(2).store(`log`))}),q(1,` Log to console `),j(2,WM,2,1,`span`,1),B()}if(e&2){let e=W(2);kg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1)}}function KM(e,t){if(e&1){let e=V();z(0,`button`,0),U(`click`,function(){return w(e),T(W().store())}),q(1,` Store as global `),j(2,UM,2,1,`span`,1),B(),j(3,GM,3,2,`button`,2),z(4,`span`,3),q(5),B()}if(e&2){let e=W();kg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1),O(),M(e.canLog()?3:-1),O(2),J(e.message())}}var qM=class e{rpc=$(null);pageId=$(null);target=$.required();label=$(``);canLog=$(!1);staticReport=Z(()=>yE(this.rpc()));busy=D(!1);message=D(``);async store(e=`store`){let t=this.rpc(),n=this.pageId();if(t&&n){this.busy.set(!0),this.message.set(``);try{let r=await t.scope(`pangular`).rpc.call(`request-console-global`,{pageId:n,target:this.target(),...e===`log`?{mode:e}:{}}),i=e===`log`?r?.ok?`Logged in the page console.`:`Not logged.`:r?.ok&&r.name?`Stored as ${r.name}.`:`Not stored.`;this.message.set(r?.message||i)}catch{this.message.set(`Could not reach the page.`)}finally{this.busy.set(!1)}}}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-store-global`]],inputs:{rpc:[1,`rpc`],pageId:[1,`pageId`],target:[1,`target`],label:[1,`label`],canLog:[1,`canLog`]},decls:1,vars:1,consts:[[`type`,`button`,1,`store`,3,`click`,`disabled`],[1,`sr-only`],[`type`,`button`,1,`store`,`log`,3,`disabled`],[`role`,`status`,1,`status`],[`type`,`button`,1,`store`,`log`,3,`click`,`disabled`]],template:function(e,t){e&1&&j(0,KM,6,4),e&2&&M(t.staticReport()?-1:0)},styles:[`[_nghost-%COMP%] { +}`]})};function UM(e,t){return e.length>t.length&&e.startsWith(`${t.slice(0,-1)},`)}var WM=class{sender;target={rpc:null,pageId:null,componentId:null};fetched=D(new Map);pushed=D({});open=D(new Set);loading=D(new Set);errors=D(new Map);limits=new Map;generation=0;constructor(e){this.sender=e}follow(e,t){let n=e.componentId===this.target.componentId&&e.pageId===this.target.pageId;this.target=e,n||(this.generation++,this.fetched.set(new Map),this.open.set(new Set),this.loading.set(new Set),this.errors.set(new Map),this.limits.clear()),this.pushed.set(t??{})}level(e,t){let n=bM(e,t),r=this.pushed();return Object.hasOwn(r,n)?r[n]:this.fetched().get(n)}isOpen(e,t){return this.open().has(bM(e,t))}toggle(e,t,n){let r=bM(e,t),i=new Set(this.open());if(i.has(r)){for(let e of i)(e===r||UM(e,r))&&i.delete(e);this.open.set(i),this.send({path:e,directive:t,forget:!0});return}i.add(r),this.open.set(i),n&&this.load(e,t,this.limits.get(r)??30)}more(e,t,n){let r=bM(e,t),i=Math.min(aM,Math.max(n,this.limits.get(r)??0)+100);this.limits.set(r,i),this.load(e,t,i)}async read(e,t,n){return this.send({path:e,depth:t,limit:n})}async load(e,t,n){let r=bM(e,t),i=this.generation;this.loading.update(e=>new Set(e).add(r));let a=await this.send({path:e,directive:t,limit:n,watch:!0});i===this.generation&&(this.loading.update(e=>{let t=new Set(e);return t.delete(r),t}),this.errors.update(e=>{let t=new Map(e);return a.ok?t.delete(r):t.set(r,a.error??`The page did not read it.`),t}),a.ok&&this.fetched.update(e=>new Map(e).set(r,a.value)))}async send(e){if(this.sender){if(e.forget)return{ok:!0};let{directive:t,watch:n,...r}=e;try{return await this.sender(r)}catch{return{error:`The devtools server did not answer. Try again.`}}}let{rpc:t,pageId:n,componentId:r}=this.target;if(!t||!n||!r)return{error:`No live page to read from.`};let{directive:i,...a}=e;try{return await t.scope(`pangular`).rpc.call(`request-component-value`,{pageId:n,request:{id:r,...a,...i===void 0?{}:{directive:i}}})??{}}catch{return{error:`The devtools server did not answer. Try again.`}}}};function GM(e,t){if(e&1&&(z(0,`span`,1),q(1),B()),e&2){let e=W(2);O(),Y(`: `,e.label())}}function KM(e,t){if(e&1&&(z(0,`span`,1),q(1),B()),e&2){let e=W(3);O(),Y(`: `,e.label())}}function qM(e,t){if(e&1){let e=V();z(0,`button`,4),U(`click`,function(){return w(e),T(W(2).store(`log`))}),q(1,` Log to console `),j(2,KM,2,1,`span`,1),B()}if(e&2){let e=W(2);kg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1)}}function JM(e,t){if(e&1){let e=V();z(0,`button`,0),U(`click`,function(){return w(e),T(W().store())}),q(1,` Store as global `),j(2,GM,2,1,`span`,1),B(),j(3,qM,3,2,`button`,2),z(4,`span`,3),q(5),B()}if(e&2){let e=W();kg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1),O(),M(e.canLog()?3:-1),O(2),J(e.message())}}var YM=class e{rpc=$(null);pageId=$(null);target=$.required();label=$(``);canLog=$(!1);staticReport=Z(()=>xE(this.rpc()));busy=D(!1);message=D(``);async store(e=`store`){let t=this.rpc(),n=this.pageId();if(t&&n){this.busy.set(!0),this.message.set(``);try{let r=await t.scope(`pangular`).rpc.call(`request-console-global`,{pageId:n,target:this.target(),...e===`log`?{mode:e}:{}}),i=e===`log`?r?.ok?`Logged in the page console.`:`Not logged.`:r?.ok&&r.name?`Stored as ${r.name}.`:`Not stored.`;this.message.set(r?.message||i)}catch{this.message.set(`Could not reach the page.`)}finally{this.busy.set(!1)}}}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-store-global`]],inputs:{rpc:[1,`rpc`],pageId:[1,`pageId`],target:[1,`target`],label:[1,`label`],canLog:[1,`canLog`]},decls:1,vars:1,consts:[[`type`,`button`,1,`store`,3,`click`,`disabled`],[1,`sr-only`],[`type`,`button`,1,`store`,`log`,3,`disabled`],[`role`,`status`,1,`status`],[`type`,`button`,1,`store`,`log`,3,`click`,`disabled`]],template:function(e,t){e&1&&j(0,JM,6,4),e&2&&M(t.staticReport()?-1:0)},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-wrap: wrap; align-items: center; @@ -2140,7 +2140,7 @@ button.edit[_ngcontent-%COMP%] { .status[_ngcontent-%COMP%]:empty { display: none; -}`]})},JM=(e,t)=>t.id;function YM(e,t){if(e&1&&(I(0,`p`,4),q(1),L()),e&2){let e=W(2);O(),Y(`The page has more @for blocks than the `,e.length,` listed.`)}}function XM(e,t){e&1&&(I(0,`span`,9),q(1,`@empty showing`),L())}function ZM(e,t){e&1&&(I(0,`span`,10),q(1,`@empty`),L())}function QM(e,t){e&1&&(I(0,`span`,10),q(1,`renders nothing`),L())}function $M(e,t){if(e&1){let e=V();I(0,`li`)(1,`button`,6),H(`click`,function(){let t=w(e).$implicit;return T(W(3).showOwner.emit(t))})(`focus`,function(){let t=w(e).$implicit,n=W(3);return T(n.highlight.emit(n.target(t)))})(`blur`,function(){return w(e),T(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=w(e).$implicit,n=W(3);return T(n.highlight.emit(n.target(t)))})(`mouseleave`,function(){return w(e),T(W(3).highlight.emit(null))}),I(2,`span`,7),q(3),L(),I(4,`span`,8),q(5),L(),j(6,XM,2,0,`span`,9)(7,ZM,2,0,`span`,10)(8,QM,2,0,`span`,10),I(9,`span`,11),q(10),L()()()}if(e&2){let e=t.$implicit,n=W(3);O(),A(`aria-disabled`,e.owner?null:`true`),O(2),J(e.owner?.name??`Unknown component`),O(2),X(` `,e.count,` `,e.count===1?`item`:`items`,` `),O(),M(e.showingEmpty?6:e.hasEmptyBlock?7:e.count===0?8:-1),O(4),J(n.trackLabel(e))}}function eN(e,t){if(e&1&&(I(0,`section`,1)(1,`h2`,2),q(2,` @for blocks `),I(3,`span`,3),q(4),L()(),j(5,YM,2,1,`p`,4),I(6,`ul`,5),N(7,$M,11,6,`li`,null,JM),L()()),e&2){let e=W(),t=W();O(4),J(t.truncated()?e.length+`+`:e.length),O(),M(t.truncated()?5:-1),O(2),P(e)}}function tN(e,t){e&1&&j(0,eN,9,2,`section`,1),e&2&&M(t.length?0:-1)}function nN(e,t){e&1&&R(0,`app-angular-unavailable`,0),e&2&&F(`page`,W().angular())}var rN={$index:`track $index`,item:`track item`,function:`track expression`},iN=class e{blocks=$(void 0);truncated=$(!1);supported=$(null);angular=$(null);showOwner=_v();highlight=_v();target(e){return e.rootIds[0]??e.owner?.id??null}trackLabel(e){return e.track?rN[e.track]:`track unknown`}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-for-blocks`]],inputs:{blocks:[1,`blocks`],truncated:[1,`truncated`],supported:[1,`supported`],angular:[1,`angular`]},outputs:{showOwner:`showOwner`,highlight:`highlight`},decls:2,vars:1,consts:[[`capability`,`forBlocks`,`missing`,``,`compact`,``,1,`for`,3,`page`],[`aria-labelledby`,`ct-for-title`,1,`for`],[`id`,`ct-for-title`,1,`for-title`],[1,`pill`],[1,`note`],[1,`for-list`],[`type`,`button`,1,`for-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`count`],[1,`flag`,`empty`],[1,`flag`],[1,`track`,`mono`]],template:function(e,t){if(e&1&&j(0,tN,1,1)(1,nN,1,1,`app-angular-unavailable`,0),e&2){let e;M((e=t.blocks())?0:t.supported()===!1?1:-1,e)}},dependencies:[JD],styles:[`[_nghost-%COMP%] { +}`]})},XM=(e,t)=>t.id;function ZM(e,t){if(e&1&&(I(0,`p`,4),q(1),L()),e&2){let e=W(2);O(),Y(`The page has more @for blocks than the `,e.length,` listed.`)}}function QM(e,t){e&1&&(I(0,`span`,9),q(1,`@empty showing`),L())}function $M(e,t){e&1&&(I(0,`span`,10),q(1,`@empty`),L())}function eN(e,t){e&1&&(I(0,`span`,10),q(1,`renders nothing`),L())}function tN(e,t){if(e&1){let e=V();I(0,`li`)(1,`button`,6),H(`click`,function(){let t=w(e).$implicit;return T(W(3).showOwner.emit(t))})(`focus`,function(){let t=w(e).$implicit,n=W(3);return T(n.highlight.emit(n.target(t)))})(`blur`,function(){return w(e),T(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=w(e).$implicit,n=W(3);return T(n.highlight.emit(n.target(t)))})(`mouseleave`,function(){return w(e),T(W(3).highlight.emit(null))}),I(2,`span`,7),q(3),L(),I(4,`span`,8),q(5),L(),j(6,QM,2,0,`span`,9)(7,$M,2,0,`span`,10)(8,eN,2,0,`span`,10),I(9,`span`,11),q(10),L()()()}if(e&2){let e=t.$implicit,n=W(3);O(),A(`aria-disabled`,e.owner?null:`true`),O(2),J(e.owner?.name??`Unknown component`),O(2),X(` `,e.count,` `,e.count===1?`item`:`items`,` `),O(),M(e.showingEmpty?6:e.hasEmptyBlock?7:e.count===0?8:-1),O(4),J(n.trackLabel(e))}}function nN(e,t){if(e&1&&(I(0,`section`,1)(1,`h2`,2),q(2,` @for blocks `),I(3,`span`,3),q(4),L()(),j(5,ZM,2,1,`p`,4),I(6,`ul`,5),N(7,tN,11,6,`li`,null,XM),L()()),e&2){let e=W(),t=W();O(4),J(t.truncated()?e.length+`+`:e.length),O(),M(t.truncated()?5:-1),O(2),P(e)}}function rN(e,t){e&1&&j(0,nN,9,2,`section`,1),e&2&&M(t.length?0:-1)}function iN(e,t){e&1&&R(0,`app-angular-unavailable`,0),e&2&&F(`page`,W().angular())}var aN={$index:`track $index`,item:`track item`,function:`track expression`},oN=class e{blocks=$(void 0);truncated=$(!1);supported=$(null);angular=$(null);showOwner=_v();highlight=_v();target(e){return e.rootIds[0]??e.owner?.id??null}trackLabel(e){return e.track?aN[e.track]:`track unknown`}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-for-blocks`]],inputs:{blocks:[1,`blocks`],truncated:[1,`truncated`],supported:[1,`supported`],angular:[1,`angular`]},outputs:{showOwner:`showOwner`,highlight:`highlight`},decls:2,vars:1,consts:[[`capability`,`forBlocks`,`missing`,``,`compact`,``,1,`for`,3,`page`],[`aria-labelledby`,`ct-for-title`,1,`for`],[`id`,`ct-for-title`,1,`for-title`],[1,`pill`],[1,`note`],[1,`for-list`],[`type`,`button`,1,`for-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`count`],[1,`flag`,`empty`],[1,`flag`],[1,`track`,`mono`]],template:function(e,t){if(e&1&&j(0,rN,1,1)(1,iN,1,1,`app-angular-unavailable`,0),e&2){let e;M((e=t.blocks())?0:t.supported()===!1?1:-1,e)}},dependencies:[XD],styles:[`[_nghost-%COMP%] { display: block; } @@ -2258,7 +2258,7 @@ button.edit[_ngcontent-%COMP%] { min-width: 0; text-overflow: ellipsis; white-space: nowrap; -}`]})},aN=(e,t)=>t.id;function oN(e,t){if(e&1&&(I(0,`p`,11),q(1),L(),I(2,`h3`,7),q(3,`Still retained`),L(),I(4,`p`,6),q(5,` In a development build, Angular's DI debug data keeps every destroyed component in memory, so Pangular can't tell a leak from that. Check retainers in the Chrome DevTools Memory panel: take a heap snapshot after a few navigations, search for the class and look for a retainer other than Angular's DI debug records. Open subscriptions after destroy are still tracked below. `),L()),e&2){let e=W(),t=W();O(),J(t.plural(e.navigations,`navigation`))}}function sN(e,t){e&1&&(I(0,`p`,6),q(1,` This page cannot track destroyed components. It needs WeakRef, FinalizationRegistry and the Angular debug API of a development build. `),L())}function cN(e,t){if(e&1&&(I(0,`span`,18),q(1),L()),e&2){let e=W().$implicit,t=W(4);O(),J(t.plural(e.subscriptions,`open subscription`))}}function lN(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),q(2),L(),I(3,`span`,15),q(4),L(),I(5,`span`,16),q(6),L(),I(7,`span`,17),q(8),L(),j(9,cN,2,1,`span`,18),L()),e&2){let e=t.$implicit,n=W(4);O(2),J(e.name),O(2),J(e.route||`/`),O(2),Y(``,n.plural(e.navigations,`navigation`),` ago`),O(2),J(n.ageOf(e)),O(),M(e.subscriptions?9:-1)}}function uN(e,t){if(e&1&&(I(0,`p`,6),q(1),L(),I(2,`ul`,12),N(3,lN,10,5,`li`,13,aN),L()),e&2){let e=W(3);O(),X(` Destroyed, yet still in memory after at least `,e.minNavigations,` navigations and `,e.minSeconds,` seconds. Take a heap snapshot, search for the class and read its retainers. `),O(2),P(e.retained().slice(0,e.shown))}}function dN(e,t){e&1&&(I(0,`p`,6),q(1,`No destroyed component is still in memory after a few navigations.`),L())}function fN(e,t){if(e&1&&(I(0,`p`,6),q(1),I(2,`span`,19),q(3),L(),q(4,`. Navigate a few times to see whether they stay. `),L()),e&2){let e=W(3);O(),Y(` `,e.plural(e.recent().length,`instance`),` destroyed recently and not collected yet: `),O(2),J(e.names(e.recent()))}}function pN(e,t){if(e&1&&(j(0,sN,2,0,`p`,6),I(1,`p`,11),q(2),L(),I(3,`h3`,7),q(4,` Still retained `),I(5,`span`,8),q(6),L()(),j(7,uN,5,2)(8,dN,2,0,`p`,6),j(9,fN,5,2,`p`,6)),e&2){let e=W(),t=W();M(e.support.retention?-1:0),O(2),z_(` `,t.plural(e.navigations,`navigation`),` · `,t.retained().length,` still retained · `,t.plural(e.totals.collected,`instance`),` collected `),O(4),J(t.retained().length),O(),M(t.retained().length?7:8),O(2),M(t.recent().length?9:-1)}}function mN(e,t){if(e&1&&(I(0,`p`,6),q(1,` Off the page but not destroyed (detached views, such as a route reuse cache): `),I(2,`span`,19),q(3),L(),q(4,`. `),L()),e&2){let e=W(2);O(3),J(e.names(e.detached()))}}function hN(e,t){if(e&1&&(I(0,`span`,8),q(1),L()),e&2){let e=W();O(),J(e.subscriptions.length)}}function gN(e,t){if(e&1&&(I(0,`span`,15),q(1),L()),e&2){let e=W().$implicit;O(),J(e.source)}}function _N(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),q(2),L(),I(3,`span`,16),q(4),L(),I(5,`span`,18),q(6),L(),j(7,gN,2,1,`span`,15),L()),e&2){let e=t.$implicit;O(2),J(e.name),O(2),Y(``,e.count,` open`),O(2),Y(` `,e.reason===`instance-destroyed`?`instance destroyed`:`no instance left`,` `),O(),M(e.source?7:-1)}}function vN(e,t){if(e&1&&(I(0,`p`,6),q(1,` Still open although the component that made them is gone. Tear them down with takeUntilDestroyed(), DestroyRef.onDestroy or the async pipe. `),L(),I(2,`ul`,12),N(3,_N,8,4,`li`,13,dg),L()),e&2){let e=W(2),t=W();O(3),P(e.subscriptions.slice(0,t.shown))}}function yN(e,t){e&1&&(I(0,`p`,6),q(1,`No subscription is still open after its component went away.`),L())}function bN(e,t){e&1&&(I(0,`p`,6),q(1,` Subscriptions are tied to component classes only; Angular 20 profiler hooks tie them to instances. `),L())}function xN(e,t){if(e&1&&(j(0,vN,5,0)(1,yN,2,0,`p`,6),j(2,bN,2,0,`p`,6)),e&2){let e=W();M(+!e.subscriptions.length),O(2),M(e.support.instances?-1:2)}}function SN(e,t){e&1&&(I(0,`p`,9),q(1,` Tracking could not start: the page has no RxJS the overlay can load. `),L())}function CN(e,t){e&1&&(I(0,`p`,6),q(1,` Off. Track subscriptions wraps Observable.prototype.subscribe on the page to record which component makes each subscription, until you stop it. Subscriptions made before you start are not seen, so reload or navigate again after starting. `),L())}function wN(e,t){e&1&&R(0,`app-angular-unavailable`,10),e&2&&F(`page`,W(2).angular())}function TN(e,t){if(e&1&&(I(0,`span`,16),q(1),L()),e&2){let e=W().$implicit,t=W(3);O(),J(t.plural(e.subscriptions,`subscription`))}}function EN(e,t){if(e&1){let e=V();I(0,`li`)(1,`button`,20),H(`click`,function(){let t=w(e).$implicit;return T(W(3).showComponent.emit(t.id))})(`focus`,function(){let t=w(e).$implicit;return T(W(3).highlight.emit(t.id))})(`blur`,function(){return w(e),T(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(3).highlight.emit(t.id))})(`mouseleave`,function(){return w(e),T(W(3).highlight.emit(null))}),I(2,`span`,14),q(3),L(),I(4,`span`,16),q(5),L(),j(6,TN,2,1,`span`,16),L()()}if(e&2){let e=t.$implicit,n=W(2),r=W();O(3),J(e.name),O(2),J(r.effectsText(e)),O(),M(n.support.subscriptions===`on`?6:-1)}}function DN(e,t){e&1&&(I(0,`p`,6),q(1,` Angular files a component's effects under the template its host sits in, so effects of components side by side in one template show as shared. `),L())}function ON(e,t){if(e&1&&(I(0,`ul`,12),N(1,EN,7,3,`li`,null,aN),L(),j(3,DN,2,0,`p`,6)),e&2){let e=W(),t=W();O(),P(e.components.slice(0,t.shown)),O(2),M(e.components.some(t.hasShared)?3:-1)}}function kN(e,t){e&1&&(I(0,`p`,6),q(1,`No component on the page has a live effect or a tracked subscription.`),L())}function AN(e,t){if(e&1&&(j(0,oN,6,1)(1,pN,10,7),j(2,mN,5,1,`p`,6),I(3,`h3`,7),q(4,` Open subscriptions after destroy `),j(5,hN,2,1,`span`,8),L(),j(6,xN,3,2)(7,SN,2,0,`p`,9)(8,CN,2,0,`p`,6),I(9,`h3`,7),q(10,` Live effects and subscriptions `),I(11,`span`,8),q(12),L()(),j(13,wN,1,1,`app-angular-unavailable`,10),j(14,ON,4,1)(15,kN,2,0,`p`,6)),e&2){let e,n=t,r=W();M(n.support.retention===`dev-di-debug`?0:1),O(2),M(r.detached().length?2:-1),O(3),M(n.support.subscriptions===`on`?5:-1),O(),M((e=n.support.subscriptions)===`on`?6:e===`unavailable`?7:8),O(6),J(n.components.length),O(),M(n.support.effects?-1:13),O(),M(n.components.length?14:15)}}function jN(e,t){e&1&&(I(0,`p`,6),q(1,`No leak data from this page yet. It comes with the next report.`),L())}var MN=20;function NN(e){let t=Math.max(0,Math.round(e/1e3));if(t<120)return`${t} s`;let n=Math.round(t/60);return n<120?`${n} min`:`${Math.round(n/60)} h`}var PN=(e,t,n=`${t}s`)=>`${e} ${e===1?t:n}`,FN=class e{report=$(null);pageId=$(null);rpc=$(null);angular=$(null);now=$(()=>Date.now());showComponent=_v();highlight=_v();shown=MN;minNavigations=2;minSeconds=AT/1e3;plural=PN;busy=D(!1);announcement=D(``);tracking=Z(()=>this.report()?.support.subscriptions===`on`);split=Z(()=>{let e=this.report(),t=[],n=[],r=[];if(!e)return{retained:t,recent:n,detached:r};let i=e.support.retention===`dev-di-debug`;for(let a of e.destroyed)if(a.detached)r.push(a);else if(i)continue;else this.isRetained(e,a)?t.push(a):n.push(a);return{retained:t,recent:n,detached:r}});retained=Z(()=>this.split().retained);recent=Z(()=>this.split().recent);detached=Z(()=>this.split().detached);ageMs(e,t){return Math.max(0,this.now()()-e.reportedAt+(e.at-t.destroyedAt))}isRetained(e,t){return t.navigations>=2&&this.ageMs(e,t)>=1e4}ageOf(e){let t=this.report();return t?`${NN(this.ageMs(t,e))} old`:``}names(e){let t=[...new Set(e.map(e=>e.name))];return t.length>6?`${t.slice(0,6).join(`, `)} and more`:t.join(`, `)}hasShared(e){return!!e.sharedEffects}effectsText(e){let t=PN(e.effects,`effect`);return e.sharedEffects?`${t}, ${e.sharedEffects} shared`:t}async toggle(){let e=this.pageId();if(!e||this.busy())return;let t=!this.tracking();this.busy.set(!0);try{await _E(this.rpc(),`request-leak-tracking`,{pageId:e,on:t}),this.announcement.set(t?`Tracking subscriptions. Reload or navigate to see subscriptions made at start.`:`Stopped tracking subscriptions.`)}catch{this.announcement.set(`Could not reach the page. Try again.`)}finally{this.busy.set(!1)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-leaks-section`]],inputs:{report:[1,`report`],pageId:[1,`pageId`],rpc:[1,`rpc`],angular:[1,`angular`],now:[1,`now`]},outputs:{showComponent:`showComponent`,highlight:`highlight`},decls:12,vars:5,consts:[[`aria-labelledby`,`ct-leaks-title`,1,`leaks`],[1,`head`],[`id`,`ct-leaks-title`],[`type`,`button`,1,`track`,3,`click`,`disabled`],[`role`,`status`,1,`sr-only`],[1,`hint`],[1,`note`],[1,`sub`],[1,`pill`],[`role`,`status`,1,`note`],[`capability`,`signalGraph`,`missing`,``,`compact`,``,3,`page`],[1,`stats`],[1,`rows`],[1,`row`],[1,`name`,`mono`],[1,`meta`,`mono`],[1,`count`],[1,`meta`],[1,`flag`,`warn`],[1,`mono`],[`type`,`button`,1,`row`,`live`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`]],template:function(e,t){if(e&1&&(I(0,`section`,0)(1,`div`,1)(2,`h2`,2),q(3,`Leaks`),L(),I(4,`button`,3),H(`click`,function(){return t.toggle()}),q(5,` Track subscriptions `),L(),I(6,`p`,4),q(7),L()(),I(8,`p`,5),q(9,` Components that left the page but are still in memory, and the live effects and RxJS subscriptions of each component. The browser collects garbage when it decides, so a retained instance is a hint: check what holds it in the Chrome DevTools Memory panel. `),L(),j(10,AN,16,7)(11,jN,2,0,`p`,6),L()),e&2){let e;O(4),F(`disabled`,!t.pageId()||!t.report()),A(`aria-pressed`,t.tracking())(`aria-disabled`,t.busy()||null),O(3),J(t.announcement()),O(3),M((e=t.report())?10:11,e)}},dependencies:[JD],styles:[`[_nghost-%COMP%] { +}`]})},sN=(e,t)=>t.id;function cN(e,t){if(e&1&&(I(0,`p`,11),q(1),L(),I(2,`h3`,7),q(3,`Still retained`),L(),I(4,`p`,6),q(5,` In a development build, Angular's DI debug data keeps every destroyed component in memory, so Pangular can't tell a leak from that. Check retainers in the Chrome DevTools Memory panel: take a heap snapshot after a few navigations, search for the class and look for a retainer other than Angular's DI debug records. Open subscriptions after destroy are still tracked below. `),L()),e&2){let e=W(),t=W();O(),J(t.plural(e.navigations,`navigation`))}}function lN(e,t){e&1&&(I(0,`p`,6),q(1,` This page cannot track destroyed components. It needs WeakRef, FinalizationRegistry and the Angular debug API of a development build. `),L())}function uN(e,t){if(e&1&&(I(0,`span`,18),q(1),L()),e&2){let e=W().$implicit,t=W(4);O(),J(t.plural(e.subscriptions,`open subscription`))}}function dN(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),q(2),L(),I(3,`span`,15),q(4),L(),I(5,`span`,16),q(6),L(),I(7,`span`,17),q(8),L(),j(9,uN,2,1,`span`,18),L()),e&2){let e=t.$implicit,n=W(4);O(2),J(e.name),O(2),J(e.route||`/`),O(2),Y(``,n.plural(e.navigations,`navigation`),` ago`),O(2),J(n.ageOf(e)),O(),M(e.subscriptions?9:-1)}}function fN(e,t){if(e&1&&(I(0,`p`,6),q(1),L(),I(2,`ul`,12),N(3,dN,10,5,`li`,13,sN),L()),e&2){let e=W(3);O(),X(` Destroyed, yet still in memory after at least `,e.minNavigations,` navigations and `,e.minSeconds,` seconds. Take a heap snapshot, search for the class and read its retainers. `),O(2),P(e.retained().slice(0,e.shown))}}function pN(e,t){e&1&&(I(0,`p`,6),q(1,`No destroyed component is still in memory after a few navigations.`),L())}function mN(e,t){if(e&1&&(I(0,`p`,6),q(1),I(2,`span`,19),q(3),L(),q(4,`. Navigate a few times to see whether they stay. `),L()),e&2){let e=W(3);O(),Y(` `,e.plural(e.recent().length,`instance`),` destroyed recently and not collected yet: `),O(2),J(e.names(e.recent()))}}function hN(e,t){if(e&1&&(j(0,lN,2,0,`p`,6),I(1,`p`,11),q(2),L(),I(3,`h3`,7),q(4,` Still retained `),I(5,`span`,8),q(6),L()(),j(7,fN,5,2)(8,pN,2,0,`p`,6),j(9,mN,5,2,`p`,6)),e&2){let e=W(),t=W();M(e.support.retention?-1:0),O(2),z_(` `,t.plural(e.navigations,`navigation`),` · `,t.retained().length,` still retained · `,t.plural(e.totals.collected,`instance`),` collected `),O(4),J(t.retained().length),O(),M(t.retained().length?7:8),O(2),M(t.recent().length?9:-1)}}function gN(e,t){if(e&1&&(I(0,`p`,6),q(1,` Off the page but not destroyed (detached views, such as a route reuse cache): `),I(2,`span`,19),q(3),L(),q(4,`. `),L()),e&2){let e=W(2);O(3),J(e.names(e.detached()))}}function _N(e,t){if(e&1&&(I(0,`span`,8),q(1),L()),e&2){let e=W();O(),J(e.subscriptions.length)}}function vN(e,t){if(e&1&&(I(0,`span`,15),q(1),L()),e&2){let e=W().$implicit;O(),J(e.source)}}function yN(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),q(2),L(),I(3,`span`,16),q(4),L(),I(5,`span`,18),q(6),L(),j(7,vN,2,1,`span`,15),L()),e&2){let e=t.$implicit;O(2),J(e.name),O(2),Y(``,e.count,` open`),O(2),Y(` `,e.reason===`instance-destroyed`?`instance destroyed`:`no instance left`,` `),O(),M(e.source?7:-1)}}function bN(e,t){if(e&1&&(I(0,`p`,6),q(1,` Still open although the component that made them is gone. Tear them down with takeUntilDestroyed(), DestroyRef.onDestroy or the async pipe. `),L(),I(2,`ul`,12),N(3,yN,8,4,`li`,13,dg),L()),e&2){let e=W(2),t=W();O(3),P(e.subscriptions.slice(0,t.shown))}}function xN(e,t){e&1&&(I(0,`p`,6),q(1,`No subscription is still open after its component went away.`),L())}function SN(e,t){e&1&&(I(0,`p`,6),q(1,` Subscriptions are tied to component classes only; Angular 20 profiler hooks tie them to instances. `),L())}function CN(e,t){if(e&1&&(j(0,bN,5,0)(1,xN,2,0,`p`,6),j(2,SN,2,0,`p`,6)),e&2){let e=W();M(+!e.subscriptions.length),O(2),M(e.support.instances?-1:2)}}function wN(e,t){e&1&&(I(0,`p`,9),q(1,` Tracking could not start: the page has no RxJS the overlay can load. `),L())}function TN(e,t){e&1&&(I(0,`p`,6),q(1,` Off. Track subscriptions wraps Observable.prototype.subscribe on the page to record which component makes each subscription, until you stop it. Subscriptions made before you start are not seen, so reload or navigate again after starting. `),L())}function EN(e,t){e&1&&R(0,`app-angular-unavailable`,10),e&2&&F(`page`,W(2).angular())}function DN(e,t){if(e&1&&(I(0,`span`,16),q(1),L()),e&2){let e=W().$implicit,t=W(3);O(),J(t.plural(e.subscriptions,`subscription`))}}function ON(e,t){if(e&1){let e=V();I(0,`li`)(1,`button`,20),H(`click`,function(){let t=w(e).$implicit;return T(W(3).showComponent.emit(t.id))})(`focus`,function(){let t=w(e).$implicit;return T(W(3).highlight.emit(t.id))})(`blur`,function(){return w(e),T(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(3).highlight.emit(t.id))})(`mouseleave`,function(){return w(e),T(W(3).highlight.emit(null))}),I(2,`span`,14),q(3),L(),I(4,`span`,16),q(5),L(),j(6,DN,2,1,`span`,16),L()()}if(e&2){let e=t.$implicit,n=W(2),r=W();O(3),J(e.name),O(2),J(r.effectsText(e)),O(),M(n.support.subscriptions===`on`?6:-1)}}function kN(e,t){e&1&&(I(0,`p`,6),q(1,` Angular files a component's effects under the template its host sits in, so effects of components side by side in one template show as shared. `),L())}function AN(e,t){if(e&1&&(I(0,`ul`,12),N(1,ON,7,3,`li`,null,sN),L(),j(3,kN,2,0,`p`,6)),e&2){let e=W(),t=W();O(),P(e.components.slice(0,t.shown)),O(2),M(e.components.some(t.hasShared)?3:-1)}}function jN(e,t){e&1&&(I(0,`p`,6),q(1,`No component on the page has a live effect or a tracked subscription.`),L())}function MN(e,t){if(e&1&&(j(0,cN,6,1)(1,hN,10,7),j(2,gN,5,1,`p`,6),I(3,`h3`,7),q(4,` Open subscriptions after destroy `),j(5,_N,2,1,`span`,8),L(),j(6,CN,3,2)(7,wN,2,0,`p`,9)(8,TN,2,0,`p`,6),I(9,`h3`,7),q(10,` Live effects and subscriptions `),I(11,`span`,8),q(12),L()(),j(13,EN,1,1,`app-angular-unavailable`,10),j(14,AN,4,1)(15,jN,2,0,`p`,6)),e&2){let e,n=t,r=W();M(n.support.retention===`dev-di-debug`?0:1),O(2),M(r.detached().length?2:-1),O(3),M(n.support.subscriptions===`on`?5:-1),O(),M((e=n.support.subscriptions)===`on`?6:e===`unavailable`?7:8),O(6),J(n.components.length),O(),M(n.support.effects?-1:13),O(),M(n.components.length?14:15)}}function NN(e,t){e&1&&(I(0,`p`,6),q(1,`No leak data from this page yet. It comes with the next report.`),L())}var PN=20;function FN(e){let t=Math.max(0,Math.round(e/1e3));if(t<120)return`${t} s`;let n=Math.round(t/60);return n<120?`${n} min`:`${Math.round(n/60)} h`}var IN=(e,t,n=`${t}s`)=>`${e} ${e===1?t:n}`,LN=class e{report=$(null);pageId=$(null);rpc=$(null);angular=$(null);now=$(()=>Date.now());showComponent=_v();highlight=_v();shown=PN;minNavigations=2;minSeconds=AT/1e3;plural=IN;busy=D(!1);announcement=D(``);tracking=Z(()=>this.report()?.support.subscriptions===`on`);split=Z(()=>{let e=this.report(),t=[],n=[],r=[];if(!e)return{retained:t,recent:n,detached:r};let i=e.support.retention===`dev-di-debug`;for(let a of e.destroyed)if(a.detached)r.push(a);else if(i)continue;else this.isRetained(e,a)?t.push(a):n.push(a);return{retained:t,recent:n,detached:r}});retained=Z(()=>this.split().retained);recent=Z(()=>this.split().recent);detached=Z(()=>this.split().detached);ageMs(e,t){return Math.max(0,this.now()()-e.reportedAt+(e.at-t.destroyedAt))}isRetained(e,t){return t.navigations>=2&&this.ageMs(e,t)>=1e4}ageOf(e){let t=this.report();return t?`${FN(this.ageMs(t,e))} old`:``}names(e){let t=[...new Set(e.map(e=>e.name))];return t.length>6?`${t.slice(0,6).join(`, `)} and more`:t.join(`, `)}hasShared(e){return!!e.sharedEffects}effectsText(e){let t=IN(e.effects,`effect`);return e.sharedEffects?`${t}, ${e.sharedEffects} shared`:t}async toggle(){let e=this.pageId();if(!e||this.busy())return;let t=!this.tracking();this.busy.set(!0);try{await yE(this.rpc(),`request-leak-tracking`,{pageId:e,on:t}),this.announcement.set(t?`Tracking subscriptions. Reload or navigate to see subscriptions made at start.`:`Stopped tracking subscriptions.`)}catch{this.announcement.set(`Could not reach the page. Try again.`)}finally{this.busy.set(!1)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-leaks-section`]],inputs:{report:[1,`report`],pageId:[1,`pageId`],rpc:[1,`rpc`],angular:[1,`angular`],now:[1,`now`]},outputs:{showComponent:`showComponent`,highlight:`highlight`},decls:12,vars:5,consts:[[`aria-labelledby`,`ct-leaks-title`,1,`leaks`],[1,`head`],[`id`,`ct-leaks-title`],[`type`,`button`,1,`track`,3,`click`,`disabled`],[`role`,`status`,1,`sr-only`],[1,`hint`],[1,`note`],[1,`sub`],[1,`pill`],[`role`,`status`,1,`note`],[`capability`,`signalGraph`,`missing`,``,`compact`,``,3,`page`],[1,`stats`],[1,`rows`],[1,`row`],[1,`name`,`mono`],[1,`meta`,`mono`],[1,`count`],[1,`meta`],[1,`flag`,`warn`],[1,`mono`],[`type`,`button`,1,`row`,`live`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`]],template:function(e,t){if(e&1&&(I(0,`section`,0)(1,`div`,1)(2,`h2`,2),q(3,`Leaks`),L(),I(4,`button`,3),H(`click`,function(){return t.toggle()}),q(5,` Track subscriptions `),L(),I(6,`p`,4),q(7),L()(),I(8,`p`,5),q(9,` Components that left the page but are still in memory, and the live effects and RxJS subscriptions of each component. The browser collects garbage when it decides, so a retained instance is a hint: check what holds it in the Chrome DevTools Memory panel. `),L(),j(10,MN,16,7)(11,NN,2,0,`p`,6),L()),e&2){let e;O(4),F(`disabled`,!t.pageId()||!t.report()),A(`aria-pressed`,t.tracking())(`aria-disabled`,t.busy()||null),O(3),J(t.announcement()),O(3),M((e=t.report())?10:11,e)}},dependencies:[XD],styles:[`[_nghost-%COMP%] { display: block; } @@ -2414,7 +2414,7 @@ h2[_ngcontent-%COMP%] { border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); color: var(--%NS%warn-text); -}`]})},IN=12,LN=900;function RN(e){for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t);if(/(auto|scroll|overlay)/.test(e.overflowY))return t}return null}var zN=class{options;injector=C(hs);visibleTop=D(0);viewport=D(LN);rowHeight;host=null;scroller=null;detach=null;enabled;range;padTop;padBottom;constructor(e){this.options=e,this.rowHeight=D(e.estimate);let t=e.min??300;this.enabled=Z(()=>e.count()>t),this.range=Z(()=>{let t=e.count();if(!this.enabled())return{start:0,end:t};let n=this.rowHeight(),r=this.viewport(),i=Math.max(0,Math.min(this.visibleTop(),t*n-r)),a=Math.max(0,Math.min(t-1,Math.floor(i/n)-IN));return{start:a,end:Math.min(t,Math.max(a,Math.ceil((i+r)/n)+IN))}}),this.padTop=Z(()=>this.enabled()?this.range().start*this.rowHeight():0),this.padBottom=Z(()=>this.enabled()?(e.count()-this.range().end)*this.rowHeight():0),ic(()=>{e.count(),wd(()=>this.update(),{injector:this.injector})}),C(_s).onDestroy(()=>this.detach?.())}get count(){return this.options.count()}rendered(e){let{start:t,end:n}=this.range();return e>=t&&ethis.update();n.addEventListener(`scroll`,r,{passive:!0}),window.addEventListener(`resize`,r),this.detach=()=>{n.removeEventListener(`scroll`,r),window.removeEventListener(`resize`,r)},this.update()}update(){let e=this.host;if(e){if(this.scroller===e)this.place(e.scrollTop,e.clientHeight);else{let t=this.scroller?this.scroller.getBoundingClientRect().top:0,n=this.scroller?this.scroller.clientHeight:window.innerHeight;this.place(t-e.getBoundingClientRect().top,n)}this.options.fixed||this.measure()}}place(e,t){this.visibleTop.set(e),this.viewport.set(t>0?t:LN)}measure(){let e=this.host?.querySelectorAll(`[data-vindex]`);if(!e||e.length<2)return;let t=e[0].getBoundingClientRect(),n=(e[e.length-1].getBoundingClientRect().bottom-t.top)/e.length;n>4&&Math.abs(n-this.rowHeight())>1&&this.rowHeight.set(n)}reveal(e,t){if(this.enabled()&&!this.rendered(e)){let t=e*this.rowHeight(),n=this.viewport(),r=Math.max(0,t-n/2);if(this.place(r,n),this.host&&this.scroller===this.host)this.host.scrollTop=r;else if(this.host){let e=this.scroller?this.scroller.getBoundingClientRect().top:0,t=this.host.getBoundingClientRect().top-e+r;this.scroller?this.scroller.scrollTop+=t:window.scrollBy(0,t)}}t&&wd(t,{injector:this.injector})}};function BN(e){let t=e.ownerDocument.defaultView;if(!t)return null;for(let n=e.parentElement;n&&n!==e.ownerDocument.documentElement&&n!==e.ownerDocument.body;n=n.parentElement)if(/(auto|scroll|overlay)/.test(t.getComputedStyle(n).overflowY))return n;return null}var VN=e=>{let t=parseFloat(e);return Number.isFinite(t)?t:0};function HN(e,t=8){let n=e.ownerDocument.defaultView;if(!n)return e.offsetHeight+t;let r=BN(e),i=r?n.getComputedStyle(r):null,a=i?VN(i.paddingTop):0,o=i?VN(i.scrollPaddingTop):0,s=VN(n.getComputedStyle(e).top);return Math.max(0,Math.ceil(a+s+e.offsetHeight+t-o))}function UN(e,t,n=8){let r=BN(e),i=t.getBoundingClientRect().bottom+n-e.getBoundingClientRect().top;i<=0||(r?r.scrollTop-=i:e.ownerDocument.defaultView?.scrollBy(0,-i))}var WN=[`filterInput`],GN=[`treeEl`],KN=[`propFilterInput`],qN=()=>[],JN=e=>({kind:`component`,id:e}),YN=(e,t)=>t.row.node.id,XN=(e,t)=>t.outlet+t.route,ZN=(e,t)=>t+e,QN=(e,t)=>t.formId,$N=(e,t)=>t.name+t.index,eP=(e,t)=>t.name,tP=(e,t)=>t.token+e,nP=(e,t)=>t.id;function rP(e,t){return this.sourceKey(t)}function iP(e,t){if(e&1){let e=V();I(0,`span`,35),q(1,`Page`),L(),I(2,`app-select`,36),H(`valueChange`,function(t){return w(e),T(W(2).selectPage(t))}),L()}if(e&2){let e=W(2);O(2),F(`options`,e.pageOptions())(`value`,e.page()?.pageId??null)}}function aP(e,t){if(e&1){let e=V();I(0,`button`,37),H(`click`,function(){return w(e),T(W(2).toggleDirectiveHosts())}),E(),I(1,`svg`,14),R(2,`path`,38)(3,`path`,39),L(),q(4,` Directive hosts `),L()}e&2&&A(`aria-pressed`,W(2).showDirectiveHosts())}function oP(e,t){if(e&1){let e=V();I(0,`button`,40),H(`click`,function(){w(e);let t=W(2);return T(t.picking()?t.cancelPick():t.pick())}),E(),I(1,`svg`,14),R(2,`path`,41),L(),q(3),L()}if(e&2){let e=W(2);K(`on`,e.picking()),O(3),Y(` `,e.picking()?`Cancel pick`:`Pick component on page`,` `)}}function sP(e,t){if(e&1&&(I(0,`p`,21),q(1),L()),e&2){let e=W(2);O(),J(e.pickMessage())}}function cP(e,t){if(e&1&&(I(0,`p`,22),q(1),L()),e&2){let e=W(2);O(),J(e.truncationText())}}function lP(e,t){e&1&&(I(0,`p`,43),q(1,`The filter only searches the components the tree lists.`),L())}function uP(e,t){e&1&&(I(0,`p`,43),q(1,`Directive hosts are hidden, so they are not searched.`),L())}function dP(e,t){if(e&1){let e=V();I(0,`div`,25)(1,`p`,42),q(2),L(),j(3,lP,2,0,`p`,43),j(4,uP,2,0,`p`,43),I(5,`button`,44),H(`click`,function(){return w(e),T(W(2).clearFilter())}),q(6,`Clear filter`),L()()}if(e&2){let e=W(2);O(2),Y(`No components match “`,e.filter().trim(),`”`),O(),M(e.page().truncated?3:-1),O(),M(!e.showDirectiveHosts()&&e.page().directiveHostCount?4:-1)}}function fP(e,t){if(e&1&&(I(0,`p`,26),q(1),L()),e&2){let e=W(2);O(),Y(` `,e.rows().length,` rows. Rows render as you scroll, so the browser's find only sees the ones near view; the filter above searches them all. `)}}function pP(e,t){if(e&1){let e=V();I(0,`span`,52),H(`click`,function(t){w(e),W();let n=J_(0);return T(W(2).toggle(n.node.id,t))}),E(),I(1,`svg`,53),R(2,`path`,54),L()()}e&2&&(W(),K(`open`,J_(0).expanded))}function mP(e,t){e&1&&R(0,`span`,47)}function hP(e,t){if(e&1&&(I(0,`span`,55),q(1),L(),I(2,`span`,56),q(3),L(),I(4,`span`,24),q(5,`directive host`),L()),e&2){W();let e=J_(0),t=W(2);O(),Y(`<`,e.node.tag,`>`),O(),A(`title`,e.node.directives?.join(`, `)),O(),J(t.hostLabel(e.node))}}function gP(e,t){if(e&1&&(I(0,`span`,57),q(1),L(),I(2,`span`,58),q(3),L()),e&2){W();let e=J_(0);O(),J(e.node.name),O(2),Y(`<`,e.node.tag,`>`)}}function _P(e,t){if(e&1&&(I(0,`span`)(1,`span`,24),q(2,`Hydration: `),L(),q(3),L()),e&2){let e=t,n=W(3);m_(`hyd hyd-`+e),O(3),J(n.hydrationText(e))}}function vP(e,t){if(e&1&&(I(0,`span`,49),q(1),L()),e&2){let e=t.$implicit;O(),J(e.route||`/`)}}function yP(e,t){if(e&1&&(I(0,`span`,50),q(1),I(2,`span`,24),q(3),L()()),e&2){let e=t;O(),Y(` `,e),O(2),Y(` `,e===1?`check`:`checks`,` while recording`)}}function bP(e,t){if(e&1&&(I(0,`span`,51),q(1),I(2,`span`,24),q(3),L()()),e&2){W();let e=J_(0);A(`title`,e.node.directives.join(`, `)),O(),Y(` +`,e.node.directives.length,` `),O(2),Y(` `,e.node.directives.length===1?`directive`:`directives`,` `)}}function xP(e,t){if(e&1){let e=V();K_(0),I(1,`div`,45),H(`click`,function(){w(e);let t=J_(0);return T(W(2).select(t.node.id))})(`focus`,function(){w(e);let t=J_(0),n=W(2);return n.focusId.set(t.node.id),T(n.highlight(t.node.id))})(`blur`,function(){return w(e),T(W(2).highlight(null))})(`mouseenter`,function(){w(e);let t=J_(0);return T(W(2).highlight(t.node.id))})(`mouseleave`,function(){return w(e),T(W(2).highlight(null))}),j(2,pP,3,2,`span`,46)(3,mP,1,0,`span`,47),j(4,hP,6,3)(5,gP,4,2),j(6,_P,4,3,`span`,48),N(7,vP,2,1,`span`,49,XN),j(9,yP,4,2,`span`,50),j(10,bP,4,3,`span`,51),L()}if(e&2){let e,n,r=t.$implicit,i=W(2),a=q_(r.row);O(),G(`--%NS%depth`,a.depth),K(`selected`,i.selectedId()===a.node.id)(`dir-host`,a.node.kind===`directive`),A(`aria-level`,a.depth+1)(`aria-setsize`,a.setsize)(`aria-posinset`,a.posinset)(`aria-expanded`,a.hasChildren?a.expanded:null)(`aria-selected`,i.selectedId()===a.node.id)(`tabindex`,i.tabStop()===a.node.id?0:-1)(`data-vindex`,r.index)(`data-id`,a.node.id),O(),M(a.hasChildren?2:3),O(2),M(a.node.kind===`directive`?4:5),O(2),M((e=a.node.hydration)?6:-1,e),O(),P(i.routedById().get(a.node.id)??X_(20,qN)),O(2),M((n=i.cdHosts()[a.node.id])?9:-1,n),O(),M(a.node.kind!==`directive`&&a.node.directives?.length?10:-1)}}function SP(e,t){if(e&1&&(I(0,`li`,66),q(1),L()),e&2){let e=t.$implicit;O(),J(e)}}function CP(e,t){if(e&1){let e=V();I(0,`div`,68)(1,`button`,44),H(`click`,function(){let t=w(e);return T(W(3).reveal(t.id,!0))}),q(2),L()()}e&2&&(O(2),Y(` Show `,t.name,` `))}function wP(e,t){if(e&1&&(I(0,`section`,29)(1,`header`,59)(2,`span`,60),q(3,`directive host`),L(),I(4,`h2`,61),q(5),L(),I(6,`span`,62),q(7),L()(),I(8,`div`,63)(9,`h3`),q(10,` Directives `),I(11,`span`,64),q(12),L()(),I(13,`ul`,65),N(14,SP,2,1,`li`,66,ZN),L()(),I(16,`div`,63)(17,`p`,67),q(18,` This element hosts directives but no component. Their inputs are bound in the template of the component that renders it. `),L(),j(19,CP,3,1,`div`,68),L()()),e&2){let e,n=t,r=W(2);O(5),Y(`<`,n.tag,`>`),O(2),J(r.hostLabel(n)),O(5),J(n.directives?.length??0),O(2),P(n.directives??X_(4,qN)),O(5),M((e=r.ownerOf(n.id))?19:-1,e)}}function TP(e,t){if(e&1&&(I(0,`p`,69),R(1,`app-source-link`,73),L()),e&2){let e=t;O(),F(`file`,e.file)(`line`,e.line)}}function EP(e,t){if(e&1){let e=V();I(0,`div`,74)(1,`button`,44),H(`click`,function(){w(e);let t=W();return T(W(2).revealInElements(t))}),q(2,`Reveal in Elements`),L(),I(3,`button`,44),H(`click`,function(){w(e);let t=W();return T(W(2).openSource(t))}),q(4,`Open source`),L()(),I(5,`p`,75),q(6),L()}if(e&2){let e=W(3);O(6),J(e.actionMessage())}}function DP(e,t){if(e&1){let e=V();I(0,`button`,77),H(`click`,function(){let t=w(e).$implicit;return T(W(5).showForm.emit(t.formId))}),q(1),L()}if(e&2){let e=t.$implicit;O(),Y(` Show `,e.label,` in Forms `)}}function OP(e,t){if(e&1&&(I(0,`div`,70),N(1,DP,2,1,`button`,76,QN),L()),e&2){let e=W(),t=W(3);O(),P(t.formsIn(e.file))}}function kP(e,t){e&1&&j(0,OP,3,0,`div`,70),e&2&&M(W(3).formsIn(t.file).length?0:-1)}function AP(e,t){if(e&1){let e=V();I(0,`div`,70)(1,`button`,44),H(`click`,function(){w(e);let t=W();return T(W(2).openInjector(t))}),q(2,` Show in Injectors `),I(3,`span`,24),q(4),L()()()}if(e&2){let e=W();O(4),Y(`: `,e.name)}}function jP(e,t){if(e&1&&R(0,`app-store-global`,71),e&2){let e=W(),t=W(2);F(`rpc`,t.rpc())(`pageId`,t.page()?.pageId)(`target`,Z_(4,JN,e.id))(`label`,e.name)}}function MP(e,t){if(e&1&&(I(0,`dt`),q(1,`Routed`),L(),I(2,`dd`,79),q(3),L()),e&2){let e=t.$implicit;O(3),X(``,e.route||`/`,` in outlet `,e.outlet)}}function NP(e,t){if(e&1&&(I(0,`span`,11),q(1),L()),e&2){let e=W(4);O(),X(``,e.shownValues()?.count??0,` of `,e.valueTotal())}}function PP(e,t){if(e&1){let e=V();I(0,`div`,83)(1,`p`,42),q(2),L(),I(3,`p`,43),q(4,` The filter searches names, and the nested keys of values you opened. `),L(),I(5,`button`,44),H(`click`,function(){return w(e),T(W(5).clearPropFilter())}),q(6,`Clear filter`),L()()}if(e&2){let e=W(5);O(2),Y(` No inputs, outputs or properties match “`,e.propFilter().trim(),`” `)}}function FP(e,t){if(e&1&&(I(0,`span`,87),q(1),L()),e&2){let e=W().$implicit;O(),Y(`(`,e.prop,`)`)}}function IP(e,t){if(e&1&&(I(0,`li`,85)(1,`span`,86),q(2),j(3,FP,2,1,`span`,87),L(),R(4,`app-value-tree`,88),L()),e&2){let e=t.$implicit,n=W(4),r=W(3);O(2),Y(` `,e.name,` `),O(),M(e.prop===e.name?-1:3),O(),F(`prop`,e)(`store`,r.values)(`query`,r.propFilter())(`componentId`,n.id)(`pageId`,r.page()?.pageId??null)(`rpc`,r.rpc())(`writes`,r.canEdit())}}function LP(e,t){if(e&1&&(I(0,`ul`,84),N(1,IP,5,9,`li`,85,eP),L()),e&2){let e=W(2);O(),P(e.inputs)}}function RP(e,t){e&1&&(I(0,`p`,67),q(1,`No inputs.`),L())}function zP(e,t){if(e&1&&(I(0,`div`,63)(1,`h3`),q(2,` Inputs `),I(3,`span`,64),q(4),L()(),j(5,LP,3,0,`ul`,84)(6,RP,2,0,`p`,67),L()),e&2){let e=W();O(4),J(e.inputs.length),O(),M(e.inputs.length?5:6)}}function BP(e,t){if(e&1&&(I(0,`li`,90)(1,`span`,79),q(2),L(),I(3,`span`,91),q(4),L()()),e&2){let e=t.$implicit;K(`on`,e.listened),O(2),J(e.name),O(2),J(e.listened?`listened`:`no listener`)}}function VP(e,t){if(e&1&&(I(0,`ul`,65),N(1,BP,5,4,`li`,89,eP),L()),e&2){let e=W(2);O(),P(e.outputs)}}function HP(e,t){e&1&&(I(0,`p`,67),q(1,`No outputs.`),L())}function UP(e,t){if(e&1&&(I(0,`div`,63)(1,`h3`),q(2,` Outputs `),I(3,`span`,64),q(4),L()(),j(5,VP,3,0,`ul`,65)(6,HP,2,0,`p`,67),L()),e&2){let e=W();O(4),J(e.outputs.length),O(),M(e.outputs.length?5:6)}}function WP(e,t){if(e&1&&(I(0,`span`,92),q(1),L()),e&2){let e=W().$implicit;O(),J(e.kind)}}function GP(e,t){if(e&1&&(I(0,`li`,85)(1,`span`,86),q(2),j(3,WP,2,1,`span`,92),L(),R(4,`app-value-tree`,88),L()),e&2){let e=t.$implicit,n=W(4),r=W(3);O(2),Y(` `,e.name,` `),O(),M(e.kind?3:-1),O(),F(`prop`,e)(`store`,r.values)(`query`,r.propFilter())(`componentId`,n.id)(`pageId`,r.page()?.pageId??null)(`rpc`,r.rpc())(`writes`,r.canEdit())}}function KP(e,t){if(e&1&&(I(0,`ul`,84),N(1,GP,5,9,`li`,85,eP),L()),e&2){let e=W(2);O(),P(e.properties)}}function qP(e,t){e&1&&(I(0,`p`,67),q(1,`No other properties.`),L())}function JP(e,t){if(e&1&&(I(0,`div`,63)(1,`h3`),q(2,` Properties `),I(3,`span`,64),q(4),L()(),j(5,KP,3,0,`ul`,84)(6,qP,2,0,`p`,67),L()),e&2){let e=W();O(4),J(e.properties.length),O(),M(e.properties.length?5:6)}}function YP(e,t){if(e&1&&(I(0,`li`,66),q(1),L()),e&2){let e=t.$implicit;O(),J(e)}}function XP(e,t){if(e&1&&(I(0,`div`,63)(1,`h3`),q(2,` DOM listeners `),I(3,`span`,64),q(4),L()(),I(5,`ul`,65),N(6,YP,2,1,`li`,66,fg),L()()),e&2){let e=W(2);O(4),J(e.listeners.length),O(2),P(e.listeners)}}function ZP(e,t){if(e&1&&(I(0,`li`,85)(1,`span`,86),q(2),L(),R(3,`app-value-tree`,93),L()),e&2){let e=t.$implicit,n=W(2).$implicit,r=W(2),i=W(3);O(2),J(e.name),O(),F(`prop`,e)(`store`,i.values)(`query`,i.propFilter())(`directive`,n.index)(`componentId`,r.id)(`pageId`,i.page()?.pageId??null)(`rpc`,i.rpc())}}function QP(e,t){if(e&1&&(I(0,`ul`,84),N(1,ZP,4,8,`li`,85,eP),L()),e&2){let e=W().$implicit;O(),P(e.inputs)}}function $P(e,t){if(e&1&&(I(0,`li`,90)(1,`span`,79),q(2),L(),I(3,`span`,91),q(4),L()()),e&2){let e=t.$implicit;K(`on`,e.listened),O(2),J(e.name),O(2),J(e.listened?`listened`:`no listener`)}}function eF(e,t){if(e&1&&(I(0,`ul`,65),N(1,$P,5,4,`li`,89,eP),L()),e&2){let e=W().$implicit;O(),P(e.outputs)}}function tF(e,t){e&1&&(I(0,`p`,67),q(1,`No inputs or outputs.`),L())}function nF(e,t){if(e&1&&(I(0,`div`,63)(1,`h3`)(2,`span`,79),q(3),L(),I(4,`span`,92),q(5,`directive on host`),L()(),j(6,QP,3,0,`ul`,84),j(7,eF,3,0,`ul`,65),j(8,tF,2,0,`p`,67),L()),e&2){let e=t.$implicit;O(3),J(e.name),O(3),M(e.inputs.length?6:-1),O(),M(e.outputs.length?7:-1),O(),M(!e.inputs.length&&!e.outputs.length?8:-1)}}function rF(e,t){if(e&1&&(j(0,PP,7,1,`div`,83),j(1,zP,7,2,`div`,63),j(2,UP,7,2,`div`,63),j(3,JP,7,2,`div`,63),j(4,XP,8,1,`div`,63),N(5,nF,9,4,`div`,63,$N)),e&2){let e=t,n=W(),r=W(3);M(r.propQuery()&&!e.count?0:-1),O(),M(!r.propQuery()||e.inputs.length?1:-1),O(),M(!r.propQuery()||e.outputs.length?2:-1),O(),M(!r.propQuery()||e.properties.length?3:-1),O(),M(!r.propQuery()&&n.listeners.length?4:-1),O(),P(e.directives)}}function iF(e,t){if(e&1&&(I(0,`span`,92),q(1),L()),e&2){let e=t.$implicit;O(),J(e)}}function aF(e,t){if(e&1&&(I(0,`span`,96),q(1,`from `),I(2,`span`,79),q(3),L()()),e&2){let e=W().$implicit;O(3),J(e.providedByName??`an injector`)}}function oF(e,t){e&1&&(I(0,`span`,97),q(1,`not provided`),L())}function sF(e,t){if(e&1&&(I(0,`li`,94)(1,`span`,95),q(2),L(),N(3,iF,2,1,`span`,92,fg),j(5,aF,4,1,`span`,96)(6,oF,2,0,`span`,97),L()),e&2){let e=t.$implicit;O(2),J(e.token),O(),P(e.flags),O(2),M(e.providedBy?5:6)}}function cF(e,t){if(e&1&&(I(0,`ul`,82),N(1,sF,7,2,`li`,94,tP),L()),e&2){let e=W();O(),P(e.dependencies)}}function lF(e,t){e&1&&(I(0,`p`,67),q(1,`Nothing is injected through the constructor or inject().`),L())}function uF(e,t){if(e&1){let e=V();I(0,`dl`,78)(1,`dt`),q(2,`Change detection`),L(),I(3,`dd`),q(4),L(),I(5,`dt`),q(6,`Encapsulation`),L(),I(7,`dd`),q(8),L(),I(9,`dt`),q(10,`Host path`),L(),I(11,`dd`,79),q(12),L(),N(13,MP,4,2,null,null,XN),L(),I(15,`div`,80)(16,`div`,5),E(),I(17,`svg`,6),R(18,`circle`,7)(19,`path`,8),L(),ss(),I(20,`input`,81,2),H(`input`,function(t){return w(e),T(W(3).propFilter.set(t.target.value))})(`keydown.escape`,function(t){return w(e),T(W(3).clearPropFilter(t))}),L()(),j(22,NP,2,2,`span`,11),I(23,`p`,20),q(24),L()(),j(25,rF,7,5),I(26,`div`,63)(27,`h3`),q(28,` Injected `),I(29,`span`,64),q(30),L()(),j(31,cF,3,0,`ul`,82)(32,lF,2,0,`p`,67),L()}if(e&2){let e,n=t,r=W(),i=W(2);O(4),J(n.changeDetection??`Unknown`),O(4),J(n.encapsulation??`Unknown`),O(4),J(n.path),O(),P(i.routedById().get(r.id)??X_(9,qN)),O(7),F(`value`,i.propFilter()),O(2),M(i.propQuery()?22:-1),O(2),J(i.propFilterStatus()),O(),M((e=i.shownValues())?25:-1,e),O(5),J(n.dependencies.length),O(),M(n.dependencies.length?31:32)}}function dF(e,t){e&1&&(I(0,`div`,72),R(1,`span`,98),I(2,`p`,43),q(3,`Reading live values from the page…`),L()())}function fF(e,t){if(e&1&&(I(0,`section`,29)(1,`header`,59)(2,`span`,60),q(3,`component`),L(),I(4,`h2`,61),q(5),L(),I(6,`span`,62),q(7),L(),j(8,TP,2,2,`p`,69),j(9,EP,7,1),j(10,kP,1,1),j(11,AP,5,1,`div`,70),j(12,jP,1,6,`app-store-global`,71),L(),j(13,uF,33,10)(14,dF,4,0,`div`,72),L()),e&2){let e,n,r,i=t,a=W(2);O(5),J(i.name),O(2),Y(`<`,i.tag,`>`),O(),M((e=a.whereOf(i))?8:-1,e),O(),M(a.devtoolsActions()?9:-1),O(),M((n=a.sourceFor(i))?10:-1,n),O(),M(a.canShowInjector()&&!a.staticReport()?11:-1),O(),M(!a.staticReport()&&!a.native()?12:-1),O(),M((r=a.detail())?13:14,r)}}function pF(e,t){e&1&&(I(0,`p`,42),q(1,`The selected component was destroyed`),L(),I(2,`p`,43)(3,`span`,79),q(4),L(),q(5,` is no longer on the page. Select another component to see its live values. `),L()),e&2&&(O(4),J(t))}function mF(e,t){e&1&&(I(0,`p`,43),q(1,` Select a component to see its live inputs, properties, outputs, change detection and injected services. `),L())}function hF(e,t){if(e&1&&(I(0,`div`,30),j(1,pF,6,1)(2,mF,2,0,`p`,43),L()),e&2){let e,t=W(2);O(),M((e=t.destroyed())?1:2,e)}}function gF(e,t){e&1&&(I(0,`span`,92),q(1,`hydrate never`),L())}function _F(e,t){if(e&1&&(I(0,`span`,92),q(1),L()),e&2){let e=W().$implicit;O(),J(e.hydration)}}function vF(e,t){if(e&1){let e=V();I(0,`li`)(1,`button`,101),H(`click`,function(){let t=w(e).$implicit;return T(W(3).showOwner(t))})(`focus`,function(){let t=w(e).$implicit;return T(W(3).highlightBlock(t))})(`blur`,function(){return w(e),T(W(3).highlight(null))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(3).highlightBlock(t))})(`mouseleave`,function(){return w(e),T(W(3).highlight(null))}),I(2,`span`,57),q(3),L(),I(4,`span`,102),q(5),L(),j(6,gF,2,0,`span`,92)(7,_F,2,1,`span`,92),I(8,`span`,103),q(9),L()()()}if(e&2){let e=t.$implicit;O(),A(`aria-disabled`,e.owner?null:`true`),O(2),J(e.owner?.name??`Unknown component`),O(),m_(`defer-state-`+e.state),O(),J(e.state),O(),M(e.hydrateNever?6:e.hydration===`not-configured`?-1:7),O(3),J(e.triggers.join(`, `)||`no triggers`)}}function yF(e,t){if(e&1&&(I(0,`section`,31)(1,`h2`,99),q(2,` Defer blocks `),I(3,`span`,64),q(4),L()(),I(5,`ul`,100),N(6,vF,10,7,`li`,null,nP),L()()),e&2){let e=W(2);O(4),J(e.deferCount()),O(2),P(e.deferBlocks())}}function bF(e,t){e&1&&R(0,`app-angular-unavailable`,32),e&2&&F(`page`,W(2).angularPage())}function xF(e,t){if(e&1){let e=V();I(0,`app-hydration-section`,104),H(`overlay`,function(t){return w(e),T(W(2).setHydrationOverlay(t))})(`showNode`,function(t){return w(e),T(W(2).revealNode(t))})(`highlight`,function(t){return w(e),T(W(2).highlight(t))}),L()}e&2&&F(`report`,W(2).page()?.hydration)}function SF(e,t){if(e&1){let e=V();I(0,`app-cd-recording`,105),H(`showComponent`,function(t){return w(e),T(W(2).showCdComponent(t))}),L(),I(1,`app-leaks-section`,106),H(`showComponent`,function(t){return w(e),T(W(2).showLeakComponent(t))})(`highlight`,function(t){return w(e),T(W(2).highlight(t))}),L()}if(e&2){let e=W(2);F(`page`,e.cdPage())(`pageId`,e.page().pageId)(`rpc`,e.rpc())(`native`,e.native()),O(),F(`report`,e.leaksPage())(`pageId`,e.page().pageId)(`rpc`,e.rpc())(`angular`,e.angularPage())}}function CF(e,t){if(e&1){let e=V();I(0,`p`,3),q(1,` Every component instance on the page, in the order Angular rendered them. Hover a row to highlight its host in the page, and select it to read its live inputs, properties, outputs and injected services. `),L(),I(2,`div`,4)(3,`div`,5),E(),I(4,`svg`,6),R(5,`circle`,7)(6,`path`,8),L(),ss(),I(7,`input`,9,0),H(`input`,function(t){return w(e),T(W().setFilter(t.target.value))})(`keydown.escape`,function(){return w(e),T(W().setFilter(``))}),L(),I(9,`span`,10),q(10,` Type plain text, a tag such as