diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7776f178..3867870e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,14 +96,16 @@ jobs: run: pnpm test:axe # The e2e jobs below are slow, so they run only when the package, the panel, the SSR demo, the - # tools docs (e2e:mcp reads them) or the scripts and fixtures they use change. A diff that cannot - # be computed (a new branch, a force push) runs them. + # tools docs (e2e:mcp reads them) or the scripts and fixtures they use change. The engines-floor + # job runs only when what the packed package is built from changes. A diff that cannot be + # computed (a new branch, a force push) runs them all. changes: name: Changed paths runs-on: ubuntu-latest timeout-minutes: 5 outputs: e2e: ${{ steps.diff.outputs.e2e }} + package: ${{ steps.diff.outputs.package }} steps: - uses: actions/checkout@v7 with: @@ -121,6 +123,61 @@ jobs: else echo "e2e=true" >> "$GITHUB_OUTPUT" fi + # What the packed package is built from: the package, the panel it bundles and the toolchain. + packed=(packages/devtools app package.json pnpm-lock.yaml pnpm-workspace.yaml .nvmrc + .github/actions/setup .github/workflows/ci.yml) + if git diff --quiet "$BASE" HEAD -- "${packed[@]}"; then + echo "package=false" >> "$GITHUB_OUTPUT" + else + echo "package=true" >> "$GITHUB_OUTPUT" + fi + + # The source tests can't run on 22.12 (Node runs .ts files only from 22.18, and the build tools + # need newer versions), so this job checks the packed package there instead. + engines-floor: + name: Packed package on Node.js 22.12 + needs: changes + if: needs.changes.outputs.package == 'true' + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v7 + with: + persist-credentials: false + + - uses: ./.github/actions/setup + + # `prepack` builds the library and the panel first, on the `.nvmrc` version. + - name: Pack the package + run: pnpm --filter @pangular-inspector/devtools pack --pack-destination "$RUNNER_TEMP/pack" + + # The engines floor: the lowest version `engines.node` in packages/devtools/package.json allows. + # Keep the two in step. + - uses: actions/setup-node@v7 + with: + node-version: 22.12.0 + + - name: Install the tarball into an empty project + working-directory: ${{ runner.temp }} + run: | + mkdir floor + cd floor + npm init -y > /dev/null + npm install --no-audit --no-fund "$RUNNER_TEMP"/pack/*.tgz + + # The Node.js entry points from `exports` in packages/devtools/package.json. The browser + # entries (overlay, popup and the hooks) need a DOM. `http` is left out too: it imports + # the optional Angular peers, which load in plain Node.js only with `@angular/compiler` + # (JIT), and the app's build bundles it. + - name: Run the CLI and load the entry points + working-directory: ${{ runner.temp }}/floor + run: | + node --version + npx pangular --version + for entry in '' /devframe /config /cli /hub /ssr /vite; do + node -e "import('@pangular-inspector/devtools$entry')" + done + node -e "require('@pangular-inspector/devtools/hub')" e2e-security: name: Security e2e diff --git a/app/src/__tests__/analog-inspector-pages.test.ts b/app/src/__tests__/analog-inspector-pages.test.ts index 925e7b9c..f960edf1 100644 --- a/app/src/__tests__/analog-inspector-pages.test.ts +++ b/app/src/__tests__/analog-inspector-pages.test.ts @@ -110,3 +110,41 @@ describe('Analog route filter', () => { expect(box.value).toBe(''); }); }); + +describe('Analog open pages', () => { + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('marks pages in named outlets with the outlet name', async () => { + const route = (file: string) => ({ + id: file, + fullPath: '/', + file, + kind: 'page' as const, + params: [], + children: [], + }); + const fixture = await render( + client({ + state: { + pages: [ + { + pageId: 'A', + url: '/inbox(sidebar:chat)', + chain: [ + { path: '/inbox', file: '/src/app/pages/inbox.page.ts' }, + { path: '/chat', file: '/src/app/pages/chat.page.ts', outlet: 'sidebar' }, + ], + }, + ], + }, + }), + ); + const inspector = fixture.componentInstance; + expect(inspector.openText(route('/src/app/pages/inbox.page.ts'))).toBe('open'); + expect(inspector.isOpen(route('/src/app/pages/chat.page.ts'))).toBe(true); + expect(inspector.openText(route('/src/app/pages/chat.page.ts'))).toBe('open in sidebar'); + expect(inspector.isOpen(route('/src/app/pages/about.page.ts'))).toBe(false); + }); +}); diff --git a/app/src/__tests__/app-shell.test.ts b/app/src/__tests__/app-shell.test.ts index 171ecc21..11a335dd 100644 --- a/app/src/__tests__/app-shell.test.ts +++ b/app/src/__tests__/app-shell.test.ts @@ -305,4 +305,18 @@ describe('App tab bar', () => { expect(now.filter((b) => b.tabIndex === 0)).toEqual([now[2]]); fixture.destroy(); }); + + it('puts the scrolling content in the Tab order with a name, and still focuses it from code', async () => { + connection.answers = [true]; + const fixture = TestBed.createComponent(App); + document.body.appendChild(host(fixture)); + await settle(fixture); + + const main = host(fixture).querySelector('main')!; + expect(main.tabIndex).toBe(0); + expect(main.getAttribute('aria-label')).toBeTruthy(); + main.focus(); + expect(document.activeElement).toBe(main); + fixture.destroy(); + }); }); diff --git a/app/src/__tests__/cd-recording-status.test.ts b/app/src/__tests__/cd-recording-status.test.ts index 085e56fd..9453a9bf 100644 --- a/app/src/__tests__/cd-recording-status.test.ts +++ b/app/src/__tests__/cd-recording-status.test.ts @@ -74,10 +74,13 @@ describe('CdRecording status', () => { pageId: 'p1', on: true, }); - expect(live()).toBe('Recording started.'); + // The server took the request; the page has not said it records yet. + expect(live()).not.toContain('started'); + expect(visible()).toBe('Starting…'); await show(true, 3); expect(live()).toBe('Recording started.'); + expect(visible()).toBe('Recording. 3 cycles so far.'); await click('Stop recording'); // The page's last report still brings cycles: the total waits for it. @@ -89,20 +92,51 @@ describe('CdRecording status', () => { expect(live()).toBe('Cleared the recorded cycles.'); }); - it('announces the count it has when the last report does not come', async () => { - await show(true, 2); + /** Clicks with fake timers, so the confirmation wait can run out. */ + async function clickAndWait(text: string, ms: number) { vi.useFakeTimers({ toFake: ['setTimeout', 'clearTimeout'] }); try { - button('Stop recording').click(); + button(text).click(); await vi.advanceTimersByTimeAsync(0); fixture.detectChanges(); - expect(live()).not.toContain('stopped'); - await vi.advanceTimersByTimeAsync(3000); + const before = live(); + await vi.advanceTimersByTimeAsync(ms); fixture.detectChanges(); - expect(live()).toBe('Recording stopped. 2 cycles recorded.'); + return before; } finally { vi.useRealTimers(); } + } + + it('says the page did not confirm when no report shows the recording on', async () => { + const before = await clickAndWait('Record', 3000); + expect(before).not.toContain('started'); + const failed = + 'The page did not confirm that the recording started. The tab may be in the background, closed or reloading.'; + expect(live()).toBe(failed); + expect(visible()).toBe(failed); + // The page still reports no recording, so the button still offers Record. + expect(button('Record')).toBeTruthy(); + expect(button('Stop recording')).toBeUndefined(); + }); + + it('announces the start once a late report confirms it', async () => { + await clickAndWait('Record', 3000); + expect(live()).toContain('did not confirm'); + await show(true, 1); + expect(live()).toBe('Recording started.'); + expect(visible()).toBe('Recording. 1 cycle so far.'); + expect(button('Stop recording')).toBeTruthy(); + }); + + it('says the page did not confirm when the report after Stop does not come', async () => { + await show(true, 2); + const before = await clickAndWait('Stop recording', 3000); + expect(before).not.toContain('stopped'); + expect(live()).toBe( + 'The page did not confirm that the recording stopped. The tab may be in the background, closed or reloading.', + ); + expect(button('Stop recording')).toBeTruthy(); }); it('announces a repeated message again', async () => { diff --git a/app/src/__tests__/component-tree-defer.test.ts b/app/src/__tests__/component-tree-defer.test.ts index 293f9147..3e3b2871 100644 --- a/app/src/__tests__/component-tree-defer.test.ts +++ b/app/src/__tests__/component-tree-defer.test.ts @@ -1,11 +1,14 @@ import { TestBed } from '@angular/core/testing'; import type { DevframeRpcClient } from 'devframe/client'; -import { afterEach, describe, expect, it } from 'vitest'; +import { afterEach, describe, expect, it, vi } from 'vitest'; import { ComponentTree } from '../pages/component-tree'; -function client(pages: Record): DevframeRpcClient { +function client( + pages: Record, + call: (...args: unknown[]) => Promise = () => Promise.resolve([]), +): DevframeRpcClient { const rpc = { - call: () => Promise.resolve([]), + call, callEvent: () => Promise.resolve(), sharedState: (name: string) => Promise.resolve({ @@ -19,6 +22,7 @@ function client(pages: Record): DevframeRpcClient { describe('defer blocks', () => { afterEach(() => { document.body.innerHTML = ''; + vi.useRealTimers(); }); it('style the state badge apart from the empty-state box', async () => { @@ -120,4 +124,111 @@ describe('defer blocks', () => { expect(await pill(page())).toBe('2'); expect(await pill(page(true))).toBe('2+'); }); + + it('shows the notes the agent tool prints, the @error block and the block times', async () => { + const hour = 3_600_000; + // Fix the panel clock so the ages stay exact; timers stay real for the waits. + vi.useFakeTimers({ toFake: ['Date'] }); + vi.setSystemTime(1_700_000_000_000); + // The page's clock runs an hour ahead of the panel's. + const pageNow = Date.now() + hour; + const block = (id: string, extra: Record) => ({ + id, + owner: { id: 'c1', name: 'App', tag: 'app-root' }, + state: 'complete', + hydration: 'not-configured', + triggers: ['on idle'], + rootIds: [], + since: pageNow, + hasErrorBlock: false, + ...extra, + }); + const page = { + pageId: 'p1', + roots: [{ id: 'c1', name: 'App', tag: 'app-root', children: [] }], + count: 1, + detail: null, + reportedAt: 1000, + clockOffset: -hour, + deferBlocks: [ + block('d1', { state: 'error', hasErrorBlock: true }), + block('d2', { state: 'placeholder', since: pageNow - 30_000 }), + block('d3', { state: 'placeholder', since: pageNow - 2_000 }), + block('d4', { hydration: 'dehydrated', triggers: ['hydrate on viewport'] }), + block('d5', { + state: 'loading', + loading: { minimumTime: 1000, afterTime: 100 }, + placeholder: { minimumTime: 500 }, + }), + ], + }; + const fixture = TestBed.createComponent(ComponentTree); + fixture.componentRef.setInput('rpc', client({ p1: page })); + for (let i = 0; i < 3; i++) { + await new Promise((resolve) => setTimeout(resolve)); + await fixture.whenStable(); + } + const rows = Array.from( + (fixture.nativeElement as HTMLElement).querySelectorAll('.defer-row'), + ); + const flags = (row: HTMLElement) => + Array.from(row.querySelectorAll('.flag')).map((el) => el.textContent?.trim()); + expect(flags(rows[0]!)).toEqual(['failed', '@error block']); + expect(rows[0]!.querySelector('.note-failed')?.getAttribute('title')).toBe('failed to load'); + // 30 s on the page's clock, not an hour and 30 s. + expect(flags(rows[1]!)).toEqual(['stuck 30s']); + expect(rows[1]!.querySelector('.note-stuck')?.getAttribute('title')).toBe( + 'on its placeholder for 30s', + ); + expect(flags(rows[2]!)).toEqual([]); + expect(flags(rows[3]!)).toEqual(['dehydrated']); + expect(rows[4]!.querySelector('.timings')?.textContent?.trim()).toBe( + 'placeholder min 500ms · loading after 100ms, min 1s', + ); + expect(rows[0]!.querySelector('.timings')).toBeNull(); + fixture.destroy(); + }); + + it('highlights every root element of a block in one request', async () => { + const call = vi.fn((..._args: unknown[]) => Promise.resolve([] as unknown)); + const block = (id: string, rootIds: string[]) => ({ + id, + owner: { id: 'c1', name: 'App', tag: 'app-root' }, + state: 'complete', + hydration: 'not-configured', + triggers: [], + rootIds, + }); + const page = { + pageId: 'p1', + roots: [{ id: 'c1', name: 'App', tag: 'app-root', children: [] }], + count: 1, + detail: null, + reportedAt: 1000, + deferBlocks: [block('d1', ['e1', 'e2']), block('d2', ['e3']), block('d3', [])], + }; + const fixture = TestBed.createComponent(ComponentTree); + fixture.componentRef.setInput('rpc', client({ p1: page }, call)); + for (let i = 0; i < 3; i++) { + await new Promise((resolve) => setTimeout(resolve)); + await fixture.whenStable(); + } + const rows = (fixture.nativeElement as HTMLElement).querySelectorAll('.defer-row'); + const highlights = () => + call.mock.calls.filter((args) => args[0] === 'request-page-highlight').map((args) => args[1]); + call.mockClear(); + for (const row of Array.from(rows)) { + row.dispatchEvent(new Event('mouseenter')); + row.dispatchEvent(new Event('mouseleave')); + } + expect(highlights()).toEqual([ + { pageId: 'p1', ids: ['e1', 'e2'] }, + null, + { pageId: 'p1', id: 'e3' }, + null, + { pageId: 'p1', id: 'c1' }, + null, + ]); + fixture.destroy(); + }); }); diff --git a/app/src/__tests__/defer-blocks-timer.test.ts b/app/src/__tests__/defer-blocks-timer.test.ts new file mode 100644 index 00000000..df862f65 --- /dev/null +++ b/app/src/__tests__/defer-blocks-timer.test.ts @@ -0,0 +1,71 @@ +import { TestBed } from '@angular/core/testing'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { DeferBlocksSection, type DeferBlock } from '../pages/defer-blocks-section'; + +const block = (id: string, extra: Partial = {}): DeferBlock => ({ + id, + owner: { id: 'c1', name: 'App', tag: 'app-root' }, + state: 'complete', + hydration: 'not-configured', + triggers: ['on idle'], + rootIds: [], + since: Date.now(), + ...extra, +}); + +describe('Defer blocks timer', () => { + beforeEach(() => vi.useFakeTimers()); + afterEach(() => { + vi.useRealTimers(); + TestBed.resetTestingModule(); + }); + + function render(blocks: DeferBlock[]) { + const fixture = TestBed.createComponent(DeferBlocksSection); + fixture.componentRef.setInput('blocks', blocks); + fixture.detectChanges(); + return fixture; + } + + it('runs only while a block is on its placeholder', () => { + const fixture = render([]); + expect(vi.getTimerCount()).toBe(0); + fixture.componentRef.setInput('blocks', [block('d1')]); + fixture.detectChanges(); + expect(vi.getTimerCount()).toBe(0); + fixture.componentRef.setInput('blocks', [block('d1', { state: 'placeholder' })]); + fixture.detectChanges(); + expect(vi.getTimerCount()).toBe(1); + fixture.componentRef.setInput('blocks', [block('d1')]); + fixture.detectChanges(); + expect(vi.getTimerCount()).toBe(0); + fixture.componentRef.setInput('blocks', [block('d1', { state: 'initial' })]); + fixture.detectChanges(); + expect(vi.getTimerCount()).toBe(1); + fixture.destroy(); + expect(vi.getTimerCount()).toBe(0); + }); + + it('counts the age up without changing the row name', () => { + const fixture = render([block('d1', { state: 'placeholder', since: Date.now() - 30_000 })]); + const row = () => (fixture.nativeElement as HTMLElement).querySelector('.defer-row')!; + /** The text a screen reader takes the name from: everything not aria-hidden. */ + const name = () => { + const copy = row().cloneNode(true) as HTMLElement; + copy.querySelectorAll('[aria-hidden="true"]').forEach((el) => el.remove()); + return copy.textContent!.replace(/\s+/g, ' ').trim(); + }; + const before = name(); + expect(before).toContain('stuck'); + expect(row().querySelector('.note-stuck')!.textContent!.replace(/\s+/g, ' ').trim()).toBe( + 'stuck 30s', + ); + vi.advanceTimersByTime(5000); + fixture.detectChanges(); + expect(row().querySelector('.note-stuck')!.textContent!.replace(/\s+/g, ' ').trim()).toBe( + 'stuck 35s', + ); + expect(name()).toBe(before); + fixture.destroy(); + }); +}); diff --git a/app/src/__tests__/forms-panels.test.ts b/app/src/__tests__/forms-panels.test.ts index fce2eda9..f9869d41 100644 --- a/app/src/__tests__/forms-panels.test.ts +++ b/app/src/__tests__/forms-panels.test.ts @@ -20,6 +20,15 @@ function fakeClient(call: Call, forms: CollectedForm[] = []): DevframeRpcClient return { connectionMeta: {}, scope: () => ({ rpc }) } as unknown as DevframeRpcClient; } +function stateClient(snapshot: Record): DevframeRpcClient { + const rpc = { + call: () => Promise.resolve(''), + callEvent: () => Promise.resolve(), + sharedState: () => Promise.resolve({ value: () => snapshot, on: () => () => {} }), + }; + return { connectionMeta: {}, scope: () => ({ rpc }) } as unknown as DevframeRpcClient; +} + const fail: Call = () => Promise.reject(new Error('offline')); function field(path: string, extra: Partial = {}): FormFieldNode { @@ -741,6 +750,148 @@ describe('FormsWebMcp', () => { }); }); +describe('FormsInspector WebMCP tools not linked to a form', () => { + const unlinked = { + name: 'search_flights', + description: 'Find flights', + status: 'registered' as const, + seen: 'register' as const, + inputs: ['from: string'], + required: ['from'], + }; + + afterEach(() => scopeToPage(null)); + + it('lists them in their own section, with what the per-form block shows', async () => { + const fixture = TestBed.createComponent(FormsInspector); + fixture.componentRef.setInput( + 'rpc', + stateClient({ + forms: [form], + webMcp: [{ pageId: 'p1', modelContext: true, tools: [unlinked] }], + }), + ); + document.body.append(fixture.nativeElement); + await settle(fixture); + const host = fixture.nativeElement as HTMLElement; + const section = host.querySelector('app-forms-webmcp-others section')!; + expect(section.querySelector('h2')?.textContent).toContain('Other WebMCP tools'); + expect(section.textContent).toContain('search_flights'); + expect(section.textContent).toContain('Find flights'); + expect(section.querySelector('.inputs li')?.textContent).toContain('required'); + expect(section.textContent).toContain('No agent has called this tool'); + }); + + it('shows them when the page has no form, and gives each tool a unique name', async () => { + const fixture = TestBed.createComponent(FormsInspector); + fixture.componentRef.setInput( + 'rpc', + stateClient({ + webMcp: [ + { + pageId: 'p1', + modelContext: true, + tools: [unlinked, { ...unlinked, name: 'book_hotel', inputs: undefined }], + }, + ], + }), + ); + document.body.append(fixture.nativeElement); + await settle(fixture); + const host = fixture.nativeElement as HTMLElement; + expect(text(fixture)).toContain('No forms on the page yet'); + const tools = Array.from(host.querySelectorAll('app-forms-webmcp-others .webmcp')); + expect(tools).toHaveLength(2); + const ids = Array.from(host.querySelectorAll('[id]'), (el) => el.id); + expect(new Set(ids).size).toBe(ids.length); + const names = tools.map((tool) => + tool + .getAttribute('aria-labelledby')! + .split(' ') + .map((id) => host.querySelector(`#${id}`)?.textContent?.trim()) + .join(' '), + ); + expect(names).toEqual(['WebMCP tool search_flights', 'WebMCP tool book_hotel']); + }); + + it('shows nothing when every tool is linked, and only the tools of the page it runs in', async () => { + scopeToPage('p1'); + const fixture = TestBed.createComponent(FormsInspector); + fixture.componentRef.setInput( + 'rpc', + stateClient({ + forms: [form], + webMcp: [ + { pageId: 'p1', modelContext: true, tools: [] }, + { pageId: 'p2', modelContext: true, tools: [unlinked] }, + ], + }), + ); + await settle(fixture); + const host = fixture.nativeElement as HTMLElement; + expect(host.querySelector('app-forms-webmcp-others section')).toBeNull(); + fixture.componentInstance.allPages.set(true); + await settle(fixture); + expect(host.querySelector('app-forms-webmcp-others section')?.textContent).toContain( + 'search_flights', + ); + }); +}); + +describe('FormsInspector setup errors', () => { + afterEach(() => scopeToPage(null)); + + it('lists them in a status notice, even when no form reached the list', async () => { + const fixture = TestBed.createComponent(FormsInspector); + fixture.componentRef.setInput( + 'rpc', + stateClient({ + setupErrors: [ + { pageId: 'p1', message: "NG01203: No value accessor for form control name: 'age'" }, + ], + }), + ); + await settle(fixture); + const notice = (fixture.nativeElement as HTMLElement).querySelector('.setup-errors')!; + expect(notice.getAttribute('role')).toBe('status'); + expect(notice.textContent).toContain('1 forms setup error'); + expect(notice.textContent).toContain('NG01203: No value accessor'); + expect(text(fixture)).toContain('No forms on the page yet'); + }); + + it('shows only the errors of the page it runs in until All pages is checked', async () => { + scopeToPage('p1'); + const fixture = TestBed.createComponent(FormsInspector); + fixture.componentRef.setInput( + 'rpc', + stateClient({ + forms: [form, { ...form, id: 'signup@p2' }], + setupErrors: [ + { pageId: 'p1', message: 'NG01050: one' }, + { pageId: 'p2', message: 'NG01050: two' }, + ], + }), + ); + await settle(fixture); + const host = fixture.nativeElement as HTMLElement; + const notice = () => host.querySelector('.setup-errors')?.textContent ?? ''; + expect(notice()).toContain('NG01050: one'); + expect(notice()).not.toContain('NG01050: two'); + expect(notice()).not.toContain('on page'); + fixture.componentInstance.allPages.set(true); + await settle(fixture); + expect(notice()).toContain('2 forms setup errors'); + expect(notice()).toContain('on page p2'); + }); + + it('shows no notice without setup errors', async () => { + const fixture = TestBed.createComponent(FormsInspector); + fixture.componentRef.setInput('rpc', stateClient({ forms: [form], setupErrors: [] })); + await settle(fixture); + expect((fixture.nativeElement as HTMLElement).querySelector('.setup-errors')).toBeNull(); + }); +}); + describe('FormsInspector selection', () => { it("does not hand a closed tab's selected form over to another tab's form with the same label", async () => { const login = (page: string): CollectedForm => ({ diff --git a/app/src/__tests__/network-hydration-mismatch.test.ts b/app/src/__tests__/network-hydration-mismatch.test.ts new file mode 100644 index 00000000..6185b50d --- /dev/null +++ b/app/src/__tests__/network-hydration-mismatch.test.ts @@ -0,0 +1,58 @@ +import { TestBed, type ComponentFixture } from '@angular/core/testing'; +import type { DevframeRpcClient } from 'devframe/client'; +import { afterEach, describe, expect, it } from 'vitest'; +import { NetworkInspector } from '../pages/network-inspector'; + +const page = { + pageId: 'p1', + url: 'http://localhost:4000/products', + title: 'Products', + hydration: { + enabled: true, + nodes: { hydrated: 10, skipped: 0, mismatched: 2 }, + mismatches: [ + { component: 'ProductCard', isClass: true, expected: '
', actual: '' }, + { component: '#text', expected: 'Price' }, + ], + skipHydrationHosts: [], + warnings: [], + }, + calls: [], + reportedAt: 1, +}; + +function client(): DevframeRpcClient { + const values: Record = { + http: { serverCalls: [], pages: [page], rules: [], ssrOverrides: [] }, + }; + const rpc = { + sharedState: (name: string) => + Promise.resolve({ value: () => values[name], on: () => () => {} }), + }; + return { + connectionMeta: { configs: { pangular: { actions: {} } } }, + scope: () => ({ rpc }), + } as unknown as DevframeRpcClient; +} + +let fixture: ComponentFixture; + +describe('NetworkInspector hydration mismatches', () => { + afterEach(() => { + fixture?.destroy(); + TestBed.resetTestingModule(); + }); + + it('shows a component class as is and a node name in angle brackets', async () => { + fixture = TestBed.createComponent(NetworkInspector); + fixture.componentRef.setInput('rpc', client()); + await fixture.whenStable(); + await new Promise((resolve) => setTimeout(resolve)); + await fixture.whenStable(); + const host = fixture.nativeElement as HTMLElement; + const names = [...host.querySelectorAll('.mismatches > li > code:first-child')].map( + (code) => code.textContent, + ); + expect(names).toEqual(['ProductCard', '<#text>']); + }); +}); diff --git a/app/src/app.ts b/app/src/app.ts index 36e38e11..b4cb2f1c 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -479,7 +479,8 @@ function readView(): View | null { }} -
+ +

{{ backgroundNote() }}

{{ connectedNote() }}

@if (tab() === 'settings') { @@ -961,6 +962,9 @@ function readView(): View | null { main:focus { outline: none; } + main:focus-visible { + @include m.focus-ring(-2px); + } main > * { animation: enter 0.28s var(--ease) both; } diff --git a/app/src/pages/analog-inspector.ts b/app/src/pages/analog-inspector.ts index 456ea53f..3fef1caa 100644 --- a/app/src/pages/analog-inspector.ts +++ b/app/src/pages/analog-inspector.ts @@ -84,7 +84,7 @@ interface AnalogCall { interface AnalogPage { pageId: string; url: string; - chain: { path: string; file?: string; serverFile?: string }[]; + chain: { path: string; file?: string; serverFile?: string; outlet?: string }[]; load?: { preview: string; bytes: number; keys: string[] }; serverContext?: string; hydrated: number; @@ -497,7 +497,7 @@ function walk(routes: AnalogRoute[], depth = 0, out: { route: AnalogRoute; depth kindText(row.route) }} @if (isOpen(row.route)) { - open + {{ openText(row.route) }} }
@@ -2198,7 +2198,15 @@ export class AnalogInspector { const pages = this.state().pages ?? []; return (this.hostPageId ? pages.find((p) => p.pageId === this.hostPageId) : pages[0]) ?? null; }); - readonly openFiles = computed(() => new Set((this.page()?.chain ?? []).map((c) => c.file))); + /** Open page files, mapped to their named outlet ('' for the primary outlet). */ + readonly openFiles = computed(() => { + const open = new Map(); + for (const c of this.page()?.chain ?? []) { + // The primary outlet wins when one file renders in several outlets. + if (c.file && (!open.has(c.file) || !c.outlet)) open.set(c.file, c.outlet ?? ''); + } + return open; + }); readonly allCalls = computed(() => this.state().calls ?? []); readonly maxServerCalls = MAX_SERVER_CALLS; readonly callQuery = signal(''); @@ -2381,6 +2389,11 @@ export class AnalogInspector { return !!route.file && this.openFiles().has(route.file); } + openText(route: AnalogRoute): string { + const outlet = route.file ? this.openFiles().get(route.file) : undefined; + return outlet ? `open in ${outlet}` : 'open'; + } + kindText(route: AnalogRoute): string { if (route.catchAll) return route.catchAll === 'optional' ? 'optional catch-all' : 'catch-all'; if (route.kind === 'implicit') return 'folder'; diff --git a/app/src/pages/cd-recording.ts b/app/src/pages/cd-recording.ts index 551ab994..5015753a 100644 --- a/app/src/pages/cd-recording.ts +++ b/app/src/pages/cd-recording.ts @@ -34,8 +34,11 @@ export type { CdCycle, } from '@pangular-inspector/devtools/internal/config'; -/** How long Stop waits for the page's last report before it announces the count it has. */ -const STOP_REPORT_WAIT_MS = 3000; +/** + * How long Record and Stop wait for the page's report that says the recording is on or off + * before they say the page did not confirm. The same wait as `record-change-detection`. + */ +const CONFIRM_WAIT_MS = 3000; /** One page's recording, as the page reports it. */ export type CdPage = CdReport; @@ -541,38 +544,60 @@ export class CdRecording { return cdCauseText(cause); } - /** Set after Stop: the total is announced once the page's last report says it stopped. */ - private readonly stopping = signal(false); - private stopTimer: ReturnType | undefined; + /** + * Set after Record (`true`) or Stop (`false`) reached the server: the result is announced + * once the page reports the recording on or off. Stop's report also brings the last cycles. + */ + private readonly confirming = signal(null); + private confirmTimer: ReturnType | undefined; constructor() { effect(() => { - if (!this.stopping() || this.livePage()?.recording === true) return; - untracked(() => this.announceStopped()); + const on = this.confirming(); + if (on === null) return; + const recording = this.livePage()?.recording === true; + if (recording !== on) return; + untracked(() => this.confirmed(on)); }); - inject(DestroyRef).onDestroy(() => clearTimeout(this.stopTimer)); + inject(DestroyRef).onDestroy(() => clearTimeout(this.confirmTimer)); } - private announceStopped() { - clearTimeout(this.stopTimer); - this.stopping.set(false); + private confirmed(on: boolean) { + clearTimeout(this.confirmTimer); + this.confirming.set(null); + this.message.set(''); const count = this.livePage()?.cycles.length ?? 0; - this.announce(`Recording stopped. ${count} ${count === 1 ? 'cycle' : 'cycles'} recorded.`); + this.announce( + on + ? 'Recording started.' + : `Recording stopped. ${count} ${count === 1 ? 'cycle' : 'cycles'} recorded.`, + ); + } + + /** No report confirmed in time: the button keeps the state the page last reported. */ + private unconfirmed(on: boolean) { + const failed = `The page did not confirm that the recording ${on ? 'started' : 'stopped'}. The tab may be in the background, closed or reloading.`; + this.message.set(failed); + this.announce(failed); } async toggle() { - if (this.recording()) { - const sent = await this.send({ on: false }, '', () => '', 'request-change-detection-record', { - quiet: true, - }); - if (!sent) return; - // The page sends its last cycles with the report that says it stopped. - this.stopping.set(true); - clearTimeout(this.stopTimer); - this.stopTimer = setTimeout(() => this.announceStopped(), STOP_REPORT_WAIT_MS); - } else { - await this.send({ on: true }, 'Starting…', () => 'Recording started.'); - } + const on = !this.recording(); + clearTimeout(this.confirmTimer); + this.confirming.set(null); + const sent = await this.send( + { on }, + on ? 'Starting…' : 'Stopping…', + () => '', + 'request-change-detection-record', + { quiet: true, keepPending: true }, + ); + if (!sent) return; + this.confirming.set(on); + // A report that comes after the wait still confirms, and replaces the note. + this.confirmTimer = setTimeout(() => { + if (this.confirming() === on) this.unconfirmed(on); + }, CONFIRM_WAIT_MS); } showImport(file: CdImported) { @@ -621,7 +646,7 @@ export class CdRecording { pending: string, done: () => string, rpc = 'request-change-detection-record', - { quiet = false } = {}, + { quiet = false, keepPending = false } = {}, ): Promise { this.message.set(pending); try { @@ -630,7 +655,7 @@ export class CdRecording { pageId: this.pageId(), ...request, }); - this.message.set(''); + if (!keepPending) this.message.set(''); if (!quiet) this.announce(done()); return true; } catch { diff --git a/app/src/pages/component-tree.ts b/app/src/pages/component-tree.ts index 3cddb9ca..3f94567d 100644 --- a/app/src/pages/component-tree.ts +++ b/app/src/pages/component-tree.ts @@ -50,6 +50,7 @@ import { ValueTree } from './component-value-tree'; import { ValueStore } from './component-value-store'; import { nestedMatches } from './component-value-state'; import { StoreGlobal } from '../ui/store-global'; +import { DeferBlocksSection, type DeferBlock } from './defer-blocks-section'; import { ForBlocksSection, type ForBlock } from './for-blocks-section'; import { LeaksSection, type LeaksPage } from './leaks-section'; import { VirtualWindow } from '../ui/virtual-window'; @@ -115,16 +116,6 @@ interface Detail { expanded?: Record; } -interface DeferBlock { - id: string; - owner?: { id: string; name: string; tag: string }; - state: string; - hydration: string; - hydrateNever?: boolean; - triggers: string[]; - rootIds: string[]; -} - interface Page { pageId: string; url?: string; @@ -144,6 +135,8 @@ interface Page { truncatedBy?: { components?: number; depth?: number; directiveHosts?: number }; detail: Detail | null; reportedAt: number; + /** The server clock minus the page clock, in ms, for ages of page times. */ + clockOffset?: number; } interface OutletInfo { @@ -204,6 +197,7 @@ function storedDirectiveHosts(): boolean { SourceLink, ValueTree, StoreGlobal, + DeferBlocksSection, ForBlocksSection, HydrationSection, LeaksSection, @@ -759,43 +753,13 @@ function storedDirectiveHosts(): boolean { } - @if (deferBlocks().length) { -
-

- Defer blocks - {{ deferCount() }} -

-
    - @for (block of deferBlocks(); track block.id) { -
  • - -
  • - } -
-
- } + @if (deferUnavailable()) { this.page()?.deferBlocks ?? []); - /** The block count, with a `+` when the page has more blocks than it reported. */ - readonly deferCount = computed( - () => `${this.deferBlocks().length}${this.page()?.deferTruncated ? '+' : ''}`, - ); readonly countLabel = computed(() => countText( @@ -2645,19 +2553,24 @@ export class ComponentTree { } highlight(id: string | null) { + this.requestHighlight(id ? { id } : null); + } + + /** One box around every root element of the block, or its owner when none is rendered. */ + highlightBlock(block: DeferBlock) { + if (block.rootIds.length > 1) this.requestHighlight({ ids: block.rootIds }); + else this.highlight(block.rootIds[0] ?? block.owner?.id ?? null); + } + + private requestHighlight(target: { id: string } | { ids: string[] } | null) { const client = this.rpc(); if (!client) return; - const target = id ? { pageId: this.page()?.pageId, id } : null; void client .scope('pangular') - .rpc.call('request-page-highlight', target) + .rpc.call('request-page-highlight', target && { pageId: this.page()?.pageId, ...target }) .catch(() => {}); } - highlightBlock(block: DeferBlock) { - this.highlight(block.rootIds[0] ?? block.owner?.id ?? null); - } - showOwner(block: DeferBlock) { if (block.owner && this.index().map.has(block.owner.id)) this.reveal(block.owner.id); } diff --git a/app/src/pages/defer-blocks-section.ts b/app/src/pages/defer-blocks-section.ts new file mode 100644 index 00000000..77b84b75 --- /dev/null +++ b/app/src/pages/defer-blocks-section.ts @@ -0,0 +1,269 @@ +import { + Component, + DestroyRef, + computed, + effect, + inject, + input, + output, + signal, +} from '@angular/core'; +import { deferNotes, type DeferNote } from '@pangular-inspector/devtools/internal/config'; + +export interface DeferBlock { + id: string; + owner?: { id: string; name: string; tag: string }; + state: string; + hydration: string; + hydrateNever?: boolean; + triggers: string[]; + rootIds: string[]; + /** Page clock, ms since epoch, when the state or hydration state last changed. */ + since?: number; + hasErrorBlock?: boolean; + /** Times from `@loading (after …; minimum …)`, in ms. */ + loading?: { minimumTime: number | null; afterTime: number | null }; + /** The time from `@placeholder (minimum …)`, in ms. */ + placeholder?: { minimumTime: number | null }; +} + +interface Row { + block: DeferBlock; + notes: DeferNote[]; + timings: string; +} + +/** `500ms`, `1s`, `1.5s`. */ +function duration(ms: number): string { + return ms < 1000 ? `${ms}ms` : `${Number((ms / 1000).toFixed(2))}s`; +} + +/** The `@placeholder` and `@loading` times of a block, such as `loading after 100ms, min 1s`. */ +export function deferTimings(block: DeferBlock): string { + const parts: string[] = []; + const placeholder = block.placeholder?.minimumTime; + if (placeholder != null) parts.push(`placeholder min ${duration(placeholder)}`); + const loading = [ + block.loading?.afterTime != null ? `after ${duration(block.loading.afterTime)}` : '', + block.loading?.minimumTime != null ? `min ${duration(block.loading.minimumTime)}` : '', + ].filter(Boolean); + if (loading.length) parts.push(`loading ${loading.join(', ')}`); + return parts.join(' · '); +} + +/** + * The Defer blocks list on the Components page. Each row has the block's owner, + * state, hydration, the notes the defer-blocks agent tool prints (failed, stuck + * on its placeholder, dehydrated), whether it has an `@error` block, its + * `@placeholder` and `@loading` times and its triggers. Ages are read on the + * page's clock, through `clockOffset`, which assumes the panel's clock agrees + * with the server's. + */ +@Component({ + selector: 'app-defer-blocks', + template: ` + @if (rows().length) { +
+

+ Defer blocks + {{ rows().length }}{{ truncated() ? '+' : '' }} +

+
    + @for (row of rows(); track row.block.id) { +
  • + +
  • + } +
+
+ } + `, + styles: ` + @use 'mixins' as m; + + :host { + display: block; + } + .defer { + margin-top: 16px; + } + .defer-title { + @include m.label; + display: flex; + align-items: center; + gap: 6px; + margin: 0 0 8px; + } + .pill { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 18px; + height: 16px; + padding: 0 5px; + border-radius: 99px; + background: var(--surface-3); + color: var(--text-2); + font-size: 10px; + font-weight: 600; + letter-spacing: 0; + } + .defer-list { + display: grid; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; + } + .defer-row { + justify-content: flex-start; + flex-wrap: wrap; + width: 100%; + height: auto; + min-height: var(--control-h); + padding: 6px 12px; + background: var(--surface); + border-color: var(--border); + text-align: left; + } + .defer-row:focus-visible { + @include m.focus-ring; + } + .defer-row[aria-disabled='true'] { + cursor: default; + } + .name { + min-width: 0; + color: var(--text-strong); + font-size: 12px; + font-weight: 600; + @include m.truncate; + } + .mono { + font-family: var(--font-mono); + } + .defer-state { + padding: 0 8px; + border-radius: 99px; + background: var(--surface-3); + color: var(--text-2); + font-size: 11px; + line-height: 18px; + } + .defer-state-complete { + @include m.tint(ok); + } + .defer-state-error { + @include m.tint(danger); + } + .defer-state-loading, + .defer-state-placeholder { + @include m.tint(warn); + } + .flag { + padding: 0 6px; + border: 1px solid var(--border-strong); + border-radius: 5px; + color: var(--text-2); + font-family: var(--font-mono); + font-size: 10px; + line-height: 16px; + } + .note-failed { + @include m.tint(danger); + } + .note-stuck { + @include m.tint(warn); + } + .timings { + color: var(--text-2); + font-size: 11px; + } + .triggers { + min-width: 0; + color: var(--text-2); + font-size: 12px; + @include m.truncate; + } + `, +}) +export class DeferBlocksSection { + readonly blocks = input([]); + /** The page has more defer blocks than the ones in `blocks`. */ + readonly truncated = input(false); + /** The server clock minus the page clock, in ms, so ages are read on the page's clock. */ + readonly clockOffset = input(0); + readonly showOwner = output(); + /** The block to highlight in the app, or `null` to clear it. */ + readonly highlight = output(); + + /** Moves every second while a block waits, so its time on its placeholder counts up. */ + private readonly now = signal(Date.now()); + /** Some block is still on its placeholder, so its age can grow into a note. */ + private readonly waiting = computed(() => + this.blocks().some( + (block) => !!block.since && (block.state === 'placeholder' || block.state === 'initial'), + ), + ); + + protected readonly rows = computed(() => { + const pageNow = this.now() - this.clockOffset(); + return this.blocks().map((block) => ({ + block, + // A block without a time (an older page) gets no age notes. + notes: deferNotes({ ...block, since: block.since || pageNow }, pageNow), + timings: deferTimings(block), + })); + }); + + constructor() { + let tick: ReturnType | undefined; + const stop = () => { + clearInterval(tick); + tick = undefined; + }; + effect(() => { + if (!this.waiting()) return stop(); + if (tick !== undefined) return; + this.now.set(Date.now()); + tick = setInterval(() => this.now.set(Date.now()), 1000); + }); + inject(DestroyRef).onDestroy(stop); + } +} diff --git a/app/src/pages/forms-inspector.ts b/app/src/pages/forms-inspector.ts index 2b457964..aed5c06f 100644 --- a/app/src/pages/forms-inspector.ts +++ b/app/src/pages/forms-inspector.ts @@ -21,7 +21,7 @@ import { LimitNote } from '../ui/limit-note'; import { FormsFieldDetail } from './forms-field-detail'; import { FormsLint, FormsSubmit } from './forms-report'; import { FormsTimeline } from './forms-timeline'; -import { FormsWebMcp } from './forms-webmcp'; +import { FormsWebMcp, FormsWebMcpOthers } from './forms-webmcp'; import { FORMS_STYLES, KIND_LABELS, @@ -34,6 +34,7 @@ import { type FormEvent, type FormFieldError, type FormFieldNode, + type FormSetupError, type WebMcpPage, } from './forms-types'; @@ -76,6 +77,7 @@ interface FormsSnapshot { instrumented?: string[]; dropped?: Record; webMcp?: WebMcpPage[]; + setupErrors?: FormSetupError[]; } interface FieldRow { @@ -101,6 +103,7 @@ function countFields(node: FormFieldNode): number { FormsSubmit, FormsLint, FormsWebMcp, + FormsWebMcpOthers, LimitNote, ], host: { '(keydown.escape)': 'cancelPick()' }, @@ -109,6 +112,28 @@ function countFields(node: FormFieldNode): number { Signal Forms, reactive and template-driven forms on the live page, with each field's state and errors, a change timeline, submit explanations and a lint. Development builds only.

+ @if (pageSetupErrors().length) { +
+

+ Angular reported {{ pageSetupErrors().length }} forms setup + {{ pageSetupErrors().length === 1 ? 'error' : 'errors' }} +

+

+ A form with a setup error can be missing from the list or behave unlike its template. + Check the directives and value accessors it names. +

+
    + @for (error of pageSetupErrors(); track $index) { +
  • + {{ error.message }} + @if (setupErrorPages()) { + on page {{ error.pageId }} + } +
  • + } +
+
+ } @if (!rpc()) {
@@ -610,6 +635,9 @@ function countFields(node: FormFieldNode): number { }
} + @if (rpc() && !failed() && !loading()) { + + } `, styles: ` ${FORMS_STYLES} @@ -618,6 +646,38 @@ function countFields(node: FormFieldNode): number { color: var(--text-2); line-height: 1.5; } + .setup-errors { + display: grid; + gap: 4px; + margin: 0 0 12px; + padding: 10px 12px; + border: 1px solid; + @include m.tint(warn); + border-radius: var(--radius-sm); + font-size: 13px; + line-height: 1.5; + } + .setup-errors p { + margin: 0; + } + .setup-title { + font-weight: 600; + } + .setup-errors ul { + display: grid; + gap: 2px; + margin: 0; + padding: 0 0 0 16px; + min-width: 0; + } + .setup-errors code { + font-family: var(--font-mono); + font-size: 12.5px; + overflow-wrap: anywhere; + } + .setup-page { + margin-left: 6px; + } .search { position: relative; display: flex; @@ -1385,6 +1445,22 @@ export class FormsInspector { readonly version = signal(0); readonly message = signal(''); + readonly setupErrors = signal([]); + /** Setup errors of the pages the form list shows. */ + readonly pageSetupErrors = computed(() => this.onShownPages(this.setupErrors())); + readonly setupErrorPages = computed( + () => new Set(this.pageSetupErrors().map((error) => error.pageId)).size > 1, + ); + /** WebMCP state of the pages the form list shows, for the tools not linked to a form. */ + readonly pageWebMcp = computed(() => + this.onShownPages(this.webMcp()).filter((entry) => entry.tools.length), + ); + + private onShownPages(entries: T[]): T[] { + const page = this.hostPageId; + return page && !this.allPages() ? entries.filter((entry) => entry.pageId === page) : entries; + } + webMcpPage(formId: string): WebMcpPage | undefined { const page = pageOf(formId); return this.webMcp().find((entry) => entry.pageId === page); @@ -1530,6 +1606,7 @@ export class FormsInspector { this.instrumented.set(snapshot?.instrumented ?? []); this.dropped.set(snapshot?.dropped ?? {}); this.webMcp.set(snapshot?.webMcp ?? []); + this.setupErrors.set(snapshot?.setupErrors ?? []); this.version.update((v) => v + 1); }; apply(state.value()); diff --git a/app/src/pages/forms-types.ts b/app/src/pages/forms-types.ts index d97fc327..c24afbe0 100644 --- a/app/src/pages/forms-types.ts +++ b/app/src/pages/forms-types.ts @@ -81,6 +81,12 @@ export interface WebMcpPage { tools: WebMcpTool[]; } +/** An Angular forms error the page logged while setting up a form, such as `NG01203`. */ +export interface FormSetupError { + pageId: string; + message: string; +} + export function pageOf(formId: string): string { return formId.split('@')[1] ?? ''; } diff --git a/app/src/pages/forms-webmcp.ts b/app/src/pages/forms-webmcp.ts index 816d5b56..c4ca6be5 100644 --- a/app/src/pages/forms-webmcp.ts +++ b/app/src/pages/forms-webmcp.ts @@ -2,6 +2,8 @@ import { DatePipe } from '@angular/common'; import { Component, computed, input } from '@angular/core'; import type { WebMcpPage, WebMcpTool } from './forms-types'; +let nextId = 0; + const OUTCOMES: Record = { running: 'running', submitted: 'submitted', @@ -15,10 +17,10 @@ const OUTCOMES: Record = { imports: [DatePipe], template: ` @if (tool(); as tool) { -
+
- - {{ tool.name }} + + {{ tool.name }} {{ statusText() }} @if (tool.duplicate) { duplicate name @@ -216,6 +218,7 @@ const OUTCOMES: Record = { `, }) export class FormsWebMcp { + protected readonly uid = `forms-webmcp-${++nextId}`; tool = input(); page = input(); signalForm = input(false); @@ -246,3 +249,105 @@ export class FormsWebMcp { return new Date(at).toISOString(); } } + +/** WebMCP tools the page registered that the collector could not link to a form. */ +@Component({ + selector: 'app-forms-webmcp-others', + imports: [FormsWebMcp], + template: ` + @if (tools().length) { +
+

+ Other WebMCP tools {{ tools().length }} +

+

+ Tools registered on the page that are not linked to a form in the list, such as tools the + app registers itself. +

+
    + @for (entry of tools(); track $index) { +
  • + @if (manyPages()) { +

    + Page {{ entry.pageId }} +

    + } + +
  • + } +
+
+ } + `, + styles: ` + @use 'mixins' as m; + + :host { + display: block; + } + .others { + display: grid; + gap: 8px; + min-width: 0; + margin-top: 16px; + padding: 12px; + border: 1px solid var(--border); + border-radius: var(--radius); + background: var(--surface); + } + h2 { + display: flex; + gap: 8px; + align-items: center; + margin: 0; + color: var(--text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + } + .count { + padding: 0 6px; + border-radius: 99px; + background: var(--surface-3); + color: var(--text-2); + font-size: 11px; + letter-spacing: 0; + line-height: 18px; + font-variant-numeric: tabular-nums; + } + .muted, + .page { + margin: 0; + color: var(--text-2); + font-size: 13px; + line-height: 1.5; + } + code { + font-family: var(--font-mono); + font-size: 12.5px; + overflow-wrap: anywhere; + } + .tools { + display: grid; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; + } + .tools > li { + display: grid; + gap: 4px; + min-width: 0; + } + `, +}) +export class FormsWebMcpOthers { + pages = input([]); + + readonly tools = computed(() => + this.pages().flatMap((page) => page.tools.map((tool) => ({ tool, pageId: page.pageId }))), + ); + + readonly manyPages = computed(() => new Set(this.tools().map((t) => t.pageId)).size > 1); +} diff --git a/app/src/pages/network-inspector.ts b/app/src/pages/network-inspector.ts index dfb1f90f..d7b00b47 100644 --- a/app/src/pages/network-inspector.ts +++ b/app/src/pages/network-inspector.ts @@ -153,6 +153,8 @@ interface PayloadEntry { interface HydrationMismatch { component: string; + /** `component` is a class name (`ProductCard`), not a node name (`app-card`). */ + isClass?: boolean; expected?: string; actual?: string; } @@ -1168,7 +1170,7 @@ const HTTP_STATUS_OPTIONS: SelectOption[] = [
    @for (m of h.mismatches; track $index) {
  • - {{ '<' + m.component + '>' }} + {{ m.isClass ? m.component : '<' + m.component + '>' }} @if (m.expected) { Expected diff --git a/apps/docs/src/content/agents/tools.md b/apps/docs/src/content/agents/tools.md index bd72a29f..51cb4ab4 100644 --- a/apps/docs/src/content/agents/tools.md +++ b/apps/docs/src/content/agents/tools.md @@ -184,7 +184,7 @@ When the hub is mounted, each finished call of an `action` or `destructive` tool ### Turn tools off -The server decides which tools exist. Set `agent.readOnly` to keep only the `read` tools. `change-detection` reads a recording the panel started, and `audit` stays without its `axe` argument, so it reads the last axe pass the panel ran. Set `agent.tools.` to `false` to hide one inspector's tools and resources, and keep its tab. Turning an inspector off with `inspectors`, or blocking an action with `actions`, drops the matching tools too. `wait-for` stays while any of the Components, Router, SSR & HTTP, Errors and Forms inspectors is on, with only the conditions of the inspectors that are. A [plugin's own tools](#plugins) follow the same switches, with the tier the plugin declares. `actions.router` drops `navigate` and `probe-route` and keeps `record-guards` and `list-routes` with `resolveLazy`. See [Inspectors and agent tools](../getting-started/configuration.md#inspectors-and-agent-tools). +The server decides which tools exist. Set `agent.readOnly` to keep only the `read` tools. `change-detection` reads a recording the panel started, and its hints, like those of `diagnose-change-detection` and `audit`, name only **Record** in the panel. `audit` stays without its `axe` argument, so it reads the last axe pass the panel ran. Set `agent.tools.` to `false` to hide one inspector's tools and resources, and keep its tab. Turning an inspector off with `inspectors`, or blocking an action with `actions`, drops the matching tools too. `wait-for` stays while any of the Components, Router, SSR & HTTP, Errors and Forms inspectors is on, with only the conditions of the inspectors that are. A [plugin's own tools](#plugins) follow the same switches, with the tier the plugin declares. `actions.router` drops `navigate` and `probe-route` and keeps `record-guards` and `list-routes` with `resolveLazy`. See [Inspectors and agent tools](../getting-started/configuration.md#inspectors-and-agent-tools). ## Source scan @@ -257,7 +257,7 @@ Without `page`, it lists the default page among the tabs that have a component t ### defer-blocks -The `@defer` blocks of each page: the component that holds each one, its state, its incremental hydration state, its triggers and whether it has `@loading`, `@placeholder` and `@error` blocks. A **Needs attention** list names blocks that failed to load and blocks still on their placeholder after 10 seconds. A block whose triggers only wait for the user (`on viewport`, `on interaction` or `on hover`) is not listed there: its row notes that it is waiting for its trigger. Reads: page. +The `@defer` blocks of each page: the component that holds each one, its state, its incremental hydration state, its triggers and whether it has `@loading`, `@placeholder` and `@error` blocks. A **Needs attention** list names blocks that failed to load and blocks still on their placeholder after 10 seconds. A block whose triggers only wait for the user (`on viewport`, `on interaction` or `on hover`) is not listed there: its row notes that it is waiting for its trigger. Times are counted on the page's clock, which the page sends with each report, so a page whose clock differs from the server's still gets the right age. Reads: page. It takes only `page`. @@ -448,11 +448,14 @@ The signal graph the page reported: nodes (`signal`, `computed`, `linkedSignal`, | Argument | Required | Value | | ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `component` | yes | Host tag, class name or instance id of the component, like `app-root`. Or `root`, or a route path like `/admin` or `Route: admin`. | +| `component` | one of | Host tag, class name or instance id of the component, like `app-root`. Or `root`, or a route path like `/admin` or `Route: admin`. | +| `selector` | one of | A CSS selector for a component host, like `app-card.featured`. The first match is read. At most 500 characters. | | `node` | no | A node id or label. The answer holds only that node, or every node with that label, with its direct producers and consumers and their resources and history. | | `history` | no | `false` leaves out the value history. Defaults to `true`. | | `framework` | no | `false` leaves out the nodes Angular itself created (`framework: true`). Defaults to `true`. | +Pass `component` or `selector`, not both. When the graph the page last reported belongs to another component or injector, the tool asks the page for the one you named, once, and the Signals page keeps showing what it showed. A `component` the component tree knows is read by its first instance. A `component` it doesn't know answers with the graph the page reported and says what that graph covers. A `selector` that matches no component host is refused. + The answer also holds: | Field | Value | @@ -967,7 +970,7 @@ These tools cover *Analog apps. Most read your source. Some also read what the V | Tool | What it answers | Reads | Arguments | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------------ | -| `analog-inspect-page` | The open page: its files, the `load()` data it received, server rendering and hydration state, and hydration errors. | page | none | +| `analog-inspect-page` | The open page: its files (layouts first, then pages in named outlets with the outlet name), the `load()` data it received, server rendering and hydration state, and hydration errors. | page | none | | `analog-list-server-calls` | Recent page renders, `load()` fetches, form actions (with their outcome), server functions by name and API calls, with status, time and size. Flags a `load()` fetched twice and a seeded server function read called again. | Vite plugin | `kind` (`page`, `load`, `action`, `fn` or `api`), `route`, `limit` | ### Rendering diff --git a/apps/docs/src/content/contributing/development.md b/apps/docs/src/content/contributing/development.md index eccdf696..ac363408 100644 --- a/apps/docs/src/content/contributing/development.md +++ b/apps/docs/src/content/contributing/development.md @@ -158,7 +158,7 @@ pnpm commit:check # Commit messages on your branch `pnpm typecheck` runs `ngc` on `app/tsconfig.json` and `examples/analog/tsconfig.app.json`, so template errors fail it. `app/tsconfig.json` turns on `strictTemplates`. -`pnpm test:panel` runs the tests in `app/src/__tests__` in jsdom, with the Analog Angular plugin compiling the components. `pnpm test:axe` builds the package, writes a static report of Angular Travel to `dist/panel-axe`, serves it, and runs axe on every tab and on each hub view (`?view=ngrx`, `analog`, `nativescript`, `capacitor`) in both dark and light color schemes. It fails on any violation or page error. Run `pnpm exec playwright install chromium` once before the first run. +`pnpm test:panel` runs the tests in `app/src/__tests__` in jsdom, with the Analog Angular plugin compiling the components. `pnpm test:axe` builds the package, writes a static report of Angular Travel to `dist/panel-axe`, serves it, and runs axe on every tab and on each hub view (`?view=ngrx`, `analog`, `nativescript`, `capacitor`) in both dark and light color schemes. It also checks each tab's states: a filter that matches nothing in every search box, a project whose source scans come back empty, a server that answers every call with an error, and a server that has not answered yet. Seeded pages stand in for a live app on the Capacitor, Errors, Plugins, Queries and Forms tabs, and for long lists on Components and **SSR & HTTP**. It fails on any violation, page error or state that does not show. Run `pnpm exec playwright install chromium` once before the first run. `pnpm skills:check` validates the frontmatter of every skill and role and checks that the files and links they mention exist. `pnpm commit:check` checks every commit on your branch that is not on `main` (it compares with `upstream/main`, then `origin/main`, then `main`). @@ -189,6 +189,8 @@ pnpm commit:check # Commit messages on your branch A separate `axe` job in the same workflow installs Chromium and runs `pnpm test:axe`. A `node-22` job runs `pnpm test:devtools` on the newest Node.js 22, the oldest major `engines.node` (`>=22.12.0`) allows. +The source tests can't run on Node.js 22.12 itself: Node.js runs `.ts` files only from 22.18, and the build tools need newer versions too. So when a pull request or push changes `packages/devtools`, `app`, the root manifests, the lockfile, `.nvmrc` or the CI setup, the `engines-floor` job (**Packed package on Node.js 22.12**) packs the package on the `.nvmrc` version, switches to Node.js 22.12.0 and installs the tarball into an empty project with npm. It then runs `npx pangular --version`, imports the `cli`, `hub`, `ssr` and `vite` entry points, and loads the `hub` entry with `require()`. When `engines.node` changes, change the version in that job too. + Two more jobs run when a pull request or push changes `packages/devtools`, `app`, `e2e`, the lockfile or their scripts. `Security e2e` builds the package and runs `pnpm e2e:security`, the redaction and access checks. `MCP e2e` runs `pnpm e2e:mcp`, which builds the package and the SSR demo, then calls every agent tool, resource and prompt and compares the list with the agent tools page. ### End-to-end scripts diff --git a/apps/docs/src/content/guides/inspect-fix-verify.md b/apps/docs/src/content/guides/inspect-fix-verify.md index 3e67e77e..658f3787 100644 --- a/apps/docs/src/content/guides/inspect-fix-verify.md +++ b/apps/docs/src/content/guides/inspect-fix-verify.md @@ -57,7 +57,7 @@ Call `list-pages`. If more than one tab reports, pass its id as `page` to every The audit reads what the inspectors already hold. Errors, hydration, router, form and HTTP findings are there as soon as the page reports. Change detection numbers need a recording: ```json -{"tool": "pangular:change-detection", "arguments": {"record": "start", "page": "k3x9"}} +{"tool": "pangular:record-change-detection", "arguments": {"record": "start", "page": "k3x9"}} ``` Then use the app: open the screens and click what the change is about. Subscriptions after destroy need tracking, so call `track-subscriptions` with `action: "start"` too if leaks matter to the change. @@ -104,7 +104,7 @@ Call `open-in-panel` with `tab: "audit"` to give the user a link to the same lis ## Gotchas - With agent.readOnly, audit has no axe argument and change-detection can't record. Run axe and the recording from the panel, and the agent's audit reads them. + With agent.readOnly, audit has no axe argument and record-change-detection is not registered. Run axe and the recording from the panel, and the agent's audit reads them. - Findings are matched by area, rule and subject, not by position. A renamed component or route counts as one finding resolved and one new. diff --git a/apps/docs/src/content/inspectors/analog.md b/apps/docs/src/content/inspectors/analog.md index 38af57a6..c6555217 100644 --- a/apps/docs/src/content/inspectors/analog.md +++ b/apps/docs/src/content/inspectors/analog.md @@ -48,6 +48,8 @@ The summary at the top shows the Analog version, and the number of pages, API ro Every page (`.page.ts`, `.page.analog` or `.page.ag`), layout and markdown file with its URL, route groups, `[param]` and catch-all segments, `.server.ts` files and `routeMeta`. +The pages that render the URL open in the browser show an **open** pill. A page in a named outlet, such as ``, shows the outlet name too, like **open in sidebar**. + Type a URL into **Test a URL** and click **Explain** to see which files render it: the layout chain, the page and its params. A URL that matches nothing gets the closest candidates. The result names the URL it explains, so it stays correct while you type the next one. If the devtools server does not answer, the result says so. ### Server diff --git a/apps/docs/src/content/inspectors/components.md b/apps/docs/src/content/inspectors/components.md index 40adb112..39aa33a5 100644 --- a/apps/docs/src/content/inspectors/components.md +++ b/apps/docs/src/content/inspectors/components.md @@ -143,7 +143,18 @@ Set [`actions.components`](../getting-started/configuration.md#actions) to `fals When the page renders `@defer` blocks, a **Defer blocks** list follows the tree. Each row shows the component whose template holds the block, its state (`placeholder`, `loading`, `complete` or `error`) and its triggers. With [incremental hydration](https://angular.dev/guide/incremental-hydration), a row also shows `dehydrated` or `hydrated`, and a **hydrate never** flag marks a block that stays as server HTML. -Hover or focus a row to highlight the block in the page. Click it to select the component that holds it. The list is hidden when the page renders no defer blocks, or when its Angular version has no util to read them. +A row also carries the notes the [`defer-blocks`](../agents/tools.md#defer-blocks) tool prints. Hover a note to read it in full. + +| Badge | Meaning | +| -------------------- | ------------------------------------------------------------------------------------------------------------ | +| **failed** | The block failed to load. | +| **stuck** _N_ s | The block has been on its placeholder for 10 seconds or more. | +| **waiting** _N_ s | The same, for a block whose triggers only wait for the user (`on viewport`, `on interaction` or `on hover`). | +| **@error block** | The block has an `@error` block. | + +When the block sets times, the row lists them, such as `placeholder min 500ms · loading after 100ms, min 1s`. Ages are counted on the page's clock, so a page on another device with its clock set wrong still shows the right age. The panel counts on from its own clock, so it assumes the panel and the server agree on the time, as they do when both run on one machine. A screen reader reads the badge as **stuck** or **waiting** without the seconds, so the row's name does not change while the age counts up. + +Hover or focus a row to highlight the block in the page. A block with several root elements gets one box around all of them. Click it to select the component that holds it. The list is hidden when the page renders no defer blocks, or when its Angular version has no util to read them. The list holds the first 500 blocks of a page. When the page has more, the count reads **500+**. @@ -178,7 +189,7 @@ The list needs Angular 22.0 or later in a development build. On an older Angular ### Change detection -Below the tree and the defer blocks, the **Change detection** section records change detection cycles with Angular's profiler. Click **Record**, use the app, then click **Stop recording**. A check is a component whose template Angular ran. A clean OnPush component that Angular only walked past is not a check, and neither is the second pass that development builds run to catch `ExpressionChangedAfterItHasBeenChecked` errors. The flash overlay and the Performance panel track count the same way. **Clear** empties the recording. Each new recording starts empty, but a start sent while the page records, such as an agent's `record: "start"`, keeps the cycles recorded so far. +Below the tree and the defer blocks, the **Change detection** section records change detection cycles with Angular's profiler. Click **Record**, use the app, then click **Stop recording**. A check is a component whose template Angular ran. A clean OnPush component that Angular only walked past is not a check, and neither is the second pass that development builds run to catch `ExpressionChangedAfterItHasBeenChecked` errors. The flash overlay and the Performance panel track count the same way. **Clear** empties the recording. Each new recording starts empty, but a start sent while the page records, such as an agent's `record-change-detection` call with `record: "start"`, keeps the cycles recorded so far. **Record** and **Stop recording** wait up to 3 seconds for the page to report the recording on or off before they announce it. If no report comes, the status says the page did not confirm, and the button keeps the state the page last reported. - **Cycles**: a bar chart with one bar per recorded cycle, its height the cycle's duration. A line marks the 16.6 ms frame budget (one frame at 60 frames per second). A cycle over the budget has a striped bar, a triangle under it, and says "over budget" in its tooltip and in the table. Hover or focus a bar to see the cycle number, duration, output trigger, checks and its three slowest components. - **Spans in the picked cycles**: when the page reports timed spans, a flame graph of the picked cycles. Time runs left to right, cycle after cycle with the idle time between them left out, and a span nested in another sits one row lower. Each span is a component check (solid), a lifecycle hook (stripes), an `afterRender` callback (dots) or the output listener that triggered the cycle (lines, drawn before the cycle's start), with a key under the graph. Hover or focus a span to read its total and self time. The arrow keys move along a row, **Up** goes to the enclosing span and **Down** to the first nested one. **Enter** or a click on a component, hook or output selects that component in the tree. **Show the spans as a table** lists the same spans. The graph shows at most 30 cycles; pick a smaller range when more are picked. diff --git a/apps/docs/src/content/inspectors/forms.md b/apps/docs/src/content/inspectors/forms.md index e02f0ca7..63d800de 100644 --- a/apps/docs/src/content/inspectors/forms.md +++ b/apps/docs/src/content/inspectors/forms.md @@ -21,6 +21,8 @@ The sidebar lists each form with its label, its kind (**Signal Forms**, **Reacti Select a form to see its status, whether it is dirty or touched, whether it was submitted or is submitting, and an **Error summary**. +If Angular logs a forms setup error on the page, such as `NG01203` (no value accessor) or `NG01050` (`formControlName` without a parent `formGroup`), a notice above the list shows each message. A form with a setup error can be missing from the list. The notice follows the **All pages** setting, and names the page of each error when it shows more than one page. + Click an entry in the **Error summary** to open that field. The tab switches to the **Fields** view, opens the field's [details](#field-details) and moves focus to them. If the path filter or the chips hide the field, the tab clears them, the filter first and the chips only if the field is still hidden. ### WebMCP tool @@ -40,6 +42,8 @@ Agent calls set the value and submit the form. Those changes show in the timelin If the app provides `provideExperimentalWebMcpForms()` but the browser has no `modelContext`, Angular registers no tool. The block says so instead. +A tool the overlay cannot link to a form, such as a tool the app registers with `modelContext.registerTool` itself, shows under **Other WebMCP tools** below the forms, with the same parts. The section appears only when the page has such a tool, and it follows the **All pages** setting. + ### Fields view Each field shows its value, status, touched and dirty state, and errors. Extra facts depend on the kind: @@ -237,7 +241,7 @@ In `user` mode, a write to a `date`, `datetime-local`, `time`, `month` or `week` ### WebMCP is best effort -`experimentalWebMcpTool` is experimental in Angular. The overlay wraps `modelContext.registerTool` when it loads, so it records registrations and calls from then on. The overlay has no hook that runs before your app. For a tool registered earlier, it reads the browser's tool list when the browser offers one (`getTools()` or `listTools()`), and the block says **registered before the inspector attached**. Calls to those tools are not recorded. If the browser offers no tool list, a form that registered before the overlay loaded shows no **WebMCP tool** block. To see every registration and call, register the form after the overlay loads, for example on a route you open later. The overlay links a tool to its form by its input schema, or by the form an agent call submits. A tool it cannot link shows in the `inspect-forms` output under **WebMCP**. +`experimentalWebMcpTool` is experimental in Angular. The overlay wraps `modelContext.registerTool` when it loads, so it records registrations and calls from then on. The overlay has no hook that runs before your app. For a tool registered earlier, it reads the browser's tool list when the browser offers one (`getTools()` or `listTools()`), and the block says **registered before the inspector attached**. Calls to those tools are not recorded. If the browser offers no tool list, a form that registered before the overlay loaded shows no **WebMCP tool** block. To see every registration and call, register the form after the overlay loads, for example on a route you open later. The overlay links a tool to its form by its input schema, or by the form an agent call submits. A tool it cannot link shows under **Other WebMCP tools** in the tab, and in the `inspect-forms` output under **WebMCP**. ### Try WebMCP in the demo diff --git a/apps/docs/src/content/inspectors/router.md b/apps/docs/src/content/inspectors/router.md index 26cde9a5..db593b4a 100644 --- a/apps/docs/src/content/inspectors/router.md +++ b/apps/docs/src/content/inspectors/router.md @@ -226,7 +226,7 @@ The tab lists only the last one, marked **before Pangular Inspector connected**, ### Redaction -The devtools replace query, matrix and fragment values with secret-looking keys with `[redacted]`. They also redact tokens, `Bearer` values, and route params with secret-looking names such as `:token`. You can't replay a navigation with a redacted URL. See [what the devtools redact](../security.md). +The devtools replace query, matrix and fragment values with secret-looking keys with `[redacted]`. They also redact tokens, `Bearer` values, and route params with secret-looking names such as `:token`, in the primary outlet and in named outlets. You can't replay a navigation with a redacted URL. See [what the devtools redact](../security.md). ### History and config caps diff --git a/apps/docs/src/content/inspectors/signals.md b/apps/docs/src/content/inspectors/signals.md index 57752f5f..64f3a14a 100644 --- a/apps/docs/src/content/inspectors/signals.md +++ b/apps/docs/src/content/inspectors/signals.md @@ -229,7 +229,7 @@ Entries are sampled instead of exact in these cases: ### Switch the graph from an agent -The `pangular:highlight` tool also switches the graph to the component it highlights. The picker does not show that choice. Calling `pangular:inspect-signals` with `root` or a route path reads that injector's graph once and does not change what the Signals page shows. +The `pangular:highlight` tool also switches the graph to the component it highlights. The picker does not show that choice. Calling `pangular:inspect-signals` with `root`, a route path, a component the page is not showing, or a CSS `selector` for a component host reads that injector's graph once and does not change what the Signals page shows. ### Find a stuck effect in a root service @@ -244,15 +244,15 @@ The `pangular:highlight` tool also switches the graph to the component it highli ## Agent tools -| Tool or resource | Kind | What it does | -| -------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `pangular:scan-signals` | tool | Signal declarations from source, with signal inputs, models and queries. Pages through a large project with `filter` and `offset`. | -| `pangular:inspect-signals` | tool | The graph the page reported, with edges, resources and history. Takes a host tag, class name, instance id, `root` or a route path. | -| `pangular:watch-signal` | tool | Watches a signal and turns write stacks on or off on a page. | -| `pangular:highlight` | tool | Highlights a component and makes it the target of the graph. | -| `pangular:signal-graph` | resource | The live graph per page. | +| Tool or resource | Kind | What it does | +| -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `pangular:scan-signals` | tool | Signal declarations from source, with signal inputs, models and queries. Pages through a large project with `filter` and `offset`. | +| `pangular:inspect-signals` | tool | The graph of a component or injector, with edges, resources and history. Takes a host tag, class name, instance id, `root`, a route path or a CSS `selector`. | +| `pangular:watch-signal` | tool | Watches a signal and turns write stacks on or off on a page. | +| `pangular:highlight` | tool | Highlights a component and makes it the target of the graph. | +| `pangular:signal-graph` | resource | The live graph per page. | -`inspect-signals` returns the graph of the chosen component. Call `highlight` first to switch it to another component. See [Tools](../agents/tools.md). +`inspect-signals` reads the graph of the component or injector you name, without switching the Signals page. Call `highlight` to switch the page itself. See [Tools](../agents/tools.md). ## Limits and gotchas @@ -268,6 +268,10 @@ Signals join the graph when a template or an effect reads them. If a signal is m The graph shows up to 400 nodes. When Angular reports more, a notice says **Showing 400 of N signals**, and the edges to the rest are left out. The drawing holds up to 120 nodes. Past that, it draws the selected node and as much of its chain as fits, or the first 120 nodes when none is selected, and says **Drawing N of M signals**. The history keeps 50 entries per signal, and the **N changes** count keeps counting past that. +### Secret form fields are masked + +A Signal Forms field keeps its value in a signal with no name, which the graph shows as a `computed` or `linkedSignal` node without a label. When the field is secret (by name, `type="password"`, a credential `autocomplete` or a mask marker), that node, any other node that holds the value, and their history show `[redacted]`. See [Access and redaction](../security.md#components-signals-ngrx-and-pipes). + ### Injector graphs hold effects only The root and route graphs start from the effects registered on that injector. A signal in a root service that no effect reads doesn't appear there. It appears in the graph of a component whose template reads it. diff --git a/apps/docs/src/content/inspectors/ssr-http.md b/apps/docs/src/content/inspectors/ssr-http.md index 176f3a0d..e629d855 100644 --- a/apps/docs/src/content/inspectors/ssr-http.md +++ b/apps/docs/src/content/inspectors/ssr-http.md @@ -180,7 +180,7 @@ The Prerender fallback mode can't be forced. The engine reads render modes from - **App stable after**: the time from navigation start until the app first became stable, which is when hydration is done. It needs `providePangularHttp()`. - Hydrated components and nodes, skipped components, and incremental defer blocks. When a `@defer (hydrate on interaction)` or `(hydrate on hover)` block hydrates, the tab counts its nodes again right away. Blocks with other hydrate triggers show up with the next update. - DOM nodes hydrated and skipped, and `ngSkipHydration` hosts. -- Mismatched components, with the expected and actual DOM. +- Mismatched components, with the expected and actual DOM. A mismatch is named by its component class, such as `ProductCard`, or by the node name (`app-card`, `#text`) when the node hosts no component. - The hydration warnings (NG05xx) Angular logged in the browser. ### TransferState payload diff --git a/apps/docs/src/content/security.md b/apps/docs/src/content/security.md index 8612014e..d0853bd0 100644 --- a/apps/docs/src/content/security.md +++ b/apps/docs/src/content/security.md @@ -297,7 +297,7 @@ These are replaced with `[redacted]` in URLs, params, data and messages: - URL passwords, `Authorization` credentials, JWTs, bearer tokens and long opaque tokens, - route params with secret-looking names. -A secret route param is known from the route config before a navigation is recognized, so link targets and a navigation that was already running when the overlay attached are masked too. A navigation that fails before that (for example inside a lazy route that failed to load) can still show it in its URL. JWTs are masked before long values are cut, so a long token never leaves a readable start behind. +A secret route param is known from the route config before a navigation is recognized, so link targets and a navigation that was already running when the overlay attached are masked too. This covers routes in every outlet, so the token in `/(side:reset/:token)` is masked like the one in `/reset/:token`. A navigation that fails before that (for example inside a lazy route that failed to load) can still show it in its URL. JWTs are masked before long values are cut, so a long token never leaves a readable start behind. A navigation whose URL was redacted cannot be replayed. @@ -313,6 +313,8 @@ TanStack Query keys and mutation variables have positional parts with no name to Component values follow the form masks of the fields in the component, not only their names. When a form field in the component's template is masked by its element (a password field, a credential `autocomplete`, `data-pangular="mask"` or another mask marker), its value is replaced with `[redacted]` wherever it shows in the component's inputs and properties: the `FormGroup` that holds it, the `ngModel` model object and the Signal Forms model. Values such a field held earlier stay masked too (the last 50 on the page). +Signal graphs follow the same form masks. Signal Forms keeps each field's value in a signal of its own, which has no name, so the name rules can't see it. The page masks those values by value instead, before the graph leaves it: the values of the masked fields in the component's template, and of the Signal Forms fields of the component whose name looks secret, or matches `redaction.secretNames`, also when the template doesn't bind them. Such a value shows as `[redacted]` in every node, resource and history entry of the graph, as a whole value and inside objects and strings, and values the fields held earlier stay masked too (the last 50 on the page). This holds for the graph the Signals page shows, for `inspect-signals` and `watch-signal`, the `signal-graph` resource, WebMCP and the static report. Root and route injector graphs mask the values the page already knows as secret. Fields named in `unmask` or marked `data-pangular="unmask"` stay readable. + NgRx signal store method calls in the change log mask their arguments. When the call writes a state key whose name looks secret, at any depth, every argument shows as `[redacted]`, for that call, its earlier entries and every later call of the method. A method that returns a promise counts as making the writes that follow its `await` until the promise settles: if such a write touches a secret key, the arguments of every call of the store still running are masked, also in the entries the panel already received. An `rxMethod` stream returns no promise, so a secret it writes later doesn't mask the arguments it was called with. Otherwise an argument whose parameter name looks secret (`password` in `login(email, password)`) is masked, and values the store holds under secret keys are cut out of the other arguments. The URL and title of the NgRx page, and the request URL of an `httpResource`, are redacted like router URLs. The **Components** tab and the `set-component-property` and `set-signal` tools never write a value you could not see: a name on the path that looks secret, or a value that shows `[redacted]` anywhere, is refused. Write a field next to a secret instead of the object that holds it. See [Editing values](./inspectors/components.md#editing-values). diff --git a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DUv2cyy-.js b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CA8CCnXn.js similarity index 93% rename from extension/ui/assets/browser-agent-rpc-BXhoSh1z-DUv2cyy-.js rename to extension/ui/assets/browser-agent-rpc-BXhoSh1z-CA8CCnXn.js index 31ff7eba..0b1c23a3 100644 --- a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DUv2cyy-.js +++ b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CA8CCnXn.js @@ -1 +1 @@ -import{t as e}from"./index-CLuERur2.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-CgBAozdh.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-CLuERur2.js b/extension/ui/assets/index-CgBAozdh.js similarity index 63% rename from extension/ui/assets/index-CLuERur2.js rename to extension/ui/assets/index-CgBAozdh.js index f62f5e15..4906ce7e 100644 --- a/extension/ui/assets/index-CLuERur2.js +++ b/extension/ui/assets/index-CgBAozdh.js @@ -1,14 +1,14 @@ -(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,a=(e,a)=>{for(var o in a||={})n.call(a,o)&&i(e,o,a[o]);if(t)for(var o of t(a))r.call(a,o)&&i(e,o,a[o]);return e},o=(e,t,n)=>(i(e,typeof t==`symbol`?t:t+``,n),n),s=globalThis;function c(e){let t=s.__Zone_symbol_prefix;return(typeof t==`string`?t:`__zone_symbol__`)+e}function l(){let e=s.performance;function t(t){e&&e.mark&&e.mark(t)}function n(t,n){e&&e.measure&&e.measure(t,n)}t(`Zone`);let r=class e{constructor(e,t){o(this,`_parent`),o(this,`_name`),o(this,`_properties`),o(this,`_zoneDelegate`),this._parent=e,this._name=t?t.name||`unnamed`:``,this._properties=t&&t.properties||{},this._zoneDelegate=new l(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(s.Promise!==pe.ZoneAwarePromise)throw Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=e.current;for(;t.parent;)t=t.parent;return t}static get current(){return he.zone}static get currentTask(){return ge}static __load_patch(r,i,a=!1){if(Object.hasOwn(pe,r)){let e=s[c(`forceDuplicateZoneCheck`)]===!0;if(!a&&e)throw Error(`Already loaded patch: `+r)}else if(!s[`__Zone_disable_`+r]){let a=`Zone:`+r;t(a),pe[r]=i(s,e,me),n(a,a)}}get parent(){return this._parent}get name(){return this._name}get(e){let t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(Object.hasOwn(t._properties,e))return t;t=t._parent}return null}fork(e){if(!e)throw Error(`ZoneSpec required!`);return this._zoneDelegate.fork(this,e)}wrap(e,t){if(typeof e!=`function`)throw Error(`Expecting function got: `+e);let n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}}run(e,t,n,r){he={parent:he,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{he=he.parent}}runGuarded(e,t=null,n,r){he={parent:he,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{he=he.parent}}runTask(e,t,n){if(e.zone!=this)throw Error(`A task can only be run in the zone of creation! (Creation: `+(e.zone||re).name+`; Execution: `+this.name+`)`);let r=e,{type:i,data:{isPeriodic:a=!1,isRefreshable:o=!1}={}}=e;if(e.state===ie&&(i===fe||i===de))return;let s=e.state!=se;s&&r._transitionTo(se,oe);let c=ge;ge=r,he={parent:he,zone:this};try{i==de&&e.data&&!a&&!o&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,r,t,n)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{let t=e.state;if(t!==ie&&t!==le){if(i==fe||a||o&&t===ae)s&&r._transitionTo(oe,se,ae);else{let e=r._zoneDelegates;this._updateTaskCount(r,-1),s&&r._transitionTo(ie,se,ie),o&&(r._zoneDelegates=e)}}he=he.parent,ge=c}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(ae,ie);let t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(t){throw e._transitionTo(le,ae,ie),this._zoneDelegate.handleError(this,t),t}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==ae&&e._transitionTo(oe,ae),e}scheduleMicroTask(e,t,n,r){return this.scheduleTask(new u(ue,e,t,n,r,void 0))}scheduleMacroTask(e,t,n,r,i){return this.scheduleTask(new u(de,e,t,n,r,i))}scheduleEventTask(e,t,n,r,i){return this.scheduleTask(new u(fe,e,t,n,r,i))}cancelTask(e){if(e.zone!=this)throw Error(`A task can only be cancelled in the zone of creation! (Creation: `+(e.zone||re).name+`; Execution: `+this.name+`)`);if(e.state===oe||e.state===se){e._transitionTo(ce,oe,se);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(le,ce),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(ie,ce),e.runCount=-1,e}}_updateTaskCount(e,t){let n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(let r=0;re.hasTask(n,r),onScheduleTask:(e,t,n,r)=>e.scheduleTask(n,r),onInvokeTask:(e,t,n,r,i,a)=>e.invokeTask(n,r,i,a),onCancelTask:(e,t,n,r)=>e.cancelTask(n,r)};class l{constructor(e,t,n){o(this,`_zone`),o(this,`_taskCounts`,{microTask:0,macroTask:0,eventTask:0}),o(this,`_forkDlgt`),o(this,`_forkZS`),o(this,`_forkCurrZone`),o(this,`_interceptDlgt`),o(this,`_interceptZS`),o(this,`_interceptCurrZone`),o(this,`_invokeDlgt`),o(this,`_invokeZS`),o(this,`_invokeCurrZone`),o(this,`_handleErrorDlgt`),o(this,`_handleErrorZS`),o(this,`_handleErrorCurrZone`),o(this,`_scheduleTaskDlgt`),o(this,`_scheduleTaskZS`),o(this,`_scheduleTaskCurrZone`),o(this,`_invokeTaskDlgt`),o(this,`_invokeTaskZS`),o(this,`_invokeTaskCurrZone`),o(this,`_cancelTaskDlgt`),o(this,`_cancelTaskZS`),o(this,`_cancelTaskCurrZone`),o(this,`_hasTaskDlgt`),o(this,`_hasTaskDlgtOwner`),o(this,`_hasTaskZS`),o(this,`_hasTaskCurrZone`),this._zone=e,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this._zone:t._forkCurrZone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this._zone:t._interceptCurrZone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this._zone:t._invokeCurrZone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this._zone:t._handleErrorCurrZone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this._zone:t._scheduleTaskCurrZone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this._zone:t._invokeTaskCurrZone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this._zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let r=n&&n.onHasTask,i=t&&t._hasTaskZS;(r||i)&&(this._hasTaskZS=r?n:a,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,n.onScheduleTask||(this._scheduleTaskZS=a,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this._zone),n.onInvokeTask||(this._invokeTaskZS=a,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this._zone),n.onCancelTask||(this._cancelTaskZS=a,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this._zone))}get zone(){return this._zone}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new i(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,r,i){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,i):t.apply(n,r)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||=t;else if(t.scheduleFn)t.scheduleFn(t);else if(t.type==ue)te(t);else throw Error(`Task is missing scheduleFn.`);return n}invokeTask(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error(`Task is not cancelable`);n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(t){this.handleError(e,t)}}_updateTaskCount(e,t){let n=this._taskCounts,r=n[e],i=n[e]=r+t;if(i<0)throw Error(`More tasks executed then were scheduled.`);if(r==0||i==0){let t={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this._zone,t)}}}class u{constructor(e,t,n,r,i,a){if(o(this,`type`),o(this,`source`),o(this,`invoke`),o(this,`callback`),o(this,`data`),o(this,`scheduleFn`),o(this,`cancelFn`),o(this,`_zone`,null),o(this,`runCount`,0),o(this,`_zoneDelegates`,null),o(this,`_state`,`notScheduled`),this.type=e,this.source=t,this.data=r,this.scheduleFn=i,this.cancelFn=a,!n)throw Error(`callback is not defined`);this.callback=n;let c=this;this.invoke=e===fe&&r&&r.useG?u.invokeTask:function(){return u.invokeTask.call(s,c,this,arguments)}}static invokeTask(e,t,n){e||=this,_e++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{try{_e===1&&!s[m]&&ne()}finally{_e--}}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(ie,ae)}_transitionTo(e,t,n){if(this._state===t||this._state===n)this._state=e,e==ie&&(this._zoneDelegates=null);else throw Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?` or '`+n+`'`:``}, was '${this._state}'.`)}toString(){return this.data&&this.data.handleId!==void 0?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let d=c(`setTimeout`),f=c(`Promise`),p=c(`then`),m=c(`enable_native_microtask_draining`),h=[],g=!1,_;function ee(e){!_&&s[f]&&(_=s[f].resolve(0)),_?(_[p]??_.then).call(_,e):s[d](e,0)}function te(e){let t=s[m],n=t&&h.length===0&&!g,r=!t&&_e===0&&h.length===0;(n||r)&&ee(ne),e&&h.push(e)}function ne(){if(!g){g=!0;try{for(;h.length;){let e=h;h=[];for(let t of e)try{t.zone.runTask(t,null,null)}catch(e){me.onUnhandledError(e)}}}finally{if(s[m])g=!1,me.microtaskDrainDone();else try{me.microtaskDrainDone()}finally{g=!1}}}}let re={name:`NO ZONE`},ie=`notScheduled`,ae=`scheduling`,oe=`scheduled`,se=`running`,ce=`canceling`,le=`unknown`,ue=`microTask`,de=`macroTask`,fe=`eventTask`,pe=Object.create(null),me={symbol:c,currentZoneFrame:()=>he,onUnhandledError:ve,microtaskDrainDone:ve,scheduleMicroTask:te,showUncaughtError:()=>!i[c(`ignoreConsoleErrorUncaughtError`)],patchEventTarget:()=>[],patchOnProperties:ve,patchMethod:()=>ve,bindArguments:()=>[],patchThen:()=>ve,patchMacroTask:()=>ve,patchEventPrototype:()=>ve,getGlobalObjects:()=>void 0,ObjectDefineProperty:()=>ve,ObjectGetOwnPropertyDescriptor:()=>void 0,ObjectCreate:()=>void 0,ArraySlice:()=>[],patchClass:()=>ve,wrapWithCurrentZone:()=>ve,filterProperties:()=>[],attachOriginToPatched:()=>ve,_redefineProperty:()=>ve,patchCallbacks:()=>ve,nativeScheduleMicroTask:ee},he={parent:null,zone:new i(null,null)},ge=null,_e=0;function ve(){}return n(`Zone`,`Zone`),i}function u(){let e=globalThis,t=e[c(`forceDuplicateZoneCheck`)]===!0;if(e.Zone&&(t||typeof e.Zone.__symbol__!=`function`))throw Error(`Zone already loaded.`);return e.Zone??=l(),e.Zone}var d=Object.getOwnPropertyDescriptor,f=Object.defineProperty,p=Object.getPrototypeOf,m=Object.create,h=Array.prototype.slice,g=`addEventListener`,_=`removeEventListener`,ee=c(g),te=c(_),ne=`true`,re=`false`,ie=c(``);function ae(e,t){return Zone.current.wrap(e,t)}function oe(e,t,n,r,i){return Zone.current.scheduleMacroTask(e,t,n,r,i)}var se=c,ce=typeof window<`u`,le=ce?window:void 0,ue=ce&&le||globalThis,de=`removeAttribute`;function fe(e,t){for(let n=e.length-1;n>=0;n--)typeof e[n]==`function`&&(e[n]=ae(e[n],t+`_`+n));return e}function pe(e,t){let n=e.constructor.name;for(let r=0;r{let t=function(){return e.apply(this,fe(arguments,n+`.`+i))};return Oe(t,e),t})(a)}}}function me(e){return e?e.writable===!1?!1:typeof e.get!=`function`||e.set!==void 0:!0}var he=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope,ge=!(`nw`in ue)&&ue.process!==void 0&&ue.process.toString()===`[object process]`,_e=!ge&&!he&&!!(ce&&le.HTMLElement),ve=ue.process!==void 0&&ue.process.toString()===`[object process]`&&!he&&!!(ce&&le.HTMLElement),ye=Object.create(null),be=se(`enable_beforeunload`),xe=function(e){if(e||=ue.event,!e)return;let t=ye[e.type];t||=ye[e.type]=se(`ON_PROPERTY`+e.type);let n=this||e.target||ue,r=n[t],i;if(_e&&n===le&&e.type===`error`){let t=e;i=r&&r.call(this,t.message,t.filename,t.lineno,t.colno,t.error),i===!0&&e.preventDefault()}else i=r&&r.apply(this,arguments),e.type===`beforeunload`&&ue[be]&&typeof i==`string`?e.returnValue=i:i!=null&&!i&&e.preventDefault();return i};function Se(e,t,n){let r=d(e,t);if(!r&&n&&d(n,t)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let i=se(`on`+t+`patched`);if(Object.hasOwn(e,i)&&e[i])return;delete r.writable,delete r.value;let a=r.get,o=r.set,s=t.slice(2),c=ye[s];c||=ye[s]=se(`ON_PROPERTY`+s),r.set=function(t){let n=this;!n&&e===ue&&(n=ue),n&&(typeof n[c]==`function`&&n.removeEventListener(s,xe),o?.call(n,null),n[c]=t,typeof t==`function`&&n.addEventListener(s,xe,!1))},r.get=function(){let n=this;if(!n&&e===ue&&(n=ue),!n)return null;let i=n[c];if(i)return i;if(a){let e=a.call(this);if(e)return r.set.call(this,e),typeof n[de]==`function`&&n.removeAttribute(t),e}return null},f(e,t,r),e[i]=!0}function Ce(e,t,n){if(t)for(let r=0;rfunction(t,r){let a=n(t,r);return a.cbIdx>=0&&typeof r[a.cbIdx]==`function`?oe(a.name,r[a.cbIdx],a,i):e.apply(t,r)})}function Oe(e,t){e[se(`OriginalDelegate`)]=t}function ke(e){return typeof e==`function`}function Ae(e){return typeof e==`number`}var je={useG:!0},Me=Object.create(null),Ne={},Pe=RegExp(`^`+ie+`(\\w+)(true|false)$`),Fe=se(`propagationStopped`),Ie=[`capture`,`once`,`passive`,`signal`];function Le(e,t){let n=(t?t(e):e)+re,r=(t?t(e):e)+ne,i=ie+n,a=ie+r;Me[e]={[re]:i,[ne]:a}}function Re(e,t,n,r){let i=r&&r.add||g,o=r&&r.rm||_,s=r&&r.listeners||`eventListeners`,c=r&&r.rmAll||`removeAllListeners`,l=se(i),u=`.`+i+`:`,d=function(e,t,n){if(e.isRemoved)return;let r=e.callback;typeof r==`object`&&r.handleEvent&&(e.callback=e=>r.handleEvent(e),e.originalDelegate=r);let i;try{e.invoke(e,t,[n])}catch(e){i=e}let a=e.options;if(a&&typeof a==`object`&&a.once){let r=e.originalDelegate?e.originalDelegate:e.callback;t[o].call(t,n.type,r,a)}return i};function f(n,r,i){if(r||=e.event,!r)return;let a=n||r.target||e,o=a[Me[r.type][i?ne:re]];if(o){let e=[];if(o.length===1){let t=d(o[0],a,r);t&&e.push(t)}else{let t=o.slice();for(let n=0;n{throw r})}}}let m=function(e){return f(this,e,!1)},h=function(e){return f(this,e,!0)};function ee(t,n){if(!t)return!1;let r=!0;n&&n.useG!==void 0&&(r=n.useG);let d=n&&n.vh,f=!0;n&&n.chkDup!==void 0&&(f=n.chkDup);let g=!1;n&&n.rt!==void 0&&(g=n.rt);let _=t;for(;_&&!Object.hasOwn(_,i);)_=p(_);if(!_&&t[i]&&(_=t),!_||_[l])return!1;let ee=n&&n.eventNameToString,te={},ae=_[l]=_[i],oe=_[se(o)]=_[o],ce=_[se(s)]=_[s],le=_[se(c)]=_[c],ue;n&&n.prepend&&(ue=_[se(n.prepend)]=_[n.prepend]);function de(e,t){return t?typeof e==`boolean`?{capture:e,passive:!0}:e?(typeof e==`object`&&e.passive!==!1&&(e.passive=!0),e):{passive:!0}:e}let fe=function(e){if(!te.isExisting)return ae.call(te.target,te.eventName,te.capture?h:m,te.options)},pe=function(e){if(!e.isRemoved){let t=Me[e.eventName],n;t&&(n=t[e.capture?ne:re]);let r=n&&e.target[n];if(r){for(let t=0;t_e.zone.cancelTask(_e);t.call(_,`abort`,e,{once:!0}),_e.removeAbortListener=()=>_.removeEventListener(`abort`,e)}if(te.target=null,he&&(he.taskData=null),ae&&(te.options.once=!0),typeof _e.options!=`boolean`&&(_e.options=g),_e.target=l,_e.capture=ie,_e.eventName=u,m&&(_e.originalDelegate=p),c?le.unshift(_e):le.push(_e),s)return l}};return _[i]=we(ae,u,ve,ye,g),ue&&(_.prependListener=we(ue,`.prependListener:`,he,ye,g,!0)),_[o]=function(){let t=this||e,r=arguments[0];n&&n.transferEventName&&(r=n.transferEventName(r));let i=arguments[2],a=i?typeof i==`boolean`||i.capture:!1,o=arguments[1];if(!o)return oe.apply(this,arguments);if(d&&!d(oe,o,t,arguments))return;let s=Me[r],c;s&&(c=s[a?ne:re]);let l=c&&t[c];if(l)for(let e=0;efunction(t,n){t[Fe]=!0,e&&e.apply(t,n)})}function Be(e,t){t.patchMethod(e,`queueMicrotask`,e=>function(e,t){Zone.current.scheduleMicroTask(`queueMicrotask`,t[0])})}var Ve=se(`zoneTask`);function He(e,t,n,r){let i=null,a=null;t+=r,n+=r;let o={};function s(t){let n=t.data;n.args[0]=function(){return t.invoke.apply(this,arguments)};let r=i.apply(e,n.args);return Ae(r)?n.handleId=r:(n.handle=r,n.isRefreshable=ke(r?.refresh)),t}function c(t){let{handle:n,handleId:r}=t.data;return a.call(e,n??r)}i=Ee(e,t,n=>function(i,a){if(ke(a[0])){let e={isRefreshable:!1,isPeriodic:r===`Interval`,delay:r===`Timeout`||r===`Interval`?a[1]||0:void 0,args:a},n=a[0];a[0]=function(){try{return n.apply(this,arguments)}finally{let{handle:t,handleId:n,isPeriodic:r,isRefreshable:i}=e;!r&&!i&&(n?delete o[n]:t&&(t[Ve]=null))}};let i=oe(t,a[0],e,s,c);if(!i)return i;let{handleId:l,handle:u,isRefreshable:d,isPeriodic:f}=i.data;if(l)o[l]=i;else if(u&&(u[Ve]=i,d&&!f)){let e=u.refresh;u.refresh=function(){let{zone:t,state:n}=i;return n===`notScheduled`?(i._state=`scheduled`,t._updateTaskCount(i,1)):n===`running`&&(i._state=`scheduling`),e.call(this)}}return u??l??i}return n.apply(e,a)}),a=Ee(e,n,t=>function(n,r){let i=r[0],a;Ae(i)?(a=o[i],delete o[i]):(a=i?.[Ve],a?i[Ve]=null:a=i),a?.type?a.cancelFn&&a.zone.cancelTask(a):t.apply(e,r)})}function Ue(e,t){let{isBrowser:n,isMix:r}=t.getGlobalObjects();(n||r)&&e.customElements&&`customElements`in e&&t.patchCallbacks(t,e.customElements,`customElements`,`define`,[`connectedCallback`,`disconnectedCallback`,`adoptedCallback`,`attributeChangedCallback`,`formAssociatedCallback`,`formDisabledCallback`,`formResetCallback`,`formStateRestoreCallback`])}function We(e,t){if(Zone[t.symbol(`patchEventTarget`)])return;let{eventNames:n,zoneSymbolEventNames:r,TRUE_STR:i,FALSE_STR:a,ZONE_SYMBOL_PREFIX:o}=t.getGlobalObjects();for(let e=0;et.target===e);if(r.length===0)return t;let i=r[0].ignoreProperties;return t.filter(e=>i.indexOf(e)===-1)}function qe(e,t,n,r){e&&Ce(e,Ke(e,t,n),r)}function Je(e){return Object.getOwnPropertyNames(e).filter(e=>e.startsWith(`on`)&&e.length>2).map(e=>e.substring(2))}function Ye(e,t){if(ge&&!ve||Zone[e.symbol(`patchEvents`)])return;let n=t.__Zone_ignore_on_properties,r=[];if(_e){let e=window;r=r.concat([`Document`,`SVGElement`,`Element`,`HTMLElement`,`HTMLBodyElement`,`HTMLMediaElement`,`HTMLFrameSetElement`,`HTMLFrameElement`,`HTMLIFrameElement`,`HTMLMarqueeElement`,`Worker`]),qe(e,Je(e),n,p(e))}r=r.concat([`XMLHttpRequest`,`XMLHttpRequestEventTarget`,`IDBIndex`,`IDBRequest`,`IDBOpenDBRequest`,`IDBDatabase`,`IDBTransaction`,`IDBCursor`,`WebSocket`]);for(let e=0;e{let t=`clear`;He(e,`set`,t,`Timeout`),He(e,`set`,t,`Interval`),He(e,`set`,t,`Immediate`)}),e.__load_patch(`requestAnimationFrame`,e=>{He(e,`request`,`cancel`,`AnimationFrame`),He(e,`mozRequest`,`mozCancel`,`AnimationFrame`),He(e,`webkitRequest`,`webkitCancel`,`AnimationFrame`)}),e.__load_patch(`blocking`,(e,t)=>{let n=[`alert`,`prompt`,`confirm`];for(let r=0;rfunction(r,a){return t.current.run(n,e,a,i)})}}),e.__load_patch(`EventTarget`,(e,t,n)=>{Ge(e,n),We(e,n);let r=e.XMLHttpRequestEventTarget;r&&r.prototype&&n.patchEventTarget(e,n,[r.prototype])}),e.__load_patch(`MutationObserver`,(e,t,n)=>{Te(`MutationObserver`),Te(`WebKitMutationObserver`)}),e.__load_patch(`IntersectionObserver`,(e,t,n)=>{Te(`IntersectionObserver`)}),e.__load_patch(`FileReader`,(e,t,n)=>{Te(`FileReader`)}),e.__load_patch(`on_property`,(e,t,n)=>{Ye(n,e)}),e.__load_patch(`customElements`,(e,t,n)=>{Ue(e,n)}),e.__load_patch(`XHR`,(e,t)=>{c(e);let n=se(`xhrTask`),r=se(`xhrSync`),i=se(`xhrListener`),a=se(`xhrScheduled`),o=se(`xhrURL`),s=se(`xhrErrorBeforeScheduled`);function c(e){let c=e.XMLHttpRequest;if(!c)return;let l=c.prototype;function u(e){return e[n]}let d=l[ee],f=l[te];if(!d){let t=e.XMLHttpRequestEventTarget;if(t){let e=t.prototype;d=e[ee],f=e[te]}}let p=`readystatechange`,m=`scheduled`;function h(e){let r=e.data,o=r.target;o[a]=!1,o[s]=!1;let c=o[i];d||(d=o[ee],f=o[te]),c&&f.call(o,p,c);let l=o[i]=()=>{if(o.readyState===o.DONE){if(!r.aborted&&o[a]&&e.state===m){let n=o[t.__symbol__(`loadfalse`)];if(o.status!==0&&n&&n.length>0){let i=e.invoke;e.invoke=function(){let n=o[t.__symbol__(`loadfalse`)];for(let t=0;tfunction(e,t){return e[r]=t[2]==0,e[o]=t[1],ne.apply(e,t)}),re=se(`fetchTaskAborting`),ie=se(`fetchTaskScheduling`),ae=Ee(l,`send`,()=>function(e,n){if(t.current[ie]===!0||e[r])return ae.apply(e,n);{let t={target:e,url:e[o],isPeriodic:!1,args:n,aborted:!1},r=oe(`XMLHttpRequest.send`,g,t,h,_);e&&e[s]===!0&&!t.aborted&&r.state===m&&r.invoke()}}),ce=Ee(l,`abort`,()=>function(e,n){let r=u(e);if(r&&typeof r.type==`string`){if(r.cancelFn==null||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(t.current[re]===!0)return ce.apply(e,n)})}}),e.__load_patch(`geolocation`,e=>{e.navigator&&e.navigator.geolocation&&pe(e.navigator.geolocation,[`getCurrentPosition`,`watchPosition`])}),e.__load_patch(`PromiseRejectionEvent`,(e,t)=>{function n(t){return function(n){ze(e,t).forEach(r=>{let i=e.PromiseRejectionEvent;if(i){let e=new i(t,{promise:n.promise,reason:n.rejection});r.invoke(e)}})}}e.PromiseRejectionEvent&&(t[se(`unhandledPromiseRejectionHandler`)]=n(`unhandledrejection`),t[se(`rejectionHandledHandler`)]=n(`rejectionhandled`))}),e.__load_patch(`queueMicrotask`,(e,t,n)=>{Be(e,n)})}function Ze(e){e.__load_patch(`ZoneAwarePromise`,(e,t,n)=>{let r=Object.getOwnPropertyDescriptor,i=Object.defineProperty;function a(e){return e&&e.toString===Object.prototype.toString?(e.constructor&&e.constructor.name||``)+`: `+JSON.stringify(e):e?e.toString():Object.prototype.toString.call(e)}let o=n.symbol,s=[],c=e[o(`DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION`)]!==!1,l=o(`Promise`),u=o(`then`);n.onUnhandledError=e=>{if(n.showUncaughtError()){let t=e&&e.rejection;t&&e.zone&&e.task?console.error(`Unhandled Promise rejection:`,t instanceof Error?t.message:t,`; Zone:`,e.zone.name,`; Task:`,e.task&&e.task.source,`; Value:`,t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;s.length;){let e=s.shift();try{e.zone.runGuarded(()=>{throw e.throwOriginal?e.rejection:e})}catch(e){f(e)}}};let d=o(`unhandledPromiseRejectionHandler`);function f(e){n.onUnhandledError(e);try{let n=t[d];typeof n==`function`&&n.call(this,e)}catch{}}function p(e){return e&&typeof e.then==`function`}function m(e){return e}function h(e){return fe.reject(e)}let g=o(`state`),_=o(`value`),ee=o(`finally`),te=o(`parentPromiseValue`),ne=o(`parentPromiseState`);function re(e,t){return n=>{try{oe(e,t,n)}catch(t){oe(e,!1,t)}}}let ie=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},ae=o(`currentTaskTrace`);function oe(e,r,o){let l=ie();if(e===o)throw TypeError(`Promise resolved with itself`);if(e[g]===null){let u=null;try{(typeof o==`object`||typeof o==`function`)&&(u=o&&o.then)}catch(t){return l(()=>{oe(e,!1,t)})(),e}if(r!==!1&&o instanceof fe&&Object.hasOwn(o,g)&&Object.hasOwn(o,_)&&o[g]!==null)ce(o),oe(e,o[g],o[_]);else if(r!==!1&&typeof u==`function`)try{u.call(o,l(re(e,r)),l(re(e,!1)))}catch(t){l(()=>{oe(e,!1,t)})()}else{e[g]=r;let l=e[_];if(e[_]=o,e[ee]===ee&&r===!0&&(e[g]=e[ne],e[_]=e[te]),r===!1&&o instanceof Error){let e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&i(o,ae,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t{try{let r=e[_],i=!!n&&ee===n[ee];i&&(n[te]=r,n[ne]=a),oe(n,!0,t.run(o,void 0,i&&o!==h&&o!==m?[]:[r]))}catch(e){oe(n,!1,e)}},n)}let ue=function(){},de=e.AggregateError;class fe{static toString(){return`function ZoneAwarePromise() { [native code] }`}static resolve(e){return e instanceof fe?e:oe(new this(null),!0,e)}static reject(e){return oe(new this(null),!1,e)}static withResolvers(){let e={};return e.promise=new fe((t,n)=>{e.resolve=t,e.reject=n}),e}static any(e){if(!e||typeof e[Symbol.iterator]!=`function`)return Promise.reject(new de([],`All promises were rejected`));let t=[],n=0;try{for(let r of e)n++,t.push(fe.resolve(r))}catch{return Promise.reject(new de([],`All promises were rejected`))}if(n===0)return Promise.reject(new de([],`All promises were rejected`));let r=!1,i=[];return new fe((e,a)=>{for(let o=0;o{r||(r=!0,e(t))},e=>{i.push(e),n--,n===0&&(r=!0,a(new de(i,`All promises were rejected`)))})})}static race(e){let t,n,r=new this((e,r)=>{t=e,n=r});function i(e){t(e)}function a(e){n(e)}for(let t of e)p(t)||(t=this.resolve(t)),t.then(i,a);return r}static all(e){return fe.allWithCallback(e)}static allSettled(e){return(this&&this.prototype instanceof fe?this:fe).allWithCallback(e,{thenCallback:e=>({status:`fulfilled`,value:e}),errorCallback:e=>({status:`rejected`,reason:e})})}static allWithCallback(e,t){let n,r,i=new this((e,t)=>{n=e,r=t}),a=2,o=0,s=[];for(let i of e){p(i)||(i=this.resolve(i));let e=o;try{i.then(r=>{s[e]=t?t.thenCallback(r):r,a--,a===0&&n(s)},i=>{t?(s[e]=t.errorCallback(i),a--,a===0&&n(s)):r(i)})}catch(e){r(e)}a++,o++}return a-=2,a===0&&n(s),i}constructor(e){let t=this;if(!(t instanceof fe))throw Error(`Must be an instanceof Promise.`);t[g]=null,t[_]=[];try{let n=ie();e&&e(n(re(t,!0)),n(re(t,!1)))}catch(e){oe(t,!1,e)}}get[Symbol.toStringTag](){return`Promise`}get[Symbol.species](){return fe}then(e,n){let r=this.constructor?.[Symbol.species];(!r||typeof r!=`function`)&&(r=this.constructor||fe);let i=new r(ue),a=t.current;return this[g]==null?this[_].push(a,i,e,n):le(this,a,i,e,n),i}catch(e){return this.then(null,e)}finally(e){let n=this.constructor?.[Symbol.species];(!n||typeof n!=`function`)&&(n=fe);let r=new n(ue);r[ee]=ee;let i=t.current;return this[g]==null?this[_].push(i,r,e,e):le(this,i,r,e,e),r}}fe.resolve=fe.resolve,fe.reject=fe.reject,fe.race=fe.race,fe.all=fe.all;let pe=e[l]=e.Promise;e.Promise=fe;let me=o(`thenPatched`);function he(e){let t=e.prototype,n=r(t,`then`);if(n&&(n.writable===!1||!n.configurable))return;let i=t.then;t[u]=i,e.prototype.then=function(e,t){return new fe((e,t)=>{i.call(this,e,t)}).then(e,t)},e[me]=!0}n.patchThen=he;function ge(e){return function(t,n){let r=e.apply(t,n);if(r instanceof fe)return r;let i=r.constructor;return i[me]||he(i),r}}if(pe){he(pe);let t=pe.try;t&&typeof t==`function`&&(fe.try=t),Ee(e,`fetch`,e=>ge(e))}return Promise[t.__symbol__(`uncaughtPromiseErrors`)]=s,fe})}function Qe(e){e.__load_patch(`toString`,e=>{let t=Function.prototype.toString,n=se(`OriginalDelegate`),r=se(`Promise`),i=se(`Error`),a=function(){if(typeof this==`function`){let a=this[n];if(a)return typeof a==`function`?t.call(a):Object.prototype.toString.call(a);if(this===Promise){let n=e[r];if(n)return t.call(n)}if(this===Error){let n=e[i];if(n)return t.call(n)}}return t.call(this)};a[n]=t,Function.prototype.toString=a;let o=Object.prototype.toString;Object.prototype.toString=function(){return typeof Promise==`function`&&this instanceof Promise?`[object Promise]`:o.call(this)}})}function $e(e,t,n,r,i){let a=Zone.__symbol__(r);if(t[a])return;let o=t[a]=t[r];t[r]=function(a,s,c){return s&&s.prototype&&i.forEach(function(t){let i=`${n}.${r}::`+t,a=s.prototype;try{if(Object.hasOwn(a,t)){let n=e.ObjectGetOwnPropertyDescriptor(a,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,i),e._redefineProperty(s.prototype,t,n)):a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}else a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}catch{}}),o.call(t,a,s,c)},e.attachOriginToPatched(t[r],o)}function et(e){e.__load_patch(`util`,(e,t,n)=>{let r=Je(e);n.patchOnProperties=Ce,n.patchMethod=Ee,n.bindArguments=fe,n.patchMacroTask=De;let i=t.__symbol__(`BLACK_LISTED_EVENTS`),a=t.__symbol__(`UNPATCHED_EVENTS`);e[a]&&(e[i]=e[a]),e[i]&&(t[i]=t[a]=e[i]),n.patchEventPrototype=eee,n.patchEventTarget=Re,n.ObjectDefineProperty=f,n.ObjectGetOwnPropertyDescriptor=d,n.ObjectCreate=m,n.ArraySlice=h,n.patchClass=Te,n.wrapWithCurrentZone=ae,n.filterProperties=Ke,n.attachOriginToPatched=Oe,n._redefineProperty=Object.defineProperty,n.patchCallbacks=$e,n.getGlobalObjects=()=>({globalSources:Ne,zoneSymbolEventNames:Me,eventNames:r,isBrowser:_e,isMix:ve,isNode:ge,TRUE_STR:ne,FALSE_STR:re,ZONE_SYMBOL_PREFIX:ie,ADD_EVENT_LISTENER_STR:g,REMOVE_EVENT_LISTENER_STR:_})})}function tt(e){Ze(e),Qe(e),et(e)}var nt=u();tt(nt),Xe(nt);var rt=(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})(rt||{}),it=(function(e){return e[e.None=0]=`None`,e[e.Const=1]=`Const`,e})(it||{}),at=class{modifiers;constructor(e=it.None){this.modifiers=e}hasModifier(e){return(this.modifiers&e)!==0}},ot=(function(e){return e[e.Dynamic=0]=`Dynamic`,e[e.Bool=1]=`Bool`,e[e.String=2]=`String`,e[e.Int=3]=`Int`,e[e.Number=4]=`Number`,e[e.Function=5]=`Function`,e[e.Inferred=6]=`Inferred`,e[e.None=7]=`None`,e})(ot||{}),st=class extends at{name;constructor(e,t){super(t),this.name=e}visitType(e,t){return e.visitBuiltinType(this,t)}};ot.Dynamic;var ct=new st(ot.Inferred);ot.Bool,ot.Int,ot.Number,ot.String,ot.Function,ot.None;var v=(function(e){return e[e.Equals=0]=`Equals`,e[e.NotEquals=1]=`NotEquals`,e[e.Assign=2]=`Assign`,e[e.Identical=3]=`Identical`,e[e.NotIdentical=4]=`NotIdentical`,e[e.Minus=5]=`Minus`,e[e.Plus=6]=`Plus`,e[e.Divide=7]=`Divide`,e[e.Multiply=8]=`Multiply`,e[e.Modulo=9]=`Modulo`,e[e.And=10]=`And`,e[e.Or=11]=`Or`,e[e.BitwiseOr=12]=`BitwiseOr`,e[e.BitwiseAnd=13]=`BitwiseAnd`,e[e.Lower=14]=`Lower`,e[e.LowerEquals=15]=`LowerEquals`,e[e.Bigger=16]=`Bigger`,e[e.BiggerEquals=17]=`BiggerEquals`,e[e.NullishCoalesce=18]=`NullishCoalesce`,e[e.Exponentiation=19]=`Exponentiation`,e[e.In=20]=`In`,e[e.InstanceOf=21]=`InstanceOf`,e[e.AdditionAssignment=22]=`AdditionAssignment`,e[e.SubtractionAssignment=23]=`SubtractionAssignment`,e[e.MultiplicationAssignment=24]=`MultiplicationAssignment`,e[e.DivisionAssignment=25]=`DivisionAssignment`,e[e.RemainderAssignment=26]=`RemainderAssignment`,e[e.ExponentiationAssignment=27]=`ExponentiationAssignment`,e[e.AndAssignment=28]=`AndAssignment`,e[e.OrAssignment=29]=`OrAssignment`,e[e.NullishCoalesceAssignment=30]=`NullishCoalesceAssignment`,e})(v||{});function lt(e,t){return e==null||t==null?e==t:e.isEquivalent(t)}function ut(e,t,n){let r=e.length;if(r!==t.length)return!1;for(let i=0;ie.isEquivalent(t))}var ft=class{leadingComments;type;sourceSpan;constructor(e,t,n){this.leadingComments=n,this.type=e||null,this.sourceSpan=t||null}prop(e,t){return new nee(this,e,null,t)}key(e,t,n){return new ree(this,e,t,n)}callFn(e,t,n,r){return new ht(this,e,null,t,n,r)}instantiate(e,t,n,r){return new gt(this,e,t,n)}conditional(e,t=null,n,r){return new tee(this,e,t,null,n)}equals(e,t){return new bt(v.Equals,this,e,null,t)}notEquals(e,t){return new bt(v.NotEquals,this,e,null,t)}identical(e,t){return new bt(v.Identical,this,e,null,t)}notIdentical(e,t){return new bt(v.NotIdentical,this,e,null,t)}minus(e,t){return new bt(v.Minus,this,e,null,t)}plus(e,t){return new bt(v.Plus,this,e,null,t)}divide(e,t){return new bt(v.Divide,this,e,null,t)}multiply(e,t){return new bt(v.Multiply,this,e,null,t)}modulo(e,t){return new bt(v.Modulo,this,e,null,t)}power(e,t){return new bt(v.Exponentiation,this,e,null,t)}and(e,t){return new bt(v.And,this,e,null,t)}bitwiseOr(e,t){return new bt(v.BitwiseOr,this,e,null,t)}bitwiseAnd(e,t){return new bt(v.BitwiseAnd,this,e,null,t)}or(e,t){return new bt(v.Or,this,e,null,t)}lower(e,t){return new bt(v.Lower,this,e,null,t)}lowerEquals(e,t){return new bt(v.LowerEquals,this,e,null,t)}bigger(e,t){return new bt(v.Bigger,this,e,null,t)}biggerEquals(e,t){return new bt(v.BiggerEquals,this,e,null,t)}isBlank(e){return this.equals(cee,e)}nullishCoalesce(e,t){return new bt(v.NullishCoalesce,this,e,null,t)}toStmt(e){return new Ct(this,null,e)}},pt=class e extends ft{name;constructor(e,t,n,r){super(t,n,r),this.name=e}isEquivalent(t){return t instanceof e&&this.name===t.name}isConstant(){return!1}visitExpression(e,t){return e.visitReadVarExpr(this,t)}clone(){return new e(this.name,this.type,this.sourceSpan)}set(e){return new bt(v.Assign,this,e,null,this.sourceSpan)}},mt=class e extends ft{expr;constructor(e,t,n,r){super(t,n,r),this.expr=e}visitExpression(e,t){return e.visitTypeofExpr(this,t)}isEquivalent(t){return t instanceof e&&t.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new e(this.expr.clone())}},ht=class e extends ft{fn;args;pure;isOptional;constructor(e,t,n,r,i=!1,a,o=!1){super(n,r,a),this.fn=e,this.args=t,this.pure=i,this.isOptional=o}get receiver(){return this.fn}isEquivalent(t){return t instanceof e&&this.fn.isEquivalent(t.fn)&&dt(this.args,t.args)&&this.pure===t.pure}isConstant(){return!1}visitExpression(e,t){return e.visitInvokeFunctionExpr(this,t)}clone(){return new e(this.fn.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan,this.pure,[],this.isOptional)}},gt=class e extends ft{classExpr;args;constructor(e,t,n,r,i){super(n,r,i),this.classExpr=e,this.args=t}isEquivalent(t){return t instanceof e&&this.classExpr.isEquivalent(t.classExpr)&&dt(this.args,t.args)}isConstant(){return!1}visitExpression(e,t){return e.visitInstantiateExpr(this,t)}clone(){return new e(this.classExpr.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan)}},_t=class e extends ft{body;flags;constructor(e,t,n,r){super(null,n,r),this.body=e,this.flags=t}isEquivalent(t){return t instanceof e&&this.body===t.body&&this.flags===t.flags}isConstant(){return!0}visitExpression(e,t){return e.visitRegularExpressionLiteral(this,t)}clone(){return new e(this.body,this.flags,this.sourceSpan)}},vt=class e extends ft{value;constructor(e,t,n,r){super(t,n,r),this.value=e}isEquivalent(t){return t instanceof e&&this.value===t.value}isConstant(){return!0}visitExpression(e,t){return e.visitLiteralExpr(this,t)}clone(){return new e(this.value,this.type,this.sourceSpan)}},yt=class e extends ft{value;typeParams;constructor(e,t,n=null,r,i){super(t,r,i),this.value=e,this.typeParams=n}isEquivalent(t){return t instanceof e&&this.value.name===t.value.name&&this.value.moduleName===t.value.moduleName}isConstant(){return!1}visitExpression(e,t){return e.visitExternalExpr(this,t)}clone(){return new e(this.value,this.type,this.typeParams,this.sourceSpan)}},tee=class e extends ft{condition;falseCase;trueCase;constructor(e,t,n=null,r,i,a){super(r||t.type,i,a),this.condition=e,this.falseCase=n,this.trueCase=t}isEquivalent(t){return t instanceof e&&this.condition.isEquivalent(t.condition)&&this.trueCase.isEquivalent(t.trueCase)&<(this.falseCase,t.falseCase)}isConstant(){return!1}visitExpression(e,t){return e.visitConditionalExpr(this,t)}clone(){return new e(this.condition.clone(),this.trueCase.clone(),this.falseCase?.clone(),this.type,this.sourceSpan)}},bt=class e extends ft{operator;rhs;lhs;constructor(e,t,n,r,i,a){super(r||t.type,i,a),this.operator=e,this.rhs=n,this.lhs=t}isEquivalent(t){return t instanceof e&&this.operator===t.operator&&this.lhs.isEquivalent(t.lhs)&&this.rhs.isEquivalent(t.rhs)}isConstant(){return!1}visitExpression(e,t){return e.visitBinaryOperatorExpr(this,t)}clone(){return new e(this.operator,this.lhs.clone(),this.rhs.clone(),this.type,this.sourceSpan)}isAssignment(){let e=this.operator;return e===v.Assign||e===v.AdditionAssignment||e===v.SubtractionAssignment||e===v.MultiplicationAssignment||e===v.DivisionAssignment||e===v.RemainderAssignment||e===v.ExponentiationAssignment||e===v.AndAssignment||e===v.OrAssignment||e===v.NullishCoalesceAssignment}},nee=class e extends ft{receiver;name;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.name=t,this.isOptional=a}get index(){return this.name}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.name===t.name&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadPropExpr(this,t)}set(e){return new bt(v.Assign,this.receiver.prop(this.name),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.name,this.type,this.sourceSpan,[],this.isOptional)}},ree=class e extends ft{receiver;index;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.index=t,this.isOptional=a}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.index.isEquivalent(t.index)&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadKeyExpr(this,t)}set(e){return new bt(v.Assign,this.receiver.key(this.index),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.index.clone(),this.type,this.sourceSpan,[],this.isOptional)}},iee=class e extends ft{entries;constructor(e,t,n,r){super(t,n,r),this.entries=e}isConstant(){return this.entries.every(e=>e.isConstant())}isEquivalent(t){return t instanceof e&&dt(this.entries,t.entries)}visitExpression(e,t){return e.visitLiteralArrayExpr(this,t)}clone(){return new e(this.entries.map(e=>e.clone()),this.type,this.sourceSpan)}},aee=class e{expression;constructor(e){this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}clone(){return new e(this.expression.clone())}isConstant(){return this.expression.isConstant()}},oee=class e extends ft{entries;valueType=null;constructor(e,t,n,r){super(t,n,r),this.entries=e,t&&(this.valueType=t.valueType)}isEquivalent(t){return t instanceof e&&dt(this.entries,t.entries)}isConstant(){return this.entries.every(e=>e.isConstant())}visitExpression(e,t){return e.visitLiteralMapExpr(this,t)}clone(){let t=this.entries.map(e=>e.clone());return new e(t,this.type,this.sourceSpan)}},see=class e extends ft{expression;constructor(e,t,n){super(null,t,n),this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}isConstant(){return this.expression.isConstant()}visitExpression(e,t){return e.visitSpreadElementExpr(this,t)}clone(){return new e(this.expression.clone(),this.sourceSpan)}},cee=new vt(null,ct,null),xt=(function(e){return e[e.None=0]=`None`,e[e.Final=1]=`Final`,e[e.Private=2]=`Private`,e[e.Exported=4]=`Exported`,e[e.Static=8]=`Static`,e})(xt||{}),St=class{modifiers;sourceSpan;leadingComments;constructor(e=xt.None,t=null,n){this.modifiers=e,this.sourceSpan=t,this.leadingComments=n}hasModifier(e){return(this.modifiers&e)!==0}addLeadingComment(e){this.leadingComments=this.leadingComments??[],this.leadingComments.push(e)}},Ct=class e extends St{expr;constructor(e,t,n){super(xt.None,t,n),this.expr=e}isEquivalent(t){return t instanceof e&&this.expr.isEquivalent(t.expr)}visitStatement(e,t){return e.visitExpressionStmt(this,t)}};(class e{static INSTANCE=new e;keyOf(e){if(e instanceof vt&&typeof e.value==`string`)return`"${e.value}"`;if(e instanceof vt)return String(e.value);if(e instanceof _t)return`/${e.body}/${e.flags??``}`;if(e instanceof iee){let t=[];for(let n of e.entries)t.push(this.keyOf(n));return`[${t.join(`,`)}]`}if(e instanceof oee){let t=[];for(let n of e.entries)if(n instanceof aee)t.push(`...`+this.keyOf(n.expression));else{let e=n.key;n.quoted&&(e=`"${e}"`),t.push(e+`:`+this.keyOf(n.value))}return`{${t.join(`,`)}}`}if(e instanceof yt)return`import("${e.value.moduleName}", ${e.value.name})`;if(e instanceof pt)return`read(${e.name})`;if(e instanceof mt)return`typeof(${this.keyOf(e.expr)})`;if(e instanceof see)return`...${this.keyOf(e.expression)}`;throw Error(`${this.constructor.name} does not handle expressions of type ${e.constructor.name}`)}});var y=`@angular/core`,b=(()=>{class e{static core={name:null,moduleName:y};static namespaceHTML={name:`ɵɵnamespaceHTML`,moduleName:y};static namespaceMathML={name:`ɵɵnamespaceMathML`,moduleName:y};static namespaceSVG={name:`ɵɵnamespaceSVG`,moduleName:y};static element={name:`ɵɵelement`,moduleName:y};static elementStart={name:`ɵɵelementStart`,moduleName:y};static elementEnd={name:`ɵɵelementEnd`,moduleName:y};static foreignComponent={name:`ɵɵforeignComponent`,moduleName:y};static foreignContent={name:`ɵɵforeignContent`,moduleName:y};static foreignContentFn={name:`ɵɵforeignContentFn`,moduleName:y};static domElement={name:`ɵɵdomElement`,moduleName:y};static domElementStart={name:`ɵɵdomElementStart`,moduleName:y};static domElementEnd={name:`ɵɵdomElementEnd`,moduleName:y};static domElementContainer={name:`ɵɵdomElementContainer`,moduleName:y};static domElementContainerStart={name:`ɵɵdomElementContainerStart`,moduleName:y};static domElementContainerEnd={name:`ɵɵdomElementContainerEnd`,moduleName:y};static domTemplate={name:`ɵɵdomTemplate`,moduleName:y};static domListener={name:`ɵɵdomListener`,moduleName:y};static advance={name:`ɵɵadvance`,moduleName:y};static syntheticHostProperty={name:`ɵɵsyntheticHostProperty`,moduleName:y};static syntheticHostListener={name:`ɵɵsyntheticHostListener`,moduleName:y};static attribute={name:`ɵɵattribute`,moduleName:y};static classProp={name:`ɵɵclassProp`,moduleName:y};static elementContainerStart={name:`ɵɵelementContainerStart`,moduleName:y};static elementContainerEnd={name:`ɵɵelementContainerEnd`,moduleName:y};static elementContainer={name:`ɵɵelementContainer`,moduleName:y};static styleMap={name:`ɵɵstyleMap`,moduleName:y};static classMap={name:`ɵɵclassMap`,moduleName:y};static styleProp={name:`ɵɵstyleProp`,moduleName:y};static interpolate={name:`ɵɵinterpolate`,moduleName:y};static interpolate1={name:`ɵɵinterpolate1`,moduleName:y};static interpolate2={name:`ɵɵinterpolate2`,moduleName:y};static interpolate3={name:`ɵɵinterpolate3`,moduleName:y};static interpolate4={name:`ɵɵinterpolate4`,moduleName:y};static interpolate5={name:`ɵɵinterpolate5`,moduleName:y};static interpolate6={name:`ɵɵinterpolate6`,moduleName:y};static interpolate7={name:`ɵɵinterpolate7`,moduleName:y};static interpolate8={name:`ɵɵinterpolate8`,moduleName:y};static interpolateV={name:`ɵɵinterpolateV`,moduleName:y};static nextContext={name:`ɵɵnextContext`,moduleName:y};static resetView={name:`ɵɵresetView`,moduleName:y};static templateCreate={name:`ɵɵtemplate`,moduleName:y};static defer={name:`ɵɵdefer`,moduleName:y};static deferWhen={name:`ɵɵdeferWhen`,moduleName:y};static deferOnIdle={name:`ɵɵdeferOnIdle`,moduleName:y};static deferOnImmediate={name:`ɵɵdeferOnImmediate`,moduleName:y};static deferOnTimer={name:`ɵɵdeferOnTimer`,moduleName:y};static deferOnHover={name:`ɵɵdeferOnHover`,moduleName:y};static deferOnInteraction={name:`ɵɵdeferOnInteraction`,moduleName:y};static deferOnViewport={name:`ɵɵdeferOnViewport`,moduleName:y};static deferPrefetchWhen={name:`ɵɵdeferPrefetchWhen`,moduleName:y};static deferPrefetchOnIdle={name:`ɵɵdeferPrefetchOnIdle`,moduleName:y};static deferPrefetchOnImmediate={name:`ɵɵdeferPrefetchOnImmediate`,moduleName:y};static deferPrefetchOnTimer={name:`ɵɵdeferPrefetchOnTimer`,moduleName:y};static deferPrefetchOnHover={name:`ɵɵdeferPrefetchOnHover`,moduleName:y};static deferPrefetchOnInteraction={name:`ɵɵdeferPrefetchOnInteraction`,moduleName:y};static deferPrefetchOnViewport={name:`ɵɵdeferPrefetchOnViewport`,moduleName:y};static deferHydrateWhen={name:`ɵɵdeferHydrateWhen`,moduleName:y};static deferHydrateNever={name:`ɵɵdeferHydrateNever`,moduleName:y};static deferHydrateOnIdle={name:`ɵɵdeferHydrateOnIdle`,moduleName:y};static deferHydrateOnImmediate={name:`ɵɵdeferHydrateOnImmediate`,moduleName:y};static deferHydrateOnTimer={name:`ɵɵdeferHydrateOnTimer`,moduleName:y};static deferHydrateOnHover={name:`ɵɵdeferHydrateOnHover`,moduleName:y};static deferHydrateOnInteraction={name:`ɵɵdeferHydrateOnInteraction`,moduleName:y};static deferHydrateOnViewport={name:`ɵɵdeferHydrateOnViewport`,moduleName:y};static deferEnableTimerScheduling={name:`ɵɵdeferEnableTimerScheduling`,moduleName:y};static enableIncrementalHydrationRuntime={name:`ɵɵenableIncrementalHydrationRuntime`,moduleName:y};static conditionalCreate={name:`ɵɵconditionalCreate`,moduleName:y};static conditionalBranchCreate={name:`ɵɵconditionalBranchCreate`,moduleName:y};static conditional={name:`ɵɵconditional`,moduleName:y};static repeater={name:`ɵɵrepeater`,moduleName:y};static repeaterCreate={name:`ɵɵrepeaterCreate`,moduleName:y};static repeaterTrackByIndex={name:`ɵɵrepeaterTrackByIndex`,moduleName:y};static repeaterTrackByIdentity={name:`ɵɵrepeaterTrackByIdentity`,moduleName:y};static componentInstance={name:`ɵɵcomponentInstance`,moduleName:y};static text={name:`ɵɵtext`,moduleName:y};static enableBindings={name:`ɵɵenableBindings`,moduleName:y};static disableBindings={name:`ɵɵdisableBindings`,moduleName:y};static getCurrentView={name:`ɵɵgetCurrentView`,moduleName:y};static textInterpolate={name:`ɵɵtextInterpolate`,moduleName:y};static textInterpolate1={name:`ɵɵtextInterpolate1`,moduleName:y};static textInterpolate2={name:`ɵɵtextInterpolate2`,moduleName:y};static textInterpolate3={name:`ɵɵtextInterpolate3`,moduleName:y};static textInterpolate4={name:`ɵɵtextInterpolate4`,moduleName:y};static textInterpolate5={name:`ɵɵtextInterpolate5`,moduleName:y};static textInterpolate6={name:`ɵɵtextInterpolate6`,moduleName:y};static textInterpolate7={name:`ɵɵtextInterpolate7`,moduleName:y};static textInterpolate8={name:`ɵɵtextInterpolate8`,moduleName:y};static textInterpolateV={name:`ɵɵtextInterpolateV`,moduleName:y};static restoreView={name:`ɵɵrestoreView`,moduleName:y};static pureFunction0={name:`ɵɵpureFunction0`,moduleName:y};static pureFunction1={name:`ɵɵpureFunction1`,moduleName:y};static pureFunction2={name:`ɵɵpureFunction2`,moduleName:y};static pureFunction3={name:`ɵɵpureFunction3`,moduleName:y};static pureFunction4={name:`ɵɵpureFunction4`,moduleName:y};static pureFunction5={name:`ɵɵpureFunction5`,moduleName:y};static pureFunction6={name:`ɵɵpureFunction6`,moduleName:y};static pureFunction7={name:`ɵɵpureFunction7`,moduleName:y};static pureFunction8={name:`ɵɵpureFunction8`,moduleName:y};static pureFunctionV={name:`ɵɵpureFunctionV`,moduleName:y};static pipeBind1={name:`ɵɵpipeBind1`,moduleName:y};static pipeBind2={name:`ɵɵpipeBind2`,moduleName:y};static pipeBind3={name:`ɵɵpipeBind3`,moduleName:y};static pipeBind4={name:`ɵɵpipeBind4`,moduleName:y};static pipeBindV={name:`ɵɵpipeBindV`,moduleName:y};static domProperty={name:`ɵɵdomProperty`,moduleName:y};static ariaProperty={name:`ɵɵariaProperty`,moduleName:y};static property={name:`ɵɵproperty`,moduleName:y};static control={name:`ɵɵcontrol`,moduleName:y};static controlCreate={name:`ɵɵcontrolCreate`,moduleName:y};static animationEnterListener={name:`ɵɵanimateEnterListener`,moduleName:y};static animationLeaveListener={name:`ɵɵanimateLeaveListener`,moduleName:y};static animationEnter={name:`ɵɵanimateEnter`,moduleName:y};static animationLeave={name:`ɵɵanimateLeave`,moduleName:y};static i18n={name:`ɵɵi18n`,moduleName:y};static i18nAttributes={name:`ɵɵi18nAttributes`,moduleName:y};static i18nExp={name:`ɵɵi18nExp`,moduleName:y};static i18nStart={name:`ɵɵi18nStart`,moduleName:y};static i18nEnd={name:`ɵɵi18nEnd`,moduleName:y};static i18nApply={name:`ɵɵi18nApply`,moduleName:y};static i18nPostprocess={name:`ɵɵi18nPostprocess`,moduleName:y};static pipe={name:`ɵɵpipe`,moduleName:y};static projection={name:`ɵɵprojection`,moduleName:y};static projectionDef={name:`ɵɵprojectionDef`,moduleName:y};static reference={name:`ɵɵreference`,moduleName:y};static inject={name:`ɵɵinject`,moduleName:y};static injectAttribute={name:`ɵɵinjectAttribute`,moduleName:y};static directiveInject={name:`ɵɵdirectiveInject`,moduleName:y};static invalidFactory={name:`ɵɵinvalidFactory`,moduleName:y};static invalidFactoryDep={name:`ɵɵinvalidFactoryDep`,moduleName:y};static templateRefExtractor={name:`ɵɵtemplateRefExtractor`,moduleName:y};static forwardRef={name:`forwardRef`,moduleName:y};static resolveForwardRef={name:`resolveForwardRef`,moduleName:y};static replaceMetadata={name:`ɵɵreplaceMetadata`,moduleName:y};static getReplaceMetadataURL={name:`ɵɵgetReplaceMetadataURL`,moduleName:y};static ɵɵdefineInjectable={name:`ɵɵdefineInjectable`,moduleName:y};static declareInjectable={name:`ɵɵngDeclareInjectable`,moduleName:y};static InjectableDeclaration={name:`ɵɵInjectableDeclaration`,moduleName:y};static defineService={name:`ɵɵdefineService`,moduleName:y};static declareService={name:`ɵɵngDeclareService`,moduleName:y};static resolveWindow={name:`ɵɵresolveWindow`,moduleName:y};static resolveDocument={name:`ɵɵresolveDocument`,moduleName:y};static resolveBody={name:`ɵɵresolveBody`,moduleName:y};static getComponentDepsFactory={name:`ɵɵgetComponentDepsFactory`,moduleName:y};static defineComponent={name:`ɵɵdefineComponent`,moduleName:y};static declareComponent={name:`ɵɵngDeclareComponent`,moduleName:y};static setComponentScope={name:`ɵɵsetComponentScope`,moduleName:y};static ChangeDetectionStrategy={name:`ChangeDetectionStrategy`,moduleName:y};static ViewEncapsulation={name:`ViewEncapsulation`,moduleName:y};static ComponentDeclaration={name:`ɵɵComponentDeclaration`,moduleName:y};static FactoryDeclaration={name:`ɵɵFactoryDeclaration`,moduleName:y};static declareFactory={name:`ɵɵngDeclareFactory`,moduleName:y};static FactoryTarget={name:`ɵɵFactoryTarget`,moduleName:y};static defineDirective={name:`ɵɵdefineDirective`,moduleName:y};static declareDirective={name:`ɵɵngDeclareDirective`,moduleName:y};static DirectiveDeclaration={name:`ɵɵDirectiveDeclaration`,moduleName:y};static InjectorDef={name:`ɵɵInjectorDef`,moduleName:y};static InjectorDeclaration={name:`ɵɵInjectorDeclaration`,moduleName:y};static defineInjector={name:`ɵɵdefineInjector`,moduleName:y};static declareInjector={name:`ɵɵngDeclareInjector`,moduleName:y};static NgModuleDeclaration={name:`ɵɵNgModuleDeclaration`,moduleName:y};static ModuleWithProviders={name:`ModuleWithProviders`,moduleName:y};static defineNgModule={name:`ɵɵdefineNgModule`,moduleName:y};static declareNgModule={name:`ɵɵngDeclareNgModule`,moduleName:y};static setNgModuleScope={name:`ɵɵsetNgModuleScope`,moduleName:y};static registerNgModuleType={name:`ɵɵregisterNgModuleType`,moduleName:y};static PipeDeclaration={name:`ɵɵPipeDeclaration`,moduleName:y};static definePipe={name:`ɵɵdefinePipe`,moduleName:y};static declarePipe={name:`ɵɵngDeclarePipe`,moduleName:y};static declareClassMetadata={name:`ɵɵngDeclareClassMetadata`,moduleName:y};static declareClassMetadataAsync={name:`ɵɵngDeclareClassMetadataAsync`,moduleName:y};static setClassMetadata={name:`ɵsetClassMetadata`,moduleName:y};static setClassMetadataAsync={name:`ɵsetClassMetadataAsync`,moduleName:y};static setClassDebugInfo={name:`ɵsetClassDebugInfo`,moduleName:y};static queryRefresh={name:`ɵɵqueryRefresh`,moduleName:y};static viewQuery={name:`ɵɵviewQuery`,moduleName:y};static loadQuery={name:`ɵɵloadQuery`,moduleName:y};static contentQuery={name:`ɵɵcontentQuery`,moduleName:y};static viewQuerySignal={name:`ɵɵviewQuerySignal`,moduleName:y};static contentQuerySignal={name:`ɵɵcontentQuerySignal`,moduleName:y};static queryAdvance={name:`ɵɵqueryAdvance`,moduleName:y};static twoWayProperty={name:`ɵɵtwoWayProperty`,moduleName:y};static twoWayBindingSet={name:`ɵɵtwoWayBindingSet`,moduleName:y};static twoWayListener={name:`ɵɵtwoWayListener`,moduleName:y};static declareLet={name:`ɵɵdeclareLet`,moduleName:y};static storeLet={name:`ɵɵstoreLet`,moduleName:y};static readContextLet={name:`ɵɵreadContextLet`,moduleName:y};static arrowFunction={name:`ɵɵarrowFunction`,moduleName:y};static attachSourceLocations={name:`ɵɵattachSourceLocations`,moduleName:y};static NgOnChangesFeature={name:`ɵɵNgOnChangesFeature`,moduleName:y};static ControlFeature={name:`ɵɵControlFeature`,moduleName:y};static InheritDefinitionFeature={name:`ɵɵInheritDefinitionFeature`,moduleName:y};static ProvidersFeature={name:`ɵɵProvidersFeature`,moduleName:y};static HostDirectivesFeature={name:`ɵɵHostDirectivesFeature`,moduleName:y};static ExternalStylesFeature={name:`ɵɵExternalStylesFeature`,moduleName:y};static listener={name:`ɵɵlistener`,moduleName:y};static getInheritedFactory={name:`ɵɵgetInheritedFactory`,moduleName:y};static sanitizeHtml={name:`ɵɵsanitizeHtml`,moduleName:y};static sanitizeStyle={name:`ɵɵsanitizeStyle`,moduleName:y};static validateAttribute={name:`ɵɵvalidateAttribute`,moduleName:y};static sanitizeResourceUrl={name:`ɵɵsanitizeResourceUrl`,moduleName:y};static sanitizeScript={name:`ɵɵsanitizeScript`,moduleName:y};static sanitizeUrl={name:`ɵɵsanitizeUrl`,moduleName:y};static sanitizeUrlOrResourceUrl={name:`ɵɵsanitizeUrlOrResourceUrl`,moduleName:y};static trustConstantHtml={name:`ɵɵtrustConstantHtml`,moduleName:y};static trustConstantResourceUrl={name:`ɵɵtrustConstantResourceUrl`,moduleName:y};static inputDecorator={name:`Input`,moduleName:y};static outputDecorator={name:`Output`,moduleName:y};static viewChildDecorator={name:`ViewChild`,moduleName:y};static viewChildrenDecorator={name:`ViewChildren`,moduleName:y};static contentChildDecorator={name:`ContentChild`,moduleName:y};static contentChildrenDecorator={name:`ContentChildren`,moduleName:y};static InputSignalBrandWriteType={name:`ɵINPUT_SIGNAL_BRAND_WRITE_TYPE`,moduleName:y};static UnwrapDirectiveSignalInputs={name:`ɵUnwrapDirectiveSignalInputs`,moduleName:y};static unwrapWritableSignal={name:`ɵunwrapWritableSignal`,moduleName:y};static assertType={name:`ɵassertType`,moduleName:y}}return e})();v.And,v.Bigger,v.BiggerEquals,v.BitwiseOr,v.BitwiseAnd,v.Divide,v.Assign,v.Equals,v.Identical,v.Lower,v.LowerEquals,v.Minus,v.Modulo,v.Exponentiation,v.Multiply,v.NotEquals,v.NotIdentical,v.NullishCoalesce,v.Or,v.Plus,v.In,v.InstanceOf,v.AdditionAssignment,v.SubtractionAssignment,v.MultiplicationAssignment,v.DivisionAssignment,v.RemainderAssignment,v.ExponentiationAssignment,v.AndAssignment,v.OrAssignment,v.NullishCoalesceAssignment;var wt=class{span;sourceSpan;constructor(e,t){this.span=e,this.sourceSpan=t}toString(){return`AST`}},Tt=class extends wt{receiver;args;argumentSpan;constructor(e,t,n,r,i){super(e,t),this.receiver=n,this.args=r,this.argumentSpan=i}visit(e,t=null){return e.visitCall(this,t)}},Et=(function(e){return e[e.Property=0]=`Property`,e[e.Attribute=1]=`Attribute`,e[e.Class=2]=`Class`,e[e.Style=3]=`Style`,e[e.LegacyAnimation=4]=`LegacyAnimation`,e[e.TwoWay=5]=`TwoWay`,e[e.Animation=6]=`Animation`,e})(Et||{}),Dt=`(:(where|is)\\()?`,Ot=`-shadowcsshost`,kt=`-shadowcsscontext`,At=`[^)(]*`,jt=String.raw`(?:\(${At}\)|${At})+?`,Mt=String.raw`(?:\(${jt}\)|${At})+?`,Nt=String.raw`(?:\((${Mt})\))`;String.raw`(:nth-[-\w]+)`+Nt,Ot+Nt+``,`${Dt}`,kt+Nt+``;var x=(function(e){return e[e.ListEnd=0]=`ListEnd`,e[e.Statement=1]=`Statement`,e[e.Variable=2]=`Variable`,e[e.ElementStart=3]=`ElementStart`,e[e.Element=4]=`Element`,e[e.ForeignComponent=5]=`ForeignComponent`,e[e.Template=6]=`Template`,e[e.ElementEnd=7]=`ElementEnd`,e[e.ContainerStart=8]=`ContainerStart`,e[e.Container=9]=`Container`,e[e.ContainerEnd=10]=`ContainerEnd`,e[e.DisableBindings=11]=`DisableBindings`,e[e.ConditionalCreate=12]=`ConditionalCreate`,e[e.ConditionalBranchCreate=13]=`ConditionalBranchCreate`,e[e.Conditional=14]=`Conditional`,e[e.EnableBindings=15]=`EnableBindings`,e[e.Text=16]=`Text`,e[e.Listener=17]=`Listener`,e[e.InterpolateText=18]=`InterpolateText`,e[e.Binding=19]=`Binding`,e[e.Property=20]=`Property`,e[e.StyleProp=21]=`StyleProp`,e[e.ClassProp=22]=`ClassProp`,e[e.StyleMap=23]=`StyleMap`,e[e.ClassMap=24]=`ClassMap`,e[e.Advance=25]=`Advance`,e[e.Pipe=26]=`Pipe`,e[e.Attribute=27]=`Attribute`,e[e.ExtractedAttribute=28]=`ExtractedAttribute`,e[e.Defer=29]=`Defer`,e[e.DeferOn=30]=`DeferOn`,e[e.DeferWhen=31]=`DeferWhen`,e[e.I18nMessage=32]=`I18nMessage`,e[e.DomProperty=33]=`DomProperty`,e[e.Namespace=34]=`Namespace`,e[e.ProjectionDef=35]=`ProjectionDef`,e[e.EnableIncrementalHydrationRuntime=36]=`EnableIncrementalHydrationRuntime`,e[e.Projection=37]=`Projection`,e[e.Content=38]=`Content`,e[e.RepeaterCreate=39]=`RepeaterCreate`,e[e.Repeater=40]=`Repeater`,e[e.TwoWayProperty=41]=`TwoWayProperty`,e[e.TwoWayListener=42]=`TwoWayListener`,e[e.DeclareLet=43]=`DeclareLet`,e[e.StoreLet=44]=`StoreLet`,e[e.I18nStart=45]=`I18nStart`,e[e.I18n=46]=`I18n`,e[e.I18nEnd=47]=`I18nEnd`,e[e.I18nExpression=48]=`I18nExpression`,e[e.I18nApply=49]=`I18nApply`,e[e.IcuStart=50]=`IcuStart`,e[e.IcuEnd=51]=`IcuEnd`,e[e.IcuPlaceholder=52]=`IcuPlaceholder`,e[e.I18nContext=53]=`I18nContext`,e[e.I18nAttributes=54]=`I18nAttributes`,e[e.SourceLocation=55]=`SourceLocation`,e[e.Animation=56]=`Animation`,e[e.AnimationString=57]=`AnimationString`,e[e.AnimationBinding=58]=`AnimationBinding`,e[e.AnimationListener=59]=`AnimationListener`,e[e.Control=60]=`Control`,e[e.ControlCreate=61]=`ControlCreate`,e})(x||{}),Pt=(function(e){return e[e.LexicalRead=0]=`LexicalRead`,e[e.Context=1]=`Context`,e[e.TrackContext=2]=`TrackContext`,e[e.ReadVariable=3]=`ReadVariable`,e[e.NextContext=4]=`NextContext`,e[e.Reference=5]=`Reference`,e[e.StoreLet=6]=`StoreLet`,e[e.ContextLetReference=7]=`ContextLetReference`,e[e.GetCurrentView=8]=`GetCurrentView`,e[e.RestoreView=9]=`RestoreView`,e[e.ResetView=10]=`ResetView`,e[e.PureFunctionExpr=11]=`PureFunctionExpr`,e[e.PureFunctionParameterExpr=12]=`PureFunctionParameterExpr`,e[e.PipeBinding=13]=`PipeBinding`,e[e.PipeBindingVariadic=14]=`PipeBindingVariadic`,e[e.SafePropertyRead=15]=`SafePropertyRead`,e[e.SafeKeyedRead=16]=`SafeKeyedRead`,e[e.SafeNavigationMigration=17]=`SafeNavigationMigration`,e[e.SafeTernaryExpr=18]=`SafeTernaryExpr`,e[e.EmptyExpr=19]=`EmptyExpr`,e[e.AssignTemporaryExpr=20]=`AssignTemporaryExpr`,e[e.ReadTemporaryExpr=21]=`ReadTemporaryExpr`,e[e.SlotLiteralExpr=22]=`SlotLiteralExpr`,e[e.ConditionalCase=23]=`ConditionalCase`,e[e.ConstCollected=24]=`ConstCollected`,e[e.TwoWayBindingSet=25]=`TwoWayBindingSet`,e[e.ForeignContent=26]=`ForeignContent`,e[e.ArrowFunction=27]=`ArrowFunction`,e})(Pt||{}),Ft=(function(e){return e[e.None=0]=`None`,e[e.AlwaysInline=1]=`AlwaysInline`,e})(Ft||{}),It=(function(e){return e[e.Context=0]=`Context`,e[e.Identifier=1]=`Identifier`,e[e.SavedView=2]=`SavedView`,e[e.Alias=3]=`Alias`,e})(It||{}),Lt=(function(e){return e[e.Attribute=0]=`Attribute`,e[e.ClassName=1]=`ClassName`,e[e.StyleProperty=2]=`StyleProperty`,e[e.Property=3]=`Property`,e[e.Template=4]=`Template`,e[e.I18n=5]=`I18n`,e[e.LegacyAnimation=6]=`LegacyAnimation`,e[e.TwoWayProperty=7]=`TwoWayProperty`,e[e.Animation=8]=`Animation`,e})(Lt||{}),Rt=(function(e){return e[e.Creation=0]=`Creation`,e[e.Postproccessing=1]=`Postproccessing`,e})(Rt||{}),zt=(function(e){return e[e.I18nText=0]=`I18nText`,e[e.I18nAttribute=1]=`I18nAttribute`,e})(zt||{}),Bt=(function(e){return e[e.None=0]=`None`,e[e.ElementTag=1]=`ElementTag`,e[e.TemplateTag=2]=`TemplateTag`,e[e.OpenTag=4]=`OpenTag`,e[e.CloseTag=8]=`CloseTag`,e[e.ExpressionIndex=16]=`ExpressionIndex`,e})(Bt||{}),Vt=(function(e){return e[e.HTML=0]=`HTML`,e[e.SVG=1]=`SVG`,e[e.Math=2]=`Math`,e})(Vt||{}),Ht=(function(e){return e[e.Idle=0]=`Idle`,e[e.Immediate=1]=`Immediate`,e[e.Timer=2]=`Timer`,e[e.Hover=3]=`Hover`,e[e.Interaction=4]=`Interaction`,e[e.Viewport=5]=`Viewport`,e[e.Never=6]=`Never`,e})(Ht||{}),Ut=(function(e){return e[e.RootI18n=0]=`RootI18n`,e[e.Icu=1]=`Icu`,e[e.Attr=2]=`Attr`,e})(Ut||{}),Wt=(function(e){return e[e.NgTemplate=0]=`NgTemplate`,e[e.Structural=1]=`Structural`,e[e.Block=2]=`Block`,e})(Wt||{}),Gt=(function(e){return e[e.None=0]=`None`,e[e.InChildOperation=1]=`InChildOperation`,e[e.InArrowFunctionOperation=2]=`InArrowFunctionOperation`,e[e.InSafeNavigationMigration=4]=`InSafeNavigationMigration`,e})(Gt||{});x.Element,x.ElementStart,x.Container,x.ContainerStart,x.Template,x.RepeaterCreate,x.ConditionalCreate,x.ConditionalBranchCreate;var S=(function(e){return e[e.Tmpl=0]=`Tmpl`,e[e.Host=1]=`Host`,e[e.Both=2]=`Both`,e})(S||{}),Kt=(function(e){return e[e.Full=0]=`Full`,e[e.DomOnly=1]=`DomOnly`,e})(Kt||{});b.ariaProperty,b.ariaProperty,b.attribute,b.attribute,b.classProp,b.classProp,b.element,b.element,b.elementContainer,b.elementContainer,b.elementContainerEnd,b.elementContainerEnd,b.elementContainerStart,b.elementContainerStart,b.elementEnd,b.elementEnd,b.elementStart,b.elementStart,b.domProperty,b.domProperty,b.i18nExp,b.i18nExp,b.listener,b.listener,b.listener,b.listener,b.property,b.property,b.styleProp,b.styleProp,b.syntheticHostListener,b.syntheticHostListener,b.syntheticHostProperty,b.syntheticHostProperty,b.templateCreate,b.templateCreate,b.twoWayProperty,b.twoWayProperty,b.twoWayListener,b.twoWayListener,b.declareLet,b.declareLet,b.conditionalCreate,b.conditionalBranchCreate,b.conditionalBranchCreate,b.conditionalBranchCreate,b.domElement,b.domElement,b.domElementStart,b.domElementStart,b.domElementEnd,b.domElementEnd,b.domElementContainer,b.domElementContainer,b.domElementContainerStart,b.domElementContainerStart,b.domElementContainerEnd,b.domElementContainerEnd,b.domListener,b.domListener,b.domTemplate,b.domTemplate,b.animationEnter,b.animationEnter,b.animationLeave,b.animationLeave,b.animationEnterListener,b.animationEnterListener,b.animationLeaveListener,b.animationLeaveListener,v.And,v.Bigger,v.BiggerEquals,v.BitwiseOr,v.BitwiseAnd,v.Divide,v.Assign,v.Equals,v.Identical,v.Lower,v.LowerEquals,v.Minus,v.Modulo,v.Exponentiation,v.Multiply,v.NotEquals,v.NotIdentical,v.NullishCoalesce,v.Or,v.Plus,v.In,v.InstanceOf,v.AdditionAssignment,v.SubtractionAssignment,v.MultiplicationAssignment,v.DivisionAssignment,v.RemainderAssignment,v.ExponentiationAssignment,v.AndAssignment,v.OrAssignment,v.NullishCoalesceAssignment,x.Property,x.Property,x.Property,x.Attribute,x.Attribute,x.Property,x.TwoWayProperty,x.Container,x.ContainerStart,x.ContainerEnd,x.Element,x.ElementStart,x.ElementEnd,x.Template,x.ElementEnd,x.ElementStart,x.Element,x.ContainerEnd,x.ContainerStart,x.Container,x.I18nEnd,x.I18nStart,x.I18n,x.Pipe;var qt=` \f -\r \v ᠎ - \u2028\u2029   `;`${qt}`,`${qt}`;var Jt=(function(e){return e[e.Character=0]=`Character`,e[e.Identifier=1]=`Identifier`,e[e.PrivateIdentifier=2]=`PrivateIdentifier`,e[e.Keyword=3]=`Keyword`,e[e.String=4]=`String`,e[e.Operator=5]=`Operator`,e[e.Number=6]=`Number`,e[e.RegExpBody=7]=`RegExpBody`,e[e.RegExpFlags=8]=`RegExpFlags`,e[e.Error=9]=`Error`,e})(Jt||{}),Yt=(function(e){return e[e.Plain=0]=`Plain`,e[e.TemplateLiteralPart=1]=`TemplateLiteralPart`,e[e.TemplateLiteralEnd=2]=`TemplateLiteralEnd`,e})(Yt||{});Jt.Character,x.StyleMap,x.ClassMap,x.StyleProp,x.ClassProp,x.Attribute,x.Property,x.Attribute,x.Control,x.DomProperty,x.DomProperty,x.Attribute,x.StyleMap,x.ClassMap,x.StyleProp,x.ClassProp,x.Listener,x.TwoWayListener,x.AnimationListener,x.StyleMap,x.ClassMap,x.StyleProp,x.ClassProp,x.Property,x.TwoWayProperty,x.DomProperty,x.Attribute,x.Animation,x.Control,Ht.Idle,b.deferOnIdle,b.deferPrefetchOnIdle,b.deferHydrateOnIdle,Ht.Immediate,b.deferOnImmediate,b.deferPrefetchOnImmediate,b.deferHydrateOnImmediate,Ht.Timer,b.deferOnTimer,b.deferPrefetchOnTimer,b.deferHydrateOnTimer,Ht.Hover,b.deferOnHover,b.deferPrefetchOnHover,b.deferHydrateOnHover,Ht.Interaction,b.deferOnInteraction,b.deferPrefetchOnInteraction,b.deferHydrateOnInteraction,Ht.Viewport,b.deferOnViewport,b.deferPrefetchOnViewport,b.deferHydrateOnViewport,Ht.Never,b.deferHydrateNever,b.deferHydrateNever,b.deferHydrateNever,b.pipeBind1,b.pipeBind2,b.pipeBind3,b.pipeBind4,b.textInterpolate,b.textInterpolate1,b.textInterpolate2,b.textInterpolate3,b.textInterpolate4,b.textInterpolate5,b.textInterpolate6,b.textInterpolate7,b.textInterpolate8,b.textInterpolateV,b.interpolate,b.interpolate1,b.interpolate2,b.interpolate3,b.interpolate4,b.interpolate5,b.interpolate6,b.interpolate7,b.interpolate8,b.interpolateV,b.pureFunction0,b.pureFunction1,b.pureFunction2,b.pureFunction3,b.pureFunction4,b.pureFunction5,b.pureFunction6,b.pureFunction7,b.pureFunction8,b.pureFunctionV,b.resolveWindow,b.resolveDocument,b.resolveBody,rt.HTML,b.sanitizeHtml,rt.RESOURCE_URL,b.sanitizeResourceUrl,rt.SCRIPT,b.sanitizeScript,rt.STYLE,b.sanitizeStyle,rt.URL,b.sanitizeUrl,rt.ATTRIBUTE_NO_BINDING,b.validateAttribute,rt.HTML,b.trustConstantHtml,rt.RESOURCE_URL,b.trustConstantResourceUrl;var Xt=(function(e){return e[e.None=0]=`None`,e[e.ViewContextRead=1]=`ViewContextRead`,e[e.ViewContextWrite=2]=`ViewContextWrite`,e[e.SideEffectful=4]=`SideEffectful`,e})(Xt||{});S.Tmpl,S.Tmpl,S.Both,S.Host,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Both,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Both,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Both,S.Both,S.Both,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Tmpl,S.Both,S.Tmpl,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Both,Et.Property,Lt.Property,Et.TwoWay,Lt.TwoWayProperty,Et.Attribute,Lt.Attribute,Et.Class,Lt.ClassName,Et.Style,Lt.StyleProperty,Et.LegacyAnimation,Lt.LegacyAnimation,Et.Animation,Lt.Animation;var Zt=`%COMP%`;`${Zt}`,`${Zt}`,class e{static SINGLETON=new e;static veWillInferAnyFor(t){let n=e.SINGLETON;return t instanceof Tt?t.visit(n):t.receiver.visit(n)}visitUnary(e){return e.expr.visit(this)}visitBinary(e){return e.left.visit(this)||e.right.visit(this)}visitChain(){return!1}visitConditional(e){return e.condition.visit(this)||e.trueExp.visit(this)||e.falseExp.visit(this)}visitCall(){return!0}visitSafeCall(){return!1}visitImplicitReceiver(){return!1}visitThisReceiver(){return!1}visitInterpolation(e){return e.expressions.some(e=>e.visit(this))}visitKeyedRead(){return!1}visitLiteralArray(){return!0}visitLiteralMap(){return!0}visitLiteralPrimitive(){return!1}visitPipe(){return!0}visitPrefixNot(e){return e.expression.visit(this)}visitTypeofExpression(e){return e.expression.visit(this)}visitVoidExpression(e){return e.expression.visit(this)}visitNonNullAssert(e){return e.expression.visit(this)}visitPropertyRead(){return!1}visitSafePropertyRead(){return!1}visitSafeKeyedRead(){return!1}visitTemplateLiteral(){return!1}visitTemplateLiteralElement(){return!1}visitTaggedTemplateLiteral(){return!1}visitParenthesizedExpression(e){return e.expression.visit(this)}visitRegularExpressionLiteral(){return!1}visitSpreadElement(e){return e.expression.visit(this)}visitArrowFunction(e,t){return!1}};var Qt=null,$t=!1,en=1,tn=null,nn=Symbol(`SIGNAL`);function rn(e){let t=Qt;return Qt=e,t}function an(){return Qt}var on={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:`unknown`,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function sn(e){if($t)throw Error(``);if(Qt===null)return;Qt.consumerOnSignalRead(e);let t=Qt.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=Qt.recomputing;if(r&&(n=t===void 0?Qt.producers:t.nextProducer,n!==void 0&&n.producer===e)){Qt.producersTail=n,n.lastReadVersion=e.version,n.knownValidAtEpoch=en;return}let i=e.consumersTail;if(i!==void 0&&i.consumer===Qt&&(!r||i.knownValidAtEpoch===en))return;let a=Sn(Qt),o={producer:e,consumer:Qt,nextProducer:n,prevConsumer:void 0,knownValidAtEpoch:en,lastReadVersion:e.version,nextConsumer:void 0};Qt.producersTail=o,t===void 0?Qt.producers=o:t.nextProducer=o,a&&bn(e,o)}function cn(){en++}function ln(e){if((!Sn(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==en)){if(!e.producerMustRecompute(e)&&!vn(e)){pn(e);return}e.producerRecomputeValue(e),pn(e)}}function un(e){if(e.consumers===void 0)return;let t=$t;$t=!0;try{for(let t=e.consumers;t!==void 0;t=t.nextConsumer){let e=t.consumer;e.dirty||fn(e)}}finally{$t=t}}function dn(){return Qt?.consumerAllowSignalWrites!==!1}function fn(e){e.dirty=!0,un(e),e.consumerMarkedDirty?.(e)}function pn(e){e.dirty=!1,e.lastCleanEpoch=en}function mn(e){return e&&hn(e),rn(e)}function hn(e){if(e.producersTail?.knownValidAtEpoch===en){let t=e.producers;for(;t!==void 0;)t.knownValidAtEpoch=null,t=t.nextProducer}e.producersTail=void 0,e.recomputing=!0}function gn(e,t){rn(t),e&&_n(e)}function _n(e){e.recomputing=!1;let t=e.producersTail,n=t===void 0?e.producers:t.nextProducer;if(n!==void 0){if(Sn(e))do n=xn(n);while(n!==void 0);t===void 0?e.producers=void 0:t.nextProducer=void 0}}function vn(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let e=t.producer,n=t.lastReadVersion;if(n!==e.version||(ln(e),n!==e.version))return!0}return!1}function yn(e){if(Sn(e)){let t=e.producers;for(;t!==void 0;)t=xn(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function bn(e,t){let n=e.consumersTail,r=Sn(e);if(n===void 0?(t.nextConsumer=void 0,e.consumers=t):(t.nextConsumer=n.nextConsumer,n.nextConsumer=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let t=e.producers;t!==void 0;t=t.nextProducer)bn(t.producer,t)}function xn(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,i=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r===void 0?t.consumersTail=i:r.prevConsumer=i,i!==void 0)i.nextConsumer=r;else if(t.consumers=r,!Sn(t)){let e=t.producers;for(;e!==void 0;)e=xn(e)}return n}function Sn(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function Cn(e){tn?.(e)}function wn(e,t){return Object.is(e,t)}function Tn(e,t){let n=Object.create(kn);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(ln(n),sn(n),n.value===On)throw n.error;return n.value};return r[nn]=n,Cn(n),r}var En=Symbol(`UNSET`),Dn=Symbol(`COMPUTING`),On=Symbol(`ERRORED`),kn={...on,value:En,dirty:!0,error:null,equal:wn,kind:`computed`,producerMustRecompute(e){return e.value===En||e.value===Dn},producerRecomputeValue(e){if(e.value===Dn)throw Error(``);let t=e.value;e.value=Dn;let n=mn(e),r,i=!1;try{r=e.computation(),rn(null),i=t!==En&&t!==On&&r!==On&&e.equal(t,r)}catch(t){r=On,e.error=t}finally{gn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function An(){throw Error()}var jn=An;function Mn(e){jn(e)}function Nn(e){jn=e}var Pn=null;function Fn(e,t){let n=Object.create(zn);n.value=e,t!==void 0&&(n.equal=t);let r=()=>In(n);return r[nn]=n,Cn(n),[r,e=>Ln(n,e),e=>Rn(n,e)]}function In(e){return sn(e),e.value}function Ln(e,t){dn()||Mn(e),e.equal(e.value,t)||(e.value=t,Bn(e))}function Rn(e,t){dn()||Mn(e),Ln(e,t(e.value))}var zn={...on,equal:wn,value:void 0,kind:`signal`};function Bn(e){e.version++,cn(),un(e),Pn?.(e)}var Vn={...on,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:`effect`};function Hn(e){if(e.dirty=!1,e.version>0&&!vn(e))return;e.version++;let t=mn(e);try{e.cleanup(),e.fn()}finally{gn(e,t)}}var Un=void 0;function Wn(){return Un}function Gn(e){let t=Un;return Un=e,t}var Kn=Symbol(`NotFound`);function qn(e){return e===Kn||e?.name===`ɵNotFound`}function Jn(e,t,n){let r=Object.create(Zn);r.source=e,r.computation=t,n!=null&&(r.equal=n);let i=()=>{if(ln(r),sn(r),r.value===On)throw r.error;return r.value};return i[nn]=r,Cn(r),i}function Yn(e,t){ln(e),Ln(e,t),pn(e)}function Xn(e,t){if(ln(e),e.value===On)throw e.error;Rn(e,t),pn(e)}var Zn={...on,value:En,dirty:!0,error:null,equal:wn,kind:`linkedSignal`,producerMustRecompute(e){return e.value===En||e.value===Dn},producerRecomputeValue(e){if(e.value===Dn)throw Error(``);let t=e.value;e.value=Dn;let n=mn(e),r,i=!1;try{let n=e.source(),a=t!==En&&t!==On,o=a?{source:e.sourceValue,value:t}:void 0;r=e.computation(n,o),e.sourceValue=n,rn(null),i=a&&r!==On&&e.equal(t,r)}catch(t){r=On,e.error=t}finally{gn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function Qn(e){let t=rn(null);try{return e()}finally{rn(t)}}var $n=function(e,t){return $n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},$n(e,t)};function er(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);$n(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function tr(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function nr(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o=Object.create((typeof Iterator==`function`?Iterator:Object).prototype);return o.next=s(0),o.throw=s(1),o.return=s(2),typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function ir(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-->0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function ar(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof or?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function cr(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof rr==`function`?rr(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function lr(e){return typeof e==`function`}function ur(e){var t=e(function(e){Error.call(e),e.stack=Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var dr=ur(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,a=(e,a)=>{for(var o in a||={})n.call(a,o)&&i(e,o,a[o]);if(t)for(var o of t(a))r.call(a,o)&&i(e,o,a[o]);return e},o=(e,t,n)=>(i(e,typeof t==`symbol`?t:t+``,n),n),s=globalThis;function c(e){let t=s.__Zone_symbol_prefix;return(typeof t==`string`?t:`__zone_symbol__`)+e}function l(){let e=s.performance;function t(t){e&&e.mark&&e.mark(t)}function n(t,n){e&&e.measure&&e.measure(t,n)}t(`Zone`);let r=class e{constructor(e,t){o(this,`_parent`),o(this,`_name`),o(this,`_properties`),o(this,`_zoneDelegate`),this._parent=e,this._name=t?t.name||`unnamed`:``,this._properties=t&&t.properties||{},this._zoneDelegate=new l(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(s.Promise!==pe.ZoneAwarePromise)throw Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=e.current;for(;t.parent;)t=t.parent;return t}static get current(){return he.zone}static get currentTask(){return ge}static __load_patch(r,i,a=!1){if(Object.hasOwn(pe,r)){let e=s[c(`forceDuplicateZoneCheck`)]===!0;if(!a&&e)throw Error(`Already loaded patch: `+r)}else if(!s[`__Zone_disable_`+r]){let a=`Zone:`+r;t(a),pe[r]=i(s,e,me),n(a,a)}}get parent(){return this._parent}get name(){return this._name}get(e){let t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(Object.hasOwn(t._properties,e))return t;t=t._parent}return null}fork(e){if(!e)throw Error(`ZoneSpec required!`);return this._zoneDelegate.fork(this,e)}wrap(e,t){if(typeof e!=`function`)throw Error(`Expecting function got: `+e);let n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}}run(e,t,n,r){he={parent:he,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{he=he.parent}}runGuarded(e,t=null,n,r){he={parent:he,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{he=he.parent}}runTask(e,t,n){if(e.zone!=this)throw Error(`A task can only be run in the zone of creation! (Creation: `+(e.zone||re).name+`; Execution: `+this.name+`)`);let r=e,{type:i,data:{isPeriodic:a=!1,isRefreshable:o=!1}={}}=e;if(e.state===ie&&(i===fe||i===de))return;let s=e.state!=se;s&&r._transitionTo(se,oe);let c=ge;ge=r,he={parent:he,zone:this};try{i==de&&e.data&&!a&&!o&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,r,t,n)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{let t=e.state;if(t!==ie&&t!==le){if(i==fe||a||o&&t===ae)s&&r._transitionTo(oe,se,ae);else{let e=r._zoneDelegates;this._updateTaskCount(r,-1),s&&r._transitionTo(ie,se,ie),o&&(r._zoneDelegates=e)}}he=he.parent,ge=c}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(ae,ie);let t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(t){throw e._transitionTo(le,ae,ie),this._zoneDelegate.handleError(this,t),t}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==ae&&e._transitionTo(oe,ae),e}scheduleMicroTask(e,t,n,r){return this.scheduleTask(new u(ue,e,t,n,r,void 0))}scheduleMacroTask(e,t,n,r,i){return this.scheduleTask(new u(de,e,t,n,r,i))}scheduleEventTask(e,t,n,r,i){return this.scheduleTask(new u(fe,e,t,n,r,i))}cancelTask(e){if(e.zone!=this)throw Error(`A task can only be cancelled in the zone of creation! (Creation: `+(e.zone||re).name+`; Execution: `+this.name+`)`);if(e.state===oe||e.state===se){e._transitionTo(ce,oe,se);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(le,ce),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(ie,ce),e.runCount=-1,e}}_updateTaskCount(e,t){let n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(let r=0;re.hasTask(n,r),onScheduleTask:(e,t,n,r)=>e.scheduleTask(n,r),onInvokeTask:(e,t,n,r,i,a)=>e.invokeTask(n,r,i,a),onCancelTask:(e,t,n,r)=>e.cancelTask(n,r)};class l{constructor(e,t,n){o(this,`_zone`),o(this,`_taskCounts`,{microTask:0,macroTask:0,eventTask:0}),o(this,`_forkDlgt`),o(this,`_forkZS`),o(this,`_forkCurrZone`),o(this,`_interceptDlgt`),o(this,`_interceptZS`),o(this,`_interceptCurrZone`),o(this,`_invokeDlgt`),o(this,`_invokeZS`),o(this,`_invokeCurrZone`),o(this,`_handleErrorDlgt`),o(this,`_handleErrorZS`),o(this,`_handleErrorCurrZone`),o(this,`_scheduleTaskDlgt`),o(this,`_scheduleTaskZS`),o(this,`_scheduleTaskCurrZone`),o(this,`_invokeTaskDlgt`),o(this,`_invokeTaskZS`),o(this,`_invokeTaskCurrZone`),o(this,`_cancelTaskDlgt`),o(this,`_cancelTaskZS`),o(this,`_cancelTaskCurrZone`),o(this,`_hasTaskDlgt`),o(this,`_hasTaskDlgtOwner`),o(this,`_hasTaskZS`),o(this,`_hasTaskCurrZone`),this._zone=e,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this._zone:t._forkCurrZone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this._zone:t._interceptCurrZone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this._zone:t._invokeCurrZone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this._zone:t._handleErrorCurrZone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this._zone:t._scheduleTaskCurrZone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this._zone:t._invokeTaskCurrZone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this._zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let r=n&&n.onHasTask,i=t&&t._hasTaskZS;(r||i)&&(this._hasTaskZS=r?n:a,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,n.onScheduleTask||(this._scheduleTaskZS=a,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this._zone),n.onInvokeTask||(this._invokeTaskZS=a,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this._zone),n.onCancelTask||(this._cancelTaskZS=a,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this._zone))}get zone(){return this._zone}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new i(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,r,i){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,i):t.apply(n,r)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||=t;else if(t.scheduleFn)t.scheduleFn(t);else if(t.type==ue)te(t);else throw Error(`Task is missing scheduleFn.`);return n}invokeTask(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error(`Task is not cancelable`);n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(t){this.handleError(e,t)}}_updateTaskCount(e,t){let n=this._taskCounts,r=n[e],i=n[e]=r+t;if(i<0)throw Error(`More tasks executed then were scheduled.`);if(r==0||i==0){let t={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this._zone,t)}}}class u{constructor(e,t,n,r,i,a){if(o(this,`type`),o(this,`source`),o(this,`invoke`),o(this,`callback`),o(this,`data`),o(this,`scheduleFn`),o(this,`cancelFn`),o(this,`_zone`,null),o(this,`runCount`,0),o(this,`_zoneDelegates`,null),o(this,`_state`,`notScheduled`),this.type=e,this.source=t,this.data=r,this.scheduleFn=i,this.cancelFn=a,!n)throw Error(`callback is not defined`);this.callback=n;let c=this;this.invoke=e===fe&&r&&r.useG?u.invokeTask:function(){return u.invokeTask.call(s,c,this,arguments)}}static invokeTask(e,t,n){e||=this,_e++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{try{_e===1&&!s[m]&&ne()}finally{_e--}}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(ie,ae)}_transitionTo(e,t,n){if(this._state===t||this._state===n)this._state=e,e==ie&&(this._zoneDelegates=null);else throw Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?` or '`+n+`'`:``}, was '${this._state}'.`)}toString(){return this.data&&this.data.handleId!==void 0?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let d=c(`setTimeout`),f=c(`Promise`),p=c(`then`),m=c(`enable_native_microtask_draining`),h=[],g=!1,_;function ee(e){!_&&s[f]&&(_=s[f].resolve(0)),_?(_[p]??_.then).call(_,e):s[d](e,0)}function te(e){let t=s[m],n=t&&h.length===0&&!g,r=!t&&_e===0&&h.length===0;(n||r)&&ee(ne),e&&h.push(e)}function ne(){if(!g){g=!0;try{for(;h.length;){let e=h;h=[];for(let t of e)try{t.zone.runTask(t,null,null)}catch(e){me.onUnhandledError(e)}}}finally{if(s[m])g=!1,me.microtaskDrainDone();else try{me.microtaskDrainDone()}finally{g=!1}}}}let re={name:`NO ZONE`},ie=`notScheduled`,ae=`scheduling`,oe=`scheduled`,se=`running`,ce=`canceling`,le=`unknown`,ue=`microTask`,de=`macroTask`,fe=`eventTask`,pe=Object.create(null),me={symbol:c,currentZoneFrame:()=>he,onUnhandledError:ve,microtaskDrainDone:ve,scheduleMicroTask:te,showUncaughtError:()=>!i[c(`ignoreConsoleErrorUncaughtError`)],patchEventTarget:()=>[],patchOnProperties:ve,patchMethod:()=>ve,bindArguments:()=>[],patchThen:()=>ve,patchMacroTask:()=>ve,patchEventPrototype:()=>ve,getGlobalObjects:()=>void 0,ObjectDefineProperty:()=>ve,ObjectGetOwnPropertyDescriptor:()=>void 0,ObjectCreate:()=>void 0,ArraySlice:()=>[],patchClass:()=>ve,wrapWithCurrentZone:()=>ve,filterProperties:()=>[],attachOriginToPatched:()=>ve,_redefineProperty:()=>ve,patchCallbacks:()=>ve,nativeScheduleMicroTask:ee},he={parent:null,zone:new i(null,null)},ge=null,_e=0;function ve(){}return n(`Zone`,`Zone`),i}function u(){let e=globalThis,t=e[c(`forceDuplicateZoneCheck`)]===!0;if(e.Zone&&(t||typeof e.Zone.__symbol__!=`function`))throw Error(`Zone already loaded.`);return e.Zone??=l(),e.Zone}var d=Object.getOwnPropertyDescriptor,f=Object.defineProperty,p=Object.getPrototypeOf,m=Object.create,h=Array.prototype.slice,g=`addEventListener`,_=`removeEventListener`,ee=c(g),te=c(_),ne=`true`,re=`false`,ie=c(``);function ae(e,t){return Zone.current.wrap(e,t)}function oe(e,t,n,r,i){return Zone.current.scheduleMacroTask(e,t,n,r,i)}var se=c,ce=typeof window<`u`,le=ce?window:void 0,ue=ce&&le||globalThis,de=`removeAttribute`;function fe(e,t){for(let n=e.length-1;n>=0;n--)typeof e[n]==`function`&&(e[n]=ae(e[n],t+`_`+n));return e}function pe(e,t){let n=e.constructor.name;for(let r=0;r{let t=function(){return e.apply(this,fe(arguments,n+`.`+i))};return Oe(t,e),t})(a)}}}function me(e){return e?e.writable===!1?!1:typeof e.get!=`function`||e.set!==void 0:!0}var he=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope,ge=!(`nw`in ue)&&ue.process!==void 0&&ue.process.toString()===`[object process]`,_e=!ge&&!he&&!!(ce&&le.HTMLElement),ve=ue.process!==void 0&&ue.process.toString()===`[object process]`&&!he&&!!(ce&&le.HTMLElement),ye=Object.create(null),be=se(`enable_beforeunload`),xe=function(e){if(e||=ue.event,!e)return;let t=ye[e.type];t||=ye[e.type]=se(`ON_PROPERTY`+e.type);let n=this||e.target||ue,r=n[t],i;if(_e&&n===le&&e.type===`error`){let t=e;i=r&&r.call(this,t.message,t.filename,t.lineno,t.colno,t.error),i===!0&&e.preventDefault()}else i=r&&r.apply(this,arguments),e.type===`beforeunload`&&ue[be]&&typeof i==`string`?e.returnValue=i:i!=null&&!i&&e.preventDefault();return i};function Se(e,t,n){let r=d(e,t);if(!r&&n&&d(n,t)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let i=se(`on`+t+`patched`);if(Object.hasOwn(e,i)&&e[i])return;delete r.writable,delete r.value;let a=r.get,o=r.set,s=t.slice(2),c=ye[s];c||=ye[s]=se(`ON_PROPERTY`+s),r.set=function(t){let n=this;!n&&e===ue&&(n=ue),n&&(typeof n[c]==`function`&&n.removeEventListener(s,xe),o?.call(n,null),n[c]=t,typeof t==`function`&&n.addEventListener(s,xe,!1))},r.get=function(){let n=this;if(!n&&e===ue&&(n=ue),!n)return null;let i=n[c];if(i)return i;if(a){let e=a.call(this);if(e)return r.set.call(this,e),typeof n[de]==`function`&&n.removeAttribute(t),e}return null},f(e,t,r),e[i]=!0}function Ce(e,t,n){if(t)for(let r=0;rfunction(t,r){let a=n(t,r);return a.cbIdx>=0&&typeof r[a.cbIdx]==`function`?oe(a.name,r[a.cbIdx],a,i):e.apply(t,r)})}function Oe(e,t){e[se(`OriginalDelegate`)]=t}function ke(e){return typeof e==`function`}function Ae(e){return typeof e==`number`}var je={useG:!0},Me=Object.create(null),Ne={},Pe=RegExp(`^`+ie+`(\\w+)(true|false)$`),Fe=se(`propagationStopped`),Ie=[`capture`,`once`,`passive`,`signal`];function Le(e,t){let n=(t?t(e):e)+re,r=(t?t(e):e)+ne,i=ie+n,a=ie+r;Me[e]={[re]:i,[ne]:a}}function Re(e,t,n,r){let i=r&&r.add||g,o=r&&r.rm||_,s=r&&r.listeners||`eventListeners`,c=r&&r.rmAll||`removeAllListeners`,l=se(i),u=`.`+i+`:`,d=function(e,t,n){if(e.isRemoved)return;let r=e.callback;typeof r==`object`&&r.handleEvent&&(e.callback=e=>r.handleEvent(e),e.originalDelegate=r);let i;try{e.invoke(e,t,[n])}catch(e){i=e}let a=e.options;if(a&&typeof a==`object`&&a.once){let r=e.originalDelegate?e.originalDelegate:e.callback;t[o].call(t,n.type,r,a)}return i};function f(n,r,i){if(r||=e.event,!r)return;let a=n||r.target||e,o=a[Me[r.type][i?ne:re]];if(o){let e=[];if(o.length===1){let t=d(o[0],a,r);t&&e.push(t)}else{let t=o.slice();for(let n=0;n{throw r})}}}let m=function(e){return f(this,e,!1)},h=function(e){return f(this,e,!0)};function ee(t,n){if(!t)return!1;let r=!0;n&&n.useG!==void 0&&(r=n.useG);let d=n&&n.vh,f=!0;n&&n.chkDup!==void 0&&(f=n.chkDup);let g=!1;n&&n.rt!==void 0&&(g=n.rt);let _=t;for(;_&&!Object.hasOwn(_,i);)_=p(_);if(!_&&t[i]&&(_=t),!_||_[l])return!1;let ee=n&&n.eventNameToString,te={},ae=_[l]=_[i],oe=_[se(o)]=_[o],ce=_[se(s)]=_[s],le=_[se(c)]=_[c],ue;n&&n.prepend&&(ue=_[se(n.prepend)]=_[n.prepend]);function de(e,t){return t?typeof e==`boolean`?{capture:e,passive:!0}:e?(typeof e==`object`&&e.passive!==!1&&(e.passive=!0),e):{passive:!0}:e}let fe=function(e){if(!te.isExisting)return ae.call(te.target,te.eventName,te.capture?h:m,te.options)},pe=function(e){if(!e.isRemoved){let t=Me[e.eventName],n;t&&(n=t[e.capture?ne:re]);let r=n&&e.target[n];if(r){for(let t=0;t_e.zone.cancelTask(_e);t.call(_,`abort`,e,{once:!0}),_e.removeAbortListener=()=>_.removeEventListener(`abort`,e)}if(te.target=null,he&&(he.taskData=null),ae&&(te.options.once=!0),typeof _e.options!=`boolean`&&(_e.options=g),_e.target=l,_e.capture=ie,_e.eventName=u,m&&(_e.originalDelegate=p),c?le.unshift(_e):le.push(_e),s)return l}};return _[i]=we(ae,u,ve,ye,g),ue&&(_.prependListener=we(ue,`.prependListener:`,he,ye,g,!0)),_[o]=function(){let t=this||e,r=arguments[0];n&&n.transferEventName&&(r=n.transferEventName(r));let i=arguments[2],a=i?typeof i==`boolean`||i.capture:!1,o=arguments[1];if(!o)return oe.apply(this,arguments);if(d&&!d(oe,o,t,arguments))return;let s=Me[r],c;s&&(c=s[a?ne:re]);let l=c&&t[c];if(l)for(let e=0;efunction(t,n){t[Fe]=!0,e&&e.apply(t,n)})}function Be(e,t){t.patchMethod(e,`queueMicrotask`,e=>function(e,t){Zone.current.scheduleMicroTask(`queueMicrotask`,t[0])})}var Ve=se(`zoneTask`);function He(e,t,n,r){let i=null,a=null;t+=r,n+=r;let o={};function s(t){let n=t.data;n.args[0]=function(){return t.invoke.apply(this,arguments)};let r=i.apply(e,n.args);return Ae(r)?n.handleId=r:(n.handle=r,n.isRefreshable=ke(r?.refresh)),t}function c(t){let{handle:n,handleId:r}=t.data;return a.call(e,n??r)}i=Ee(e,t,n=>function(i,a){if(ke(a[0])){let e={isRefreshable:!1,isPeriodic:r===`Interval`,delay:r===`Timeout`||r===`Interval`?a[1]||0:void 0,args:a},n=a[0];a[0]=function(){try{return n.apply(this,arguments)}finally{let{handle:t,handleId:n,isPeriodic:r,isRefreshable:i}=e;!r&&!i&&(n?delete o[n]:t&&(t[Ve]=null))}};let i=oe(t,a[0],e,s,c);if(!i)return i;let{handleId:l,handle:u,isRefreshable:d,isPeriodic:f}=i.data;if(l)o[l]=i;else if(u&&(u[Ve]=i,d&&!f)){let e=u.refresh;u.refresh=function(){let{zone:t,state:n}=i;return n===`notScheduled`?(i._state=`scheduled`,t._updateTaskCount(i,1)):n===`running`&&(i._state=`scheduling`),e.call(this)}}return u??l??i}return n.apply(e,a)}),a=Ee(e,n,t=>function(n,r){let i=r[0],a;Ae(i)?(a=o[i],delete o[i]):(a=i?.[Ve],a?i[Ve]=null:a=i),a?.type?a.cancelFn&&a.zone.cancelTask(a):t.apply(e,r)})}function Ue(e,t){let{isBrowser:n,isMix:r}=t.getGlobalObjects();(n||r)&&e.customElements&&`customElements`in e&&t.patchCallbacks(t,e.customElements,`customElements`,`define`,[`connectedCallback`,`disconnectedCallback`,`adoptedCallback`,`attributeChangedCallback`,`formAssociatedCallback`,`formDisabledCallback`,`formResetCallback`,`formStateRestoreCallback`])}function We(e,t){if(Zone[t.symbol(`patchEventTarget`)])return;let{eventNames:n,zoneSymbolEventNames:r,TRUE_STR:i,FALSE_STR:a,ZONE_SYMBOL_PREFIX:o}=t.getGlobalObjects();for(let e=0;et.target===e);if(r.length===0)return t;let i=r[0].ignoreProperties;return t.filter(e=>i.indexOf(e)===-1)}function qe(e,t,n,r){e&&Ce(e,Ke(e,t,n),r)}function Je(e){return Object.getOwnPropertyNames(e).filter(e=>e.startsWith(`on`)&&e.length>2).map(e=>e.substring(2))}function tee(e,t){if(ge&&!ve||Zone[e.symbol(`patchEvents`)])return;let n=t.__Zone_ignore_on_properties,r=[];if(_e){let e=window;r=r.concat([`Document`,`SVGElement`,`Element`,`HTMLElement`,`HTMLBodyElement`,`HTMLMediaElement`,`HTMLFrameSetElement`,`HTMLFrameElement`,`HTMLIFrameElement`,`HTMLMarqueeElement`,`Worker`]),qe(e,Je(e),n,p(e))}r=r.concat([`XMLHttpRequest`,`XMLHttpRequestEventTarget`,`IDBIndex`,`IDBRequest`,`IDBOpenDBRequest`,`IDBDatabase`,`IDBTransaction`,`IDBCursor`,`WebSocket`]);for(let e=0;e{let t=`clear`;He(e,`set`,t,`Timeout`),He(e,`set`,t,`Interval`),He(e,`set`,t,`Immediate`)}),e.__load_patch(`requestAnimationFrame`,e=>{He(e,`request`,`cancel`,`AnimationFrame`),He(e,`mozRequest`,`mozCancel`,`AnimationFrame`),He(e,`webkitRequest`,`webkitCancel`,`AnimationFrame`)}),e.__load_patch(`blocking`,(e,t)=>{let n=[`alert`,`prompt`,`confirm`];for(let r=0;rfunction(r,a){return t.current.run(n,e,a,i)})}}),e.__load_patch(`EventTarget`,(e,t,n)=>{Ge(e,n),We(e,n);let r=e.XMLHttpRequestEventTarget;r&&r.prototype&&n.patchEventTarget(e,n,[r.prototype])}),e.__load_patch(`MutationObserver`,(e,t,n)=>{Te(`MutationObserver`),Te(`WebKitMutationObserver`)}),e.__load_patch(`IntersectionObserver`,(e,t,n)=>{Te(`IntersectionObserver`)}),e.__load_patch(`FileReader`,(e,t,n)=>{Te(`FileReader`)}),e.__load_patch(`on_property`,(e,t,n)=>{tee(n,e)}),e.__load_patch(`customElements`,(e,t,n)=>{Ue(e,n)}),e.__load_patch(`XHR`,(e,t)=>{c(e);let n=se(`xhrTask`),r=se(`xhrSync`),i=se(`xhrListener`),a=se(`xhrScheduled`),o=se(`xhrURL`),s=se(`xhrErrorBeforeScheduled`);function c(e){let c=e.XMLHttpRequest;if(!c)return;let l=c.prototype;function u(e){return e[n]}let d=l[ee],f=l[te];if(!d){let t=e.XMLHttpRequestEventTarget;if(t){let e=t.prototype;d=e[ee],f=e[te]}}let p=`readystatechange`,m=`scheduled`;function h(e){let r=e.data,o=r.target;o[a]=!1,o[s]=!1;let c=o[i];d||(d=o[ee],f=o[te]),c&&f.call(o,p,c);let l=o[i]=()=>{if(o.readyState===o.DONE){if(!r.aborted&&o[a]&&e.state===m){let n=o[t.__symbol__(`loadfalse`)];if(o.status!==0&&n&&n.length>0){let i=e.invoke;e.invoke=function(){let n=o[t.__symbol__(`loadfalse`)];for(let t=0;tfunction(e,t){return e[r]=t[2]==0,e[o]=t[1],ne.apply(e,t)}),re=se(`fetchTaskAborting`),ie=se(`fetchTaskScheduling`),ae=Ee(l,`send`,()=>function(e,n){if(t.current[ie]===!0||e[r])return ae.apply(e,n);{let t={target:e,url:e[o],isPeriodic:!1,args:n,aborted:!1},r=oe(`XMLHttpRequest.send`,g,t,h,_);e&&e[s]===!0&&!t.aborted&&r.state===m&&r.invoke()}}),ce=Ee(l,`abort`,()=>function(e,n){let r=u(e);if(r&&typeof r.type==`string`){if(r.cancelFn==null||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(t.current[re]===!0)return ce.apply(e,n)})}}),e.__load_patch(`geolocation`,e=>{e.navigator&&e.navigator.geolocation&&pe(e.navigator.geolocation,[`getCurrentPosition`,`watchPosition`])}),e.__load_patch(`PromiseRejectionEvent`,(e,t)=>{function n(t){return function(n){ze(e,t).forEach(r=>{let i=e.PromiseRejectionEvent;if(i){let e=new i(t,{promise:n.promise,reason:n.rejection});r.invoke(e)}})}}e.PromiseRejectionEvent&&(t[se(`unhandledPromiseRejectionHandler`)]=n(`unhandledrejection`),t[se(`rejectionHandledHandler`)]=n(`rejectionhandled`))}),e.__load_patch(`queueMicrotask`,(e,t,n)=>{Be(e,n)})}function Xe(e){e.__load_patch(`ZoneAwarePromise`,(e,t,n)=>{let r=Object.getOwnPropertyDescriptor,i=Object.defineProperty;function a(e){return e&&e.toString===Object.prototype.toString?(e.constructor&&e.constructor.name||``)+`: `+JSON.stringify(e):e?e.toString():Object.prototype.toString.call(e)}let o=n.symbol,s=[],c=e[o(`DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION`)]!==!1,l=o(`Promise`),u=o(`then`);n.onUnhandledError=e=>{if(n.showUncaughtError()){let t=e&&e.rejection;t&&e.zone&&e.task?console.error(`Unhandled Promise rejection:`,t instanceof Error?t.message:t,`; Zone:`,e.zone.name,`; Task:`,e.task&&e.task.source,`; Value:`,t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;s.length;){let e=s.shift();try{e.zone.runGuarded(()=>{throw e.throwOriginal?e.rejection:e})}catch(e){f(e)}}};let d=o(`unhandledPromiseRejectionHandler`);function f(e){n.onUnhandledError(e);try{let n=t[d];typeof n==`function`&&n.call(this,e)}catch{}}function p(e){return e&&typeof e.then==`function`}function m(e){return e}function h(e){return fe.reject(e)}let g=o(`state`),_=o(`value`),ee=o(`finally`),te=o(`parentPromiseValue`),ne=o(`parentPromiseState`);function re(e,t){return n=>{try{oe(e,t,n)}catch(t){oe(e,!1,t)}}}let ie=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},ae=o(`currentTaskTrace`);function oe(e,r,o){let l=ie();if(e===o)throw TypeError(`Promise resolved with itself`);if(e[g]===null){let u=null;try{(typeof o==`object`||typeof o==`function`)&&(u=o&&o.then)}catch(t){return l(()=>{oe(e,!1,t)})(),e}if(r!==!1&&o instanceof fe&&Object.hasOwn(o,g)&&Object.hasOwn(o,_)&&o[g]!==null)ce(o),oe(e,o[g],o[_]);else if(r!==!1&&typeof u==`function`)try{u.call(o,l(re(e,r)),l(re(e,!1)))}catch(t){l(()=>{oe(e,!1,t)})()}else{e[g]=r;let l=e[_];if(e[_]=o,e[ee]===ee&&r===!0&&(e[g]=e[ne],e[_]=e[te]),r===!1&&o instanceof Error){let e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&i(o,ae,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t{try{let r=e[_],i=!!n&&ee===n[ee];i&&(n[te]=r,n[ne]=a),oe(n,!0,t.run(o,void 0,i&&o!==h&&o!==m?[]:[r]))}catch(e){oe(n,!1,e)}},n)}let ue=function(){},de=e.AggregateError;class fe{static toString(){return`function ZoneAwarePromise() { [native code] }`}static resolve(e){return e instanceof fe?e:oe(new this(null),!0,e)}static reject(e){return oe(new this(null),!1,e)}static withResolvers(){let e={};return e.promise=new fe((t,n)=>{e.resolve=t,e.reject=n}),e}static any(e){if(!e||typeof e[Symbol.iterator]!=`function`)return Promise.reject(new de([],`All promises were rejected`));let t=[],n=0;try{for(let r of e)n++,t.push(fe.resolve(r))}catch{return Promise.reject(new de([],`All promises were rejected`))}if(n===0)return Promise.reject(new de([],`All promises were rejected`));let r=!1,i=[];return new fe((e,a)=>{for(let o=0;o{r||(r=!0,e(t))},e=>{i.push(e),n--,n===0&&(r=!0,a(new de(i,`All promises were rejected`)))})})}static race(e){let t,n,r=new this((e,r)=>{t=e,n=r});function i(e){t(e)}function a(e){n(e)}for(let t of e)p(t)||(t=this.resolve(t)),t.then(i,a);return r}static all(e){return fe.allWithCallback(e)}static allSettled(e){return(this&&this.prototype instanceof fe?this:fe).allWithCallback(e,{thenCallback:e=>({status:`fulfilled`,value:e}),errorCallback:e=>({status:`rejected`,reason:e})})}static allWithCallback(e,t){let n,r,i=new this((e,t)=>{n=e,r=t}),a=2,o=0,s=[];for(let i of e){p(i)||(i=this.resolve(i));let e=o;try{i.then(r=>{s[e]=t?t.thenCallback(r):r,a--,a===0&&n(s)},i=>{t?(s[e]=t.errorCallback(i),a--,a===0&&n(s)):r(i)})}catch(e){r(e)}a++,o++}return a-=2,a===0&&n(s),i}constructor(e){let t=this;if(!(t instanceof fe))throw Error(`Must be an instanceof Promise.`);t[g]=null,t[_]=[];try{let n=ie();e&&e(n(re(t,!0)),n(re(t,!1)))}catch(e){oe(t,!1,e)}}get[Symbol.toStringTag](){return`Promise`}get[Symbol.species](){return fe}then(e,n){let r=this.constructor?.[Symbol.species];(!r||typeof r!=`function`)&&(r=this.constructor||fe);let i=new r(ue),a=t.current;return this[g]==null?this[_].push(a,i,e,n):le(this,a,i,e,n),i}catch(e){return this.then(null,e)}finally(e){let n=this.constructor?.[Symbol.species];(!n||typeof n!=`function`)&&(n=fe);let r=new n(ue);r[ee]=ee;let i=t.current;return this[g]==null?this[_].push(i,r,e,e):le(this,i,r,e,e),r}}fe.resolve=fe.resolve,fe.reject=fe.reject,fe.race=fe.race,fe.all=fe.all;let pe=e[l]=e.Promise;e.Promise=fe;let me=o(`thenPatched`);function he(e){let t=e.prototype,n=r(t,`then`);if(n&&(n.writable===!1||!n.configurable))return;let i=t.then;t[u]=i,e.prototype.then=function(e,t){return new fe((e,t)=>{i.call(this,e,t)}).then(e,t)},e[me]=!0}n.patchThen=he;function ge(e){return function(t,n){let r=e.apply(t,n);if(r instanceof fe)return r;let i=r.constructor;return i[me]||he(i),r}}if(pe){he(pe);let t=pe.try;t&&typeof t==`function`&&(fe.try=t),Ee(e,`fetch`,e=>ge(e))}return Promise[t.__symbol__(`uncaughtPromiseErrors`)]=s,fe})}function Ze(e){e.__load_patch(`toString`,e=>{let t=Function.prototype.toString,n=se(`OriginalDelegate`),r=se(`Promise`),i=se(`Error`),a=function(){if(typeof this==`function`){let a=this[n];if(a)return typeof a==`function`?t.call(a):Object.prototype.toString.call(a);if(this===Promise){let n=e[r];if(n)return t.call(n)}if(this===Error){let n=e[i];if(n)return t.call(n)}}return t.call(this)};a[n]=t,Function.prototype.toString=a;let o=Object.prototype.toString;Object.prototype.toString=function(){return typeof Promise==`function`&&this instanceof Promise?`[object Promise]`:o.call(this)}})}function Qe(e,t,n,r,i){let a=Zone.__symbol__(r);if(t[a])return;let o=t[a]=t[r];t[r]=function(a,s,c){return s&&s.prototype&&i.forEach(function(t){let i=`${n}.${r}::`+t,a=s.prototype;try{if(Object.hasOwn(a,t)){let n=e.ObjectGetOwnPropertyDescriptor(a,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,i),e._redefineProperty(s.prototype,t,n)):a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}else a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}catch{}}),o.call(t,a,s,c)},e.attachOriginToPatched(t[r],o)}function $e(e){e.__load_patch(`util`,(e,t,n)=>{let r=Je(e);n.patchOnProperties=Ce,n.patchMethod=Ee,n.bindArguments=fe,n.patchMacroTask=De;let i=t.__symbol__(`BLACK_LISTED_EVENTS`),a=t.__symbol__(`UNPATCHED_EVENTS`);e[a]&&(e[i]=e[a]),e[i]&&(t[i]=t[a]=e[i]),n.patchEventPrototype=eee,n.patchEventTarget=Re,n.ObjectDefineProperty=f,n.ObjectGetOwnPropertyDescriptor=d,n.ObjectCreate=m,n.ArraySlice=h,n.patchClass=Te,n.wrapWithCurrentZone=ae,n.filterProperties=Ke,n.attachOriginToPatched=Oe,n._redefineProperty=Object.defineProperty,n.patchCallbacks=Qe,n.getGlobalObjects=()=>({globalSources:Ne,zoneSymbolEventNames:Me,eventNames:r,isBrowser:_e,isMix:ve,isNode:ge,TRUE_STR:ne,FALSE_STR:re,ZONE_SYMBOL_PREFIX:ie,ADD_EVENT_LISTENER_STR:g,REMOVE_EVENT_LISTENER_STR:_})})}function et(e){Xe(e),Ze(e),$e(e)}var tt=u();et(tt),Ye(tt);var nt=(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})(nt||{}),rt=(function(e){return e[e.None=0]=`None`,e[e.Const=1]=`Const`,e})(rt||{}),it=class{modifiers;constructor(e=rt.None){this.modifiers=e}hasModifier(e){return(this.modifiers&e)!==0}},at=(function(e){return e[e.Dynamic=0]=`Dynamic`,e[e.Bool=1]=`Bool`,e[e.String=2]=`String`,e[e.Int=3]=`Int`,e[e.Number=4]=`Number`,e[e.Function=5]=`Function`,e[e.Inferred=6]=`Inferred`,e[e.None=7]=`None`,e})(at||{}),ot=class extends it{name;constructor(e,t){super(t),this.name=e}visitType(e,t){return e.visitBuiltinType(this,t)}};at.Dynamic;var st=new ot(at.Inferred);at.Bool,at.Int,at.Number,at.String,at.Function,at.None;var v=(function(e){return e[e.Equals=0]=`Equals`,e[e.NotEquals=1]=`NotEquals`,e[e.Assign=2]=`Assign`,e[e.Identical=3]=`Identical`,e[e.NotIdentical=4]=`NotIdentical`,e[e.Minus=5]=`Minus`,e[e.Plus=6]=`Plus`,e[e.Divide=7]=`Divide`,e[e.Multiply=8]=`Multiply`,e[e.Modulo=9]=`Modulo`,e[e.And=10]=`And`,e[e.Or=11]=`Or`,e[e.BitwiseOr=12]=`BitwiseOr`,e[e.BitwiseAnd=13]=`BitwiseAnd`,e[e.Lower=14]=`Lower`,e[e.LowerEquals=15]=`LowerEquals`,e[e.Bigger=16]=`Bigger`,e[e.BiggerEquals=17]=`BiggerEquals`,e[e.NullishCoalesce=18]=`NullishCoalesce`,e[e.Exponentiation=19]=`Exponentiation`,e[e.In=20]=`In`,e[e.InstanceOf=21]=`InstanceOf`,e[e.AdditionAssignment=22]=`AdditionAssignment`,e[e.SubtractionAssignment=23]=`SubtractionAssignment`,e[e.MultiplicationAssignment=24]=`MultiplicationAssignment`,e[e.DivisionAssignment=25]=`DivisionAssignment`,e[e.RemainderAssignment=26]=`RemainderAssignment`,e[e.ExponentiationAssignment=27]=`ExponentiationAssignment`,e[e.AndAssignment=28]=`AndAssignment`,e[e.OrAssignment=29]=`OrAssignment`,e[e.NullishCoalesceAssignment=30]=`NullishCoalesceAssignment`,e})(v||{});function ct(e,t){return e==null||t==null?e==t:e.isEquivalent(t)}function lt(e,t,n){let r=e.length;if(r!==t.length)return!1;for(let i=0;ie.isEquivalent(t))}var dt=class{leadingComments;type;sourceSpan;constructor(e,t,n){this.leadingComments=n,this.type=e||null,this.sourceSpan=t||null}prop(e,t){return new ree(this,e,null,t)}key(e,t,n){return new iee(this,e,t,n)}callFn(e,t,n,r){return new mt(this,e,null,t,n,r)}instantiate(e,t,n,r){return new ht(this,e,t,n)}conditional(e,t=null,n,r){return new nee(this,e,t,null,n)}equals(e,t){return new yt(v.Equals,this,e,null,t)}notEquals(e,t){return new yt(v.NotEquals,this,e,null,t)}identical(e,t){return new yt(v.Identical,this,e,null,t)}notIdentical(e,t){return new yt(v.NotIdentical,this,e,null,t)}minus(e,t){return new yt(v.Minus,this,e,null,t)}plus(e,t){return new yt(v.Plus,this,e,null,t)}divide(e,t){return new yt(v.Divide,this,e,null,t)}multiply(e,t){return new yt(v.Multiply,this,e,null,t)}modulo(e,t){return new yt(v.Modulo,this,e,null,t)}power(e,t){return new yt(v.Exponentiation,this,e,null,t)}and(e,t){return new yt(v.And,this,e,null,t)}bitwiseOr(e,t){return new yt(v.BitwiseOr,this,e,null,t)}bitwiseAnd(e,t){return new yt(v.BitwiseAnd,this,e,null,t)}or(e,t){return new yt(v.Or,this,e,null,t)}lower(e,t){return new yt(v.Lower,this,e,null,t)}lowerEquals(e,t){return new yt(v.LowerEquals,this,e,null,t)}bigger(e,t){return new yt(v.Bigger,this,e,null,t)}biggerEquals(e,t){return new yt(v.BiggerEquals,this,e,null,t)}isBlank(e){return this.equals(lee,e)}nullishCoalesce(e,t){return new yt(v.NullishCoalesce,this,e,null,t)}toStmt(e){return new St(this,null,e)}},ft=class e extends dt{name;constructor(e,t,n,r){super(t,n,r),this.name=e}isEquivalent(t){return t instanceof e&&this.name===t.name}isConstant(){return!1}visitExpression(e,t){return e.visitReadVarExpr(this,t)}clone(){return new e(this.name,this.type,this.sourceSpan)}set(e){return new yt(v.Assign,this,e,null,this.sourceSpan)}},pt=class e extends dt{expr;constructor(e,t,n,r){super(t,n,r),this.expr=e}visitExpression(e,t){return e.visitTypeofExpr(this,t)}isEquivalent(t){return t instanceof e&&t.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new e(this.expr.clone())}},mt=class e extends dt{fn;args;pure;isOptional;constructor(e,t,n,r,i=!1,a,o=!1){super(n,r,a),this.fn=e,this.args=t,this.pure=i,this.isOptional=o}get receiver(){return this.fn}isEquivalent(t){return t instanceof e&&this.fn.isEquivalent(t.fn)&&ut(this.args,t.args)&&this.pure===t.pure}isConstant(){return!1}visitExpression(e,t){return e.visitInvokeFunctionExpr(this,t)}clone(){return new e(this.fn.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan,this.pure,[],this.isOptional)}},ht=class e extends dt{classExpr;args;constructor(e,t,n,r,i){super(n,r,i),this.classExpr=e,this.args=t}isEquivalent(t){return t instanceof e&&this.classExpr.isEquivalent(t.classExpr)&&ut(this.args,t.args)}isConstant(){return!1}visitExpression(e,t){return e.visitInstantiateExpr(this,t)}clone(){return new e(this.classExpr.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan)}},gt=class e extends dt{body;flags;constructor(e,t,n,r){super(null,n,r),this.body=e,this.flags=t}isEquivalent(t){return t instanceof e&&this.body===t.body&&this.flags===t.flags}isConstant(){return!0}visitExpression(e,t){return e.visitRegularExpressionLiteral(this,t)}clone(){return new e(this.body,this.flags,this.sourceSpan)}},_t=class e extends dt{value;constructor(e,t,n,r){super(t,n,r),this.value=e}isEquivalent(t){return t instanceof e&&this.value===t.value}isConstant(){return!0}visitExpression(e,t){return e.visitLiteralExpr(this,t)}clone(){return new e(this.value,this.type,this.sourceSpan)}},vt=class e extends dt{value;typeParams;constructor(e,t,n=null,r,i){super(t,r,i),this.value=e,this.typeParams=n}isEquivalent(t){return t instanceof e&&this.value.name===t.value.name&&this.value.moduleName===t.value.moduleName}isConstant(){return!1}visitExpression(e,t){return e.visitExternalExpr(this,t)}clone(){return new e(this.value,this.type,this.typeParams,this.sourceSpan)}},nee=class e extends dt{condition;falseCase;trueCase;constructor(e,t,n=null,r,i,a){super(r||t.type,i,a),this.condition=e,this.falseCase=n,this.trueCase=t}isEquivalent(t){return t instanceof e&&this.condition.isEquivalent(t.condition)&&this.trueCase.isEquivalent(t.trueCase)&&ct(this.falseCase,t.falseCase)}isConstant(){return!1}visitExpression(e,t){return e.visitConditionalExpr(this,t)}clone(){return new e(this.condition.clone(),this.trueCase.clone(),this.falseCase?.clone(),this.type,this.sourceSpan)}},yt=class e extends dt{operator;rhs;lhs;constructor(e,t,n,r,i,a){super(r||t.type,i,a),this.operator=e,this.rhs=n,this.lhs=t}isEquivalent(t){return t instanceof e&&this.operator===t.operator&&this.lhs.isEquivalent(t.lhs)&&this.rhs.isEquivalent(t.rhs)}isConstant(){return!1}visitExpression(e,t){return e.visitBinaryOperatorExpr(this,t)}clone(){return new e(this.operator,this.lhs.clone(),this.rhs.clone(),this.type,this.sourceSpan)}isAssignment(){let e=this.operator;return e===v.Assign||e===v.AdditionAssignment||e===v.SubtractionAssignment||e===v.MultiplicationAssignment||e===v.DivisionAssignment||e===v.RemainderAssignment||e===v.ExponentiationAssignment||e===v.AndAssignment||e===v.OrAssignment||e===v.NullishCoalesceAssignment}},ree=class e extends dt{receiver;name;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.name=t,this.isOptional=a}get index(){return this.name}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.name===t.name&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadPropExpr(this,t)}set(e){return new yt(v.Assign,this.receiver.prop(this.name),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.name,this.type,this.sourceSpan,[],this.isOptional)}},iee=class e extends dt{receiver;index;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.index=t,this.isOptional=a}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.index.isEquivalent(t.index)&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadKeyExpr(this,t)}set(e){return new yt(v.Assign,this.receiver.key(this.index),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.index.clone(),this.type,this.sourceSpan,[],this.isOptional)}},aee=class e extends dt{entries;constructor(e,t,n,r){super(t,n,r),this.entries=e}isConstant(){return this.entries.every(e=>e.isConstant())}isEquivalent(t){return t instanceof e&&ut(this.entries,t.entries)}visitExpression(e,t){return e.visitLiteralArrayExpr(this,t)}clone(){return new e(this.entries.map(e=>e.clone()),this.type,this.sourceSpan)}},oee=class e{expression;constructor(e){this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}clone(){return new e(this.expression.clone())}isConstant(){return this.expression.isConstant()}},see=class e extends dt{entries;valueType=null;constructor(e,t,n,r){super(t,n,r),this.entries=e,t&&(this.valueType=t.valueType)}isEquivalent(t){return t instanceof e&&ut(this.entries,t.entries)}isConstant(){return this.entries.every(e=>e.isConstant())}visitExpression(e,t){return e.visitLiteralMapExpr(this,t)}clone(){let t=this.entries.map(e=>e.clone());return new e(t,this.type,this.sourceSpan)}},cee=class e extends dt{expression;constructor(e,t,n){super(null,t,n),this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}isConstant(){return this.expression.isConstant()}visitExpression(e,t){return e.visitSpreadElementExpr(this,t)}clone(){return new e(this.expression.clone(),this.sourceSpan)}},lee=new _t(null,st,null),bt=(function(e){return e[e.None=0]=`None`,e[e.Final=1]=`Final`,e[e.Private=2]=`Private`,e[e.Exported=4]=`Exported`,e[e.Static=8]=`Static`,e})(bt||{}),xt=class{modifiers;sourceSpan;leadingComments;constructor(e=bt.None,t=null,n){this.modifiers=e,this.sourceSpan=t,this.leadingComments=n}hasModifier(e){return(this.modifiers&e)!==0}addLeadingComment(e){this.leadingComments=this.leadingComments??[],this.leadingComments.push(e)}},St=class e extends xt{expr;constructor(e,t,n){super(bt.None,t,n),this.expr=e}isEquivalent(t){return t instanceof e&&this.expr.isEquivalent(t.expr)}visitStatement(e,t){return e.visitExpressionStmt(this,t)}};(class e{static INSTANCE=new e;keyOf(e){if(e instanceof _t&&typeof e.value==`string`)return`"${e.value}"`;if(e instanceof _t)return String(e.value);if(e instanceof gt)return`/${e.body}/${e.flags??``}`;if(e instanceof aee){let t=[];for(let n of e.entries)t.push(this.keyOf(n));return`[${t.join(`,`)}]`}if(e instanceof see){let t=[];for(let n of e.entries)if(n instanceof oee)t.push(`...`+this.keyOf(n.expression));else{let e=n.key;n.quoted&&(e=`"${e}"`),t.push(e+`:`+this.keyOf(n.value))}return`{${t.join(`,`)}}`}if(e instanceof vt)return`import("${e.value.moduleName}", ${e.value.name})`;if(e instanceof ft)return`read(${e.name})`;if(e instanceof pt)return`typeof(${this.keyOf(e.expr)})`;if(e instanceof cee)return`...${this.keyOf(e.expression)}`;throw Error(`${this.constructor.name} does not handle expressions of type ${e.constructor.name}`)}});var y=`@angular/core`,b=(()=>{class e{static core={name:null,moduleName:y};static namespaceHTML={name:`ɵɵnamespaceHTML`,moduleName:y};static namespaceMathML={name:`ɵɵnamespaceMathML`,moduleName:y};static namespaceSVG={name:`ɵɵnamespaceSVG`,moduleName:y};static element={name:`ɵɵelement`,moduleName:y};static elementStart={name:`ɵɵelementStart`,moduleName:y};static elementEnd={name:`ɵɵelementEnd`,moduleName:y};static foreignComponent={name:`ɵɵforeignComponent`,moduleName:y};static foreignContent={name:`ɵɵforeignContent`,moduleName:y};static foreignContentFn={name:`ɵɵforeignContentFn`,moduleName:y};static domElement={name:`ɵɵdomElement`,moduleName:y};static domElementStart={name:`ɵɵdomElementStart`,moduleName:y};static domElementEnd={name:`ɵɵdomElementEnd`,moduleName:y};static domElementContainer={name:`ɵɵdomElementContainer`,moduleName:y};static domElementContainerStart={name:`ɵɵdomElementContainerStart`,moduleName:y};static domElementContainerEnd={name:`ɵɵdomElementContainerEnd`,moduleName:y};static domTemplate={name:`ɵɵdomTemplate`,moduleName:y};static domListener={name:`ɵɵdomListener`,moduleName:y};static advance={name:`ɵɵadvance`,moduleName:y};static syntheticHostProperty={name:`ɵɵsyntheticHostProperty`,moduleName:y};static syntheticHostListener={name:`ɵɵsyntheticHostListener`,moduleName:y};static attribute={name:`ɵɵattribute`,moduleName:y};static classProp={name:`ɵɵclassProp`,moduleName:y};static elementContainerStart={name:`ɵɵelementContainerStart`,moduleName:y};static elementContainerEnd={name:`ɵɵelementContainerEnd`,moduleName:y};static elementContainer={name:`ɵɵelementContainer`,moduleName:y};static styleMap={name:`ɵɵstyleMap`,moduleName:y};static classMap={name:`ɵɵclassMap`,moduleName:y};static styleProp={name:`ɵɵstyleProp`,moduleName:y};static interpolate={name:`ɵɵinterpolate`,moduleName:y};static interpolate1={name:`ɵɵinterpolate1`,moduleName:y};static interpolate2={name:`ɵɵinterpolate2`,moduleName:y};static interpolate3={name:`ɵɵinterpolate3`,moduleName:y};static interpolate4={name:`ɵɵinterpolate4`,moduleName:y};static interpolate5={name:`ɵɵinterpolate5`,moduleName:y};static interpolate6={name:`ɵɵinterpolate6`,moduleName:y};static interpolate7={name:`ɵɵinterpolate7`,moduleName:y};static interpolate8={name:`ɵɵinterpolate8`,moduleName:y};static interpolateV={name:`ɵɵinterpolateV`,moduleName:y};static nextContext={name:`ɵɵnextContext`,moduleName:y};static resetView={name:`ɵɵresetView`,moduleName:y};static templateCreate={name:`ɵɵtemplate`,moduleName:y};static defer={name:`ɵɵdefer`,moduleName:y};static deferWhen={name:`ɵɵdeferWhen`,moduleName:y};static deferOnIdle={name:`ɵɵdeferOnIdle`,moduleName:y};static deferOnImmediate={name:`ɵɵdeferOnImmediate`,moduleName:y};static deferOnTimer={name:`ɵɵdeferOnTimer`,moduleName:y};static deferOnHover={name:`ɵɵdeferOnHover`,moduleName:y};static deferOnInteraction={name:`ɵɵdeferOnInteraction`,moduleName:y};static deferOnViewport={name:`ɵɵdeferOnViewport`,moduleName:y};static deferPrefetchWhen={name:`ɵɵdeferPrefetchWhen`,moduleName:y};static deferPrefetchOnIdle={name:`ɵɵdeferPrefetchOnIdle`,moduleName:y};static deferPrefetchOnImmediate={name:`ɵɵdeferPrefetchOnImmediate`,moduleName:y};static deferPrefetchOnTimer={name:`ɵɵdeferPrefetchOnTimer`,moduleName:y};static deferPrefetchOnHover={name:`ɵɵdeferPrefetchOnHover`,moduleName:y};static deferPrefetchOnInteraction={name:`ɵɵdeferPrefetchOnInteraction`,moduleName:y};static deferPrefetchOnViewport={name:`ɵɵdeferPrefetchOnViewport`,moduleName:y};static deferHydrateWhen={name:`ɵɵdeferHydrateWhen`,moduleName:y};static deferHydrateNever={name:`ɵɵdeferHydrateNever`,moduleName:y};static deferHydrateOnIdle={name:`ɵɵdeferHydrateOnIdle`,moduleName:y};static deferHydrateOnImmediate={name:`ɵɵdeferHydrateOnImmediate`,moduleName:y};static deferHydrateOnTimer={name:`ɵɵdeferHydrateOnTimer`,moduleName:y};static deferHydrateOnHover={name:`ɵɵdeferHydrateOnHover`,moduleName:y};static deferHydrateOnInteraction={name:`ɵɵdeferHydrateOnInteraction`,moduleName:y};static deferHydrateOnViewport={name:`ɵɵdeferHydrateOnViewport`,moduleName:y};static deferEnableTimerScheduling={name:`ɵɵdeferEnableTimerScheduling`,moduleName:y};static enableIncrementalHydrationRuntime={name:`ɵɵenableIncrementalHydrationRuntime`,moduleName:y};static conditionalCreate={name:`ɵɵconditionalCreate`,moduleName:y};static conditionalBranchCreate={name:`ɵɵconditionalBranchCreate`,moduleName:y};static conditional={name:`ɵɵconditional`,moduleName:y};static repeater={name:`ɵɵrepeater`,moduleName:y};static repeaterCreate={name:`ɵɵrepeaterCreate`,moduleName:y};static repeaterTrackByIndex={name:`ɵɵrepeaterTrackByIndex`,moduleName:y};static repeaterTrackByIdentity={name:`ɵɵrepeaterTrackByIdentity`,moduleName:y};static componentInstance={name:`ɵɵcomponentInstance`,moduleName:y};static text={name:`ɵɵtext`,moduleName:y};static enableBindings={name:`ɵɵenableBindings`,moduleName:y};static disableBindings={name:`ɵɵdisableBindings`,moduleName:y};static getCurrentView={name:`ɵɵgetCurrentView`,moduleName:y};static textInterpolate={name:`ɵɵtextInterpolate`,moduleName:y};static textInterpolate1={name:`ɵɵtextInterpolate1`,moduleName:y};static textInterpolate2={name:`ɵɵtextInterpolate2`,moduleName:y};static textInterpolate3={name:`ɵɵtextInterpolate3`,moduleName:y};static textInterpolate4={name:`ɵɵtextInterpolate4`,moduleName:y};static textInterpolate5={name:`ɵɵtextInterpolate5`,moduleName:y};static textInterpolate6={name:`ɵɵtextInterpolate6`,moduleName:y};static textInterpolate7={name:`ɵɵtextInterpolate7`,moduleName:y};static textInterpolate8={name:`ɵɵtextInterpolate8`,moduleName:y};static textInterpolateV={name:`ɵɵtextInterpolateV`,moduleName:y};static restoreView={name:`ɵɵrestoreView`,moduleName:y};static pureFunction0={name:`ɵɵpureFunction0`,moduleName:y};static pureFunction1={name:`ɵɵpureFunction1`,moduleName:y};static pureFunction2={name:`ɵɵpureFunction2`,moduleName:y};static pureFunction3={name:`ɵɵpureFunction3`,moduleName:y};static pureFunction4={name:`ɵɵpureFunction4`,moduleName:y};static pureFunction5={name:`ɵɵpureFunction5`,moduleName:y};static pureFunction6={name:`ɵɵpureFunction6`,moduleName:y};static pureFunction7={name:`ɵɵpureFunction7`,moduleName:y};static pureFunction8={name:`ɵɵpureFunction8`,moduleName:y};static pureFunctionV={name:`ɵɵpureFunctionV`,moduleName:y};static pipeBind1={name:`ɵɵpipeBind1`,moduleName:y};static pipeBind2={name:`ɵɵpipeBind2`,moduleName:y};static pipeBind3={name:`ɵɵpipeBind3`,moduleName:y};static pipeBind4={name:`ɵɵpipeBind4`,moduleName:y};static pipeBindV={name:`ɵɵpipeBindV`,moduleName:y};static domProperty={name:`ɵɵdomProperty`,moduleName:y};static ariaProperty={name:`ɵɵariaProperty`,moduleName:y};static property={name:`ɵɵproperty`,moduleName:y};static control={name:`ɵɵcontrol`,moduleName:y};static controlCreate={name:`ɵɵcontrolCreate`,moduleName:y};static animationEnterListener={name:`ɵɵanimateEnterListener`,moduleName:y};static animationLeaveListener={name:`ɵɵanimateLeaveListener`,moduleName:y};static animationEnter={name:`ɵɵanimateEnter`,moduleName:y};static animationLeave={name:`ɵɵanimateLeave`,moduleName:y};static i18n={name:`ɵɵi18n`,moduleName:y};static i18nAttributes={name:`ɵɵi18nAttributes`,moduleName:y};static i18nExp={name:`ɵɵi18nExp`,moduleName:y};static i18nStart={name:`ɵɵi18nStart`,moduleName:y};static i18nEnd={name:`ɵɵi18nEnd`,moduleName:y};static i18nApply={name:`ɵɵi18nApply`,moduleName:y};static i18nPostprocess={name:`ɵɵi18nPostprocess`,moduleName:y};static pipe={name:`ɵɵpipe`,moduleName:y};static projection={name:`ɵɵprojection`,moduleName:y};static projectionDef={name:`ɵɵprojectionDef`,moduleName:y};static reference={name:`ɵɵreference`,moduleName:y};static inject={name:`ɵɵinject`,moduleName:y};static injectAttribute={name:`ɵɵinjectAttribute`,moduleName:y};static directiveInject={name:`ɵɵdirectiveInject`,moduleName:y};static invalidFactory={name:`ɵɵinvalidFactory`,moduleName:y};static invalidFactoryDep={name:`ɵɵinvalidFactoryDep`,moduleName:y};static templateRefExtractor={name:`ɵɵtemplateRefExtractor`,moduleName:y};static forwardRef={name:`forwardRef`,moduleName:y};static resolveForwardRef={name:`resolveForwardRef`,moduleName:y};static replaceMetadata={name:`ɵɵreplaceMetadata`,moduleName:y};static getReplaceMetadataURL={name:`ɵɵgetReplaceMetadataURL`,moduleName:y};static ɵɵdefineInjectable={name:`ɵɵdefineInjectable`,moduleName:y};static declareInjectable={name:`ɵɵngDeclareInjectable`,moduleName:y};static InjectableDeclaration={name:`ɵɵInjectableDeclaration`,moduleName:y};static defineService={name:`ɵɵdefineService`,moduleName:y};static declareService={name:`ɵɵngDeclareService`,moduleName:y};static resolveWindow={name:`ɵɵresolveWindow`,moduleName:y};static resolveDocument={name:`ɵɵresolveDocument`,moduleName:y};static resolveBody={name:`ɵɵresolveBody`,moduleName:y};static getComponentDepsFactory={name:`ɵɵgetComponentDepsFactory`,moduleName:y};static defineComponent={name:`ɵɵdefineComponent`,moduleName:y};static declareComponent={name:`ɵɵngDeclareComponent`,moduleName:y};static setComponentScope={name:`ɵɵsetComponentScope`,moduleName:y};static ChangeDetectionStrategy={name:`ChangeDetectionStrategy`,moduleName:y};static ViewEncapsulation={name:`ViewEncapsulation`,moduleName:y};static ComponentDeclaration={name:`ɵɵComponentDeclaration`,moduleName:y};static FactoryDeclaration={name:`ɵɵFactoryDeclaration`,moduleName:y};static declareFactory={name:`ɵɵngDeclareFactory`,moduleName:y};static FactoryTarget={name:`ɵɵFactoryTarget`,moduleName:y};static defineDirective={name:`ɵɵdefineDirective`,moduleName:y};static declareDirective={name:`ɵɵngDeclareDirective`,moduleName:y};static DirectiveDeclaration={name:`ɵɵDirectiveDeclaration`,moduleName:y};static InjectorDef={name:`ɵɵInjectorDef`,moduleName:y};static InjectorDeclaration={name:`ɵɵInjectorDeclaration`,moduleName:y};static defineInjector={name:`ɵɵdefineInjector`,moduleName:y};static declareInjector={name:`ɵɵngDeclareInjector`,moduleName:y};static NgModuleDeclaration={name:`ɵɵNgModuleDeclaration`,moduleName:y};static ModuleWithProviders={name:`ModuleWithProviders`,moduleName:y};static defineNgModule={name:`ɵɵdefineNgModule`,moduleName:y};static declareNgModule={name:`ɵɵngDeclareNgModule`,moduleName:y};static setNgModuleScope={name:`ɵɵsetNgModuleScope`,moduleName:y};static registerNgModuleType={name:`ɵɵregisterNgModuleType`,moduleName:y};static PipeDeclaration={name:`ɵɵPipeDeclaration`,moduleName:y};static definePipe={name:`ɵɵdefinePipe`,moduleName:y};static declarePipe={name:`ɵɵngDeclarePipe`,moduleName:y};static declareClassMetadata={name:`ɵɵngDeclareClassMetadata`,moduleName:y};static declareClassMetadataAsync={name:`ɵɵngDeclareClassMetadataAsync`,moduleName:y};static setClassMetadata={name:`ɵsetClassMetadata`,moduleName:y};static setClassMetadataAsync={name:`ɵsetClassMetadataAsync`,moduleName:y};static setClassDebugInfo={name:`ɵsetClassDebugInfo`,moduleName:y};static queryRefresh={name:`ɵɵqueryRefresh`,moduleName:y};static viewQuery={name:`ɵɵviewQuery`,moduleName:y};static loadQuery={name:`ɵɵloadQuery`,moduleName:y};static contentQuery={name:`ɵɵcontentQuery`,moduleName:y};static viewQuerySignal={name:`ɵɵviewQuerySignal`,moduleName:y};static contentQuerySignal={name:`ɵɵcontentQuerySignal`,moduleName:y};static queryAdvance={name:`ɵɵqueryAdvance`,moduleName:y};static twoWayProperty={name:`ɵɵtwoWayProperty`,moduleName:y};static twoWayBindingSet={name:`ɵɵtwoWayBindingSet`,moduleName:y};static twoWayListener={name:`ɵɵtwoWayListener`,moduleName:y};static declareLet={name:`ɵɵdeclareLet`,moduleName:y};static storeLet={name:`ɵɵstoreLet`,moduleName:y};static readContextLet={name:`ɵɵreadContextLet`,moduleName:y};static arrowFunction={name:`ɵɵarrowFunction`,moduleName:y};static attachSourceLocations={name:`ɵɵattachSourceLocations`,moduleName:y};static NgOnChangesFeature={name:`ɵɵNgOnChangesFeature`,moduleName:y};static ControlFeature={name:`ɵɵControlFeature`,moduleName:y};static InheritDefinitionFeature={name:`ɵɵInheritDefinitionFeature`,moduleName:y};static ProvidersFeature={name:`ɵɵProvidersFeature`,moduleName:y};static HostDirectivesFeature={name:`ɵɵHostDirectivesFeature`,moduleName:y};static ExternalStylesFeature={name:`ɵɵExternalStylesFeature`,moduleName:y};static listener={name:`ɵɵlistener`,moduleName:y};static getInheritedFactory={name:`ɵɵgetInheritedFactory`,moduleName:y};static sanitizeHtml={name:`ɵɵsanitizeHtml`,moduleName:y};static sanitizeStyle={name:`ɵɵsanitizeStyle`,moduleName:y};static validateAttribute={name:`ɵɵvalidateAttribute`,moduleName:y};static sanitizeResourceUrl={name:`ɵɵsanitizeResourceUrl`,moduleName:y};static sanitizeScript={name:`ɵɵsanitizeScript`,moduleName:y};static sanitizeUrl={name:`ɵɵsanitizeUrl`,moduleName:y};static sanitizeUrlOrResourceUrl={name:`ɵɵsanitizeUrlOrResourceUrl`,moduleName:y};static trustConstantHtml={name:`ɵɵtrustConstantHtml`,moduleName:y};static trustConstantResourceUrl={name:`ɵɵtrustConstantResourceUrl`,moduleName:y};static inputDecorator={name:`Input`,moduleName:y};static outputDecorator={name:`Output`,moduleName:y};static viewChildDecorator={name:`ViewChild`,moduleName:y};static viewChildrenDecorator={name:`ViewChildren`,moduleName:y};static contentChildDecorator={name:`ContentChild`,moduleName:y};static contentChildrenDecorator={name:`ContentChildren`,moduleName:y};static InputSignalBrandWriteType={name:`ɵINPUT_SIGNAL_BRAND_WRITE_TYPE`,moduleName:y};static UnwrapDirectiveSignalInputs={name:`ɵUnwrapDirectiveSignalInputs`,moduleName:y};static unwrapWritableSignal={name:`ɵunwrapWritableSignal`,moduleName:y};static assertType={name:`ɵassertType`,moduleName:y}}return e})();v.And,v.Bigger,v.BiggerEquals,v.BitwiseOr,v.BitwiseAnd,v.Divide,v.Assign,v.Equals,v.Identical,v.Lower,v.LowerEquals,v.Minus,v.Modulo,v.Exponentiation,v.Multiply,v.NotEquals,v.NotIdentical,v.NullishCoalesce,v.Or,v.Plus,v.In,v.InstanceOf,v.AdditionAssignment,v.SubtractionAssignment,v.MultiplicationAssignment,v.DivisionAssignment,v.RemainderAssignment,v.ExponentiationAssignment,v.AndAssignment,v.OrAssignment,v.NullishCoalesceAssignment;var Ct=class{span;sourceSpan;constructor(e,t){this.span=e,this.sourceSpan=t}toString(){return`AST`}},wt=class extends Ct{receiver;args;argumentSpan;constructor(e,t,n,r,i){super(e,t),this.receiver=n,this.args=r,this.argumentSpan=i}visit(e,t=null){return e.visitCall(this,t)}},Tt=(function(e){return e[e.Property=0]=`Property`,e[e.Attribute=1]=`Attribute`,e[e.Class=2]=`Class`,e[e.Style=3]=`Style`,e[e.LegacyAnimation=4]=`LegacyAnimation`,e[e.TwoWay=5]=`TwoWay`,e[e.Animation=6]=`Animation`,e})(Tt||{}),Et=`(:(where|is)\\()?`,Dt=`-shadowcsshost`,Ot=`-shadowcsscontext`,kt=`[^)(]*`,At=String.raw`(?:\(${kt}\)|${kt})+?`,jt=String.raw`(?:\(${At}\)|${kt})+?`,Mt=String.raw`(?:\((${jt})\))`;String.raw`(:nth-[-\w]+)`+Mt,Dt+Mt+``,`${Et}`,Ot+Mt+``;var x=(function(e){return e[e.ListEnd=0]=`ListEnd`,e[e.Statement=1]=`Statement`,e[e.Variable=2]=`Variable`,e[e.ElementStart=3]=`ElementStart`,e[e.Element=4]=`Element`,e[e.ForeignComponent=5]=`ForeignComponent`,e[e.Template=6]=`Template`,e[e.ElementEnd=7]=`ElementEnd`,e[e.ContainerStart=8]=`ContainerStart`,e[e.Container=9]=`Container`,e[e.ContainerEnd=10]=`ContainerEnd`,e[e.DisableBindings=11]=`DisableBindings`,e[e.ConditionalCreate=12]=`ConditionalCreate`,e[e.ConditionalBranchCreate=13]=`ConditionalBranchCreate`,e[e.Conditional=14]=`Conditional`,e[e.EnableBindings=15]=`EnableBindings`,e[e.Text=16]=`Text`,e[e.Listener=17]=`Listener`,e[e.InterpolateText=18]=`InterpolateText`,e[e.Binding=19]=`Binding`,e[e.Property=20]=`Property`,e[e.StyleProp=21]=`StyleProp`,e[e.ClassProp=22]=`ClassProp`,e[e.StyleMap=23]=`StyleMap`,e[e.ClassMap=24]=`ClassMap`,e[e.Advance=25]=`Advance`,e[e.Pipe=26]=`Pipe`,e[e.Attribute=27]=`Attribute`,e[e.ExtractedAttribute=28]=`ExtractedAttribute`,e[e.Defer=29]=`Defer`,e[e.DeferOn=30]=`DeferOn`,e[e.DeferWhen=31]=`DeferWhen`,e[e.I18nMessage=32]=`I18nMessage`,e[e.DomProperty=33]=`DomProperty`,e[e.Namespace=34]=`Namespace`,e[e.ProjectionDef=35]=`ProjectionDef`,e[e.EnableIncrementalHydrationRuntime=36]=`EnableIncrementalHydrationRuntime`,e[e.Projection=37]=`Projection`,e[e.Content=38]=`Content`,e[e.RepeaterCreate=39]=`RepeaterCreate`,e[e.Repeater=40]=`Repeater`,e[e.TwoWayProperty=41]=`TwoWayProperty`,e[e.TwoWayListener=42]=`TwoWayListener`,e[e.DeclareLet=43]=`DeclareLet`,e[e.StoreLet=44]=`StoreLet`,e[e.I18nStart=45]=`I18nStart`,e[e.I18n=46]=`I18n`,e[e.I18nEnd=47]=`I18nEnd`,e[e.I18nExpression=48]=`I18nExpression`,e[e.I18nApply=49]=`I18nApply`,e[e.IcuStart=50]=`IcuStart`,e[e.IcuEnd=51]=`IcuEnd`,e[e.IcuPlaceholder=52]=`IcuPlaceholder`,e[e.I18nContext=53]=`I18nContext`,e[e.I18nAttributes=54]=`I18nAttributes`,e[e.SourceLocation=55]=`SourceLocation`,e[e.Animation=56]=`Animation`,e[e.AnimationString=57]=`AnimationString`,e[e.AnimationBinding=58]=`AnimationBinding`,e[e.AnimationListener=59]=`AnimationListener`,e[e.Control=60]=`Control`,e[e.ControlCreate=61]=`ControlCreate`,e})(x||{}),Nt=(function(e){return e[e.LexicalRead=0]=`LexicalRead`,e[e.Context=1]=`Context`,e[e.TrackContext=2]=`TrackContext`,e[e.ReadVariable=3]=`ReadVariable`,e[e.NextContext=4]=`NextContext`,e[e.Reference=5]=`Reference`,e[e.StoreLet=6]=`StoreLet`,e[e.ContextLetReference=7]=`ContextLetReference`,e[e.GetCurrentView=8]=`GetCurrentView`,e[e.RestoreView=9]=`RestoreView`,e[e.ResetView=10]=`ResetView`,e[e.PureFunctionExpr=11]=`PureFunctionExpr`,e[e.PureFunctionParameterExpr=12]=`PureFunctionParameterExpr`,e[e.PipeBinding=13]=`PipeBinding`,e[e.PipeBindingVariadic=14]=`PipeBindingVariadic`,e[e.SafePropertyRead=15]=`SafePropertyRead`,e[e.SafeKeyedRead=16]=`SafeKeyedRead`,e[e.SafeNavigationMigration=17]=`SafeNavigationMigration`,e[e.SafeTernaryExpr=18]=`SafeTernaryExpr`,e[e.EmptyExpr=19]=`EmptyExpr`,e[e.AssignTemporaryExpr=20]=`AssignTemporaryExpr`,e[e.ReadTemporaryExpr=21]=`ReadTemporaryExpr`,e[e.SlotLiteralExpr=22]=`SlotLiteralExpr`,e[e.ConditionalCase=23]=`ConditionalCase`,e[e.ConstCollected=24]=`ConstCollected`,e[e.TwoWayBindingSet=25]=`TwoWayBindingSet`,e[e.ForeignContent=26]=`ForeignContent`,e[e.ArrowFunction=27]=`ArrowFunction`,e})(Nt||{}),Pt=(function(e){return e[e.None=0]=`None`,e[e.AlwaysInline=1]=`AlwaysInline`,e})(Pt||{}),Ft=(function(e){return e[e.Context=0]=`Context`,e[e.Identifier=1]=`Identifier`,e[e.SavedView=2]=`SavedView`,e[e.Alias=3]=`Alias`,e})(Ft||{}),It=(function(e){return e[e.Attribute=0]=`Attribute`,e[e.ClassName=1]=`ClassName`,e[e.StyleProperty=2]=`StyleProperty`,e[e.Property=3]=`Property`,e[e.Template=4]=`Template`,e[e.I18n=5]=`I18n`,e[e.LegacyAnimation=6]=`LegacyAnimation`,e[e.TwoWayProperty=7]=`TwoWayProperty`,e[e.Animation=8]=`Animation`,e})(It||{}),Lt=(function(e){return e[e.Creation=0]=`Creation`,e[e.Postproccessing=1]=`Postproccessing`,e})(Lt||{}),Rt=(function(e){return e[e.I18nText=0]=`I18nText`,e[e.I18nAttribute=1]=`I18nAttribute`,e})(Rt||{}),zt=(function(e){return e[e.None=0]=`None`,e[e.ElementTag=1]=`ElementTag`,e[e.TemplateTag=2]=`TemplateTag`,e[e.OpenTag=4]=`OpenTag`,e[e.CloseTag=8]=`CloseTag`,e[e.ExpressionIndex=16]=`ExpressionIndex`,e})(zt||{}),Bt=(function(e){return e[e.HTML=0]=`HTML`,e[e.SVG=1]=`SVG`,e[e.Math=2]=`Math`,e})(Bt||{}),Vt=(function(e){return e[e.Idle=0]=`Idle`,e[e.Immediate=1]=`Immediate`,e[e.Timer=2]=`Timer`,e[e.Hover=3]=`Hover`,e[e.Interaction=4]=`Interaction`,e[e.Viewport=5]=`Viewport`,e[e.Never=6]=`Never`,e})(Vt||{}),Ht=(function(e){return e[e.RootI18n=0]=`RootI18n`,e[e.Icu=1]=`Icu`,e[e.Attr=2]=`Attr`,e})(Ht||{}),Ut=(function(e){return e[e.NgTemplate=0]=`NgTemplate`,e[e.Structural=1]=`Structural`,e[e.Block=2]=`Block`,e})(Ut||{}),Wt=(function(e){return e[e.None=0]=`None`,e[e.InChildOperation=1]=`InChildOperation`,e[e.InArrowFunctionOperation=2]=`InArrowFunctionOperation`,e[e.InSafeNavigationMigration=4]=`InSafeNavigationMigration`,e})(Wt||{});x.Element,x.ElementStart,x.Container,x.ContainerStart,x.Template,x.RepeaterCreate,x.ConditionalCreate,x.ConditionalBranchCreate;var S=(function(e){return e[e.Tmpl=0]=`Tmpl`,e[e.Host=1]=`Host`,e[e.Both=2]=`Both`,e})(S||{}),Gt=(function(e){return e[e.Full=0]=`Full`,e[e.DomOnly=1]=`DomOnly`,e})(Gt||{});b.ariaProperty,b.ariaProperty,b.attribute,b.attribute,b.classProp,b.classProp,b.element,b.element,b.elementContainer,b.elementContainer,b.elementContainerEnd,b.elementContainerEnd,b.elementContainerStart,b.elementContainerStart,b.elementEnd,b.elementEnd,b.elementStart,b.elementStart,b.domProperty,b.domProperty,b.i18nExp,b.i18nExp,b.listener,b.listener,b.listener,b.listener,b.property,b.property,b.styleProp,b.styleProp,b.syntheticHostListener,b.syntheticHostListener,b.syntheticHostProperty,b.syntheticHostProperty,b.templateCreate,b.templateCreate,b.twoWayProperty,b.twoWayProperty,b.twoWayListener,b.twoWayListener,b.declareLet,b.declareLet,b.conditionalCreate,b.conditionalBranchCreate,b.conditionalBranchCreate,b.conditionalBranchCreate,b.domElement,b.domElement,b.domElementStart,b.domElementStart,b.domElementEnd,b.domElementEnd,b.domElementContainer,b.domElementContainer,b.domElementContainerStart,b.domElementContainerStart,b.domElementContainerEnd,b.domElementContainerEnd,b.domListener,b.domListener,b.domTemplate,b.domTemplate,b.animationEnter,b.animationEnter,b.animationLeave,b.animationLeave,b.animationEnterListener,b.animationEnterListener,b.animationLeaveListener,b.animationLeaveListener,v.And,v.Bigger,v.BiggerEquals,v.BitwiseOr,v.BitwiseAnd,v.Divide,v.Assign,v.Equals,v.Identical,v.Lower,v.LowerEquals,v.Minus,v.Modulo,v.Exponentiation,v.Multiply,v.NotEquals,v.NotIdentical,v.NullishCoalesce,v.Or,v.Plus,v.In,v.InstanceOf,v.AdditionAssignment,v.SubtractionAssignment,v.MultiplicationAssignment,v.DivisionAssignment,v.RemainderAssignment,v.ExponentiationAssignment,v.AndAssignment,v.OrAssignment,v.NullishCoalesceAssignment,x.Property,x.Property,x.Property,x.Attribute,x.Attribute,x.Property,x.TwoWayProperty,x.Container,x.ContainerStart,x.ContainerEnd,x.Element,x.ElementStart,x.ElementEnd,x.Template,x.ElementEnd,x.ElementStart,x.Element,x.ContainerEnd,x.ContainerStart,x.Container,x.I18nEnd,x.I18nStart,x.I18n,x.Pipe;var Kt=` \f +\r \v ᠎ - \u2028\u2029   `;`${Kt}`,`${Kt}`;var qt=(function(e){return e[e.Character=0]=`Character`,e[e.Identifier=1]=`Identifier`,e[e.PrivateIdentifier=2]=`PrivateIdentifier`,e[e.Keyword=3]=`Keyword`,e[e.String=4]=`String`,e[e.Operator=5]=`Operator`,e[e.Number=6]=`Number`,e[e.RegExpBody=7]=`RegExpBody`,e[e.RegExpFlags=8]=`RegExpFlags`,e[e.Error=9]=`Error`,e})(qt||{}),Jt=(function(e){return e[e.Plain=0]=`Plain`,e[e.TemplateLiteralPart=1]=`TemplateLiteralPart`,e[e.TemplateLiteralEnd=2]=`TemplateLiteralEnd`,e})(Jt||{});qt.Character,x.StyleMap,x.ClassMap,x.StyleProp,x.ClassProp,x.Attribute,x.Property,x.Attribute,x.Control,x.DomProperty,x.DomProperty,x.Attribute,x.StyleMap,x.ClassMap,x.StyleProp,x.ClassProp,x.Listener,x.TwoWayListener,x.AnimationListener,x.StyleMap,x.ClassMap,x.StyleProp,x.ClassProp,x.Property,x.TwoWayProperty,x.DomProperty,x.Attribute,x.Animation,x.Control,Vt.Idle,b.deferOnIdle,b.deferPrefetchOnIdle,b.deferHydrateOnIdle,Vt.Immediate,b.deferOnImmediate,b.deferPrefetchOnImmediate,b.deferHydrateOnImmediate,Vt.Timer,b.deferOnTimer,b.deferPrefetchOnTimer,b.deferHydrateOnTimer,Vt.Hover,b.deferOnHover,b.deferPrefetchOnHover,b.deferHydrateOnHover,Vt.Interaction,b.deferOnInteraction,b.deferPrefetchOnInteraction,b.deferHydrateOnInteraction,Vt.Viewport,b.deferOnViewport,b.deferPrefetchOnViewport,b.deferHydrateOnViewport,Vt.Never,b.deferHydrateNever,b.deferHydrateNever,b.deferHydrateNever,b.pipeBind1,b.pipeBind2,b.pipeBind3,b.pipeBind4,b.textInterpolate,b.textInterpolate1,b.textInterpolate2,b.textInterpolate3,b.textInterpolate4,b.textInterpolate5,b.textInterpolate6,b.textInterpolate7,b.textInterpolate8,b.textInterpolateV,b.interpolate,b.interpolate1,b.interpolate2,b.interpolate3,b.interpolate4,b.interpolate5,b.interpolate6,b.interpolate7,b.interpolate8,b.interpolateV,b.pureFunction0,b.pureFunction1,b.pureFunction2,b.pureFunction3,b.pureFunction4,b.pureFunction5,b.pureFunction6,b.pureFunction7,b.pureFunction8,b.pureFunctionV,b.resolveWindow,b.resolveDocument,b.resolveBody,nt.HTML,b.sanitizeHtml,nt.RESOURCE_URL,b.sanitizeResourceUrl,nt.SCRIPT,b.sanitizeScript,nt.STYLE,b.sanitizeStyle,nt.URL,b.sanitizeUrl,nt.ATTRIBUTE_NO_BINDING,b.validateAttribute,nt.HTML,b.trustConstantHtml,nt.RESOURCE_URL,b.trustConstantResourceUrl;var Yt=(function(e){return e[e.None=0]=`None`,e[e.ViewContextRead=1]=`ViewContextRead`,e[e.ViewContextWrite=2]=`ViewContextWrite`,e[e.SideEffectful=4]=`SideEffectful`,e})(Yt||{});S.Tmpl,S.Tmpl,S.Both,S.Host,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Both,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Both,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Tmpl,S.Both,S.Both,S.Both,S.Both,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Tmpl,S.Both,S.Tmpl,S.Both,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Tmpl,S.Both,S.Both,S.Both,Tt.Property,It.Property,Tt.TwoWay,It.TwoWayProperty,Tt.Attribute,It.Attribute,Tt.Class,It.ClassName,Tt.Style,It.StyleProperty,Tt.LegacyAnimation,It.LegacyAnimation,Tt.Animation,It.Animation;var Xt=`%COMP%`;`${Xt}`,`${Xt}`,class e{static SINGLETON=new e;static veWillInferAnyFor(t){let n=e.SINGLETON;return t instanceof wt?t.visit(n):t.receiver.visit(n)}visitUnary(e){return e.expr.visit(this)}visitBinary(e){return e.left.visit(this)||e.right.visit(this)}visitChain(){return!1}visitConditional(e){return e.condition.visit(this)||e.trueExp.visit(this)||e.falseExp.visit(this)}visitCall(){return!0}visitSafeCall(){return!1}visitImplicitReceiver(){return!1}visitThisReceiver(){return!1}visitInterpolation(e){return e.expressions.some(e=>e.visit(this))}visitKeyedRead(){return!1}visitLiteralArray(){return!0}visitLiteralMap(){return!0}visitLiteralPrimitive(){return!1}visitPipe(){return!0}visitPrefixNot(e){return e.expression.visit(this)}visitTypeofExpression(e){return e.expression.visit(this)}visitVoidExpression(e){return e.expression.visit(this)}visitNonNullAssert(e){return e.expression.visit(this)}visitPropertyRead(){return!1}visitSafePropertyRead(){return!1}visitSafeKeyedRead(){return!1}visitTemplateLiteral(){return!1}visitTemplateLiteralElement(){return!1}visitTaggedTemplateLiteral(){return!1}visitParenthesizedExpression(e){return e.expression.visit(this)}visitRegularExpressionLiteral(){return!1}visitSpreadElement(e){return e.expression.visit(this)}visitArrowFunction(e,t){return!1}};var Zt=null,Qt=!1,$t=1,en=null,tn=Symbol(`SIGNAL`);function nn(e){let t=Zt;return Zt=e,t}function rn(){return Zt}var an={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:`unknown`,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function on(e){if(Qt)throw Error(``);if(Zt===null)return;Zt.consumerOnSignalRead(e);let t=Zt.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=Zt.recomputing;if(r&&(n=t===void 0?Zt.producers:t.nextProducer,n!==void 0&&n.producer===e)){Zt.producersTail=n,n.lastReadVersion=e.version,n.knownValidAtEpoch=$t;return}let i=e.consumersTail;if(i!==void 0&&i.consumer===Zt&&(!r||i.knownValidAtEpoch===$t))return;let a=xn(Zt),o={producer:e,consumer:Zt,nextProducer:n,prevConsumer:void 0,knownValidAtEpoch:$t,lastReadVersion:e.version,nextConsumer:void 0};Zt.producersTail=o,t===void 0?Zt.producers=o:t.nextProducer=o,a&&yn(e,o)}function sn(){$t++}function cn(e){if((!xn(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==$t)){if(!e.producerMustRecompute(e)&&!_n(e)){fn(e);return}e.producerRecomputeValue(e),fn(e)}}function ln(e){if(e.consumers===void 0)return;let t=Qt;Qt=!0;try{for(let t=e.consumers;t!==void 0;t=t.nextConsumer){let e=t.consumer;e.dirty||dn(e)}}finally{Qt=t}}function un(){return Zt?.consumerAllowSignalWrites!==!1}function dn(e){e.dirty=!0,ln(e),e.consumerMarkedDirty?.(e)}function fn(e){e.dirty=!1,e.lastCleanEpoch=$t}function pn(e){return e&&mn(e),nn(e)}function mn(e){if(e.producersTail?.knownValidAtEpoch===$t){let t=e.producers;for(;t!==void 0;)t.knownValidAtEpoch=null,t=t.nextProducer}e.producersTail=void 0,e.recomputing=!0}function hn(e,t){nn(t),e&&gn(e)}function gn(e){e.recomputing=!1;let t=e.producersTail,n=t===void 0?e.producers:t.nextProducer;if(n!==void 0){if(xn(e))do n=bn(n);while(n!==void 0);t===void 0?e.producers=void 0:t.nextProducer=void 0}}function _n(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let e=t.producer,n=t.lastReadVersion;if(n!==e.version||(cn(e),n!==e.version))return!0}return!1}function vn(e){if(xn(e)){let t=e.producers;for(;t!==void 0;)t=bn(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function yn(e,t){let n=e.consumersTail,r=xn(e);if(n===void 0?(t.nextConsumer=void 0,e.consumers=t):(t.nextConsumer=n.nextConsumer,n.nextConsumer=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let t=e.producers;t!==void 0;t=t.nextProducer)yn(t.producer,t)}function bn(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,i=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r===void 0?t.consumersTail=i:r.prevConsumer=i,i!==void 0)i.nextConsumer=r;else if(t.consumers=r,!xn(t)){let e=t.producers;for(;e!==void 0;)e=bn(e)}return n}function xn(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function Sn(e){en?.(e)}function Cn(e,t){return Object.is(e,t)}function wn(e,t){let n=Object.create(On);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(cn(n),on(n),n.value===Dn)throw n.error;return n.value};return r[tn]=n,Sn(n),r}var Tn=Symbol(`UNSET`),En=Symbol(`COMPUTING`),Dn=Symbol(`ERRORED`),On={...an,value:Tn,dirty:!0,error:null,equal:Cn,kind:`computed`,producerMustRecompute(e){return e.value===Tn||e.value===En},producerRecomputeValue(e){if(e.value===En)throw Error(``);let t=e.value;e.value=En;let n=pn(e),r,i=!1;try{r=e.computation(),nn(null),i=t!==Tn&&t!==Dn&&r!==Dn&&e.equal(t,r)}catch(t){r=Dn,e.error=t}finally{hn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function kn(){throw Error()}var An=kn;function jn(e){An(e)}function Mn(e){An=e}var Nn=null;function Pn(e,t){let n=Object.create(Rn);n.value=e,t!==void 0&&(n.equal=t);let r=()=>Fn(n);return r[tn]=n,Sn(n),[r,e=>In(n,e),e=>Ln(n,e)]}function Fn(e){return on(e),e.value}function In(e,t){un()||jn(e),e.equal(e.value,t)||(e.value=t,zn(e))}function Ln(e,t){un()||jn(e),In(e,t(e.value))}var Rn={...an,equal:Cn,value:void 0,kind:`signal`};function zn(e){e.version++,sn(),ln(e),Nn?.(e)}var Bn={...an,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:`effect`};function Vn(e){if(e.dirty=!1,e.version>0&&!_n(e))return;e.version++;let t=pn(e);try{e.cleanup(),e.fn()}finally{hn(e,t)}}var Hn=void 0;function Un(){return Hn}function Wn(e){let t=Hn;return Hn=e,t}var Gn=Symbol(`NotFound`);function Kn(e){return e===Gn||e?.name===`ɵNotFound`}function qn(e,t,n){let r=Object.create(Xn);r.source=e,r.computation=t,n!=null&&(r.equal=n);let i=()=>{if(cn(r),on(r),r.value===Dn)throw r.error;return r.value};return i[tn]=r,Sn(r),i}function Jn(e,t){cn(e),In(e,t),fn(e)}function Yn(e,t){if(cn(e),e.value===Dn)throw e.error;Ln(e,t),fn(e)}var Xn={...an,value:Tn,dirty:!0,error:null,equal:Cn,kind:`linkedSignal`,producerMustRecompute(e){return e.value===Tn||e.value===En},producerRecomputeValue(e){if(e.value===En)throw Error(``);let t=e.value;e.value=En;let n=pn(e),r,i=!1;try{let n=e.source(),a=t!==Tn&&t!==Dn,o=a?{source:e.sourceValue,value:t}:void 0;r=e.computation(n,o),e.sourceValue=n,nn(null),i=a&&r!==Dn&&e.equal(t,r)}catch(t){r=Dn,e.error=t}finally{hn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function Zn(e){let t=nn(null);try{return e()}finally{nn(t)}}var Qn=function(e,t){return Qn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Qn(e,t)};function $n(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);Qn(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function er(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function tr(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o=Object.create((typeof Iterator==`function`?Iterator:Object).prototype);return o.next=s(0),o.throw=s(1),o.return=s(2),typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function rr(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-->0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function ir(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof ar?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function sr(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof nr==`function`?nr(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function cr(e){return typeof e==`function`}function lr(e){var t=e(function(e){Error.call(e),e.stack=Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var ur=lr(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: `+t.map(function(e,t){return t+1+`) `+e.toString()}).join(` - `):``,this.name=`UnsubscriptionError`,this.errors=t}});function fr(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var pr=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=rr(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(lr(c))try{c()}catch(e){i=e instanceof dr?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=rr(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{gr(f)}catch(e){i??=[],e instanceof dr?i=ar(ar([],ir(i)),ir(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 dr(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)gr(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)&&fr(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&fr(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),mr=pr.EMPTY;function hr(e){return e instanceof pr||e&&`closed`in e&&lr(e.remove)&&lr(e.add)&&lr(e.unsubscribe)}function gr(e){lr(e)?e():e.unsubscribe()}var _r={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},vr={setTimeout:function(e,t){var n=[...arguments].slice(2),r=vr.delegate;return r?.setTimeout?r.setTimeout.apply(r,ar([e,t],ir(n))):setTimeout.apply(void 0,ar([e,t],ir(n)))},clearTimeout:function(e){return(vr.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function yr(e){vr.setTimeout(function(){var t=_r.onUnhandledError;if(t)t(e);else throw e})}function br(){}var xr=(function(){return wr(`C`,void 0,void 0)})();function Sr(e){return wr(`E`,void 0,e)}function Cr(e){return wr(`N`,e,void 0)}function wr(e,t,n){return{kind:e,value:t,error:n}}var Tr=null;function Er(e){if(_r.useDeprecatedSynchronousErrorHandling){var t=!Tr;if(t&&(Tr={errorThrown:!1,error:null}),e(),t){var n=Tr,r=n.errorThrown,i=n.error;if(Tr=null,r)throw i}}else e()}function Dr(e){_r.useDeprecatedSynchronousErrorHandling&&Tr&&(Tr.errorThrown=!0,Tr.error=e)}var Or=function(e){er(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,hr(t)&&t.add(n)):n.destination=Ir,n}return t.create=function(e,t,n){return new Mr(e,t,n)},t.prototype.next=function(e){this.isStopped?Fr(Cr(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Fr(Sr(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Fr(xr,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}(pr),kr=Function.prototype.bind;function Ar(e,t){return kr.call(e,t)}var jr=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){Nr(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Nr(e)}else Nr(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Nr(e)}},e}(),Mr=function(e){er(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(lr(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&_r.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Ar(t.next,o),error:t.error&&Ar(t.error,o),complete:t.complete&&Ar(t.complete,o)}):a=t}return i.destination=new jr(a),i}return t}(Or);function Nr(e){_r.useDeprecatedSynchronousErrorHandling?Dr(e):yr(e)}function Pr(e){throw e}function Fr(e,t){var n=_r.onStoppedNotification;n&&vr.setTimeout(function(){return n(e,t)})}var Ir={closed:!0,next:br,error:Pr,complete:br},Lr=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Rr(e){return e}function zr(e){return e.length===0?Rr:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Br=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=Ur(e)?e:new Mr(e,t,n);return Er(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=Vr(t),new t(function(t,r){var i=new Mr({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[Lr]=function(){return this},e.prototype.pipe=function(){return zr([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=Vr(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 Vr(e){return e??_r.Promise??Promise}function Hr(e){return e&&lr(e.next)&&lr(e.error)&&lr(e.complete)}function Ur(e){return e&&e instanceof Or||Hr(e)&&hr(e)}function Wr(e){return lr(e?.lift)}function Gr(e){return function(t){if(Wr(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 Kr(e,t,n,r,i){return new qr(e,t,n,r,i)}var qr=function(e){er(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}(Or),Jr=ur(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Yr=function(e){er(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 Xr(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Jr},t.prototype.next=function(e){var t=this;Er(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=rr(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;Er(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;Er(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?mr:(this.currentObservers=null,a.push(e),new pr(function(){t.currentObservers=null,fr(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 Br;return e.source=this,e},t.create=function(e,t){return new Xr(e,t)},t}(Br),Xr=function(e){er(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)??mr},t}(Yr),Zr=function(e){er(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}(Yr);function Qr(e){return e[e.length-1]}function $r(e){return lr(Qr(e))?e.pop():void 0}var ei=(function(e){return e&&typeof e.length==`number`&&typeof e!=`function`});function ti(e){return lr(e?.then)}function ni(e){return lr(e[Lr])}function ri(e){return Symbol.asyncIterator&&lr(e?.[Symbol.asyncIterator])}function ii(e){return TypeError(`You provided `+(typeof e==`object`&&e?`an invalid object`:`'`+e+`'`)+` where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function ai(){return typeof Symbol!=`function`||!Symbol.iterator?`@@iterator`:Symbol.iterator}var oi=ai();function si(e){return lr(e?.[oi])}function ci(e){return sr(this,arguments,function(){var t,n,r,i;return nr(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,or(t.read())];case 3:return n=a.sent(),r=n.value,i=n.done,i?[4,or(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,or(r)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function li(e){return lr(e?.getReader)}function ui(e){if(e instanceof Br)return e;if(e!=null){if(ni(e))return lee(e);if(ei(e))return uee(e);if(ti(e))return dee(e);if(ri(e))return di(e);if(si(e))return fee(e);if(li(e))return pee(e)}throw ii(e)}function lee(e){return new Br(function(t){var n=e[Lr]();if(lr(n.subscribe))return n.subscribe(t);throw TypeError(`Provided object does not correctly implement Symbol.observable`)})}function uee(e){return new Br(function(t){for(var n=0;n=0?n.slice(0,r):n}function wi(e,t){return e?t?`${e} ${t}`:e:t||``}var Ti=xi({__forward_ref__:xi});function Ei(e){return e.__forward_ref__=Ei,e}function Di(e){return Oi(e)?e():e}function Oi(e){return typeof e==`function`&&Object.hasOwn(e,Ti)&&e.__forward_ref__===Ei}function ki(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Ai(e){return ji(e,Pi)}function ji(e,t){return Object.hasOwn(e,t)&&e[t]||null}function Mi(e){return(e?.[Pi]??null)||null}function Ni(e){return e&&Object.hasOwn(e,Fi)?e[Fi]:null}var Pi=xi({ɵprov:xi}),Fi=xi({ɵinj:xi}),Ii=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=ki({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Li(e){return e&&!!e.ɵproviders}var Ri=xi({ɵcmp:xi}),zi=xi({ɵdir:xi}),Bi=xi({ɵpipe:xi}),Vi=xi({ɵfac:xi}),Hi=xi({__NG_ELEMENT_ID__:xi}),Ui=xi({__NG_ENV_ID__:xi});function Wi(e){return qi(e,`@Component`),e[Ri]||null}function Gi(e){return qi(e,`@Directive`),e[zi]||null}function Ki(e){return qi(e,`@Pipe`),e[Bi]||null}function qi(e,t){if(e==null)throw new vi(-919,!1)}function Ji(e){return typeof e==`string`?e:e==null?``:String(e)}var Yi=xi({ngErrorCode:xi}),Xi=xi({ngErrorMessage:xi}),Zi=xi({ngTokenPath:xi});function Qi(e,t){return ea(``,-200,t)}function $i(e,t){throw new vi(-201,!1)}function ea(e,t,n){let r=new vi(t,e);return r[Yi]=t,r[Xi]=e,n&&(r[Zi]=n),r}function ta(e){return e[Yi]}var na;function ra(){return na}function ia(e){let t=na;return na=e,t}function aa(e,t,n){let r=Ai(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;$i(e,``)}var oa=globalThis,sa={},ca=`__NG_DI_FLAG__`,la=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=fa(t)||0;try{return this.injector.get(e,n&8?null:sa,n)}catch(e){if(qn(e))return e;throw e}}};function ua(e,t=0){let n=Wn();if(n===void 0)throw new vi(-203,!1);if(n===null)return aa(e,void 0,t);{let r=pa(t),i=n.retrieve(e,r);if(qn(i)){if(r.optional)return null;throw i}return i}}function da(e,t=0){return(ra()||ua)(Di(e),t)}function C(e,t){return da(e,fa(t))}function fa(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function pa(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function ma(e){let t=[];for(let n=0;nArray.isArray(e)?ya(e,t):t(e))}function ba(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function xa(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function Sa(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 wa(e,t,n){let r=Ea(e,t);return r>=0?e[r|1]=n:(r=~r,Ca(e,r,t,n)),r}function Ta(e,t){let n=Ea(e,t);if(n>=0)return e[n|1]}function Ea(e,t){return Da(e,t,1)}function Da(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 ya(t,e=>{let t=e;La(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&Ia(i,a),n}function Ia(e,t){for(let n=0;n{t(e,r)})}}function La(e,t,n,r){if(e=Di(e),!e)return!1;let i=null,a=Ni(e),o=!a&&Wi(e);if(!a&&!o){let t=e.ngModule;if(a=Ni(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)La(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ya(a.imports,i=>{La(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&Ia(e,t)}if(!s){let e=ga(i)||(()=>new i);t({provide:i,useFactory:e,deps:ka},i),t({provide:Ma,useValue:i,multi:!0},i),t({provide:Aa,useValue:()=>da(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;Ra(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function Ra(e,t){for(let n of e)Li(n)&&(n=n.ɵproviders),Array.isArray(n)?Ra(n,t):t(n)}var za=xi({provide:String,useValue:xi});function Ba(e){return typeof e==`object`&&!!e&&za in e}function Va(e){return!!(e&&e.useExisting)}function Ha(e){return!!(e&&e.useFactory)}function Ua(e){return typeof e==`function`}function Wa(e){return!!e.useClass}var Ga=new Ii(``),Ka={},qa={},Ja=void 0;function Ya(){return Ja===void 0&&(Ja=new Na),Ja}var Xa=class{},Za=class extends Xa{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,so(e,e=>this.processProvider(e)),this.records.set(ja,ro(void 0,this)),r.has(`environment`)&&this.records.set(Xa,ro(void 0,this));let i=this.records.get(Ga);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(Ma,ka,{self:!0}))}retrieve(e,t){let n=fa(t)||0;try{return this.get(e,sa,n)}catch(e){if(qn(e))return e;throw e}}destroy(){no(this),this._destroyed=!0;let e=rn(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(),rn(e)}}onDestroy(e){return no(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){no(this);let t=Gn(this),n=ia(void 0);try{return e()}finally{Gn(t),ia(n)}}get(e,t=sa,n){if(no(this),Object.hasOwn(e,Ui))return e[Ui](this);let r=fa(n),i=Gn(this),a=ia(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=oo(e)&&Ai(e);t=n&&this.injectableDefInScope(n)?ro(Qa(e),Ka):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?Ya():this.parent;return t=r&8&&t===sa?null:t,n.get(e,t)}catch(e){let t=ta(e);throw t===-200||t===-201?new vi(t,null):e}finally{ia(a),Gn(i)}}resolveInjectorInitializers(){let e=rn(null),t=Gn(this),n=ia(void 0);try{let e=this.get(Aa,ka,{self:!0});for(let t of e)t()}finally{Gn(t),ia(n),rn(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=Di(e);let t=Ua(e)?e:Di(e&&e.provide),n=eo(e);if(!Ua(e)&&e.multi===!0){let n=this.records.get(t);n||(n=ro(void 0,Ka,!0),n.factory=()=>ma(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=rn(null);try{if(t.value===qa)throw Qi(``);return t.value===Ka&&(t.value=qa,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&ao(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{rn(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 Qa(e){let t=Ai(e),n=t===null?ga(e):t.factory;if(n!==null)return n;if(e instanceof Ii)throw new vi(-204,!1);if(e instanceof Function)return $a(e);throw new vi(-204,!1)}function $a(e){if(e.length>0)throw new vi(-204,!1);let t=Mi(e);return t===null?()=>new e:()=>t.factory(e)}function eo(e){return Ba(e)?ro(void 0,e.useValue):ro(to(e),Ka)}function to(e,t,n){let r;if(Ua(e)){let t=Di(e);return ga(t)||Qa(t)}if(Ba(e))r=()=>Di(e.useValue);else if(Ha(e))r=()=>e.useFactory(...ma(e.deps||[]));else if(Va(e))r=(t,n)=>da(Di(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=Di(e&&(e.useClass||e.provide));if(io(e))r=()=>new t(...ma(e.deps));else return ga(t)||Qa(t)}return r}function no(e){if(e.destroyed)throw new vi(-205,!1)}function ro(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function io(e){return!!e.deps}function ao(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function oo(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function so(e,t){for(let n of e)Array.isArray(n)?so(n,t):n&&Li(n)?so(n.ɵproviders,t):t(n)}function co(e,t){let n;e instanceof Za?(no(e),n=e):n=new la(e);let r=Gn(n),i=ia(void 0);try{return t()}finally{Gn(r),ia(i)}}function lo(){return ra()!==void 0||Wn()!=null}var uo=1;function fo(e){return Array.isArray(e)&&typeof e[uo]==`object`}function po(e){return Array.isArray(e)&&e[uo]===!0}function mo(e){return!!(e.flags&4)}function ho(e){return e.componentOffset>-1}function go(e){return(e.flags&1)==1}function _o(e){return!!e.template}function vo(e){return!!(e[2]&512)}function yo(e){return(e[2]&256)==256}var bo=(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})(bo||{}),xo=`math`;function So(e){for(;Array.isArray(e);)e=e[0];return e}function Co(e,t){return So(t[e])}function wo(e,t){return So(t[e.index])}function To(e,t){return e.data[t]}function Eo(e,t){return e[t]}function Do(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function Oo(e,t){let n=t[e];return fo(n)?n:n[0]}function ko(e){return(e[2]&128)==128}function Nee(e){return po(e[3])}function Ao(e,t){return t==null?null:e[t]}function jo(e){e[17]=0}function Mo(e){e[2]&1024||(e[2]|=1024,ko(e)&&Fo(e))}function Pee(e,t){for(;e>0;)t=t[14],e--;return t}function No(e){return!!(e[2]&9216||e[24]?.dirty)}function Po(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),No(e)&&Fo(e)}function Fo(e){e[10].changeDetectionScheduler?.notify(0);let t=Lo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!ko(t)));)t=Lo(t)}function Io(e,t){if(yo(e))throw new vi(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function Fee(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function Lo(e){let t=e[3];return po(t)?t[3]:t}function Ro(e){return e[7]??=[]}function zo(e){return e.cleanup??=[]}function Iee(e,t,n,r){let i=Ro(t);i.push(n),e.firstCreatePass&&zo(e).push(r,i.length-1)}var Bo={lFrame:hs(null),bindingsEnabled:!0,skipHydrationRootTNode:null},Vo=!1;function Lee(){return Bo.lFrame.elementDepthCount}function Ree(){Bo.lFrame.elementDepthCount++}function Ho(){Bo.lFrame.elementDepthCount--}function Uo(){return Bo.bindingsEnabled}function Wo(){return Bo.skipHydrationRootTNode!==null}function Go(e){return Bo.skipHydrationRootTNode===e}function Ko(){Bo.skipHydrationRootTNode=null}function qo(){return Bo.lFrame.lView}function Jo(){return Bo.lFrame.tView}function w(e){return Bo.lFrame.contextLView=e,e[8]}function T(e){return Bo.lFrame.contextLView=null,e}function Yo(){let e=Xo();for(;e!==null&&e.type===64;)e=e.parent;return e}function Xo(){return Bo.lFrame.currentTNode}function zee(){let e=Bo.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Zo(e,t){let n=Bo.lFrame;n.currentTNode=e,n.isParent=t}function Qo(){return Bo.lFrame.isParent}function $o(){Bo.lFrame.isParent=!1}function es(){return Bo.lFrame.contextLView}function ts(){return Vo}function ns(e){let t=Vo;return Vo=e,t}function rs(){let e=Bo.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function is(){return Bo.lFrame.bindingIndex}function Bee(e){return Bo.lFrame.bindingIndex=e}function as(){return Bo.lFrame.bindingIndex++}function os(e){let t=Bo.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function Vee(){return Bo.lFrame.inI18n}function Hee(e,t){let n=Bo.lFrame;n.bindingIndex=n.bindingRootIndex=e,ss(t)}function Uee(){return Bo.lFrame.currentDirectiveIndex}function ss(e){Bo.lFrame.currentDirectiveIndex=e}function cs(e){let t=Bo.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function ls(){return Bo.lFrame.currentQueryIndex}function us(e){Bo.lFrame.currentQueryIndex=e}function ds(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function fs(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=ds(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=Bo.lFrame=ms();return r.currentTNode=t,r.lView=e,!0}function ps(e){let t=ms(),n=e[1];Bo.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function ms(){let e=Bo.lFrame,t=e===null?null:e.child;return t===null?hs(e):t}function hs(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 gs(){let e=Bo.lFrame;return Bo.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var _s=gs;function vs(){let e=gs();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 ys(e){return(Bo.lFrame.contextLView=Pee(e,Bo.lFrame.contextLView))[8]}function bs(){return Bo.lFrame.selectedIndex}function xs(e){Bo.lFrame.selectedIndex=e}function Ss(){let e=Bo.lFrame;return To(e.tView,e.selectedIndex)}function E(){Bo.lFrame.currentNamespace=`svg`}function Cs(){ws()}function ws(){Bo.lFrame.currentNamespace=null}function Ts(){return Bo.lFrame.currentNamespace}var Es=!0;function Ds(){return Es}function Os(e){Es=e}function ks(e,t=null,n=null,r){let i=As(e,t,n,r);return i.resolveInjectorInitializers(),i}function As(e,t=null,n=null,r,i=new Set){return new Za([n||ka,Pa(e)],t||Ya(),null,i)}var js=class e{static THROW_IF_NOT_FOUND=sa;static NULL=new Na;static create(e,t){if(Array.isArray(e))return ks({name:``},t,e,``);{let t=e.name??``;return ks({name:t},e.parent,e.providers,t)}}static ɵprov=ki({token:e,providedIn:`any`,factory:()=>da(ja)});static __NG_ELEMENT_ID__=-1},Ms=new Ii(``),Ns=class{static __NG_ELEMENT_ID__=Fs;static __NG_ENV_ID__=e=>e},Ps=class extends Ns{_lView;constructor(e){super(),this._lView=e}get destroyed(){return yo(this._lView)}onDestroy(e){let t=this._lView;return Io(t,e),()=>Fee(t,e)}};function Fs(){return new Ps(qo())}var Is=new Ii(``),Ls=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new Zr(!1);debugTaskTracker=C(Is,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Br(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=ki({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Rs=class extends Yr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,lo()&&(this.destroyRef=C(Ns,{optional:!0})??void 0,this.pendingTasks=C(Ls,{optional:!0})??void 0)}emit(e){let t=rn(null);try{super.next(e)}finally{rn(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 pr&&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 zs(...e){}function Bs(e){let t,n;function r(){e=zs;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 Vs(e){return queueMicrotask(()=>e()),()=>{e=zs}}var Hs=`isAngularZone`,Us=`isAngularZone_ID`,Ws=0,Gs=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Rs(!1);onMicrotaskEmpty=new Rs(!1);onStable=new Rs(!1);onError=new Rs(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new vi(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,Ys(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Hs)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new vi(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new vi(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,Ks,zs,zs);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)}},Ks={};function qs(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 Js(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Bs(()=>{e.callbackScheduled=!1,Xs(e),e.isCheckStableRunning=!0,qs(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Xs(e)}function Ys(e){let t=()=>{Js(e)},n=Ws++;e._inner=e._inner.fork({name:`angular`,properties:{[Hs]:!0,[Us]:n,[Us+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(ec(s))return n.invokeTask(i,a,o,s);try{return Zs(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Qs(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Zs(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!tc(s)&&t(),Qs(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Xs(e),qs(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 Xs(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Zs(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Qs(e){e._nesting--,qs(e)}var $s=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Rs;onMicrotaskEmpty=new Rs;onStable=new Rs;onError=new Rs;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 ec(e){return nc(e,`__ignore_ng_zone__`)}function tc(e){return nc(e,`__scheduler_tick__`)}function nc(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var rc=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},ic=new Ii(``,{factory:()=>{let e=C(Gs),t=C(Xa),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(rc),n.handleError(r))})}}}),ac={provide:Aa,useValue:()=>{C(rc,{optional:!0})},multi:!0};function D(e,t){let[n,r,i]=Fn(e,t?.equal),a=n;return a[nn],a.set=r,a.update=i,a.asReadonly=oc.bind(a),a}function oc(){let e=this[nn];if(e.readonlyFn===void 0){let t=()=>this();t[nn]=e,e.readonlyFn=t}return e.readonlyFn}var sc=new Ii(``,{factory:()=>cc}),cc=`ng`,lc=new Ii(``),uc=new Ii(``,{providedIn:`platform`,factory:()=>`unknown`}),dc=new Ii(``,{factory:()=>C(Ms).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),fc=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=pc}return e})();function pc(){return new fc(qo(),Yo())}var mc=class{},hc=new Ii(``,{factory:()=>!0}),gc=new Ii(``),_c=(()=>{class e{static ɵprov=ki({token:e,providedIn:`root`,factory:()=>new vc})}return e})(),vc=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}},yc=class{[nn];constructor(e){this[nn]=e}destroy(){this[nn].destroy()}};function bc(e,t){let n=t?.injector??C(js),r=t?.manualCleanup===!0?null:n.get(Ns),i,a=n.get(fc,null,{optional:!0}),o=n.get(mc);return a===null?i=Tc(e,n.get(_c),o):(i=wc(a.view,o,e),r instanceof Ps&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new yc(i)}var xc={...Vn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=ns(!1);try{Hn(this)}finally{ns(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=rn(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],rn(e)}}},Sc={...xc,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(yn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},Cc={...xc,consumerMarkedDirty(){this.view[2]|=8192,Fo(this.view),this.notifier.notify(13)},destroy(){if(yn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function wc(e,t,n){let r=Object.create(Cc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=Ec(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function Tc(e,t,n){let r=Object.create(Sc);return r.fn=Ec(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 Ec(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function Dc(e){return typeof e==`function`&&e[nn]!==void 0}function Oc(e){return Dc(e)&&typeof e.set==`function`}var kc=Symbol(`InputSignalNode#UNSET`),Ac={...zn,transformFn:void 0,applyValueToInputSignal(e,t){Ln(e,t)}};function jc(e){return{toString:e}.toString()}var Mc=(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})(Mc||{}),Nc=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function Pc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var Fc=null,Ic=(()=>{Fc=Rc;let e=()=>Rc;return e.ngInherit=!0,e})();function Lc(){return Fc}function Rc(e){return e.type.prototype.ngOnChanges&&(e.setInput=Bc),zc}function zc(){let e=Hc(this),t=e?.current;if(t){let n=e.previous;if(n===Oa)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function Bc(e,t,n,r,i){let a=this.declaredInputs[r],o=Hc(e)||Uc(e,{previous:Oa,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new Nc(l&&l.currentValue,n,c===Oa),Pc(e,t,i,n)}var Vc=`__ngSimpleChanges__`;function Hc(e){return Object.hasOwn(e,Vc)&&e[Vc]||null}function Uc(e,t){return e[Vc]=t}var Wc=[],Gc=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,Qc(o,a)):Qc(o,a)}var el=-1,tl=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 nl(e){return!!(e.flags&8)}function rl(e){return!!(e.flags&16)}function il(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function fl(e,t){let n=dl(e),r=t;for(;n>0;)r=r[14],n--;return r}var pl=!0;function ml(e){let t=pl;return pl=e,t}var hl=255,gl=5,_l=0,vl={};function yl(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,Hi)&&(r=n[Hi]),r??=n[Hi]=_l++;let i=r&hl,a=1<>gl)]|=a}function bl(e,t){let n=Sl(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,xl(r.data,e),xl(t,null),xl(r.blueprint,null));let i=Cl(e,t),a=e.injectorIndex;if(ll(i)){let e=ul(i),n=fl(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 xl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function Sl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function Cl(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=Bl(i),r===null)return el;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return el}function wl(e,t,n){yl(e,t,n)}function Tl(e,t,n){if(n&8||e!==void 0)return e;$i(t,`NodeInjector`)}function El(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=ia(void 0);try{return i?i.get(t,r,n&8):aa(t,r,n&8)}finally{ia(a)}}return Tl(r,t,n)}function Dl(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=zl(e,t,n,r,vl);if(i!==vl)return i}let i=Ol(e,t,n,r,vl);if(i!==vl)return i}return El(t,n,r,i)}function Ol(e,t,n,r,i){let a=Ml(n);if(typeof a==`function`){if(!fs(t,e,r))return r&1?Tl(i,n,r):El(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))$i(n);else return e}finally{_s()}}else if(typeof a==`number`){let i=null,o=Sl(e,t),s=el,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?Cl(e,t):t[o+8],s===el||!Pl(r,!1)?o=-1:(i=t[1],o=ul(s),t=fl(s,t)));o!==-1;){let e=t[1];if(Nl(a,o,e.data)){let e=kl(o,t,n,i,r,c);if(e!==vl)return e}s=t[o+8],s!==el&&Pl(r,t[1].data[o+8]===c)&&Nl(a,o,t)?(i=e,o=ul(s),t=fl(s,t)):o=-1}}return i}function kl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=Al(s,o,n,r==null?ho(s)&&pl:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?vl:jl(t,o,c,s,i)}function Al(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&&_o(e)&&e.type===n)return c}return null}function jl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof tl){let s=a;if(s.resolving)throw Qi(``);let c=ml(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?ia(s.injectImpl):null;fs(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Kc(n,o[n],t)}finally{l!==null&&ia(l),ml(c),s.resolving=!1,_s()}}return a}function Ml(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,Hi)?e[Hi]:void 0;return typeof t==`number`?t>=0?t&hl:Il:t}function Nl(e,t,n){let r=1<>gl)]&r)}function Pl(e,t){return!(e&2)&&!(e&1&&t)}var Fl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return Dl(this._tNode,this._lView,e,fa(n),t)}};function Il(){return new Fl(Yo(),qo())}function Ll(e){return jc(()=>{let t=e.prototype.constructor,n=t[Vi]||Rl(t),r=Object.prototype,i=Object.getPrototypeOf(e.prototype).constructor;for(;i&&i!==r;){let e=i[Vi]||Rl(i);if(e&&e!==n)return e;i=Object.getPrototypeOf(i)}return e=>new e})}function Rl(e){return Oi(e)?()=>{let t=Rl(Di(e));return t&&t()}:ga(e)}function zl(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!vo(o);){let e=Ol(a,o,n,r|2,vl);if(e!==vl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,vl,r);if(t!==vl)return t}t=Bl(o),o=o[14]}a=t}return i}function Bl(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function Vl(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function Hl(){return Ul(Yo(),qo())}function Ul(e,t){return new Wl(wo(e,t))}var Wl=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=Hl}return e})();function Gl(e){return e instanceof Wl?e.nativeElement:e}function Kl(){return this._results[Symbol.iterator]()}var ql=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 Yr}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=va(e);(this._changesDetected=!_a(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]=Kl};function Jl(e){return(e.flags&128)==128}var Yl=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Yl||{}),Xl=new Map,Zl=0;function Ql(){return Zl++}function $l(e){Xl.set(e[19],e)}function eu(e){Xl.delete(e[19])}var tu=`__ngContext__`;function nu(e,t){fo(t)?(e[tu]=t[19],$l(t)):e[tu]=t}function ru(e){return au(e[12])}function iu(e){return au(e[4])}function au(e){for(;e!==null&&!po(e);)e=e[4];return e}var ou=void 0;function su(e){ou=e}function cu(){if(ou!==void 0)return ou;if(typeof document<`u`)return document;throw new vi(210,!1)}var lu=!1,uu=new Ii(``,{factory:()=>lu}),du=new WeakMap;function fu(e,t){if(typeof e!=`object`||!e)return;let n=du.get(e);n||(n=new WeakSet,du.set(e,n)),n.add(t)}function pu(e){return(e.flags&32)==32}var mu=()=>null;function hu(e,t,n=!1){return mu(e,t,n)}function gu(e,t){let n=e.contentQueries;if(n!==null){let r=rn(null);try{for(let r=0;r|^->||--!>|)/g,Jee=`​$1​`;function Yee(e){return e.replace(Kee,e=>e.replace(qee,Jee))}function Xee(e,t){return e.createText(t)}function Zee(e,t,n){e.setValue(t,n)}function Qee(e,t){return e.createComment(Yee(t))}function wu(e,t,n){return e.createElement(t,n)}function Tu(e,t,n,r,i){e.insertBefore(t,n,r,i)}function Eu(e,t,n){e.appendChild(t,n)}function Du(e,t,n,r,i){r===null?Eu(e,t,n):Tu(e,t,n,r,i)}function Ou(e,t,n,r){e.removeChild(null,t,n,r)}function $ee(e,t,n){e.setAttribute(t,`style`,n)}function ete(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function ku(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&il(e,t,r),i!==null&&ete(e,t,i),a!==null&&$ee(e,t,a)}function Au(e){let t=tte();return t?t.sanitize(bo.URL,e)||``:Su(e,`URL`)?xu(e):Gee(Ji(e))}function tte(){let e=qo();return e&&e[10].sanitizer}function ju(e){return e.ownerDocument.defaultView}function Mu(e){return e.ownerDocument}function nte(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 Nu=`ng-template`;function rte(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(Fu(r))return!1;o=!0}}}}}return Fu(r)||o}function Fu(e){return!(e&1)}function ote(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!==``&&!Fu(o)&&(t+=Lu(a,i),i=``),r=o,a||=!Fu(r);n++}return i!==``&&(t+=Lu(a,i)),t}function fte(e){return e.map(dte).join(`,`)}function pte(e){let t=[],n=[],r=1,i=2;for(;r!1});function Vu(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function Hu(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function gte(e){let t=Hu(e,`transition-property`),n=Hu(e,`transition-duration`),r=Hu(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 _te(e){let t=Hu(e,`animation-name`),n=Hu(e,`animation-delay`),r=Hu(e,`animation-duration`),i=Hu(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 Uu(e,t){return e!==void 0&&e.duration>t.duration}function Wu(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function Gu(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 vte(e,t){let n=getComputedStyle(e),r=_te(n),i=gte(n),a=r.duration>i.duration?r:i;Uu(t.get(e),a)||Wu(a)&&t.set(e,a)}function yte(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?vte(e,t):bte(e,t,r)}function bte(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=Gu(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}Uu(t.get(e),r)||Wu(r)&&t.set(e,r)}var Ku=new Set,xte=!1,Ste=1,qu=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function Cte(e){return e[9].get(hte,xte)}function wte(e,t,n){let r=Yu.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else Yu.set(e,{classList:t,cleanupFns:n})}function Ju(e){let t=Yu.get(e);if(t){for(let e of t.cleanupFns)e();Yu.delete(e)}Xu.delete(e)}var Yu=new WeakMap,Xu=new WeakMap,Zu=new WeakMap;function Qu(e){return e?e[14]??e:null}var $u=new WeakSet;function Tte(e,t,n){let r=Zu.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=Qu(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),$u.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 Ete(e,t,n){let r=Qu(n),i=Zu.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):Zu.set(e,[{el:t,declarationView:r}])}function ed(e){let t=e[26]??={};return t.enter??=new Map}function Dte(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 td(e){return e.composedPath?e.composedPath()[0]:e.target}function nd(e,t){let n=Xu.get(t);if(n===void 0)return!0;if(t!==td(e))return!1;let r=e.animation;if(r){let e=Gu(r);if(e!==void 0&&e+Ste{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=ki({token:e,providedIn:`root`,factory:()=>new e})}return e})(),cd=[0,1,2,3],ld=(()=>{class e{ngZone=C(Gs);scheduler=C(mc);errorHandler=C(rc,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){C(id,{optional:!0})}execute(){let e=this.sequences.size>0;e&&Gc(Mc.AfterRenderHooksStart),this.executing=!0;for(let e of cd)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&&Gc(Mc.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),Fo(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(rd.AFTER_NEXT_RENDER,e):e()}static ɵprov=ki({token:e,providedIn:`root`,factory:()=>new e})}return e})(),ud=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 dd(e,t){let n=t?.injector??C(js);return od(`NgAfterNextRender`),Ate(e,n,t,!0)}function kte(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Ate(e,t,n,r){let i=t.get(sd);i.impl??=t.get(ld);let a=t.get(id,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(Ns),s=t.get(fc,null,{optional:!0}),c=new ud(i.impl,kte(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var fd=new Ii(``,{factory:()=>{let e=C(Xa),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function pd(e,t,n){let r=e.get(fd);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 jte(e,t){let n=e.get(fd);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Mte(e,t){let n=e.get(fd);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Nte(e){let t=e.get(fd);t.isScheduled||=(dd(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Pte(e){let t=e.get(fd);t.scheduler=Nte,t.scheduler(e)}function md(e,t){for(let[n,r]of t)pd(e,r.animateFns)}function hd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&md(r,i)}function gd(e,t,n,r){try{n.get(ja)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&jte(n,i.enter.get(t.index).animateFns);let a=_d(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];yd(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&Ku.add(e[19]),pd(n,()=>vd(e,t,i||void 0,a,r),i||void 0)}function _d(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 vd(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&&yd(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),xd(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&Ku.delete(e[19]),i(!0)})}else e&&Ku.delete(e[19]),i(!1)}function yd(e,t,n){if(t.type&12){let r=e[t.index];if(po(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,Ku.delete(e[19])),n(!0)})}function Sd(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;po(i)?c=i:fo(i)&&(l=!0,i=i[0]);let u=So(i);e===0&&r!==null?(hd(s,r,a,n),o==null?Eu(t,r,u):Tu(t,r,u,o||null,!0)):e===1&&r!==null?(hd(s,r,a,n),Tu(t,r,u,o||null,!0),Tte(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Ete(a,u,s),$u.delete(u),gd(s,a,n,e=>{if($u.has(u)){$u.delete(u);return}Ou(t,u,l,e)})):e===3&&($u.delete(u),gd(s,a,n,()=>{t.destroyNode(u)})),c!=null&&Kd(t,e,n,c,a,r,o)}}function Cd(e,t){Td(e,t),t[0]=null,t[5]=null}function wd(e,t,n,r,i,a){r[0]=i,r[5]=t,Hd(e,r,n,1,i,a)}function Td(e,t){t[10].changeDetectionScheduler?.notify(9),Hd(e,t,t[11],2,null,null)}function Ed(e){let t=e[12];if(!t)return kd(e[1],e);for(;t;){let n=null;if(fo(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)fo(t)&&kd(t[1],t),t=t[3];t===null&&(t=e),fo(t)&&kd(t[1],t),n=t&&t[4]}t=n}}function Dd(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function Od(e,t){if(yo(t))return;let n=t[11];n.destroyNode&&Hd(e,t,n,3,null,null),Ed(t)}function kd(e,t){if(yo(t))return;let n=rn(null);try{t[2]&=-129,t[2]|=256,t[24]&&yn(t[24]),jd(e,t),Ad(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&po(t[3])){n!==t[3]&&Dd(n,t);let r=t[18];r!==null&&r.detachView(e)}eu(t)}finally{rn(n)}}function Ad(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&&nf(e,t,27,!1),Gc(o?Mc.TemplateUpdateStart:Mc.TemplateCreateStart,i,n),n(r,i)}finally{xs(a),Gc(o?Mc.TemplateUpdateEnd:Mc.TemplateCreateEnd,i,n)}}function sf(e,t,n){mf(e,t,n),(n.flags&64)==64&&hf(e,t,n)}function cf(e,t,n=wo){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a=s&&i<=c){let o=t.data[i],s=r[e+1];af(o,n[i],s,a),l=!0}else if(i>c)break}}return o!==null&&Object.hasOwn(r.inputs,i)&&(af(r,n[o],i,a),l=!0),l}function Ef(e,t){let n=Oo(t,e),r=n[1];Df(r,n);let i=n[0];i!==null&&n[6]===null&&(n[6]=hu(i,n[9])),Gc(Mc.ComponentStart);try{Of(r,n,n[8])}finally{Gc(Mc.ComponentEnd,n[8])}}function Df(e,t){for(let n=t.length;n{Fo(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function Bf(e){let t=e[24]??Object.create(Vf);return t.lView=e,t}var Vf={...on,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=Lo(e.lView);for(;t&&!Hf(t[1]);)t=Lo(t);t&&Mo(t)},consumerOnSignalRead(){this.lView[24]=this}};function Hf(e){return e.type!==2}function Uf(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 Wf=100;function Gf(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{Kf(e,t)}finally{n.end?.()}}function Kf(e,t){let n=ts();try{ns(!0),Qf(e,t);let n=0;for(;No(e);){if(n===Wf)throw new vi(103,!1);n++,Qf(e,1)}}finally{ns(n)}}function qf(e,t,n,r){if(yo(t))return;let i=t[2];ps(t);let a=!0,o=null,s=null;Hf(e)?(s=If(t),o=mn(s)):an()===null?(a=!1,s=Bf(t),o=mn(s)):t[24]&&=(yn(t[24]),null);try{jo(t),Bee(e.bindingStartIndex),n!==null&&of(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Jc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&Yc(t,n,0,null),Xc(t,0)}if(Yf(t),Uf(t),Jf(t,0),e.contentQueries!==null&&gu(e,t),a){let n=e.contentCheckHooks;n!==null&&Jc(t,n)}else{let n=e.contentHooks;n!==null&&Yc(t,n,1),Xc(t,1)}ep(e,t);let o=e.components;o!==null&&$f(t,o,0);let s=e.viewQuery;if(s!==null&&_u(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Jc(t,n)}else{let n=e.viewHooks;n!==null&&Yc(t,n,2),Xc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}Pf(t),t[2]&=-73}catch(e){throw Fo(t),e}finally{s!==null&&(gn(s,o),a&&Rf(s)),vs()}}function Jf(e,t){for(let n=ru(e);n!==null;n=iu(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=xa(e,10+t);Cd(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 sp(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(op(e,n),xa(t,n))}this._attachedToViewContainer=!1}Od(this._lView[1],this._lView)}onDestroy(e){Io(this._lView,e)}markForCheck(){tp(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){Po(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,Gf(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new vi(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=vo(this._lView),t=this._lView[16];t!==null&&!e&&Dd(t,this._lView),Td(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new vi(902,!1);this._appRef=e;let t=vo(this._lView),n=this._lView[16];n!==null&&!t&&cp(n,this._lView),Po(this._lView)}},up=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=dp;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 lp(Af(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function dp(){return fp(Yo(),qo())}function fp(e,t){return e.type&4?new up(t,e,Ul(e,t)):null}function pp(e,t,n,r,i){let a=e.data[t];if(a===null)a=mp(e,t,n,r,i),Vee()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=zee();a.injectorIndex=e===null?-1:e.injectorIndex}return Zo(a,!0),a}function mp(e,t,n,r,i){let a=Xo(),o=Qo(),s=o?a:a&&a.parent,c=e.data[t]=gp(e,s,n,t,r,i);return hp(e,c,a,o),c}function hp(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 gp(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return Wo()&&(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:Ts(),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 _p(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?vp(e,n):r.push(e);e[6]=r}function vp(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,bp=()=>null;function xp(e,t){return yp(e,t)}function Sp(e,t,n){return bp(e,t,n)}var Cp=class{},wp=class{},Tp=class{destroyNode=null;static __NG_ELEMENT_ID__=()=>Ep()};function Ep(){let e=qo(),t=Oo(Yo().index,e);return(fo(t)?t:e)[11]}var Dp=(()=>{class e{static ɵprov=ki({token:e,providedIn:`root`,factory:()=>null})}return e})();function Op(e){return e.debugInfo?.className||e.type.name||null}var kp={},Ap=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,kp,n);return r!==kp||t===kp?r:this.parentInjector.get(e,t,n)}};function jp(e,t,n){return e[t]=n}function Mp(e,t){return e[t]}function Np(e,t,n){if(n===Ru)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function Pp(e,t,n,r){let i=Np(e,t,n);return Np(e,t+1,r)||i}function Fp(e,t,n,r,i){let a=Pp(e,t,n,r);return Np(e,t+2,i)||a}function Ip(e,t,n,r,i,a){let o=Pp(e,t,n,r);return Pp(e,t+2,i,a)||o}function Lp(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&fu(i,a),tp(ho(e)?Oo(e.index,t):t,5);let o=t[8],s=Rp(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=Rp(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function Rp(e,t,n,r){let i=rn(null);try{return Gc(Mc.OutputStart,t,n),n(r)!==!1}catch(t){return Cf(e,t),!1}finally{Gc(Mc.OutputEnd,t,n),rn(i)}}function zp(e,t,n,r,i,a,o,s){let c=go(e),l=!1,u=null;if(!r&&c&&(u=Vp(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=wo(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);Bp(a)||Hp(r?t=>r(So(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function Bp(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function Vp(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 Hp(e,t,n,r,i,a,o){let s=t.firstCreatePass?zo(t):null,c=Ro(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function Up(e,t,n,r,i){let a=null,o=null,s=null,c=!1,l=e.directiveToIndex.get(n.type);if(typeof l==`number`?a=l:[a,o,s]=l,o!==null&&s!==null&&e.hostDirectiveOutputs&&Object.hasOwn(e.hostDirectiveOutputs,r)){let n=e.hostDirectiveOutputs[r];for(let a=0;a=o&&l<=s)c=!0,Wp(e,t,l,n[a+1],r,i);else if(l>s)break}}return Object.hasOwn(n.outputs,r)&&(c=!0,Wp(e,t,a,r,r,i)),c}function Wp(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);Hp(e.index,s,t,i,a,c,!0)}function Gp(){Kp()}function Kp(){let e=qo(),t=Jo(),n=Yo();if(t.firstCreatePass&&Qp(t,n),n.controlDirectiveIndex===-1)return;od(`NgSignalForms`);let r=e[n.controlDirectiveIndex];t.data[n.controlDirectiveIndex].controlDef.create(r,new Yp(e,t,n))}function qp(){Jp()}function Jp(){let e=qo(),t=Jo(),n=Ss();if(n.controlDirectiveIndex===-1)return;let r=t.data[n.controlDirectiveIndex].controlDef,i=e[n.controlDirectiveIndex];r.update(i,new Yp(e,t,n))}var Yp=class{lView;tView;tNode;hasPassThrough;constructor(e,t,n){this.lView=e,this.tView=t,this.tNode=n,this.hasPassThrough=!!(n.flags&4096)}get customControl(){return this.tNode.customControlIndex===-1?void 0:this.lView[this.tNode.customControlIndex]}get nativeElement(){return wo(this.tNode,this.lView)}get descriptor(){return`<${this.tNode.value}>`}listenToCustomControlOutput(e,t){let n=this.tView.data[this.tNode.customControlIndex];Up(this.tNode,this.lView,n,e,Lp(this.tNode,this.lView,t))}listenToCustomControlModel(e){let t=this.tNode.flags&1024?`valueChange`:`checkedChange`,n=this.tView.data[this.tNode.customControlIndex];Up(this.tNode,this.lView,n,t,Lp(this.tNode,this.lView,e))}listenToDom(e,t){zp(this.tNode,this.tView,this.lView,void 0,this.lView[11],e,t,Lp(this.tNode,this.lView,t))}setInputOnDirectives(e,t,n){let r=this.tNode.inputs?.[e],i=this.tNode.hostDirectiveInputs?.[e];if(!r&&!i)return!1;let a=!1;if(r)for(let i of r){if(i===this.tNode.controlDirectiveIndex)continue;let r=this.lView[i],o=this.tView.data[i];(!n||n(Zp(r,o,e)))&&(af(o,r,e,t),a=!0)}if(i)for(let r=0;r0;){let e=n.shift();if(typeof e!=`function`){for(let n in e.inputs)t[e.inputs[n]]=!0;let r=Xp(e.directive);r!==null&&n.push(...r);continue}for(let r of e()){if(typeof r==`function`)continue;if(r.inputs)for(let e=0;e1){t.flags|=4096;return}$p(e,t)}function $p(e,t){for(let n=t.directiveStart;n{let r=t.hostDirectiveInputs[e],i=t.hostDirectiveOutputs[e+`Change`];if(!r||!i)return!1;for(let e=0;e=i&&a<=o)return t.flags|=n,t.customControlIndex=r,!0}}return!1};if(e(`value`,1024)||e(`checked`,2048))return}}function em(e,t){return tm(e,t)&&nm(e,t+`Change`)}function tm(e,t){return t in e.inputs}function nm(e,t){return t in e.outputs}var rm=Symbol(`BINDING`),im=new Ii(``);function am(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 ym(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&rf.SignalBased)!==0};return i&&(a.transform=i),a})}function Dm(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function Om(e,t,n){let r=t instanceof Xa?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new Ap(n,r):n}function km(e){let t=e.get(wp,null);if(t===null)throw new vi(407,!1);return{rendererFactory:t,sanitizer:e.get(Dp,null),changeDetectionScheduler:e.get(mc,null),ngReflect:!1,tracingService:e.get(id,null,{optional:!0})}}function Am(e,t,n){let r=Mm(e);return wu(t,r,r===`svg`?`svg`:r===`math`?xo:n)}function jm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new vi(905,!1)}function Mm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var Nm=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=Em(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Dm(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=fte(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){Gc(Mc.DynamicComponentStart);let s=rn(null);try{let s=this.componentDef,c=Om(s,r||this.ngModule,e),l=km(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(Op(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{rn(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=Pm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?lf(l,r,s.encapsulation,t):Am(s,l,o??null);jm(u);let d=t.get(im,null),f=Fm(u,()=>t.get(Ms,null)??cu());d&&d.addHost(f);let p=a?.some(Lm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(Lm)),m=Zd(null,c,null,512|$d(s),null,null,e,l,t,null,hu(u,t,!0));d&&wm&&f instanceof ShadowRoot&&Io(m,()=>{d.removeHost(f)}),m[27]=u,ps(m);let h=null;try{let e=xm(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);ku(l,u,e),nu(u,m),sf(c,m,e),vu(c,e,m),Sm(c,e),n!==void 0&&zm(e,this.ngContentSelectors,n),h=Oo(e.index,m),m[8]=h[8],Of(c,m,null)}catch(e){throw h!==null&&eu(h),eu(m),e}finally{Gc(Mc.DynamicComponentEnd),vs()}return new Rm(this.componentType,m,!!p)}};function Pm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:pte(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[rm].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 Lm(e){let t=e[rm].kind;return t===`input`||t===`twoWay`}var Rm=class extends Cp{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=To(t[1],27),this.location=Ul(this._tNode,t),this.instance=Oo(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new lp(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;wf(n,r[1],r,e,t),this.previousInputValues.set(e,t),tp(Oo(n.index,r),1)}get injector(){return new Fl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function zm(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=Vm}return e})();function Vm(){return Gm(Yo(),qo())}var Hm=class e extends Bm{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return Ul(this._hostTNode,this._hostLView)}get injector(){return new Fl(this._hostTNode,this._hostLView)}get parentInjector(){let e=Cl(this._hostTNode,this._hostLView);if(ll(e)){let t=fl(e,this._hostLView),n=ul(e),r=t[1].data[n+8];return new Fl(r,t)}return new Fl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=Um(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=xp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,jf(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 Nm(Wi(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(Xa,null);e&&(i=e)}let d=Wi(l.componentType??{}),f=xp(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,jf(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(Nee(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 ip(o,i,a,r),t.attachToViewContainerRef(),ba(Wm(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=Um(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=op(this._lContainer,t);n&&(xa(Wm(this._lContainer),t),Od(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=op(this._lContainer,t);return n&&xa(Wm(this._lContainer),t)!=null?new lp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function Um(e){return e[8]}function Wm(e){return e[8]||=[]}function Gm(e,t){let n,r=t[e.index];return po(r)?n=r:(n=np(r,t,null,e),t[e.index]=n,tf(t,n)),qm(n,t,e,r),new Hm(n,e,t)}function Km(e,t){let n=e[11],r=n.createComment(``),i=wo(t,e);return Tu(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var qm=Xm,Jm=()=>!1;function Ym(e,t,n){return Jm(e,t,n)}function Xm(e,t,n,r){if(e[7])return;let i;i=n.type&8?So(r):Km(t,n),e[7]=i}var Zm=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},Qm=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 fh(e,t,n){e.queries===null&&(e.queries=new eh),e.queries.track(new th(t,n))}function ph(e,t){return e.queries.getByIndex(t)}function mh(e,t){let n=e[1],r=ph(n,t);return r.crossesNgTemplate?sh(n,e,t,[]):oh(n,e,r,t)}function hh(e,t,n){let r,i=Tn(()=>{r._dirtyCounter();let n=yh(r,e);if(t&&n===void 0)throw new vi(-951,!1);return n});return r=i[nn],r._dirtyCounter=D(0),r._flatValue=void 0,i}function gh(e){return hh(!0,!1,e)}function _h(e){return hh(!0,!0,e)}function vh(e,t){let n=e[nn];n._lView=qo(),n._queryIndex=t,n._queryList=ch(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function yh(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:ka;let i=ch(n,r),a=mh(n,r);return i.reset(a,Gl),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function bh(e){return!!e&&typeof e.then==`function`}function xh(e){return!!e&&typeof e.subscribe==`function`}var Sh=class{},Ch=class extends Sh{injector;instance=null;constructor(e){super();let t=new Za([...e.providers,{provide:Sh,useValue:this}],e.parent||Ya(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function wh(e,t,n=null){return new Ch({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var Th=(()=>{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=Fa(!1,e.type),n=t.length>0?wh([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=ki({token:e,providedIn:`environment`,factory:()=>new e(da(Xa))})}return e})();function k(e){return jc(()=>{let t=jh(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Yl.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(Th).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||yu.Emulated,styles:e.styles||ka,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&od(`NgStandalone`),Mh(n);let r=e.dependencies;return n.directiveDefs=Nh(r,Eh),n.pipeDefs=Nh(r,Ki),n.id=Ph(n),n})}function Eh(e){return Wi(e)||Gi(e)}function Dh(e,t){if(e==null)return Oa;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=rf.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function Oh(e){if(e==null)return Oa;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function kh(e){return jc(()=>{let t=jh(e);return Mh(t),t})}function Ah(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 jh(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||Oa,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||ka,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Dh(e.inputs,t),outputs:Oh(e.outputs),debugInfo:null}}function Mh(e){e.features?.forEach(t=>t(e))}function Nh(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 Ph(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 Fh=new Ii(``),Ih=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=C(Fh,{optional:!0})??[];injector=C(js);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=co(this.injector,t);if(bh(n))e.push(n);else if(xh(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=Vl({token:e,factory:e.ɵfac})}return e})();function Lh(e){return t=>{t.controlDef={create:(e,t)=>{e?.ɵngControlCreate(t)},update:(e,t)=>{e?.ɵngControlUpdate?.(t)},passThroughInput:e}}}function Rh(e){return Object.getPrototypeOf(e.prototype).constructor}function zh(e){let t=Rh(e.type),n=!0,r=[e];for(;t&&t!==Function.prototype&&t!==Object.prototype;){let i,a=Object.hasOwn(t,Ri)?t[Ri]:void 0,o=Object.hasOwn(t,zi)?t[zi]:void 0;if(_o(e))i=a??o;else{if(a)throw new vi(903,!1);i=o}if(i){if(n){r.push(i);let t=e;t.inputs=Hh(e.inputs),t.declaredInputs=Hh(e.declaredInputs),t.outputs=Hh(e.outputs);let n=i.hostBindings;n&&Gh(e,n);let a=i.viewQuery,o=i.contentQueries;if(a&&Uh(e,a),o&&Wh(e,o),Bh(e,i),Si(e.outputs,i.outputs),_o(i)&&i.data.animation){let t=e.data;t.animation=(t.animation||[]).concat(i.data.animation)}}let t=i.features;if(t)for(let r=0;r=0;r--){let i=e[r];i.hostVars=t+=i.hostVars,i.hostAttrs=sl(i.hostAttrs,n=sl(n,i.hostAttrs))}}function Hh(e){return e===Oa?{}:e===ka?[]:e}function Uh(e,t){let n=e.viewQuery;e.viewQuery=n?(e,r)=>{t(e,r),n(e,r)}:t}function Wh(e,t){let n=e.contentQueries;e.contentQueries=n?(e,r,i)=>{t(e,r,i),n(e,r,i)}:t}function Gh(e,t){let n=e.hostBindings;e.hostBindings=n?(e,r)=>{t(e,r),n(e,r)}:t}function Kh(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=sl(e.mergedAttrs,e.attrs);let t=e.tView=Jd(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),Zo(e,!1);let c=Xh(n,t,e,r);Ds()&&Ld(n,t,c,e),nu(c,t);let l=np(c,t,c,e);t[r+27]=l,tf(t,l),Ym(l,e,t)}function qh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=pp(t,d,4,o||null,s||null),Uo()&&sm(t,e,f,Ao(t.consts,l),_f),qc(t,f)):f=t.data[d],Kh(f,e,t,n,r,i,a,c),go(f)&&sf(t,e,f),l!=null&&cf(e,f,u),f}function Jh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=pp(t,d,4,o||null,s||null),l!=null){let e=Ao(t.consts,l);f.localNames=[];for(let t=0;t{throw new vi(600,``)})}var tg=10,ng=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=C(ic);afterRenderManager=C(sd);zonelessEnabled=C(hc);rootEffectScheduler=C(_c);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Yr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=C(Ls);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(gi(e=>!e))}constructor(){C(id,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=C(Xa);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=js.NULL){return this._injector.get(Gs).run(()=>{if(Gc(Mc.BootstrapComponentStart),!this._injector.get(Ih).done)throw new vi(405,``);let r=Wi(e),i=this._injector.get(Sh),a=new Nm(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=rg(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(Qh,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),ig(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),Gc(Mc.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Gc(Mc.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(rd.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw Gc(Mc.ChangeDetectionEnd),new vi(101,!1);let e=rn(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,rn(e),this.afterTick.next(),Gc(Mc.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(wp,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++No(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;ig(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($h,[]).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),()=>ig(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new vi(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=Vl({token:e,factory:e.ɵfac})}return e})();function rg(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function ig(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function A(e,t,n,r){let i=qo();return Np(i,as(),t)&&(Jo(),vf(Ss(),i,e,t,n,r)),A}function ag(e){if(od(`NgAnimateEnter`),!qu)return ag;let t=qo();if(Cte(t))return ag;let n=Yo(),r=t[9].get(Gs);return Ote(ed(t),n,()=>og(t,n,e,r)),Pte(t[9]),md(t[9],ed(t)),ag}function og(e,t,n,r){let i=wo(t,e),a=e[11],o=Dte(n),s=[],c=!1,l=e=>{if(td(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{td(e)===i&&(nd(e,i)&&(c=!0),sg(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),wte(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(yte(i,Xu,qu),!Xu.has(i))){for(let e of o)a.removeClass(i,e);Ju(i)}})})}}function sg(e,t,n){let r=Yu.get(t);if(td(e)===t&&r&&nd(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);Ju(t)}}var cg=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 lg(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function ug(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){rn(r);let c=t.length-1;for(rn(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=lg(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=lg(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 mg,a??=pg(e,o,s,n),dg(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;)fg(e,i,n,o,t[o]),o++}else if(t!=null){rn(r);let c=t[Symbol.iterator]();rn(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=lg(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new mg,a??=pg(e,o,s,n);let u=n(o,r);if(dg(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;)fg(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 dg(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function fg(e,t,n,r,i){if(dg(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function pg(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 mg=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){od(`NgControlFlow`);let c=qo(),l=Jo();return Jh(c,l,e,t,n,r,i,Ao(l.consts,a),256,o,s),hg}function hg(e,t,n,r,i,a,o,s){od(`NgControlFlow`);let c=qo(),l=Jo();return Jh(c,l,e,t,n,r,i,Ao(l.consts,a),512,o,s),hg}function M(e,t){od(`NgControlFlow`);let n=qo(),r=as(),i=n[r]===Ru?-1:n[r],a=i===-1?void 0:xg(n,27+i);if(Np(n,r,e)){let r=rn(null);try{if(a!==void 0&&ap(a,0),e!==-1){let r=27+e,i=xg(n,r),a=Eg(n[1],r),o=Sp(i,a,n);ip(i,Af(n,a,t,{dehydratedView:o}),0,jf(a,o))}}finally{rn(r)}}else if(a!==void 0){let e=rp(a,0);e!==void 0&&(e[8]=t)}}var gg=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 _g(e){return e}function vg(e,t){return t}var yg=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){od(`NgControlFlow`);let p=qo(),m=Jo(),h=c!==void 0,g=qo(),_=new yg(h,s?o.bind(g[15][8]):o);g[27+e]=_,Jh(p,m,e+1,t,n,r,i,Ao(m.consts,a),256),h&&Jh(p,m,e+2,c,l,u,d,Ao(m.consts,f),512)}var bg=class extends cg{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,ip(this.lContainer,t,e,jf(this.templateTNode,n)),Sg(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,Cg(this.lContainer,e),wg(this.lContainer,e)}create(e,t){let n=xp(this.lContainer,this.templateTNode.tView.ssrId);return Af(this.hostLView,this.templateTNode,new gg(this.lContainer,t,e),{dehydratedView:n})}destroy(e){Od(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];Mte(e,r),Ku.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function Cg(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 wg(e,t){return op(e,t)}function Tg(e,t){return rp(e,t)}function Eg(e,t){return To(e,t)}function F(e,t,n){let r=qo();return Np(r,as(),t)&&(Jo(),df(Ss(),r,e,t,r[11],n)),F}function Dg(e,t,n,r,i){wf(t,e,n,i?`class`:`style`,r)}function I(e,t,n,r){let i=qo(),a=i[1],o=e+27,s=a.firstCreatePass?xm(o,i,2,t,_f,Uo(),n,r):a.data[o];if(ho(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(Op(o),()=>(Og(e,t,i,s,r),I))}}return Og(e,t,i,s,r),I}function Og(e,t,n,r,i){if(xf(r,n,e,t,Ag),go(r)){let e=n[1];sf(e,n,r),vu(e,r,n)}i!=null&&cf(n,r)}function L(){let e=Jo(),t=Sf(Yo());return e.firstCreatePass&&Sm(e,t),Go(t)&&Ko(),Ho(),t.classesWithoutHost!=null&&nl(t)&&Dg(e,t,qo(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&rl(t)&&Dg(e,t,qo(),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=qo(),a=i[1],o=e+27,s=a.firstCreatePass?Cm(o,a,2,t,n,r):a.data[o];return xf(s,i,e,t,Ag),r!=null&&cf(i,s),z}function B(){return Go(Sf(Yo()))&&Ko(),Ho(),B}function kg(e,t,n,r){return z(e,t,n,r),B(),kg}var Ag=(e,t,n,r,i)=>(Os(!0),wu(t[11],r,Ts()));function jg(e,t,n){let r=qo(),i=r[1],a=e+27,o=i.firstCreatePass?xm(a,r,8,`ng-container`,_f,Uo(),t,n):i.data[a];if(xf(o,r,e,`ng-container`,Pg),go(o)){let e=r[1];sf(e,r,o),vu(e,o,r)}return n!=null&&cf(r,o),jg}function Mg(){let e=Jo(),t=Sf(Yo());return e.firstCreatePass&&Sm(e,t),Mg}function Ng(e,t,n){return jg(e,t,n),Mg(),Ng}var Pg=(e,t,n,r,i)=>(Os(!0),Qee(t[11],``));function V(){return qo()}function Fg(e,t,n){let r=qo();return Np(r,as(),t)&&(Jo(),ff(Ss(),r,e,t,r[11],n)),Fg}var Ig=void 0;function Lg(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var Rg=[`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`]],Ig,[[`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`]],Ig,[[`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}`,Ig,Ig,Ig],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,Lg],zg=Object.create(null);function Bg(e){let t=Ug(e),n=Vg(t);if(n)return n;let r=t.split(`-`)[0];if(n=Vg(r),n)return n;if(r===`en`)return Rg;throw new vi(701,!1)}function Vg(e){if(!(e in zg)){let t=oa.ng&&oa.ng.common&&oa.ng.common.locales&&oa.ng.common.locales[e];return t!==void 0&&(zg[e]=t),t}return zg[e]}var Hg={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 Ug(e){return e.toLowerCase().replace(/_/g,`-`)}var Wg=`en-US`;function Gg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function H(e,t,n){let r=qo(),i=Jo(),a=Yo();return Kg(i,r,r[11],a,e,t,n),H}function U(e,t,n){let r=qo(),i=Jo(),a=Yo();return(a.type&3||n)&&zp(a,i,r,n,r[11],e,t,Lp(a,r,t)),U}function Kg(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=Lp(r,t,a),zp(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 n_(e){return(e&2)==2}function r_(e,t){return e&131071|t<<17}function i_(e){return e|2}function a_(e){return(e&131068)>>2}function o_(e,t){return e&-131069|t<<2}function s_(e){return(e&1)==1}function c_(e){return e|1}function l_(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=t_(o),c=a_(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||Ea(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=t_(e[s+1]);e[r+1]=e_(t,s),t!==0&&(e[t+1]=o_(e[t+1],r)),e[s+1]=r_(e[s+1],r)}else e[r+1]=e_(s,0),s!==0&&(e[s+1]=o_(e[s+1],r)),s=r}else e[r+1]=e_(c,0),s===0?s=r:e[c+1]=o_(e[c+1],r),c=r;l&&(e[r+1]=i_(e[r+1])),d_(e,u,r,!0),d_(e,u,r,!1),u_(t,u,e,r,a),o=e_(s,c),a?t.classBindings=o:t.styleBindings=o}function u_(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&Ea(a,t)>=0&&(n[r+1]=c_(n[r+1]))}function d_(e,t,n,r){let i=e[n+1],a=t===null,o=r?t_(i):a_(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];f_(n,t)&&(s=!0,e[o+1]=r?c_(i):i_(i)),o=r?t_(i):a_(i)}s&&(e[n+1]=r?i_(i):c_(i))}function f_(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?Ea(e,t)>=0:!1}var p_={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function m_(e){return e.substring(p_.key,p_.keyEnd)}function h_(e){return __(e),g_(e,v_(e,0,p_.textEnd))}function g_(e,t){let n=p_.textEnd;return n===t?-1:(t=p_.keyEnd=y_(e,p_.key=t,n),v_(e,t,n))}function __(e){p_.key=0,p_.keyEnd=0,p_.value=0,p_.valueEnd=0,p_.textEnd=e.length}function v_(e,t,n){for(;t32;)t++;return t}function b_(e,t,n){return C_(e,t,n,!1),b_}function G(e,t){return C_(e,t,null,!0),G}function x_(e){w_(Ite,S_,e,!0)}function S_(e,t){for(let n=h_(t);n>=0;n=g_(t,n))wa(e,m_(t),!0)}function C_(e,t,n,r){let i=qo(),a=Jo(),o=os(2);if(a.firstUpdatePass&&E_(a,e,o,r),t!==Ru&&Np(i,o,t)){let s=a.data[bs()];N_(a,s,i,i[11],e,i[o+1]=Rte(t,n),r,o)}}function w_(e,t,n,r){let i=Jo(),a=os(2);i.firstUpdatePass&&E_(i,null,a,r);let o=qo();if(n!==Ru&&Np(o,a,n)){let s=i.data[bs()];if(I_(s,r)&&!T_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=wi(e,n||``)),Dg(i,s,o,n,r)}else Lte(i,s,o,o[11],o[a+1],o[a+1]=Fte(e,t,n),r,a)}}function T_(e,t){return t>=e.expandoStartIndex}function E_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[bs()],o=T_(e,n);I_(a,r)&&t===null&&!o&&(t=!1),t=D_(i,a,t,r),l_(i,a,t,n,o,r)}}function D_(e,t,n,r){let i=cs(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=j_(null,e,t,n,r),n=M_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=j_(i,e,t,n,r),a===null){let n=O_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=j_(null,e,t,n[1],r),n=M_(n,t.attrs,r),k_(e,t,r,n))}else a=A_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function O_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(a_(r)!==0)return e[t_(r)]}function k_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[t_(i)]=r}function A_(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===Ru&&(u=l?ka:void 0);let d=l?Ta(u,r):c===r?u:void 0;if(a&&!F_(d)&&(d=Ta(t,r)),F_(d)&&(s=d,o))return s;let f=e[i+1];i=o?t_(f):a_(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=Ta(e,r))}return s}function F_(e){return e!==void 0}function Rte(e,t){return e==null||e===``||(typeof t==`string`?e=xu(e)+t:typeof e==`object`&&(e=Ci(xu(e)))),e}function I_(e,t){return!!(e.flags&(t?8:16))}function K(e,t=``){let n=qo(),r=Jo(),i=e+27,a=r.firstCreatePass?pp(r,i,1,t,null):r.data[i],o=zte(r,n,a,t);n[i]=o,Ds()&&Ld(r,n,o,a),Zo(a,!1)}var zte=(e,t,n,r)=>(Os(!0),Xee(t[11],r));function L_(e,t,n,r=``){return Np(e,as(),n)?t+Ji(n)+r:Ru}function Bte(e,t,n,r,i,a=``){let o=Pp(e,is(),n,i);return os(2),o?t+Ji(n)+r+Ji(i)+a:Ru}function Vte(e,t,n,r,i,a,o,s=``){let c=Fp(e,is(),n,i,o);return os(3),c?t+Ji(n)+r+Ji(i)+a+Ji(o)+s:Ru}function Hte(e,t,n,r,i,a,o,s,c,l=``){let u=Ip(e,is(),n,i,o,c);return os(4),u?t+Ji(n)+r+Ji(i)+a+Ji(o)+s+Ji(c)+l:Ru}function q(e){return J(``,e),q}function J(e,t,n){let r=qo(),i=L_(r,e,t,n);return i!==Ru&&B_(r,bs(),i),J}function Y(e,t,n,r,i){let a=qo(),o=Bte(a,e,t,n,r,i);return o!==Ru&&B_(a,bs(),o),Y}function R_(e,t,n,r,i,a,o){let s=qo(),c=Vte(s,e,t,n,r,i,a,o);return c!==Ru&&B_(s,bs(),c),R_}function z_(e,t,n,r,i,a,o,s,c){let l=qo(),u=Hte(l,e,t,n,r,i,a,o,s,c);return u!==Ru&&B_(l,bs(),u),z_}function B_(e,t,n){let r=Co(t,e);Zee(e[11],r,n)}function V_(e,t,n){Oc(t)&&(t=t());let r=qo();return Np(r,as(),t)&&(Jo(),df(Ss(),r,e,t,r[11],n)),V_}function H_(e,t){let n=Oc(e);return n&&e.set(t),n}function U_(e,t){let n=qo(),r=Jo(),i=Yo();return Kg(r,n,n[11],i,e,t),U_}var W_={};function G_(e){od(`NgLet`);let t=Jo(),n=qo(),r=e+27;return Zo(pp(t,r,128,null,null),!1),Do(t,n,r,W_),G_}function K_(e){return Do(Jo(),qo(),bs(),e),e}function q_(e){let t=Eo(es(),27+e);if(t===W_)throw new vi(314,!1);return t}function J_(e,t,n=``){return L_(qo(),e,t,n)}function Y_(e,t,n){let r=Jo();r.firstCreatePass&&X_(t,r.data,r.blueprint,_o(e),n)}function X_(e,t,n,r,i){if(e=Di(e),Array.isArray(e))for(let a=0;a>20;if(Ua(e)||!e.multi){let r=new tl(l,i,om,null),p=$_(c,t,i?u:u+f,d);p===-1?(wl(bl(s,o),a,c),Z_(a,e,t.length),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(r),o.push(r)):(n[p]=r,o[p]=r)}else{let p=$_(c,t,u+f,d),m=$_(c,t,u,u+f),h=p>=0&&n[p],g=m>=0&&n[m];if(i&&!g||!i&&!h){wl(bl(s,o),a,c);let u=Gte(i?Wte:Ute,n.length,i,r,l,e);!i&&g&&(n[m].providerFactory=u),Z_(a,e,t.length,0),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(u),o.push(u)}else{let t=Q_(n[i?m:p],l,!i&&r);Z_(a,e,p>-1?p:m,t)}!i&&r&&g&&n[m].componentProviders++}}}function Z_(e,t,n,r){let i=Ua(t),a=Wa(t);if(i||a){let o=(a?Di(t.useClass):t).prototype.ngOnDestroy;if(o){let a=e.destroyHooks||=[];if(!i&&t.multi){let e=a.indexOf(n);e===-1?a.push(n,[r,o]):a[e+1].push(r,o)}else a.push(n,o)}}}function Q_(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function $_(e,t,n,r){for(let i=n;i{n.providersResolver=(t,n)=>Y_(t,n?n(e):e,!1),t&&(n.viewProvidersResolver=(e,n)=>Y_(e,n?n(t):t,!0))}}function nv(e,t){let n=rs()+e,r=qo();return r[n]===Ru?jp(r,n,t()):Mp(r,n)}function rv(e,t,n){return ov(qo(),rs(),e,t,n)}function iv(e,t,n,r){return sv(qo(),rs(),e,t,n,r)}function Kte(e,t,n,r,i){return qte(qo(),rs(),e,t,n,r,i)}function av(e,t){let n=e[t];return n===Ru?void 0:n}function ov(e,t,n,r,i,a){let o=t+n;return Np(e,o,i)?jp(e,o+1,a?r.call(a,i):r(i)):av(e,o+1)}function sv(e,t,n,r,i,a,o){let s=t+n;return Pp(e,s,i,a)?jp(e,s+2,o?r.call(o,i,a):r(i,a)):av(e,s+2)}function qte(e,t,n,r,i,a,o,s){let c=t+n;return Fp(e,c,i,a,o)?jp(e,c+3,s?r.call(s,i,a,o):r(i,a,o)):av(e,c+3)}function cv(e,t){let n=Jo(),r,i=e+27;n.firstCreatePass?(r=Jte(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=ga(r.type,!0)),o=ia(om);try{let e=ml(!1),t=a();return ml(e),Do(n,qo(),i,t),t}finally{ia(o)}}function Jte(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function lv(e,t,n){let r=e+27,i=qo(),a=Eo(i,r);return dv(i,r)?ov(i,rs(),t,a.transform,n,a):a.transform(n)}function uv(e,t,n,r){let i=e+27,a=qo(),o=Eo(a,i);return dv(a,i)?sv(a,rs(),t,o.transform,n,r,o):o.transform(n,r)}function dv(e,t){return e[1].data[t].pure}function fv(e,t){return fp(e,t)}var Yte=(()=>{class e{applicationErrorHandler=C(ic);appRef=C(ng);taskService=C(Ls);ngZone=C(Gs);zonelessEnabled=C(hc);tracing=C(id,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new pr;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Us):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(C(gc,{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?Vs:Bs;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=Vl({token:e,factory:e.ɵfac})}return e})();function Xte(){return[{provide:mc,useExisting:Yte},{provide:Gs,useClass:$s},{provide:hc,useValue:!0}]}function Zte(){return typeof $localize<`u`&&$localize.locale||`en-US`}var pv=new Ii(``,{factory:()=>C(pv,{optional:!0,skipSelf:!0})||Zte()}),mv=class{destroyed=!1;listeners=null;errorHandler=C(rc,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=C(Ns);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new vi(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(bi(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=rn(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&&Qte(this.listeners)),rn(t),this.isEmitting=!1}}};function Qte(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function X(e,t){return Tn(e,t?.equal)}function Z(e){return Qn(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var $te=e=>e;function Q(e,t){return typeof e==`function`?hv(Jn(e,$te,t?.equal),t?.debugName,t?.set):hv(Jn(e.source,e.computation,e.equal),e.debugName,e.set)}function hv(e,t,n){let r=e[nn],i=e;if(n!==void 0){let t=e=>Yn(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Z(e)),t)}else i.set=e=>Yn(r,e),i.update=e=>Xn(r,e);return i.asReadonly=oc.bind(e),i}var gv=!1;function ene(){return gv}function _v(e){gv=e}function vv(e,t){let n=Object.create(Ac);n.value=e,n.transformFn=t?.transform;function r(){if(sn(n),n.value===kc)throw new vi(-950,null);return n.value}return r[nn]=n,r}function yv(e){return new mv}function bv(e,t){return vv(e,t)}function tne(e){return vv(kc,e)}var $=(bv.required=tne,bv);function xv(e,t){let n=Object.create(Ac),r=new mv;n.value=e;function i(){return sn(n),Sv(n.value),n.value}return i[nn]=n,i.asReadonly=oc.bind(i),i.set=e=>{n.equal(n.value,e)||(Ln(n,e),r.emit(e))},i.update=e=>{Sv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function Sv(e){if(e===kc)throw new vi(952,!1)}function Cv(e,t){return xv(e,t)}function nne(e){return xv(kc,e)}var wv=(Cv.required=nne,Cv);function Tv(e,t){return gh(t)}function rne(e,t){return _h(t)}var Ev=(Tv.required=rne,Tv),ine=(()=>{class e{static __NG_ELEMENT_ID__=ane}return e})();function ane(e){return one(Yo(),qo(),(e&16)==16)}function one(e,t,n){if(ho(e)&&!n){let n=Oo(e.index,t);return new lp(n,n)}if(e.type&175){let e=t[15];return new lp(e,t)}return null}var Dv=new Ii(``),sne=new Ii(``);function Ov(e){return!e.moduleRef}function cne(e){let t=Ov(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Gs);return n.run(()=>{Ov(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(ic),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),Ov(e)){let n=()=>t.destroy(),r=e.platformInjector.get(Dv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(Dv);n.add(t),e.moduleRef.onDestroy(()=>{ig(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return une(r,n,()=>{let n=t.get(Ls),r=n.add(),i=t.get(Ih);return i.runInitializers(),i.donePromise.then(()=>{if(Gg(t.get(pv,Wg)||`en-US`),!t.get(sne,!0))return Ov(e)?t.get(ng):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Ov(e)){let n=t.get(ng);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return lne?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var lne;function une(e,t,n){try{let r=n();return bh(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var kv=null;function dne(e=[],t){return js.create({name:t,providers:[{provide:Ga,useValue:`platform`},{provide:Dv,useValue:new Set([()=>kv=null])},...e]})}function fne(e=[]){if(kv)return kv;let t=dne(e);return kv=t,eg(),pne(t),t}function pne(e){let t=e.get(lc,null);co(e,()=>{t?.forEach(e=>e())})}function mne(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;Gc(Mc.BootstrapApplicationStart);try{let e=i?.injector??fne(r);return cne({r3Injector:new Ch({providers:[Xte(),ac,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{Gc(Mc.BootstrapApplicationEnd)}}function Av(e){return typeof e==`boolean`?e:e!=null&&e!==`false`}var jv=Symbol(`NOT_SET`),Mv=new Set,hne={...zn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:jv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(sn(r),r.value),r.signal[nn]=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??Mv)t()}finally{yn(e)}}};function Nv(e,t){let n=t?.injector??C(js),r=n.get(mc),i=n.get(sd),a=n.get(id,null,{optional:!0});i.impl??=n.get(ld);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(fc,null,{optional:!0}),c=new gne(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var Pv=null;function Fv(){return Pv}function _ne(e){Pv??=e}var vne=class{},Iv=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(Iv||{}),Lv=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(Lv||{}),Rv=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(Rv||{}),zv={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 yne(e){return Bg(e)[Hg.LocaleId]}function bne(e,t,n){let r=Bg(e);return Gv(Gv([r[Hg.DayPeriodsFormat],r[Hg.DayPeriodsStandalone]],t),n)}function xne(e,t,n){let r=Bg(e);return Gv(Gv([r[Hg.DaysFormat],r[Hg.DaysStandalone]],t),n)}function Sne(e,t,n){let r=Bg(e);return Gv(Gv([r[Hg.MonthsFormat],r[Hg.MonthsStandalone]],t),n)}function Cne(e,t){let n=Bg(e)[Hg.Eras];return Gv(n,t)}function Bv(e,t){return Gv(Bg(e)[Hg.DateFormat],t)}function Vv(e,t){return Gv(Bg(e)[Hg.TimeFormat],t)}function Hv(e,t){let n=Bg(e)[Hg.DateTimeFormat];return Gv(n,t)}function Uv(e,t){let n=Bg(e),r=n[Hg.NumberSymbols][t];if(r===void 0){if(t===zv.CurrencyDecimal)return n[Hg.NumberSymbols][zv.Decimal];if(t===zv.CurrencyGroup)return n[Hg.NumberSymbols][zv.Group]}return r}function Wv(e){if(!e[Hg.ExtraData])throw new vi(2303,!1)}function wne(e){let t=Bg(e);return Wv(t),(t[Hg.ExtraData][2]||[]).map(e=>typeof e==`string`?Kv(e):[Kv(e[0]),Kv(e[1])])}function Tne(e,t,n){let r=Bg(e);return Wv(r),Gv(Gv([r[Hg.ExtraData][0],r[Hg.ExtraData][1]],t)||[],n)||[]}function Gv(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new vi(2304,!1)}function Kv(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var Ene=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,qv=Object.create(null),Dne=/((?:[^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]*)/,One=256;function kne(e,t,n,r){let i=uy(e);Ane(t),t=Yv(n,t)||t;let a=[],o;for(;t;)if(o=Dne.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=sy(r,s),i=ly(i,r));let c=``;return a.forEach(e=>{let t=oy(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Ane(e){if(e.length>One)throw new vi(2300,!1)}function Jv(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Yv(e,t){let n=yne(e);if(qv[n]??=Object.create(null),qv[n][t])return qv[n][t];let r=``;switch(t){case`shortDate`:r=Bv(e,Rv.Short);break;case`mediumDate`:r=Bv(e,Rv.Medium);break;case`longDate`:r=Bv(e,Rv.Long);break;case`fullDate`:r=Bv(e,Rv.Full);break;case`shortTime`:r=Vv(e,Rv.Short);break;case`mediumTime`:r=Vv(e,Rv.Medium);break;case`longTime`:r=Vv(e,Rv.Long);break;case`fullTime`:r=Vv(e,Rv.Full);break;case`short`:let t=Yv(e,`shortTime`),n=Yv(e,`shortDate`);r=Xv(Hv(e,Rv.Short),[t,n]);break;case`medium`:let i=Yv(e,`mediumTime`),a=Yv(e,`mediumDate`);r=Xv(Hv(e,Rv.Medium),[i,a]);break;case`long`:let o=Yv(e,`longTime`),s=Yv(e,`longDate`);r=Xv(Hv(e,Rv.Long),[o,s]);break;case`full`:let c=Yv(e,`fullTime`),l=Yv(e,`fullDate`);r=Xv(Hv(e,Rv.Full),[c,l])}return r&&(qv[n][t]=r),r}function Xv(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function Zv(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 jne(s,t);let c=Uv(o,zv.MinusSign);return Zv(s,t,c,r,i)}}function Mne(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 vi(2301,!1)}}function $v(e,t,n=Iv.Format,r=!1){return function(i,a){return Nne(i,a,e,t,n,r)}}function Nne(e,t,n,r,i,a){switch(n){case 2:return Sne(t,i,r)[e.getMonth()];case 1:return xne(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=wne(t),a=Tne(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?`+`:``)+Zv(o,2,a)+Zv(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+Zv(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+Zv(o,2,a)+`:`+Zv(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+Zv(o,2,a)+`:`+Zv(Math.abs(i%60),2,a);default:throw new vi(2310,!1)}}}var Pne=0,ty=4;function Fne(e){let t=Jv(e,Pne,1).getDay();return Jv(e,0,1+(t<=ty?ty:11)-t)}function ny(e){let t=e.getDay(),n=t===0?-3:ty-t;return Jv(e.getFullYear(),e.getMonth(),e.getDate()+n)}function ry(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=ny(n),t=Fne(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return Zv(i,e,Uv(r,zv.MinusSign))}}function iy(e,t=!1){return function(n,r){return Zv(ny(n).getFullYear(),e,Uv(r,zv.MinusSign),t)}}var ay=Object.create(null);function oy(e){if(ay[e])return ay[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=$v(3,Lv.Abbreviated);break;case`GGGG`:t=$v(3,Lv.Wide);break;case`GGGGG`:t=$v(3,Lv.Narrow);break;case`y`:t=Qv(0,1,0,!1,!0);break;case`yy`:t=Qv(0,2,0,!0,!0);break;case`yyy`:t=Qv(0,3,0,!1,!0);break;case`yyyy`:t=Qv(0,4,0,!1,!0);break;case`Y`:t=iy(1);break;case`YY`:t=iy(2,!0);break;case`YYY`:t=iy(3);break;case`YYYY`:t=iy(4);break;case`M`:case`L`:t=Qv(1,1,1);break;case`MM`:case`LL`:t=Qv(1,2,1);break;case`MMM`:t=$v(2,Lv.Abbreviated);break;case`MMMM`:t=$v(2,Lv.Wide);break;case`MMMMM`:t=$v(2,Lv.Narrow);break;case`LLL`:t=$v(2,Lv.Abbreviated,Iv.Standalone);break;case`LLLL`:t=$v(2,Lv.Wide,Iv.Standalone);break;case`LLLLL`:t=$v(2,Lv.Narrow,Iv.Standalone);break;case`w`:t=ry(1);break;case`ww`:t=ry(2);break;case`W`:t=ry(1,!0);break;case`d`:t=Qv(2,1);break;case`dd`:t=Qv(2,2);break;case`c`:case`cc`:t=Qv(7,1);break;case`ccc`:t=$v(1,Lv.Abbreviated,Iv.Standalone);break;case`cccc`:t=$v(1,Lv.Wide,Iv.Standalone);break;case`ccccc`:t=$v(1,Lv.Narrow,Iv.Standalone);break;case`cccccc`:t=$v(1,Lv.Short,Iv.Standalone);break;case`E`:case`EE`:case`EEE`:t=$v(1,Lv.Abbreviated);break;case`EEEE`:t=$v(1,Lv.Wide);break;case`EEEEE`:t=$v(1,Lv.Narrow);break;case`EEEEEE`:t=$v(1,Lv.Short);break;case`a`:case`aa`:case`aaa`:t=$v(0,Lv.Abbreviated);break;case`aaaa`:t=$v(0,Lv.Wide);break;case`aaaaa`:t=$v(0,Lv.Narrow);break;case`b`:case`bb`:case`bbb`:t=$v(0,Lv.Abbreviated,Iv.Standalone,!0);break;case`bbbb`:t=$v(0,Lv.Wide,Iv.Standalone,!0);break;case`bbbbb`:t=$v(0,Lv.Narrow,Iv.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=$v(0,Lv.Abbreviated,Iv.Format,!0);break;case`BBBB`:t=$v(0,Lv.Wide,Iv.Format,!0);break;case`BBBBB`:t=$v(0,Lv.Narrow,Iv.Format,!0);break;case`h`:t=Qv(3,1,-12);break;case`hh`:t=Qv(3,2,-12);break;case`H`:t=Qv(3,1);break;case`HH`:t=Qv(3,2);break;case`m`:t=Qv(4,1);break;case`mm`:t=Qv(4,2);break;case`s`:t=Qv(5,1);break;case`ss`:t=Qv(5,2);break;case`S`:t=Qv(6,1);break;case`SS`:t=Qv(6,2);break;case`SSS`:t=Qv(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=ey(0);break;case`ZZZZZ`:t=ey(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=ey(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=ey(2);break;default:return null}return ay[e]=t,t}function sy(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function cy(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function ly(e,t,n){let r=e.getTimezoneOffset();return cy(e,-1*(sy(t,r)-r))}function uy(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 Jv(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(Ene))return dy(n)}let t=new Date(e);if(!fy(t))throw new vi(2311,!1);return t}function dy(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 py=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=C(js);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)(om(Bm))};static ɵdir=kh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[Ic]})}return e})();function my(e,t){return new vi(2100,!1)}var hy=`mediumDate`,gy=new Ii(``),_y=new Ii(``),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??hy,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return kne(t,e,i||this.locale,a)}catch(t){throw my(e,t.message)}}static ɵfac=function(t){return new(t||e)(om(pv,16),om(gy,24),om(_y,24))};static ɵpipe=Ah({name:`date`,type:e,pure:!0})}return e})(),yy=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=Ah({name:`json`,type:e,pure:!1})}return e})();function by(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 xy=`browser`,Sy=class{_doc;constructor(e){this._doc=e}manager},Cy=(()=>{class e extends Sy{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)(da(Ms))};static ɵprov=ki({token:e,factory:e.ɵfac})}return e})(),wy=new Ii(``),Ty=(()=>{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 Cy));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof Cy);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 vi(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(da(wy),da(Gs))};static ɵprov=ki({token:e,factory:e.ɵfac})}return e})(),Ey=`ng-app-id`;function Dy(e){for(let t of e)t.remove()}function Oy(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function ky(e,t,n,r){let i=e.head?.querySelectorAll(`style[${Ey}="${t}"],link[${Ey}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(Ey),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 Ay(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var jy=(()=>{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,ky(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,Oy);t?.forEach(e=>this.addUsage(e,this.external,Ay))}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&&(Dy(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])Dy(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,Oy(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,Ay(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)(da(Ms),da(sc),da(dc,8),da(uc))};static ɵprov=ki({token:e,factory:e.ɵfac})}return e})(),My={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`},Ny=/%COMP%/g,Py=`%COMP%`,Fy=`_nghost-${Py}`,Iy=`_ngcontent-${Py}`,Ly=!0,Ry=new Ii(``,{factory:()=>Ly}),zy=new Ii(``);function By(e){return Iy.replace(Ny,e)}function Vy(e){return Fy.replace(Ny,e)}function Hy(e,t){return t.map(t=>t.replace(Ny,e))}var Uy=(()=>{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 Wy(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 Jy?n.applyToHost(e):n instanceof qy&&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 yu.Emulated:r=new Jy(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case yu.ShadowDom:return new Ky(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case yu.ExperimentalIsolatedShadowDom:return new Ky(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new qy(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)(da(Ty),da(im),da(sc),da(Ry),da(Ms),da(Gs),da(dc),da(id,8),da(zy,8))};static ɵprov=ki({token:e,factory:e.ɵfac})}return e})(),Wy=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(My[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(Gy(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=Gy(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new vi(-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 vi(-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=My[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=My[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&(zu.DashCase|zu.Important)?e.style.setProperty(t,n,r&zu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&zu.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=Fv().getGlobalEventTarget(this.doc,e),!e))throw new vi(-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 Gy(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Ky=class extends Wy{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=Hy(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=Ay(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)}},qy=class extends Wy{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?Hy(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&&Ku.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Jy=class extends qy{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=By(l),this.hostAttr=Vy(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}},Yy=class e extends vne{supportsDOMEvents=!0;static makeCurrent(){_ne(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=Zy();return t==null?null:Qy(t)}resetBaseElement(){Xy=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return by(document.cookie,e)}},Xy=null;function Zy(){return Xy||=document.head.querySelector(`base`),Xy?Xy.getAttribute(`href`):null}function Qy(e){return new URL(e,document.baseURI).pathname}var $y=[`alt`,`control`,`meta`,`shift`],eb={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},tb={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},nb=(()=>{class e extends Sy{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(()=>Fv().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.`),$y.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=eb[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`),$y.forEach(t=>{if(t!==n){let n=tb[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)(da(Ms))};static ɵprov=ki({token:e,factory:e.ɵfac})}return e})();async function rb(e,t,n){return mne({rootComponent:e,...ib(t,n)})}function ib(e,t){return{platformRef:t?.platformRef,appProviders:[...lb,...e?.providers??[]],platformProviders:cb}}function ab(){Yy.makeCurrent()}function ob(){return new rc}function sb(){return su(document),document}var cb=[{provide:uc,useValue:xy},{provide:lc,useValue:ab,multi:!0},{provide:Ms,useFactory:sb}],lb=[{provide:Ga,useValue:`root`},{provide:rc,useFactory:ob},{provide:wy,useClass:Cy,multi:!0},{provide:wy,useClass:nb,multi:!0},Uy,{provide:im,useClass:jy},{provide:jy,useExisting:im},Ty,{provide:wp,useExisting:Uy},[]];function ub(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 mb({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 _b(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(n0},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?pr:(this.currentObservers=null,a.push(e),new fr(function(){t.currentObservers=null,dr(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 zr;return e.source=this,e},t.create=function(e,t){return new Yr(e,t)},t}(zr),Yr=function(e){$n(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)??pr},t}(Jr),Xr=function(e){$n(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}(Jr);function Zr(e){return e[e.length-1]}function Qr(e){return cr(Zr(e))?e.pop():void 0}var $r=(function(e){return e&&typeof e.length==`number`&&typeof e!=`function`});function ei(e){return cr(e?.then)}function ti(e){return cr(e[Ir])}function ni(e){return Symbol.asyncIterator&&cr(e?.[Symbol.asyncIterator])}function ri(e){return TypeError(`You provided `+(typeof e==`object`&&e?`an invalid object`:`'`+e+`'`)+` where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function ii(){return typeof Symbol!=`function`||!Symbol.iterator?`@@iterator`:Symbol.iterator}var ai=ii();function oi(e){return cr(e?.[ai])}function si(e){return or(this,arguments,function(){var t,n,r,i;return tr(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,ar(t.read())];case 3:return n=a.sent(),r=n.value,i=n.done,i?[4,ar(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,ar(r)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function ci(e){return cr(e?.getReader)}function li(e){if(e instanceof zr)return e;if(e!=null){if(ti(e))return uee(e);if($r(e))return dee(e);if(ei(e))return fee(e);if(ni(e))return ui(e);if(oi(e))return pee(e);if(ci(e))return mee(e)}throw ri(e)}function uee(e){return new zr(function(t){var n=e[Ir]();if(cr(n.subscribe))return n.subscribe(t);throw TypeError(`Provided object does not correctly implement Symbol.observable`)})}function dee(e){return new zr(function(t){for(var n=0;n=0?n.slice(0,r):n}function Ci(e,t){return e?t?`${e} ${t}`:e:t||``}var wi=bi({__forward_ref__:bi});function Ti(e){return e.__forward_ref__=Ti,e}function Ei(e){return Di(e)?e():e}function Di(e){return typeof e==`function`&&Object.hasOwn(e,wi)&&e.__forward_ref__===Ti}function Oi(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function ki(e){return Ai(e,Ni)}function Ai(e,t){return Object.hasOwn(e,t)&&e[t]||null}function ji(e){return(e?.[Ni]??null)||null}function Mi(e){return e&&Object.hasOwn(e,Pi)?e[Pi]:null}var Ni=bi({ɵprov:bi}),Pi=bi({ɵinj:bi}),Fi=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=Oi({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Ii(e){return e&&!!e.ɵproviders}var Li=bi({ɵcmp:bi}),Ri=bi({ɵdir:bi}),zi=bi({ɵpipe:bi}),Bi=bi({ɵfac:bi}),Vi=bi({__NG_ELEMENT_ID__:bi}),Hi=bi({__NG_ENV_ID__:bi});function Ui(e){return Ki(e,`@Component`),e[Li]||null}function Wi(e){return Ki(e,`@Directive`),e[Ri]||null}function Gi(e){return Ki(e,`@Pipe`),e[zi]||null}function Ki(e,t){if(e==null)throw new _i(-919,!1)}function qi(e){return typeof e==`string`?e:e==null?``:String(e)}var Ji=bi({ngErrorCode:bi}),Yi=bi({ngErrorMessage:bi}),Xi=bi({ngTokenPath:bi});function Zi(e,t){return $i(``,-200,t)}function Qi(e,t){throw new _i(-201,!1)}function $i(e,t,n){let r=new _i(t,e);return r[Ji]=t,r[Yi]=e,n&&(r[Xi]=n),r}function ea(e){return e[Ji]}var ta;function na(){return ta}function ra(e){let t=ta;return ta=e,t}function ia(e,t,n){let r=ki(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;Qi(e,``)}var aa=globalThis,oa={},sa=`__NG_DI_FLAG__`,ca=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=da(t)||0;try{return this.injector.get(e,n&8?null:oa,n)}catch(e){if(Kn(e))return e;throw e}}};function la(e,t=0){let n=Un();if(n===void 0)throw new _i(-203,!1);if(n===null)return ia(e,void 0,t);{let r=fa(t),i=n.retrieve(e,r);if(Kn(i)){if(r.optional)return null;throw i}return i}}function ua(e,t=0){return(na()||la)(Ei(e),t)}function C(e,t){return ua(e,da(t))}function da(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function fa(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function pa(e){let t=[];for(let n=0;nArray.isArray(e)?va(e,t):t(e))}function ya(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ba(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function xa(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 Ca(e,t,n){let r=Ta(e,t);return r>=0?e[r|1]=n:(r=~r,Sa(e,r,t,n)),r}function wa(e,t){let n=Ta(e,t);if(n>=0)return e[n|1]}function Ta(e,t){return Ea(e,t,1)}function Ea(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 va(t,e=>{let t=e;Ia(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&Fa(i,a),n}function Fa(e,t){for(let n=0;n{t(e,r)})}}function Ia(e,t,n,r){if(e=Ei(e),!e)return!1;let i=null,a=Mi(e),o=!a&&Ui(e);if(!a&&!o){let t=e.ngModule;if(a=Mi(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)Ia(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{va(a.imports,i=>{Ia(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&Fa(e,t)}if(!s){let e=ha(i)||(()=>new i);t({provide:i,useFactory:e,deps:Oa},i),t({provide:ja,useValue:i,multi:!0},i),t({provide:ka,useValue:()=>ua(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;La(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function La(e,t){for(let n of e)Ii(n)&&(n=n.ɵproviders),Array.isArray(n)?La(n,t):t(n)}var Ra=bi({provide:String,useValue:bi});function za(e){return typeof e==`object`&&!!e&&Ra in e}function Ba(e){return!!(e&&e.useExisting)}function Va(e){return!!(e&&e.useFactory)}function Ha(e){return typeof e==`function`}function Ua(e){return!!e.useClass}var Wa=new Fi(``),Ga={},Ka={},qa=void 0;function Ja(){return qa===void 0&&(qa=new Ma),qa}var Ya=class{},Xa=class extends Ya{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,oo(e,e=>this.processProvider(e)),this.records.set(Aa,no(void 0,this)),r.has(`environment`)&&this.records.set(Ya,no(void 0,this));let i=this.records.get(Wa);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(ja,Oa,{self:!0}))}retrieve(e,t){let n=da(t)||0;try{return this.get(e,oa,n)}catch(e){if(Kn(e))return e;throw e}}destroy(){to(this),this._destroyed=!0;let e=nn(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(),nn(e)}}onDestroy(e){return to(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){to(this);let t=Wn(this),n=ra(void 0);try{return e()}finally{Wn(t),ra(n)}}get(e,t=oa,n){if(to(this),Object.hasOwn(e,Hi))return e[Hi](this);let r=da(n),i=Wn(this),a=ra(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=ao(e)&&ki(e);t=n&&this.injectableDefInScope(n)?no(Za(e),Ga):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?Ja():this.parent;return t=r&8&&t===oa?null:t,n.get(e,t)}catch(e){let t=ea(e);throw t===-200||t===-201?new _i(t,null):e}finally{ra(a),Wn(i)}}resolveInjectorInitializers(){let e=nn(null),t=Wn(this),n=ra(void 0);try{let e=this.get(ka,Oa,{self:!0});for(let t of e)t()}finally{Wn(t),ra(n),nn(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=Ei(e);let t=Ha(e)?e:Ei(e&&e.provide),n=$a(e);if(!Ha(e)&&e.multi===!0){let n=this.records.get(t);n||(n=no(void 0,Ga,!0),n.factory=()=>pa(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=nn(null);try{if(t.value===Ka)throw Zi(``);return t.value===Ga&&(t.value=Ka,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&io(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{nn(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=Ei(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 Za(e){let t=ki(e),n=t===null?ha(e):t.factory;if(n!==null)return n;if(e instanceof Fi)throw new _i(-204,!1);if(e instanceof Function)return Qa(e);throw new _i(-204,!1)}function Qa(e){if(e.length>0)throw new _i(-204,!1);let t=ji(e);return t===null?()=>new e:()=>t.factory(e)}function $a(e){return za(e)?no(void 0,e.useValue):no(eo(e),Ga)}function eo(e,t,n){let r;if(Ha(e)){let t=Ei(e);return ha(t)||Za(t)}if(za(e))r=()=>Ei(e.useValue);else if(Va(e))r=()=>e.useFactory(...pa(e.deps||[]));else if(Ba(e))r=(t,n)=>ua(Ei(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=Ei(e&&(e.useClass||e.provide));if(ro(e))r=()=>new t(...pa(e.deps));else return ha(t)||Za(t)}return r}function to(e){if(e.destroyed)throw new _i(-205,!1)}function no(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function ro(e){return!!e.deps}function io(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function ao(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function oo(e,t){for(let n of e)Array.isArray(n)?oo(n,t):n&&Ii(n)?oo(n.ɵproviders,t):t(n)}function so(e,t){let n;e instanceof Xa?(to(e),n=e):n=new ca(e);let r=Wn(n),i=ra(void 0);try{return t()}finally{Wn(r),ra(i)}}function co(){return na()!==void 0||Un()!=null}var lo=1;function uo(e){return Array.isArray(e)&&typeof e[lo]==`object`}function fo(e){return Array.isArray(e)&&e[lo]===!0}function po(e){return!!(e.flags&4)}function mo(e){return e.componentOffset>-1}function ho(e){return(e.flags&1)==1}function go(e){return!!e.template}function _o(e){return!!(e[2]&512)}function vo(e){return(e[2]&256)==256}var yo=(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})(yo||{}),bo=`math`;function xo(e){for(;Array.isArray(e);)e=e[0];return e}function So(e,t){return xo(t[e])}function Co(e,t){return xo(t[e.index])}function wo(e,t){return e.data[t]}function To(e,t){return e[t]}function Eo(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function Do(e,t){let n=t[e];return uo(n)?n:n[0]}function Oo(e){return(e[2]&128)==128}function Pee(e){return fo(e[3])}function ko(e,t){return t==null?null:e[t]}function Ao(e){e[17]=0}function jo(e){e[2]&1024||(e[2]|=1024,Oo(e)&&Po(e))}function Fee(e,t){for(;e>0;)t=t[14],e--;return t}function Mo(e){return!!(e[2]&9216||e[24]?.dirty)}function No(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),Mo(e)&&Po(e)}function Po(e){e[10].changeDetectionScheduler?.notify(0);let t=Io(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!Oo(t)));)t=Io(t)}function Fo(e,t){if(vo(e))throw new _i(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function Iee(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function Io(e){let t=e[3];return fo(t)?t[3]:t}function Lo(e){return e[7]??=[]}function Ro(e){return e.cleanup??=[]}function Lee(e,t,n,r){let i=Lo(t);i.push(n),e.firstCreatePass&&Ro(e).push(r,i.length-1)}var zo={lFrame:ps(null),bindingsEnabled:!0,skipHydrationRootTNode:null},Bo=!1;function Ree(){return zo.lFrame.elementDepthCount}function zee(){zo.lFrame.elementDepthCount++}function Vo(){zo.lFrame.elementDepthCount--}function Ho(){return zo.bindingsEnabled}function Uo(){return zo.skipHydrationRootTNode!==null}function Wo(e){return zo.skipHydrationRootTNode===e}function Go(){zo.skipHydrationRootTNode=null}function Ko(){return zo.lFrame.lView}function qo(){return zo.lFrame.tView}function w(e){return zo.lFrame.contextLView=e,e[8]}function T(e){return zo.lFrame.contextLView=null,e}function Jo(){let e=Yo();for(;e!==null&&e.type===64;)e=e.parent;return e}function Yo(){return zo.lFrame.currentTNode}function Bee(){let e=zo.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Xo(e,t){let n=zo.lFrame;n.currentTNode=e,n.isParent=t}function Zo(){return zo.lFrame.isParent}function Qo(){zo.lFrame.isParent=!1}function $o(){return zo.lFrame.contextLView}function es(){return Bo}function ts(e){let t=Bo;return Bo=e,t}function ns(){let e=zo.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function rs(){return zo.lFrame.bindingIndex}function Vee(e){return zo.lFrame.bindingIndex=e}function is(){return zo.lFrame.bindingIndex++}function as(e){let t=zo.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function Hee(){return zo.lFrame.inI18n}function Uee(e,t){let n=zo.lFrame;n.bindingIndex=n.bindingRootIndex=e,os(t)}function Wee(){return zo.lFrame.currentDirectiveIndex}function os(e){zo.lFrame.currentDirectiveIndex=e}function Gee(e){let t=zo.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function ss(){return zo.lFrame.currentQueryIndex}function cs(e){zo.lFrame.currentQueryIndex=e}function ls(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function us(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=ls(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=zo.lFrame=fs();return r.currentTNode=t,r.lView=e,!0}function ds(e){let t=fs(),n=e[1];zo.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function fs(){let e=zo.lFrame,t=e===null?null:e.child;return t===null?ps(e):t}function ps(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 ms(){let e=zo.lFrame;return zo.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var hs=ms;function gs(){let e=ms();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 _s(e){return(zo.lFrame.contextLView=Fee(e,zo.lFrame.contextLView))[8]}function vs(){return zo.lFrame.selectedIndex}function ys(e){zo.lFrame.selectedIndex=e}function bs(){let e=zo.lFrame;return wo(e.tView,e.selectedIndex)}function E(){zo.lFrame.currentNamespace=`svg`}function xs(){Ss()}function Ss(){zo.lFrame.currentNamespace=null}function Cs(){return zo.lFrame.currentNamespace}var ws=!0;function Ts(){return ws}function Es(e){ws=e}function Ds(e,t=null,n=null,r){let i=Os(e,t,n,r);return i.resolveInjectorInitializers(),i}function Os(e,t=null,n=null,r,i=new Set){return new Xa([n||Oa,Na(e)],t||Ja(),null,i)}var ks=class e{static THROW_IF_NOT_FOUND=oa;static NULL=new Ma;static create(e,t){if(Array.isArray(e))return Ds({name:``},t,e,``);{let t=e.name??``;return Ds({name:t},e.parent,e.providers,t)}}static ɵprov=Oi({token:e,providedIn:`any`,factory:()=>ua(Aa)});static __NG_ELEMENT_ID__=-1},As=new Fi(``),js=class{static __NG_ELEMENT_ID__=Ns;static __NG_ENV_ID__=e=>e},Ms=class extends js{_lView;constructor(e){super(),this._lView=e}get destroyed(){return vo(this._lView)}onDestroy(e){let t=this._lView;return Fo(t,e),()=>Iee(t,e)}};function Ns(){return new Ms(Ko())}var Ps=new Fi(``),Fs=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new Xr(!1);debugTaskTracker=C(Ps,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new zr(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=Oi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Is=class extends Jr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,co()&&(this.destroyRef=C(js,{optional:!0})??void 0,this.pendingTasks=C(Fs,{optional:!0})??void 0)}emit(e){let t=nn(null);try{super.next(e)}finally{nn(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 fr&&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 Ls(...e){}function Rs(e){let t,n;function r(){e=Ls;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 zs(e){return queueMicrotask(()=>e()),()=>{e=Ls}}var Bs=`isAngularZone`,Vs=`isAngularZone_ID`,Hs=0,Us=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Is(!1);onMicrotaskEmpty=new Is(!1);onStable=new Is(!1);onError=new Is(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new _i(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,qs(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Bs)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new _i(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new _i(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,Ws,Ls,Ls);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)}},Ws={};function Gs(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 Ks(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Rs(()=>{e.callbackScheduled=!1,Js(e),e.isCheckStableRunning=!0,Gs(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Js(e)}function qs(e){let t=()=>{Ks(e)},n=Hs++;e._inner=e._inner.fork({name:`angular`,properties:{[Bs]:!0,[Vs]:n,[Vs+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(Qs(s))return n.invokeTask(i,a,o,s);try{return Ys(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Xs(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Ys(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!$s(s)&&t(),Xs(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Js(e),Gs(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 Js(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Ys(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Xs(e){e._nesting--,Gs(e)}var Zs=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Is;onMicrotaskEmpty=new Is;onStable=new Is;onError=new Is;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 Qs(e){return ec(e,`__ignore_ng_zone__`)}function $s(e){return ec(e,`__scheduler_tick__`)}function ec(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var tc=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},nc=new Fi(``,{factory:()=>{let e=C(Us),t=C(Ya),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(tc),n.handleError(r))})}}}),rc={provide:ka,useValue:()=>{C(tc,{optional:!0})},multi:!0};function D(e,t){let[n,r,i]=Pn(e,t?.equal),a=n;return a[tn],a.set=r,a.update=i,a.asReadonly=ic.bind(a),a}function ic(){let e=this[tn];if(e.readonlyFn===void 0){let t=()=>this();t[tn]=e,e.readonlyFn=t}return e.readonlyFn}var ac=new Fi(``,{factory:()=>oc}),oc=`ng`,sc=new Fi(``),cc=new Fi(``,{providedIn:`platform`,factory:()=>`unknown`}),lc=new Fi(``,{factory:()=>C(As).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),uc=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=dc}return e})();function dc(){return new uc(Ko(),Jo())}var fc=class{},pc=new Fi(``,{factory:()=>!0}),mc=new Fi(``),hc=(()=>{class e{static ɵprov=Oi({token:e,providedIn:`root`,factory:()=>new gc})}return e})(),gc=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}},_c=class{[tn];constructor(e){this[tn]=e}destroy(){this[tn].destroy()}};function vc(e,t){let n=t?.injector??C(ks),r=t?.manualCleanup===!0?null:n.get(js),i,a=n.get(uc,null,{optional:!0}),o=n.get(fc);return a===null?i=Cc(e,n.get(hc),o):(i=Sc(a.view,o,e),r instanceof Ms&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new _c(i)}var yc={...Bn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=ts(!1);try{Vn(this)}finally{ts(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=nn(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],nn(e)}}},bc={...yc,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(vn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},xc={...yc,consumerMarkedDirty(){this.view[2]|=8192,Po(this.view),this.notifier.notify(13)},destroy(){if(vn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function Sc(e,t,n){let r=Object.create(xc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=wc(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function Cc(e,t,n){let r=Object.create(bc);return r.fn=wc(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 wc(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function Tc(e){return typeof e==`function`&&e[tn]!==void 0}function Ec(e){return Tc(e)&&typeof e.set==`function`}var Dc=Symbol(`InputSignalNode#UNSET`),Oc={...Rn,transformFn:void 0,applyValueToInputSignal(e,t){In(e,t)}};function kc(e){return{toString:e}.toString()}var Ac=(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})(Ac||{}),jc=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function Mc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var Nc=null,Pc=(()=>{Nc=Ic;let e=()=>Ic;return e.ngInherit=!0,e})();function Fc(){return Nc}function Ic(e){return e.type.prototype.ngOnChanges&&(e.setInput=Rc),Lc}function Lc(){let e=Bc(this),t=e?.current;if(t){let n=e.previous;if(n===Da)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function Rc(e,t,n,r,i){let a=this.declaredInputs[r],o=Bc(e)||Vc(e,{previous:Da,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new jc(l&&l.currentValue,n,c===Da),Mc(e,t,i,n)}var zc=`__ngSimpleChanges__`;function Bc(e){return Object.hasOwn(e,zc)&&e[zc]||null}function Vc(e,t){return e[zc]=t}var Hc=[],Uc=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,Xc(o,a)):Xc(o,a)}var Qc=-1,$c=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 el(e){return!!(e.flags&8)}function tl(e){return!!(e.flags&16)}function nl(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function ul(e,t){let n=ll(e),r=t;for(;n>0;)r=r[14],n--;return r}var dl=!0;function fl(e){let t=dl;return dl=e,t}var pl=255,ml=5,hl=0,gl={};function _l(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,Vi)&&(r=n[Vi]),r??=n[Vi]=hl++;let i=r&pl,a=1<>ml)]|=a}function vl(e,t){let n=bl(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,yl(r.data,e),yl(t,null),yl(r.blueprint,null));let i=xl(e,t),a=e.injectorIndex;if(sl(i)){let e=cl(i),n=ul(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 yl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function bl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function xl(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=Rl(i),r===null)return Qc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Qc}function Sl(e,t,n){_l(e,t,n)}function Cl(e,t,n){if(n&8||e!==void 0)return e;Qi(t,`NodeInjector`)}function wl(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=ra(void 0);try{return i?i.get(t,r,n&8):ia(t,r,n&8)}finally{ra(a)}}return Cl(r,t,n)}function Tl(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=Ll(e,t,n,r,gl);if(i!==gl)return i}let i=El(e,t,n,r,gl);if(i!==gl)return i}return wl(t,n,r,i)}function El(e,t,n,r,i){let a=Al(n);if(typeof a==`function`){if(!us(t,e,r))return r&1?Cl(i,n,r):wl(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Qi(n);else return e}finally{hs()}}else if(typeof a==`number`){let i=null,o=bl(e,t),s=Qc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?xl(e,t):t[o+8],s===Qc||!Ml(r,!1)?o=-1:(i=t[1],o=cl(s),t=ul(s,t)));o!==-1;){let e=t[1];if(jl(a,o,e.data)){let e=Dl(o,t,n,i,r,c);if(e!==gl)return e}s=t[o+8],s!==Qc&&Ml(r,t[1].data[o+8]===c)&&jl(a,o,t)?(i=e,o=cl(s),t=ul(s,t)):o=-1}}return i}function Dl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=Ol(s,o,n,r==null?mo(s)&&dl:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?gl:kl(t,o,c,s,i)}function Ol(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&&go(e)&&e.type===n)return c}return null}function kl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof $c){let s=a;if(s.resolving)throw Zi(``);let c=fl(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?ra(s.injectImpl):null;us(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Wc(n,o[n],t)}finally{l!==null&&ra(l),fl(c),s.resolving=!1,hs()}}return a}function Al(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,Vi)?e[Vi]:void 0;return typeof t==`number`?t>=0?t&pl:Pl:t}function jl(e,t,n){let r=1<>ml)]&r)}function Ml(e,t){return!(e&2)&&!(e&1&&t)}var Nl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return Tl(this._tNode,this._lView,e,da(n),t)}};function Pl(){return new Nl(Jo(),Ko())}function Fl(e){return kc(()=>{let t=e.prototype.constructor,n=t[Bi]||Il(t),r=Object.prototype,i=Object.getPrototypeOf(e.prototype).constructor;for(;i&&i!==r;){let e=i[Bi]||Il(i);if(e&&e!==n)return e;i=Object.getPrototypeOf(i)}return e=>new e})}function Il(e){return Di(e)?()=>{let t=Il(Ei(e));return t&&t()}:ha(e)}function Ll(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!_o(o);){let e=El(a,o,n,r|2,gl);if(e!==gl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,gl,r);if(t!==gl)return t}t=Rl(o),o=o[14]}a=t}return i}function Rl(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function zl(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function Bl(){return Vl(Jo(),Ko())}function Vl(e,t){return new Hl(Co(e,t))}var Hl=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=Bl}return e})();function Ul(e){return e instanceof Hl?e.nativeElement:e}function Wl(){return this._results[Symbol.iterator]()}var Gl=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 Jr}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=_a(e);(this._changesDetected=!ga(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]=Wl};function Kl(e){return(e.flags&128)==128}var ql=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(ql||{}),Jl=new Map,Yl=0;function Xl(){return Yl++}function Zl(e){Jl.set(e[19],e)}function Ql(e){Jl.delete(e[19])}var $l=`__ngContext__`;function eu(e,t){uo(t)?(e[$l]=t[19],Zl(t)):e[$l]=t}function tu(e){return ru(e[12])}function nu(e){return ru(e[4])}function ru(e){for(;e!==null&&!fo(e);)e=e[4];return e}var iu=void 0;function au(e){iu=e}function ou(){if(iu!==void 0)return iu;if(typeof document<`u`)return document;throw new _i(210,!1)}var su=!1,cu=new Fi(``,{factory:()=>su}),lu=new WeakMap;function uu(e,t){if(typeof e!=`object`||!e)return;let n=lu.get(e);n||(n=new WeakSet,lu.set(e,n)),n.add(t)}function du(e){return(e.flags&32)==32}var fu=()=>null;function pu(e,t,n=!1){return fu(e,t,n)}function mu(e,t){let n=e.contentQueries;if(n!==null){let r=nn(null);try{for(let r=0;r|^->||--!>|)/g,Jee=`​$1​`;function Yee(e){return e.replace(Kee,e=>e.replace(qee,Jee))}function Xee(e,t){return e.createText(t)}function Zee(e,t,n){e.setValue(t,n)}function Qee(e,t){return e.createComment(Yee(t))}function wu(e,t,n){return e.createElement(t,n)}function Tu(e,t,n,r,i){e.insertBefore(t,n,r,i)}function Eu(e,t,n){e.appendChild(t,n)}function Du(e,t,n,r,i){r===null?Eu(e,t,n):Tu(e,t,n,r,i)}function Ou(e,t,n,r){e.removeChild(null,t,n,r)}function $ee(e,t,n){e.setAttribute(t,`style`,n)}function ete(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function ku(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&nl(e,t,r),i!==null&&ete(e,t,i),a!==null&&$ee(e,t,a)}function Au(e){let t=tte();return t?t.sanitize(yo.URL,e)||``:bu(e,`URL`)?yu(e):Cu(qi(e))}function tte(){let e=Ko();return e&&e[10].sanitizer}function ju(e){return e.ownerDocument.defaultView}function Mu(e){return e.ownerDocument}function nte(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 Nu=`ng-template`;function rte(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(Fu(r))return!1;o=!0}}}}}return Fu(r)||o}function Fu(e){return!(e&1)}function ote(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!==``&&!Fu(o)&&(t+=Lu(a,i),i=``),r=o,a||=!Fu(r);n++}return i!==``&&(t+=Lu(a,i)),t}function fte(e){return e.map(dte).join(`,`)}function pte(e){let t=[],n=[],r=1,i=2;for(;r!1});function Vu(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function Hu(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function gte(e){let t=Hu(e,`transition-property`),n=Hu(e,`transition-duration`),r=Hu(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 _te(e){let t=Hu(e,`animation-name`),n=Hu(e,`animation-delay`),r=Hu(e,`animation-duration`),i=Hu(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 Uu(e,t){return e!==void 0&&e.duration>t.duration}function Wu(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function Gu(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 vte(e,t){let n=getComputedStyle(e),r=_te(n),i=gte(n),a=r.duration>i.duration?r:i;Uu(t.get(e),a)||Wu(a)&&t.set(e,a)}function yte(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?vte(e,t):bte(e,t,r)}function bte(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=Gu(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}Uu(t.get(e),r)||Wu(r)&&t.set(e,r)}var Ku=new Set,xte=!1,Ste=1,qu=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function Cte(e){return e[9].get(hte,xte)}function wte(e,t,n){let r=Yu.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else Yu.set(e,{classList:t,cleanupFns:n})}function Ju(e){let t=Yu.get(e);if(t){for(let e of t.cleanupFns)e();Yu.delete(e)}Xu.delete(e)}var Yu=new WeakMap,Xu=new WeakMap,Zu=new WeakMap;function Qu(e){return e?e[14]??e:null}var $u=new WeakSet;function Tte(e,t,n){let r=Zu.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=Qu(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),$u.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 Ete(e,t,n){let r=Qu(n),i=Zu.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):Zu.set(e,[{el:t,declarationView:r}])}function ed(e){let t=e[26]??={};return t.enter??=new Map}function Dte(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 td(e){return e.composedPath?e.composedPath()[0]:e.target}function nd(e,t){let n=Xu.get(t);if(n===void 0)return!0;if(t!==td(e))return!1;let r=e.animation;if(r){let e=Gu(r);if(e!==void 0&&e+Ste{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=Oi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),cd=[0,1,2,3],ld=(()=>{class e{ngZone=C(Us);scheduler=C(fc);errorHandler=C(tc,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){C(id,{optional:!0})}execute(){let e=this.sequences.size>0;e&&Uc(Ac.AfterRenderHooksStart),this.executing=!0;for(let e of cd)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&&Uc(Ac.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),Po(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(rd.AFTER_NEXT_RENDER,e):e()}static ɵprov=Oi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),ud=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 dd(e,t){let n=t?.injector??C(ks);return od(`NgAfterNextRender`),Ate(e,n,t,!0)}function kte(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Ate(e,t,n,r){let i=t.get(sd);i.impl??=t.get(ld);let a=t.get(id,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(js),s=t.get(uc,null,{optional:!0}),c=new ud(i.impl,kte(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var fd=new Fi(``,{factory:()=>{let e=C(Ya),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function pd(e,t,n){let r=e.get(fd);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 jte(e,t){let n=e.get(fd);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Mte(e,t){let n=e.get(fd);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Nte(e){let t=e.get(fd);t.isScheduled||=(dd(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Pte(e){let t=e.get(fd);t.scheduler=Nte,t.scheduler(e)}function md(e,t){for(let[n,r]of t)pd(e,r.animateFns)}function hd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&md(r,i)}function gd(e,t,n,r){try{n.get(Aa)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&jte(n,i.enter.get(t.index).animateFns);let a=_d(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];yd(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&Ku.add(e[19]),pd(n,()=>vd(e,t,i||void 0,a,r),i||void 0)}function _d(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 vd(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&&yd(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),xd(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&Ku.delete(e[19]),i(!0)})}else e&&Ku.delete(e[19]),i(!1)}function yd(e,t,n){if(t.type&12){let r=e[t.index];if(fo(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,Ku.delete(e[19])),n(!0)})}function Sd(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;fo(i)?c=i:uo(i)&&(l=!0,i=i[0]);let u=xo(i);e===0&&r!==null?(hd(s,r,a,n),o==null?Eu(t,r,u):Tu(t,r,u,o||null,!0)):e===1&&r!==null?(hd(s,r,a,n),Tu(t,r,u,o||null,!0),Tte(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Ete(a,u,s),$u.delete(u),gd(s,a,n,e=>{if($u.has(u)){$u.delete(u);return}Ou(t,u,l,e)})):e===3&&($u.delete(u),gd(s,a,n,()=>{t.destroyNode(u)})),c!=null&&Kd(t,e,n,c,a,r,o)}}function Cd(e,t){Td(e,t),t[0]=null,t[5]=null}function wd(e,t,n,r,i,a){r[0]=i,r[5]=t,Hd(e,r,n,1,i,a)}function Td(e,t){t[10].changeDetectionScheduler?.notify(9),Hd(e,t,t[11],2,null,null)}function Ed(e){let t=e[12];if(!t)return kd(e[1],e);for(;t;){let n=null;if(uo(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)uo(t)&&kd(t[1],t),t=t[3];t===null&&(t=e),uo(t)&&kd(t[1],t),n=t&&t[4]}t=n}}function Dd(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function Od(e,t){if(vo(t))return;let n=t[11];n.destroyNode&&Hd(e,t,n,3,null,null),Ed(t)}function kd(e,t){if(vo(t))return;let n=nn(null);try{t[2]&=-129,t[2]|=256,t[24]&&vn(t[24]),jd(e,t),Ad(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&fo(t[3])){n!==t[3]&&Dd(n,t);let r=t[18];r!==null&&r.detachView(e)}Ql(t)}finally{nn(n)}}function Ad(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&&nf(e,t,27,!1),Uc(o?Ac.TemplateUpdateStart:Ac.TemplateCreateStart,i,n),n(r,i)}finally{ys(a),Uc(o?Ac.TemplateUpdateEnd:Ac.TemplateCreateEnd,i,n)}}function sf(e,t,n){mf(e,t,n),(n.flags&64)==64&&hf(e,t,n)}function cf(e,t,n=Co){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a=s&&i<=c){let o=t.data[i],s=r[e+1];af(o,n[i],s,a),l=!0}else if(i>c)break}}return o!==null&&Object.hasOwn(r.inputs,i)&&(af(r,n[o],i,a),l=!0),l}function Ef(e,t){let n=Do(t,e),r=n[1];Df(r,n);let i=n[0];i!==null&&n[6]===null&&(n[6]=pu(i,n[9])),Uc(Ac.ComponentStart);try{Of(r,n,n[8])}finally{Uc(Ac.ComponentEnd,n[8])}}function Df(e,t){for(let n=t.length;n{Po(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function Bf(e){let t=e[24]??Object.create(Vf);return t.lView=e,t}var Vf={...an,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=Io(e.lView);for(;t&&!Hf(t[1]);)t=Io(t);t&&jo(t)},consumerOnSignalRead(){this.lView[24]=this}};function Hf(e){return e.type!==2}function Uf(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 Wf=100;function Gf(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{Kf(e,t)}finally{n.end?.()}}function Kf(e,t){let n=es();try{ts(!0),Qf(e,t);let n=0;for(;Mo(e);){if(n===Wf)throw new _i(103,!1);n++,Qf(e,1)}}finally{ts(n)}}function qf(e,t,n,r){if(vo(t))return;let i=t[2];ds(t);let a=!0,o=null,s=null;Hf(e)?(s=If(t),o=pn(s)):rn()===null?(a=!1,s=Bf(t),o=pn(s)):t[24]&&=(vn(t[24]),null);try{Ao(t),Vee(e.bindingStartIndex),n!==null&&of(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Kc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&qc(t,n,0,null),Jc(t,0)}if(Yf(t),Uf(t),Jf(t,0),e.contentQueries!==null&&mu(e,t),a){let n=e.contentCheckHooks;n!==null&&Kc(t,n)}else{let n=e.contentHooks;n!==null&&qc(t,n,1),Jc(t,1)}ep(e,t);let o=e.components;o!==null&&$f(t,o,0);let s=e.viewQuery;if(s!==null&&hu(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Kc(t,n)}else{let n=e.viewHooks;n!==null&&qc(t,n,2),Jc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}Pf(t),t[2]&=-73}catch(e){throw Po(t),e}finally{s!==null&&(hn(s,o),a&&Rf(s)),gs()}}function Jf(e,t){for(let n=tu(e);n!==null;n=nu(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=ba(e,10+t);Cd(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 sp(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(op(e,n),ba(t,n))}this._attachedToViewContainer=!1}Od(this._lView[1],this._lView)}onDestroy(e){Fo(this._lView,e)}markForCheck(){tp(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){No(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,Gf(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new _i(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=_o(this._lView),t=this._lView[16];t!==null&&!e&&Dd(t,this._lView),Td(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new _i(902,!1);this._appRef=e;let t=_o(this._lView),n=this._lView[16];n!==null&&!t&&cp(n,this._lView),No(this._lView)}},up=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=dp;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 lp(Af(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function dp(){return fp(Jo(),Ko())}function fp(e,t){return e.type&4?new up(t,e,Vl(e,t)):null}function pp(e,t,n,r,i){let a=e.data[t];if(a===null)a=mp(e,t,n,r,i),Hee()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Bee();a.injectorIndex=e===null?-1:e.injectorIndex}return Xo(a,!0),a}function mp(e,t,n,r,i){let a=Yo(),o=Zo(),s=o?a:a&&a.parent,c=e.data[t]=gp(e,s,n,t,r,i);return hp(e,c,a,o),c}function hp(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 gp(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return Uo()&&(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:Cs(),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 _p(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?vp(e,n):r.push(e);e[6]=r}function vp(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,bp=()=>null;function xp(e,t){return yp(e,t)}function Sp(e,t,n){return bp(e,t,n)}var Cp=class{},wp=class{},Tp=class{destroyNode=null;static __NG_ELEMENT_ID__=()=>Ep()};function Ep(){let e=Ko(),t=Do(Jo().index,e);return(uo(t)?t:e)[11]}var Dp=(()=>{class e{static ɵprov=Oi({token:e,providedIn:`root`,factory:()=>null})}return e})();function Op(e){return e.debugInfo?.className||e.type.name||null}var kp={},Ap=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,kp,n);return r!==kp||t===kp?r:this.parentInjector.get(e,t,n)}};function jp(e,t,n){return e[t]=n}function Mp(e,t){return e[t]}function Np(e,t,n){if(n===Ru)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function Pp(e,t,n,r){let i=Np(e,t,n);return Np(e,t+1,r)||i}function Fp(e,t,n,r,i){let a=Pp(e,t,n,r);return Np(e,t+2,i)||a}function Ip(e,t,n,r,i,a){let o=Pp(e,t,n,r);return Pp(e,t+2,i,a)||o}function Lp(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&uu(i,a),tp(mo(e)?Do(e.index,t):t,5);let o=t[8],s=Rp(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=Rp(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function Rp(e,t,n,r){let i=nn(null);try{return Uc(Ac.OutputStart,t,n),n(r)!==!1}catch(t){return Cf(e,t),!1}finally{Uc(Ac.OutputEnd,t,n),nn(i)}}function zp(e,t,n,r,i,a,o,s){let c=ho(e),l=!1,u=null;if(!r&&c&&(u=Vp(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=Co(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);Bp(a)||Hp(r?t=>r(xo(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function Bp(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function Vp(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 Hp(e,t,n,r,i,a,o){let s=t.firstCreatePass?Ro(t):null,c=Lo(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function Up(e,t,n,r,i){let a=null,o=null,s=null,c=!1,l=e.directiveToIndex.get(n.type);if(typeof l==`number`?a=l:[a,o,s]=l,o!==null&&s!==null&&e.hostDirectiveOutputs&&Object.hasOwn(e.hostDirectiveOutputs,r)){let n=e.hostDirectiveOutputs[r];for(let a=0;a=o&&l<=s)c=!0,Wp(e,t,l,n[a+1],r,i);else if(l>s)break}}return Object.hasOwn(n.outputs,r)&&(c=!0,Wp(e,t,a,r,r,i)),c}function Wp(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);Hp(e.index,s,t,i,a,c,!0)}function Gp(){Kp()}function Kp(){let e=Ko(),t=qo(),n=Jo();if(t.firstCreatePass&&Qp(t,n),n.controlDirectiveIndex===-1)return;od(`NgSignalForms`);let r=e[n.controlDirectiveIndex];t.data[n.controlDirectiveIndex].controlDef.create(r,new Yp(e,t,n))}function qp(){Jp()}function Jp(){let e=Ko(),t=qo(),n=bs();if(n.controlDirectiveIndex===-1)return;let r=t.data[n.controlDirectiveIndex].controlDef,i=e[n.controlDirectiveIndex];r.update(i,new Yp(e,t,n))}var Yp=class{lView;tView;tNode;hasPassThrough;constructor(e,t,n){this.lView=e,this.tView=t,this.tNode=n,this.hasPassThrough=!!(n.flags&4096)}get customControl(){return this.tNode.customControlIndex===-1?void 0:this.lView[this.tNode.customControlIndex]}get nativeElement(){return Co(this.tNode,this.lView)}get descriptor(){return`<${this.tNode.value}>`}listenToCustomControlOutput(e,t){let n=this.tView.data[this.tNode.customControlIndex];Up(this.tNode,this.lView,n,e,Lp(this.tNode,this.lView,t))}listenToCustomControlModel(e){let t=this.tNode.flags&1024?`valueChange`:`checkedChange`,n=this.tView.data[this.tNode.customControlIndex];Up(this.tNode,this.lView,n,t,Lp(this.tNode,this.lView,e))}listenToDom(e,t){zp(this.tNode,this.tView,this.lView,void 0,this.lView[11],e,t,Lp(this.tNode,this.lView,t))}setInputOnDirectives(e,t,n){let r=this.tNode.inputs?.[e],i=this.tNode.hostDirectiveInputs?.[e];if(!r&&!i)return!1;let a=!1;if(r)for(let i of r){if(i===this.tNode.controlDirectiveIndex)continue;let r=this.lView[i],o=this.tView.data[i];(!n||n(Zp(r,o,e)))&&(af(o,r,e,t),a=!0)}if(i)for(let r=0;r0;){let e=n.shift();if(typeof e!=`function`){for(let n in e.inputs)t[e.inputs[n]]=!0;let r=Xp(e.directive);r!==null&&n.push(...r);continue}for(let r of e()){if(typeof r==`function`)continue;if(r.inputs)for(let e=0;e1){t.flags|=4096;return}$p(e,t)}function $p(e,t){for(let n=t.directiveStart;n{let r=t.hostDirectiveInputs[e],i=t.hostDirectiveOutputs[e+`Change`];if(!r||!i)return!1;for(let e=0;e=i&&a<=o)return t.flags|=n,t.customControlIndex=r,!0}}return!1};if(e(`value`,1024)||e(`checked`,2048))return}}function em(e,t){return tm(e,t)&&nm(e,t+`Change`)}function tm(e,t){return t in e.inputs}function nm(e,t){return t in e.outputs}var rm=Symbol(`BINDING`),im=new Fi(``);function am(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 ym(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&rf.SignalBased)!==0};return i&&(a.transform=i),a})}function Dm(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function Om(e,t,n){let r=t instanceof Ya?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new Ap(n,r):n}function km(e){let t=e.get(wp,null);if(t===null)throw new _i(407,!1);return{rendererFactory:t,sanitizer:e.get(Dp,null),changeDetectionScheduler:e.get(fc,null),ngReflect:!1,tracingService:e.get(id,null,{optional:!0})}}function Am(e,t,n){let r=Mm(e);return wu(t,r,r===`svg`?`svg`:r===`math`?bo:n)}function jm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new _i(905,!1)}function Mm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var Nm=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=Em(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Dm(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=fte(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){Uc(Ac.DynamicComponentStart);let s=nn(null);try{let s=this.componentDef,c=Om(s,r||this.ngModule,e),l=km(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(Op(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{nn(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=Pm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?lf(l,r,s.encapsulation,t):Am(s,l,o??null);jm(u);let d=t.get(im,null),f=Fm(u,()=>t.get(As,null)??ou());d&&d.addHost(f);let p=a?.some(Lm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(Lm)),m=Zd(null,c,null,512|$d(s),null,null,e,l,t,null,pu(u,t,!0));d&&wm&&f instanceof ShadowRoot&&Fo(m,()=>{d.removeHost(f)}),m[27]=u,ds(m);let h=null;try{let e=xm(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);ku(l,u,e),eu(u,m),sf(c,m,e),gu(c,e,m),Sm(c,e),n!==void 0&&zm(e,this.ngContentSelectors,n),h=Do(e.index,m),m[8]=h[8],Of(c,m,null)}catch(e){throw h!==null&&Ql(h),Ql(m),e}finally{Uc(Ac.DynamicComponentEnd),gs()}return new Rm(this.componentType,m,!!p)}};function Pm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:pte(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[rm].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 Lm(e){let t=e[rm].kind;return t===`input`||t===`twoWay`}var Rm=class extends Cp{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=wo(t[1],27),this.location=Vl(this._tNode,t),this.instance=Do(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new lp(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;wf(n,r[1],r,e,t),this.previousInputValues.set(e,t),tp(Do(n.index,r),1)}get injector(){return new Nl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function zm(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=Vm}return e})();function Vm(){return Gm(Jo(),Ko())}var Hm=class e extends Bm{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return Vl(this._hostTNode,this._hostLView)}get injector(){return new Nl(this._hostTNode,this._hostLView)}get parentInjector(){let e=xl(this._hostTNode,this._hostLView);if(sl(e)){let t=ul(e,this._hostLView),n=cl(e),r=t[1].data[n+8];return new Nl(r,t)}return new Nl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=Um(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=xp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,jf(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 Nm(Ui(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(Ya,null);e&&(i=e)}let d=Ui(l.componentType??{}),f=xp(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,jf(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(Pee(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 ip(o,i,a,r),t.attachToViewContainerRef(),ya(Wm(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=Um(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=op(this._lContainer,t);n&&(ba(Wm(this._lContainer),t),Od(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=op(this._lContainer,t);return n&&ba(Wm(this._lContainer),t)!=null?new lp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function Um(e){return e[8]}function Wm(e){return e[8]||=[]}function Gm(e,t){let n,r=t[e.index];return fo(r)?n=r:(n=np(r,t,null,e),t[e.index]=n,tf(t,n)),qm(n,t,e,r),new Hm(n,e,t)}function Km(e,t){let n=e[11],r=n.createComment(``),i=Co(t,e);return Tu(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var qm=Xm,Jm=()=>!1;function Ym(e,t,n){return Jm(e,t,n)}function Xm(e,t,n,r){if(e[7])return;let i;i=n.type&8?xo(r):Km(t,n),e[7]=i}var Zm=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},Qm=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 fh(e,t,n){e.queries===null&&(e.queries=new eh),e.queries.track(new th(t,n))}function ph(e,t){return e.queries.getByIndex(t)}function mh(e,t){let n=e[1],r=ph(n,t);return r.crossesNgTemplate?sh(n,e,t,[]):oh(n,e,r,t)}function hh(e,t,n){let r,i=wn(()=>{r._dirtyCounter();let n=yh(r,e);if(t&&n===void 0)throw new _i(-951,!1);return n});return r=i[tn],r._dirtyCounter=D(0),r._flatValue=void 0,i}function gh(e){return hh(!0,!1,e)}function _h(e){return hh(!0,!0,e)}function vh(e,t){let n=e[tn];n._lView=Ko(),n._queryIndex=t,n._queryList=ch(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function yh(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:Oa;let i=ch(n,r),a=mh(n,r);return i.reset(a,Ul),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function bh(e){return!!e&&typeof e.then==`function`}function xh(e){return!!e&&typeof e.subscribe==`function`}var Sh=class{},Ch=class extends Sh{injector;instance=null;constructor(e){super();let t=new Xa([...e.providers,{provide:Sh,useValue:this}],e.parent||Ja(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function wh(e,t,n=null){return new Ch({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var Th=(()=>{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=Pa(!1,e.type),n=t.length>0?wh([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=Oi({token:e,providedIn:`environment`,factory:()=>new e(ua(Ya))})}return e})();function k(e){return kc(()=>{let t=jh(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==ql.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(Th).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||_u.Emulated,styles:e.styles||Oa,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&od(`NgStandalone`),Mh(n);let r=e.dependencies;return n.directiveDefs=Nh(r,Eh),n.pipeDefs=Nh(r,Gi),n.id=Ph(n),n})}function Eh(e){return Ui(e)||Wi(e)}function Dh(e,t){if(e==null)return Da;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=rf.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function Oh(e){if(e==null)return Da;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function kh(e){return kc(()=>{let t=jh(e);return Mh(t),t})}function Ah(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 jh(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||Da,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||Oa,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Dh(e.inputs,t),outputs:Oh(e.outputs),debugInfo:null}}function Mh(e){e.features?.forEach(t=>t(e))}function Nh(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 Ph(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 Fh=new Fi(``),Ih=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=C(Fh,{optional:!0})??[];injector=C(ks);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=so(this.injector,t);if(bh(n))e.push(n);else if(xh(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=zl({token:e,factory:e.ɵfac})}return e})();function Lh(e){return t=>{t.controlDef={create:(e,t)=>{e?.ɵngControlCreate(t)},update:(e,t)=>{e?.ɵngControlUpdate?.(t)},passThroughInput:e}}}function Rh(e){return Object.getPrototypeOf(e.prototype).constructor}function zh(e){let t=Rh(e.type),n=!0,r=[e];for(;t&&t!==Function.prototype&&t!==Object.prototype;){let i,a=Object.hasOwn(t,Li)?t[Li]:void 0,o=Object.hasOwn(t,Ri)?t[Ri]:void 0;if(go(e))i=a??o;else{if(a)throw new _i(903,!1);i=o}if(i){if(n){r.push(i);let t=e;t.inputs=Hh(e.inputs),t.declaredInputs=Hh(e.declaredInputs),t.outputs=Hh(e.outputs);let n=i.hostBindings;n&&Gh(e,n);let a=i.viewQuery,o=i.contentQueries;if(a&&Uh(e,a),o&&Wh(e,o),Bh(e,i),xi(e.outputs,i.outputs),go(i)&&i.data.animation){let t=e.data;t.animation=(t.animation||[]).concat(i.data.animation)}}let t=i.features;if(t)for(let r=0;r=0;r--){let i=e[r];i.hostVars=t+=i.hostVars,i.hostAttrs=al(i.hostAttrs,n=al(n,i.hostAttrs))}}function Hh(e){return e===Da?{}:e===Oa?[]:e}function Uh(e,t){let n=e.viewQuery;e.viewQuery=n?(e,r)=>{t(e,r),n(e,r)}:t}function Wh(e,t){let n=e.contentQueries;e.contentQueries=n?(e,r,i)=>{t(e,r,i),n(e,r,i)}:t}function Gh(e,t){let n=e.hostBindings;e.hostBindings=n?(e,r)=>{t(e,r),n(e,r)}:t}function Kh(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=al(e.mergedAttrs,e.attrs);let t=e.tView=Jd(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),Xo(e,!1);let c=Xh(n,t,e,r);Ts()&&Ld(n,t,c,e),eu(c,t);let l=np(c,t,c,e);t[r+27]=l,tf(t,l),Ym(l,e,t)}function qh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=pp(t,d,4,o||null,s||null),Ho()&&sm(t,e,f,ko(t.consts,l),_f),Gc(t,f)):f=t.data[d],Kh(f,e,t,n,r,i,a,c),ho(f)&&sf(t,e,f),l!=null&&cf(e,f,u),f}function Jh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=pp(t,d,4,o||null,s||null),l!=null){let e=ko(t.consts,l);f.localNames=[];for(let t=0;t{throw new _i(600,``)})}var tg=10,ng=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=C(nc);afterRenderManager=C(sd);zonelessEnabled=C(pc);rootEffectScheduler=C(hc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Jr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=C(Fs);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(hi(e=>!e))}constructor(){C(id,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=C(Ya);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=ks.NULL){return this._injector.get(Us).run(()=>{if(Uc(Ac.BootstrapComponentStart),!this._injector.get(Ih).done)throw new _i(405,``);let r=Ui(e),i=this._injector.get(Sh),a=new Nm(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=rg(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(Qh,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),ig(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),Uc(Ac.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Uc(Ac.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(rd.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw Uc(Ac.ChangeDetectionEnd),new _i(101,!1);let e=nn(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,nn(e),this.afterTick.next(),Uc(Ac.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(wp,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++Mo(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;ig(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($h,[]).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),()=>ig(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new _i(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=zl({token:e,factory:e.ɵfac})}return e})();function rg(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function ig(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function A(e,t,n,r){let i=Ko();return Np(i,is(),t)&&(qo(),vf(bs(),i,e,t,n,r)),A}function ag(e){if(od(`NgAnimateEnter`),!qu)return ag;let t=Ko();if(Cte(t))return ag;let n=Jo(),r=t[9].get(Us);return Ote(ed(t),n,()=>og(t,n,e,r)),Pte(t[9]),md(t[9],ed(t)),ag}function og(e,t,n,r){let i=Co(t,e),a=e[11],o=Dte(n),s=[],c=!1,l=e=>{if(td(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{td(e)===i&&(nd(e,i)&&(c=!0),sg(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),wte(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(yte(i,Xu,qu),!Xu.has(i))){for(let e of o)a.removeClass(i,e);Ju(i)}})})}}function sg(e,t,n){let r=Yu.get(t);if(td(e)===t&&r&&nd(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);Ju(t)}}var cg=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 lg(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function ug(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){nn(r);let c=t.length-1;for(nn(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=lg(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=lg(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 mg,a??=pg(e,o,s,n),dg(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;)fg(e,i,n,o,t[o]),o++}else if(t!=null){nn(r);let c=t[Symbol.iterator]();nn(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=lg(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new mg,a??=pg(e,o,s,n);let u=n(o,r);if(dg(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;)fg(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 dg(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function fg(e,t,n,r,i){if(dg(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function pg(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 mg=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){od(`NgControlFlow`);let c=Ko(),l=qo();return Jh(c,l,e,t,n,r,i,ko(l.consts,a),256,o,s),hg}function hg(e,t,n,r,i,a,o,s){od(`NgControlFlow`);let c=Ko(),l=qo();return Jh(c,l,e,t,n,r,i,ko(l.consts,a),512,o,s),hg}function M(e,t){od(`NgControlFlow`);let n=Ko(),r=is(),i=n[r]===Ru?-1:n[r],a=i===-1?void 0:xg(n,27+i);if(Np(n,r,e)){let r=nn(null);try{if(a!==void 0&&ap(a,0),e!==-1){let r=27+e,i=xg(n,r),a=Eg(n[1],r),o=Sp(i,a,n);ip(i,Af(n,a,t,{dehydratedView:o}),0,jf(a,o))}}finally{nn(r)}}else if(a!==void 0){let e=rp(a,0);e!==void 0&&(e[8]=t)}}var gg=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 _g(e){return e}function vg(e,t){return t}var yg=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){od(`NgControlFlow`);let p=Ko(),m=qo(),h=c!==void 0,g=Ko(),_=new yg(h,s?o.bind(g[15][8]):o);g[27+e]=_,Jh(p,m,e+1,t,n,r,i,ko(m.consts,a),256),h&&Jh(p,m,e+2,c,l,u,d,ko(m.consts,f),512)}var bg=class extends cg{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,ip(this.lContainer,t,e,jf(this.templateTNode,n)),Sg(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,Cg(this.lContainer,e),wg(this.lContainer,e)}create(e,t){let n=xp(this.lContainer,this.templateTNode.tView.ssrId);return Af(this.hostLView,this.templateTNode,new gg(this.lContainer,t,e),{dehydratedView:n})}destroy(e){Od(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];Mte(e,r),Ku.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function Cg(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 wg(e,t){return op(e,t)}function Tg(e,t){return rp(e,t)}function Eg(e,t){return wo(e,t)}function F(e,t,n){let r=Ko();return Np(r,is(),t)&&(qo(),df(bs(),r,e,t,r[11],n)),F}function Dg(e,t,n,r,i){wf(t,e,n,i?`class`:`style`,r)}function I(e,t,n,r){let i=Ko(),a=i[1],o=e+27,s=a.firstCreatePass?xm(o,i,2,t,_f,Ho(),n,r):a.data[o];if(mo(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(Op(o),()=>(Og(e,t,i,s,r),I))}}return Og(e,t,i,s,r),I}function Og(e,t,n,r,i){if(xf(r,n,e,t,Ag),ho(r)){let e=n[1];sf(e,n,r),gu(e,r,n)}i!=null&&cf(n,r)}function L(){let e=qo(),t=Sf(Jo());return e.firstCreatePass&&Sm(e,t),Wo(t)&&Go(),Vo(),t.classesWithoutHost!=null&&el(t)&&Dg(e,t,Ko(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&tl(t)&&Dg(e,t,Ko(),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=Ko(),a=i[1],o=e+27,s=a.firstCreatePass?Cm(o,a,2,t,n,r):a.data[o];return xf(s,i,e,t,Ag),r!=null&&cf(i,s),z}function B(){return Wo(Sf(Jo()))&&Go(),Vo(),B}function kg(e,t,n,r){return z(e,t,n,r),B(),kg}var Ag=(e,t,n,r,i)=>(Es(!0),wu(t[11],r,Cs()));function jg(e,t,n){let r=Ko(),i=r[1],a=e+27,o=i.firstCreatePass?xm(a,r,8,`ng-container`,_f,Ho(),t,n):i.data[a];if(xf(o,r,e,`ng-container`,Pg),ho(o)){let e=r[1];sf(e,r,o),gu(e,o,r)}return n!=null&&cf(r,o),jg}function Mg(){let e=qo(),t=Sf(Jo());return e.firstCreatePass&&Sm(e,t),Mg}function Ng(e,t,n){return jg(e,t,n),Mg(),Ng}var Pg=(e,t,n,r,i)=>(Es(!0),Qee(t[11],``));function V(){return Ko()}function Fg(e,t,n){let r=Ko();return Np(r,is(),t)&&(qo(),ff(bs(),r,e,t,r[11],n)),Fg}var Ig=void 0;function Lg(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var Rg=[`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`]],Ig,[[`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`]],Ig,[[`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}`,Ig,Ig,Ig],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,Lg],zg=Object.create(null);function Bg(e){let t=Ug(e),n=Vg(t);if(n)return n;let r=t.split(`-`)[0];if(n=Vg(r),n)return n;if(r===`en`)return Rg;throw new _i(701,!1)}function Vg(e){if(!(e in zg)){let t=aa.ng&&aa.ng.common&&aa.ng.common.locales&&aa.ng.common.locales[e];return t!==void 0&&(zg[e]=t),t}return zg[e]}var Hg={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 Ug(e){return e.toLowerCase().replace(/_/g,`-`)}var Wg=`en-US`;function Gg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function H(e,t,n){let r=Ko(),i=qo(),a=Jo();return Kg(i,r,r[11],a,e,t,n),H}function U(e,t,n){let r=Ko(),i=qo(),a=Jo();return(a.type&3||n)&&zp(a,i,r,n,r[11],e,t,Lp(a,r,t)),U}function Kg(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=Lp(r,t,a),zp(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 n_(e){return(e&2)==2}function r_(e,t){return e&131071|t<<17}function i_(e){return e|2}function a_(e){return(e&131068)>>2}function o_(e,t){return e&-131069|t<<2}function s_(e){return(e&1)==1}function c_(e){return e|1}function l_(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=t_(o),c=a_(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||Ta(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=t_(e[s+1]);e[r+1]=e_(t,s),t!==0&&(e[t+1]=o_(e[t+1],r)),e[s+1]=r_(e[s+1],r)}else e[r+1]=e_(s,0),s!==0&&(e[s+1]=o_(e[s+1],r)),s=r}else e[r+1]=e_(c,0),s===0?s=r:e[c+1]=o_(e[c+1],r),c=r;l&&(e[r+1]=i_(e[r+1])),d_(e,u,r,!0),d_(e,u,r,!1),u_(t,u,e,r,a),o=e_(s,c),a?t.classBindings=o:t.styleBindings=o}function u_(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&Ta(a,t)>=0&&(n[r+1]=c_(n[r+1]))}function d_(e,t,n,r){let i=e[n+1],a=t===null,o=r?t_(i):a_(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];f_(n,t)&&(s=!0,e[o+1]=r?c_(i):i_(i)),o=r?t_(i):a_(i)}s&&(e[n+1]=r?i_(i):c_(i))}function f_(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?Ta(e,t)>=0:!1}var p_={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function m_(e){return e.substring(p_.key,p_.keyEnd)}function h_(e){return __(e),g_(e,v_(e,0,p_.textEnd))}function g_(e,t){let n=p_.textEnd;return n===t?-1:(t=p_.keyEnd=y_(e,p_.key=t,n),v_(e,t,n))}function __(e){p_.key=0,p_.keyEnd=0,p_.value=0,p_.valueEnd=0,p_.textEnd=e.length}function v_(e,t,n){for(;t32;)t++;return t}function b_(e,t,n){return C_(e,t,n,!1),b_}function G(e,t){return C_(e,t,null,!0),G}function x_(e){w_(Ite,S_,e,!0)}function S_(e,t){for(let n=h_(t);n>=0;n=g_(t,n))Ca(e,m_(t),!0)}function C_(e,t,n,r){let i=Ko(),a=qo(),o=as(2);if(a.firstUpdatePass&&E_(a,e,o,r),t!==Ru&&Np(i,o,t)){let s=a.data[vs()];N_(a,s,i,i[11],e,i[o+1]=Rte(t,n),r,o)}}function w_(e,t,n,r){let i=qo(),a=as(2);i.firstUpdatePass&&E_(i,null,a,r);let o=Ko();if(n!==Ru&&Np(o,a,n)){let s=i.data[vs()];if(I_(s,r)&&!T_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=Ci(e,n||``)),Dg(i,s,o,n,r)}else Lte(i,s,o,o[11],o[a+1],o[a+1]=Fte(e,t,n),r,a)}}function T_(e,t){return t>=e.expandoStartIndex}function E_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[vs()],o=T_(e,n);I_(a,r)&&t===null&&!o&&(t=!1),t=D_(i,a,t,r),l_(i,a,t,n,o,r)}}function D_(e,t,n,r){let i=Gee(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=j_(null,e,t,n,r),n=M_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=j_(i,e,t,n,r),a===null){let n=O_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=j_(null,e,t,n[1],r),n=M_(n,t.attrs,r),k_(e,t,r,n))}else a=A_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function O_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(a_(r)!==0)return e[t_(r)]}function k_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[t_(i)]=r}function A_(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===Ru&&(u=l?Oa:void 0);let d=l?wa(u,r):c===r?u:void 0;if(a&&!F_(d)&&(d=wa(t,r)),F_(d)&&(s=d,o))return s;let f=e[i+1];i=o?t_(f):a_(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=wa(e,r))}return s}function F_(e){return e!==void 0}function Rte(e,t){return e==null||e===``||(typeof t==`string`?e=yu(e)+t:typeof e==`object`&&(e=Si(yu(e)))),e}function I_(e,t){return!!(e.flags&(t?8:16))}function K(e,t=``){let n=Ko(),r=qo(),i=e+27,a=r.firstCreatePass?pp(r,i,1,t,null):r.data[i],o=zte(r,n,a,t);n[i]=o,Ts()&&Ld(r,n,o,a),Xo(a,!1)}var zte=(e,t,n,r)=>(Es(!0),Xee(t[11],r));function L_(e,t,n,r=``){return Np(e,is(),n)?t+qi(n)+r:Ru}function Bte(e,t,n,r,i,a=``){let o=Pp(e,rs(),n,i);return as(2),o?t+qi(n)+r+qi(i)+a:Ru}function Vte(e,t,n,r,i,a,o,s=``){let c=Fp(e,rs(),n,i,o);return as(3),c?t+qi(n)+r+qi(i)+a+qi(o)+s:Ru}function Hte(e,t,n,r,i,a,o,s,c,l=``){let u=Ip(e,rs(),n,i,o,c);return as(4),u?t+qi(n)+r+qi(i)+a+qi(o)+s+qi(c)+l:Ru}function q(e){return J(``,e),q}function J(e,t,n){let r=Ko(),i=L_(r,e,t,n);return i!==Ru&&B_(r,vs(),i),J}function Y(e,t,n,r,i){let a=Ko(),o=Bte(a,e,t,n,r,i);return o!==Ru&&B_(a,vs(),o),Y}function R_(e,t,n,r,i,a,o){let s=Ko(),c=Vte(s,e,t,n,r,i,a,o);return c!==Ru&&B_(s,vs(),c),R_}function z_(e,t,n,r,i,a,o,s,c){let l=Ko(),u=Hte(l,e,t,n,r,i,a,o,s,c);return u!==Ru&&B_(l,vs(),u),z_}function B_(e,t,n){let r=So(t,e);Zee(e[11],r,n)}function V_(e,t,n){Ec(t)&&(t=t());let r=Ko();return Np(r,is(),t)&&(qo(),df(bs(),r,e,t,r[11],n)),V_}function H_(e,t){let n=Ec(e);return n&&e.set(t),n}function U_(e,t){let n=Ko(),r=qo(),i=Jo();return Kg(r,n,n[11],i,e,t),U_}var W_={};function G_(e){od(`NgLet`);let t=qo(),n=Ko(),r=e+27;return Xo(pp(t,r,128,null,null),!1),Eo(t,n,r,W_),G_}function K_(e){return Eo(qo(),Ko(),vs(),e),e}function q_(e){let t=To($o(),27+e);if(t===W_)throw new _i(314,!1);return t}function J_(e,t,n=``){return L_(Ko(),e,t,n)}function Y_(e,t,n){let r=qo();r.firstCreatePass&&X_(t,r.data,r.blueprint,go(e),n)}function X_(e,t,n,r,i){if(e=Ei(e),Array.isArray(e))for(let a=0;a>20;if(Ha(e)||!e.multi){let r=new $c(l,i,om,null),p=$_(c,t,i?u:u+f,d);p===-1?(Sl(vl(s,o),a,c),Z_(a,e,t.length),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(r),o.push(r)):(n[p]=r,o[p]=r)}else{let p=$_(c,t,u+f,d),m=$_(c,t,u,u+f),h=p>=0&&n[p],g=m>=0&&n[m];if(i&&!g||!i&&!h){Sl(vl(s,o),a,c);let u=Gte(i?Wte:Ute,n.length,i,r,l,e);!i&&g&&(n[m].providerFactory=u),Z_(a,e,t.length,0),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(u),o.push(u)}else{let t=Q_(n[i?m:p],l,!i&&r);Z_(a,e,p>-1?p:m,t)}!i&&r&&g&&n[m].componentProviders++}}}function Z_(e,t,n,r){let i=Ha(t),a=Ua(t);if(i||a){let o=(a?Ei(t.useClass):t).prototype.ngOnDestroy;if(o){let a=e.destroyHooks||=[];if(!i&&t.multi){let e=a.indexOf(n);e===-1?a.push(n,[r,o]):a[e+1].push(r,o)}else a.push(n,o)}}}function Q_(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function $_(e,t,n,r){for(let i=n;i{n.providersResolver=(t,n)=>Y_(t,n?n(e):e,!1),t&&(n.viewProvidersResolver=(e,n)=>Y_(e,n?n(t):t,!0))}}function nv(e,t){let n=ns()+e,r=Ko();return r[n]===Ru?jp(r,n,t()):Mp(r,n)}function rv(e,t,n){return ov(Ko(),ns(),e,t,n)}function iv(e,t,n,r){return sv(Ko(),ns(),e,t,n,r)}function Kte(e,t,n,r,i){return qte(Ko(),ns(),e,t,n,r,i)}function av(e,t){let n=e[t];return n===Ru?void 0:n}function ov(e,t,n,r,i,a){let o=t+n;return Np(e,o,i)?jp(e,o+1,a?r.call(a,i):r(i)):av(e,o+1)}function sv(e,t,n,r,i,a,o){let s=t+n;return Pp(e,s,i,a)?jp(e,s+2,o?r.call(o,i,a):r(i,a)):av(e,s+2)}function qte(e,t,n,r,i,a,o,s){let c=t+n;return Fp(e,c,i,a,o)?jp(e,c+3,s?r.call(s,i,a,o):r(i,a,o)):av(e,c+3)}function cv(e,t){let n=qo(),r,i=e+27;n.firstCreatePass?(r=Jte(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=ha(r.type,!0)),o=ra(om);try{let e=fl(!1),t=a();return fl(e),Eo(n,Ko(),i,t),t}finally{ra(o)}}function Jte(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function lv(e,t,n){let r=e+27,i=Ko(),a=To(i,r);return dv(i,r)?ov(i,ns(),t,a.transform,n,a):a.transform(n)}function uv(e,t,n,r){let i=e+27,a=Ko(),o=To(a,i);return dv(a,i)?sv(a,ns(),t,o.transform,n,r,o):o.transform(n,r)}function dv(e,t){return e[1].data[t].pure}function fv(e,t){return fp(e,t)}var Yte=(()=>{class e{applicationErrorHandler=C(nc);appRef=C(ng);taskService=C(Fs);ngZone=C(Us);zonelessEnabled=C(pc);tracing=C(id,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new fr;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Vs):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(C(mc,{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?zs:Rs;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=zl({token:e,factory:e.ɵfac})}return e})();function Xte(){return[{provide:fc,useExisting:Yte},{provide:Us,useClass:Zs},{provide:pc,useValue:!0}]}function Zte(){return typeof $localize<`u`&&$localize.locale||`en-US`}var pv=new Fi(``,{factory:()=>C(pv,{optional:!0,skipSelf:!0})||Zte()}),mv=class{destroyed=!1;listeners=null;errorHandler=C(tc,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=C(js);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new _i(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(yi(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=nn(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&&Qte(this.listeners)),nn(t),this.isEmitting=!1}}};function Qte(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function X(e,t){return wn(e,t?.equal)}function Z(e){return Zn(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var $te=e=>e;function Q(e,t){return typeof e==`function`?hv(qn(e,$te,t?.equal),t?.debugName,t?.set):hv(qn(e.source,e.computation,e.equal),e.debugName,e.set)}function hv(e,t,n){let r=e[tn],i=e;if(n!==void 0){let t=e=>Jn(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Z(e)),t)}else i.set=e=>Jn(r,e),i.update=e=>Yn(r,e);return i.asReadonly=ic.bind(e),i}var gv=!1;function ene(){return gv}function _v(e){gv=e}function vv(e,t){let n=Object.create(Oc);n.value=e,n.transformFn=t?.transform;function r(){if(on(n),n.value===Dc)throw new _i(-950,null);return n.value}return r[tn]=n,r}function yv(e){return new mv}function bv(e,t){return vv(e,t)}function tne(e){return vv(Dc,e)}var $=(bv.required=tne,bv);function xv(e,t){let n=Object.create(Oc),r=new mv;n.value=e;function i(){return on(n),Sv(n.value),n.value}return i[tn]=n,i.asReadonly=ic.bind(i),i.set=e=>{n.equal(n.value,e)||(In(n,e),r.emit(e))},i.update=e=>{Sv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function Sv(e){if(e===Dc)throw new _i(952,!1)}function Cv(e,t){return xv(e,t)}function nne(e){return xv(Dc,e)}var wv=(Cv.required=nne,Cv);function Tv(e,t){return gh(t)}function rne(e,t){return _h(t)}var Ev=(Tv.required=rne,Tv),ine=(()=>{class e{static __NG_ELEMENT_ID__=ane}return e})();function ane(e){return one(Jo(),Ko(),(e&16)==16)}function one(e,t,n){if(mo(e)&&!n){let n=Do(e.index,t);return new lp(n,n)}if(e.type&175){let e=t[15];return new lp(e,t)}return null}var Dv=new Fi(``),sne=new Fi(``);function Ov(e){return!e.moduleRef}function cne(e){let t=Ov(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Us);return n.run(()=>{Ov(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(nc),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),Ov(e)){let n=()=>t.destroy(),r=e.platformInjector.get(Dv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(Dv);n.add(t),e.moduleRef.onDestroy(()=>{ig(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return une(r,n,()=>{let n=t.get(Fs),r=n.add(),i=t.get(Ih);return i.runInitializers(),i.donePromise.then(()=>{if(Gg(t.get(pv,Wg)||`en-US`),!t.get(sne,!0))return Ov(e)?t.get(ng):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Ov(e)){let n=t.get(ng);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return lne?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var lne;function une(e,t,n){try{let r=n();return bh(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var kv=null;function dne(e=[],t){return ks.create({name:t,providers:[{provide:Wa,useValue:`platform`},{provide:Dv,useValue:new Set([()=>kv=null])},...e]})}function fne(e=[]){if(kv)return kv;let t=dne(e);return kv=t,eg(),pne(t),t}function pne(e){let t=e.get(sc,null);so(e,()=>{t?.forEach(e=>e())})}function mne(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;Uc(Ac.BootstrapApplicationStart);try{let e=i?.injector??fne(r);return cne({r3Injector:new Ch({providers:[Xte(),rc,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{Uc(Ac.BootstrapApplicationEnd)}}function Av(e){return typeof e==`boolean`?e:e!=null&&e!==`false`}var jv=Symbol(`NOT_SET`),Mv=new Set,hne={...Rn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:jv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(on(r),r.value),r.signal[tn]=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??Mv)t()}finally{vn(e)}}};function Nv(e,t){let n=t?.injector??C(ks),r=n.get(fc),i=n.get(sd),a=n.get(id,null,{optional:!0});i.impl??=n.get(ld);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(uc,null,{optional:!0}),c=new gne(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var Pv=null;function Fv(){return Pv}function _ne(e){Pv??=e}var vne=class{},Iv=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(Iv||{}),Lv=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(Lv||{}),Rv=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(Rv||{}),zv={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 yne(e){return Bg(e)[Hg.LocaleId]}function bne(e,t,n){let r=Bg(e);return Gv(Gv([r[Hg.DayPeriodsFormat],r[Hg.DayPeriodsStandalone]],t),n)}function xne(e,t,n){let r=Bg(e);return Gv(Gv([r[Hg.DaysFormat],r[Hg.DaysStandalone]],t),n)}function Sne(e,t,n){let r=Bg(e);return Gv(Gv([r[Hg.MonthsFormat],r[Hg.MonthsStandalone]],t),n)}function Cne(e,t){let n=Bg(e)[Hg.Eras];return Gv(n,t)}function Bv(e,t){return Gv(Bg(e)[Hg.DateFormat],t)}function Vv(e,t){return Gv(Bg(e)[Hg.TimeFormat],t)}function Hv(e,t){let n=Bg(e)[Hg.DateTimeFormat];return Gv(n,t)}function Uv(e,t){let n=Bg(e),r=n[Hg.NumberSymbols][t];if(r===void 0){if(t===zv.CurrencyDecimal)return n[Hg.NumberSymbols][zv.Decimal];if(t===zv.CurrencyGroup)return n[Hg.NumberSymbols][zv.Group]}return r}function Wv(e){if(!e[Hg.ExtraData])throw new _i(2303,!1)}function wne(e){let t=Bg(e);return Wv(t),(t[Hg.ExtraData][2]||[]).map(e=>typeof e==`string`?Kv(e):[Kv(e[0]),Kv(e[1])])}function Tne(e,t,n){let r=Bg(e);return Wv(r),Gv(Gv([r[Hg.ExtraData][0],r[Hg.ExtraData][1]],t)||[],n)||[]}function Gv(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new _i(2304,!1)}function Kv(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var Ene=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,qv=Object.create(null),Dne=/((?:[^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]*)/,One=256;function kne(e,t,n,r){let i=uy(e);Ane(t),t=Yv(n,t)||t;let a=[],o;for(;t;)if(o=Dne.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=sy(r,s),i=ly(i,r));let c=``;return a.forEach(e=>{let t=oy(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Ane(e){if(e.length>One)throw new _i(2300,!1)}function Jv(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Yv(e,t){let n=yne(e);if(qv[n]??=Object.create(null),qv[n][t])return qv[n][t];let r=``;switch(t){case`shortDate`:r=Bv(e,Rv.Short);break;case`mediumDate`:r=Bv(e,Rv.Medium);break;case`longDate`:r=Bv(e,Rv.Long);break;case`fullDate`:r=Bv(e,Rv.Full);break;case`shortTime`:r=Vv(e,Rv.Short);break;case`mediumTime`:r=Vv(e,Rv.Medium);break;case`longTime`:r=Vv(e,Rv.Long);break;case`fullTime`:r=Vv(e,Rv.Full);break;case`short`:let t=Yv(e,`shortTime`),n=Yv(e,`shortDate`);r=Xv(Hv(e,Rv.Short),[t,n]);break;case`medium`:let i=Yv(e,`mediumTime`),a=Yv(e,`mediumDate`);r=Xv(Hv(e,Rv.Medium),[i,a]);break;case`long`:let o=Yv(e,`longTime`),s=Yv(e,`longDate`);r=Xv(Hv(e,Rv.Long),[o,s]);break;case`full`:let c=Yv(e,`fullTime`),l=Yv(e,`fullDate`);r=Xv(Hv(e,Rv.Full),[c,l])}return r&&(qv[n][t]=r),r}function Xv(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function Zv(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 jne(s,t);let c=Uv(o,zv.MinusSign);return Zv(s,t,c,r,i)}}function Mne(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 _i(2301,!1)}}function $v(e,t,n=Iv.Format,r=!1){return function(i,a){return Nne(i,a,e,t,n,r)}}function Nne(e,t,n,r,i,a){switch(n){case 2:return Sne(t,i,r)[e.getMonth()];case 1:return xne(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=wne(t),a=Tne(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?`+`:``)+Zv(o,2,a)+Zv(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+Zv(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+Zv(o,2,a)+`:`+Zv(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+Zv(o,2,a)+`:`+Zv(Math.abs(i%60),2,a);default:throw new _i(2310,!1)}}}var Pne=0,ty=4;function Fne(e){let t=Jv(e,Pne,1).getDay();return Jv(e,0,1+(t<=ty?ty:11)-t)}function ny(e){let t=e.getDay(),n=t===0?-3:ty-t;return Jv(e.getFullYear(),e.getMonth(),e.getDate()+n)}function ry(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=ny(n),t=Fne(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return Zv(i,e,Uv(r,zv.MinusSign))}}function iy(e,t=!1){return function(n,r){return Zv(ny(n).getFullYear(),e,Uv(r,zv.MinusSign),t)}}var ay=Object.create(null);function oy(e){if(ay[e])return ay[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=$v(3,Lv.Abbreviated);break;case`GGGG`:t=$v(3,Lv.Wide);break;case`GGGGG`:t=$v(3,Lv.Narrow);break;case`y`:t=Qv(0,1,0,!1,!0);break;case`yy`:t=Qv(0,2,0,!0,!0);break;case`yyy`:t=Qv(0,3,0,!1,!0);break;case`yyyy`:t=Qv(0,4,0,!1,!0);break;case`Y`:t=iy(1);break;case`YY`:t=iy(2,!0);break;case`YYY`:t=iy(3);break;case`YYYY`:t=iy(4);break;case`M`:case`L`:t=Qv(1,1,1);break;case`MM`:case`LL`:t=Qv(1,2,1);break;case`MMM`:t=$v(2,Lv.Abbreviated);break;case`MMMM`:t=$v(2,Lv.Wide);break;case`MMMMM`:t=$v(2,Lv.Narrow);break;case`LLL`:t=$v(2,Lv.Abbreviated,Iv.Standalone);break;case`LLLL`:t=$v(2,Lv.Wide,Iv.Standalone);break;case`LLLLL`:t=$v(2,Lv.Narrow,Iv.Standalone);break;case`w`:t=ry(1);break;case`ww`:t=ry(2);break;case`W`:t=ry(1,!0);break;case`d`:t=Qv(2,1);break;case`dd`:t=Qv(2,2);break;case`c`:case`cc`:t=Qv(7,1);break;case`ccc`:t=$v(1,Lv.Abbreviated,Iv.Standalone);break;case`cccc`:t=$v(1,Lv.Wide,Iv.Standalone);break;case`ccccc`:t=$v(1,Lv.Narrow,Iv.Standalone);break;case`cccccc`:t=$v(1,Lv.Short,Iv.Standalone);break;case`E`:case`EE`:case`EEE`:t=$v(1,Lv.Abbreviated);break;case`EEEE`:t=$v(1,Lv.Wide);break;case`EEEEE`:t=$v(1,Lv.Narrow);break;case`EEEEEE`:t=$v(1,Lv.Short);break;case`a`:case`aa`:case`aaa`:t=$v(0,Lv.Abbreviated);break;case`aaaa`:t=$v(0,Lv.Wide);break;case`aaaaa`:t=$v(0,Lv.Narrow);break;case`b`:case`bb`:case`bbb`:t=$v(0,Lv.Abbreviated,Iv.Standalone,!0);break;case`bbbb`:t=$v(0,Lv.Wide,Iv.Standalone,!0);break;case`bbbbb`:t=$v(0,Lv.Narrow,Iv.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=$v(0,Lv.Abbreviated,Iv.Format,!0);break;case`BBBB`:t=$v(0,Lv.Wide,Iv.Format,!0);break;case`BBBBB`:t=$v(0,Lv.Narrow,Iv.Format,!0);break;case`h`:t=Qv(3,1,-12);break;case`hh`:t=Qv(3,2,-12);break;case`H`:t=Qv(3,1);break;case`HH`:t=Qv(3,2);break;case`m`:t=Qv(4,1);break;case`mm`:t=Qv(4,2);break;case`s`:t=Qv(5,1);break;case`ss`:t=Qv(5,2);break;case`S`:t=Qv(6,1);break;case`SS`:t=Qv(6,2);break;case`SSS`:t=Qv(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=ey(0);break;case`ZZZZZ`:t=ey(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=ey(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=ey(2);break;default:return null}return ay[e]=t,t}function sy(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function cy(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function ly(e,t,n){let r=e.getTimezoneOffset();return cy(e,-1*(sy(t,r)-r))}function uy(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 Jv(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(Ene))return dy(n)}let t=new Date(e);if(!fy(t))throw new _i(2311,!1);return t}function dy(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 py=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=C(ks);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)(om(Bm))};static ɵdir=kh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[Pc]})}return e})();function my(e,t){return new _i(2100,!1)}var hy=`mediumDate`,gy=new Fi(``),_y=new Fi(``),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??hy,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return kne(t,e,i||this.locale,a)}catch(t){throw my(e,t.message)}}static ɵfac=function(t){return new(t||e)(om(pv,16),om(gy,24),om(_y,24))};static ɵpipe=Ah({name:`date`,type:e,pure:!0})}return e})(),yy=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=Ah({name:`json`,type:e,pure:!1})}return e})();function by(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 xy=`browser`,Sy=class{_doc;constructor(e){this._doc=e}manager},Cy=(()=>{class e extends Sy{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)(ua(As))};static ɵprov=Oi({token:e,factory:e.ɵfac})}return e})(),wy=new Fi(``),Ty=(()=>{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 Cy));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof Cy);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 _i(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(ua(wy),ua(Us))};static ɵprov=Oi({token:e,factory:e.ɵfac})}return e})(),Ey=`ng-app-id`;function Dy(e){for(let t of e)t.remove()}function Oy(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function ky(e,t,n,r){let i=e.head?.querySelectorAll(`style[${Ey}="${t}"],link[${Ey}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(Ey),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 Ay(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var jy=(()=>{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,ky(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,Oy);t?.forEach(e=>this.addUsage(e,this.external,Ay))}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&&(Dy(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])Dy(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,Oy(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,Ay(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)(ua(As),ua(ac),ua(lc,8),ua(cc))};static ɵprov=Oi({token:e,factory:e.ɵfac})}return e})(),My={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`},Ny=/%COMP%/g,Py=`%COMP%`,Fy=`_nghost-${Py}`,Iy=`_ngcontent-${Py}`,Ly=!0,Ry=new Fi(``,{factory:()=>Ly}),zy=new Fi(``);function By(e){return Iy.replace(Ny,e)}function Vy(e){return Fy.replace(Ny,e)}function Hy(e,t){return t.map(t=>t.replace(Ny,e))}var Uy=(()=>{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 Wy(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 Jy?n.applyToHost(e):n instanceof qy&&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 _u.Emulated:r=new Jy(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case _u.ShadowDom:return new Ky(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case _u.ExperimentalIsolatedShadowDom:return new Ky(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new qy(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)(ua(Ty),ua(im),ua(ac),ua(Ry),ua(As),ua(Us),ua(lc),ua(id,8),ua(zy,8))};static ɵprov=Oi({token:e,factory:e.ɵfac})}return e})(),Wy=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(My[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(Gy(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=Gy(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new _i(-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 _i(-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=My[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=My[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&(zu.DashCase|zu.Important)?e.style.setProperty(t,n,r&zu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&zu.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=Fv().getGlobalEventTarget(this.doc,e),!e))throw new _i(-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 Gy(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Ky=class extends Wy{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=Hy(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=Ay(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)}},qy=class extends Wy{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?Hy(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&&Ku.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Jy=class extends qy{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=By(l),this.hostAttr=Vy(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}},Yy=class e extends vne{supportsDOMEvents=!0;static makeCurrent(){_ne(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=Zy();return t==null?null:Qy(t)}resetBaseElement(){Xy=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return by(document.cookie,e)}},Xy=null;function Zy(){return Xy||=document.head.querySelector(`base`),Xy?Xy.getAttribute(`href`):null}function Qy(e){return new URL(e,document.baseURI).pathname}var $y=[`alt`,`control`,`meta`,`shift`],eb={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},tb={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},nb=(()=>{class e extends Sy{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(()=>Fv().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.`),$y.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=eb[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`),$y.forEach(t=>{if(t!==n){let n=tb[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)(ua(As))};static ɵprov=Oi({token:e,factory:e.ɵfac})}return e})();async function rb(e,t,n){return mne({rootComponent:e,...ib(t,n)})}function ib(e,t){return{platformRef:t?.platformRef,appProviders:[...lb,...e?.providers??[]],platformProviders:cb}}function ab(){Yy.makeCurrent()}function ob(){return new tc}function sb(){return au(document),document}var cb=[{provide:cc,useValue:xy},{provide:sc,useValue:ab,multi:!0},{provide:As,useFactory:sb}],lb=[{provide:Wa,useValue:`root`},{provide:tc,useFactory:ob},{provide:wy,useClass:Cy,multi:!0},{provide:wy,useClass:nb,multi:!0},Uy,{provide:im,useClass:jy},{provide:jy,useExisting:im},Ty,{provide:wp,useExisting:Uy},[]];function ub(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 mb({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 _b(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 Cb=Math.random.bind(Math),wb=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Tb(e=21){let t=``,n=e;for(;n--;)t+=wb[Cb()*64|0];return t}var Eb=6e4,Db=e=>e,Ob=Db,{clearTimeout:kb,setTimeout:Ab}=globalThis;function jb(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=Db,deserialize:s=Ob,resolver:c,bind:l=`rpc`,timeout:u=Eb,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}=Sb(),_=Tb();s.i=_;let ee;async function te(n=s){return u>=0&&(ee=Ab(()=>{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{kb(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&&(kb(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(ne),h}function Mb(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var Nb=Object.freeze({type:`object`,additionalProperties:!0});function Pb(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return Nb}return Nb}function Fb(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 Lb(e,t){return Ib(e,t)??[e]}function Rb(e){return typeof e==`string`?`'${e}'`:new Hb().serialize(e)}var zb=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Bb=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[zb.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function Vb(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})(),Ub=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Wb=[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],Gb=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Kb=[],qb=class{_data=new Jb;_hash=new Jb([...Ub]);_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)Kb[n]=e[t+n]|0;else{let e=Kb[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=Kb[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;Kb[n]=t+Kb[n-7]+i+Kb[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+Wb[n]+Kb[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=Jb.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 Yb(e){return new qb().finalize(e).toBase64()}function Xb(e){return Yb(Rb(e))}function Zb(e){return Xb(e)}function Qb(){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 $b=/^[\w+.-]{2,}:\/\//;function ex(e){return e.endsWith(`/`)?e:`${e}/`}function tx(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function nx(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?ex(n)+e.replace(/^\.?\//,``):e);return n}function rx(e,t){if(!t||t===`/`||$b.test(e))return e;let n=tx(t);return e.startsWith(n)?e:nx(n,e)}function ix(e,t){let n=e.match($b);return t+(n?e.slice(n[0].length):e)}var ax=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function ox(e=21){let t=``,n=e;for(;n--;)t+=ax[Math.random()*64|0];return t}var sx=Symbol.for(`immer-nothing`),cx=Symbol.for(`immer-draftable`),lx=Symbol.for(`immer-state`),ux=[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 dx(e,...t){{let n=ux[e],r=Fx(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var fx=Object,px=fx.getPrototypeOf,mx=`constructor`,hx=`prototype`,gx=`configurable`,_x=`enumerable`,vx=`writable`,yx=`value`,bx=e=>!!e&&!!e[lx];function xx(e){return e?wx(e)||jx(e)||!!e[cx]||!!e[mx]?.[cx]||Mx(e)||Nx(e):!1}var Sx=fx[hx][mx].toString(),Cx=new WeakMap;function wx(e){if(!e||!Px(e))return!1;let t=px(e);if(t===null||t===fx[hx])return!0;let n=fx.hasOwnProperty.call(t,mx)&&t[mx];if(n===Object)return!0;if(!Fx(n))return!1;let r=Cx.get(n);return r===void 0&&(r=Function.toString.call(n),Cx.set(n,r)),r===Sx}function Tx(e,t,n=!0){Ex(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 Ex(e){let t=e[lx];return t?t.type_:jx(e)?1:Mx(e)?2:Nx(e)?3:0}var Dx=(e,t,n=Ex(e))=>n===2?e.has(t):fx[hx].hasOwnProperty.call(e,t),Ox=(e,t,n=Ex(e))=>n===2?e.get(t):e[t],kx=(e,t,n,r=Ex(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Ax(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var jx=Array.isArray,Mx=e=>e instanceof Map,Nx=e=>e instanceof Set,Px=e=>typeof e==`object`,Fx=e=>typeof e==`function`,Ix=e=>typeof e==`boolean`;function Lx(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Rx=e=>Px(e)?e?.[lx]:null,zx=e=>e.copy_||e.base_,Bx=e=>e.modified_?e.copy_:e.base_;function Vx(e,t){if(Mx(e))return new Map(e);if(Nx(e))return new Set(e);if(jx(e))return Array[hx].slice.call(e);let n=wx(e);if(t===!0||t===`class_only`&&!n){let t=fx.getOwnPropertyDescriptors(e);delete t[lx];let n=Reflect.ownKeys(t);for(let r=0;r1&&fx.defineProperties(e,{set:Wx,add:Wx,clear:Wx,delete:Wx}),fx.freeze(e),t&&Tx(e,(e,t)=>{Hx(t,!0)},!1),e)}function Ux(){dx(2)}var Wx={[yx]:Ux};function Gx(e){return e===null||!Px(e)||fx.isFrozen(e)}var Kx=`MapSet`,qx=`Patches`,Jx=`ArrayMethods`,Yx={};function Xx(e){let t=Yx[e];return t||dx(0,e),t}var Zx=e=>!!Yx[e];function Qx(e,t){Yx[e]||(Yx[e]=t)}var $x,eS=()=>$x,tS=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Zx(Kx)?Xx(Kx):void 0,arrayMethodsPlugin_:Zx(Jx)?Xx(Jx):void 0});function nS(e,t){t&&(e.patchPlugin_=Xx(qx),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function rS(e){iS(e),e.drafts_.forEach(oS),e.drafts_=null}function iS(e){e===$x&&($x=e.parent_)}var aS=e=>$x=tS($x,e);function oS(e){let t=e[lx];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function sS(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[lx].modified_&&(rS(t),dx(4)),xx(e)&&(e=cS(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[lx].base_,e,t)}else e=cS(t,n);return lS(t,e,!0),rS(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===sx?void 0:e}function cS(e,t){if(Gx(t))return t;let n=t[lx];if(!n)return _S(t,e.handledSet_,e);if(!dS(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);hS(n,e)}return n.copy_}function lS(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Hx(t,n)}function uS(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var dS=(e,t)=>e.scope_===t,fS=[];function pS(e,t,n,r){let i=zx(e),a=e.type_;if(r!==void 0&&Ox(i,r,a)===t){kx(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Tx(i,(e,n)=>{if(bx(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)kx(i,e,n,a)}function mS(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!dS(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Bx(i);pS(e,i.draft_??i,a,n),hS(i,r)})}function hS(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)}uS(e)}}function gS(e,t,n){let{scope_:r}=e;if(bx(n)){let i=n[lx];dS(i,r)&&i.callbacks_.push(function(){ES(e),pS(e,n,Bx(i),t)})}else xx(n)&&e.callbacks_.push(function(){let i=zx(e);e.type_===3?i.has(n)&&_S(n,r.handledSet_,r):Ox(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&_S(Ox(e.copy_,t,e.type_),r.handledSet_,r)})}function _S(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||bx(e)||t.has(e)||!xx(e)||Gx(e)?e:(t.add(e),Tx(e,(r,i)=>{if(bx(i)){let t=i[lx];dS(t,n)&&(kx(e,r,Bx(t),e.type_),uS(t))}else xx(i)&&_S(i,t,n)}),e)}function vS(e,t){let n=jx(e),r={type_:+!!n,scope_:t?t.scope_:eS(),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=yS;n&&(i=[r],a=bS);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var yS={get(e,t){if(t===lx)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=zx(e);if(!Dx(i,t,e.type_))return CS(e,i,t);let a=i[t];if(e.finalized_||!xx(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Lx(t))return a;if(a===xS(e.base_,t)||SS(e,t,a)){ES(e);let n=e.type_===1?+t:t,r=OS(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in zx(e)},ownKeys(e){return Reflect.ownKeys(zx(e))},set(e,t,n){let r=wS(zx(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=xS(zx(e),t),i=r?.[lx];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.delete(t),!0;if(Ax(n,r)&&(n!==void 0||Dx(e.base_,t,e.type_)))return!0;ES(e),TS(e)}return e.copy_[t]===n&&(n!==void 0||Dx(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),gS(e,t,n),!0)},deleteProperty(e,t){return ES(e),xS(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),TS(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=zx(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[vx]:!0,[gx]:e.type_!==1||t!==`length`,[_x]:r[_x],[yx]:n[t]}},defineProperty(){dx(11)},getPrototypeOf(e){return px(e.base_)},setPrototypeOf(){dx(12)}},bS={};for(let e in yS){let t=yS[e];bS[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}bS.deleteProperty=function(e,t){return isNaN(parseInt(t))&&dx(13),bS.set.call(this,e,t,void 0)},bS.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&dx(14),yS.set.call(this,e[0],t,n,e[0])};function xS(e,t){let n=e[lx];return(n?zx(n):e)[t]}function SS(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!xx(n)||n[lx]?!1:e.baseRefs_.has(n)}function CS(e,t,n){let r=wS(t,n);return r?yx in r?r[yx]:r.get?.call(e.draft_):void 0}function wS(e,t){if(!(t in e))return;let n=px(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=px(n)}}function TS(e){e.modified_||(e.modified_=!0,e.parent_&&TS(e.parent_))}function ES(e){e.copy_||=(e.assigned_=new Map,Vx(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var DS=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Fx(e)&&!Fx(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Fx(t)||dx(6),n!==void 0&&!Fx(n)&&dx(7);let r;if(xx(e)){let i=aS(this),a=OS(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?rS(i):iS(i)}return nS(i,n),sS(r,i)}if(!e||!Px(e)){if(r=t(e),r===void 0&&(r=e),r===sx&&(r=void 0),this.autoFreeze_&&Hx(r,!0),n){let t=[],i=[];Xx(qx).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}dx(1,e)},this.produceWithPatches=(e,t)=>{if(Fx(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]},Ix(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Ix(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Ix(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){xx(e)||dx(8),bx(e)&&(e=kS(e));let t=aS(this),n=OS(t,e,void 0);return n[lx].isManual_=!0,iS(t),n}finishDraft(e,t){let n=e&&e[lx];(!n||!n.isManual_)&&dx(9);let{scope_:r}=n;return nS(r,t),sS(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=Xx(qx).applyPatches_;return bx(e)?r(e,t):this.produce(e,e=>r(e,t))}};function OS(e,t,n,r){let[i,a]=Mx(t)?Xx(Kx).proxyMap_(t,n):Nx(t)?Xx(Kx).proxySet_(t,n):vS(t,n);return(n?.scope_??eS()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?mS(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 kS(e){return bx(e)||dx(10,e),AS(e)}function AS(e){if(!xx(e)||Gx(e))return e;let t=e[lx],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Vx(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Vx(e,!0);return Tx(n,(e,t)=>{kx(n,e,AS(t))},r),t&&(t.finalized_=!1),n}function jS(){ux.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=Rx(Ox(e,n.key_)),i=Ox(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||Dx(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=Ox(o,e,c),f=Ox(s,e,c),p=l?Dx(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===sx?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(Nx(e))return new Set(Array.from(e).map(u));let t=Object.create(px(e));for(let n in e)t[n]=u(e[n]);return Dx(e,cx)&&(t[cx]=e[cx]),t}function d(e){return bx(e)?u(e):e}Qx(qx,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var MS=new DS,NS=MS.produce,PS=MS.produceWithPatches.bind(MS),FS=MS.applyPatches.bind(MS),IS=1e3;function LS(e,t){if(e.add(t),e.size>IS){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function RS(e){let{enablePatches:t=!1}=e;t&&jS();let n=Qb(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=ox())=>{i.has(t)||(jS(),r=FS(r,e),LS(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=ox())=>{if(!i.has(a)){if(LS(i,a),t){let[t,i]=PS(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=NS(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var zS=typeof self==`object`?self:globalThis,BS=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),VS=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function HS(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=BS.has(e)?zS[e]:void 0;return n(new(r??zS.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`&&VS.has(a))return n(new zS[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function US(e){return HS(new Map,e)(0)}var WS=``,{toString:GS}={},{keys:KS}=Object;function qS(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=GS.call(e).slice(8,-1);switch(n){case`Array`:return[1,WS];case`Object`:return[2,WS];case`Date`:return[3,WS];case`RegExp`:return[4,WS];case`Map`:return[5,WS];case`Set`:return[6,WS];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function JS([e,t]){return e===0&&(t===`function`||t===`symbol`)}function YS(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]=qS(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 KS(r))(e||!JS(qS(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||!(JS(qS(n))||JS(qS(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!JS(qS(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function XS(e,t={}){let n=[];return YS(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:ZS,stringify:QS}=JSON,$S={json:!0,lossy:!0};function eC(e){return US(ZS(e))}function tC(e){return QS(XS(e,$S))}function nC(e){return US(e)}function rC(e){return tC(e)}function iC(e){return eC(e)}var aC=256,oC=class extends Error{name=`StreamClosedError`};function sC(e={}){let t=e.id??ox(),n=Math.max(0,e.replayWindow??0),r=Qb(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new oC(`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=lC(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 cC(e={}){let t=e.id??ox(),n=Math.max(1,e.highWaterMark??aC),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 lC(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 uC=128;function dC(e){return e.replace(/[^\w-]+/g,`_`).slice(0,uC)}var fC=`modulepreload`,pC=function(e,t){return new URL(e,t).href},mC={},hC=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=pC(t,n),t=s(t),t in mC)return;mC[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)})},gC=`__connection.json`,_C=`__DEVFRAME_CONNECTION__`,vC=`x-birpc-session`,yC=`__rpc-dump/index.json`,bC=`devframe:services`,xC=`devframe_otp`,SC=`devframe_auth_token`;vb.postMessage.remoteAssetsError;var CC=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>Zb(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()}},wC=xb({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 TC(e){if(e.agent&&e.jsonSerializable===!1)throw wC.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function EC(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function DC(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 OC(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 jC(e,t){let n=e.handler;if(!n){let r=await AC(e,t);if(!r.handler)throw wC.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 OC(e.name,r,t),o=await a(...n);return await kC(e.name,i,o)}}var MC=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 jC(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 wC.DF0021({name:e.name});TC(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 wC.DF0022({name:e.name});TC(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 jC(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw wC.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 NC(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 FC(t,`undefined`,r,e);return n}return i!==null&&PC(i,r,e,t),n})}function PC(e,t,n,r){if(typeof e==`bigint`)throw FC(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw FC(r,`Map`,t,n);if(e instanceof Set)throw FC(r,`Set`,t,n);if(e instanceof Date)throw FC(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw FC(r,e.constructor?.name??`class instance`,t,n)}function FC(e,t,n,r){let i=IC(n,r);return wC.DF0020({name:e||``,type:t,path:i})}function IC(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var LC=`__DEVFRAME_CONNECTION_META__`,RC=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function zC(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 BC(){return zC(_C)}function VC(){return zC(LC)}function HC(e){if(e)return e;try{let e=localStorage.getItem(RC);if(e)return e}catch{}return zC(RC)}function UC(e){globalThis[_C]=e,globalThis[LC]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&WC(e.authToken)}function WC(e){try{localStorage.setItem(RC,e)}catch{}globalThis[RC]=e;let t=BC();t&&(globalThis[_C]={...t,authToken:e})}function GC(e){let t=rx(gC,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function KC(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function qC(){let e=BC();if(e)return KC(e,HC()??e.authToken??e.connectionMeta.authToken);let t=VC();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??GC(`./`),authToken:HC(t.authToken)}}async function JC(e={}){if(e.connection){let t=KC(e.connection,HC(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return UC(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:GC(t[0]??`./`),authToken:HC(e.authToken??e.connectionMeta.authToken)};return UC(n),n}let n=qC();if(n){let t=KC(n,HC(e.authToken??n.authToken??n.connectionMeta.authToken));return UC(t),t}let r=[];for(let n of t){let t=rx(gC,n),i=GC(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:HC(e.authToken??r.authToken)};return UC(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var YC=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function XC(e=xC){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function ZC(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 QC(e=xC){let t=XC(e);return t&&ZC(e),t}async function $C(e,t={}){let n=QC(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function ew(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(bC,{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 tw(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=RS({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 nw=new Map;function rw(e=nw){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?NC(n,r??``):`s:${rC(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?iC(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function iw(){}function aw(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 ow(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 sw(e){let{onConnected:t=iw,onError:n=iw,onDisconnected:r=iw,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${SC}=${encodeURIComponent(e.authToken)}`);let s=rw(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=aw(r);if(!e)break;r=e.rest;let{event:t,data:n}=ow(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 cw(e,t){let{channel:n,rpcOptions:r={}}=t;return jb(e,{...n,timeout:-1,...r,proxify:!1})}function lw(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 YC(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new YC(`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 YC(`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 YC(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new YC(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),te=cw(a.functions,{channel:ee,rpcOptions:o});a.register({name:vb.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new YC(`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 YC(`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 uw(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 dw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=uw(n.sse,r??`./`,location);return lw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>sw({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:pw(r)?fw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function pw(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function mw(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function hw(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function gw(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function _w(e){if(e.error)throw fw(e.error);return e.output}function vw(e){return e.some(e=>e!=null)}function yw(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function bw(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?nC(e):e}function a(e,t){return i(yw(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 gw(r)?_w(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(mw(r)){if(vw(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(hw(r)){let e=Zb(n),i=r.records[e];if(i)return _w(await s(i,r.serialization));if(r.fallback)return _w(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 xw(e){let t=bw(await e.fetchJsonFromBases(yC),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 Sw=``;function Cw(e,t){return`${e}${Sw}${t}`}function ww(e){let t=new Map,n=new Map;e.client.register({name:vb.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Cw(e,n))?._push(r,i)}}),e.client.register({name:vb.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Cw(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=Cw(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(Sw);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=Cw(n,r),o=t.get(a);if(o)return o;let s=cC({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=Cw(t,r),a=n.get(i);if(a)return a;let o=sC({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 Tw(){}var Ew=new Map;function Dw(e){let t=e.url;e.authToken&&(t=`${t}?${SC}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Tw,onError:i=Tw,onDisconnected:a=Tw,definitions:o=Ew}=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=rw(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 Ow(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 ix(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function kw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Ow(n.websocket,r??`./`,location);return lw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Dw({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 Aw(e){return e.includes(`:`)}function jw(e,t){return Aw(t)?t:`${e}:${t}`}function Mw(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 Nw(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 Mw(a)}function Pw(e,t){return{global:Nw(e,t,`global`),project:Nw(e,t,`project`)}}function Fw(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(Aw(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(jw(t,n),...r)),callEvent:((n,...r)=>e.callEvent(jw(t,n),...r)),callOptional:((n,...r)=>e.callOptional(jw(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(jw(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(jw(t,n),r,i),upload:(n,r)=>e.streaming.upload(jw(t,n),r)}},settings:Pw(e,t),scope:e.scope}}function Iw(){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 Lw(e,t={}){let n=t.modelContext??Iw();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=dC(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=Mb(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:Fb(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>Rw(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 Rw(e,t,n){try{let r=Lb(n,e.args?.length);return{content:[{type:`text`,text:zw(await(await jC(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:Bw(e)}]}}}function zw(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function Bw(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 Vw(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 Hw(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Qb(),a=Array.isArray(t)?t:[t],o=await JC(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new CC({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new MC(f),m=e.webmcp===!1?void 0:Lw(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(rx(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 YC(`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=Vw(e.transport??`auto`,s);ae=se===`static`?await xw({fetchJsonFromBases:ne}):se===`sse`?dw({...oe,sseOptions:e.sseOptions}):kw({...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=>(WC(e),o={...o,authToken:e},ae.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await ae.requestTrustWithCode(e);if(!t)return!1;WC(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=tw(pe),pe.streaming=ww(pe),pe.services=ew(pe);let me=new Map;pe.scope=(e=>{if(!e)return pe;let t=me.get(e);return t||(t=Fw(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 $C(pe,{param:n}):!1;t||r||pe.isTrusted||await ge()}return le=_e().then(()=>{ue=!0},()=>{ue=!0}),s.mcp&&hC(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-DUv2cyy-.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 Uw=Hw,Ww=[`components`,`injectors`,`signals`,`ngrx`,`tanstackQuery`,`forms`,`router`,`pipes`,`http`,`analog`,`capacitor`,`errors`,`plugins`],Gw=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`];function Kw(e){return`pangular:${e}`}var qw=[`forms`,`router`,`ngrx`,`http`,`analog`,`components`,`tanstackQuery`,`plugins`],Jw={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}},Yw={"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`},Xw=[[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 Zw(e){return Xw.some(([t])=>t===e)}var Qw=/^[a-z][a-z0-9-]{0,39}$/;function $w(e,t){let n=t.plugins?.[e],r=t.inspectors.plugins&&Qw.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 eT=`pangular`,tT={mod:`Mod`,ctrl:`Ctrl`,control:`Ctrl`,meta:`Meta`,cmd:`Meta`,command:`Meta`,alt:`Alt`,option:`Alt`,opt:`Alt`,shift:`Shift`},nT=[`Mod`,`Ctrl`,`Meta`,`Alt`,`Shift`];function rT(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=tT[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[...nT.filter(e=>n.has(e)),r].join(`+`)}function iT(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 aT(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 oT=[{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`}],sT=1e4;function cT(e){return oT.filter(t=>!(`inspector`in t)||e.inspectors[t.inspector])}var lT={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`},uT=200;function dT(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<=uT?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 pT=[{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 mT(e){let t=cT(e).map(e=>({id:`tab:${e.id}`,title:`Go to ${e.label}`,group:`Go to`,keywords:`tab open`})),n=pT.filter(t=>!t.inspector||e.inspectors[t.inspector]).map(({inspector:e,...t})=>t);return[...t,...n]}function hT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function gT(e,t){return typeof e==`boolean`?e:t}var _T=100,vT=100;function yT(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,_T)}function bT(e,t){let{default:n,min:r,max:i}=Jw[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function xT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function ST(e){let t=hT(e),n=hT(t.agent),r=hT(t.inspectors),i=hT(n.tools),a=hT(t.actions),o=gT(t.actions,!0),s=hT(t.redaction),c=hT(t.limits),l=xT(Ww,e=>gT(r[e],!0));return{inspectors:l,agent:{readOnly:gT(n.readOnly,!1),tools:xT(Ww,e=>l[e]&&gT(i[e],!0)),browserTools:gT(n.browserTools,!1)},actions:xT(qw,e=>l[e]&&gT(a[e],o)),redaction:{secretNames:yT(s.secretNames),unmask:yT(s.unmask)},limits:Object.fromEntries(Object.keys(Jw).map(e=>[e,bT(c[e],e)])),popup:{hotkey:TT(hT(t.popup).hotkey)},plugins:wT(t.plugins)}}var CT=100;function wT(e){let t={};for(let[n,r]of Object.entries(hT(e)).slice(0,CT)){if(!Qw.test(n))continue;if(typeof r==`boolean`){t[n]={enabled:r,tools:!0,actions:!0};continue}let e=hT(r);r!==void 0&&Object.keys(e).length&&(t[n]={enabled:gT(e.enabled,!0),tools:gT(e.tools,!0),actions:gT(e.actions,!0)})}return t}function TT(e){return e===!1?!1:rT(e)??`Alt+Shift+P`}function ET(e){let t=e?.configs;return ST(t?.[eT])}function DT(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 OT=[`pangular:build-meta`],kT={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`},AT={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`},jT={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 MT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=Ww.filter(t=>e.inspectors[t]);n(`Inspectors off`,Ww.filter(t=>!e.inspectors[t]).map(e=>kT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>kT[e])),n(`Blocked actions`,qw.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>AT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(Jw).filter(t=>e.limits[t]!==Jw[t].default).map(t=>jT[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 NT(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 PT(e){return!e.tags.length&&!e.directives.length&&!e.text}function FT(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 IT={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 LT(e){let t=/^(\d+)\.(\d+)/.exec(e.trim());return t?`${t[1]}.${t[2]}`:e.trim()}function RT(e){let t=/^(\d+)(?:\.(\d+))?/.exec(e.trim());return t?[Number(t[1]),Number(t[2]??0)]:null}function zT(e,t){let n=RT(e),r=RT(t);return!n||!r?!1:n[0]===r[0]?n[1]>=r[1]:n[0]>r[0]}function BT(e,t){return e?.capabilities?.[t]===!1}function VT(e,t){let n=IT[e],r=`${n.subject} needs Angular ${n.since} or later`;if(!t)return`${r}; this page's Angular version is unknown.`;let i=LT(t);return zT(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 HT=`pangular-page-id`,UT=null;function WT(e){UT=e}function GT(){if(UT)return UT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(HT)||null)}catch{return null}}function KT(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 qT(e,t){return e?t?e.pages?.[t]??null:e:null}function JT(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function YT(){return{functions:[...OT]}}function XT(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function ZT(e,t,n){return XT(e,t,n).then(e=>e,()=>null)}function QT(e){return e?.connectionMeta.backend===`static`}function $T(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 eE(e=globalThis){delete e.__DEVFRAME_CONNECTION__,delete e.__DEVFRAME_CONNECTION_META__}function tE(e){return e.split(`@`)[1]??``}var nE={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},rE={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},iE=ZT,aE={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 aE[e]??e}var sE=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function cE(e,t){return await iE(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function lE(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 uE=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function dE(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(uE,(e,t)=>t??(e===`**`?``:e))}function fE(e){return ET(e?.connectionMeta)}function pE(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)?[...e]:void 0}function mE(e,t){if(!t||typeof t!=`object`)return e;let n=pE(t.secretNames),r=pE(t.unmask);return!n||!r?e:{...e,redaction:{secretNames:n,unmask:r}}}function hE(e,t){return fE(e).actions[t]}var gE={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 _E(e){return gE[e]}var vE=`https://pangular-inspector.dev/getting-started/configuration/#inspectors-and-agent-tools`;function yE(e,t){let n=gE[e];return!n||t.inspectors[n]}function bE(e,t){e&1&&(E(),kg(0,`rect`,5)(1,`rect`,6)(2,`rect`,7)(3,`rect`,8))}function xE(e,t){e&1&&(E(),kg(0,`path`,9)(1,`circle`,10)(2,`circle`,11)(3,`path`,12))}function SE(e,t){e&1&&(E(),kg(0,`path`,13)(1,`path`,14))}function CE(e,t){e&1&&(E(),kg(0,`path`,15)(1,`path`,16)(2,`path`,17))}function wE(e,t){e&1&&(E(),kg(0,`circle`,18)(1,`path`,19)(2,`circle`,20))}function TE(e,t){e&1&&(E(),kg(0,`path`,1))}function EE(e,t){e&1&&(E(),kg(0,`path`,21)(1,`path`,22)(2,`path`,23)(3,`path`,24))}function DE(e,t){e&1&&(E(),kg(0,`ellipse`,25)(1,`path`,26)(2,`path`,27))}function OE(e,t){e&1&&(E(),kg(0,`rect`,28)(1,`path`,29)(2,`path`,30)(3,`path`,31))}function kE(e,t){e&1&&(E(),kg(0,`circle`,32)(1,`path`,9)(2,`path`,33))}function AE(e,t){e&1&&(E(),kg(0,`path`,34)(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`circle`,38))}function jE(e,t){e&1&&(E(),kg(0,`circle`,39)(1,`path`,40))}function ME(e,t){e&1&&(E(),kg(0,`ellipse`,41)(1,`path`,42)(2,`path`,43)(3,`path`,44)(4,`path`,45))}function NE(e,t){e&1&&(E(),kg(0,`circle`,32)(1,`path`,46)(2,`path`,47))}function PE(e,t){e&1&&(E(),kg(0,`path`,2))}function FE(e,t){e&1&&(E(),kg(0,`path`,3))}function IE(e,t){e&1&&(E(),kg(0,`path`,4))}var LE=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,xE,4,0)(3,SE,2,0)(4,CE,3,0)(5,wE,3,0)(6,TE,1,0,`:svg:path`,1)(7,EE,4,0)(8,DE,3,0)(9,OE,4,0)(10,kE,3,0)(11,AE,5,0)(12,jE,2,0)(13,ME,5,0)(14,NE,3,0)(15,PE,1,0,`:svg:path`,2)(16,FE,1,0,`:svg:path`,3)(17,IE,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 cw(e,t){let{channel:n,rpcOptions:r={}}=t;return jb(e,{...n,timeout:-1,...r,proxify:!1})}function lw(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 YC(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new YC(`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 YC(`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 YC(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new YC(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),te=cw(a.functions,{channel:ee,rpcOptions:o});a.register({name:vb.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new YC(`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 YC(`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 uw(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 dw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=uw(n.sse,r??`./`,location);return lw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>sw({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:pw(r)?fw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function pw(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function mw(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function hw(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function gw(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function _w(e){if(e.error)throw fw(e.error);return e.output}function vw(e){return e.some(e=>e!=null)}function yw(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function bw(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?nC(e):e}function a(e,t){return i(yw(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 gw(r)?_w(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(mw(r)){if(vw(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(hw(r)){let e=Zb(n),i=r.records[e];if(i)return _w(await s(i,r.serialization));if(r.fallback)return _w(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 xw(e){let t=bw(await e.fetchJsonFromBases(yC),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 Sw=``;function Cw(e,t){return`${e}${Sw}${t}`}function ww(e){let t=new Map,n=new Map;e.client.register({name:vb.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Cw(e,n))?._push(r,i)}}),e.client.register({name:vb.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Cw(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=Cw(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(Sw);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=Cw(n,r),o=t.get(a);if(o)return o;let s=cC({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=Cw(t,r),a=n.get(i);if(a)return a;let o=sC({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 Tw(){}var Ew=new Map;function Dw(e){let t=e.url;e.authToken&&(t=`${t}?${SC}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Tw,onError:i=Tw,onDisconnected:a=Tw,definitions:o=Ew}=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=rw(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 Ow(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 ix(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function kw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Ow(n.websocket,r??`./`,location);return lw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Dw({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 Aw(e){return e.includes(`:`)}function jw(e,t){return Aw(t)?t:`${e}:${t}`}function Mw(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 Nw(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 Mw(a)}function Pw(e,t){return{global:Nw(e,t,`global`),project:Nw(e,t,`project`)}}function Fw(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(Aw(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(jw(t,n),...r)),callEvent:((n,...r)=>e.callEvent(jw(t,n),...r)),callOptional:((n,...r)=>e.callOptional(jw(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(jw(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(jw(t,n),r,i),upload:(n,r)=>e.streaming.upload(jw(t,n),r)}},settings:Pw(e,t),scope:e.scope}}function Iw(){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 Lw(e,t={}){let n=t.modelContext??Iw();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=dC(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=Mb(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:Fb(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>Rw(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 Rw(e,t,n){try{let r=Lb(n,e.args?.length);return{content:[{type:`text`,text:zw(await(await jC(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:Bw(e)}]}}}function zw(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function Bw(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 Vw(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 Hw(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Qb(),a=Array.isArray(t)?t:[t],o=await JC(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new CC({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new MC(f),m=e.webmcp===!1?void 0:Lw(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(rx(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 YC(`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=Vw(e.transport??`auto`,s);ae=se===`static`?await xw({fetchJsonFromBases:ne}):se===`sse`?dw({...oe,sseOptions:e.sseOptions}):kw({...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=>(WC(e),o={...o,authToken:e},ae.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await ae.requestTrustWithCode(e);if(!t)return!1;WC(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=tw(pe),pe.streaming=ww(pe),pe.services=ew(pe);let me=new Map;pe.scope=(e=>{if(!e)return pe;let t=me.get(e);return t||(t=Fw(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 $C(pe,{param:n}):!1;t||r||pe.isTrusted||await ge()}return le=_e().then(()=>{ue=!0},()=>{ue=!0}),s.mcp&&hC(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-CA8CCnXn.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 Uw=Hw,Ww=[`components`,`injectors`,`signals`,`ngrx`,`tanstackQuery`,`forms`,`router`,`pipes`,`http`,`analog`,`capacitor`,`errors`,`plugins`],Gw=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`];function Kw(e){return`pangular:${e}`}var qw=[`forms`,`router`,`ngrx`,`http`,`analog`,`components`,`tanstackQuery`,`plugins`],Jw={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}},Yw={"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`},Xw=[[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 Zw(e){return Xw.some(([t])=>t===e)}var Qw=/^[a-z][a-z0-9-]{0,39}$/;function $w(e,t){let n=t.plugins?.[e],r=t.inspectors.plugins&&Qw.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 eT=`pangular`,tT={mod:`Mod`,ctrl:`Ctrl`,control:`Ctrl`,meta:`Meta`,cmd:`Meta`,command:`Meta`,alt:`Alt`,option:`Alt`,opt:`Alt`,shift:`Shift`},nT=[`Mod`,`Ctrl`,`Meta`,`Alt`,`Shift`];function rT(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=tT[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[...nT.filter(e=>n.has(e)),r].join(`+`)}function iT(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 aT(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 oT=[{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`}],sT=1e4;function cT(e){return oT.filter(t=>!(`inspector`in t)||e.inspectors[t.inspector])}var lT={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`},uT=200;function dT(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<=uT?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 pT=[{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 mT(e){let t=cT(e).map(e=>({id:`tab:${e.id}`,title:`Go to ${e.label}`,group:`Go to`,keywords:`tab open`})),n=pT.filter(t=>!t.inspector||e.inspectors[t.inspector]).map(({inspector:e,...t})=>t);return[...t,...n]}function hT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function gT(e,t){return typeof e==`boolean`?e:t}var _T=100,vT=100;function yT(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,_T)}function bT(e,t){let{default:n,min:r,max:i}=Jw[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function xT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function ST(e){let t=hT(e),n=hT(t.agent),r=hT(t.inspectors),i=hT(n.tools),a=hT(t.actions),o=gT(t.actions,!0),s=hT(t.redaction),c=hT(t.limits),l=xT(Ww,e=>gT(r[e],!0));return{inspectors:l,agent:{readOnly:gT(n.readOnly,!1),tools:xT(Ww,e=>l[e]&&gT(i[e],!0)),browserTools:gT(n.browserTools,!1)},actions:xT(qw,e=>l[e]&&gT(a[e],o)),redaction:{secretNames:yT(s.secretNames),unmask:yT(s.unmask)},limits:Object.fromEntries(Object.keys(Jw).map(e=>[e,bT(c[e],e)])),popup:{hotkey:TT(hT(t.popup).hotkey)},plugins:wT(t.plugins)}}var CT=100;function wT(e){let t={};for(let[n,r]of Object.entries(hT(e)).slice(0,CT)){if(!Qw.test(n))continue;if(typeof r==`boolean`){t[n]={enabled:r,tools:!0,actions:!0};continue}let e=hT(r);r!==void 0&&Object.keys(e).length&&(t[n]={enabled:gT(e.enabled,!0),tools:gT(e.tools,!0),actions:gT(e.actions,!0)})}return t}function TT(e){return e===!1?!1:rT(e)??`Alt+Shift+P`}function ET(e){let t=e?.configs;return ST(t?.[eT])}function DT(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 OT=[`pangular:build-meta`],kT={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`},AT={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`},jT={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 MT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=Ww.filter(t=>e.inspectors[t]);n(`Inspectors off`,Ww.filter(t=>!e.inspectors[t]).map(e=>kT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>kT[e])),n(`Blocked actions`,qw.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>AT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(Jw).filter(t=>e.limits[t]!==Jw[t].default).map(t=>jT[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 NT(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 PT(e){return!e.tags.length&&!e.directives.length&&!e.text}function FT(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 IT={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 LT(e){let t=/^(\d+)\.(\d+)/.exec(e.trim());return t?`${t[1]}.${t[2]}`:e.trim()}function RT(e){let t=/^(\d+)(?:\.(\d+))?/.exec(e.trim());return t?[Number(t[1]),Number(t[2]??0)]:null}function zT(e,t){let n=RT(e),r=RT(t);return!n||!r?!1:n[0]===r[0]?n[1]>=r[1]:n[0]>r[0]}function BT(e,t){return e?.capabilities?.[t]===!1}function VT(e,t){let n=IT[e],r=`${n.subject} needs Angular ${n.since} or later`;if(!t)return`${r}; this page's Angular version is unknown.`;let i=LT(t);return zT(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 HT=/^on (viewport|interaction|hover)\b/;function UT(e){let t=e.filter(e=>!/^(prefetch|hydrate) /.test(e));return t.length>0&&t.every(e=>HT.test(e))}function WT(e,t){let n=[],r=e.since>0?Math.max(0,Math.round((t-e.since)/1e3)):0;return e.state===`error`&&n.push({kind:`failed`,text:`failed to load`,label:`failed`}),(e.state===`placeholder`||e.state===`initial`)&&r*1e3>=1e4&&n.push(UT(e.triggers)?{kind:`waiting`,text:`waiting for its trigger for ${r}s`,label:`waiting ${r}s`,seconds:r}:{kind:`stuck`,text:`on its placeholder for ${r}s`,label:`stuck ${r}s`,seconds:r}),e.hydrateNever?n.push({kind:`hydrate-never`,text:`hydrate never: the server HTML stays static`,label:`hydrate never`}):e.hydration===`dehydrated`&&n.push({kind:`dehydrated`,text:`still dehydrated`,label:`dehydrated`}),n}var GT=`pangular-page-id`,KT=null;function qT(e){KT=e}function JT(){if(KT)return KT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(GT)||null)}catch{return null}}function YT(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 XT(e,t){return e?t?e.pages?.[t]??null:e:null}function ZT(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function QT(){return{functions:[...OT]}}function $T(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function eE(e,t,n){return $T(e,t,n).then(e=>e,()=>null)}function tE(e){return e?.connectionMeta.backend===`static`}function nE(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 rE(e=globalThis){delete e.__DEVFRAME_CONNECTION__,delete e.__DEVFRAME_CONNECTION_META__}function iE(e){return e.split(`@`)[1]??``}var aE={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},oE={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},sE=eE,cE={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 lE(e){return cE[e]??e}var uE=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function dE(e,t){return await sE(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function fE(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 pE=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function mE(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(pE,(e,t)=>t??(e===`**`?``:e))}function hE(e){return ET(e?.connectionMeta)}function gE(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)?[...e]:void 0}function _E(e,t){if(!t||typeof t!=`object`)return e;let n=gE(t.secretNames),r=gE(t.unmask);return!n||!r?e:{...e,redaction:{secretNames:n,unmask:r}}}function vE(e,t){return hE(e).actions[t]}var yE={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 bE(e){return yE[e]}var xE=`https://pangular-inspector.dev/getting-started/configuration/#inspectors-and-agent-tools`;function SE(e,t){let n=yE[e];return!n||t.inspectors[n]}function CE(e,t){e&1&&(E(),kg(0,`rect`,5)(1,`rect`,6)(2,`rect`,7)(3,`rect`,8))}function wE(e,t){e&1&&(E(),kg(0,`path`,9)(1,`circle`,10)(2,`circle`,11)(3,`path`,12))}function TE(e,t){e&1&&(E(),kg(0,`path`,13)(1,`path`,14))}function EE(e,t){e&1&&(E(),kg(0,`path`,15)(1,`path`,16)(2,`path`,17))}function DE(e,t){e&1&&(E(),kg(0,`circle`,18)(1,`path`,19)(2,`circle`,20))}function OE(e,t){e&1&&(E(),kg(0,`path`,1))}function kE(e,t){e&1&&(E(),kg(0,`path`,21)(1,`path`,22)(2,`path`,23)(3,`path`,24))}function AE(e,t){e&1&&(E(),kg(0,`ellipse`,25)(1,`path`,26)(2,`path`,27))}function jE(e,t){e&1&&(E(),kg(0,`rect`,28)(1,`path`,29)(2,`path`,30)(3,`path`,31))}function ME(e,t){e&1&&(E(),kg(0,`circle`,32)(1,`path`,9)(2,`path`,33))}function NE(e,t){e&1&&(E(),kg(0,`path`,34)(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`circle`,38))}function PE(e,t){e&1&&(E(),kg(0,`circle`,39)(1,`path`,40))}function FE(e,t){e&1&&(E(),kg(0,`ellipse`,41)(1,`path`,42)(2,`path`,43)(3,`path`,44)(4,`path`,45))}function IE(e,t){e&1&&(E(),kg(0,`circle`,32)(1,`path`,46)(2,`path`,47))}function LE(e,t){e&1&&(E(),kg(0,`path`,2))}function RE(e,t){e&1&&(E(),kg(0,`path`,3))}function zE(e,t){e&1&&(E(),kg(0,`path`,4))}var BE=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,CE,4,0)(2,wE,4,0)(3,TE,2,0)(4,EE,3,0)(5,DE,3,0)(6,OE,1,0,`:svg:path`,1)(7,kE,4,0)(8,AE,3,0)(9,jE,4,0)(10,ME,3,0)(11,NE,5,0)(12,PE,2,0)(13,FE,5,0)(14,IE,3,0)(15,LE,1,0,`:svg:path`,2)(16,RE,1,0,`:svg:path`,3)(17,zE,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; -}`]})},RE=(e,t)=>t.tab,zE=(e,t)=>t.label;function BE(e,t){e&1&&K(0),e&2&&J(` `,W().meta()?.projectName,` `)}function VE(e,t){e&1&&K(0,` Project details unavailable `)}function HE(e,t){e&1&&K(0,` Loading… `)}function UE(e,t){e&1&&(K(0,` Run `),I(1,`code`),K(2,`pangular build`),L(),K(3,` again to rebuild the report. `))}function WE(e,t){e&1&&K(0,` Check that the dev server is running. `)}function GE(e,t){if(e&1){let e=V();I(0,`button`,12),H(`click`,function(){return w(e),T(W(2).loadMeta())}),K(1,`Try again`),L()}}function KE(e,t){if(e&1&&(I(0,`p`,10),j(1,UE,4,0)(2,WE,1,0),L(),j(3,GE,2,0,`button`,11)),e&2){let e=W();O(),M(e.staticReport()?1:2),O(2),M(e.staticReport()?-1:3)}}function qE(e,t){e&1&&(I(0,`li`,5)(1,`span`),K(2,`Analog`),L(),K(3),L()),e&2&&(O(3),q(t))}function JE(e,t){e&1&&(I(0,`li`)(1,`span`),K(2,`Change detection`),L(),K(3),L()),e&2&&(O(3),q(t))}function YE(e,t){if(e&1&&(I(0,`span`,19),K(1),L(),I(2,`span`,20),K(3),L()),e&2){let e=W().$implicit,t=W();O(),q(t.cards()[e.tab]?.value),O(2),q(t.cards()[e.tab]?.sub)}}function XE(e,t){e&1&&(I(0,`span`,21),K(1,`–`),L(),I(2,`span`,20),K(3,`Count unavailable`),L())}function ZE(e,t){e&1&&(R(0,`span`,22),I(1,`span`,20),K(2,`Counting…`),L())}function QE(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),K(5,`→`),L()(),I(6,`span`,18),K(7),L(),j(8,YE,4,2)(9,XE,4,0)(10,ZE,3,0),L()}if(e&2){let e,n=t.$implicit,r=t.$index,i=W().stateOf(n.tab);b_(`animation-delay`,60*r,`ms`),A(`aria-busy`,i===`loading`),O(3),F(`name`,n.tab),O(4),q(n.label),O(),M((e=i)===`ready`?8:e===`error`?9:10)}}function $E(e,t){e&1&&(I(0,`p`),K(1,`Loading…`),L())}function eD(e,t){if(e&1&&(I(0,`div`)(1,`dt`),K(2),L(),I(3,`dd`),K(4),L()()),e&2){let e=t.$implicit;O(2),q(e.label),O(2),q(e.value)}}function tD(e,t){if(e&1&&(I(0,`dl`),N(1,eD,5,2,`div`,null,zE),L()),e&2){let e=W();O(),P(e.configItems())}}function nD(e,t){e&1&&(I(0,`p`),K(1,`Defaults`),L())}var rD=[{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 iD(e){return rD.filter(t=>yE(t.tab,e))}var aD={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function oD(e){return e&&Object.hasOwn(aD,e)?aD[e]:null}var sD=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),cD={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 lD(e,t,n){return`${e} ${e===1?t:n}`}function uD(e,t){for(let n of e??[])t(n),uD(n.children,t)}function dD(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 · ${lD(t,`directive`,`directives`)}`}}function fD(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 · ${lD(t,`redirect`,`redirects`)}`}}function pD(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]=cD[e]??[e,e];return lD(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function mD(e,t){let n=e?.forms??[],r=t?n.filter(e=>tE(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 hD(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function gD(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(hD).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var _D=class e{rpc=$(null);navigate=yv();staticReport=X(()=>QT(this.rpc()));meta=D(null);redaction=D(null);config=X(()=>mE(fE(this.rpc()),this.redaction()));stats=X(()=>this.rpc()?iD(this.config()):[]);configItems=X(()=>MT(this.config()));metaState=D(`loading`);states=D({});rows=D({});injectorTree=D(null);signalGraph=D(null);formsState=D(null);httpState=D(null);pageId=GT();destroyRef=C(Ns);stopLive=[];zone=X(()=>oD(qT(this.injectorTree(),this.pageId)?.zone));liveInjectors=X(()=>{let e=qT(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return uD(e.roots,r),uD(e.environment,r),{injectors:t,providers:n}});liveSignals=X(()=>{let e=JT(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>sD.has(e.kind??``)).length:null});cards=X(()=>{let e=this.rows(),t={};if(e.components&&(t.components=dD(e.components)),e.routes&&(t.routes=fD(e.routes)),e.store&&(t.store=pD(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 · ${lD(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=gD(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`)}))}loadRedaction(e){this.redaction.set(null),!QT(e)&&XT(e,`redaction-config`).then(t=>{this.rpc()===e&&this.redaction.set(t)}).catch(()=>{})}constructor(){bc(()=>{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),this.loadRedaction(e);let n=fE(e),r=e=>yE(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)),yE(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),yE(`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),K(3,`Project`),L(),I(4,`h2`,3),j(5,BE,1,1)(6,VE,1,0)(7,HE,1,0),L(),j(8,KE,4,2),L(),I(9,`ul`,4)(10,`li`)(11,`span`),K(12,`Angular`),L(),K(13),L(),I(14,`li`)(15,`span`),K(16,`TypeScript`),L(),K(17),L(),I(18,`li`)(19,`span`),K(20,`SSR`),L(),K(21),L(),j(22,qE,4,1,`li`,5),j(23,JE,4,1,`li`),L()(),I(24,`div`,6),N(25,QE,11,6,`button`,7,RE),L(),I(27,`section`,8)(28,`h2`,9),K(29,`Configuration`),L(),j(30,$E,2,0,`p`)(31,tD,3,0,`dl`)(32,nD,2,0,`p`),L()),e&2){let e,n,r;A(`aria-busy`,t.metaState()===`loading`),O(4),G(`muted`,t.metaState()!==`ready`),O(),M((e=t.metaState())===`ready`?5:e===`error`?6:7),O(3),M(t.metaState()===`error`?8:-1),O(),G(`pending`,t.metaState()===`loading`),O(4),q(t.meta()?.angularVersion??`…`),O(4),q(t.meta()?.typescript??`…`),O(4),q(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:[LE],styles:[`[_nghost-%COMP%] { +}`]})},VE=(e,t)=>t.tab,HE=(e,t)=>t.label;function UE(e,t){e&1&&K(0),e&2&&J(` `,W().meta()?.projectName,` `)}function WE(e,t){e&1&&K(0,` Project details unavailable `)}function GE(e,t){e&1&&K(0,` Loading… `)}function KE(e,t){e&1&&(K(0,` Run `),I(1,`code`),K(2,`pangular build`),L(),K(3,` again to rebuild the report. `))}function qE(e,t){e&1&&K(0,` Check that the dev server is running. `)}function JE(e,t){if(e&1){let e=V();I(0,`button`,12),H(`click`,function(){return w(e),T(W(2).loadMeta())}),K(1,`Try again`),L()}}function YE(e,t){if(e&1&&(I(0,`p`,10),j(1,KE,4,0)(2,qE,1,0),L(),j(3,JE,2,0,`button`,11)),e&2){let e=W();O(),M(e.staticReport()?1:2),O(2),M(e.staticReport()?-1:3)}}function XE(e,t){e&1&&(I(0,`li`,5)(1,`span`),K(2,`Analog`),L(),K(3),L()),e&2&&(O(3),q(t))}function ZE(e,t){e&1&&(I(0,`li`)(1,`span`),K(2,`Change detection`),L(),K(3),L()),e&2&&(O(3),q(t))}function QE(e,t){if(e&1&&(I(0,`span`,19),K(1),L(),I(2,`span`,20),K(3),L()),e&2){let e=W().$implicit,t=W();O(),q(t.cards()[e.tab]?.value),O(2),q(t.cards()[e.tab]?.sub)}}function $E(e,t){e&1&&(I(0,`span`,21),K(1,`–`),L(),I(2,`span`,20),K(3,`Count unavailable`),L())}function eD(e,t){e&1&&(R(0,`span`,22),I(1,`span`,20),K(2,`Counting…`),L())}function tD(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),K(5,`→`),L()(),I(6,`span`,18),K(7),L(),j(8,QE,4,2)(9,$E,4,0)(10,eD,3,0),L()}if(e&2){let e,n=t.$implicit,r=t.$index,i=W().stateOf(n.tab);b_(`animation-delay`,60*r,`ms`),A(`aria-busy`,i===`loading`),O(3),F(`name`,n.tab),O(4),q(n.label),O(),M((e=i)===`ready`?8:e===`error`?9:10)}}function nD(e,t){e&1&&(I(0,`p`),K(1,`Loading…`),L())}function rD(e,t){if(e&1&&(I(0,`div`)(1,`dt`),K(2),L(),I(3,`dd`),K(4),L()()),e&2){let e=t.$implicit;O(2),q(e.label),O(2),q(e.value)}}function iD(e,t){if(e&1&&(I(0,`dl`),N(1,rD,5,2,`div`,null,HE),L()),e&2){let e=W();O(),P(e.configItems())}}function aD(e,t){e&1&&(I(0,`p`),K(1,`Defaults`),L())}var oD=[{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 oD.filter(t=>SE(t.tab,e))}var cD={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function lD(e){return e&&Object.hasOwn(cD,e)?cD[e]:null}var uD=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),dD={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 fD(e,t,n){return`${e} ${e===1?t:n}`}function pD(e,t){for(let n of e??[])t(n),pD(n.children,t)}function mD(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 · ${fD(t,`directive`,`directives`)}`}}function hD(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 · ${fD(t,`redirect`,`redirects`)}`}}function gD(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]=dD[e]??[e,e];return fD(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function _D(e,t){let n=e?.forms??[],r=t?n.filter(e=>iE(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 vD(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function yD(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(vD).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var bD=class e{rpc=$(null);navigate=yv();staticReport=X(()=>tE(this.rpc()));meta=D(null);redaction=D(null);config=X(()=>_E(hE(this.rpc()),this.redaction()));stats=X(()=>this.rpc()?sD(this.config()):[]);configItems=X(()=>MT(this.config()));metaState=D(`loading`);states=D({});rows=D({});injectorTree=D(null);signalGraph=D(null);formsState=D(null);httpState=D(null);pageId=JT();destroyRef=C(js);stopLive=[];zone=X(()=>lD(XT(this.injectorTree(),this.pageId)?.zone));liveInjectors=X(()=>{let e=XT(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return pD(e.roots,r),pD(e.environment,r),{injectors:t,providers:n}});liveSignals=X(()=>{let e=ZT(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>uD.has(e.kind??``)).length:null});cards=X(()=>{let e=this.rows(),t={};if(e.components&&(t.components=mD(e.components)),e.routes&&(t.routes=hD(e.routes)),e.store&&(t.store=gD(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 · ${fD(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=_D(i,this.pageId));let a=this.httpState();return a&&(t.network=yD(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`)}))}loadRedaction(e){this.redaction.set(null),!tE(e)&&$T(e,`redaction-config`).then(t=>{this.rpc()===e&&this.redaction.set(t)}).catch(()=>{})}constructor(){vc(()=>{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),this.loadRedaction(e);let n=hE(e),r=e=>SE(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)),SE(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),SE(`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),K(3,`Project`),L(),I(4,`h2`,3),j(5,UE,1,1)(6,WE,1,0)(7,GE,1,0),L(),j(8,YE,4,2),L(),I(9,`ul`,4)(10,`li`)(11,`span`),K(12,`Angular`),L(),K(13),L(),I(14,`li`)(15,`span`),K(16,`TypeScript`),L(),K(17),L(),I(18,`li`)(19,`span`),K(20,`SSR`),L(),K(21),L(),j(22,XE,4,1,`li`,5),j(23,ZE,4,1,`li`),L()(),I(24,`div`,6),N(25,tD,11,6,`button`,7,VE),L(),I(27,`section`,8)(28,`h2`,9),K(29,`Configuration`),L(),j(30,nD,2,0,`p`)(31,iD,3,0,`dl`)(32,aD,2,0,`p`),L()),e&2){let e,n,r;A(`aria-busy`,t.metaState()===`loading`),O(4),G(`muted`,t.metaState()!==`ready`),O(),M((e=t.metaState())===`ready`?5:e===`error`?6:7),O(3),M(t.metaState()===`error`?8:-1),O(),G(`pending`,t.metaState()===`loading`),O(4),q(t.meta()?.angularVersion??`…`),O(4),q(t.meta()?.typescript??`…`),O(4),q(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:[BE],styles:[`[_nghost-%COMP%] { display: block; max-width: 1200px; } @@ -325,7 +325,7 @@ h2.muted[_ngcontent-%COMP%] { .skeleton[_ngcontent-%COMP%] { animation: none; } -}`]})},vD=`pangular:panel-action-result`,yD=6e3,bD=0;function xD(e=window){return e.location.protocol===`chrome-extension:`&&e.parent!==e}function SD(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!==vD||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`}),yD);t.addEventListener(`message`,a),t.parent.postMessage({...e,requestId:n},t.location.origin)})}var CD=class e{available=xD();reveal(e,t){return SD({type:`pangular:reveal-element`,pageId:e,id:t})}openSource(e,t,n){return SD({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=Vl({token:e,factory:e.ɵfac})};function wD(e){let t=e?.pages;return t&&typeof t==`object`?t:{}}function TD(e){let t=C(Ns),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 bc(()=>{let t=e();t&&t!==r&&Z(()=>void a(t))}),t.onDestroy(()=>i?.()),n.asReadonly()}function ED(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 DD=[`*`];function OD(e,t){if(e&1&&(z(0,`div`,1)(1,`p`,2),K(2),B(),z(3,`p`,3),K(4),Yg(5),z(6,`a`,4),K(7,`Supported versions`),B()()()),e&2){let e=W();G(`compact`,e.compact()),O(2),q(e.title()),O(2),J(` `,t,` `),O(2),Fg(`href`,e.docsUrl,Au)}}var kD=`https://pangular-inspector.dev/getting-started/installation/#supported-angular-versions`,AD=class e{page=$(null);capability=$.required();missing=$(!1,{transform:Av});compact=$(!1,{transform:Av});docsUrl=kD;text=X(()=>{let e=this.page();return!this.missing()&&!BT(e,this.capability())?null:VT(this.capability(),e?.version)});title=X(()=>{let e=this.page()?.version;return e?`Not available on Angular ${LT(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:DD,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&&(Jg(),j(0,OD,8,5,`div`,0)),e&2){let e;M((e=t.text())?0:-1,e)}},styles:[`[_nghost-%COMP%] { +}`]})},xD=`pangular:panel-action-result`,SD=6e3,CD=0;function wD(e=window){return e.location.protocol===`chrome-extension:`&&e.parent!==e}function TD(e,t=window){let n=`pa-${Date.now().toString(36)}-${++CD}`;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!==xD||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`}),SD);t.addEventListener(`message`,a),t.parent.postMessage({...e,requestId:n},t.location.origin)})}var ED=class e{available=wD();reveal(e,t){return TD({type:`pangular:reveal-element`,pageId:e,id:t})}openSource(e,t,n){return TD({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=zl({token:e,factory:e.ɵfac})};function DD(e){let t=e?.pages;return t&&typeof t==`object`?t:{}}function OD(e){let t=C(js),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(DD(e));o(a.value()),i=a.on(`updated`,o)}catch{r===e&&n.set({})}};return vc(()=>{let t=e();t&&t!==r&&Z(()=>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 AD=[`*`];function jD(e,t){if(e&1&&(z(0,`div`,1)(1,`p`,2),K(2),B(),z(3,`p`,3),K(4),Yg(5),z(6,`a`,4),K(7,`Supported versions`),B()()()),e&2){let e=W();G(`compact`,e.compact()),O(2),q(e.title()),O(2),J(` `,t,` `),O(2),Fg(`href`,e.docsUrl,Au)}}var MD=`https://pangular-inspector.dev/getting-started/installation/#supported-angular-versions`,ND=class e{page=$(null);capability=$.required();missing=$(!1,{transform:Av});compact=$(!1,{transform:Av});docsUrl=MD;text=X(()=>{let e=this.page();return!this.missing()&&!BT(e,this.capability())?null:VT(this.capability(),e?.version)});title=X(()=>{let e=this.page()?.version;return e?`Not available on Angular ${LT(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:AD,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&&(Jg(),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 jD(e){return e?.platform===`angular-native`}function MD(e){return jD(e)||e?.platform===`nativescript`}function ND(e,t){let n=Object.values(e??{}).filter(jD);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 PD=[`trigger`],FD=[`list`],ID=(e,t)=>t.value;function LD(e,t){if(e&1&&(z(0,`span`,4),K(1),B()),e&2){let e=W();O(),q(e.current().hint)}}function RD(e,t){if(e&1&&(z(0,`span`,15),K(1),B()),e&2){let e=W().$implicit;O(),q(e.hint)}}function zD(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),kg(2,`path`,13),B(),Cs(),z(3,`span`,14),K(4),B(),j(5,RD,2,1,`span`,15),B()}if(e&2){let e=t.$implicit,n=t.$index,r=W(2);G(`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),q(e.label),O(),M(e.hint?5:-1)}}function BD(e,t){if(e&1&&(z(0,`li`,10),K(1),B()),e&2){let e=W(2);O(),q(e.emptyText())}}function VD(e,t){if(e&1&&(z(0,`ul`,8,1),ag(`list-in`),U(`pointerdown`,function(e){return e.preventDefault()}),N(2,zD,6,9,`li`,9,ID,!1,BD,2,1,`li`,10),B()),e&2){let e=W();G(`up`,e.dropUp()),A(`id`,e.uid+`-list`)(`aria-labelledby`,e.labelledBy()||e.uid+`-trigger`),O(2),P(e.options())}}var HD=0,UD=class e{options=$.required();value=wv(null);placeholder=$(`Select…`);ariaLabel=$(``);labelledBy=$(``);describedBy=$(``);disabled=$(!1);emptyText=$(`Nothing to choose`);uid=`app-select-${++HD}`;open=D(!1);active=D(-1);dropUp=D(!1);current=X(()=>this.options().find(e=>e.value===this.value())??null);host=C(Wl);injector=C(js);trigger=Ev.required(`trigger`);list=Ev(`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&&Zg(t.trigger,PD,5)(t.list,FD,5),e&2&&Qg(2)},hostAttrs:[1,`app-select`],hostVars:2,hostBindings:function(e,t){e&1&&H(`pointerdown`,function(e){return t.onOutside(e)},Mu),e&2&&G(`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),K(3),B(),j(4,LD,2,1,`span`,4),E(),z(5,`svg`,5),kg(6,`path`,6),B()(),j(7,VD,5,5,`ul`,7)),e&2&&(Fg(`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),G(`placeholder`,!t.current()),O(),J(` `,t.current()?.label??t.placeholder(),` `),O(),M(t.current()?.hint?4:-1),O(3),M(t.open()?7:-1))},styles:[`[_nghost-%COMP%] { +}`]})};function PD(e){return e?.platform===`angular-native`}function FD(e){return PD(e)||e?.platform===`nativescript`}function ID(e,t){let n=Object.values(e??{}).filter(PD);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 LD=[`trigger`],RD=[`list`],zD=(e,t)=>t.value;function BD(e,t){if(e&1&&(z(0,`span`,4),K(1),B()),e&2){let e=W();O(),q(e.current().hint)}}function VD(e,t){if(e&1&&(z(0,`span`,15),K(1),B()),e&2){let e=W().$implicit;O(),q(e.hint)}}function HD(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),kg(2,`path`,13),B(),xs(),z(3,`span`,14),K(4),B(),j(5,VD,2,1,`span`,15),B()}if(e&2){let e=t.$implicit,n=t.$index,r=W(2);G(`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),q(e.label),O(),M(e.hint?5:-1)}}function UD(e,t){if(e&1&&(z(0,`li`,10),K(1),B()),e&2){let e=W(2);O(),q(e.emptyText())}}function WD(e,t){if(e&1&&(z(0,`ul`,8,1),ag(`list-in`),U(`pointerdown`,function(e){return e.preventDefault()}),N(2,HD,6,9,`li`,9,zD,!1,UD,2,1,`li`,10),B()),e&2){let e=W();G(`up`,e.dropUp()),A(`id`,e.uid+`-list`)(`aria-labelledby`,e.labelledBy()||e.uid+`-trigger`),O(2),P(e.options())}}var GD=0,KD=class e{options=$.required();value=wv(null);placeholder=$(`Select…`);ariaLabel=$(``);labelledBy=$(``);describedBy=$(``);disabled=$(!1);emptyText=$(`Nothing to choose`);uid=`app-select-${++GD}`;open=D(!1);active=D(-1);dropUp=D(!1);current=X(()=>this.options().find(e=>e.value===this.value())??null);host=C(Hl);injector=C(ks);trigger=Ev.required(`trigger`);list=Ev(`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&&Zg(t.trigger,LD,5)(t.list,RD,5),e&2&&Qg(2)},hostAttrs:[1,`app-select`],hostVars:2,hostBindings:function(e,t){e&1&&H(`pointerdown`,function(e){return t.onOutside(e)},Mu),e&2&&G(`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),K(3),B(),j(4,BD,2,1,`span`,4),E(),z(5,`svg`,5),kg(6,`path`,6),B()(),j(7,WD,5,5,`ul`,7)),e&2&&(Fg(`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),G(`placeholder`,!t.current()),O(),J(` `,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 WD(e,t){let n=NT(t);if(PT(n))return{nodes:e,matches:0};let r=0,i=e=>e.flatMap(e=>{let t=FT(e,n);t&&r++;let a=i(e.children);return t||a.length?[{...e,children:a}]:[]});return{nodes:i(e),matches:r}}function GD(e){return e.flatMap(e=>e.kind===`directive`?GD(e.children):[{...e,children:GD(e.children)}])}function KD(e){return(e.attributes?.length?e.attributes:e.directives??[e.name]).map(e=>`[${e}]`).join(` `)}var qD={hydrated:`Hydrated`,skipped:`Skipped`,mismatched:`Mismatch`,client:`Client`};function JD(e){return qD[e]}function YD(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 XD(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 ZD(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 QD(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&&!$D(t.roots,i)?{pageId:r,selectedId:null,detailId:n,destroyed:i}:{pageId:r,selectedId:i,detailId:n,destroyed:null}}function $D(e,t){return e.some(e=>e.id===t||$D(e.children,t))}function eO(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 tO=(e,t)=>t.key,nO=(e,t)=>t.id;function rO(e,t){e&1&&(z(0,`p`,2),K(1,` The HTML came from the server, but no component was hydrated, so the app rendered again on the client. Add `),z(2,`code`),K(3,`provideClientHydration()`),B(),K(4,` and use a development build to see each component's status. `),B())}function iO(e,t){if(e&1&&(z(0,`li`)(1,`span`,9),K(2),B(),K(3),B()),e&2){let e=t.$implicit;x_(`count count-`+e.key),O(2),q(e.value),O(),J(` `,e.label,` `)}}function aO(e,t){if(e&1&&(z(0,`span`,15),K(1,`Expected `),z(2,`code`),K(3),B()()),e&2){let e=W().$implicit;O(3),q(e.expected)}}function oO(e,t){if(e&1&&(z(0,`span`,15),K(1,`Found `),z(2,`code`),K(3),B()()),e&2){let e=W().$implicit;O(3),q(e.actual)}}function sO(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),K(3),B(),z(4,`span`,14),K(5),B(),j(6,aO,4,1,`span`,15),j(7,oO,4,1,`span`,15),B()()}if(e&2){let e=t.$implicit;O(3),q(e.name),O(2),J(`<`,e.tag,`>`),O(),M(e.expected?6:-1),O(),M(e.actual?7:-1)}}function cO(e,t){if(e&1&&(z(0,`h3`,10),K(1,`Mismatches`),B(),z(2,`ul`,11),N(3,sO,8,4,`li`,null,nO),B()),e&2){let e=W(2);O(3),P(e.mismatches)}}function lO(e,t){if(e&1){let e=V();z(0,`div`,3)(1,`ul`,4),N(2,iO,4,4,`li`,5,tO),B(),z(4,`button`,6),U(`click`,function(){return w(e),T(W(2).toggleOverlay())}),E(),z(5,`svg`,7),kg(6,`rect`,8),B(),K(7,` Outline on page `),B()(),j(8,cO,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 uO(e,t){e&1&&j(0,rO,5,0,`p`,2)(1,lO,9,2),e&2&&M(+!!t.hydrated)}function dO(e,t){e&1&&(z(0,`p`,2),K(1,` This page was not rendered on the server, so there is nothing to hydrate. With server-side rendering and `),z(2,`code`),K(3,`provideClientHydration()`),B(),K(4,`, each component shows whether it was hydrated, skipped or mismatched. `),B())}var fO=class e{report=$(void 0);overlay=yv();showNode=yv();highlight=yv();overlayOn=Q(()=>this.report()?.overlay===!0);counts=X(()=>{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),K(2,`Hydration`),B(),j(3,uO,2,1)(4,dO,5,0,`p`,2),B()),e&2){let e;O(3),M((e=t.report())?3:4,e)}},styles:[`.hydration[_ngcontent-%COMP%] { +}`]})};function qD(e,t){let n=NT(t);if(PT(n))return{nodes:e,matches:0};let r=0,i=e=>e.flatMap(e=>{let t=FT(e,n);t&&r++;let a=i(e.children);return t||a.length?[{...e,children:a}]:[]});return{nodes:i(e),matches:r}}function JD(e){return e.flatMap(e=>e.kind===`directive`?JD(e.children):[{...e,children:JD(e.children)}])}function YD(e){return(e.attributes?.length?e.attributes:e.directives??[e.name]).map(e=>`[${e}]`).join(` `)}var XD={hydrated:`Hydrated`,skipped:`Skipped`,mismatched:`Mismatch`,client:`Client`};function ZD(e){return XD[e]}function QD(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 $D(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 eO(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 tO(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&&!nO(t.roots,i)?{pageId:r,selectedId:null,detailId:n,destroyed:i}:{pageId:r,selectedId:i,detailId:n,destroyed:null}}function nO(e,t){return e.some(e=>e.id===t||nO(e.children,t))}function rO(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 iO=(e,t)=>t.key,aO=(e,t)=>t.id;function oO(e,t){e&1&&(z(0,`p`,2),K(1,` The HTML came from the server, but no component was hydrated, so the app rendered again on the client. Add `),z(2,`code`),K(3,`provideClientHydration()`),B(),K(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),K(2),B(),K(3),B()),e&2){let e=t.$implicit;x_(`count count-`+e.key),O(2),q(e.value),O(),J(` `,e.label,` `)}}function cO(e,t){if(e&1&&(z(0,`span`,15),K(1,`Expected `),z(2,`code`),K(3),B()()),e&2){let e=W().$implicit;O(3),q(e.expected)}}function lO(e,t){if(e&1&&(z(0,`span`,15),K(1,`Found `),z(2,`code`),K(3),B()()),e&2){let e=W().$implicit;O(3),q(e.actual)}}function uO(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),K(3),B(),z(4,`span`,14),K(5),B(),j(6,cO,4,1,`span`,15),j(7,lO,4,1,`span`,15),B()()}if(e&2){let e=t.$implicit;O(3),q(e.name),O(2),J(`<`,e.tag,`>`),O(),M(e.expected?6:-1),O(),M(e.actual?7:-1)}}function dO(e,t){if(e&1&&(z(0,`h3`,10),K(1,`Mismatches`),B(),z(2,`ul`,11),N(3,uO,8,4,`li`,null,aO),B()),e&2){let e=W(2);O(3),P(e.mismatches)}}function fO(e,t){if(e&1){let e=V();z(0,`div`,3)(1,`ul`,4),N(2,sO,4,4,`li`,5,iO),B(),z(4,`button`,6),U(`click`,function(){return w(e),T(W(2).toggleOverlay())}),E(),z(5,`svg`,7),kg(6,`rect`,8),B(),K(7,` Outline on page `),B()(),j(8,dO,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 pO(e,t){e&1&&j(0,oO,5,0,`p`,2)(1,fO,9,2),e&2&&M(+!!t.hydrated)}function mO(e,t){e&1&&(z(0,`p`,2),K(1,` This page was not rendered on the server, so there is nothing to hydrate. With server-side rendering and `),z(2,`code`),K(3,`provideClientHydration()`),B(),K(4,`, each component shows whether it was hydrated, skipped or mismatched. `),B())}var hO=class e{report=$(void 0);overlay=yv();showNode=yv();highlight=yv();overlayOn=Q(()=>this.report()?.overlay===!0);counts=X(()=>{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),K(2,`Hydration`),B(),j(3,pO,2,1)(4,mO,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 pO(e){return new Date(e).toLocaleTimeString()}var mO=/[ \t\n\r]/;function hO(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 gO(e){return new Date(e).toLocaleTimeString()}var _O=/[ \t\n\r]/;function vO(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; -}`]})},bO=864e13,xO=200,SO=300,CO=100,wO=10,TO=100,EO=2e3,DO=2e3,OO=4e3,kO=1e3,AO=100,jO=3,MO=50,NO={component:`c`,hook:`h`,afterRender:`r`,output:`o`},PO=Object.values(NO),FO=e=>!!e&&typeof e==`object`&&!Array.isArray(e),IO=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:0,LO=(e,t)=>typeof e==`string`?e.slice(0,t):``,RO=e=>IO(e)>0?IO(e):void 0,zO=(e,t)=>Array.isArray(e)?e.slice(0,t):[];function BO(e){if(!FO(e))return null;let t=LO(e.name,xO);return t?{name:t,checks:IO(e.checks),ms:IO(e.ms)}:null}function VO(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`||!PO.includes(o)?null:[n,r,IO(i),a,o]}function HO(e,t){if(!FO(e)||typeof e.id!=`number`)return null;let n=zO(e.components,wO).map(BO).filter(e=>!!e),r=LO(e.trigger,SO),i=zO(e.spans,40).map(e=>VO(e,t)).filter(e=>!!e),a=Array.isArray(e.spans)?e.spans.length-40:0,o=Math.floor(IO(e.droppedSpans))+Math.max(0,a),s={t:typeof e.t==`number`?IO(e.t):void 0,hookMs:RO(e.hookMs),afterRenderMs:RO(e.afterRenderMs),outputMs:RO(e.outputMs)},c=KO(e.cause),l=RO(e.refreshed),u=RO(e.unchanged);return{id:IO(e.id),at:IO(e.at),ms:IO(e.ms),passes:IO(e.passes),...r?{trigger:r}:{},checks:IO(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 UO=[`event`,`http`,`timer`,`signal`,`effect`,`markForCheck`,`input`,`view`,`tick`,`zone`,`unknown`],WO={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`},GO=e=>typeof e==`string`&&UO.includes(e);function KO(e){if(!FO(e)||!GO(e.kind))return;let t=[`component`,`listener`,`event`,`target`,`signal`,`task`],n={kind:e.kind};GO(e.via)&&(n.via=e.via);for(let r of t){let t=LO(e[r],xO);t&&(n[r]=t)}e.zone===!0&&(n.zone=!0);let r=zO(e.stack,jO).map(e=>LO(e,SO)).filter(Boolean);r.length&&(n.stack=r);let i=Math.floor(IO(e.more));return i&&(n.more=i),n}function qO(e){if(!FO(e))return null;let t=LO(e.name,xO);if(!t)return null;let n=e.strategy;return{name:t,refreshed:Math.floor(IO(e.refreshed)),unchanged:Math.floor(IO(e.unchanged)),...n===`OnPush`||n===`Eager`?{strategy:n}:{}}}function JO(e){if(!FO(e))return null;let t=LO(e.name,xO),n=LO(e.input,xO);if(!t||!n)return null;let r=LO(e.parent,xO);return{name:t,input:n,...r?{parent:r}:{},inPlace:Math.floor(IO(e.inPlace)),sameContents:Math.floor(IO(e.sameContents))}}function YO(e){if(!FO(e))return null;let t=LO(e.name,xO);if(!t)return null;let n=zO(e.tasks,3).map(e=>LO(e,xO)).filter(Boolean);return{name:t,ticks:Math.floor(IO(e.ticks)),...n.length?{tasks:n}:{}}}function XO(e){if(!FO(e))return;let t={};if(FO(e.causes))for(let n of UO){let r=Math.floor(IO(e.causes[n]));r&&(t[n]=r)}let n=zO(e.components,TO).map(qO).filter(e=>!!e),r=zO(e.inputs,MO).map(JO).filter(e=>!!e),i=zO(e.zone,MO).map(YO).filter(e=>!!e),a=Math.floor(IO(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 ZO(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(`${WO[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 ${WO[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 QO(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 $O(e){let t=BO(e);return!t||!FO(e)?null:{...t,maxMs:IO(e.maxMs),cycles:IO(e.cycles)}}function ek(e){if(!FO(e))return null;let t=LO(e.name,xO),n=LO(e.hook,CO);if(!t||!n)return null;let{calls:r,ms:i,maxMs:a}=e;return{name:t,hook:n,calls:IO(r),ms:IO(i),maxMs:IO(a)}}function tk(e){if(!FO(e))return null;let t=LO(e.name,xO);if(!t)return null;let n=LO(e.listener,xO);return{name:t,...n?{listener:n}:{},calls:IO(e.calls),ms:IO(e.ms),maxMs:IO(e.maxMs)}}function nk(e){if(FO(e)&&IO(e.runs))return{runs:IO(e.runs),ms:IO(e.ms),maxMs:IO(e.maxMs)}}function rk(e,t){if(!FO(e))return null;let n=zO(e.spanNames,OO).map(e=>LO(e,SO)),r=Array.isArray(e.cycles)?e.cycles.slice(-Math.min(t,DO)).map(e=>HO(e,n.length)).filter(e=>!!e):[],i={},a=0;if(FO(e.hosts)){let t=Object.entries(e.hosts);a=Math.max(0,t.length-EO);for(let[e,n]of t.slice(0,EO))e.length<50&&IO(n)&&(i[e]=IO(n))}let o=Array.isArray(e.components)?e.components:[],s=Math.floor(IO(e.droppedClasses))+Math.max(0,o.length-TO),c=Math.floor(IO(e.droppedHosts))+a,l=zO(e.hooks,AO).map(ek).filter(e=>!!e),u=zO(e.outputs,AO).map(tk).filter(e=>!!e),d=Math.max(0,zO(e.hooks,1/0).length-AO)+Math.max(0,zO(e.outputs,1/0).length-AO),f=Math.floor(IO(e.droppedTimings))+d,p=nk(e.afterRender),m=r.some(e=>e.spans?.length),h=XO(e.diagnosis);return{recording:e.recording===!0,startedAt:typeof e.startedAt==`number`&&e.startedAt<=bO?IO(e.startedAt):null,dropped:IO(e.dropped),cycles:r,components:o.slice(0,TO).map($O).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 ik=`pangular-inspector/change-detection`;function ak(e,t,n=Date.now()){return{format:ik,version:1,exportedAt:n,pageId:t,recording:{...rk(e,DO)??e,recording:!1,hosts:{}}}}function ok(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(!FO(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=FO(n.recording)?n.recording:n;if(!Array.isArray(r.cycles))return{ok:!1,error:`The file has no change detection cycles.`};let i=rk(r,t);if(!i)return{ok:!1,error:`The file is not a recording.`};let a=LO(n.pageId??r.pageId,49)||`imported`,o=RO(n.exportedAt);return{ok:!0,pageId:a,...o?{exportedAt:o}:{},recording:{...i,recording:!1}}}var sk=1,ck=1,lk=2,uk={c:`component`,h:`lifecycle-hook`,r:`after-render`,o:`output`},dk=e=>Math.round(e*1e6)/1e3;function fk(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:sk,tid:ck,ts:dk(e),dur:dk(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:ZO(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===NO.output){let n=e+i;a.push({name:l,cat:uk[d],ph:`X`,pid:sk,tid:lk,ts:dk(n),dur:dk(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=dk((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:sk,tid:e,args:{name:n}});return{traceEvents:[l(0,`process_name`,`Angular change detection (page ${t})`),l(ck,`thread_name`,`Change detection`),l(lk,`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<=bO?{startedAt:new Date(e.startedAt).toISOString()}:{}}}}var pk=16.6;function mk(e){return e.ms>pk}function hk(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}function gk(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 _k(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 vk(e){let t=e.reduce((e,t)=>Math.max(e,t.ms),0);return Math.max(t,pk*1.25)}function yk(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 bk={c:`component`,h:`hook`,r:`afterRender`,o:`output`};function xk(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 Sk(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,wk=(e,t)=>t.name,Tk=(e,t)=>t.name+`.`+t.input;function Ek(e,t){e&1&&(z(0,`p`,3),K(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 Dk(e,t){if(e&1&&(z(0,`tr`)(1,`td`),K(2),B(),z(3,`td`,6),K(4),B()()),e&2){let e=t.$implicit;O(2),q(e.label),O(2),q(e.count)}}function Ok(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Trigger`),B(),z(5,`th`,5),K(6,`Cycles`),B()()(),z(7,`tbody`),N(8,Dk,5,2,`tr`,null,Ck),B()()),e&2){let e=W(2);O(8),P(e.causes())}}function kk(e,t){e&1&&(z(0,`p`,3),K(1,`No cycle has a cause yet.`),B())}function Ak(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),K(2),B(),z(3,`td`,6),K(4),B(),z(5,`td`,7),K(6),B()()),e&2){let e=t.$implicit;O(2),q(e.name),O(2),q(e.ticks),O(2),q(e.tasks?.join(`, `))}}function jk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),B(),z(5,`th`,5),K(6,`Zone-only ticks`),B(),z(7,`th`,4),K(8,`After`),B()()(),z(9,`tbody`),N(10,Ak,7,3,`tr`,null,wk),B()()),e&2){let e=W(3);O(10),P(e.zone())}}function Mk(e,t){if(e&1&&(z(0,`p`,3),K(1),B()),e&2){let e=W(3);O(),q(e.zoneNote())}}function Nk(e,t){if(e&1&&(z(0,`div`)(1,`h4`),K(2,`Depends on zone.js`),B(),j(3,jk,12,0,`table`)(4,Mk,2,1,`p`,3),B()),e&2){let e=W(),t=W();O(3),M(t.zone().length?3:e.triggers?4:-1)}}function Pk(e,t){e&1&&(z(0,`p`,3),K(1,`The page can't watch DOM updates, so wasted checks are not counted.`),B())}function Fk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),K(2),B(),z(3,`td`,6),K(4),B(),z(5,`td`,6),K(6),B(),z(7,`td`),K(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),q(e.name),O(2),q(e.refreshed),O(2),Y(``,e.unchanged,` (`,n.share(e.unchanged,e.refreshed),`)`),O(2),q(e.strategy??`Unknown`)}}function Ik(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),B(),z(5,`th`,5),K(6,`Refreshed`),B(),z(7,`th`,5),K(8,`Changed nothing`),B(),z(9,`th`,4),K(10,`Strategy`),B()()(),z(11,`tbody`),N(12,Fk,9,5,`tr`,null,wk),B()()),e&2){let e=W(2);O(12),P(e.wasted())}}function Lk(e,t){e&1&&(z(0,`p`,3),K(1,`Every refreshed check changed something.`),B())}function Rk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),K(2),B(),z(3,`td`,7),K(4),B(),z(5,`td`,6),K(6),B(),z(7,`td`,6),K(8),B()()),e&2){let e=t.$implicit;O(2),Y(``,e.name,`.`,e.input),O(2),q(e.parent??`Unknown`),O(2),q(e.inPlace),O(2),q(e.sameContents)}}function zk(e,t){if(e&1&&(z(0,`h4`),K(1,`Inputs that break OnPush`),B(),z(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,4),K(6,`Input`),B(),z(7,`th`,4),K(8,`Set by`),B(),z(9,`th`,5),K(10,`Changed in place`),B(),z(11,`th`,5),K(12,`Same contents, new reference`),B()()(),z(13,`tbody`),N(14,Rk,9,5,`tr`,null,Tk),B()()),e&2){let e=W(2);O(14),P(e.inputs())}}function Bk(e,t){if(e&1&&(z(0,`li`),K(1),B()),e&2){let e=t.$implicit;O(),q(e.text)}}function Vk(e,t){if(e&1&&(z(0,`h4`),K(1,`Hints`),B(),z(2,`ul`,8),N(3,Bk,2,1,`li`,null,_g),B()),e&2){let e=W(2);O(3),P(e.hints())}}function Hk(e,t){if(e&1&&(z(0,`section`,0)(1,`h3`,1),K(2,`Why it ran and what it wasted`),B(),z(3,`div`,2)(4,`div`)(5,`h4`),K(6,`What started the cycles`),B(),j(7,Ek,2,0,`p`,3)(8,Ok,10,0,`table`)(9,kk,2,0,`p`,3),B(),j(10,Nk,5,1,`div`),B(),z(11,`h4`),K(12,`Wasted checks`),B(),j(13,Pk,2,0,`p`,3)(14,Ik,14,0,`table`)(15,Lk,2,0,`p`,3),j(16,zk,16,0),j(17,Vk,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 Uk=10,Wk=class e{page=$(null);diagnosis=X(()=>this.page()?.diagnosis??null);causes=X(()=>{let e=this.diagnosis()?.causes??{};return UO.filter(t=>e[t]).map(t=>({kind:t,label:WO[t],count:e[t]}))});zone=X(()=>(this.diagnosis()?.zone??[]).slice(0,Uk));zoneTicks=X(()=>this.diagnosis()?.causes.zone??0);hasZone=X(()=>this.diagnosis()?.zoneJs??(this.zone().length>0||this.zoneTicks()>0));zoneNote=X(()=>{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=X(()=>(this.diagnosis()?.components??[]).filter(e=>e.unchanged>0).slice(0,Uk));inputs=X(()=>(this.diagnosis()?.inputs??[]).slice(0,Uk));hints=X(()=>QO(this.diagnosis()??void 0).slice(0,Uk));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,Hk,18,5,`section`,0),e&2){let e;M((e=t.diagnosis())?0:-1,e)}},styles:[`[_nghost-%COMP%] { +}`]})},CO=864e13,wO=200,TO=300,EO=100,DO=10,OO=100,kO=2e3,AO=2e3,jO=4e3,MO=1e3,NO=100,PO=3,FO=50,IO={component:`c`,hook:`h`,afterRender:`r`,output:`o`},LO=Object.values(IO),RO=e=>!!e&&typeof e==`object`&&!Array.isArray(e),zO=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:0,BO=(e,t)=>typeof e==`string`?e.slice(0,t):``,VO=e=>zO(e)>0?zO(e):void 0,HO=(e,t)=>Array.isArray(e)?e.slice(0,t):[];function UO(e){if(!RO(e))return null;let t=BO(e.name,wO);return t?{name:t,checks:zO(e.checks),ms:zO(e.ms)}:null}function WO(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>MO||typeof o!=`string`||!LO.includes(o)?null:[n,r,zO(i),a,o]}function GO(e,t){if(!RO(e)||typeof e.id!=`number`)return null;let n=HO(e.components,DO).map(UO).filter(e=>!!e),r=BO(e.trigger,TO),i=HO(e.spans,40).map(e=>WO(e,t)).filter(e=>!!e),a=Array.isArray(e.spans)?e.spans.length-40:0,o=Math.floor(zO(e.droppedSpans))+Math.max(0,a),s={t:typeof e.t==`number`?zO(e.t):void 0,hookMs:VO(e.hookMs),afterRenderMs:VO(e.afterRenderMs),outputMs:VO(e.outputMs)},c=YO(e.cause),l=VO(e.refreshed),u=VO(e.unchanged);return{id:zO(e.id),at:zO(e.at),ms:zO(e.ms),passes:zO(e.passes),...r?{trigger:r}:{},checks:zO(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 KO=[`event`,`http`,`timer`,`signal`,`effect`,`markForCheck`,`input`,`view`,`tick`,`zone`,`unknown`],qO={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`},JO=e=>typeof e==`string`&&KO.includes(e);function YO(e){if(!RO(e)||!JO(e.kind))return;let t=[`component`,`listener`,`event`,`target`,`signal`,`task`],n={kind:e.kind};JO(e.via)&&(n.via=e.via);for(let r of t){let t=BO(e[r],wO);t&&(n[r]=t)}e.zone===!0&&(n.zone=!0);let r=HO(e.stack,PO).map(e=>BO(e,TO)).filter(Boolean);r.length&&(n.stack=r);let i=Math.floor(zO(e.more));return i&&(n.more=i),n}function XO(e){if(!RO(e))return null;let t=BO(e.name,wO);if(!t)return null;let n=e.strategy;return{name:t,refreshed:Math.floor(zO(e.refreshed)),unchanged:Math.floor(zO(e.unchanged)),...n===`OnPush`||n===`Eager`?{strategy:n}:{}}}function ZO(e){if(!RO(e))return null;let t=BO(e.name,wO),n=BO(e.input,wO);if(!t||!n)return null;let r=BO(e.parent,wO);return{name:t,input:n,...r?{parent:r}:{},inPlace:Math.floor(zO(e.inPlace)),sameContents:Math.floor(zO(e.sameContents))}}function QO(e){if(!RO(e))return null;let t=BO(e.name,wO);if(!t)return null;let n=HO(e.tasks,3).map(e=>BO(e,wO)).filter(Boolean);return{name:t,ticks:Math.floor(zO(e.ticks)),...n.length?{tasks:n}:{}}}function $O(e){if(!RO(e))return;let t={};if(RO(e.causes))for(let n of KO){let r=Math.floor(zO(e.causes[n]));r&&(t[n]=r)}let n=HO(e.components,OO).map(XO).filter(e=>!!e),r=HO(e.inputs,FO).map(ZO).filter(e=>!!e),i=HO(e.zone,FO).map(QO).filter(e=>!!e),a=Math.floor(zO(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 ek(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(`${qO[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 ${qO[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 tk(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 nk(e){let t=UO(e);return!t||!RO(e)?null:{...t,maxMs:zO(e.maxMs),cycles:zO(e.cycles)}}function rk(e){if(!RO(e))return null;let t=BO(e.name,wO),n=BO(e.hook,EO);if(!t||!n)return null;let{calls:r,ms:i,maxMs:a}=e;return{name:t,hook:n,calls:zO(r),ms:zO(i),maxMs:zO(a)}}function ik(e){if(!RO(e))return null;let t=BO(e.name,wO);if(!t)return null;let n=BO(e.listener,wO);return{name:t,...n?{listener:n}:{},calls:zO(e.calls),ms:zO(e.ms),maxMs:zO(e.maxMs)}}function ak(e){if(RO(e)&&zO(e.runs))return{runs:zO(e.runs),ms:zO(e.ms),maxMs:zO(e.maxMs)}}function ok(e,t){if(!RO(e))return null;let n=HO(e.spanNames,jO).map(e=>BO(e,TO)),r=Array.isArray(e.cycles)?e.cycles.slice(-Math.min(t,AO)).map(e=>GO(e,n.length)).filter(e=>!!e):[],i={},a=0;if(RO(e.hosts)){let t=Object.entries(e.hosts);a=Math.max(0,t.length-kO);for(let[e,n]of t.slice(0,kO))e.length<50&&zO(n)&&(i[e]=zO(n))}let o=Array.isArray(e.components)?e.components:[],s=Math.floor(zO(e.droppedClasses))+Math.max(0,o.length-OO),c=Math.floor(zO(e.droppedHosts))+a,l=HO(e.hooks,NO).map(rk).filter(e=>!!e),u=HO(e.outputs,NO).map(ik).filter(e=>!!e),d=Math.max(0,HO(e.hooks,1/0).length-NO)+Math.max(0,HO(e.outputs,1/0).length-NO),f=Math.floor(zO(e.droppedTimings))+d,p=ak(e.afterRender),m=r.some(e=>e.spans?.length),h=$O(e.diagnosis);return{recording:e.recording===!0,startedAt:typeof e.startedAt==`number`&&e.startedAt<=CO?zO(e.startedAt):null,dropped:zO(e.dropped),cycles:r,components:o.slice(0,OO).map(nk).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 sk=`pangular-inspector/change-detection`;function ck(e,t,n=Date.now()){return{format:sk,version:1,exportedAt:n,pageId:t,recording:{...ok(e,AO)??e,recording:!1,hosts:{}}}}function lk(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(!RO(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=RO(n.recording)?n.recording:n;if(!Array.isArray(r.cycles))return{ok:!1,error:`The file has no change detection cycles.`};let i=ok(r,t);if(!i)return{ok:!1,error:`The file is not a recording.`};let a=BO(n.pageId??r.pageId,49)||`imported`,o=VO(n.exportedAt);return{ok:!0,pageId:a,...o?{exportedAt:o}:{},recording:{...i,recording:!1}}}var uk=1,dk=1,fk=2,pk={c:`component`,h:`lifecycle-hook`,r:`after-render`,o:`output`},mk=e=>Math.round(e*1e6)/1e3;function hk(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:uk,tid:dk,ts:mk(e),dur:mk(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:ek(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===IO.output){let n=e+i;a.push({name:l,cat:pk[d],ph:`X`,pid:uk,tid:fk,ts:mk(n),dur:mk(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=mk((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:uk,tid:e,args:{name:n}});return{traceEvents:[l(0,`process_name`,`Angular change detection (page ${t})`),l(dk,`thread_name`,`Change detection`),l(fk,`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<=CO?{startedAt:new Date(e.startedAt).toISOString()}:{}}}}var gk=16.6;function _k(e){return e.ms>gk}function vk(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}function yk(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 bk(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 xk(e){let t=e.reduce((e,t)=>Math.max(e,t.ms),0);return Math.max(t,gk*1.25)}function Sk(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 Ck={c:`component`,h:`hook`,r:`afterRender`,o:`output`};function wk(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 Tk(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,Dk=(e,t)=>t.name,Ok=(e,t)=>t.name+`.`+t.input;function kk(e,t){e&1&&(z(0,`p`,3),K(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 Ak(e,t){if(e&1&&(z(0,`tr`)(1,`td`),K(2),B(),z(3,`td`,6),K(4),B()()),e&2){let e=t.$implicit;O(2),q(e.label),O(2),q(e.count)}}function jk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Trigger`),B(),z(5,`th`,5),K(6,`Cycles`),B()()(),z(7,`tbody`),N(8,Ak,5,2,`tr`,null,Ek),B()()),e&2){let e=W(2);O(8),P(e.causes())}}function Mk(e,t){e&1&&(z(0,`p`,3),K(1,`No cycle has a cause yet.`),B())}function Nk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),K(2),B(),z(3,`td`,6),K(4),B(),z(5,`td`,7),K(6),B()()),e&2){let e=t.$implicit;O(2),q(e.name),O(2),q(e.ticks),O(2),q(e.tasks?.join(`, `))}}function Pk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),B(),z(5,`th`,5),K(6,`Zone-only ticks`),B(),z(7,`th`,4),K(8,`After`),B()()(),z(9,`tbody`),N(10,Nk,7,3,`tr`,null,Dk),B()()),e&2){let e=W(3);O(10),P(e.zone())}}function Fk(e,t){if(e&1&&(z(0,`p`,3),K(1),B()),e&2){let e=W(3);O(),q(e.zoneNote())}}function Ik(e,t){if(e&1&&(z(0,`div`)(1,`h4`),K(2,`Depends on zone.js`),B(),j(3,Pk,12,0,`table`)(4,Fk,2,1,`p`,3),B()),e&2){let e=W(),t=W();O(3),M(t.zone().length?3:e.triggers?4:-1)}}function Lk(e,t){e&1&&(z(0,`p`,3),K(1,`The page can't watch DOM updates, so wasted checks are not counted.`),B())}function Rk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),K(2),B(),z(3,`td`,6),K(4),B(),z(5,`td`,6),K(6),B(),z(7,`td`),K(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),q(e.name),O(2),q(e.refreshed),O(2),Y(``,e.unchanged,` (`,n.share(e.unchanged,e.refreshed),`)`),O(2),q(e.strategy??`Unknown`)}}function zk(e,t){if(e&1&&(z(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),B(),z(5,`th`,5),K(6,`Refreshed`),B(),z(7,`th`,5),K(8,`Changed nothing`),B(),z(9,`th`,4),K(10,`Strategy`),B()()(),z(11,`tbody`),N(12,Rk,9,5,`tr`,null,Dk),B()()),e&2){let e=W(2);O(12),P(e.wasted())}}function Bk(e,t){e&1&&(z(0,`p`,3),K(1,`Every refreshed check changed something.`),B())}function Vk(e,t){if(e&1&&(z(0,`tr`)(1,`td`,7),K(2),B(),z(3,`td`,7),K(4),B(),z(5,`td`,6),K(6),B(),z(7,`td`,6),K(8),B()()),e&2){let e=t.$implicit;O(2),Y(``,e.name,`.`,e.input),O(2),q(e.parent??`Unknown`),O(2),q(e.inPlace),O(2),q(e.sameContents)}}function Hk(e,t){if(e&1&&(z(0,`h4`),K(1,`Inputs that break OnPush`),B(),z(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,4),K(6,`Input`),B(),z(7,`th`,4),K(8,`Set by`),B(),z(9,`th`,5),K(10,`Changed in place`),B(),z(11,`th`,5),K(12,`Same contents, new reference`),B()()(),z(13,`tbody`),N(14,Vk,9,5,`tr`,null,Ok),B()()),e&2){let e=W(2);O(14),P(e.inputs())}}function Uk(e,t){if(e&1&&(z(0,`li`),K(1),B()),e&2){let e=t.$implicit;O(),q(e.text)}}function Wk(e,t){if(e&1&&(z(0,`h4`),K(1,`Hints`),B(),z(2,`ul`,8),N(3,Uk,2,1,`li`,null,_g),B()),e&2){let e=W(2);O(3),P(e.hints())}}function Gk(e,t){if(e&1&&(z(0,`section`,0)(1,`h3`,1),K(2,`Why it ran and what it wasted`),B(),z(3,`div`,2)(4,`div`)(5,`h4`),K(6,`What started the cycles`),B(),j(7,kk,2,0,`p`,3)(8,jk,10,0,`table`)(9,Mk,2,0,`p`,3),B(),j(10,Ik,5,1,`div`),B(),z(11,`h4`),K(12,`Wasted checks`),B(),j(13,Lk,2,0,`p`,3)(14,zk,14,0,`table`)(15,Bk,2,0,`p`,3),j(16,Hk,16,0),j(17,Wk,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 Kk=10,qk=class e{page=$(null);diagnosis=X(()=>this.page()?.diagnosis??null);causes=X(()=>{let e=this.diagnosis()?.causes??{};return KO.filter(t=>e[t]).map(t=>({kind:t,label:qO[t],count:e[t]}))});zone=X(()=>(this.diagnosis()?.zone??[]).slice(0,Kk));zoneTicks=X(()=>this.diagnosis()?.causes.zone??0);hasZone=X(()=>this.diagnosis()?.zoneJs??(this.zone().length>0||this.zoneTicks()>0));zoneNote=X(()=>{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=X(()=>(this.diagnosis()?.components??[]).filter(e=>e.unchanged>0).slice(0,Kk));inputs=X(()=>(this.diagnosis()?.inputs??[]).slice(0,Kk));hints=X(()=>tk(this.diagnosis()??void 0).slice(0,Kk));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,Gk,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; -}`]})},Gk=(e,t)=>t.cycle.id,Kk=(e,t)=>t.id;function qk(e,t){if(e&1){let e=V();z(0,`button`,27),U(`click`,function(){return w(e),T(W().showAll())}),K(1,`Show all cycles`),B()}}function Jk(e,t){if(e&1&&kg(0,`div`,28),e&2){let e=t;b_(`left`,e.left,`%`)(`width`,e.width,`%`)}}function Yk(e,t){if(e&1&&(z(0,`div`,29),kg(1,`span`,30),B()),e&2){let e=t.$implicit,n=W();G(`over`,e.over)(`out`,!n.inRange(e.index)&&!!n.range())(`active`,n.focused()&&n.active()===e.index),Fg(`id`,n.optionId(e.index)),A(`data-index`,e.index)(`aria-selected`,n.inRange(e.index))(`aria-label`,e.label),O(),b_(`height`,e.height,`%`)}}function Xk(e,t){e&1&&(z(0,`span`,33),K(1,`over budget`),B())}function Zk(e,t){if(e&1&&(z(0,`p`),K(1,` after `),z(2,`span`,35),K(3),B()()),e&2){let e=W();O(3),q(e.cycle.trigger)}}function Qk(e,t){if(e&1&&(z(0,`p`,34)(1,`span`,36),K(2),B(),z(3,`span`),K(4),B()()),e&2){let e=t.$implicit,n=W(2);O(2),q(e.name),O(2),q(n.fmt(e.ms))}}function $k(e,t){if(e&1&&(z(0,`div`,31)(1,`p`,32)(2,`strong`),K(3),B(),z(4,`span`),K(5),B(),j(6,Xk,2,0,`span`,33),B(),j(7,Zk,4,1,`p`),z(8,`p`),K(9),B(),N(10,Qk,5,2,`p`,34,_g),B()),e&2){let e=t,n=W();b_(`left`,e.left)(`right`,e.right),O(3),q(n.fmt(e.cycle.ms)),O(2),J(`cycle `,e.cycle.id),O(),M(e.over?6:-1),O(),M(e.cycle.trigger?7:-1),O(2),z_(` `,e.cycle.checks,` `,e.cycle.checks===1?`check`:`checks`,`, `,e.cycle.passes,` `,e.cycle.passes===1?`pass`:`passes`,` `),O(),P(e.top)}}function eA(e,t){if(e&1&&kg(0,`span`),e&2){let e=t.$implicit;G(`over`,e.over)}}function tA(e,t){if(e&1&&K(0),e&2){let e=t,n=W(2);Y(` `,e.name,` (`,n.fmt(e.ms),`) `)}}function nA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,37),K(2),B(),z(3,`td`,37),K(4),B(),z(5,`td`),K(6),B(),z(7,`td`,37),K(8),B(),z(9,`td`,37),K(10),B(),z(11,`td`,35),K(12),B(),z(13,`td`,35),j(14,tA,1,2),B()()),e&2){let e,n=t.$implicit,r=W();O(2),q(n.id),O(2),q(r.fmt(n.ms)),O(2),q(r.isOver(n)?`Over`:`Within`),O(2),q(n.checks),O(2),q(n.passes),O(2),q(n.trigger??``),O(2),M((e=n.components[0])?14:-1,e)}}var rA=0,iA=80,aA=10,oA=class e{cycles=$([]);range=wv(null);gapUntil=iA;budgetLabel=`${pk} ms budget`;uid=`cd-chart-${rA++}`;hintId=`${this.uid}-hint`;active=D(null);anchor=null;dragging=!1;hover=D(null);focused=D(!1);max=X(()=>vk(this.cycles()));budgetAt=X(()=>pk/this.max()*100);bars=X(()=>{let e=this.max();return this.cycles().map((t,n)=>({cycle:t,index:n,height:t.ms/e*100,over:mk(t),label:this.describe(t)}))});firstId=X(()=>this.cycles()[0]?.id??0);lastId=X(()=>this.cycles().at(-1)?.id??0);span=X(()=>{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||agk(this.cycles(),this.range()));startId=X(()=>this.selected()[0]?.id??``);endId=X(()=>this.selected().at(-1)?.id??``);band=X(()=>{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=X(()=>{let e=this.selected(),t=e.filter(mk).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 ${pk} ms budget.`});tableLabel=X(()=>this.span()?`Picked cycles, ${this.summary()}`:`All recorded cycles`);activeOptionId=X(()=>{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:mk(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}`,hk(e.ms)];mk(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} ${hk(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+aA;break;case`PageUp`:r=n-aA;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()},ju)(`pointercancel`,function(){return t.endDrag()},ju)},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`),K(3,`Start`),B(),z(4,`input`,1),U(`change`,function(e){return t.setEnd(`from`,e)}),B()(),z(5,`label`)(6,`span`),K(7,`End`),B(),z(8,`input`,1),U(`change`,function(e){return t.setEnd(`to`,e)}),B()(),j(9,qk,2,0,`button`,2),z(10,`p`,3),K(11),B()(),z(12,`p`,4),K(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),K(17),B(),z(18,`span`,8),K(19,`0 ms`),B()(),z(20,`div`,9),j(21,Jk,1,4,`div`,10),z(22,`div`,11)(23,`span`),K(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,Yk,2,12,`div`,13,Gk),B(),j(28,$k,12,12,`div`,14),B()(),z(29,`div`,15),N(30,eA,1,2,`span`,16,Gk),B(),z(32,`ul`,17)(33,`li`),kg(34,`span`,18),K(35,`Within budget`),B(),z(36,`li`),kg(37,`span`,19)(38,`span`,20),K(39,`Over budget `),B(),z(40,`li`),kg(41,`span`,21),K(42),B()(),z(43,`details`,22)(44,`summary`),K(45,`Show the cycles as a table`),B(),z(46,`div`,23)(47,`table`)(48,`caption`,24),K(49),B(),z(50,`thead`)(51,`tr`)(52,`th`,25),K(53,`Cycle`),B(),z(54,`th`,25),K(55,`Duration`),B(),z(56,`th`,26),K(57,`Budget`),B(),z(58,`th`,25),K(59,`Checks`),B(),z(60,`th`,25),K(61,`Passes`),B(),z(62,`th`,26),K(63,`After`),B(),z(64,`th`,26),K(65,`Slowest component`),B()()(),z(66,`tbody`),N(67,nA,15,7,`tr`,null,Kk),B()()()()),e&2){let e,n;O(4),Fg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.startId()),O(4),Fg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.endId()),O(),M(t.range()?9:-1),O(2),q(t.summary()),O(),Fg(`id`,t.hintId),O(2),G(`flush`,t.bars().length>t.gapUntil),O(3),q(t.fmt(t.max())),O(4),M((e=t.band())?21:-1,e),O(),b_(`bottom`,t.budgetAt(),`%`),O(2),q(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(),G(`flush`,t.bars().length>t.gapUntil),O(),P(t.bars()),O(12),q(t.budgetLabel),O(4),A(`aria-label`,t.tableLabel()),O(3),J(` `,t.tableLabel(),` `),O(18),P(t.selected())}},styles:[`[_nghost-%COMP%] { +}`]})},Jk=(e,t)=>t.cycle.id,Yk=(e,t)=>t.id;function Xk(e,t){if(e&1){let e=V();z(0,`button`,27),U(`click`,function(){return w(e),T(W().showAll())}),K(1,`Show all cycles`),B()}}function Zk(e,t){if(e&1&&kg(0,`div`,28),e&2){let e=t;b_(`left`,e.left,`%`)(`width`,e.width,`%`)}}function Qk(e,t){if(e&1&&(z(0,`div`,29),kg(1,`span`,30),B()),e&2){let e=t.$implicit,n=W();G(`over`,e.over)(`out`,!n.inRange(e.index)&&!!n.range())(`active`,n.focused()&&n.active()===e.index),Fg(`id`,n.optionId(e.index)),A(`data-index`,e.index)(`aria-selected`,n.inRange(e.index))(`aria-label`,e.label),O(),b_(`height`,e.height,`%`)}}function $k(e,t){e&1&&(z(0,`span`,33),K(1,`over budget`),B())}function eA(e,t){if(e&1&&(z(0,`p`),K(1,` after `),z(2,`span`,35),K(3),B()()),e&2){let e=W();O(3),q(e.cycle.trigger)}}function tA(e,t){if(e&1&&(z(0,`p`,34)(1,`span`,36),K(2),B(),z(3,`span`),K(4),B()()),e&2){let e=t.$implicit,n=W(2);O(2),q(e.name),O(2),q(n.fmt(e.ms))}}function nA(e,t){if(e&1&&(z(0,`div`,31)(1,`p`,32)(2,`strong`),K(3),B(),z(4,`span`),K(5),B(),j(6,$k,2,0,`span`,33),B(),j(7,eA,4,1,`p`),z(8,`p`),K(9),B(),N(10,tA,5,2,`p`,34,_g),B()),e&2){let e=t,n=W();b_(`left`,e.left)(`right`,e.right),O(3),q(n.fmt(e.cycle.ms)),O(2),J(`cycle `,e.cycle.id),O(),M(e.over?6:-1),O(),M(e.cycle.trigger?7:-1),O(2),z_(` `,e.cycle.checks,` `,e.cycle.checks===1?`check`:`checks`,`, `,e.cycle.passes,` `,e.cycle.passes===1?`pass`:`passes`,` `),O(),P(e.top)}}function rA(e,t){if(e&1&&kg(0,`span`),e&2){let e=t.$implicit;G(`over`,e.over)}}function iA(e,t){if(e&1&&K(0),e&2){let e=t,n=W(2);Y(` `,e.name,` (`,n.fmt(e.ms),`) `)}}function aA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,37),K(2),B(),z(3,`td`,37),K(4),B(),z(5,`td`),K(6),B(),z(7,`td`,37),K(8),B(),z(9,`td`,37),K(10),B(),z(11,`td`,35),K(12),B(),z(13,`td`,35),j(14,iA,1,2),B()()),e&2){let e,n=t.$implicit,r=W();O(2),q(n.id),O(2),q(r.fmt(n.ms)),O(2),q(r.isOver(n)?`Over`:`Within`),O(2),q(n.checks),O(2),q(n.passes),O(2),q(n.trigger??``),O(2),M((e=n.components[0])?14:-1,e)}}var oA=0,sA=80,cA=10,lA=class e{cycles=$([]);range=wv(null);gapUntil=sA;budgetLabel=`${gk} ms budget`;uid=`cd-chart-${oA++}`;hintId=`${this.uid}-hint`;active=D(null);anchor=null;dragging=!1;hover=D(null);focused=D(!1);max=X(()=>xk(this.cycles()));budgetAt=X(()=>gk/this.max()*100);bars=X(()=>{let e=this.max();return this.cycles().map((t,n)=>({cycle:t,index:n,height:t.ms/e*100,over:_k(t),label:this.describe(t)}))});firstId=X(()=>this.cycles()[0]?.id??0);lastId=X(()=>this.cycles().at(-1)?.id??0);span=X(()=>{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||ayk(this.cycles(),this.range()));startId=X(()=>this.selected()[0]?.id??``);endId=X(()=>this.selected().at(-1)?.id??``);band=X(()=>{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=X(()=>{let e=this.selected(),t=e.filter(_k).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 ${gk} ms budget.`});tableLabel=X(()=>this.span()?`Picked cycles, ${this.summary()}`:`All recorded cycles`);activeOptionId=X(()=>{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:_k(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}`,vk(e.ms)];_k(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} ${vk(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+cA;break;case`PageUp`:r=n-cA;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()},ju)(`pointercancel`,function(){return t.endDrag()},ju)},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`),K(3,`Start`),B(),z(4,`input`,1),U(`change`,function(e){return t.setEnd(`from`,e)}),B()(),z(5,`label`)(6,`span`),K(7,`End`),B(),z(8,`input`,1),U(`change`,function(e){return t.setEnd(`to`,e)}),B()(),j(9,Xk,2,0,`button`,2),z(10,`p`,3),K(11),B()(),z(12,`p`,4),K(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),K(17),B(),z(18,`span`,8),K(19,`0 ms`),B()(),z(20,`div`,9),j(21,Zk,1,4,`div`,10),z(22,`div`,11)(23,`span`),K(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,Qk,2,12,`div`,13,Jk),B(),j(28,nA,12,12,`div`,14),B()(),z(29,`div`,15),N(30,rA,1,2,`span`,16,Jk),B(),z(32,`ul`,17)(33,`li`),kg(34,`span`,18),K(35,`Within budget`),B(),z(36,`li`),kg(37,`span`,19)(38,`span`,20),K(39,`Over budget `),B(),z(40,`li`),kg(41,`span`,21),K(42),B()(),z(43,`details`,22)(44,`summary`),K(45,`Show the cycles as a table`),B(),z(46,`div`,23)(47,`table`)(48,`caption`,24),K(49),B(),z(50,`thead`)(51,`tr`)(52,`th`,25),K(53,`Cycle`),B(),z(54,`th`,25),K(55,`Duration`),B(),z(56,`th`,26),K(57,`Budget`),B(),z(58,`th`,25),K(59,`Checks`),B(),z(60,`th`,25),K(61,`Passes`),B(),z(62,`th`,26),K(63,`After`),B(),z(64,`th`,26),K(65,`Slowest component`),B()()(),z(66,`tbody`),N(67,aA,15,7,`tr`,null,Yk),B()()()()),e&2){let e,n;O(4),Fg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.startId()),O(4),Fg(`min`,t.firstId())(`max`,t.lastId())(`value`,t.endId()),O(),M(t.range()?9:-1),O(2),q(t.summary()),O(),Fg(`id`,t.hintId),O(2),G(`flush`,t.bars().length>t.gapUntil),O(3),q(t.fmt(t.max())),O(4),M((e=t.band())?21:-1,e),O(),b_(`bottom`,t.budgetAt(),`%`),O(2),q(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(),G(`flush`,t.bars().length>t.gapUntil),O(),P(t.bars()),O(12),q(t.budgetLabel),O(4),A(`aria-label`,t.tableLabel()),O(3),J(` `,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; } -}`]})},sA=(e,t)=>t.id,cA=(e,t)=>t.index,lA=(e,t)=>t.kind;function uA(e,t){if(e&1&&(z(0,`p`,0),K(1),B()),e&2){let e=W(2);O(),Y(` Pick `,e.max,` cycles or fewer to see their spans. `,e.count(),` are picked. `)}}function dA(e,t){if(e&1&&(z(0,`span`),K(1),B()),e&2){let e=t.$implicit;b_(`left`,e.x,`%`)(`width`,e.w,`%`),O(),J(`cycle `,e.id)}}function fA(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),K(2),B()()}if(e&2){let e=t.$implicit,n=W(3);x_(J_(`block kind-`,e.kind)),b_(`left`,e.x,`%`)(`width`,e.w,`%`)(`top`,e.depth*n.row,`px`),G(`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),q(e.name)}}function pA(e,t){if(e&1&&(z(0,`li`),kg(1,`span`,13),K(2),B()),e&2){let e=t.$implicit;O(),x_(J_(`key kind-`,e.kind)),O(),q(e.label)}}function mA(e,t){if(e&1&&(z(0,`p`,0),K(1),B()),e&2){let e=W(3);O(),Y(` Each cycle keeps its longest spans. `,e.dropped(),` shorter `,e.dropped()===1?`span was`:`spans were`,` left out. `)}}function hA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,17),K(2),B(),z(3,`td`,18),K(4),B(),z(5,`td`),K(6),B(),z(7,`td`,17),K(8),B(),z(9,`td`,17),K(10),B(),z(11,`td`,17),K(12),B(),z(13,`td`,17),K(14),B()()),e&2){let e=t.$implicit,n=W(4);O(2),q(e.cycleId),O(),b_(`padding-left`,6+e.depth*8,`px`),O(),q(e.name),O(2),q(n.kindLabel(e)),O(2),q(e.depth),O(2),q(n.fmt(e.start)),O(2),q(n.fmt(e.ms)),O(2),q(n.fmt(e.selfMs))}}function gA(e,t){if(e&1&&(z(0,`div`,10)(1,`table`)(2,`caption`,14),K(3),B(),z(4,`thead`)(5,`tr`)(6,`th`,15),K(7,`Cycle`),B(),z(8,`th`,16),K(9,`Span`),B(),z(10,`th`,16),K(11,`Kind`),B(),z(12,`th`,15),K(13,`Depth`),B(),z(14,`th`,15),K(15,`Start`),B(),z(16,`th`,15),K(17,`Total`),B(),z(18,`th`,15),K(19,`Self`),B()()(),z(20,`tbody`),N(21,hA,15,9,`tr`,null,cA),B()()()),e&2){let e=W(),t=W(2);A(`aria-label`,t.tableLabel()),O(3),J(` `,t.tableLabel(),` `),O(18),P(e.blocks)}}function _A(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,dA,2,5,`span`,3,sA),B(),z(4,`div`,4),N(5,fA,3,16,`button`,5,cA),B()(),z(7,`p`,6),K(8),B(),z(9,`ul`,7),N(10,pA,3,4,`li`,null,lA),B(),z(12,`p`,8),K(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,mA,2,2,`p`,0),z(15,`details`,9),U(`toggle`,function(t){return w(e),T(W(2).onToggle(t))}),z(16,`summary`),K(17,`Show the spans as a table`),B(),j(18,gA,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),b_(`height`,e.depth*n.row,`px`),O(),P(e.blocks),O(3),q(n.readout()),O(2),P(n.kinds),O(4),M(n.dropped()?14:-1),O(4),M(n.tableOpen()?18:-1)}}function vA(e,t){if(e&1&&(z(0,`h3`),K(1,`Spans in the picked cycles`),B(),j(2,uA,2,2,`p`,0)(3,_A,19,6)),e&2){let e,t=W();O(2),M(t.tooMany()?2:(e=t.graph())?3:-1,e)}}var yA=22;function bA(e,t){for(let n=e.length-1;n>=0;n--)if(t(e[n]))return e[n]}var xA=class e{cycles=$([]);names=$([]);scope=$(`the recording`);pick=yv();row=yA;max=30;kinds=[`c`,`h`,`r`,`o`].map(e=>({kind:e,label:bk[e]}));current=D(0);tableOpen=D(!1);hover=D(null);hasSpans=X(()=>this.cycles().some(e=>e.spans?.length));count=X(()=>this.cycles().length);tooMany=X(()=>this.count()>30);graph=X(()=>this.tooMany()?null:Sk(this.cycles(),this.names()));tabStop=X(()=>Math.min(this.current(),Math.max((this.graph()?.blocks.length??1)-1,0)));dropped=X(()=>this.graph()?.cycles.reduce((e,t)=>e+t.droppedSpans,0)??0);label=X(()=>`Spans in ${this.scope()} over time, nested by depth. Pick a component to show it in the tree.`);readout=X(()=>{let e=(this.graph()?.blocks??[])[this.hover()??this.tabStop()];return e?this.describe(e):``});tableLabel=X(()=>`Timed spans in ${this.scope()}`);fmt(e){return hk(e)}kindLabel(e){return bk[e.kind]}onToggle(e){this.tableOpen.set(e.target.open)}describe(e){let t=[e.name,bk[e.kind],`${hk(e.ms)} total`];return e.selfMs!==e.ms&&t.push(`${hk(e.selfMs)} self`),t.push(e.start<0?`cycle ${e.cycleId}, ${hk(-e.start)} before it started`:`cycle ${e.cycleId} at ${hk(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=bA(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,vA,4,1),e&2&&M(t.hasSpans()?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})},uA=(e,t)=>t.id,dA=(e,t)=>t.index,fA=(e,t)=>t.kind;function pA(e,t){if(e&1&&(z(0,`p`,0),K(1),B()),e&2){let e=W(2);O(),Y(` Pick `,e.max,` cycles or fewer to see their spans. `,e.count(),` are picked. `)}}function mA(e,t){if(e&1&&(z(0,`span`),K(1),B()),e&2){let e=t.$implicit;b_(`left`,e.x,`%`)(`width`,e.w,`%`),O(),J(`cycle `,e.id)}}function hA(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),K(2),B()()}if(e&2){let e=t.$implicit,n=W(3);x_(J_(`block kind-`,e.kind)),b_(`left`,e.x,`%`)(`width`,e.w,`%`)(`top`,e.depth*n.row,`px`),G(`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),q(e.name)}}function gA(e,t){if(e&1&&(z(0,`li`),kg(1,`span`,13),K(2),B()),e&2){let e=t.$implicit;O(),x_(J_(`key kind-`,e.kind)),O(),q(e.label)}}function _A(e,t){if(e&1&&(z(0,`p`,0),K(1),B()),e&2){let e=W(3);O(),Y(` Each cycle keeps its longest spans. `,e.dropped(),` shorter `,e.dropped()===1?`span was`:`spans were`,` left out. `)}}function vA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,17),K(2),B(),z(3,`td`,18),K(4),B(),z(5,`td`),K(6),B(),z(7,`td`,17),K(8),B(),z(9,`td`,17),K(10),B(),z(11,`td`,17),K(12),B(),z(13,`td`,17),K(14),B()()),e&2){let e=t.$implicit,n=W(4);O(2),q(e.cycleId),O(),b_(`padding-left`,6+e.depth*8,`px`),O(),q(e.name),O(2),q(n.kindLabel(e)),O(2),q(e.depth),O(2),q(n.fmt(e.start)),O(2),q(n.fmt(e.ms)),O(2),q(n.fmt(e.selfMs))}}function yA(e,t){if(e&1&&(z(0,`div`,10)(1,`table`)(2,`caption`,14),K(3),B(),z(4,`thead`)(5,`tr`)(6,`th`,15),K(7,`Cycle`),B(),z(8,`th`,16),K(9,`Span`),B(),z(10,`th`,16),K(11,`Kind`),B(),z(12,`th`,15),K(13,`Depth`),B(),z(14,`th`,15),K(15,`Start`),B(),z(16,`th`,15),K(17,`Total`),B(),z(18,`th`,15),K(19,`Self`),B()()(),z(20,`tbody`),N(21,vA,15,9,`tr`,null,dA),B()()()),e&2){let e=W(),t=W(2);A(`aria-label`,t.tableLabel()),O(3),J(` `,t.tableLabel(),` `),O(18),P(e.blocks)}}function bA(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,mA,2,5,`span`,3,uA),B(),z(4,`div`,4),N(5,hA,3,16,`button`,5,dA),B()(),z(7,`p`,6),K(8),B(),z(9,`ul`,7),N(10,gA,3,4,`li`,null,fA),B(),z(12,`p`,8),K(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,_A,2,2,`p`,0),z(15,`details`,9),U(`toggle`,function(t){return w(e),T(W(2).onToggle(t))}),z(16,`summary`),K(17,`Show the spans as a table`),B(),j(18,yA,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),b_(`height`,e.depth*n.row,`px`),O(),P(e.blocks),O(3),q(n.readout()),O(2),P(n.kinds),O(4),M(n.dropped()?14:-1),O(4),M(n.tableOpen()?18:-1)}}function xA(e,t){if(e&1&&(z(0,`h3`),K(1,`Spans in the picked cycles`),B(),j(2,pA,2,2,`p`,0)(3,bA,19,6)),e&2){let e,t=W();O(2),M(t.tooMany()?2:(e=t.graph())?3:-1,e)}}var SA=22;function CA(e,t){for(let n=e.length-1;n>=0;n--)if(t(e[n]))return e[n]}var wA=class e{cycles=$([]);names=$([]);scope=$(`the recording`);pick=yv();row=SA;max=30;kinds=[`c`,`h`,`r`,`o`].map(e=>({kind:e,label:Ck[e]}));current=D(0);tableOpen=D(!1);hover=D(null);hasSpans=X(()=>this.cycles().some(e=>e.spans?.length));count=X(()=>this.cycles().length);tooMany=X(()=>this.count()>30);graph=X(()=>this.tooMany()?null:Tk(this.cycles(),this.names()));tabStop=X(()=>Math.min(this.current(),Math.max((this.graph()?.blocks.length??1)-1,0)));dropped=X(()=>this.graph()?.cycles.reduce((e,t)=>e+t.droppedSpans,0)??0);label=X(()=>`Spans in ${this.scope()} over time, nested by depth. Pick a component to show it in the tree.`);readout=X(()=>{let e=(this.graph()?.blocks??[])[this.hover()??this.tabStop()];return e?this.describe(e):``});tableLabel=X(()=>`Timed spans in ${this.scope()}`);fmt(e){return vk(e)}kindLabel(e){return Ck[e.kind]}onToggle(e){this.tableOpen.set(e.target.open)}describe(e){let t=[e.name,Ck[e.kind],`${vk(e.ms)} total`];return e.selfMs!==e.ms&&t.push(`${vk(e.selfMs)} self`),t.push(e.start<0?`cycle ${e.cycleId}, ${vk(-e.start)} before it started`:`cycle ${e.cycleId} at ${vk(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=CA(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,xA,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 SA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),K(2),B(),z(3,`td`,6),K(4),B(),z(5,`td`,6),K(6),B(),z(7,`td`,6),K(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),Y(``,e.name,`.`,e.hook),O(2),q(e.calls),O(2),q(n.ms(e.ms)),O(2),q(n.ms(e.maxMs))}}function CA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),K(2,`Lifecycle hooks`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Hook`),B(),z(8,`th`,4),K(9,`Calls`),B(),z(10,`th`,4),K(11,`Time`),B(),z(12,`th`,4),K(13,`Slowest`),B()()(),z(14,`tbody`),N(15,SA,9,5,`tr`,null,_g),B()()()),e&2){let e=W(2);O(15),P(e.hooks())}}function wA(e,t){if(e&1&&K(0),e&2){let e=W().$implicit;J(` (`,e.listener,`) `)}}function TA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),K(2),j(3,wA,1,1),B(),z(4,`td`,6),K(5),B(),z(6,`td`,6),K(7),B(),z(8,`td`,6),K(9),B()()),e&2){let e=t.$implicit,n=W(3);O(2),J(` `,e.name,` `),O(),M(e.listener?3:-1),O(2),q(e.calls),O(2),q(n.ms(e.ms)),O(2),q(n.ms(e.maxMs))}}function EA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),K(2,`Output listeners`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Listener`),B(),z(8,`th`,4),K(9,`Calls`),B(),z(10,`th`,4),K(11,`Time`),B(),z(12,`th`,4),K(13,`Slowest`),B()()(),z(14,`tbody`),N(15,TA,10,5,`tr`,null,_g),B()()()),e&2){let e=W(2);O(15),P(e.outputs())}}function DA(e,t){if(e&1&&(z(0,`p`,1),K(1),B()),e&2){let e=t,n=W(2);O(),z_(` afterRender callbacks ran `,e.runs,` `,e.runs===1?`time`:`times`,`, `,n.ms(e.ms),` in total, slowest `,n.ms(e.maxMs),`. `)}}function OA(e,t){if(e&1&&(z(0,`p`,2),K(1),B()),e&2){let e=W(2);O(),Y(` `,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,CA,17,0,`div`),j(2,EA,17,0,`div`),B(),j(3,DA,2,4,`p`,1),j(4,OA,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 AA=10;function jA(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}var MA=class e{page=$(null);hooks=X(()=>(this.page()?.hooks??[]).slice(0,AA));outputs=X(()=>(this.page()?.outputs??[]).slice(0,AA));afterRender=X(()=>{let e=this.page()?.afterRender;return e?.runs?e:null});dropped=X(()=>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 TA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),K(2),B(),z(3,`td`,6),K(4),B(),z(5,`td`,6),K(6),B(),z(7,`td`,6),K(8),B()()),e&2){let e=t.$implicit,n=W(3);O(2),Y(``,e.name,`.`,e.hook),O(2),q(e.calls),O(2),q(n.ms(e.ms)),O(2),q(n.ms(e.maxMs))}}function EA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),K(2,`Lifecycle hooks`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Hook`),B(),z(8,`th`,4),K(9,`Calls`),B(),z(10,`th`,4),K(11,`Time`),B(),z(12,`th`,4),K(13,`Slowest`),B()()(),z(14,`tbody`),N(15,TA,9,5,`tr`,null,_g),B()()()),e&2){let e=W(2);O(15),P(e.hooks())}}function DA(e,t){if(e&1&&K(0),e&2){let e=W().$implicit;J(` (`,e.listener,`) `)}}function OA(e,t){if(e&1&&(z(0,`tr`)(1,`td`,5),K(2),j(3,DA,1,1),B(),z(4,`td`,6),K(5),B(),z(6,`td`,6),K(7),B(),z(8,`td`,6),K(9),B()()),e&2){let e=t.$implicit,n=W(3);O(2),J(` `,e.name,` `),O(),M(e.listener?3:-1),O(2),q(e.calls),O(2),q(n.ms(e.ms)),O(2),q(n.ms(e.maxMs))}}function kA(e,t){if(e&1&&(z(0,`div`)(1,`h3`),K(2,`Output listeners`),B(),z(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Listener`),B(),z(8,`th`,4),K(9,`Calls`),B(),z(10,`th`,4),K(11,`Time`),B(),z(12,`th`,4),K(13,`Slowest`),B()()(),z(14,`tbody`),N(15,OA,10,5,`tr`,null,_g),B()()()),e&2){let e=W(2);O(15),P(e.outputs())}}function AA(e,t){if(e&1&&(z(0,`p`,1),K(1),B()),e&2){let e=t,n=W(2);O(),z_(` afterRender callbacks ran `,e.runs,` `,e.runs===1?`time`:`times`,`, `,n.ms(e.ms),` in total, slowest `,n.ms(e.maxMs),`. `)}}function jA(e,t){if(e&1&&(z(0,`p`,2),K(1),B()),e&2){let e=W(2);O(),Y(` `,e.dropped(),` more hook or output `,e.dropped()===1?`row is`:`rows are`,` left out. A recording lists at most 100 of each. `)}}function MA(e,t){if(e&1&&(z(0,`div`,0),j(1,EA,17,0,`div`),j(2,kA,17,0,`div`),B(),j(3,AA,2,4,`p`,1),j(4,jA,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 NA=10;function PA(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}var FA=class e{page=$(null);hooks=X(()=>(this.page()?.hooks??[]).slice(0,NA));outputs=X(()=>(this.page()?.outputs??[]).slice(0,NA));afterRender=X(()=>{let e=this.page()?.afterRender;return e?.runs?e:null});dropped=X(()=>this.page()?.droppedTimings??0);ms(e){return PA(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,MA,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 NA(e,t){if(e&1&&(z(0,`p`,5),K(1),B()),e&2){let e=W();O(),q(e.error())}}function PA(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 FA=class e{page=$(null);maxCycles=$(200);imported=yv();error=D(``);hasCycles(){return(this.page()?.cycles.length??0)>0}exportJson(){let e=this.page();e&&PA(ak(e,e.pageId),`change-detection-${e.pageId}.json`)}exportTrace(){let e=this.page();e&&PA(fk(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=ok(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()}),K(2,`Export JSON`),B(),z(3,`button`,2),U(`click`,function(){return t.exportTrace()}),K(4,` Export trace (Perfetto) `),B(),z(5,`button`,3),U(`click`,function(){return w(e),T($g(8).click())}),K(6,`Import`),B(),z(7,`input`,4,0),U(`change`,function(){w(e);let n=$g(8);return T(t.read(n))}),B()(),j(9,NA,2,1,`p`,5)}e&2&&(O(),Fg(`disabled`,!t.hasCycles()),O(2),Fg(`disabled`,!t.hasCycles()),O(6),M(t.error()?9:-1))},styles:[`[_nghost-%COMP%] { +}`]})};function IA(e,t){if(e&1&&(z(0,`p`,5),K(1),B()),e&2){let e=W();O(),q(e.error())}}function LA(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 RA=class e{page=$(null);maxCycles=$(200);imported=yv();error=D(``);hasCycles(){return(this.page()?.cycles.length??0)>0}exportJson(){let e=this.page();e&&LA(ck(e,e.pageId),`change-detection-${e.pageId}.json`)}exportTrace(){let e=this.page();e&&LA(hk(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=lk(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()}),K(2,`Export JSON`),B(),z(3,`button`,2),U(`click`,function(){return t.exportTrace()}),K(4,` Export trace (Perfetto) `),B(),z(5,`button`,3),U(`click`,function(){return w(e),T($g(8).click())}),K(6,`Import`),B(),z(7,`input`,4,0),U(`change`,function(){w(e);let n=$g(8);return T(t.read(n))}),B()(),j(9,IA,2,1,`p`,5)}e&2&&(O(),Fg(`disabled`,!t.hasCycles()),O(2),Fg(`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; -}`]})},IA=(e,t)=>t.stat.name;function LA(e,t){if(e&1&&(z(0,`span`,8),K(1),B()),e&2){let e=W(2).$implicit;O(),J(``,e.other,` more`)}}function RA(e,t){if(e&1&&(z(0,`div`,6)(1,`span`,7),K(2),B(),j(3,LA,2,1,`span`,8),B()),e&2){let e=W().$implicit;b_(`--%NS%tone`,e.tone+`%`),O(2),q(e.label),O(),M(e.roomy?3:-1)}}function zA(e,t){if(e&1&&(z(0,`span`,10),K(1),B(),z(2,`span`,11),K(3),B()),e&2){let e=W(2).$implicit,t=W(2);O(),q(e.stat.name),O(2),q(t.fmt(e.stat.ms))}}function BA(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,zA,4,2),B()}if(e&2){let e=W(),t=e.$implicit,n=e.$index,r=W(2);b_(`--%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 VA(e,t){if(e&1&&(z(0,`li`),j(1,RA,4,4,`div`,4)(2,BA,2,6,`button`,5),B()),e&2){let e=t.$implicit;b_(`left`,e.x,`%`)(`top`,e.y,`%`)(`width`,e.w,`%`)(`height`,e.h,`%`),O(),M(e.other?1:2)}}function HA(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,VA,3,9,`li`,3,IA),B()}if(e&2){let e=W();A(`aria-label`,e.label()),O(),P(e.cells())}}function UA(e,t){e&1&&(z(0,`p`,1),K(1,`No component time in these cycles.`),B())}var WA=24,GA=3,KA=class e{stats=$([]);scope=$(`the recording`);pick=yv();current=D(0);label=X(()=>`Self time per component in ${this.scope()}, largest first. Pick one to show it in the tree.`);cells=X(()=>{let e=this.stats().filter(e=>e.ms>0),t=e.slice(0,WA),n=e.slice(WA),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=yk(i,e=>e.stat.ms,GA);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, ${hk(t.ms)}, ${r}% of self time`:`${t.name}, ${hk(t.ms)} self time, ${r}%, ${t.checks} ${t.checks===1?`check`:`checks`}`}})});tabStop=X(()=>Math.min(this.current(),Math.max(this.cells().filter(e=>!e.other).length-1,0)));fmt(e){return hk(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,HA,3,1,`ul`,0)(1,UA,2,0,`p`,1),e&2&&M(+!t.cells().length)},styles:[`[_nghost-%COMP%] { +}`]})},zA=(e,t)=>t.stat.name;function BA(e,t){if(e&1&&(z(0,`span`,8),K(1),B()),e&2){let e=W(2).$implicit;O(),J(``,e.other,` more`)}}function VA(e,t){if(e&1&&(z(0,`div`,6)(1,`span`,7),K(2),B(),j(3,BA,2,1,`span`,8),B()),e&2){let e=W().$implicit;b_(`--%NS%tone`,e.tone+`%`),O(2),q(e.label),O(),M(e.roomy?3:-1)}}function HA(e,t){if(e&1&&(z(0,`span`,10),K(1),B(),z(2,`span`,11),K(3),B()),e&2){let e=W(2).$implicit,t=W(2);O(),q(e.stat.name),O(2),q(t.fmt(e.stat.ms))}}function UA(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,HA,4,2),B()}if(e&2){let e=W(),t=e.$implicit,n=e.$index,r=W(2);b_(`--%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 WA(e,t){if(e&1&&(z(0,`li`),j(1,VA,4,4,`div`,4)(2,UA,2,6,`button`,5),B()),e&2){let e=t.$implicit;b_(`left`,e.x,`%`)(`top`,e.y,`%`)(`width`,e.w,`%`)(`height`,e.h,`%`),O(),M(e.other?1:2)}}function GA(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,WA,3,9,`li`,3,zA),B()}if(e&2){let e=W();A(`aria-label`,e.label()),O(),P(e.cells())}}function KA(e,t){e&1&&(z(0,`p`,1),K(1,`No component time in these cycles.`),B())}var qA=24,JA=3,YA=class e{stats=$([]);scope=$(`the recording`);pick=yv();current=D(0);label=X(()=>`Self time per component in ${this.scope()}, largest first. Pick one to show it in the tree.`);cells=X(()=>{let e=this.stats().filter(e=>e.ms>0),t=e.slice(0,qA),n=e.slice(qA),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=Sk(i,e=>e.stat.ms,JA);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, ${vk(t.ms)}, ${r}% of self time`:`${t.name}, ${vk(t.ms)} self time, ${r}%, ${t.checks} ${t.checks===1?`check`:`checks`}`}})});tabStop=X(()=>Math.min(this.current(),Math.max(this.cells().filter(e=>!e.other).length-1,0)));fmt(e){return vk(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,GA,3,1,`ul`,0)(1,KA,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); -}`]})},qA=(e,t)=>t.id;function JA(e,t){if(e&1){let e=V();I(0,`button`,14),H(`click`,function(){return w(e),T(W(2).clear())}),K(1,`Clear`),L()}}function YA(e,t){if(e&1){let e=V();I(0,`button`,11),H(`click`,function(){return w(e),T(W().toggle())}),R(1,`span`,12),K(2),L(),j(3,JA,2,0,`button`,13)}if(e&2){let e=W();G(`on`,e.recording()),F(`disabled`,!e.pageId()),O(2),J(` `,e.recording()?`Stop recording`:`Record`,` `),O(),M(e.cycles().length?3:-1)}}function XA(e,t){if(e&1){let e=V();I(0,`p`,6)(1,`span`,15),K(2,`Imported recording`),L(),I(3,`span`,16),K(4),L(),I(5,`button`,14),H(`click`,function(){return w(e),T(W().closeImport())}),K(6,`Back to live recording`),L()()}e&2&&(O(4),q(t.fileName))}function ZA(e,t){e&1&&K(0,` An app on a device has no DOM, so checks that changed nothing are not counted there. `)}function QA(e,t){e&1&&(I(0,`p`,9),K(1,` The page has Angular's profiler hook, but the recording could not attach to it yet. The page tries again on its next update while recording is on. If this stays, stop and start the recording, or reload the page. `),L())}function $A(e,t){e&1&&R(0,`app-angular-unavailable`,17),e&2&&F(`page`,W(2).angularPage())}function ej(e,t){e&1&&j(0,QA,2,0,`p`,9)(1,$A,1,1,`app-angular-unavailable`,17),e&2&&M(+!W().attachPending())}function tj(e,t){e&1&&(I(0,`p`,9),K(1,`Angular profiling stays on until the page reloads.`),L())}function nj(e,t){e&1&&R(0,`app-angular-unavailable`,21),e&2&&F(`page`,W(2).angularPage())}function rj(e,t){if(e&1){let e=V();I(0,`div`,18)(1,`span`,19),K(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`,12),K(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`,12),K(8,` Performance track `),L(),I(9,`button`,20),H(`click`,function(){return w(e),T(W().setView(`angularProfiling`,!0))}),R(10,`span`,12),K(11,` Angular profiling `),L()(),I(12,`p`,7),K(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,tj,2,0,`p`,9)(15,nj,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 ij(e,t){if(e&1&&(I(0,`p`,9),K(1),L()),e&2){let e=t.$implicit;O(),q(e)}}function aj(e,t){if(e&1&&(I(0,`p`,24),K(1),L()),e&2){let e=W(2);O(),J(` `,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 oj(e,t){e&1&&(I(0,`p`,9),K(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`),K(1,`Cycles`),L(),I(2,`app-cd-cycle-chart`,22),U_(`rangeChange`,function(t){w(e);let n=W();return H_(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,aj,2,1,`p`,24),I(5,`h3`),K(6,`Self time by component`),L(),j(7,oj,2,0,`p`,9),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()),V_(`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`,16),K(2),L(),I(3,`td`,31),K(4),L(),I(5,`td`,31),K(6),L(),I(7,`td`,31),K(8),L()()),e&2){let e=t.$implicit,n=W(2);O(2),q(e.name),O(2),q(e.checks),O(2),q(n.ms(e.ms)),O(2),q(n.ms(e.maxMs))}}function lj(e,t){e&1&&(I(0,`tr`)(1,`td`,32),K(2,`No component time in the picked cycles.`),L()())}function uj(e,t){if(e&1&&(I(0,`span`,34),K(1,`from `),I(2,`span`,16),K(3),L()()),e&2){let e=W(3);O(3),q(e.causeText(t))}}function dj(e,t){if(e&1&&(I(0,`span`,34),K(1,`after `),I(2,`span`,16),K(3),L()()),e&2){let e=W().$implicit;O(3),q(e.trigger)}}function fj(e,t){if(e&1&&(I(0,`span`,35),K(1),L()),e&2){let e=W().$implicit;O(),J(``,e.unchanged,` changed nothing`)}}function pj(e,t){if(e&1&&(I(0,`span`,35),K(1),L()),e&2){let e=W().$implicit,t=W(2);O(),J(`hooks `,t.ms(e.hookMs))}}function mj(e,t){if(e&1&&(I(0,`span`,35),K(1),L()),e&2){let e=W().$implicit,t=W(2);O(),J(`afterRender `,t.ms(e.afterRenderMs))}}function hj(e,t){if(e&1&&(I(0,`span`,36),K(1,` slowest `),I(2,`span`,16),K(3),L(),K(4),L()),e&2){let e=t,n=W(3);O(3),q(e.name),O(),J(` `,n.ms(e.ms),` `)}}function gj(e,t){if(e&1&&(I(0,`li`)(1,`span`,33),K(2),L(),I(3,`span`,16),K(4),L(),I(5,`span`),K(6),L(),j(7,uj,4,1,`span`,34)(8,dj,4,1,`span`,34),j(9,fj,2,1,`span`,35),j(10,pj,2,1,`span`,35),j(11,mj,2,1,`span`,35),j(12,hj,5,2,`span`,36),L()),e&2){let e,n,r=t.$implicit,i=W(2);O(2),q(i.clock(r.at)),O(2),q(i.ms(r.ms)),O(2),z_(` `,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 _j(e,t){if(e&1&&(I(0,`div`,26)(1,`div`)(2,`h3`),K(3),L(),I(4,`table`)(5,`thead`)(6,`tr`)(7,`th`,27),K(8,`Component`),L(),I(9,`th`,28),K(10,`Checks`),L(),I(11,`th`,28),K(12,`Self time`),L(),I(13,`th`,28),K(14,`Slowest`),L()()(),I(15,`tbody`),N(16,cj,9,4,`tr`,null,_g,!1,lj,3,0,`tr`),L()()(),I(19,`div`)(20,`h3`),K(21,`Latest cycles`),L(),I(22,`ol`,29),N(23,gj,13,11,`li`,null,qA),L()()(),R(25,`app-cd-timing`,30)(26,`app-cd-diagnosis`,30)),e&2){let e=W();O(3),J(` `,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 vj(e,t){e&1&&(I(0,`p`,10),K(1,`Use the app. Cycles show up here as Angular runs change detection.`),L())}var yj=3e3,bj=10,xj=class e{livePage=$(null,{alias:`page`});pageId=$(null);rpc=$(null);native=$(!1);angularPages=TD(()=>this.rpc());angularPage=X(()=>ED(this.angularPages(),this.pageId()));attachPending=X(()=>this.angularPage()?.capabilities.profiler===!0);showComponent=yv();range=D(null);imported=D(null);page=X(()=>this.imported()?.page??this.livePage());views=Q(()=>this.livePage()?.options??{flash:!1,track:!1,angularProfiling:!1,angularProfilingAvailable:!0});canShowViews=X(()=>!!this.pageId()&&this.livePage()?.supported!==!1);message=D(``);announcement=D(``);recording=X(()=>this.page()?.recording===!0);cycles=X(()=>this.page()?.cycles??[]);maxCycles=X(()=>fE(this.rpc()).limits.cdCycles);picked=X(()=>gk(this.cycles(),this.range()));hasSpans=X(()=>this.picked().some(e=>e.spans?.length));spanNames=X(()=>this.page()?.spanNames??[]);stats=X(()=>this.range()?_k(this.picked()):[...this.page()?.components??[]].sort((e,t)=>t.ms-e.ms));scope=X(()=>{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=X(()=>this.stats().slice(0,bj));latest=X(()=>this.cycles().slice(-30).reverse());capNotes=X(()=>{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=X(()=>{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 pO(e)}causeText(e){return ZO(e)}stopping=D(!1);stopTimer;constructor(){bc(()=>{this.stopping()&&this.livePage()?.recording!==!0&&Z(()=>this.announceStopped())}),C(Ns).onDestroy(()=>clearTimeout(this.stopTimer))}announceStopped(){clearTimeout(this.stopTimer),this.stopping.set(!1);let e=this.livePage()?.cycles.length??0;this.announce(`Recording stopped. ${e} ${e===1?`cycle`:`cycles`} recorded.`)}async toggle(){if(this.recording()){if(!await this.send({on:!1},``,()=>``,`request-change-detection-record`,{quiet:!0}))return;this.stopping.set(!0),clearTimeout(this.stopTimer),this.stopTimer=setTimeout(()=>this.announceStopped(),yj)}else 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`,{quiet:i=!1}={}){this.message.set(t);try{if(!this.rpc())throw Error(`no client`);return await XT(this.rpc(),r,{pageId:this.pageId(),...e}),this.message.set(``),i||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`],[`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`],[`capability`,`profiler`,`missing`,``,`compact`,``,3,`page`],[`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),K(3,`Change detection`),L(),j(4,YA,4,5),I(5,`app-cd-transfer`,3),H(`imported`,function(e){return t.showImport(e)}),L(),I(6,`p`,4),K(7),L(),I(8,`p`,5),K(9),L()(),j(10,XA,7,1,`p`,6),I(11,`p`,7),K(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,ZA,1,0),L(),j(14,ej,2,1),j(15,rj,16,7),R(16,`app-limit-note`,8),N(17,ij,2,1,`p`,9,vg),j(19,sj,9,9),j(20,_j,27,4)(21,vj,2,0,`p`,10),L()),e&2){let e;O(4),M(t.imported()?-1:4),O(),F(`page`,t.page())(`maxCycles`,t.maxCycles()),O(2),q(t.status()),O(2),q(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:[AD,yO,MA,Wk,FA,oA,xA,KA],styles:[`[_nghost-%COMP%] { +}`]})},XA=(e,t)=>t.id;function ZA(e,t){if(e&1){let e=V();I(0,`button`,14),H(`click`,function(){return w(e),T(W(2).clear())}),K(1,`Clear`),L()}}function QA(e,t){if(e&1){let e=V();I(0,`button`,11),H(`click`,function(){return w(e),T(W().toggle())}),R(1,`span`,12),K(2),L(),j(3,ZA,2,0,`button`,13)}if(e&2){let e=W();G(`on`,e.recording()),F(`disabled`,!e.pageId()),O(2),J(` `,e.recording()?`Stop recording`:`Record`,` `),O(),M(e.cycles().length?3:-1)}}function $A(e,t){if(e&1){let e=V();I(0,`p`,6)(1,`span`,15),K(2,`Imported recording`),L(),I(3,`span`,16),K(4),L(),I(5,`button`,14),H(`click`,function(){return w(e),T(W().closeImport())}),K(6,`Back to live recording`),L()()}e&2&&(O(4),q(t.fileName))}function ej(e,t){e&1&&K(0,` An app on a device has no DOM, so checks that changed nothing are not counted there. `)}function tj(e,t){e&1&&(I(0,`p`,9),K(1,` The page has Angular's profiler hook, but the recording could not attach to it yet. The page tries again on its next update while recording is on. If this stays, stop and start the recording, or reload the page. `),L())}function nj(e,t){e&1&&R(0,`app-angular-unavailable`,17),e&2&&F(`page`,W(2).angularPage())}function rj(e,t){e&1&&j(0,tj,2,0,`p`,9)(1,nj,1,1,`app-angular-unavailable`,17),e&2&&M(+!W().attachPending())}function ij(e,t){e&1&&(I(0,`p`,9),K(1,`Angular profiling stays on until the page reloads.`),L())}function aj(e,t){e&1&&R(0,`app-angular-unavailable`,21),e&2&&F(`page`,W(2).angularPage())}function oj(e,t){if(e&1){let e=V();I(0,`div`,18)(1,`span`,19),K(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`,12),K(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`,12),K(8,` Performance track `),L(),I(9,`button`,20),H(`click`,function(){return w(e),T(W().setView(`angularProfiling`,!0))}),R(10,`span`,12),K(11,` Angular profiling `),L()(),I(12,`p`,7),K(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,ij,2,0,`p`,9)(15,aj,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 sj(e,t){if(e&1&&(I(0,`p`,9),K(1),L()),e&2){let e=t.$implicit;O(),q(e)}}function cj(e,t){if(e&1&&(I(0,`p`,24),K(1),L()),e&2){let e=W(2);O(),J(` `,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 lj(e,t){e&1&&(I(0,`p`,9),K(1,` For picked cycles, totals come from the 10 slowest components each cycle lists. `),L())}function uj(e,t){if(e&1){let e=V();I(0,`h3`),K(1,`Cycles`),L(),I(2,`app-cd-cycle-chart`,22),U_(`rangeChange`,function(t){w(e);let n=W();return H_(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,cj,2,1,`p`,24),I(5,`h3`),K(6,`Self time by component`),L(),j(7,lj,2,0,`p`,9),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()),V_(`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 dj(e,t){if(e&1&&(I(0,`tr`)(1,`td`,16),K(2),L(),I(3,`td`,31),K(4),L(),I(5,`td`,31),K(6),L(),I(7,`td`,31),K(8),L()()),e&2){let e=t.$implicit,n=W(2);O(2),q(e.name),O(2),q(e.checks),O(2),q(n.ms(e.ms)),O(2),q(n.ms(e.maxMs))}}function fj(e,t){e&1&&(I(0,`tr`)(1,`td`,32),K(2,`No component time in the picked cycles.`),L()())}function pj(e,t){if(e&1&&(I(0,`span`,34),K(1,`from `),I(2,`span`,16),K(3),L()()),e&2){let e=W(3);O(3),q(e.causeText(t))}}function mj(e,t){if(e&1&&(I(0,`span`,34),K(1,`after `),I(2,`span`,16),K(3),L()()),e&2){let e=W().$implicit;O(3),q(e.trigger)}}function hj(e,t){if(e&1&&(I(0,`span`,35),K(1),L()),e&2){let e=W().$implicit;O(),J(``,e.unchanged,` changed nothing`)}}function gj(e,t){if(e&1&&(I(0,`span`,35),K(1),L()),e&2){let e=W().$implicit,t=W(2);O(),J(`hooks `,t.ms(e.hookMs))}}function _j(e,t){if(e&1&&(I(0,`span`,35),K(1),L()),e&2){let e=W().$implicit,t=W(2);O(),J(`afterRender `,t.ms(e.afterRenderMs))}}function vj(e,t){if(e&1&&(I(0,`span`,36),K(1,` slowest `),I(2,`span`,16),K(3),L(),K(4),L()),e&2){let e=t,n=W(3);O(3),q(e.name),O(),J(` `,n.ms(e.ms),` `)}}function yj(e,t){if(e&1&&(I(0,`li`)(1,`span`,33),K(2),L(),I(3,`span`,16),K(4),L(),I(5,`span`),K(6),L(),j(7,pj,4,1,`span`,34)(8,mj,4,1,`span`,34),j(9,hj,2,1,`span`,35),j(10,gj,2,1,`span`,35),j(11,_j,2,1,`span`,35),j(12,vj,5,2,`span`,36),L()),e&2){let e,n,r=t.$implicit,i=W(2);O(2),q(i.clock(r.at)),O(2),q(i.ms(r.ms)),O(2),z_(` `,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 bj(e,t){if(e&1&&(I(0,`div`,26)(1,`div`)(2,`h3`),K(3),L(),I(4,`table`)(5,`thead`)(6,`tr`)(7,`th`,27),K(8,`Component`),L(),I(9,`th`,28),K(10,`Checks`),L(),I(11,`th`,28),K(12,`Self time`),L(),I(13,`th`,28),K(14,`Slowest`),L()()(),I(15,`tbody`),N(16,dj,9,4,`tr`,null,_g,!1,fj,3,0,`tr`),L()()(),I(19,`div`)(20,`h3`),K(21,`Latest cycles`),L(),I(22,`ol`,29),N(23,yj,13,11,`li`,null,XA),L()()(),R(25,`app-cd-timing`,30)(26,`app-cd-diagnosis`,30)),e&2){let e=W();O(3),J(` `,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 xj(e,t){e&1&&(I(0,`p`,10),K(1,`Use the app. Cycles show up here as Angular runs change detection.`),L())}var Sj=3e3,Cj=10,wj=class e{livePage=$(null,{alias:`page`});pageId=$(null);rpc=$(null);native=$(!1);angularPages=OD(()=>this.rpc());angularPage=X(()=>kD(this.angularPages(),this.pageId()));attachPending=X(()=>this.angularPage()?.capabilities.profiler===!0);showComponent=yv();range=D(null);imported=D(null);page=X(()=>this.imported()?.page??this.livePage());views=Q(()=>this.livePage()?.options??{flash:!1,track:!1,angularProfiling:!1,angularProfilingAvailable:!0});canShowViews=X(()=>!!this.pageId()&&this.livePage()?.supported!==!1);message=D(``);announcement=D(``);recording=X(()=>this.page()?.recording===!0);cycles=X(()=>this.page()?.cycles??[]);maxCycles=X(()=>hE(this.rpc()).limits.cdCycles);picked=X(()=>yk(this.cycles(),this.range()));hasSpans=X(()=>this.picked().some(e=>e.spans?.length));spanNames=X(()=>this.page()?.spanNames??[]);stats=X(()=>this.range()?bk(this.picked()):[...this.page()?.components??[]].sort((e,t)=>t.ms-e.ms));scope=X(()=>{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=X(()=>this.stats().slice(0,Cj));latest=X(()=>this.cycles().slice(-30).reverse());capNotes=X(()=>{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=X(()=>{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 gO(e)}causeText(e){return ek(e)}confirming=D(null);confirmTimer;constructor(){vc(()=>{let e=this.confirming();e!==null&&this.livePage()?.recording===!0===e&&Z(()=>this.confirmed(e))}),C(js).onDestroy(()=>clearTimeout(this.confirmTimer))}confirmed(e){clearTimeout(this.confirmTimer),this.confirming.set(null),this.message.set(``);let t=this.livePage()?.cycles.length??0;this.announce(e?`Recording started.`:`Recording stopped. ${t} ${t===1?`cycle`:`cycles`} recorded.`)}unconfirmed(e){let t=`The page did not confirm that the recording ${e?`started`:`stopped`}. The tab may be in the background, closed or reloading.`;this.message.set(t),this.announce(t)}async toggle(){let e=!this.recording();clearTimeout(this.confirmTimer),this.confirming.set(null),await this.send({on:e},e?`Starting…`:`Stopping…`,()=>``,`request-change-detection-record`,{quiet:!0,keepPending:!0})&&(this.confirming.set(e),this.confirmTimer=setTimeout(()=>{this.confirming()===e&&this.unconfirmed(e)},Sj))}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`,{quiet:i=!1,keepPending:a=!1}={}){this.message.set(t);try{if(!this.rpc())throw Error(`no client`);return await $T(this.rpc(),r,{pageId:this.pageId(),...e}),a||this.message.set(``),i||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`],[`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`],[`capability`,`profiler`,`missing`,``,`compact`,``,3,`page`],[`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),K(3,`Change detection`),L(),j(4,QA,4,5),I(5,`app-cd-transfer`,3),H(`imported`,function(e){return t.showImport(e)}),L(),I(6,`p`,4),K(7),L(),I(8,`p`,5),K(9),L()(),j(10,$A,7,1,`p`,6),I(11,`p`,7),K(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,ej,1,0),L(),j(14,rj,2,1),j(15,oj,16,7),R(16,`app-limit-note`,8),N(17,sj,2,1,`p`,9,vg),j(19,uj,9,9),j(20,bj,27,4)(21,xj,2,0,`p`,10),L()),e&2){let e;O(4),M(t.imported()?-1:4),O(),F(`page`,t.page())(`maxCycles`,t.maxCycles()),O(2),q(t.status()),O(2),q(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:[ND,SO,FA,qk,RA,lA,wA,YA],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; -}`]})},Sj=[`*`];function Cj(e,t){e&1&&K(0),e&2&&q(W(2).label())}function wj(e,t){e&1&&Yg(0,0,null,Cj,1,1)}function Tj(e,t){if(e&1&&(I(0,`span`,4),K(1),L()),e&2){let e=W(2);O(),q(e.message())}}function Ej(e,t){if(e&1){let e=V();I(0,`button`,2),H(`click`,function(){return w(e),T(W().open())}),Ng(1,3),L(),j(2,Tj,2,1,`span`,4)}if(e&2){let e=W(),t=$g(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 Dj(e,t){if(e&1&&(I(0,`span`,1),Ng(1,3),L()),e&2){let e=W(),t=$g(1);F(`title`,e.label()),O(),F(`ngTemplateOutlet`,t)}}var Oj=class e{source=D(D(null));client=X(()=>this.source()());available=X(()=>{let e=this.client();return!!e&&!QT(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 XT(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=Vl({token:e,factory:e.ɵfac})};function kj(e,t){return t?`${e}:${t}`:e}var Aj=class e{editor=C(Oj);file=$.required();line=$(void 0);label=X(()=>kj(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:Sj,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&&(Jg(),Yh(0,wj,2,0,`ng-template`,null,0,fv),j(2,Ej,3,4)(3,Dj,2,2,`span`,1)),e&2&&(O(2),M(t.editor.available()?2:3))},dependencies:[py],styles:[`[_nghost-%COMP%] { +}`]})},Tj=[`*`];function Ej(e,t){e&1&&K(0),e&2&&q(W(2).label())}function Dj(e,t){e&1&&Yg(0,0,null,Ej,1,1)}function Oj(e,t){if(e&1&&(I(0,`span`,4),K(1),L()),e&2){let e=W(2);O(),q(e.message())}}function kj(e,t){if(e&1){let e=V();I(0,`button`,2),H(`click`,function(){return w(e),T(W().open())}),Ng(1,3),L(),j(2,Oj,2,1,`span`,4)}if(e&2){let e=W(),t=$g(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 Aj(e,t){if(e&1&&(I(0,`span`,1),Ng(1,3),L()),e&2){let e=W(),t=$g(1);F(`title`,e.label()),O(),F(`ngTemplateOutlet`,t)}}var jj=class e{source=D(D(null));client=X(()=>this.source()());available=X(()=>{let e=this.client();return!!e&&!tE(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 $T(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=zl({token:e,factory:e.ɵfac})};function Mj(e,t){return t?`${e}:${t}`:e}var Nj=class e{editor=C(jj);file=$.required();line=$(void 0);label=X(()=>Mj(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:Tj,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&&(Jg(),Yh(0,Dj,2,0,`ng-template`,null,0,fv),j(2,kj,3,4)(3,Aj,2,2,`span`,1)),e&2&&(O(2),M(t.editor.available()?2:3))},dependencies:[py],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; -}`]})},jj=[`field`],Mj=[`editButton`],Nj=[`valueBox`];function Pj(e,t){if(e&1){let e=V();z(0,`div`,5)(1,`label`,6),K(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())}),K(6,`Apply`),B(),z(7,`button`,9),U(`click`,function(){return w(e),T(W().cancel())}),K(8,`Cancel`),B()(),z(9,`p`,10),K(10),B()}if(e&2){let e=W();O(),Fg(`htmlFor`,e.fieldId),O(),J(`New value of `,e.prop().name,`, as JSON`),O(),Fg(`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),Fg(`disabled`,e.busy()),O(4),Fg(`id`,e.hintId),O(),J(` JSON, such as "text", 42, true or `,e.objectSample,`. Enter applies, Escape cancels. `)}}function Fj(e,t){if(e&1&&(z(0,`pre`,null,1),K(2),cv(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),q(lv(3,4,e.prop().value))}}function Ij(e,t){if(e&1){let e=V();z(0,`button`,14,2),U(`click`,function(){return w(e),T(W(2).start())}),K(2,` Edit `),B()}if(e&2){let e=W(2);Fg(`disabled`,e.busy()),A(`aria-label`,`Edit `+e.prop().name)}}function Lj(e,t){if(e&1&&(z(0,`p`,13),K(1),B()),e&2){let e=W(2);O(),q(e.prop().locked)}}function Rj(e,t){if(e&1&&(z(0,`div`,11),j(1,Fj,4,6,`pre`),j(2,Ij,3,2,`button`,12),B(),j(3,Lj,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 zj(e,t){if(e&1&&(z(0,`p`,3),K(1),B()),e&2){let e=W();Fg(`id`,e.errorId),O(),q(e.error())}}var Bj=0;function Vj(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 Hj=class e{prop=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);bare=$(!1);readDraft=$(null);fieldId=`prop-edit-${++Bj}`;hintId=`${this.fieldId}-hint`;errorId=`${this.fieldId}-error`;objectSample=`{"a": 1}`;editing=D(!1);draft=D(``);busy=D(!1);error=D(``);done=D(``);editable=X(()=>this.writes()&&!!this.prop().edit&&!!this.pageId()&&!!this.rpc());field=Ev(`field`);editButton=Ev(`editButton`);valueBox=Ev(`valueBox`);injector=C(js);scrollable=D(!1);constructor(){Nv(()=>{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),dd(()=>{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=Vj(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(){dd(()=>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&&Zg(t.field,jj,5)(t.editButton,Mj,5)(t.valueBox,Nj,5),e&2&&Qg(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,Pj,11,11)(1,Rj,4,3),j(2,zj,2,2,`p`,3),z(3,`p`,4),K(4),B()),e&2&&(M(+!t.editing()),O(2),M(t.error()?2:-1),O(2),q(t.done()))},dependencies:[yy],styles:[`[_nghost-%COMP%] { +}`]})},Pj=[`field`],Fj=[`editButton`],Ij=[`valueBox`];function Lj(e,t){if(e&1){let e=V();z(0,`div`,5)(1,`label`,6),K(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())}),K(6,`Apply`),B(),z(7,`button`,9),U(`click`,function(){return w(e),T(W().cancel())}),K(8,`Cancel`),B()(),z(9,`p`,10),K(10),B()}if(e&2){let e=W();O(),Fg(`htmlFor`,e.fieldId),O(),J(`New value of `,e.prop().name,`, as JSON`),O(),Fg(`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),Fg(`disabled`,e.busy()),O(4),Fg(`id`,e.hintId),O(),J(` JSON, such as "text", 42, true or `,e.objectSample,`. Enter applies, Escape cancels. `)}}function Rj(e,t){if(e&1&&(z(0,`pre`,null,1),K(2),cv(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),q(lv(3,4,e.prop().value))}}function zj(e,t){if(e&1){let e=V();z(0,`button`,14,2),U(`click`,function(){return w(e),T(W(2).start())}),K(2,` Edit `),B()}if(e&2){let e=W(2);Fg(`disabled`,e.busy()),A(`aria-label`,`Edit `+e.prop().name)}}function Bj(e,t){if(e&1&&(z(0,`p`,13),K(1),B()),e&2){let e=W(2);O(),q(e.prop().locked)}}function Vj(e,t){if(e&1&&(z(0,`div`,11),j(1,Rj,4,6,`pre`),j(2,zj,3,2,`button`,12),B(),j(3,Bj,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 Hj(e,t){if(e&1&&(z(0,`p`,3),K(1),B()),e&2){let e=W();Fg(`id`,e.errorId),O(),q(e.error())}}var Uj=0;function Wj(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 Gj=class e{prop=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);bare=$(!1);readDraft=$(null);fieldId=`prop-edit-${++Uj}`;hintId=`${this.fieldId}-hint`;errorId=`${this.fieldId}-error`;objectSample=`{"a": 1}`;editing=D(!1);draft=D(``);busy=D(!1);error=D(``);done=D(``);editable=X(()=>this.writes()&&!!this.prop().edit&&!!this.pageId()&&!!this.rpc());field=Ev(`field`);editButton=Ev(`editButton`);valueBox=Ev(`valueBox`);injector=C(ks);scrollable=D(!1);constructor(){Nv(()=>{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),dd(()=>{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=Wj(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(){dd(()=>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&&Zg(t.field,Pj,5)(t.editButton,Fj,5)(t.valueBox,Ij,5),e&2&&Qg(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,Lj,11,11)(1,Vj,4,3),j(2,Hj,2,2,`p`,3),z(3,`p`,4),K(4),B()),e&2&&(M(+!t.editing()),O(2),M(t.error()?2:-1),O(2),q(t.done()))},dependencies:[yy],styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1969,7 +1969,7 @@ button.edit[_ngcontent-%COMP%] { .error[_ngcontent-%COMP%] { color: var(--%NS%danger-text); -}`]})},Uj=1e3,Wj={depth:5,limit:100},Gj=`[redacted]`;function Kj(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function qj(e){return Kj(e)&&typeof e.$more==`number`&&Object.keys(e).length===1}function Jj(e){return Kj(e)&&typeof e.$collapsed==`string`&&typeof e.size==`number`&&Object.keys(e).length===2}function Yj(e){return e===`Array`?`array`:e===`Map`?`map`:e===`Set`?`set`:`object`}function Xj(e){return e.$type===`Map`&&Array.isArray(e.entries)}function Zj(e){return e.$type===`Set`&&Array.isArray(e.values)}function Qj(e){return Object.keys(e).filter(e=>e!==`$type`&&e!==`$more`)}function $j(e){if(!e||typeof e!=`object`)return null;if(Jj(e))return e.size<=0?null:{kind:Yj(e.$collapsed),type:e.$collapsed,size:e.size,collapsed:!0};if(qj(e))return null;if(Array.isArray(e)){let t=e.at(-1),n=qj(t)?t.$more:0,r=e.length-+!!n+n;return r?{kind:`array`,type:`Array`,size:r,collapsed:!1}:null}let t=e;if(Xj(t)||Zj(t)){let e=typeof t.size==`number`?t.size:0,n=Xj(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=Qj(t).length+n,i=typeof t.$type==`string`?t.$type:`Object`;return r?{kind:`object`,type:i,size:r,collapsed:!1}:null}function eM(e){if(typeof e==`string`)return JSON.stringify(e);let t=$j(e);if(t)return rM(t);try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function tM(e){let t=$j(e);if(!t||t.collapsed)return{children:[],more:0};if(Array.isArray(e)){let n=(qj(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:eM(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:Qj(n).map(e=>({key:e,label:e,value:n[e]})),more:typeof n.$more==`number`?n.$more:0}}function nM(e,t,n){return`${e} ${e===1?t:n}`}function rM(e){let t={array:nM(e.size,`item`,`items`),object:nM(e.size,`key`,`keys`),map:nM(e.size,`entry`,`entries`),set:nM(e.size,`value`,`values`)}[e.kind];return`${e.type} (${t})`}function iM(e,t){return JSON.stringify(t===void 0?e:[t,...e])}function aM(e,t){return e.map((e,n)=>n===0?e:(t?t[n-1]!==`object`:/^\d+$/.test(e))?`[${e}]`:`.${e}`).join(``)}function oM(e){return e.every(e=>e&&e===e.trim()&&!/[.[\]]/.test(e))?e.join(`.`):null}var sM=/^\[(Getter|Unreadable|Circular|Truncated|Function\b.*|Promise)\]$/;function cM(e){return e===null||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e!==Gj&&!sM.test(e)&&!e.endsWith(`…`)}function lM(e,t){return!e||t.kind===`map`||t.kind===`set`||e===`signal`&&t.kind===`object`&&t.type!==`Object`?null:e}function uM(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=iM(e);if(!(s.has(r)||a.length>=i)){s.add(r);for(let r of tM(t).children){let t=[...e,r.key];if(r.label.toLowerCase().includes(o)&&a.push(t),!$j(r.value))continue;let i=n(t)??($j(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 fM(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(),Cs(),I(3,`span`,14),K(4),L(),I(5,`span`,5),K(6),L()()}if(e&2){let e=W().$implicit;A(`aria-expanded`,e.open)(`aria-label`,e.label+`: `+e.text),O(4),J(``,e.label,`:`),O(2),q(e.text)}}function pM(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 mM(e,t){if(e&1&&(I(0,`span`,16),K(1),L()),e&2){let e=W(2).$implicit;O(),q(e.text)}}function hM(e,t){if(e&1&&(I(0,`span`,14),K(1),L(),j(2,pM,1,5,`app-prop-value`,15)(3,mM,2,1,`span`,16)),e&2){let e,t=W().$implicit;O(),J(``,t.label,`:`),O(),M((e=t.edit)?2:3,e)}}function gM(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))}),K(1),I(2,`span`,18),K(3),L()()}if(e&2){let e=W().$implicit,t=W(3);O(),J(` Show `,t.step(e),` more `),O(2),J(`(`,e.more,` not listed)`)}}function _M(e,t){e&1&&(I(0,`span`,12),K(1,`Reading from the page…`),L())}function vM(e,t){if(e&1&&(I(0,`span`,13),K(1),L()),e&2){let e=W().$implicit;O(),q(e.text)}}function yM(e,t){if(e&1&&(I(0,`li`,9),j(1,fM,7,4,`button`,10)(2,hM,4,2)(3,gM,4,2,`button`,11)(4,_M,2,0,`span`,12)(5,vM,2,1,`span`,13),L()),e&2){let e,n=t.$implicit;b_(`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 bM(e,t){if(e&1&&(I(0,`ul`,7),N(1,yM,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 xM(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(),Cs(),I(4,`span`,5),K(5),L()(),R(6,`app-prop-value`,6),L(),j(7,bM,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),q(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 SM(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 CM=0;function wM(e){if(e===void 0)return`undefined`;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function TM(e){if(Array.isArray(e))return e.every(TM);if(e&&typeof e==`object`){let t=e;return![`$collapsed`,`$more`,`$type`].some(e=>Object.hasOwn(t,e))&&Object.values(t).every(TM)}return cM(e)}var EM=class e{prop=$.required();store=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);directive=$(void 0);query=$(``);listId=`value-tree-${++CM}`;host=C(Wl);pendingMore=null;constructor(){Nv(()=>{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=X(()=>[this.prop().prop]);rootValue=X(()=>this.store().level(this.rootPath(),this.directive())??this.prop().value);root=X(()=>$j(this.rootValue()));needle=X(()=>this.query().trim().toLowerCase());matches=X(()=>{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 uM(this.rootPath(),this.rootValue(),e=>n.level(e,r),e)});rootOpen=X(()=>!!this.matches()?.length||this.store().isOpen(this.rootPath(),this.directive()));rows=X(()=>{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(iM(e));for(let t=2;t<=e.length;t++)i.add(iM(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}=tM(e);for(let e of h){let h=[...o,e.key],g=iM(h);if(r&&!m&&!i.has(g))continue;let _=$j(e.value),ee=iM(h,n);if(!_){let t=p&&cM(e.value)?oM(h):null;c.push({id:ee,kind:`leaf`,depth:f,path:h,label:e.label,text:wM(e.value),edit:s&&t&&p?{name:aM(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:rM(_),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,lM(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:`${iM(e,n)}:${r}`,kind:r,depth:t,path:e,label:``,text:``});return l(this.rootValue(),this.rootPath(),[e.kind],0,s?lM(o.editInside??null,e):null,!r),c});readWhole=async()=>{let e=await this.store().read(this.rootPath(),Wj.depth,Wj.limit);return e.ok?TM(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 rM(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,xM,8,12)(1,SM,1,5,`app-prop-value`,0),e&2){let e;M((e=t.root())?0:1,e)}},dependencies:[Hj],styles:[`[_nghost-%COMP%] { +}`]})},Kj=1e3,qj={depth:5,limit:100},Jj=`[redacted]`;function Yj(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Xj(e){return Yj(e)&&typeof e.$more==`number`&&Object.keys(e).length===1}function Zj(e){return Yj(e)&&typeof e.$collapsed==`string`&&typeof e.size==`number`&&Object.keys(e).length===2}function Qj(e){return e===`Array`?`array`:e===`Map`?`map`:e===`Set`?`set`:`object`}function $j(e){return e.$type===`Map`&&Array.isArray(e.entries)}function eM(e){return e.$type===`Set`&&Array.isArray(e.values)}function tM(e){return Object.keys(e).filter(e=>e!==`$type`&&e!==`$more`)}function nM(e){if(!e||typeof e!=`object`)return null;if(Zj(e))return e.size<=0?null:{kind:Qj(e.$collapsed),type:e.$collapsed,size:e.size,collapsed:!0};if(Xj(e))return null;if(Array.isArray(e)){let t=e.at(-1),n=Xj(t)?t.$more:0,r=e.length-+!!n+n;return r?{kind:`array`,type:`Array`,size:r,collapsed:!1}:null}let t=e;if($j(t)||eM(t)){let e=typeof t.size==`number`?t.size:0,n=$j(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=tM(t).length+n,i=typeof t.$type==`string`?t.$type:`Object`;return r?{kind:`object`,type:i,size:r,collapsed:!1}:null}function rM(e){if(typeof e==`string`)return JSON.stringify(e);let t=nM(e);if(t)return oM(t);try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function iM(e){let t=nM(e);if(!t||t.collapsed)return{children:[],more:0};if(Array.isArray(e)){let n=(Xj(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:rM(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:tM(n).map(e=>({key:e,label:e,value:n[e]})),more:typeof n.$more==`number`?n.$more:0}}function aM(e,t,n){return`${e} ${e===1?t:n}`}function oM(e){let t={array:aM(e.size,`item`,`items`),object:aM(e.size,`key`,`keys`),map:aM(e.size,`entry`,`entries`),set:aM(e.size,`value`,`values`)}[e.kind];return`${e.type} (${t})`}function sM(e,t){return JSON.stringify(t===void 0?e:[t,...e])}function cM(e,t){return e.map((e,n)=>n===0?e:(t?t[n-1]!==`object`:/^\d+$/.test(e))?`[${e}]`:`.${e}`).join(``)}function lM(e){return e.every(e=>e&&e===e.trim()&&!/[.[\]]/.test(e))?e.join(`.`):null}var uM=/^\[(Getter|Unreadable|Circular|Truncated|Function\b.*|Promise)\]$/;function dM(e){return e===null||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e!==Jj&&!uM.test(e)&&!e.endsWith(`…`)}function fM(e,t){return!e||t.kind===`map`||t.kind===`set`||e===`signal`&&t.kind===`object`&&t.type!==`Object`?null:e}function pM(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=sM(e);if(!(s.has(r)||a.length>=i)){s.add(r);for(let r of iM(t).children){let t=[...e,r.key];if(r.label.toLowerCase().includes(o)&&a.push(t),!nM(r.value))continue;let i=n(t)??(nM(r.value)?.collapsed?void 0:r.value);i!==void 0&&c(t,i)}}};return c(e,n(e)??t),a}var mM=(e,t)=>t.id;function hM(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(),xs(),I(3,`span`,14),K(4),L(),I(5,`span`,5),K(6),L()()}if(e&2){let e=W().$implicit;A(`aria-expanded`,e.open)(`aria-label`,e.label+`: `+e.text),O(4),J(``,e.label,`:`),O(2),q(e.text)}}function gM(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 _M(e,t){if(e&1&&(I(0,`span`,16),K(1),L()),e&2){let e=W(2).$implicit;O(),q(e.text)}}function vM(e,t){if(e&1&&(I(0,`span`,14),K(1),L(),j(2,gM,1,5,`app-prop-value`,15)(3,_M,2,1,`span`,16)),e&2){let e,t=W().$implicit;O(),J(``,t.label,`:`),O(),M((e=t.edit)?2:3,e)}}function yM(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))}),K(1),I(2,`span`,18),K(3),L()()}if(e&2){let e=W().$implicit,t=W(3);O(),J(` Show `,t.step(e),` more `),O(2),J(`(`,e.more,` not listed)`)}}function bM(e,t){e&1&&(I(0,`span`,12),K(1,`Reading from the page…`),L())}function xM(e,t){if(e&1&&(I(0,`span`,13),K(1),L()),e&2){let e=W().$implicit;O(),q(e.text)}}function SM(e,t){if(e&1&&(I(0,`li`,9),j(1,hM,7,4,`button`,10)(2,vM,4,2)(3,yM,4,2,`button`,11)(4,bM,2,0,`span`,12)(5,xM,2,1,`span`,13),L()),e&2){let e,n=t.$implicit;b_(`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 CM(e,t){if(e&1&&(I(0,`ul`,7),N(1,SM,6,3,`li`,8,mM),L()),e&2){let e=W(2);F(`id`,e.listId),A(`aria-label`,e.prop().name+` entries`),O(),P(e.rows())}}function wM(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(),xs(),I(4,`span`,5),K(5),L()(),R(6,`app-prop-value`,6),L(),j(7,CM,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),q(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 TM(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 EM=0;function DM(e){if(e===void 0)return`undefined`;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function OM(e){if(Array.isArray(e))return e.every(OM);if(e&&typeof e==`object`){let t=e;return![`$collapsed`,`$more`,`$type`].some(e=>Object.hasOwn(t,e))&&Object.values(t).every(OM)}return dM(e)}var kM=class e{prop=$.required();store=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);directive=$(void 0);query=$(``);listId=`value-tree-${++EM}`;host=C(Hl);pendingMore=null;constructor(){Nv(()=>{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=X(()=>[this.prop().prop]);rootValue=X(()=>this.store().level(this.rootPath(),this.directive())??this.prop().value);root=X(()=>nM(this.rootValue()));needle=X(()=>this.query().trim().toLowerCase());matches=X(()=>{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 pM(this.rootPath(),this.rootValue(),e=>n.level(e,r),e)});rootOpen=X(()=>!!this.matches()?.length||this.store().isOpen(this.rootPath(),this.directive()));rows=X(()=>{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(sM(e));for(let t=2;t<=e.length;t++)i.add(sM(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}=iM(e);for(let e of h){let h=[...o,e.key],g=sM(h);if(r&&!m&&!i.has(g))continue;let _=nM(e.value),ee=sM(h,n);if(!_){let t=p&&dM(e.value)?lM(h):null;c.push({id:ee,kind:`leaf`,depth:f,path:h,label:e.label,text:DM(e.value),edit:s&&t&&p?{name:cM(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:oM(_),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,fM(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:`${sM(e,n)}:${r}`,kind:r,depth:t,path:e,label:``,text:``});return l(this.rootValue(),this.rootPath(),[e.kind],0,s?fM(o.editInside??null,e):null,!r),c});readWhole=async()=>{let e=await this.store().read(this.rootPath(),qj.depth,qj.limit);return e.ok?OM(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 oM(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,wM,8,12)(1,TM,1,5,`app-prop-value`,0),e&2){let e;M((e=t.root())?0:1,e)}},dependencies:[Gj],styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -2091,7 +2091,7 @@ button.edit[_ngcontent-%COMP%] { .more[_ngcontent-%COMP%] { transition: none; } -}`]})};function DM(e,t){return e.length>t.length&&e.startsWith(`${t.slice(0,-1)},`)}var OM=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=iM(e,t),r=this.pushed();return Object.hasOwn(r,n)?r[n]:this.fetched().get(n)}isOpen(e,t){return this.open().has(iM(e,t))}toggle(e,t,n){let r=iM(e,t),i=new Set(this.open());if(i.has(r)){for(let e of i)(e===r||DM(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=iM(e,t),i=Math.min(Uj,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=iM(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 kM(e,t){if(e&1&&(z(0,`span`,1),K(1),B()),e&2){let e=W(2);O(),J(`: `,e.label())}}function AM(e,t){if(e&1&&(z(0,`span`,1),K(1),B()),e&2){let e=W(3);O(),J(`: `,e.label())}}function jM(e,t){if(e&1){let e=V();z(0,`button`,4),U(`click`,function(){return w(e),T(W(2).store(`log`))}),K(1,` Log to console `),j(2,AM,2,1,`span`,1),B()}if(e&2){let e=W(2);Fg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1)}}function MM(e,t){if(e&1){let e=V();z(0,`button`,0),U(`click`,function(){return w(e),T(W().store())}),K(1,` Store as global `),j(2,kM,2,1,`span`,1),B(),j(3,jM,3,2,`button`,2),z(4,`span`,3),K(5),B()}if(e&2){let e=W();Fg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1),O(),M(e.canLog()?3:-1),O(2),q(e.message())}}var NM=class e{rpc=$(null);pageId=$(null);target=$.required();label=$(``);canLog=$(!1);staticReport=X(()=>QT(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,MM,6,4),e&2&&M(t.staticReport()?-1:0)},styles:[`[_nghost-%COMP%] { +}`]})};function AM(e,t){return e.length>t.length&&e.startsWith(`${t.slice(0,-1)},`)}var jM=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=sM(e,t),r=this.pushed();return Object.hasOwn(r,n)?r[n]:this.fetched().get(n)}isOpen(e,t){return this.open().has(sM(e,t))}toggle(e,t,n){let r=sM(e,t),i=new Set(this.open());if(i.has(r)){for(let e of i)(e===r||AM(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=sM(e,t),i=Math.min(Kj,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=sM(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 MM(e,t){if(e&1&&(z(0,`span`,1),K(1),B()),e&2){let e=W(2);O(),J(`: `,e.label())}}function NM(e,t){if(e&1&&(z(0,`span`,1),K(1),B()),e&2){let e=W(3);O(),J(`: `,e.label())}}function PM(e,t){if(e&1){let e=V();z(0,`button`,4),U(`click`,function(){return w(e),T(W(2).store(`log`))}),K(1,` Log to console `),j(2,NM,2,1,`span`,1),B()}if(e&2){let e=W(2);Fg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1)}}function FM(e,t){if(e&1){let e=V();z(0,`button`,0),U(`click`,function(){return w(e),T(W().store())}),K(1,` Store as global `),j(2,MM,2,1,`span`,1),B(),j(3,PM,3,2,`button`,2),z(4,`span`,3),K(5),B()}if(e&2){let e=W();Fg(`disabled`,e.busy()||!e.rpc()||!e.pageId()),O(2),M(e.label()?2:-1),O(),M(e.canLog()?3:-1),O(2),q(e.message())}}var IM=class e{rpc=$(null);pageId=$(null);target=$.required();label=$(``);canLog=$(!1);staticReport=X(()=>tE(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,FM,6,4),e&2&&M(t.staticReport()?-1:0)},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-wrap: wrap; align-items: center; @@ -2140,7 +2140,149 @@ button.edit[_ngcontent-%COMP%] { .status[_ngcontent-%COMP%]:empty { display: none; -}`]})},PM=(e,t)=>t.id;function FM(e,t){if(e&1&&(I(0,`p`,4),K(1),L()),e&2){let e=W(2);O(),J(`The page has more @for blocks than the `,e.length,` listed.`)}}function IM(e,t){e&1&&(I(0,`span`,9),K(1,`@empty showing`),L())}function LM(e,t){e&1&&(I(0,`span`,10),K(1,`@empty`),L())}function RM(e,t){e&1&&(I(0,`span`,10),K(1,`renders nothing`),L())}function zM(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),K(3),L(),I(4,`span`,8),K(5),L(),j(6,IM,2,0,`span`,9)(7,LM,2,0,`span`,10)(8,RM,2,0,`span`,10),I(9,`span`,11),K(10),L()()()}if(e&2){let e=t.$implicit,n=W(3);O(),A(`aria-disabled`,e.owner?null:`true`),O(2),q(e.owner?.name??`Unknown component`),O(2),Y(` `,e.count,` `,e.count===1?`item`:`items`,` `),O(),M(e.showingEmpty?6:e.hasEmptyBlock?7:e.count===0?8:-1),O(4),q(n.trackLabel(e))}}function BM(e,t){if(e&1&&(I(0,`section`,1)(1,`h2`,2),K(2,` @for blocks `),I(3,`span`,3),K(4),L()(),j(5,FM,2,1,`p`,4),I(6,`ul`,5),N(7,zM,11,6,`li`,null,PM),L()()),e&2){let e=W(),t=W();O(4),q(t.truncated()?e.length+`+`:e.length),O(),M(t.truncated()?5:-1),O(2),P(e)}}function VM(e,t){e&1&&j(0,BM,9,2,`section`,1),e&2&&M(t.length?0:-1)}function HM(e,t){e&1&&R(0,`app-angular-unavailable`,0),e&2&&F(`page`,W().angular())}var UM={$index:`track $index`,item:`track item`,function:`track expression`},WM=class e{blocks=$(void 0);truncated=$(!1);supported=$(null);angular=$(null);showOwner=yv();highlight=yv();target(e){return e.rootIds[0]??e.owner?.id??null}trackLabel(e){return e.track?UM[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,VM,1,1)(1,HM,1,1,`app-angular-unavailable`,0),e&2){let e;M((e=t.blocks())?0:t.supported()===!1?1:-1,e)}},dependencies:[AD],styles:[`[_nghost-%COMP%] { +}`]})},LM=(e,t)=>t.block.id,RM=(e,t)=>t.kind;function zM(e,t){if(e&1&&K(0),e&2){let e=W().$implicit;J(` `,e.label,` `)}}function BM(e,t){if(e&1&&(K(0),z(1,`span`,11),K(2),B()),e&2){let e=W().$implicit;J(` `,e.kind,` `),O(2),J(``,e.seconds,`s`)}}function VM(e,t){if(e&1&&(z(0,`span`,8),j(1,zM,1,1)(2,BM,3,2),B()),e&2){let e=t.$implicit;x_(`note-`+e.kind),A(`title`,e.text),O(),M(e.seconds===void 0?1:2)}}function HM(e,t){e&1&&(z(0,`span`,8),K(1,`hydrated`),B())}function UM(e,t){e&1&&(z(0,`span`,8),K(1,`@error block`),B())}function WM(e,t){if(e&1&&(z(0,`span`,9),K(1),B()),e&2){let e=W().$implicit;O(),q(e.timings)}}function GM(e,t){if(e&1){let e=V();z(0,`li`)(1,`button`,4),U(`click`,function(){let t=w(e).$implicit;return T(W(2).showOwner.emit(t.block))})(`focus`,function(){let t=w(e).$implicit;return T(W(2).highlight.emit(t.block))})(`blur`,function(){return w(e),T(W(2).highlight.emit(null))})(`mouseenter`,function(){let t=w(e).$implicit;return T(W(2).highlight.emit(t.block))})(`mouseleave`,function(){return w(e),T(W(2).highlight.emit(null))}),z(2,`span`,5),K(3),B(),z(4,`span`,6),K(5),B(),N(6,VM,3,4,`span`,7,RM),j(8,HM,2,0,`span`,8),j(9,UM,2,0,`span`,8),j(10,WM,2,1,`span`,9),z(11,`span`,10),K(12),B()()()}if(e&2){let e=t.$implicit;O(),A(`aria-disabled`,e.block.owner?null:`true`),O(2),q(e.block.owner?.name??`Unknown component`),O(),x_(`defer-state-`+e.block.state),O(),q(e.block.state),O(),P(e.notes),O(2),M(e.block.hydration===`hydrated`?8:-1),O(),M(e.block.hasErrorBlock?9:-1),O(),M(e.timings?10:-1),O(2),q(e.block.triggers.join(`, `)||`no triggers`)}}function KM(e,t){if(e&1&&(z(0,`section`,0)(1,`h2`,1),K(2,` Defer blocks `),z(3,`span`,2),K(4),B()(),z(5,`ul`,3),N(6,GM,13,9,`li`,null,LM),B()()),e&2){let e=W();O(4),Y(``,e.rows().length,``,e.truncated()?`+`:``),O(2),P(e.rows())}}function qM(e){return e<1e3?`${e}ms`:`${Number((e/1e3).toFixed(2))}s`}function JM(e){let t=[],n=e.placeholder?.minimumTime;n!=null&&t.push(`placeholder min ${qM(n)}`);let r=[e.loading?.afterTime==null?``:`after ${qM(e.loading.afterTime)}`,e.loading?.minimumTime==null?``:`min ${qM(e.loading.minimumTime)}`].filter(Boolean);return r.length&&t.push(`loading ${r.join(`, `)}`),t.join(` · `)}var YM=class e{blocks=$([]);truncated=$(!1);clockOffset=$(0);showOwner=yv();highlight=yv();now=D(Date.now());waiting=X(()=>this.blocks().some(e=>!!e.since&&(e.state===`placeholder`||e.state===`initial`)));rows=X(()=>{let e=this.now()-this.clockOffset();return this.blocks().map(t=>({block:t,notes:WT({...t,since:t.since||e},e),timings:JM(t)}))});constructor(){let e,t=()=>{clearInterval(e),e=void 0};vc(()=>{if(!this.waiting())return t();e===void 0&&(this.now.set(Date.now()),e=setInterval(()=>this.now.set(Date.now()),1e3))}),C(js).onDestroy(t)}static ɵfac=function(t){return new(t||e)};static ɵcmp=k({type:e,selectors:[[`app-defer-blocks`]],inputs:{blocks:[1,`blocks`],truncated:[1,`truncated`],clockOffset:[1,`clockOffset`]},outputs:{showOwner:`showOwner`,highlight:`highlight`},decls:1,vars:1,consts:[[`aria-labelledby`,`ct-defer-title`,1,`defer`],[`id`,`ct-defer-title`,1,`defer-title`],[1,`pill`],[1,`defer-list`],[`type`,`button`,1,`defer-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`defer-state`],[1,`flag`,3,`class`],[1,`flag`],[1,`timings`],[1,`triggers`,`mono`],[`aria-hidden`,`true`]],template:function(e,t){e&1&&j(0,KM,8,2,`section`,0),e&2&&M(t.rows().length?0:-1)},styles:[`[_nghost-%COMP%] { + display: block; +} + +.defer[_ngcontent-%COMP%] { + margin-top: 16px; +} + +.defer-title[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 6px; + margin: 0 0 8px; +} + +.pill[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 18px; + height: 16px; + padding: 0 5px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 10px; + font-weight: 600; + letter-spacing: 0; +} + +.defer-list[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; +} + +.defer-row[_ngcontent-%COMP%] { + justify-content: flex-start; + flex-wrap: wrap; + width: 100%; + height: auto; + min-height: var(--%NS%control-h); + padding: 6px 12px; + background: var(--%NS%surface); + border-color: var(--%NS%border); + text-align: left; +} + +.defer-row[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.defer-row[aria-disabled=true][_ngcontent-%COMP%] { + cursor: default; +} + +.name[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); +} + +.defer-state[_ngcontent-%COMP%] { + padding: 0 8px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + line-height: 18px; +} + +.defer-state-complete[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok-text); +} + +.defer-state-error[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger-text); +} + +.defer-state-loading[_ngcontent-%COMP%], +.defer-state-placeholder[_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); +} + +.flag[_ngcontent-%COMP%] { + padding: 0 6px; + border: 1px solid var(--%NS%border-strong); + border-radius: 5px; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 10px; + line-height: 16px; +} + +.note-failed[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger-text); +} + +.note-stuck[_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); +} + +.timings[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 11px; +} + +.triggers[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text-2); + font-size: 12px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +}`]})},XM=(e,t)=>t.id;function ZM(e,t){if(e&1&&(I(0,`p`,4),K(1),L()),e&2){let e=W(2);O(),J(`The page has more @for blocks than the `,e.length,` listed.`)}}function QM(e,t){e&1&&(I(0,`span`,9),K(1,`@empty showing`),L())}function $M(e,t){e&1&&(I(0,`span`,10),K(1,`@empty`),L())}function eN(e,t){e&1&&(I(0,`span`,10),K(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),K(3),L(),I(4,`span`,8),K(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),K(10),L()()()}if(e&2){let e=t.$implicit,n=W(3);O(),A(`aria-disabled`,e.owner?null:`true`),O(2),q(e.owner?.name??`Unknown component`),O(2),Y(` `,e.count,` `,e.count===1?`item`:`items`,` `),O(),M(e.showingEmpty?6:e.hasEmptyBlock?7:e.count===0?8:-1),O(4),q(n.trackLabel(e))}}function nN(e,t){if(e&1&&(I(0,`section`,1)(1,`h2`,2),K(2,` @for blocks `),I(3,`span`,3),K(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),q(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=yv();highlight=yv();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:[ND],styles:[`[_nghost-%COMP%] { display: block; } @@ -2258,7 +2400,7 @@ button.edit[_ngcontent-%COMP%] { min-width: 0; text-overflow: ellipsis; white-space: nowrap; -}`]})},GM=(e,t)=>t.id;function KM(e,t){if(e&1&&(I(0,`p`,11),K(1),L(),I(2,`h3`,7),K(3,`Still retained`),L(),I(4,`p`,6),K(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(),q(t.plural(e.navigations,`navigation`))}}function qM(e,t){e&1&&(I(0,`p`,6),K(1,` This page cannot track destroyed components. It needs WeakRef, FinalizationRegistry and the Angular debug API of a development build. `),L())}function JM(e,t){if(e&1&&(I(0,`span`,18),K(1),L()),e&2){let e=W().$implicit,t=W(4);O(),q(t.plural(e.subscriptions,`open subscription`))}}function YM(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),K(2),L(),I(3,`span`,15),K(4),L(),I(5,`span`,16),K(6),L(),I(7,`span`,17),K(8),L(),j(9,JM,2,1,`span`,18),L()),e&2){let e=t.$implicit,n=W(4);O(2),q(e.name),O(2),q(e.route||`/`),O(2),J(``,n.plural(e.navigations,`navigation`),` ago`),O(2),q(n.ageOf(e)),O(),M(e.subscriptions?9:-1)}}function XM(e,t){if(e&1&&(I(0,`p`,6),K(1),L(),I(2,`ul`,12),N(3,YM,10,5,`li`,13,GM),L()),e&2){let e=W(3);O(),Y(` 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 ZM(e,t){e&1&&(I(0,`p`,6),K(1,`No destroyed component is still in memory after a few navigations.`),L())}function QM(e,t){if(e&1&&(I(0,`p`,6),K(1),I(2,`span`,19),K(3),L(),K(4,`. Navigate a few times to see whether they stay. `),L()),e&2){let e=W(3);O(),J(` `,e.plural(e.recent().length,`instance`),` destroyed recently and not collected yet: `),O(2),q(e.names(e.recent()))}}function $M(e,t){if(e&1&&(j(0,qM,2,0,`p`,6),I(1,`p`,11),K(2),L(),I(3,`h3`,7),K(4,` Still retained `),I(5,`span`,8),K(6),L()(),j(7,XM,5,2)(8,ZM,2,0,`p`,6),j(9,QM,5,2,`p`,6)),e&2){let e=W(),t=W();M(e.support.retention?-1:0),O(2),R_(` `,t.plural(e.navigations,`navigation`),` · `,t.retained().length,` still retained · `,t.plural(e.totals.collected,`instance`),` collected `),O(4),q(t.retained().length),O(),M(t.retained().length?7:8),O(2),M(t.recent().length?9:-1)}}function eN(e,t){if(e&1&&(I(0,`p`,6),K(1,` Off the page but not destroyed (detached views, such as a route reuse cache): `),I(2,`span`,19),K(3),L(),K(4,`. `),L()),e&2){let e=W(2);O(3),q(e.names(e.detached()))}}function tN(e,t){if(e&1&&(I(0,`span`,8),K(1),L()),e&2){let e=W();O(),q(e.subscriptions.length)}}function nN(e,t){if(e&1&&(I(0,`span`,15),K(1),L()),e&2){let e=W().$implicit;O(),q(e.source)}}function rN(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),K(2),L(),I(3,`span`,16),K(4),L(),I(5,`span`,18),K(6),L(),j(7,nN,2,1,`span`,15),L()),e&2){let e=t.$implicit;O(2),q(e.name),O(2),J(``,e.count,` open`),O(2),J(` `,e.reason===`instance-destroyed`?`instance destroyed`:`no instance left`,` `),O(),M(e.source?7:-1)}}function iN(e,t){if(e&1&&(I(0,`p`,6),K(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,rN,8,4,`li`,13,_g),L()),e&2){let e=W(2),t=W();O(3),P(e.subscriptions.slice(0,t.shown))}}function aN(e,t){e&1&&(I(0,`p`,6),K(1,`No subscription is still open after its component went away.`),L())}function oN(e,t){e&1&&(I(0,`p`,6),K(1,` Subscriptions are tied to component classes only; Angular 20 profiler hooks tie them to instances. `),L())}function sN(e,t){if(e&1&&(j(0,iN,5,0)(1,aN,2,0,`p`,6),j(2,oN,2,0,`p`,6)),e&2){let e=W();M(+!e.subscriptions.length),O(2),M(e.support.instances?-1:2)}}function cN(e,t){e&1&&(I(0,`p`,9),K(1,` Tracking could not start: the page has no RxJS the overlay can load. `),L())}function lN(e,t){e&1&&(I(0,`p`,6),K(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 uN(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),K(1),L()),e&2){let e=W().$implicit,t=W(3);O(),q(t.plural(e.subscriptions,`subscription`))}}function fN(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),K(3),L(),I(4,`span`,16),K(5),L(),j(6,dN,2,1,`span`,16),L()()}if(e&2){let e=t.$implicit,n=W(2),r=W();O(3),q(e.name),O(2),q(r.effectsText(e)),O(),M(n.support.subscriptions===`on`?6:-1)}}function pN(e,t){e&1&&(I(0,`p`,6),K(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 mN(e,t){if(e&1&&(I(0,`ul`,12),N(1,fN,7,3,`li`,null,GM),L(),j(3,pN,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 hN(e,t){e&1&&(I(0,`p`,6),K(1,`No component on the page has a live effect or a tracked subscription.`),L())}function gN(e,t){if(e&1&&(j(0,KM,6,1)(1,$M,10,7),j(2,eN,5,1,`p`,6),I(3,`h3`,7),K(4,` Open subscriptions after destroy `),j(5,tN,2,1,`span`,8),L(),j(6,sN,3,2)(7,cN,2,0,`p`,9)(8,lN,2,0,`p`,6),I(9,`h3`,7),K(10,` Live effects and subscriptions `),I(11,`span`,8),K(12),L()(),j(13,uN,1,1,`app-angular-unavailable`,10),j(14,mN,4,1)(15,hN,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),q(n.components.length),O(),M(n.support.effects?-1:13),O(),M(n.components.length?14:15)}}function _N(e,t){e&1&&(I(0,`p`,6),K(1,`No leak data from this page yet. It comes with the next report.`),L())}var vN=20;function yN(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 bN=(e,t,n=`${t}s`)=>`${e} ${e===1?t:n}`,xN=class e{report=$(null);pageId=$(null);rpc=$(null);angular=$(null);now=$(()=>Date.now());showComponent=yv();highlight=yv();shown=vN;minNavigations=2;minSeconds=sT/1e3;plural=bN;busy=D(!1);announcement=D(``);tracking=X(()=>this.report()?.support.subscriptions===`on`);split=X(()=>{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=X(()=>this.split().retained);recent=X(()=>this.split().recent);detached=X(()=>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?`${yN(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=bN(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 XT(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),K(3,`Leaks`),L(),I(4,`button`,3),H(`click`,function(){return t.toggle()}),K(5,` Track subscriptions `),L(),I(6,`p`,4),K(7),L()(),I(8,`p`,5),K(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,gN,16,7)(11,_N,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),q(t.announcement()),O(3),M((e=t.report())?10:11,e)}},dependencies:[AD],styles:[`[_nghost-%COMP%] { +}`]})},sN=(e,t)=>t.id;function cN(e,t){if(e&1&&(I(0,`p`,11),K(1),L(),I(2,`h3`,7),K(3,`Still retained`),L(),I(4,`p`,6),K(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(),q(t.plural(e.navigations,`navigation`))}}function lN(e,t){e&1&&(I(0,`p`,6),K(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),K(1),L()),e&2){let e=W().$implicit,t=W(4);O(),q(t.plural(e.subscriptions,`open subscription`))}}function dN(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),K(2),L(),I(3,`span`,15),K(4),L(),I(5,`span`,16),K(6),L(),I(7,`span`,17),K(8),L(),j(9,uN,2,1,`span`,18),L()),e&2){let e=t.$implicit,n=W(4);O(2),q(e.name),O(2),q(e.route||`/`),O(2),J(``,n.plural(e.navigations,`navigation`),` ago`),O(2),q(n.ageOf(e)),O(),M(e.subscriptions?9:-1)}}function fN(e,t){if(e&1&&(I(0,`p`,6),K(1),L(),I(2,`ul`,12),N(3,dN,10,5,`li`,13,sN),L()),e&2){let e=W(3);O(),Y(` 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),K(1,`No destroyed component is still in memory after a few navigations.`),L())}function mN(e,t){if(e&1&&(I(0,`p`,6),K(1),I(2,`span`,19),K(3),L(),K(4,`. Navigate a few times to see whether they stay. `),L()),e&2){let e=W(3);O(),J(` `,e.plural(e.recent().length,`instance`),` destroyed recently and not collected yet: `),O(2),q(e.names(e.recent()))}}function hN(e,t){if(e&1&&(j(0,lN,2,0,`p`,6),I(1,`p`,11),K(2),L(),I(3,`h3`,7),K(4,` Still retained `),I(5,`span`,8),K(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),R_(` `,t.plural(e.navigations,`navigation`),` · `,t.retained().length,` still retained · `,t.plural(e.totals.collected,`instance`),` collected `),O(4),q(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),K(1,` Off the page but not destroyed (detached views, such as a route reuse cache): `),I(2,`span`,19),K(3),L(),K(4,`. `),L()),e&2){let e=W(2);O(3),q(e.names(e.detached()))}}function _N(e,t){if(e&1&&(I(0,`span`,8),K(1),L()),e&2){let e=W();O(),q(e.subscriptions.length)}}function vN(e,t){if(e&1&&(I(0,`span`,15),K(1),L()),e&2){let e=W().$implicit;O(),q(e.source)}}function yN(e,t){if(e&1&&(I(0,`li`,13)(1,`span`,14),K(2),L(),I(3,`span`,16),K(4),L(),I(5,`span`,18),K(6),L(),j(7,vN,2,1,`span`,15),L()),e&2){let e=t.$implicit;O(2),q(e.name),O(2),J(``,e.count,` open`),O(2),J(` `,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),K(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,_g),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),K(1,`No subscription is still open after its component went away.`),L())}function SN(e,t){e&1&&(I(0,`p`,6),K(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),K(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),K(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),K(1),L()),e&2){let e=W().$implicit,t=W(3);O(),q(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),K(3),L(),I(4,`span`,16),K(5),L(),j(6,DN,2,1,`span`,16),L()()}if(e&2){let e=t.$implicit,n=W(2),r=W();O(3),q(e.name),O(2),q(r.effectsText(e)),O(),M(n.support.subscriptions===`on`?6:-1)}}function kN(e,t){e&1&&(I(0,`p`,6),K(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),K(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),K(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),K(10,` Live effects and subscriptions `),I(11,`span`,8),K(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),q(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),K(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=yv();highlight=yv();shown=PN;minNavigations=2;minSeconds=sT/1e3;plural=IN;busy=D(!1);announcement=D(``);tracking=X(()=>this.report()?.support.subscriptions===`on`);split=X(()=>{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=X(()=>this.split().retained);recent=X(()=>this.split().recent);detached=X(()=>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 $T(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),K(3,`Leaks`),L(),I(4,`button`,3),H(`click`,function(){return t.toggle()}),K(5,` Track subscriptions `),L(),I(6,`p`,4),K(7),L()(),I(8,`p`,5),K(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),q(t.announcement()),O(3),M((e=t.report())?10:11,e)}},dependencies:[ND],styles:[`[_nghost-%COMP%] { display: block; } @@ -2414,7 +2556,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); -}`]})},SN=12,CN=900;function wN(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 TN=class{options;injector=C(js);visibleTop=D(0);viewport=D(CN);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=X(()=>e.count()>t),this.range=X(()=>{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)-SN));return{start:a,end:Math.min(t,Math.max(a,Math.ceil((i+r)/n)+SN))}}),this.padTop=X(()=>this.enabled()?this.range().start*this.rowHeight():0),this.padBottom=X(()=>this.enabled()?(e.count()-this.range().end)*this.rowHeight():0),bc(()=>{e.count(),dd(()=>this.update(),{injector:this.injector})}),C(Ns).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:CN)}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&&dd(t,{injector:this.injector})}};function EN(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 DN=e=>{let t=parseFloat(e);return Number.isFinite(t)?t:0};function ON(e,t=8){let n=e.ownerDocument.defaultView;if(!n)return e.offsetHeight+t;let r=EN(e),i=r?n.getComputedStyle(r):null,a=i?DN(i.paddingTop):0,o=i?DN(i.scrollPaddingTop):0,s=DN(n.getComputedStyle(e).top);return Math.max(0,Math.ceil(a+s+e.offsetHeight+t-o))}function kN(e,t,n=8){let r=EN(e),i=t.getBoundingClientRect().bottom+n-e.getBoundingClientRect().top;i<=0||(r?r.scrollTop-=i:e.ownerDocument.defaultView?.scrollBy(0,-i))}var AN=[`filterInput`],jN=[`treeEl`],MN=[`propFilterInput`],NN=()=>[],PN=e=>({kind:`component`,id:e}),FN=(e,t)=>t.row.node.id,IN=(e,t)=>t.outlet+t.route,LN=(e,t)=>t+e,RN=(e,t)=>t.formId,zN=(e,t)=>t.name+t.index,BN=(e,t)=>t.name,VN=(e,t)=>t.token+e,HN=(e,t)=>t.id;function UN(e,t){return this.sourceKey(t)}function WN(e,t){if(e&1){let e=V();I(0,`span`,40),K(1,`Page`),L(),I(2,`app-select`,41),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 GN(e,t){if(e&1){let e=V();I(0,`button`,42),H(`click`,function(){return w(e),T(W(2).toggleDirectiveHosts())}),E(),I(1,`svg`,15),R(2,`path`,43)(3,`path`,44),L(),Cs(),I(4,`span`,18),K(5,`Directive hosts`),L()()}e&2&&A(`aria-pressed`,W(2).showDirectiveHosts())}function KN(e,t){if(e&1){let e=V();I(0,`button`,45),H(`click`,function(){w(e);let t=W(2);return T(t.picking()?t.cancelPick():t.pick())}),E(),I(1,`svg`,15),R(2,`path`,46),L(),Cs(),I(3,`span`,18),K(4),L()()}if(e&2){let e=W(2);G(`on`,e.picking()),A(`title`,e.pickLabel()),O(4),q(e.pickLabel())}}function qN(e,t){if(e&1&&(I(0,`p`,24),K(1),L()),e&2){let e=W(2);O(),q(e.pickMessage())}}function JN(e,t){if(e&1&&(I(0,`p`,25),K(1),L()),e&2){let e=W(2);O(),q(e.truncationText())}}function YN(e,t){e&1&&(I(0,`p`,48),K(1,`The filter only searches the components the tree lists.`),L())}function XN(e,t){e&1&&(I(0,`p`,48),K(1,`Directive hosts are hidden, so they are not searched.`),L())}function ZN(e,t){if(e&1){let e=V();I(0,`div`,29)(1,`p`,47),K(2),L(),j(3,YN,2,0,`p`,48),j(4,XN,2,0,`p`,48),I(5,`button`,49),H(`click`,function(){return w(e),T(W(2).clearFilter())}),K(6,`Clear filters`),L()()}if(e&2){let e=W(2);O(2),J(`No components match “`,e.filter().trim(),`”`),O(),M(e.page().truncated?3:-1),O(),M(!e.showDirectiveHosts()&&e.page().directiveHostCount?4:-1)}}function QN(e,t){if(e&1&&(I(0,`p`,30),K(1),L()),e&2){let e=W(2);O(),J(` `,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 $N(e,t){if(e&1){let e=V();I(0,`span`,57),H(`click`,function(t){w(e),W();let n=q_(0);return T(W(2).toggle(n.node.id,t))}),E(),I(1,`svg`,58),R(2,`path`,59),L()()}e&2&&(W(),G(`open`,q_(0).expanded))}function eP(e,t){e&1&&R(0,`span`,52)}function tP(e,t){if(e&1&&(I(0,`span`,60),K(1),L(),I(2,`span`,61),K(3),L(),I(4,`span`,28),K(5,`directive host`),L()),e&2){W();let e=q_(0),t=W(2);O(),J(`<`,e.node.tag,`>`),O(),A(`title`,e.node.directives?.join(`, `)),O(),q(t.hostLabel(e.node))}}function nP(e,t){if(e&1&&(I(0,`span`,62),K(1),L(),I(2,`span`,63),K(3),L()),e&2){W();let e=q_(0);A(`title`,e.node.name),O(),q(e.node.name),O(),A(`title`,`<`+e.node.tag+`>`),O(),J(`<`,e.node.tag,`>`)}}function rP(e,t){if(e&1&&(I(0,`span`)(1,`span`,28),K(2,`Hydration: `),L(),K(3),L()),e&2){let e=t,n=W(3);x_(`hyd hyd-`+e),O(3),q(n.hydrationText(e))}}function iP(e,t){if(e&1&&(I(0,`span`,54),K(1),L()),e&2){let e=t.$implicit;O(),q(e.route||`/`)}}function aP(e,t){if(e&1&&(I(0,`span`,55),K(1),I(2,`span`,28),K(3),L()()),e&2){let e=t;O(),J(` `,e),O(2),J(` `,e===1?`check`:`checks`,` while recording`)}}function oP(e,t){if(e&1&&(I(0,`span`,56),K(1),I(2,`span`,28),K(3),L()()),e&2){W();let e=q_(0);A(`title`,e.node.directives.join(`, `)),O(),J(` +`,e.node.directives.length,` `),O(2),J(` `,e.node.directives.length===1?`directive`:`directives`,` `)}}function sP(e,t){if(e&1){let e=V();G_(0),I(1,`div`,50),H(`click`,function(){w(e);let t=q_(0);return T(W(2).select(t.node.id))})(`focus`,function(t){w(e);let n=q_(0),r=W(2);return r.focusId.set(n.node.id),r.highlight(n.node.id),T(r.showNameTip(t))})(`blur`,function(){w(e);let t=W(2);return t.highlight(null),T(t.nameTip.set(null))})(`keydown.escape`,function(){return w(e),T(W(2).nameTip.set(null))})(`mouseenter`,function(){w(e);let t=q_(0);return T(W(2).highlight(t.node.id))})(`mouseleave`,function(){return w(e),T(W(2).highlight(null))}),j(2,$N,3,2,`span`,51)(3,eP,1,0,`span`,52),j(4,tP,6,3)(5,nP,4,4),j(6,rP,4,3,`span`,53),N(7,iP,2,1,`span`,54,IN),j(9,aP,4,2,`span`,55),j(10,oP,4,3,`span`,56),L()}if(e&2){let e,n,r=t.$implicit,i=W(2),a=K_(r.row);O(),b_(`--%NS%depth`,a.depth),G(`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)??nv(20,NN)),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 cP(e,t){if(e&1&&(I(0,`div`,64),K(1),L()),e&2){let e=t;b_(`top`,e.top,`px`),O(),J(` `,e.text,` `)}}function lP(e,t){if(e&1&&(I(0,`li`,72),K(1),L()),e&2){let e=t.$implicit;O(),q(e)}}function uP(e,t){if(e&1){let e=V();I(0,`div`,74)(1,`button`,49),H(`click`,function(){let t=w(e);return T(W(3).reveal(t.id,!0))}),K(2),L()()}e&2&&(O(2),J(` Show `,t.name,` `))}function dP(e,t){if(e&1&&(I(0,`section`,34)(1,`header`,65)(2,`span`,66),K(3,`directive host`),L(),I(4,`h2`,67),K(5),L(),I(6,`span`,68),K(7),L()(),I(8,`div`,69)(9,`h3`),K(10,` Directives `),I(11,`span`,70),K(12),L()(),I(13,`ul`,71),N(14,lP,2,1,`li`,72,LN),L()(),I(16,`div`,69)(17,`p`,73),K(18,` This element hosts directives but no component. Their inputs are bound in the template of the component that renders it. `),L(),j(19,uP,3,1,`div`,74),L()()),e&2){let e,n=t,r=W(2);O(5),J(`<`,n.tag,`>`),O(2),q(r.hostLabel(n)),O(5),q(n.directives?.length??0),O(2),P(n.directives??nv(4,NN)),O(5),M((e=r.ownerOf(n.id))?19:-1,e)}}function fP(e,t){if(e&1&&(I(0,`p`,75),R(1,`app-source-link`,79),L()),e&2){let e=t;O(),F(`file`,e.file)(`line`,e.line)}}function pP(e,t){if(e&1){let e=V();I(0,`div`,80)(1,`button`,49),H(`click`,function(){w(e);let t=W();return T(W(2).revealInElements(t))}),K(2,`Reveal in Elements`),L(),I(3,`button`,49),H(`click`,function(){w(e);let t=W();return T(W(2).openSource(t))}),K(4,`Open source`),L()(),I(5,`p`,81),K(6),L()}if(e&2){let e=W(3);O(6),q(e.actionMessage())}}function mP(e,t){if(e&1){let e=V();I(0,`button`,83),H(`click`,function(){let t=w(e).$implicit;return T(W(5).showForm.emit(t.formId))}),K(1),L()}if(e&2){let e=t.$implicit;O(),J(` Show `,e.label,` in Forms `)}}function hP(e,t){if(e&1&&(I(0,`div`,76),N(1,mP,2,1,`button`,82,RN),L()),e&2){let e=W(),t=W(3);O(),P(t.formsIn(e.file))}}function gP(e,t){e&1&&j(0,hP,3,0,`div`,76),e&2&&M(W(3).formsIn(t.file).length?0:-1)}function _P(e,t){if(e&1){let e=V();I(0,`div`,76)(1,`button`,49),H(`click`,function(){w(e);let t=W();return T(W(2).openInjector(t))}),K(2,` Show in Injectors `),I(3,`span`,28),K(4),L()()()}if(e&2){let e=W();O(4),J(`: `,e.name)}}function vP(e,t){if(e&1&&R(0,`app-store-global`,77),e&2){let e=W(),t=W(2);F(`rpc`,t.rpc())(`pageId`,t.page()?.pageId)(`target`,rv(4,PN,e.id))(`label`,e.name)}}function yP(e,t){if(e&1&&(I(0,`dt`),K(1,`Routed`),L(),I(2,`dd`,85),K(3),L()),e&2){let e=t.$implicit;O(3),Y(``,e.route||`/`,` in outlet `,e.outlet)}}function bP(e,t){if(e&1&&(I(0,`span`,11),K(1),L()),e&2){let e=W(4);O(),Y(``,e.shownValues()?.count??0,` of `,e.valueTotal())}}function xP(e,t){if(e&1){let e=V();I(0,`div`,89)(1,`p`,47),K(2),L(),I(3,`p`,48),K(4,` The filter searches names, and the nested keys of values you opened. `),L(),I(5,`button`,49),H(`click`,function(){return w(e),T(W(5).clearPropFilter())}),K(6,`Clear filters`),L()()}if(e&2){let e=W(5);O(2),J(` No inputs, outputs or properties match “`,e.propFilter().trim(),`” `)}}function SP(e,t){if(e&1&&(I(0,`span`,93),K(1),L()),e&2){let e=W().$implicit;O(),J(`(`,e.prop,`)`)}}function CP(e,t){if(e&1&&(I(0,`li`,91)(1,`span`,92),K(2),j(3,SP,2,1,`span`,93),L(),R(4,`app-value-tree`,94),L()),e&2){let e=t.$implicit,n=W(4),r=W(3);O(2),J(` `,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 wP(e,t){if(e&1&&(I(0,`ul`,90),N(1,CP,5,9,`li`,91,BN),L()),e&2){let e=W(2);O(),P(e.inputs)}}function TP(e,t){e&1&&(I(0,`p`,73),K(1,`No inputs.`),L())}function EP(e,t){if(e&1&&(I(0,`div`,69)(1,`h3`),K(2,` Inputs `),I(3,`span`,70),K(4),L()(),j(5,wP,3,0,`ul`,90)(6,TP,2,0,`p`,73),L()),e&2){let e=W();O(4),q(e.inputs.length),O(),M(e.inputs.length?5:6)}}function DP(e,t){if(e&1&&(I(0,`li`,96)(1,`span`,85),K(2),L(),I(3,`span`,97),K(4),L()()),e&2){let e=t.$implicit;G(`on`,e.listened),O(2),q(e.name),O(2),q(e.listened?`listened`:`no listener`)}}function OP(e,t){if(e&1&&(I(0,`ul`,71),N(1,DP,5,4,`li`,95,BN),L()),e&2){let e=W(2);O(),P(e.outputs)}}function kP(e,t){e&1&&(I(0,`p`,73),K(1,`No outputs.`),L())}function AP(e,t){if(e&1&&(I(0,`div`,69)(1,`h3`),K(2,` Outputs `),I(3,`span`,70),K(4),L()(),j(5,OP,3,0,`ul`,71)(6,kP,2,0,`p`,73),L()),e&2){let e=W();O(4),q(e.outputs.length),O(),M(e.outputs.length?5:6)}}function jP(e,t){if(e&1&&(I(0,`span`,98),K(1),L()),e&2){let e=W().$implicit;O(),q(e.kind)}}function MP(e,t){if(e&1&&(I(0,`li`,91)(1,`span`,92),K(2),j(3,jP,2,1,`span`,98),L(),R(4,`app-value-tree`,94),L()),e&2){let e=t.$implicit,n=W(4),r=W(3);O(2),J(` `,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 NP(e,t){if(e&1&&(I(0,`ul`,90),N(1,MP,5,9,`li`,91,BN),L()),e&2){let e=W(2);O(),P(e.properties)}}function PP(e,t){e&1&&(I(0,`p`,73),K(1,`No other properties.`),L())}function FP(e,t){if(e&1&&(I(0,`div`,69)(1,`h3`),K(2,` Properties `),I(3,`span`,70),K(4),L()(),j(5,NP,3,0,`ul`,90)(6,PP,2,0,`p`,73),L()),e&2){let e=W();O(4),q(e.properties.length),O(),M(e.properties.length?5:6)}}function IP(e,t){if(e&1&&(I(0,`li`,72),K(1),L()),e&2){let e=t.$implicit;O(),q(e)}}function LP(e,t){if(e&1&&(I(0,`div`,69)(1,`h3`),K(2,` DOM listeners `),I(3,`span`,70),K(4),L()(),I(5,`ul`,71),N(6,IP,2,1,`li`,72,vg),L()()),e&2){let e=W(2);O(4),q(e.listeners.length),O(2),P(e.listeners)}}function RP(e,t){if(e&1&&(I(0,`li`,91)(1,`span`,92),K(2),L(),R(3,`app-value-tree`,99),L()),e&2){let e=t.$implicit,n=W(2).$implicit,r=W(2),i=W(3);O(2),q(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 zP(e,t){if(e&1&&(I(0,`ul`,90),N(1,RP,4,8,`li`,91,BN),L()),e&2){let e=W().$implicit;O(),P(e.inputs)}}function BP(e,t){if(e&1&&(I(0,`li`,96)(1,`span`,85),K(2),L(),I(3,`span`,97),K(4),L()()),e&2){let e=t.$implicit;G(`on`,e.listened),O(2),q(e.name),O(2),q(e.listened?`listened`:`no listener`)}}function VP(e,t){if(e&1&&(I(0,`ul`,71),N(1,BP,5,4,`li`,95,BN),L()),e&2){let e=W().$implicit;O(),P(e.outputs)}}function HP(e,t){e&1&&(I(0,`p`,73),K(1,`No inputs or outputs.`),L())}function UP(e,t){if(e&1&&(I(0,`div`,69)(1,`h3`)(2,`span`,85),K(3),L(),I(4,`span`,98),K(5,`directive on host`),L()(),j(6,zP,3,0,`ul`,90),j(7,VP,3,0,`ul`,71),j(8,HP,2,0,`p`,73),L()),e&2){let e=t.$implicit;O(3),q(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 WP(e,t){if(e&1&&(j(0,xP,7,1,`div`,89),j(1,EP,7,2,`div`,69),j(2,AP,7,2,`div`,69),j(3,FP,7,2,`div`,69),j(4,LP,8,1,`div`,69),N(5,UP,9,4,`div`,69,zN)),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 GP(e,t){if(e&1&&(I(0,`span`,98),K(1),L()),e&2){let e=t.$implicit;O(),q(e)}}function KP(e,t){if(e&1&&(I(0,`span`,102),K(1,`from `),I(2,`span`,85),K(3),L()()),e&2){let e=W().$implicit;O(3),q(e.providedByName??`an injector`)}}function qP(e,t){e&1&&(I(0,`span`,103),K(1,`not provided`),L())}function JP(e,t){if(e&1&&(I(0,`li`,100)(1,`span`,101),K(2),L(),N(3,GP,2,1,`span`,98,vg),j(5,KP,4,1,`span`,102)(6,qP,2,0,`span`,103),L()),e&2){let e=t.$implicit;O(2),q(e.token),O(),P(e.flags),O(2),M(e.providedBy?5:6)}}function YP(e,t){if(e&1&&(I(0,`ul`,88),N(1,JP,7,2,`li`,100,VN),L()),e&2){let e=W();O(),P(e.dependencies)}}function XP(e,t){e&1&&(I(0,`p`,73),K(1,`Nothing is injected through the constructor or inject().`),L())}function ZP(e,t){if(e&1){let e=V();I(0,`dl`,84)(1,`dt`),K(2,`Change detection`),L(),I(3,`dd`),K(4),L(),I(5,`dt`),K(6,`Encapsulation`),L(),I(7,`dd`),K(8),L(),I(9,`dt`),K(10,`Host path`),L(),I(11,`dd`,85),K(12),L(),N(13,yP,4,2,null,null,IN),L(),I(15,`div`,86)(16,`div`,5),E(),I(17,`svg`,6),R(18,`circle`,7)(19,`path`,8),L(),Cs(),I(20,`input`,87,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,bP,2,2,`span`,11),I(23,`p`,23),K(24),L()(),j(25,WP,7,5),I(26,`div`,69)(27,`h3`),K(28,` Injected `),I(29,`span`,70),K(30),L()(),j(31,YP,3,0,`ul`,88)(32,XP,2,0,`p`,73),L()}if(e&2){let e,n=t,r=W(),i=W(2);O(4),q(n.changeDetection??`Unknown`),O(4),q(n.encapsulation??`Unknown`),O(4),q(n.path),O(),P(i.routedById().get(r.id)??nv(9,NN)),O(7),F(`value`,i.propFilter()),O(2),M(i.propQuery()?22:-1),O(2),q(i.propFilterStatus()),O(),M((e=i.shownValues())?25:-1,e),O(5),q(n.dependencies.length),O(),M(n.dependencies.length?31:32)}}function QP(e,t){e&1&&(I(0,`div`,78),R(1,`span`,104),I(2,`p`,48),K(3,`Reading live values from the page…`),L()())}function $P(e,t){if(e&1&&(I(0,`section`,34)(1,`header`,65)(2,`span`,66),K(3,`component`),L(),I(4,`h2`,67),K(5),L(),I(6,`span`,68),K(7),L(),j(8,fP,2,2,`p`,75),j(9,pP,7,1),j(10,gP,1,1),j(11,_P,5,1,`div`,76),j(12,vP,1,6,`app-store-global`,77),L(),j(13,ZP,33,10)(14,QP,4,0,`div`,78),L()),e&2){let e,n,r,i=t,a=W(2);O(5),q(i.name),O(2),J(`<`,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 eF(e,t){e&1&&(I(0,`p`,47),K(1,`The selected component was destroyed`),L(),I(2,`p`,48)(3,`span`,85),K(4),L(),K(5,` is no longer on the page. Select another component to see its live values. `),L()),e&2&&(O(4),q(t))}function tF(e,t){e&1&&(I(0,`p`,48),K(1,` Select a component to see its live inputs, properties, outputs, change detection and injected services. `),L())}function nF(e,t){if(e&1&&(I(0,`div`,35),j(1,eF,6,1)(2,tF,2,0,`p`,48),L()),e&2){let e,t=W(2);O(),M((e=t.destroyed())?1:2,e)}}function rF(e,t){e&1&&(I(0,`span`,98),K(1,`hydrate never`),L())}function iF(e,t){if(e&1&&(I(0,`span`,98),K(1),L()),e&2){let e=W().$implicit;O(),q(e.hydration)}}function aF(e,t){if(e&1){let e=V();I(0,`li`)(1,`button`,107),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`,62),K(3),L(),I(4,`span`,108),K(5),L(),j(6,rF,2,0,`span`,98)(7,iF,2,1,`span`,98),I(8,`span`,109),K(9),L()()()}if(e&2){let e=t.$implicit;O(),A(`aria-disabled`,e.owner?null:`true`),O(2),q(e.owner?.name??`Unknown component`),O(),x_(`defer-state-`+e.state),O(),q(e.state),O(),M(e.hydrateNever?6:e.hydration===`not-configured`?-1:7),O(3),q(e.triggers.join(`, `)||`no triggers`)}}function oF(e,t){if(e&1&&(I(0,`section`,36)(1,`h2`,105),K(2,` Defer blocks `),I(3,`span`,70),K(4),L()(),I(5,`ul`,106),N(6,aF,10,7,`li`,null,HN),L()()),e&2){let e=W(2);O(4),q(e.deferCount()),O(2),P(e.deferBlocks())}}function sF(e,t){e&1&&R(0,`app-angular-unavailable`,37),e&2&&F(`page`,W(2).angularPage())}function cF(e,t){if(e&1){let e=V();I(0,`app-hydration-section`,110),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 lF(e,t){if(e&1){let e=V();I(0,`app-cd-recording`,111),H(`showComponent`,function(t){return w(e),T(W(2).showCdComponent(t))}),L(),I(1,`app-leaks-section`,112),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 uF(e,t){if(e&1){let e=V();I(0,`p`,3),K(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(),Cs(),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),K(10,` Type plain text, a tag such as