@sachahjkl/backoffice 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/demo-reset.cjs +14 -12
- package/dist/main.cjs +14 -12
- package/dist/migrate.cjs +8 -6
- package/dist/web/chunk-3MmwmyDh.js +1 -0
- package/dist/web/{chunk-DhkjPUn4.js → chunk-6-OG9zy0.js} +1 -1
- package/dist/web/chunk-6twPawwh.js +1 -0
- package/dist/web/{chunk-Bck0-DJt2.js → chunk-AE7J7wcH2.js} +1 -1
- package/dist/web/chunk-AZB0sMq_.js +1 -0
- package/dist/web/{chunk-CGfyD3XX2.js → chunk-B-2b7DJP.js} +1 -1
- package/dist/web/{chunk-BYjxXKZ4.js → chunk-B-XrDECw.js} +1 -1
- package/dist/web/chunk-B0Pr-tNT.js +1 -0
- package/dist/web/chunk-B1Kpw1um.js +1 -0
- package/dist/web/chunk-B2X87TB92.js +1 -0
- package/dist/web/chunk-B3fBH9Bt2.js +1 -0
- package/dist/web/chunk-B4KnJ14M2.js +1 -0
- package/dist/web/{chunk-DZgf7AIe.js → chunk-B4Vcwa9l.js} +1 -1
- package/dist/web/chunk-B4cAnuMM2.js +1 -0
- package/dist/web/chunk-B6mYbErA2.js +1 -0
- package/dist/web/chunk-B6trGhNK2.js +3 -0
- package/dist/web/chunk-B89j6ppg2.js +1 -0
- package/dist/web/chunk-B8tEtjeZ2.js +1 -0
- package/dist/web/chunk-BAYVC6mO2.js +1 -0
- package/dist/web/{chunk-MpUdRrak2.js → chunk-BCN3uL5S.js} +1 -1
- package/dist/web/chunk-BDmE_ZEe2.js +1 -0
- package/dist/web/{chunk-aW8Vltn22.js → chunk-BEYQDr-4.js} +1 -1
- package/dist/web/{chunk-CLHj5Ycx2.js → chunk-BEqSiNum.js} +1 -1
- package/dist/web/chunk-BHnrX0WJ.js +1 -0
- package/dist/web/chunk-BJ0yZa2G.js +1 -0
- package/dist/web/{chunk-Fc120Hsi2.js → chunk-BL3upDtA.js} +1 -1
- package/dist/web/{chunk-POMKwNf_.js → chunk-BMiFx1ci.js} +1 -1
- package/dist/web/{chunk--RuvStn6.js → chunk-BNS7t55s2.js} +1 -1
- package/dist/web/{chunk-D1wrPwB5.js → chunk-BO6tYuf8.js} +1 -1
- package/dist/web/{chunk-HmRGBt692.js → chunk-BPA6_4Vt.js} +1 -1
- package/dist/web/chunk-BRp_hGNk.js +1 -0
- package/dist/web/chunk-BSDpuA332.js +1 -0
- package/dist/web/chunk-BSKQUQGn.js +1 -0
- package/dist/web/{chunk-C0Ceu-vg.js → chunk-BTsDF4C6.js} +1 -1
- package/dist/web/{chunk-CDK48Khc.js → chunk-BVXF-FYe2.js} +1 -1
- package/dist/web/{chunk-BkvskoFt2.js → chunk-BWBbQ7HE2.js} +1 -1
- package/dist/web/{chunk-DTPC4JtI2.js → chunk-BYRTViky2.js} +1 -1
- package/dist/web/chunk-BZe5DpAa.js +1 -0
- package/dist/web/chunk-B_7K7EHr.js +1 -0
- package/dist/web/{chunk-D8xHm8jb2.js → chunk-B_pcpccF.js} +1 -1
- package/dist/web/{chunk-xTX16tt2.js → chunk-B_xlO55a2.js} +1 -1
- package/dist/web/{chunk-BKufCOYq.js → chunk-BfKP2Lf9.js} +1 -1
- package/dist/web/chunk-Bfm6z5eI2.js +1 -0
- package/dist/web/chunk-Bgl7kJgO2.js +1 -0
- package/dist/web/{chunk-enci06qG.js → chunk-Bh2Diab5.js} +1 -1
- package/dist/web/chunk-Bi9TDDm92.js +1 -0
- package/dist/web/chunk-Bit8ybhq.js +1 -0
- package/dist/web/chunk-BmfZmUis.js +1 -0
- package/dist/web/chunk-BpkPnQ2K.js +1 -0
- package/dist/web/chunk-Bq24rsxm2.js +1 -0
- package/dist/web/{chunk-C_QyIKvy.js → chunk-BqXhvdC0.js} +1 -1
- package/dist/web/{chunk-CCkaRRSy.js → chunk-Brog8aBK.js} +1 -1
- package/dist/web/{chunk-C-O6GrQC2.js → chunk-Bu0zsnWO.js} +1 -1
- package/dist/web/chunk-BurkPLm-2.js +1 -0
- package/dist/web/chunk-BuyEsqZU2.js +1 -0
- package/dist/web/{chunk-AJOoJgZJ.js → chunk-BwFjLr9D2.js} +1 -1
- package/dist/web/chunk-BwGtxWvC.js +1 -0
- package/dist/web/chunk-Bxrld4562.js +1 -0
- package/dist/web/{chunk-Bq2zV2_3.js → chunk-C01EdpX9.js} +1 -1
- package/dist/web/{chunk-Dl4EbYnM2.js → chunk-C0dwIYf0.js} +1 -1
- package/dist/web/{chunk-CfcCxe_k.js → chunk-C1BibNrz.js} +1 -1
- package/dist/web/{chunk-Dns8uMf32.js → chunk-C1gYDta1.js} +1 -1
- package/dist/web/{chunk-CubfQf-X2.js → chunk-C2i4N9dz.js} +1 -1
- package/dist/web/{chunk-DpLF2wJ62.js → chunk-C6M6lCrw2.js} +1 -1
- package/dist/web/{chunk-CK6Sjqig.js → chunk-C94w9Yq2.js} +1 -1
- package/dist/web/chunk-CA-xctoQ2.js +1 -0
- package/dist/web/chunk-CBcFgY8f2.js +1 -0
- package/dist/web/{chunk-DGbo0App2.js → chunk-CCItYukO.js} +1 -1
- package/dist/web/chunk-CGLHod2X2.js +1 -0
- package/dist/web/{chunk-Bfx7EEIR.js → chunk-CHUNlDss2.js} +1 -1
- package/dist/web/chunk-CJ10tvOm.js +1 -0
- package/dist/web/chunk-CJE3VBx5.js +1 -0
- package/dist/web/chunk-CL9McPWU.js +1 -0
- package/dist/web/chunk-CLzfpBlo2.js +1 -0
- package/dist/web/chunk-CM29tQ7z.js +1 -0
- package/dist/web/{chunk-Ck6cItVE2.js → chunk-CMC_2rEW.js} +1 -1
- package/dist/web/chunk-CMFGRRh02.js +1 -0
- package/dist/web/chunk-CO_ECkiv.js +1 -0
- package/dist/web/{chunk-D97UUzIx.js → chunk-CQvxhLmC2.js} +1 -1
- package/dist/web/chunk-CRDadWvH2.js +1 -0
- package/dist/web/chunk-CS69nNvh.js +1 -0
- package/dist/web/chunk-CXb1THnv2.js +1 -0
- package/dist/web/chunk-CZM1REvY.js +1 -0
- package/dist/web/chunk-C_4qOSvi2.js +1 -0
- package/dist/web/chunk-C_wLUbPJ2.js +1 -0
- package/dist/web/chunk-CdvoW0GI.js +1 -0
- package/dist/web/{chunk-CE9WzUCM.js → chunk-CecoTW2V.js} +1 -1
- package/dist/web/chunk-Cg6D1SkX2.js +1 -0
- package/dist/web/chunk-ChMWeKtk2.js +1 -0
- package/dist/web/chunk-CiQcqWHR.js +1 -0
- package/dist/web/chunk-Cjj8GJIb2.js +1 -0
- package/dist/web/{chunk-niXXbm7H.js → chunk-CkRw7h0_.js} +1 -1
- package/dist/web/{chunk-nC_XlFOG.js → chunk-Ckk2HUrT.js} +1 -1
- package/dist/web/chunk-Cl9ktebj.js +1 -0
- package/dist/web/chunk-ClviGHGr.js +1 -0
- package/dist/web/{chunk-BVszSMJC.js → chunk-Cm2UNqwE.js} +1 -1
- package/dist/web/chunk-CoUH4AfS2.js +1 -0
- package/dist/web/chunk-CpB8RIpf.js +1 -0
- package/dist/web/{chunk-BpZ7MSOP.js → chunk-CqreQVp_.js} +1 -1
- package/dist/web/{chunk-DEXzwHB0.js → chunk-CrwYH4R_2.js} +1 -1
- package/dist/web/{chunk-RIi7_iVg.js → chunk-CuVXI21d.js} +1 -1
- package/dist/web/{chunk-CvsVlcIU2.js → chunk-CwkgffnU.js} +1 -1
- package/dist/web/chunk-CxgCrZQl.js +1 -0
- package/dist/web/{chunk-DDCyjjcE.js → chunk-CyavDx9Z.js} +1 -1
- package/dist/web/{chunk-r6H-BfOd.js → chunk-D0MIkZdd2.js} +1 -1
- package/dist/web/{chunk-D5qmP2Wu.js → chunk-D8Ui_APT.js} +1 -1
- package/dist/web/{chunk-CPHUl7N2.js → chunk-D8VZRHVx.js} +1 -1
- package/dist/web/chunk-D9pT7T7E.js +1 -0
- package/dist/web/chunk-DD8ATIqT2.js +1 -0
- package/dist/web/chunk-DE4GLf5B.js +1 -0
- package/dist/web/{chunk-CkWd-yMn.js → chunk-DEYSMPA_2.js} +1 -1
- package/dist/web/chunk-DGXdMht2.js +1 -0
- package/dist/web/chunk-DJfwJBD6.js +1 -0
- package/dist/web/chunk-DJwuZjJg2.js +1 -0
- package/dist/web/chunk-DKDWoDXU.js +1 -0
- package/dist/web/chunk-DLH3RPM22.js +1 -0
- package/dist/web/{chunk-qKosqkwC.js → chunk-DQRDJtdh.js} +1 -1
- package/dist/web/chunk-DRY4w4Td.js +1 -0
- package/dist/web/chunk-DTRJLfq02.js +1 -0
- package/dist/web/{chunk-4ipZT9nT.js → chunk-DTj9NKPI.js} +1 -1
- package/dist/web/chunk-DVbkiKVh2.js +1 -0
- package/dist/web/chunk-DVu24rwt.js +1 -0
- package/dist/web/chunk-DWN606KF2.js +1 -0
- package/dist/web/chunk-DZvdrgcs2.js +1 -0
- package/dist/web/chunk-D_X9J-dz2.js +1 -0
- package/dist/web/{chunk-C0gTeWW62.js → chunk-DbL20WIB2.js} +1 -1
- package/dist/web/{chunk-Bb31fHqC2.js → chunk-DbcNGxba.js} +1 -1
- package/dist/web/chunk-Dc29tEgJ2.js +1 -0
- package/dist/web/{chunk-DboSVJMM.js → chunk-Dc8-8Og_.js} +1 -1
- package/dist/web/chunk-DdVUVFhX.js +1 -0
- package/dist/web/chunk-DeERUxjp.js +1 -0
- package/dist/web/chunk-Dfxr5EJU.js +1 -0
- package/dist/web/chunk-DgZvyF3s.js +1 -0
- package/dist/web/chunk-DgZxoBPB.js +1 -0
- package/dist/web/{chunk-DsaNNeZe.js → chunk-DhpMFMQw.js} +1 -1
- package/dist/web/{chunk-DOCau85G2.js → chunk-DlBNgzF8.js} +1 -1
- package/dist/web/{chunk-CVHqiS63.js → chunk-DlecOMbR.js} +1 -1
- package/dist/web/chunk-DnKyRGr_.js +1 -0
- package/dist/web/{chunk-DhLlQTD-2.js → chunk-DnYJfVdt.js} +1 -1
- package/dist/web/chunk-Dr_Uz6uR2.js +1 -0
- package/dist/web/{chunk-NDpjbcAr2.js → chunk-DvAE1Kdh2.js} +1 -1
- package/dist/web/chunk-DwSL7UNj.js +1 -0
- package/dist/web/{chunk-DZgMGE6C.js → chunk-Dyouu0xF.js} +1 -1
- package/dist/web/{chunk-CABvk97t2.js → chunk-DytjnC4n2.js} +1 -1
- package/dist/web/{chunk-CApvwK4D.js → chunk-Fo633neF.js} +1 -1
- package/dist/web/chunk-I2ekTEA32.js +1 -0
- package/dist/web/{chunk-D5MFwK9L.js → chunk-IrDYxRzS.js} +1 -1
- package/dist/web/chunk-JqPdfaO22.js +1 -0
- package/dist/web/chunk-LKcToPK62.js +1 -0
- package/dist/web/{chunk-CtmP6l7_2.js → chunk-Qweefwro2.js} +1 -1
- package/dist/web/chunk-U_cdbXaE2.js +1 -0
- package/dist/web/chunk-Ub2hjsmX.js +1 -0
- package/dist/web/chunk-WylMVh3d.js +1 -0
- package/dist/web/chunk-ZZuAWaLQ.js +1 -0
- package/dist/web/{chunk-C19Alcnx2.js → chunk-Zj43itle.js} +1 -1
- package/dist/web/chunk-ZoQD3eIP2.js +1 -0
- package/dist/web/chunk-ZxYSyP21.js +1 -0
- package/dist/web/{chunk-D_8jIApo.js → chunk-a58d-9ZM2.js} +1 -1
- package/dist/web/{chunk-pV57uiBu2.js → chunk-aGxrcUQJ2.js} +1 -1
- package/dist/web/chunk-bIBAi42v2.js +1 -0
- package/dist/web/{chunk-DIJSXeQC2.js → chunk-bQhJGrXj2.js} +1 -1
- package/dist/web/chunk-c57UHX0J.js +1 -0
- package/dist/web/chunk-eAm9Qkk4.js +1 -0
- package/dist/web/{chunk-WNYFaDlu2.js → chunk-f6C5Rz_B2.js} +1 -1
- package/dist/web/chunk-fLDt2Dc5.js +1 -0
- package/dist/web/{chunk-CmokTGIG.js → chunk-fY-2jgAh.js} +1 -1
- package/dist/web/{chunk-SZJG1lFa2.js → chunk-f_xeGTT7.js} +1 -1
- package/dist/web/chunk-fxkvCM0b.js +1 -0
- package/dist/web/{chunk-9X4vLcFh.js → chunk-k8jJDyGi.js} +1 -1
- package/dist/web/{chunk-DerJPaBw.js → chunk-mCmB-2Tr.js} +1 -1
- package/dist/web/{chunk-DXvlXoVT2.js → chunk-mqeSFXPY2.js} +1 -1
- package/dist/web/{chunk-D6k6pmdU.js → chunk-o83QpKCY.js} +1 -1
- package/dist/web/chunk-pffFf_PV2.js +1 -0
- package/dist/web/{chunk-XtjMOmku2.js → chunk-sAfSVia62.js} +1 -1
- package/dist/web/{chunk-CEJjSd8-2.js → chunk-xIoy5TmG2.js} +1 -1
- package/dist/web/{chunk-B8_dFe5w.js → chunk-xRsHYitB.js} +1 -1
- package/dist/web/index.csr.html +1 -1
- package/dist/web/{main-F7D3L737.js → main-LXYWXFW4.js} +2 -2
- package/package.json +1 -1
- package/dist/web/chunk-6jIo5mZ42.js +0 -1
- package/dist/web/chunk-9d_UD-MQ.js +0 -1
- package/dist/web/chunk-B0bNirg2.js +0 -1
- package/dist/web/chunk-B3OxeBLO2.js +0 -1
- package/dist/web/chunk-B5xzAYYx2.js +0 -1
- package/dist/web/chunk-B6Rml85x2.js +0 -1
- package/dist/web/chunk-B91VAo1J.js +0 -1
- package/dist/web/chunk-B9NV1rY62.js +0 -1
- package/dist/web/chunk-BAn0tBhX.js +0 -1
- package/dist/web/chunk-BGVaNZdj.js +0 -1
- package/dist/web/chunk-BHDXYrox.js +0 -1
- package/dist/web/chunk-BI9lIdFn.js +0 -1
- package/dist/web/chunk-BNksdK_D2.js +0 -1
- package/dist/web/chunk-BQ7WWH4L.js +0 -1
- package/dist/web/chunk-BQrmVphu2.js +0 -1
- package/dist/web/chunk-BR0demlX.js +0 -1
- package/dist/web/chunk-BT8KtCYG.js +0 -1
- package/dist/web/chunk-BZZJ287h.js +0 -1
- package/dist/web/chunk-BcUjdID-.js +0 -1
- package/dist/web/chunk-Bf3eV_su2.js +0 -1
- package/dist/web/chunk-BfSewUhY.js +0 -1
- package/dist/web/chunk-Bi4Jixry2.js +0 -1
- package/dist/web/chunk-BiECfDS7.js +0 -1
- package/dist/web/chunk-Bj7Oze2U2.js +0 -1
- package/dist/web/chunk-Bjo6eVnk.js +0 -1
- package/dist/web/chunk-Bn46cQyx.js +0 -1
- package/dist/web/chunk-Bn6RkvPA2.js +0 -1
- package/dist/web/chunk-Bsy3r41y2.js +0 -1
- package/dist/web/chunk-By2EFyNM.js +0 -1
- package/dist/web/chunk-CCqlW8pS2.js +0 -3
- package/dist/web/chunk-CCr_R2Cg.js +0 -1
- package/dist/web/chunk-CDS6LjBz2.js +0 -1
- package/dist/web/chunk-CG4Kbo1n2.js +0 -1
- package/dist/web/chunk-CKFB1V-p2.js +0 -1
- package/dist/web/chunk-CL02A9wI.js +0 -1
- package/dist/web/chunk-CLZ5xsSQ2.js +0 -1
- package/dist/web/chunk-CMvRZBpn.js +0 -1
- package/dist/web/chunk-CNfmNEak.js +0 -1
- package/dist/web/chunk-COTrF1xY2.js +0 -1
- package/dist/web/chunk-COXN76fu2.js +0 -1
- package/dist/web/chunk-CUqj_Bxs2.js +0 -1
- package/dist/web/chunk-CV_fLVFT.js +0 -1
- package/dist/web/chunk-CYGyIy7J.js +0 -1
- package/dist/web/chunk-CYRUKYKv2.js +0 -1
- package/dist/web/chunk-Ca3lwqEF.js +0 -1
- package/dist/web/chunk-CaJrmM9V.js +0 -1
- package/dist/web/chunk-CpXqQPuw.js +0 -1
- package/dist/web/chunk-CuepVIkm2.js +0 -1
- package/dist/web/chunk-CvMAjyvr2.js +0 -1
- package/dist/web/chunk-CwzCbuXH.js +0 -1
- package/dist/web/chunk-Cx07K71K.js +0 -1
- package/dist/web/chunk-D-VHaopx.js +0 -1
- package/dist/web/chunk-D1DvlGbP.js +0 -1
- package/dist/web/chunk-D3XjW5Cm.js +0 -1
- package/dist/web/chunk-D8kEdb5y2.js +0 -1
- package/dist/web/chunk-D8t0s8LD.js +0 -1
- package/dist/web/chunk-DB6sOjsn2.js +0 -1
- package/dist/web/chunk-DIBFSF2Z.js +0 -1
- package/dist/web/chunk-DKlxu0GP2.js +0 -1
- package/dist/web/chunk-DM4Wc9U7.js +0 -1
- package/dist/web/chunk-DM5aibnW.js +0 -1
- package/dist/web/chunk-DMXgU6Nc2.js +0 -1
- package/dist/web/chunk-DMskLhpk2.js +0 -1
- package/dist/web/chunk-DOinRyX_2.js +0 -1
- package/dist/web/chunk-DQp-2GVv.js +0 -1
- package/dist/web/chunk-DQr_9Q6T.js +0 -1
- package/dist/web/chunk-DSpA-ZPx.js +0 -1
- package/dist/web/chunk-DURq7J8U2.js +0 -1
- package/dist/web/chunk-DVJ4YZuU.js +0 -1
- package/dist/web/chunk-DVyDnsGh.js +0 -1
- package/dist/web/chunk-D_vyhgGx.js +0 -1
- package/dist/web/chunk-Db2zQ-8C.js +0 -1
- package/dist/web/chunk-DdOc1fs-.js +0 -1
- package/dist/web/chunk-DddDKWSn2.js +0 -1
- package/dist/web/chunk-Dh86w63y.js +0 -1
- package/dist/web/chunk-Di9FA_QV.js +0 -1
- package/dist/web/chunk-DjwvqY3z2.js +0 -1
- package/dist/web/chunk-Dl4V93zm2.js +0 -1
- package/dist/web/chunk-Dnzjseqf2.js +0 -1
- package/dist/web/chunk-DpI44v1z.js +0 -1
- package/dist/web/chunk-Dqhs2Pyw2.js +0 -1
- package/dist/web/chunk-DubWLqvO.js +0 -1
- package/dist/web/chunk-IlM3eTPp2.js +0 -1
- package/dist/web/chunk-IzGdqlW82.js +0 -1
- package/dist/web/chunk-P1du2kWg2.js +0 -1
- package/dist/web/chunk-PqGGk0JD.js +0 -1
- package/dist/web/chunk-XvyWOb2Q.js +0 -1
- package/dist/web/chunk-ZBDWcE362.js +0 -1
- package/dist/web/chunk-ZcJhJsoo.js +0 -1
- package/dist/web/chunk-a_Va_Nj7.js +0 -1
- package/dist/web/chunk-fYJ7OBkh.js +0 -1
- package/dist/web/chunk-k6TIcaIA.js +0 -1
- package/dist/web/chunk-owvOEsA9.js +0 -1
- package/dist/web/chunk-scbWWgLx2.js +0 -1
- package/dist/web/chunk-tDREPM-0.js +0 -1
- package/dist/web/chunk-y0Vyi0HZ.js +0 -1
- package/dist/web/chunk-yfBrkklv.js +0 -1
- /package/dist/web/{chunk-1ErswIDf.js → chunk-1ErswIDf2.js} +0 -0
- /package/dist/web/{chunk-CARNiCDb2.js → chunk-CARNiCDb.js} +0 -0
- /package/dist/web/{chunk-CGo7Fepz.js → chunk-CGo7Fepz2.js} +0 -0
- /package/dist/web/{chunk-CKxU-VJf.js → chunk-CKxU-VJf2.js} +0 -0
- /package/dist/web/{chunk-CP-AnFGa2.js → chunk-CP-AnFGa.js} +0 -0
- /package/dist/web/{chunk-CXHCUTDs.js → chunk-CXHCUTDs2.js} +0 -0
- /package/dist/web/{chunk-CczD0yXn.js → chunk-CczD0yXn2.js} +0 -0
- /package/dist/web/{chunk-CtcsJTAS2.js → chunk-CtcsJTAS.js} +0 -0
- /package/dist/web/{chunk-WJWN7A_V2.js → chunk-WJWN7A_V.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as m$4,t as l$1}from"./chunk-BwCtja5l.js";import{$n as nE,$t as ZC,A as Gy,Ar as uA,B as It$1,Br as xE,Bt as Ve$1,Cn as fE,Cr as s8,D as Fy,Dn as g$2,Dr as t_,E as Ft,En as fe$1,Et as Ra,F as IE,Fr as we$2,G as Ka,Gn as k_,Gt as Ww,H as JD,Hn as kE,Hr as xU,Ht as Vr,In as jH,Ir as wp,It as Us,Jn as lA,Jr as zS,Jt as Xy,K as Ke,Kn as kt$1,Kr as yo$1,Kt as XS,L as IN,Ln as jN,Lr as wy,Mn as i8,Nn as ie$3,Nr as vd,O as Gn$1,Or as tb,Ot as S$4,P as Hn$1,Pn as il,Qn as n8,R as Ia,Rr as x$3,Sn as fD,T as Fo,Tn as fd,Tr as se$2,Tt as RU,U as JS,Un as kH,Ur as y$2,V as Iy,Vn as jt,W as KS,Wn as kS,Wr as y_,Wt as We$1,Yn as ln$1,Yt as Ya,Z as Ly,Zt as Yt$1,_n as cn$1,a as $v,ar as oD,at as Ny,b as E$4,bn as dA,br as rl,cn as aa,cr as pE,d as Ar,dn as at$2,dr as pe$3,dt as Of,en as ZS,et as MS,f as At$1,fr as py,ft as Ol,g as Cr$1,gn as ce$3,gr as qa,h as CE,i as $r,in as Zy,ir as o8,it as Nt$2,j as H$3,jr as ue$1,k as Gr,kn as hd,l as A_,ln as ad,lr as pN,lt as OS,m as By,n as $E,nn as Za,nr as nt$1,nt as NH,o as A$2,on as _H,or as ou,ot as OD,p as Be$1,pr as qS,pt as Op,qn as ky,r as $_,rr as nv,rt as NS,s as AE,sn as _i$1,st as OE,u as Ao$1,un as ae$3,ur as pd,v as DI,vn as cr$1,vr as qy,vt as Py,w as Fb,wn as fa,wr as sd,xn as e_,xr as rn,xt as Qg,yr as r8,yt as Qa,z as Ip}from"./chunk-BAHiFuUo.js";var p$4=`primary`;var Fe=Symbol(`RouteTitle`);var Kt=class{params;constructor(n){this.params=n||{}}has(n){return Object.hasOwn(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function oe$2(t){return new Kt(t)}function Vt(t,n,e){for(let r=0;r<t.length;r++){let i=t[r],o=n[r];if(i[0]===`:`)e[i.substring(1)]=o;else if(i!==o.path)return!1}return!0}function ln(t,n,e){let r=e.path.split(`/`),i=r.indexOf(`**`);if(i===-1){if(r.length>t.length||e.pathMatch===`full`&&(n.hasChildren()||r.length<t.length))return null;let a={},u=t.slice(0,r.length);return Vt(r,u,a)?{consumed:u,posParams:a}:null}if(i!==r.lastIndexOf(`**`))return null;let o=r.slice(0,i),s=r.slice(i+1);if(o.length+s.length>t.length||e.pathMatch===`full`&&n.hasChildren()&&e.path!==`**`)return null;let c={};return!Vt(o,t.slice(0,o.length),c)||!Vt(s,t.slice(t.length-s.length),c)?null:{consumed:t,posParams:c}}function ut$1(t){return new Promise((n,e)=>{t.pipe(AE()).subscribe({next:r=>n(r),error:r=>e(r)})})}function ei(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!F$3(t[e],n[e]))return!1;return!0}function F$3(t,n){let e=t?Yt(t):void 0,r=n?Yt(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let o=0;o<e.length;o++)if(i=e[o],!dn(t[i],n[i]))return!1;return!0}function Yt(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function dn(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,o)=>r[o]===i)}else return t===n}function ti(t){return t.length>0?t[t.length-1]:null}function ae$2(t){return pE(t)?t:aa(t)?nt$1(Promise.resolve(t)):$r(t)}function hn(t){return pE(t)?ut$1(t):Promise.resolve(t)}var ri={exact:pn,subset:gn};var fn={exact:ni,subset:ii,ignored:()=>!0};var dr={paths:`exact`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`exact`};var ve={paths:`subset`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`subset`};function hr(t,n,e){let r=t instanceof E$3?t:n.parseUrl(t);return Ft(()=>Zt(n.lastSuccessfulNavigation()?.finalUrl??new E$3,r,l$1(l$1({},ve),e)))}function Zt(t,n,e){return ri[e.paths](t.root,n.root,e.matrixParams)&&fn[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment===`exact`&&t.fragment!==n.fragment)}function ni(t,n){return F$3(t,n)}function pn(t,n,e){if(!ie$2(t.segments,n.segments)||!st$1(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!pn(t.children[r],n.children[r],e))return!1;return!0}function ii(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>dn(t[e],n[e]))}function gn(t,n,e){return vn(t,n,n.segments,e)}function vn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!ie$2(i,e)||n.hasChildren()||!st$1(i,e,r))}else if(t.segments.length===e.length){if(!ie$2(t.segments,e)||!st$1(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!gn(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!ie$2(t.segments,i)||!st$1(t.segments,i,r)||!t.children[`primary`]?!1:vn(t.children[p$4],n,o,r)}}function st$1(t,n,e){return n.every((r,i)=>fn[e](t[i].parameters,r.parameters))}var E$3=class{root;queryParams;fragment;_queryParamMap;constructor(n=new m$3([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=oe$2(this.queryParams),this._queryParamMap}toString(){return ai.serialize(this)}};var m$3=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return at$1(this)}};var K$3=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=oe$2(this.parameters),this._parameterMap}toString(){return yn(this)}};function oi(t,n){return ie$2(t,n)&&t.every((e,r)=>F$3(e.parameters,n[r].parameters))}function ie$2(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function si(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===`primary`&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==`primary`&&(e=e.concat(n(i,r)))}),e}var ce$2=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>new Y$3})}return t})();var Y$3=class{parse(n){let e=new Xt(n);return new E$3(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){return`${`/${_e$1(n.root,!0)}`}${li(n.queryParams)}${typeof n.fragment==`string`?`#${ci(n.fragment)}`:``}`}};var ai=new Y$3;function at$1(t){return t.segments.map(n=>yn(n)).join(`/`)}function _e$1(t,n){if(!t.hasChildren())return at$1(t);if(n){let e=t.children[`primary`]?_e$1(t.children[p$4],!1):``,r=[];return Object.entries(t.children).forEach(([i,o])=>{i!==`primary`&&r.push(`${i}:${_e$1(o,!1)}`)}),r.length>0?`${e}(${r.join(`//`)})`:e}else{let e=si(t,(r,i)=>i===`primary`?[_e$1(t.children[p$4],!1)]:[`${i}:${_e$1(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[`primary`]!=null?`${at$1(t)}/${e[0]}`:`${at$1(t)}/(${e.join(`//`)})`}}function mn(t){return encodeURIComponent(t).replace(/%40/g,`@`).replace(/%3A/gi,`:`).replace(/%24/g,`$`).replace(/%2C/gi,`,`)}function it$1(t){return mn(t).replace(/%3B/gi,`;`)}function ci(t){return encodeURI(t)}function Jt(t){return mn(t).replace(/\(/g,`%28`).replace(/\)/g,`%29`).replace(/%26/gi,`&`)}function ct$1(t){return decodeURIComponent(t)}function nn(t){return ct$1(t.replace(/\+/g,`%20`))}function yn(t){return`${Jt(t.path)}${ui(t.parameters)}`}function ui(t){return Object.entries(t).map(([n,e])=>`;${Jt(n)}=${Jt(e)}`).join(``)}function li(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${it$1(e)}=${it$1(i)}`).join(`&`):`${it$1(e)}=${it$1(r)}`).filter(e=>e);return n.length?`?${n.join(`&`)}`:``}var di=/^[^\/()?;#]+/;function Gt(t){let n=t.match(di);return n?n[0]:``}var hi=/^[^\/()?;=#]+/;function fi(t){let n=t.match(hi);return n?n[0]:``}var pi=/^[^=?&#]+/;function gi(t){let n=t.match(pi);return n?n[0]:``}var vi=/^[^&#]+/;function mi(t){let n=t.match(vi);return n?n[0]:``}var Xt=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){for(;this.consumeOptional(`/`););return this.remaining===``||this.peekStartsWith(`?`)||this.peekStartsWith(`#`)?new m$3([],{}):new m$3([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional(`?`))do this.parseQueryParam(n);while(this.consumeOptional(`&`));return n}parseFragment(){return this.consumeOptional(`#`)?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new y$2(4010,!1);if(this.remaining===``)return{};this.consumeOptional(`/`);let e=[];for(this.peekStartsWith(`(`)||e.push(this.parseSegment());this.peekStartsWith(`/`)&&!this.peekStartsWith(`//`)&&!this.peekStartsWith(`/(`);)this.capture(`/`),e.push(this.parseSegment());let r={};this.peekStartsWith(`/(`)&&(this.capture(`/`),r=this.parseParens(!0,n));let i={};return this.peekStartsWith(`(`)&&(i=this.parseParens(!1,n)),(e.length>0||Object.keys(r).length>0)&&(i[`primary`]=new m$3(e,r)),i}parseSegment(){let n=Gt(this.remaining);if(n===``&&this.peekStartsWith(`;`))throw new y$2(4009,!1);return this.capture(n),new K$3(ct$1(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(`;`);)this.parseParam(n);return n}parseParam(n){let e=fi(this.remaining);if(!e)return;this.capture(e);let r=``;if(this.consumeOptional(`=`)){let i=Gt(this.remaining);i&&(r=i,this.capture(r))}n[ct$1(e)]=ct$1(r)}parseQueryParam(n){let e=gi(this.remaining);if(!e)return;this.capture(e);let r=``;if(this.consumeOptional(`=`)){let s=mi(this.remaining);s&&(r=s,this.capture(r))}let i=nn(e),o=nn(r);if(Object.hasOwn(n,i)){let s=n[i];Array.isArray(s)||(s=[s],n[i]=s),s.push(o)}else n[i]=o}parseParens(n,e){let r=Object.create(null);for(this.capture(`(`);!this.consumeOptional(`)`)&&this.remaining.length>0;){let i=Gt(this.remaining),o=this.remaining[i.length];if(o!==`/`&&o!==`)`&&o!==`;`)throw new y$2(4010,!1);let s;i.indexOf(`:`)>-1?(s=i.slice(0,i.indexOf(`:`)),this.capture(s),this.capture(`:`)):n&&(s=`primary`);let c=this.parseChildren(e+1);r[s??`primary`]=Object.keys(c).length===1&&c[`primary`]?c[p$4]:new m$3([],c),this.consumeOptional(`//`)}return r}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new y$2(4011,!1)}};function Rn(t){return t.segments.length>0?new m$3([],{[p$4]:t}):t}function Sn(t){let n=Object.create(null);for(let[r,i]of Object.entries(t.children)){let o=Sn(i);if(r===`primary`&&o.segments.length===0&&o.hasChildren())for(let[s,c]of Object.entries(o.children))n[s]=c;else(o.segments.length>0||o.hasChildren())&&(n[r]=o)}return yi(new m$3(t.segments,n))}function yi(t){if(t.numberOfChildren===1&&t.children[`primary`]){let n=t.children[p$4];return new m$3(t.segments.concat(n.segments),n.children)}return t}function Z$3(t){return t instanceof E$3}function Cn(t,n,e=null,r=null,i=new Y$3){return bn(wn(t),n,e,r,i)}function wn(t){let n;function e(o){let s={};for(let a of o.children){let u=e(a);s[a.outlet]=u}let c=new m$3(o.url,s);return o===t&&(n=c),c}let i=Rn(e(t.root));return n??i}function bn(t,n,e,r,i){let o=t;for(;o.parent;)o=o.parent;if(n.length===0)return Wt(o,o,o,e,r,i);let s=Ri(n);if(s.toRoot())return Wt(o,o,new m$3([],{}),e,r,i);let c=Si(s,o,t),a=c.processChildren?Oe$1(c.segmentGroup,c.index,s.commands):En(c.segmentGroup,c.index,s.commands);return Wt(o,c.segmentGroup,a,e,r,i)}function lt$1(t){return typeof t==`object`&&t!=null&&!t.outlets&&!t.segmentPath}function Le$1(t){return typeof t==`object`&&t!=null&&t.outlets}function on(t,n,e){t||=`ɵ`;let r=new E$3;return r.queryParams={[t]:n},e.parse(e.serialize(r)).queryParams[t]}function Wt(t,n,e,r,i,o){let s={};for(let[u,l]of Object.entries(r??{}))s[u]=Array.isArray(l)?l.map(v=>on(u,v,o)):on(u,l,o);let c;t===n?c=e:c=In(t,n,e);return new E$3(Rn(Sn(c)),s,i)}function In(t,n,e){let r=Object.create(null);return Object.entries(t.children).forEach(([i,o])=>{o===n?r[i]=e:r[i]=In(o,n,e)}),new m$3(t.segments,r)}var dt$1=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&<$1(r[0]))throw new y$2(4003,!1);let i=r.find(Le$1);if(i&&i!==ti(r))throw new y$2(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]==`/`}};function Ri(t){if(typeof t[0]==`string`&&t.length===1&&t[0]===`/`)return new dt$1(!0,0,t);let n=0,e=!1,r=t.reduce((i,o,s)=>{if(typeof o==`object`&&o!=null){if(o.outlets){let c={};return Object.entries(o.outlets).forEach(([a,u])=>{c[a]=typeof u==`string`?u.split(`/`):u}),[...i,{outlets:c}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!=`string`?[...i,o]:s===0?(o.split(`/`).forEach((c,a)=>{a==0&&c===`.`||(a==0&&c===``?e=!0:c===`..`?n++:c!=``&&i.push(c))}),i):[...i,o]},[]);return new dt$1(e,n,r)}var fe=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function Si(t,n,e){if(t.isAbsolute)return new fe(n,!0,0);if(!e)return new fe(n,!1,NaN);if(e.parent===null)return new fe(e,!0,0);let r=lt$1(t.commands[0])?0:1;return Ci(e,e.segments.length-1+r,t.numberOfDoubleDots)}function Ci(t,n,e){let r=t,i=n,o=e;for(;o>i;){if(o-=i,r=r.parent,!r)throw new y$2(4005,!1);i=r.segments.length}return new fe(r,!1,i-o)}function wi(t){return Le$1(t[0])?t[0].outlets:{[p$4]:t}}function En(t,n,e){if(t??=new m$3([],{}),t.segments.length===0&&t.hasChildren())return Oe$1(t,n,e);let r=bi(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let o=new m$3(t.segments.slice(0,r.pathIndex),{});return o.children[p$4]=new m$3(t.segments.slice(r.pathIndex),t.children),Oe$1(o,0,i)}else return r.match&&i.length===0?new m$3(t.segments,{}):r.match&&!t.hasChildren()?er(t,n,e):r.match?Oe$1(t,0,i):er(t,n,e)}function Oe$1(t,n,e){if(e.length===0)return new m$3(t.segments,{});{let r=wi(e),i=Object.create(null);if(Object.keys(r).some(o=>o!==`primary`)&&t.children[`primary`]&&t.numberOfChildren===1&&t.children[`primary`].segments.length===0){let o=Oe$1(t.children[p$4],n,e);return new m$3(t.segments,o.children)}return Object.entries(r).forEach(([o,s])=>{typeof s==`string`&&(s=[s]),s!==null&&(i[o]=En(t.children[o],n,s))}),Object.entries(t.children).forEach(([o,s])=>{r[o]===void 0&&(i[o]=s)}),new m$3(t.segments,i)}}function bi(t,n,e){let r=0,i=n,o={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return o;let s=t.segments[i],c=e[r];if(Le$1(c))break;let a=`${c}`,u=r<e.length-1?e[r+1]:null;if(i>0&&a===void 0)break;if(a&&u&&typeof u==`object`&&u.outlets===void 0){if(!an(a,u,s))return o;r+=2}else{if(!an(a,{},s))return o;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function er(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let o=e[i];if(Le$1(o))return new m$3(r,Ii(o.outlets));if(i===0&<$1(e[0])){let a=t.segments[n];r.push(new K$3(a.path,sn(e[0]))),i++;continue}let s=Le$1(o)?o.outlets[p$4]:`${o}`,c=i<e.length-1?e[i+1]:null;s&&c&<$1(c)?(r.push(new K$3(s,sn(c))),i+=2):(r.push(new K$3(s,{})),i++)}return new m$3(r,{})}function Ii(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r==`string`&&(r=[r]),r!==null&&(n[e]=er(new m$3([],{}),0,r))}),n}function sn(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function an(t,n,e){return t==e.path&&F$3(n,e.parameters)}var pe$2=`imperative`;var S$3=(function(t){return t[t.NavigationStart=0]=`NavigationStart`,t[t.NavigationEnd=1]=`NavigationEnd`,t[t.NavigationCancel=2]=`NavigationCancel`,t[t.NavigationError=3]=`NavigationError`,t[t.RoutesRecognized=4]=`RoutesRecognized`,t[t.ResolveStart=5]=`ResolveStart`,t[t.ResolveEnd=6]=`ResolveEnd`,t[t.GuardsCheckStart=7]=`GuardsCheckStart`,t[t.GuardsCheckEnd=8]=`GuardsCheckEnd`,t[t.RouteConfigLoadStart=9]=`RouteConfigLoadStart`,t[t.RouteConfigLoadEnd=10]=`RouteConfigLoadEnd`,t[t.ChildActivationStart=11]=`ChildActivationStart`,t[t.ChildActivationEnd=12]=`ChildActivationEnd`,t[t.ActivationStart=13]=`ActivationStart`,t[t.ActivationEnd=14]=`ActivationEnd`,t[t.Scroll=15]=`Scroll`,t[t.NavigationSkipped=16]=`NavigationSkipped`,t})(S$3||{});var U$3=class{id;url;constructor(n,e){this.id=n,this.url=e}};var J$3=class extends U$3{type=S$3.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r=`imperative`,i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}};var x$2=class extends U$3{urlAfterRedirects;type=S$3.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}};var b$2=(function(t){return t[t.Redirect=0]=`Redirect`,t[t.SupersededByNewNavigation=1]=`SupersededByNewNavigation`,t[t.NoDataFromResolver=2]=`NoDataFromResolver`,t[t.GuardRejected=3]=`GuardRejected`,t[t.Aborted=4]=`Aborted`,t})(b$2||{});var me$1=(function(t){return t[t.IgnoredSameUrlNavigation=0]=`IgnoredSameUrlNavigation`,t[t.IgnoredByUrlHandlingStrategy=1]=`IgnoredByUrlHandlingStrategy`,t})(me$1||{});var j$3=class extends U$3{reason;code;type=S$3.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function An(t){return t instanceof j$3&&(t.code===b$2.Redirect||t.code===b$2.SupersededByNewNavigation)}var H$2=class extends U$3{reason;code;type=S$3.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}};var se$1=class extends U$3{error;target;type=S$3.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}};var je=class extends U$3{urlAfterRedirects;state;type=S$3.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var ht$1=class extends U$3{urlAfterRedirects;state;type=S$3.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var ft$1=class extends U$3{urlAfterRedirects;state;shouldActivate;type=S$3.GuardsCheckEnd;constructor(n,e,r,i,o){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=o}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}};var pt=class extends U$3{urlAfterRedirects;state;type=S$3.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var gt$1=class extends U$3{urlAfterRedirects;state;type=S$3.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var vt$1=class{route;type=S$3.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}};var mt$1=class{route;type=S$3.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}};var yt$1=class{snapshot;type=S$3.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var Rt=class{snapshot;type=S$3.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var St$1=class{snapshot;type=S$3.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var Ct$1=class{snapshot;type=S$3.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var ye$1=class{routerEvent;position;anchor;scrollBehavior;type=S$3.Scroll;constructor(n,e,r,i){this.routerEvent=n,this.position=e,this.anchor=r,this.scrollBehavior=i}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}};var Re$1=class{};var xe$1=class{};var Se$1=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function Ei(t){return!(t instanceof Re$1)&&!(t instanceof Se$1)&&!(t instanceof xe$1)}var wt=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Ie$1(this.rootInjector)}};var Ie$1=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new wt(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static ɵfac=function(r){return new(r||t)(S$4(fe$1))};static ɵprov=A$2({token:t,factory:t.ɵfac,providedIn:`root`})}return t})();var bt$2=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=tr(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=tr(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=rr(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return rr(n,this._root).map(e=>e.value)}};function tr(t,n){if(t===n.value)return n;for(let e of n.children){let r=tr(t,e);if(r)return r}return null}function rr(t,n){if(t===n.value)return[n];for(let e of n.children){let r=rr(t,e);if(r.length)return r.unshift(n),r}return[]}var _$2=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function he(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var ke$1=class extends bt$2{snapshot;constructor(n,e){super(n),this.snapshot=e,pr(this,n)}toString(){return this.snapshot.toString()}};function Mn(t,n){let e=Ai(t,n),r=new Vr([new K$3(``,{})]),i=new Vr({}),o=new Vr({}),a=new G$2(r,i,new Vr({}),new Vr(``),o,p$4,t,e.root);return a.snapshot=e.root,new ke$1(new _$2(a,[]),e)}function Ai(t,n){return new $e(``,new _$2(new Ce$1([],{},{},``,{},p$4,t,null,{},n),[]))}var G$2=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;resources;_localInjector;pending;paramsSignal;queryParamsSignal;paramMapSignal;queryParamMapSignal;fragmentSignal;dataSignal;constructor(n,e,r,i,o,s,c,a){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=o,this.outlet=s,this.component=c,this._futureSnapshot=a,this.title=this.dataSubject?.pipe(ae$3(u=>u[Fe]))??$r(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(ae$3(n=>oe$2(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(ae$3(n=>oe$2(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}_setPending(n){this._futureSnapshot=n,this.pending?.set(!0)}};var Mi=`always`;function fr(t,n,e){let r,{routeConfig:i}=t;return n!==null&&(e===`always`||i?.path===``||!n.component&&!n.routeConfig?.loadComponent)?r={params:l$1(l$1({},n.params),t.params),data:l$1(l$1({},n.data),t.data),resolve:l$1(l$1(l$1(l$1({},t.data),n.data),i?.data),t._resolvedData)}:r={params:l$1({},t.params),data:l$1({},t.data),resolve:l$1(l$1({},t.data),t._resolvedData??{})},i&&Nn(i)&&(r.resolve[Fe]=i.title),r}var Ce$1=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;resources;get title(){return this.data?.[Fe]}constructor(n,e,r,i,o,s,c,a,u,l){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o,this.outlet=s,this.component=c,this.routeConfig=a,this._resolve=u,this._environmentInjector=l}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=oe$2(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=oe$2(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(r=>r.toString()).join(`/`)}', path:'${this.routeConfig?this.routeConfig.path:``}')`}};var $e=class extends bt$2{url;constructor(n,e){super(e),this.url=n,pr(this,e)}toString(){return Tn(this._root)}};function pr(t,n){n.value._routerState=t,n.children.forEach(e=>pr(t,e))}function Tn(t){let n=t.children.length>0?` { ${t.children.map(Tn).join(`, `)} } `:``;return`${t.value}${n}`}function Qt(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,F$3(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),F$3(n.params,e.params)||t.paramsSubject.next(e.params),ei(n.url,e.url)||t.urlSubject.next(e.url),F$3(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function nr(t,n){let e=F$3(t.params,n.params)&&oi(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||nr(t.parent,n.parent))}function Nn(t){return typeof t.title==`string`||t.title===null}var Dn=new E$4(``);var gr=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=p$4;activateEvents=new It$1;deactivateEvents=new It$1;attachEvents=new It$1;detachEvents=new It$1;routerOutletData=NH();parentContexts=g$2(Ie$1);location=g$2(Ar);changeDetector=g$2(oD);inputBinder=g$2(He,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new y$2(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new y$2(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new y$2(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new y$2(4013,!1);this._activatedRoute=e;let i=this.location,s=e.snapshot.component,c=this.parentContexts.getOrCreateContext(this.name).children,a=new ir(e,c,i.injector,this.routerOutletData);this.activated=i.createComponent(s,{index:i.length,injector:a,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.activateEvents.emit(this.activated.instance)}static ɵfac=function(r){return new(r||t)};static ɵdir=ad({type:t,selectors:[[`router-outlet`]],inputs:{name:`name`,routerOutletData:[1,`routerOutletData`]},outputs:{activateEvents:`activate`,deactivateEvents:`deactivate`,attachEvents:`attach`,detachEvents:`detach`},exportAs:[`outlet`],features:[rl]})}return t})();var ir=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===G$2?this.route:n===Ie$1?this.childContexts:n===Dn?this.outletData:this.parent.get(n,e)}};var He=new E$4(``);var _n=(()=>{class t{options;feature;outletDataSubscriptions=new Map;outletSeenKeys=new Map;outletEffects=new Map;constructor(e,r=null){this.options=e,this.feature=r,this.options.queryParams??=!0}bindActivatedRouteToOutletComponent(e,r){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e,r)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e),this.outletSeenKeys.delete(e),this.outletEffects.get(e)?.forEach(r=>r.destroy()),this.outletEffects.delete(e)}subscribeToRouteData(e,r){let{activatedRoute:i}=e,o=[],s=[];if(this.feature?.createResourceOutletBindingEffects&&e.activatedComponentRef){let{handledKeys:a,createdEffects:u}=this.feature.createResourceOutletBindingEffects(e.activatedComponentRef,i,r);o.push(...u),s=a}o.length>0&&this.outletEffects.set(e,o);let c=IE([this.options.queryParams?i.queryParams:$r({}),i.params,i.data]).pipe(Qa(([a,u,l],v)=>(l=l$1(l$1(l$1(l$1({},a),u),l),i.resources||{}),v===0?$r(l):Promise.resolve(l)))).subscribe(a=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||i.component===null){this.unsubscribeFromRouteData(e);return}let u=jH(i.component);if(!u){this.unsubscribeFromRouteData(e);return}let l=this.outletSeenKeys.get(e);l||(l=new Set,this.outletSeenKeys.set(e,l));for(let f of Object.keys(a))l.add(f);let v=this.options.unmatchedInputBehavior??`alwaysUndefined`;for(let{templateName:f}of u.inputs){if(s.includes(f))continue;let R=a[f];(R!==void 0||v===`alwaysUndefined`||l.has(f))&&e.activatedComponentRef.setInput(f,R)}});this.outletDataSubscriptions.set(e,c)}static ɵfac=function(r){tb()};static ɵprov=A$2({token:t,factory:t.ɵfac})}return t})();var vr=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵcmp=Fb({type:t,selectors:[[`ng-component`]],exportAs:[`emptyRouterOutlet`],decls:1,vars:0,template:function(r,i){r&1&&Py(0,`router-outlet`)},dependencies:[gr],encapsulation:2,changeDetection:1})}return t})();function mr(t){let n=t.children&&t.children.map(mr),e=n?m$4(l$1({},t),{children:n}):l$1({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==`primary`&&(e.component=vr),e}function Ti(t,n,e){let r=new Set;return{newlyCreatedRoutes:r,state:new ke$1(ze$1(t,n._root,e?e._root:void 0,r),n)}}function ze$1(t,n,e,r){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let i=e.value;i._setPending(n.value);return new _$2(i,Ni(t,n,e,r))}else{if(t.shouldAttach(n.value)){let s=t.retrieve(n.value);if(s!==null){let c=s.route;return c.value._setPending(n.value),c.children=n.children.map(a=>ze$1(t,a,void 0,r)),c}}let i=Di(n.value);i._setPending(n.value),r.add(i);return new _$2(i,n.children.map(s=>ze$1(t,s,void 0,r)))}}function Ni(t,n,e,r){return n.children.map(i=>{for(let o of e.children)if(t.shouldReuseRoute(i.value,o.value.snapshot))return ze$1(t,i,o,r);return ze$1(t,i,void 0,r)})}function Di(t){return new G$2(new Vr(t.url),new Vr(t.params),new Vr(t.queryParams),new Vr(t.fragment),new Vr(t.data),t.outlet,t.component,t)}var we$1=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}};var Un=`ngNavigationCancelingError`;function It(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=Z$3(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=On(!1,b$2.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function On(t,n){let e=new Error(`NavigationCancelingError: ${t||``}`);return e[Un]=!0,e.cancellationCode=n,e}function _i(t){return Pn(t)&&Z$3(t.url)}function Pn(t){return!!t&&t[Un]}var or=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,o){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=o}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),Qt(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=he(e);n.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,i[s],r),delete i[s]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,r)})}deactivateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(i===o)if(i.component){let s=r.getContext(i.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,r);else o&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=he(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);if(r&&r.outlet){let s=r.outlet.detach(),c=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:c})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=he(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null),n.value._localInjector?.destroy()}activateChildRoutes(n,e,r){let i=he(e);n.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],r),this.forwardEvent(new Ct$1(o.value.snapshot))}),n.children.length&&this.forwardEvent(new Rt(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(Qt(i),i===o)if(i.component){let s=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let s=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let c=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),s.children.onOutletReAttached(c.contexts),s.attachRef=c.componentRef,s.route=c.route.value,s.outlet&&s.outlet.attach(c.componentRef,c.route.value),Qt(c.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=i,s.outlet&&s.outlet.activateWith(i,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,r)}};var Et=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}};var ge=class{component;route;constructor(n,e){this.component=n,this.route=e}};function Ui(t,n,e){let r=t._root;return Ue(r,n?n._root:null,e,[r.value])}function Oi(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function Ee$1(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t==`function`&&!$E(t)?t:n.get(t):r}function Ue(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=he(n);return t.children.forEach(s=>{Pi(s,o[s.value.outlet],e,r.concat([s.value]),i),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,c])=>Pe$1(c,e.getContext(s),e,i)),i}function Pi(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=n?n.value:null,c=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let a=Li(s,o,o.routeConfig.runGuardsAndResolvers);a?i.canActivateChecks.push(new Et(r)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?Ue(t,n,c?c.children:null,r,i):Ue(t,n,e,r,i),a&&c&&c.outlet&&c.outlet.isActivated&&i.canDeactivateChecks.push(new ge(c.outlet.component,s))}else s&&Pe$1(n,c,e,i),i.canActivateChecks.push(new Et(r)),o.component?Ue(t,null,c?c.children:null,r,i):Ue(t,null,e,r,i);return i}function Li(t,n,e){if(typeof e==`function`)return cr$1(n._environmentInjector,()=>e(t,n));switch(e){case`pathParamsChange`:return!ie$2(t.url,n.url);case`pathParamsOrQueryParamsChange`:return!ie$2(t.url,n.url)||!F$3(t.queryParams,n.queryParams);case`always`:return!0;case`paramsOrQueryParamsChange`:return!nr(t,n)||!F$3(t.queryParams,n.queryParams);default:return!nr(t,n)}}function Pe$1(t,n,e,r){let i=he(t),o=t.value;Object.entries(i).forEach(([s,c])=>{o.component?n?Pe$1(c,n.children.getContext(s),n.children,r):Pe$1(c,null,null,r):Pe$1(c,e?e.getContext(s):null,e,r)}),o.component?n&&n.outlet&&n.outlet.isActivated?r.canDeactivateChecks.push(new ge(n.outlet.component,o)):r.canDeactivateChecks.push(new ge(null,o)):r.canDeactivateChecks.push(new ge(null,o))}function Be(t){return typeof t==`function`}function ji(t){return typeof t==`boolean`}function xi(t){return t&&Be(t.canLoad)}function ki(t){return t&&Be(t.canActivate)}function $i(t){return t&&Be(t.canActivateChild)}function zi(t){return t&&Be(t.canDeactivate)}function qi(t){return t&&Be(t.canMatch)}function Ln(t){return t instanceof rn||t?.name===`EmptyError`}var ot$1=Symbol(`INITIAL_VALUE`);function be(){return Qa(t=>IE(t.map(n=>n.pipe(Za(1),OE(ot$1)))).pipe(ae$3(n=>{for(let e of n)if(e!==!0){if(e===ot$1)return ot$1;if(e===!1||Fi(e))return e}return!0}),jt(n=>n!==ot$1),Za(1)))}function Fi(t){return Z$3(t)||t instanceof we$1}function jn(t){return t.aborted?$r(void 0).pipe(Za(1)):new x$3(n=>{let e=()=>{n.next(),n.complete()};return t.addEventListener(`abort`,e),()=>t.removeEventListener(`abort`,e)})}function xn(t){return kE(jn(t))}function Hi(t){return ln$1(n=>{let{targetSnapshot:e,currentSnapshot:r,guards:{canActivateChecks:i,canDeactivateChecks:o}}=n;return o.length===0&&i.length===0?$r(m$4(l$1({},n),{guardsResult:!0})):Bi(o,e,r).pipe(ln$1(s=>s&&ji(s)?Vi(e,i,t):$r(s)),ae$3(s=>m$4(l$1({},n),{guardsResult:s})))})}function Bi(t,n,e){return nt$1(t).pipe(ln$1(r=>Yi(r.component,r.route,e,n)),AE(r=>r!==!0,!0))}function Vi(t,n,e){return nt$1(n).pipe(Ya(r=>_i$1(Wi(r.route.parent,e),Gi(r.route,e),Ki(t,r.path),Qi(t,r.route))),AE(r=>r!==!0,!0))}function Gi(t,n){return t!==null&&n&&n(new St$1(t)),$r(!0)}function Wi(t,n){return t!==null&&n&&n(new yt$1(t)),$r(!0)}function Qi(t,n){let e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||e.length===0)return $r(!0);return $r(e.map(i=>CE(()=>{let o=n._environmentInjector,s=Ee$1(i,o);return ae$2(ki(s)?s.canActivate(n,t):cr$1(o,()=>s(n,t))).pipe(AE())}))).pipe(be())}function Ki(t,n){let e=n[n.length-1];return $r(n.slice(0,n.length-1).reverse().map(o=>Oi(o)).filter(o=>o!==null).map(o=>CE(()=>{return $r(o.guards.map(c=>{let a=o.node._environmentInjector,u=Ee$1(c,a);return ae$2($i(u)?u.canActivateChild(e,t):cr$1(a,()=>u(e,t))).pipe(AE())})).pipe(be())}))).pipe(be())}function Yi(t,n,e,r){let i=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!i||i.length===0)return $r(!0);return $r(i.map(s=>{let c=n._environmentInjector,a=Ee$1(s,c);return ae$2(zi(a)?a.canDeactivate(t,n,e,r):cr$1(c,()=>a(t,n,e,r))).pipe(AE())})).pipe(be())}function Zi(t,n,e,r,i){let o=n.canLoad;if(o===void 0||o.length===0)return $r(!0);return $r(o.map(c=>{let a=Ee$1(c,t),l=ae$2(xi(a)?a.canLoad(n,e):cr$1(t,()=>a(n,e)));return i?l.pipe(xn(i)):l})).pipe(be(),kn(r))}function kn(t){return nE(Of(n=>{if(typeof n!=`boolean`)throw It(t,n)}),ae$3(n=>n===!0))}function Ji(t,n,e,r,i,o){let s=n.canMatch;if(!s||s.length===0)return $r(!0);return $r(s.map(a=>{let u=Ee$1(a,t);return ae$2(qi(u)?u.canMatch(n,e,i):cr$1(t,()=>u(n,e,i))).pipe(xn(o))})).pipe(be(),kn(r))}var V$2=class t extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,t.prototype)}};var qe$1=class t extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,t.prototype)}};function Xi(t){throw new y$2(4e3,!1)}function eo(t){throw On(!1,b$2.GuardRejected)}var sr=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}async lineralizeSegments(n,e){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[`primary`])throw Xi(`${n.redirectTo}`);i=i.children[p$4]}}async applyRedirectCommands(n,e,r,i,o){let s=await to(e,i,o);if(s instanceof E$3)throw new qe$1(s);let c=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),n,r);if(s[0]===`/`)throw new qe$1(c);return c}applyRedirectCreateUrlTree(n,e,r,i){return new E$3(this.createSegmentGroup(n,e.root,r,i),this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,o])=>{if(typeof o==`string`&&o[0]===`:`){let c=o.substring(1);r[i]=e[c]}else r[i]=o}),r}createSegmentGroup(n,e,r,i){let o=this.createSegments(n,e.segments,r,i),s=Object.create(null);return Object.entries(e.children).forEach(([c,a])=>{s[c]=this.createSegmentGroup(n,a,r,i)}),new m$3(o,s)}createSegments(n,e,r,i){return e.map(o=>o.path[0]===`:`?this.findPosParam(n,o,i):this.findOrReturn(o,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new y$2(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function to(t,n,e){if(typeof t==`string`)return Promise.resolve(t);let r=t;return ut$1(ae$2(cr$1(e,()=>r(n))))}function ro(t,n){return t.providers&&!t._injector&&(t._injector=sd(t.providers,n,`Route: ${t.path}`)),t._injector??n}function z$3(t){return t.outlet||`primary`}function no(t,n){let e=t.filter(r=>z$3(r)===n);return e.push(...t.filter(r=>z$3(r)!==n)),e}var ar={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function $n(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function io(t,n,e,r,i,o,s){let c=zn(t,n,e);if(!c.matched)return $r(c);let a=$n(o(c));return r=ro(n,r),Ji(r,n,e,i,a,s).pipe(ae$3(u=>u===!0?c:l$1({},ar)))}function zn(t,n,e){if(n.path===``)return n.pathMatch===`full`&&(t.hasChildren()||e.length>0)?l$1({},ar):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||ln)(e,t,n);if(!i)return l$1({},ar);let o={};Object.entries(i.posParams??{}).forEach(([c,a])=>{o[c]=a.path});let s=i.consumed.length>0?l$1(l$1({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:s,positionalParamSegments:i.posParams??{}}}function cn(t,n,e,r,i){return e.length>0&&ao(t,e,r,i)?{segmentGroup:new m$3(n,so(r,new m$3(e,t.children))),slicedSegments:[]}:e.length===0&&co(t,e,r)?{segmentGroup:new m$3(t.segments,oo(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new m$3(t.segments,t.children),slicedSegments:e}}function oo(t,n,e,r){let i={};for(let o of e)if(Mt$1(t,n,o)&&!r[z$3(o)]){let s=new m$3([],{});i[z$3(o)]=s}return l$1(l$1({},r),i)}function so(t,n){let e={};e[p$4]=n;for(let r of t)if(r.path===``&&z$3(r)!==`primary`){let i=new m$3([],{});e[z$3(r)]=i}return e}function ao(t,n,e,r){return e.some(i=>!Mt$1(t,n,i)||!(z$3(i)!==`primary`)?!1:!(r!==void 0&&z$3(i)===r))}function co(t,n,e){return e.some(r=>Mt$1(t,n,r))}function Mt$1(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch===`full`?!1:e.path===``}function uo(t,n,e){return n.length===0&&!t.children[e]}var cr=class{};async function lo(t,n,e,r,i,o,s,c){return new ur(t,n,e,r,i,s,o,c).recognize()}var ho=31;var ur=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,o,s,c,a){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=c,this.abortSignal=a,this.applyRedirects=new sr(this.urlSerializer,this.urlTree)}noMatchError(n){return new y$2(4002,`'${n.segmentGroup}'`)}async recognize(){let n=cn(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:r}=await this.match(n),o=new $e(``,new _$2(r,e)),s=Cn(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),{state:o,tree:s}}async match(n){let e=new Ce$1([],Object.freeze({}),Object.freeze(l$1({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),p$4,this.rootComponentType,null,{},this.injector);try{return{children:await this.processSegmentGroup(this.injector,this.config,n,p$4,e),rootSnapshot:e}}catch(r){if(r instanceof qe$1)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof V$2?this.noMatchError(r):r}}async processSegmentGroup(n,e,r,i,o){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,e,r,o);let s=await this.processSegment(n,e,r,r.segments,i,!0,o);return s instanceof _$2?[s]:[]}async processChildren(n,e,r,i){let o=[];for(let a of Object.keys(r.children))a===`primary`?o.unshift(a):o.push(a);let s=[];for(let a of o){let u=r.children[a],l=no(e,a),v=await this.processSegmentGroup(n,l,u,a,i);s.push(...v)}let c=qn(s);return fo(c),c}async processSegment(n,e,r,i,o,s,c){for(let a of e)try{return await this.processSegmentAgainstRoute(a._injector??n,e,a,r,i,o,s,c)}catch(u){if(u instanceof V$2||Ln(u))continue;throw u}if(uo(r,i,o))return new cr;throw new V$2(r)}async processSegmentAgainstRoute(n,e,r,i,o,s,c,a){if(z$3(r)!==s&&(s===`primary`||!Mt$1(i,o,r)))throw new V$2(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,o,s,a);if(this.allowRedirects&&c)return this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,o,s,a);throw new V$2(i)}async expandSegmentAgainstRouteUsingRedirect(n,e,r,i,o,s,c){let{matched:a,parameters:u,consumedSegments:l,positionalParamSegments:v,remainingSegments:f}=zn(e,i,o);if(!a)throw new V$2(e);typeof i.redirectTo==`string`&&i.redirectTo[0]===`/`&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>ho&&(this.allowRedirects=!1));let R=this.createSnapshot(n,i,o,u,c);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let k=await this.applyRedirects.applyRedirectCommands(l,i.redirectTo,v,$n(R),n),X=await this.applyRedirects.lineralizeSegments(i,k);return this.processSegment(n,r,e,X.concat(f),s,!1,c)}createSnapshot(n,e,r,i,o){let s=new Ce$1(r,i,Object.freeze(l$1({},this.urlTree.queryParams)),this.urlTree.fragment,go(e),z$3(e),e.component??e._loadedComponent??null,e,vo(e),n),c=fr(s,o,this.paramsInheritanceStrategy);return s.params=Object.freeze(c.params),s.data=Object.freeze(c.data),s}async matchSegmentAgainstRoute(n,e,r,i,o,s){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let c=ee=>this.createSnapshot(n,r,ee.consumedSegments,ee.parameters,s),a=await ut$1(io(e,r,i,n,this.urlSerializer,c,this.abortSignal));if(r.path===`**`&&(e.children={}),!a?.matched)throw new V$2(e);n=r._injector??n;let{routes:u}=await this.getChildConfig(n,r,i),l=r._loadedInjector??n,{parameters:v,consumedSegments:f,remainingSegments:R}=a,k=this.createSnapshot(n,r,f,v,s),{segmentGroup:X,slicedSegments:Me}=cn(e,f,R,u,o);if(Me.length===0&&X.hasChildren())return new _$2(k,await this.processChildren(l,u,X,k));if(u.length===0&&Me.length===0)return new _$2(k,[]);let _t=z$3(r)===o,Ge=await this.processSegment(l,u,X,Me,_t?p$4:o,!0,k);return new _$2(k,Ge instanceof _$2?[Ge]:[])}async getChildConfig(n,e,r){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(e._loadedRoutes!==void 0){let o=e._loadedNgModuleFactory;return o&&!e._loadedInjector&&(e._loadedInjector=o.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(await ut$1(Zi(n,e,r,this.urlSerializer,this.abortSignal))){let o=await this.configLoader.loadChildren(n,e);return e._loadedRoutes=o.routes,e._loadedInjector=o.injector,e._loadedNgModuleFactory=o.factory,o}throw eo(e)}return{routes:[],injector:n}}};function fo(t){t.sort((n,e)=>n.value.outlet===`primary`?-1:e.value.outlet===`primary`?1:n.value.outlet.localeCompare(e.value.outlet))}function po(t){let n=t.value.routeConfig;return n&&n.path===``}function qn(t){let n=[],e=new Set;for(let r of t){if(!po(r)){n.push(r);continue}let i=n.find(o=>r.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=qn(r.children);n.push(new _$2(r.value,i))}return n.filter(r=>!e.has(r))}function go(t){return t.data||{}}function vo(t){return t.resolve||{}}function mo(t,n,e,r,i,o,s){return ln$1(async c=>{let{state:a,tree:u}=await lo(t,n,e,r,c.extractedUrl,i,o,s);return m$4(l$1({},c),{targetSnapshot:a,urlAfterRedirects:u})})}function yo(t){return ln$1(n=>{let{targetSnapshot:e,guards:{canActivateChecks:r}}=n;if(!r.length)return $r(n);let i=new Set(r.map(c=>c.route)),o=new Set;for(let c of i)if(!o.has(c))for(let a of Fn(c))o.add(a);let s=0;return nt$1(o).pipe(Ya(c=>i.has(c)?Ro(c,e,t):(c.data=fr(c,c.parent,t).resolve,$r(void 0))),Of(()=>s++),xE(1),ln$1(c=>s===o.size?$r(n):cn$1))})}function Fn(t){return[t,...t.children.map(e=>Fn(e)).flat()]}function Ro(t,n,e){let r=t.routeConfig,i=t._resolve;return r?.title!==void 0&&!Nn(r)&&(i[Fe]=r.title),CE(()=>(t.data=fr(t,t.parent,e).resolve,So(i,t,n).pipe(ae$3(o=>(t._resolvedData=o,t.data=l$1(l$1({},t.data),o),null)))))}function So(t,n,e){let r=Yt(t);if(r.length===0)return $r({});let i={};return nt$1(r).pipe(ln$1(o=>Co(t[o],n,e).pipe(AE(),Of(s=>{if(s instanceof we$1)throw It(new Y$3,s);i[o]=s}))),xE(1),ae$3(()=>i),qa(o=>Ln(o)?cn$1:fE(o)))}function Co(t,n,e){let r=n._environmentInjector,i=Ee$1(t,r);return ae$2(i.resolve?i.resolve(n,e):cr$1(r,()=>i(n,e)))}var yr=new E$4(``);function lr(t){return Qa(n=>{let e=t(n);return e?nt$1(e).pipe(ae$3(()=>n)):$r(n)})}var Rr=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(o=>o.outlet===p$4);return r}getResolvedTitleForRoute(e){return e.data[Fe]}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(Hn)})}return t})();var Hn=(()=>{class t extends Rr{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static ɵfac=function(r){return new(r||t)(S$4(r8))};static ɵprov=A$2({token:t,factory:t.ɵfac,providedIn:`root`})}return t})();var Ae$1=new E$4(``,{factory:()=>({})});var Ve=new E$4(``);var Bn=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=g$2($_);async loadComponent(e,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let s=await Gn(_H(await hn(cr$1(e,()=>r.loadComponent()))));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s,s}finally{this.componentLoaders.delete(r)}})();return this.componentLoaders.set(r,i),i}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let o=await Vn(r,this.compiler,e,this.onLoadEndListener);return r._loadedRoutes=o.routes,r._loadedInjector=o.injector,r._loadedNgModuleFactory=o.factory,o}finally{this.childrenLoaders.delete(r)}})();return this.childrenLoaders.set(r,i),i}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();async function Vn(t,n,e,r){let o=await Gn(_H(await hn(cr$1(e,()=>t.loadChildren())))),s;o instanceof py||Array.isArray(o)?s=o:s=await n.compileModuleAsync(o),r&&r(t);let c,a,l;return Array.isArray(s)?a=s:(c=s.create(e).injector,l=s,a=c.get(Ve,[],{optional:!0,self:!0}).flat()),{routes:a.map(mr),injector:c,factory:l}}async function Gn(t){return t}var Tt=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(wo)})}return t})();var wo=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();var Wn=new E$4(``);var bo=()=>{};var Sr=new E$4(``);var Cr=(()=>{class t{currentNavigation=Ke(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=Ke(null);events=new we$2;transitionAbortWithErrorSubject=new we$2;configLoader=g$2(Bn);environmentInjector=g$2(fe$1);destroyRef=g$2(pe$3);urlSerializer=g$2(ce$2);rootContexts=g$2(Ie$1);location=g$2(fD);inputBindingEnabled=g$2(He,{optional:!0})!==null;titleStrategy=g$2(Rr);options=g$2(Ae$1,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||Mi;urlHandlingStrategy=g$2(Tt);createViewTransition=g$2(Wn,{optional:!0});navigationErrorHandler=g$2(Sr,{optional:!0});routerResourcesFeature=g$2(yr,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>$r(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new vt$1(i)),r=i=>this.events.next(new mt$1(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;ie$3(()=>{this.transitions?.next(m$4(l$1({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(e){return this.transitions=new Vr(null),this.transitions.pipe(jt(r=>r!==null),Qa(r=>{let i=!0,o=!1,s=new AbortController,c=()=>!o&&this.currentTransition?.id===r.id;return $r(r).pipe(Qa(a=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,``,b$2.SupersededByNewNavigation),cn$1;this.currentTransition=r;let u=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:typeof a.extras.browserUrl==`string`?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:u?m$4(l$1({},u),{previousNavigation:null}):null,abort:()=>s.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});let l=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),v=a.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!l&&v!==`reload`)return this.events.next(new H$2(a.id,this.urlSerializer.serialize(a.rawUrl),``,me$1.IgnoredSameUrlNavigation)),a.resolve(!1),cn$1;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return $r(a).pipe(Qa(f=>(this.events.next(new J$3(f.id,this.urlSerializer.serialize(f.extractedUrl),f.source,f.restoredState)),f.id!==this.navigationId?cn$1:Promise.resolve(f))),mo(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,s.signal),Of(f=>{r.targetSnapshot=f.targetSnapshot,r.urlAfterRedirects=f.urlAfterRedirects,this.currentNavigation.update(R=>(R.finalUrl=f.urlAfterRedirects,R)),this.events.next(new xe$1)}),Qa(f=>nt$1(r.routesRecognizeHandler.deferredHandle??$r(void 0)).pipe(ae$3(()=>f))),Of(()=>{let f=new je(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(f)}));if(l&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){let{id:f,extractedUrl:R,source:k,restoredState:X,extras:Me}=a,_t=new J$3(f,this.urlSerializer.serialize(R),k,X);this.events.next(_t);let Ge=Mn(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=r=m$4(l$1({},a),{targetSnapshot:Ge,urlAfterRedirects:R,extras:m$4(l$1({},Me),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(ee=>(ee.finalUrl=R,ee)),$r(r)}else return this.events.next(new H$2(a.id,this.urlSerializer.serialize(a.extractedUrl),``,me$1.IgnoredByUrlHandlingStrategy)),a.resolve(!1),cn$1}),ae$3(a=>{let u=new ht$1(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(u),this.currentTransition=r=m$4(l$1({},a),{guards:Ui(a.targetSnapshot,a.currentSnapshot,this.rootContexts)}),r}),Hi(a=>this.events.next(a)),Qa(a=>{if(r.guardsResult=a.guardsResult,a.guardsResult&&typeof a.guardsResult!=`boolean`)throw It(this.urlSerializer,a.guardsResult);let u=new ft$1(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(u),!c())return cn$1;if(!a.guardsResult)return this.cancelNavigationTransition(a,``,b$2.GuardRejected),cn$1;if(a.guards.canActivateChecks.length===0)return $r(a);let l=new pt(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(l),!c())return cn$1;let v=!1;return $r(a).pipe(yo(this.paramsInheritanceStrategy),Of({next:()=>{v=!0;let f=new gt$1(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(f)},complete:()=>{v||this.cancelNavigationTransition(a,``,b$2.NoDataFromResolver)}}))}),lr(a=>{let u=v=>{let f=[];if(v.routeConfig?._loadedComponent)v.component=v.routeConfig?._loadedComponent;else if(v.routeConfig?.loadComponent){let R=v._environmentInjector;f.push(this.configLoader.loadComponent(R,v.routeConfig).then(k=>{v.component=k}))}for(let R of v.children)f.push(...u(R));return f},l=u(a.targetSnapshot.root);return l.length===0?$r(a):nt$1(Promise.all(l).then(()=>a))}),Qa(a=>{let{newlyCreatedRoutes:u,state:l}=Ti(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);return this.currentTransition=r=a=m$4(l$1({},a),{targetRouterState:l,newlyCreatedRoutes:u}),this.currentNavigation.update(v=>(v.targetRouterState=l,v)),$r(a)}),this.routerResourcesFeature?.setupAndRunResources(s.signal)??(a=>a),lr(()=>this.afterPreactivation()),Qa(()=>{let{currentSnapshot:a,targetSnapshot:u}=r,l=this.createViewTransition?.(this.environmentInjector,a.root,u.root,r.hasUAVisualTransition);return l?nt$1(l).pipe(ae$3(()=>r)):$r(r)}),Za(1),Qa(a=>{i=!1,this.events.next(new Re$1);let u=r.beforeActivateHandler.deferredHandle;return u?nt$1(u.then(()=>a)):$r(a)}),Of(a=>{new or(e.routeReuseStrategy,r.targetRouterState,r.currentRouterState,u=>this.events.next(u),this.inputBindingEnabled).activate(this.rootContexts),a.newlyCreatedRoutes?.clear(),c()&&(Qn(a.targetRouterState),o=!0,this.currentNavigation.update(u=>(u.abort=bo,u)),this.lastSuccessfulNavigation.set(ie$3(this.currentNavigation)),this.events.next(new x$2(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),kE(jn(s.signal).pipe(jt(()=>!o&&i),Of(()=>{this.cancelNavigationTransition(r,s.signal.reason+``,b$2.Aborted)}))),Of({complete:()=>{o=!0}}),kE(this.transitionAbortWithErrorSubject.pipe(Of(a=>{throw a}))),Ka(()=>{s.abort(),o||this.cancelNavigationTransition(r,``,b$2.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),qa(a=>{if(o=!0,un(r),this.destroyed)return r.resolve(!1),cn$1;if(Pn(a))this.events.next(new j$3(r.id,this.urlSerializer.serialize(r.extractedUrl),a.message,a.cancellationCode)),_i(a)?this.events.next(new Se$1(a.url,a.navigationBehaviorOptions)):r.resolve(!1);else{let u=new se$1(r.id,this.urlSerializer.serialize(r.extractedUrl),a,r.targetSnapshot??void 0);try{let l=cr$1(this.environmentInjector,()=>this.navigationErrorHandler?.(u));if(l instanceof we$1){let{message:v,cancellationCode:f}=It(this.urlSerializer,l);this.events.next(new j$3(r.id,this.urlSerializer.serialize(r.extractedUrl),v,f)),this.events.next(new Se$1(l.redirectTo,l.navigationBehaviorOptions))}else throw this.events.next(u),a}catch(l){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(l)}}return cn$1}))}))}cancelNavigationTransition(e,r,i){un(e);let o=new j$3(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(o),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=ie$3(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();function Io(t){return t!==pe$2}function un(t){for(let n of t.newlyCreatedRoutes??[])n._localInjector?.destroy(),n._localInjector=void 0;Qn(t.targetRouterState)}function Qn(t){if(!t)return;let n=e=>{e.value.pending?.set(!1),e.children.forEach(n)};n(t._root)}var Kn=new E$4(``);var Yn=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(Eo)})}return t})();var At=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}};var Eo=(()=>{class t extends At{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();var Nt$1=(()=>{class t{urlSerializer=g$2(ce$2);options=g$2(Ae$1,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||`replace`;location=g$2(fD);urlHandlingStrategy=g$2(Tt);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;currentUrlTree=new E$3;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let o=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,s=i??o;return s instanceof E$3?this.urlSerializer.serialize(s):s}routerUrlState(e){return e?.targetBrowserUrl===void 0||e?.finalUrl===void 0?{}:{ɵrouterUrl:this.urlSerializer.serialize(e.finalUrl)}}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=Mn(null,g$2(fe$1));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(Ao)})}return t})();var Ao=(()=>{class t extends Nt$1{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!==`computed`?this.currentPageId:this.restoredState()?.ɵrouterPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type===`popstate`&&setTimeout(()=>{e(r.url,r.state,`popstate`,{replaceUrl:!0},r.hasUAVisualTransition)})})}handleRouterEvent(e,r){e instanceof J$3?this.updateStateMemento():e instanceof H$2?this.commitTransition(r):e instanceof je?this.urlUpdateStrategy===`eager`&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof Re$1?(this.commitTransition(r),this.urlUpdateStrategy===`deferred`&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof j$3&&!An(e)?this.restoreHistory(r):e instanceof se$1?this.restoreHistory(r,!0):e instanceof x$2&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,r){let{extras:i,id:o}=r,{replaceUrl:s,state:c}=i;if(this.location.isCurrentPathEqualTo(e)||s){let a=this.browserPageId,u=l$1(l$1({},c),this.generateNgRouterState(o,a,r));this.location.replaceState(e,``,u)}else{let a=l$1(l$1({},c),this.generateNgRouterState(o,this.browserPageId+1,r));this.location.go(e,``,a)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution===`computed`){let i=this.browserPageId,o=this.currentPageId-i;o!==0?this.location.historyGo(o):this.getCurrentUrlTree()===e.finalUrl&&o===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution===`replace`&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),``,this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r,i){return this.canceledNavigationResolution===`computed`?l$1({navigationId:e,ɵrouterPageId:r},this.routerUrlState(i)):l$1({navigationId:e},this.routerUrlState(i))}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();function wr(t,n){t.events.pipe(jt(e=>e instanceof x$2||e instanceof j$3||e instanceof se$1||e instanceof H$2),ae$3(e=>e instanceof x$2||e instanceof H$2?0:(e instanceof j$3?e.code===b$2.Redirect||e.code===b$2.SupersededByNewNavigation:!1)?2:1),jt(e=>e!==2),Za(1)).subscribe(()=>{n()})}var ue=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=g$2(Ny);stateManager=g$2(Nt$1);options=g$2(Ae$1,{optional:!0})||{};pendingTasks=g$2(Yt$1);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;navigationTransitions=g$2(Cr);urlSerializer=g$2(ce$2);location=g$2(fD);urlHandlingStrategy=g$2(Tt);injector=g$2(fe$1);_events=new we$2;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=g$2(Yn);injectorCleanup=g$2(Kn,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||`ignore`;config=g$2(Ve,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!g$2(He,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new se$2;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,o=ie$3(this.navigationTransitions.currentNavigation);if(i!==null&&o!==null){if(this.stateManager.handleRouterEvent(r,o),r instanceof j$3&&r.code!==b$2.Redirect&&r.code!==b$2.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof x$2)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(r instanceof Se$1){let s=r.navigationBehaviorOptions,c=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),a=l$1({scroll:i.extras.scroll,browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy===`eager`||Io(i.source)},s);this.scheduleNavigation(c,pe$2,null,a,i.hasUAVisualTransition,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}Ei(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),pe$2,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i,o,s)=>{this.navigateToSyncWithBrowser(e,i,r,o,s)})}navigateToSyncWithBrowser(e,r,i,o,s){let c=i?.navigationId?i:null,a=i?.ɵrouterUrl??e;if(i?.ɵrouterUrl&&(o=m$4(l$1({},o),{browserUrl:e})),i){let l=l$1({},i);delete l.navigationId,delete l.ɵrouterPageId,delete l.ɵrouterUrl,Object.keys(l).length!==0&&(o.state=l)}let u=this.parseUrl(a);this.scheduleNavigation(u,r,c,o,s).catch(l=>{this.disposed||this.injector.get(Nt$2)(l)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return ie$3(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(mr),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:o,fragment:s,queryParamsHandling:c,preserveFragment:a}=r,u=a?this.currentUrlTree.fragment:s,l=null;switch(c??this.options.defaultQueryParamsHandling){case`merge`:l=l$1(l$1({},this.currentUrlTree.queryParams),o);break;case`preserve`:l=this.currentUrlTree.queryParams;break;default:l=o||null}l!==null&&(l=this.removeEmptyProps(l));let v;try{v=wn(i?i.snapshot:this.routerState.snapshot.root)}catch{(typeof e[0]!=`string`||e[0][0]!==`/`)&&(e=[]),v=this.currentUrlTree.root}return bn(v,e,l,u??null,this.urlSerializer)}navigateByUrl(e,r={skipLocationChange:!1}){let i=Z$3(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(o,pe$2,null,r)}navigate(e,r={skipLocationChange:!1}){return Mo(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.console.warn(We$1(4018,!1)),this.urlSerializer.parse(`/`)}}isActive(e,r){let i;if(r===!0?i=l$1({},dr):r===!1?i=l$1({},ve):i=l$1(l$1({},ve),r),Z$3(e))return Zt(this.currentUrlTree,e,i);let o=this.parseUrl(e);return Zt(this.currentUrlTree,o,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,o])=>(o!=null&&(r[i]=o),r),{})}scheduleNavigation(e,r,i,o,s,c){if(this.disposed)return Promise.resolve(!1);let a,u,l;c?(a=c.resolve,u=c.reject,l=c.promise):l=new Promise((f,R)=>{a=f,u=R});let v=this.pendingTasks.add();return wr(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(v))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,hasUAVisualTransition:s,resolve:a,reject:u,promise:l,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),l.catch(Promise.reject.bind(Promise))}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();function Mo(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new y$2(4008,!1)}var To=(()=>{class t{router=g$2(ue);stateManager=g$2(Nt$1);fragment=Ke(``);queryParams=Ke({});path=Ke(``);serializer=g$2(ce$2);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof x$2&&this.updateState()})}updateState(){let{fragment:e,root:r,queryParams:i}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(i),this.path.set(this.serializer.serialize(new E$3(r)))}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();var Dt=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=g$2(new $v(`href`),{optional:!0});reactiveHref=fa(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return ie$3(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return ie$3(this._target)}_target=Ke(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return ie$3(this._queryParams)}_queryParams=Ke(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return ie$3(this._fragment)}_fragment=Ke(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return ie$3(this._queryParamsHandling)}_queryParamsHandling=Ke(void 0);set state(e){this._state.set(e)}get state(){return ie$3(this._state)}_state=Ke(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return ie$3(this._info)}_info=Ke(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return ie$3(this._relativeTo)}_relativeTo=Ke(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return ie$3(this._preserveFragment)}_preserveFragment=Ke(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return ie$3(this._skipLocationChange)}_skipLocationChange=Ke(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return ie$3(this._replaceUrl)}_replaceUrl=Ke(!1);browserUrl=NH(void 0);isAnchorElement;onChanges=new we$2;applicationErrorHandler=g$2(Nt$2);options=g$2(Ae$1,{optional:!0});reactiveRouterState=g$2(To);constructor(e,r,i,o,s,c){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=o,this.el=s,this.locationStrategy=c;let a=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=a===`a`||a===`area`||!!(typeof customElements==`object`&&customElements.get(a)?.observedAttributes?.includes?.(`href`))}setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue(`tabindex`,e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=Ke(null);set routerLink(e){e==null?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(Z$3(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl(`0`))}onClick(e,r,i,o,s){let c=this._urlTree();if(c===null||this.isAnchorElement&&(e!==0||r||i||o||s||typeof this.target==`string`&&this.target!=`_self`))return!0;let a=this.browserUrl(),u=l$1({skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info},a!==void 0&&{browserUrl:a});return this.router.navigateByUrl(c,u)?.catch(l=>{this.applicationErrorHandler(l)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,r){let i=this.renderer,o=this.el.nativeElement;r!==null?i.setAttribute(o,e,r):i.removeAttribute(o,e)}_urlTree=Ft(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();let e=i=>i===`preserve`||i===`merge`;(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();let r=this.routerLinkInput();return r===null||!this.router.createUrlTree?null:Z$3(r)?r:this.router.createUrlTree(r,{relativeTo:this._relativeTo()!==void 0?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()})},{equal:(e,r)=>this.computeHref(e)===this.computeHref(r)});get urlTree(){return ie$3(this._urlTree)}computeHref(e){return e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??``:null}static ɵfac=function(r){return new(r||t)(Gn$1(ue),Gn$1(G$2),il(`tabindex`),Gn$1(Ao$1),Gn$1(Hn$1),Gn$1(Ia))};static ɵdir=ad({type:t,selectors:[[``,`routerLink`,``]],hostVars:2,hostBindings:function(r,i){r&1&&Gy(`click`,function(s){return i.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&ky(`href`,i.reactiveHref(),Ww)(`target`,i._target())},inputs:{target:`target`,queryParams:`queryParams`,fragment:`fragment`,queryParamsHandling:`queryParamsHandling`,state:`state`,info:`info`,relativeTo:`relativeTo`,preserveFragment:[2,`preserveFragment`,`preserveFragment`,pN],skipLocationChange:[2,`skipLocationChange`,`skipLocationChange`,pN],replaceUrl:[2,`replaceUrl`,`replaceUrl`,pN],browserUrl:[1,`browserUrl`],routerLink:`routerLink`},features:[rl]})}return t})();var No=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new It$1;link=g$2(Dt,{optional:!0});constructor(e,r,i,o){this.router=e,this.element=r,this.renderer=i,this.cdr=o,this.routerEventsSubscription=e.events.subscribe(s=>{s instanceof x$2&&this.update()})}ngAfterContentInit(){$r(this.links.changes,$r(null)).pipe(Gr()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=nt$1(e).pipe(Gr()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){if(e==null){this.classes=[];return}let r=Array.isArray(e)?e:e.split(` `);this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||this.routerLinkActiveOptions===null&&!this._isActive||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,`aria-current`,this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,`aria-current`),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=this.routerLinkActiveOptions;if(r===null)return()=>!1;let i;return r===void 0?i=l$1({},ve):Do(r)?i=r:r.exact??!1?i=l$1({},dr):i=l$1({},ve),o=>{let s=o.urlTree;return s?ie$3(hr(s,e,i)):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static ɵfac=function(r){return new(r||t)(Gn$1(ue),Gn$1(Hn$1),Gn$1(Ao$1),Gn$1(oD))};static ɵdir=ad({type:t,selectors:[[``,`routerLinkActive`,``]],contentQueries:function(r,i,o){if(r&1&&qy(o,Dt,5),r&2){let s;XS(s=JS())&&(i.links=s)}},inputs:{routerLinkActiveOptions:`routerLinkActiveOptions`,ariaCurrentWhenActive:`ariaCurrentWhenActive`,routerLinkActive:`routerLinkActive`},outputs:{isActiveChange:`isActiveChange`},exportAs:[`routerLinkActive`],features:[rl]})}return t})();function Do(t){let n=t;return!!(n.paths||n.matrixParams||n.queryParams||n.fragment)}var Zn=new E$4(``);var _o=(()=>{class t{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=pe$2;restoredId=0;store={};isHydrating=g$2(Fo,{optional:!0})??!1;urlSerializer=g$2(ce$2);zone=g$2(ue$1);viewportScroller=g$2(RU);transitions=g$2(Cr);constructor(e){this.options=e,this.options.scrollPositionRestoration||=`disabled`,this.options.anchorScrolling||=`disabled`,this.isHydrating&&g$2(Ve$1).whenStable().then(()=>{this.isHydrating=!1})}init(){this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.setHistoryScrollRestoration(`manual`),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof J$3?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof x$2?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof H$2&&e.code===me$1.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof ye$1)||e.scrollBehavior===`manual`)return;let r={behavior:`instant`};e.position?this.options.scrollPositionRestoration===`top`?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration===`enabled`&&this.viewportScroller.scrollToPosition(e.position,r):e.anchor&&this.options.anchorScrolling===`enabled`?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,r){if(this.isHydrating)return;let i=ie$3(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(async()=>{await new Promise(o=>{setTimeout(o),typeof requestAnimationFrame<`u`&&requestAnimationFrame(o)}),this.zone.run(()=>{this.transitions.events.next(new ye$1(e,this.lastSource===`popstate`?this.store[this.restoredId]:null,r,i))})})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static ɵfac=function(r){tb()};static ɵprov=A$2({token:t,factory:t.ɵfac})}return t})();function Uo(t,...n){return at$2([{provide:Ve,multi:!0,useValue:t},{provide:G$2,useFactory:Oo},{provide:kt$1,multi:!0,useFactory:Lo},n.map(e=>e.ɵproviders)])}function Oo(){return g$2(ue).routerState.root}function br(t,n){return{ɵkind:t,ɵproviders:n}}function Po(t={}){return br(4,[{provide:Zn,useFactory:()=>new _o(t)}])}function Lo(){let t=g$2(ce$3);return n=>{let e=t.get(Ve$1);if(n!==e.components[0])return;let r=t.get(ue),i=t.get(jo);t.get(xo)===1&&r.initialNavigation(),t.get(ko,null,{optional:!0})?.setUpPreloading(),t.get(Zn,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var jo=new E$4(``,{factory:()=>new we$2});var xo=new E$4(``,{factory:()=>1});var ko=new E$4(``);function $o(t){return br(7,[{provide:Sr,useValue:t}])}function zo(t={}){return br(8,[{provide:He,useFactory:()=>new _n(t,g$2(yr,{optional:!0}))}])}var Ne=(t,i,n)=>{if(!Number.isSafeInteger(t))throw new RangeError(`money.invalid_minor_units`);let a=new Intl.NumberFormat(i,{style:`currency`,currency:n}),s=a.resolvedOptions().maximumFractionDigits;if(s===void 0)throw new RangeError(`money.currency_precision_missing`);let de=BigInt(Math.abs(t)),ue=10n**BigInt(s),pe=`${t<0?`-`:``}${de/ue}`,De=s===0?pe:`${pe}.${String(de%ue).padStart(s,`0`)}`;return a.format(De)};var y$1={fr:{"notice.dismiss":`Fermer le message`,"shell.contact":`Contact`,"shell.contactEmail":`contact@froment.software`,"shell.nowLive":`NOW LIVE!`,"shell.underConstruction":`UNDER CONSTRUCTION`,"shell.environment.development":`DEVELOPMENT`,"shell.environment.developmentName":`Environnement de développement`,"shell.environment.staging":`STAGING`,"shell.environment.stagingName":`Environnement de préproduction`,"shell.construction.kicker":`EN CONSTRUCTION`,"shell.construction.title":`Ouverture prochaine`,"shell.construction.description":`Froment Software prend forme. Le site complet sera bientôt disponible.`,"about.faq.label":`FAQ`,"backOffice.billing.summary":`Résumé`,"businessCard.defaultName":`Sacha Froment`,"businessCard.defaultRole":`Ingénieur logiciel`,"businessCard.title":`Carte de visite`,"businessCard.print":`Imprimer ou exporter en PDF`,"businessCard.preview":`Aperçu recto-verso de la carte de visite`,"businessCard.front":`Recto`,"businessCard.backSide":`Verso`,"businessCard.edit":`Personnaliser la carte`,"businessCard.editIntro":`Les modifications apparaissent directement dans l’aperçu.`,"businessCard.name":`Nom`,"businessCard.role":`Poste`,"businessCard.email":`Adresse e-mail`,"businessCard.website":`Site web`,"businessCard.brand":`Nom de marque au verso`,"businessCard.versionName":`Nom de la version`,"businessCard.save":`Enregistrer cette version`,"businessCard.contentInvalid":`Renseignez tous les champs avec une adresse e-mail valide.`,"businessCard.versionInvalid":`Renseignez le nom de la version.`,"businessCard.versions":`Versions locales`,"businessCard.versionsIntro":`Ces versions restent uniquement dans ce navigateur.`,"businessCard.delete":`Supprimer`,"businessCard.deleteLabel":`Supprimer {name}`,"businessCard.empty":`Aucune version enregistrée.`,"businessCard.nameRequired":`Le nom est requis.`,"businessCard.roleRequired":`Le poste est requis.`,"businessCard.emailRequired":`L’adresse e-mail est requise.`,"businessCard.emailInvalid":`L’adresse e-mail est invalide.`,"businessCard.websiteRequired":`Le site web est requis.`,"businessCard.brandRequired":`Le nom de marque est requis.`,"businessCard.versionRequired":`Le nom de la version est requis.`,"businessCard.saved":`Version « {name} » enregistrée dans ce navigateur.`,"businessCard.restored":`Version « {name} » restaurée.`,"businessCard.deleted":`Version « {name} » supprimée.`,"businessCard.storageError":`L’enregistrement local a échoué.`,"design.demo.variant":`Variante`,"design.demo.normal":`Normale`,"design.demo.hover":`Survol`,"design.demo.active":`Active`,"design.demo.readonly":`Lecture seule`,"design.demo.readonlyValue":`Readonly`,"design.demo.disabled":`Désactivée`,"design.demo.loading":`Chargement`,"design.demo.action":`Action`,"design.demo.iconButtons":`Boutons icône seule`,"design.demo.button":`Bouton`,"design.demo.link":`Lien`,"design.demo.icons":`Icônes`,"design.demo.render":`Rendu`,"design.demo.readonlyHint":`Cette valeur est immuable.`,"design.demo.invalid":`Invalide`,"design.demo.invalidEmail":`Saisissez une adresse électronique valide.`,"design.demo.disabledSelect":`Sélection désactivée`,"design.demo.unavailable":`Indisponible`,"design.demo.businessStatuses":`Statuts métier`,"design.demo.loadError":`Le chargement a échoué.`,"design.demo.retry":`Réessayer`,"design.demo.documentUnavailable":`Document indisponible`,"design.demo.copied":`Copié`,"design.demo.desktop":`Desktop`,"design.demo.lists":`Listes et définitions`,"design.demo.audit":`Audit logiciel`,"design.demo.tabs":`Exemple d’onglets`,"design.demo.panel":`Panneau`,"design.demo.documents":`DOCUMENTS`,"design.demo.revisions":`Révisions`,"design.demo.newRevision":`Nouvelle révision`,"design.demo.backQuotes":`← Retour aux devis`,"design.demo.editQuote":`Modifier le devis`,"design.demo.quotes":`Devis`,"design.demo.newQuote":`Nouveau devis`,"design.demo.backOfficeAccess":`Accès au back-office`,"design.demo.client":`Client Exemple`,"design.demo.save":`Enregistrer`,"design.demo.cancel":`Annuler`,"design.demo.delete":`Supprimer`,"design.demo.tabProposal":`Proposition détaillée`,"design.demo.tabDocument":`Document PDF téléchargeable`,"design.demo.tabAcceptance":`Acceptation et signature`,"design.demo.secureQuote":`DEVIS SÉCURISÉ`,"design.demo.auditTitle":`Audit et plan de rénovation`,"design.demo.parties":`Froment Software → Client Exemple`,"design.demo.reference":`Référence`,"design.demo.expiration":`Expiration`,"design.demo.orderConfirmed":`Commande confirmée`,"design.demo.orderConfirmedEyebrow":`COMMANDE CONFIRMÉE`,"design.demo.order":`Commande`,"design.demo.state":`État`,"design.demo.confirmed":`Confirmée`,"design.demo.line":`Ligne 1`,"design.demo.unitPrice":`Prix unitaire`,"design.demo.acceptance":`ACCEPTATION`,"design.demo.signQuote":`Signer le devis`,"design.demo.signIntro":`Confirmez votre identité et votre accord.`,"design.demo.fullName":`Nom complet`,"design.demo.exampleName":`Camille Exemple`,"design.demo.consent":`J’accepte ce devis.`,"design.demo.sign":`Signer et commander`,"design.demo.accepted":`Le devis est accepté`,"design.demo.acceptedDetail":`La signature et la commande sont enregistrées.`,"design.demo.version2":`Version 2`,"design.demo.version1":`Version 1`,"design.demo.date2":`21 août 2026`,"design.demo.date1":`20 août 2026`,"design.demo.documentLoading":`Chargement du document PDF…`,"design.demo.secureLink":`Lien sécurisé`,"design.demo.accessId":`Identifiant d’accès`,"blog.launch.title":`Froment Software arrive sur le marché`,"blog.launch.description":`Présentation de Froment Software, de ses missions et de sa méthode fondée sur des changements mesurables.`,"blog.launch.topic.development":`développement logiciel`,"blog.launch.topic.takeover":`reprise d’applications`,"blog.launch.topic.ci":`CI/CD`,"blog.launch.topic.nixos":`NixOS`,"blog.launch.topic.infrastructure":`infrastructure as code`,"blog.architecture.title":`De l’API au PDF : l’architecture de Froment Software`,"blog.architecture.description":`Une visite du monorepo, des contrats Effect, du modèle SQLite et de la chaîne documentaire vérifiable.`,"blog.security.title":`Sessions, jetons et audit : la sécurité de Froment Software`,"blog.security.description":`Le parcours complet d’une identité, de la connexion PASETO à la corrélation des événements d’audit.`,"blog.operations.title":`De Nix à Grafana : exploiter Froment Software en production`,"blog.operations.description":`La construction reproductible, la résolution des secrets et le trajet des journaux et traces en production.`,"blog.deployment.title":`Du commit à Nomad : une promotion vérifiable vers la production`,"blog.deployment.description":`Une chaîne de déploiement fondée sur Nix, les digests OCI, Tailscale, Nomad et des preuves de provenance.`,"blog.topic.effect":`Effect`,"blog.topic.sqlite":`SQLite`,"blog.topic.documents":`documents`,"blog.topic.security":`sécurité`,"blog.topic.authentication":`authentification`,"blog.topic.audit":`audit`,"blog.topic.nix":`Nix`,"blog.topic.secrets":`secrets`,"blog.topic.observability":`observabilité`,"blog.topic.nomad":`Nomad`,"blog.topic.supplyChain":`chaîne logicielle`,"blog.feed":`Flux Atom`,"metadata.author":`Sacha Froment`,"metadata.publisher":`Froment Software`},en:{"notice.dismiss":`Dismiss message`,"shell.contact":`Contact`,"shell.contactEmail":`contact@froment.software`,"shell.nowLive":`NOW LIVE!`,"shell.underConstruction":`UNDER CONSTRUCTION`,"shell.environment.development":`DEVELOPMENT`,"shell.environment.developmentName":`Development environment`,"shell.environment.staging":`STAGING`,"shell.environment.stagingName":`Staging environment`,"shell.construction.kicker":`UNDER CONSTRUCTION`,"shell.construction.title":`Opening soon`,"shell.construction.description":`Froment Software is taking shape. The complete site will be available soon.`,"about.faq.label":`FAQ`,"backOffice.billing.summary":`Summary`,"businessCard.defaultName":`Sacha Froment`,"businessCard.defaultRole":`Software engineer`,"businessCard.title":`Business card`,"businessCard.print":`Print or export as PDF`,"businessCard.preview":`Business card front and back preview`,"businessCard.front":`Front`,"businessCard.backSide":`Back`,"businessCard.edit":`Customize the card`,"businessCard.editIntro":`Changes appear directly in the preview.`,"businessCard.name":`Name`,"businessCard.role":`Role`,"businessCard.email":`Email address`,"businessCard.website":`Website`,"businessCard.brand":`Brand name on the back`,"businessCard.versionName":`Version name`,"businessCard.save":`Save this version`,"businessCard.contentInvalid":`Complete all fields with a valid email address.`,"businessCard.versionInvalid":`Enter the version name.`,"businessCard.versions":`Local versions`,"businessCard.versionsIntro":`These versions remain only in this browser.`,"businessCard.delete":`Delete`,"businessCard.deleteLabel":`Delete {name}`,"businessCard.empty":`No saved versions.`,"businessCard.nameRequired":`Name is required.`,"businessCard.roleRequired":`Role is required.`,"businessCard.emailRequired":`Email is required.`,"businessCard.emailInvalid":`Email is invalid.`,"businessCard.websiteRequired":`Website is required.`,"businessCard.brandRequired":`Brand name is required.`,"businessCard.versionRequired":`Version name is required.`,"businessCard.saved":`Version “{name}” saved in this browser.`,"businessCard.restored":`Version “{name}” restored.`,"businessCard.deleted":`Version “{name}” deleted.`,"businessCard.storageError":`Local storage failed.`,"design.demo.variant":`Variant`,"design.demo.normal":`Normal`,"design.demo.hover":`Hover`,"design.demo.active":`Active`,"design.demo.readonly":`Read only`,"design.demo.readonlyValue":`Readonly`,"design.demo.disabled":`Disabled`,"design.demo.loading":`Loading`,"design.demo.action":`Action`,"design.demo.iconButtons":`Icon-only buttons`,"design.demo.button":`Button`,"design.demo.link":`Link`,"design.demo.icons":`Icons`,"design.demo.render":`Rendering`,"design.demo.readonlyHint":`This value is immutable.`,"design.demo.invalid":`Invalid`,"design.demo.invalidEmail":`Enter a valid email address.`,"design.demo.disabledSelect":`Disabled selection`,"design.demo.unavailable":`Unavailable`,"design.demo.businessStatuses":`Business statuses`,"design.demo.loadError":`Loading failed.`,"design.demo.retry":`Retry`,"design.demo.documentUnavailable":`Document unavailable`,"design.demo.copied":`Copied`,"design.demo.desktop":`Desktop`,"design.demo.lists":`Lists and definitions`,"design.demo.audit":`Software audit`,"design.demo.tabs":`Tab example`,"design.demo.panel":`Panel`,"design.demo.documents":`DOCUMENTS`,"design.demo.revisions":`Revisions`,"design.demo.newRevision":`New revision`,"design.demo.backQuotes":`← Back to quotes`,"design.demo.editQuote":`Edit quote`,"design.demo.quotes":`Quotes`,"design.demo.newQuote":`New quote`,"design.demo.backOfficeAccess":`Back-office access`,"design.demo.client":`Example Client`,"design.demo.save":`Save`,"design.demo.cancel":`Cancel`,"design.demo.delete":`Delete`,"design.demo.tabProposal":`Detailed proposal`,"design.demo.tabDocument":`Downloadable PDF document`,"design.demo.tabAcceptance":`Acceptance and signature`,"design.demo.secureQuote":`SECURE QUOTE`,"design.demo.auditTitle":`Audit and renovation plan`,"design.demo.parties":`Froment Software → Example Client`,"design.demo.reference":`Reference`,"design.demo.expiration":`Expiration`,"design.demo.orderConfirmed":`Order confirmed`,"design.demo.orderConfirmedEyebrow":`ORDER CONFIRMED`,"design.demo.order":`Order`,"design.demo.state":`Status`,"design.demo.confirmed":`Confirmed`,"design.demo.line":`Line 1`,"design.demo.unitPrice":`Unit price`,"design.demo.acceptance":`ACCEPTANCE`,"design.demo.signQuote":`Sign the quote`,"design.demo.signIntro":`Confirm your identity and consent.`,"design.demo.fullName":`Full name`,"design.demo.exampleName":`Example Client`,"design.demo.consent":`I accept this quote.`,"design.demo.sign":`Sign and order`,"design.demo.accepted":`The quote is accepted`,"design.demo.acceptedDetail":`The signature and order are recorded.`,"design.demo.version2":`Version 2`,"design.demo.version1":`Version 1`,"design.demo.date2":`August 21, 2026`,"design.demo.date1":`August 20, 2026`,"design.demo.documentLoading":`Loading the PDF document…`,"design.demo.secureLink":`Secure link`,"design.demo.accessId":`Access identifier`,"blog.launch.title":`Froment Software enters the market`,"blog.launch.description":`Introducing Froment Software, its services and its method based on measurable changes.`,"blog.launch.topic.development":`software development`,"blog.launch.topic.takeover":`application takeover`,"blog.launch.topic.ci":`CI/CD`,"blog.launch.topic.nixos":`NixOS`,"blog.launch.topic.infrastructure":`infrastructure as code`,"blog.architecture.title":`From API to PDF: the Froment Software architecture`,"blog.architecture.description":`A tour of the monorepo, Effect contracts, SQLite model, and verifiable document pipeline.`,"blog.security.title":`Sessions, tokens, and audit: Froment Software security`,"blog.security.description":`The complete identity path, from PASETO login to correlated audit events.`,"blog.operations.title":`From Nix to Grafana: operating Froment Software in production`,"blog.operations.description":`Reproducible builds, secret resolution, and the path of production logs and traces.`,"blog.deployment.title":`From commit to Nomad: verifiable promotion to production`,"blog.deployment.description":`A deployment pipeline based on Nix, OCI digests, Tailscale, Nomad, and provenance records.`,"blog.topic.effect":`Effect`,"blog.topic.sqlite":`SQLite`,"blog.topic.documents":`documents`,"blog.topic.security":`security`,"blog.topic.authentication":`authentication`,"blog.topic.audit":`audit`,"blog.topic.nix":`Nix`,"blog.topic.secrets":`secrets`,"blog.topic.observability":`observability`,"blog.topic.nomad":`Nomad`,"blog.topic.supplyChain":`software supply chain`,"blog.feed":`Atom feed`,"metadata.author":`Sacha Froment`,"metadata.publisher":`Froment Software`}};var C$1={fr:{"connections.title":`Connexions aux services`,"connections.intro":`Raccordez les prestataires, vérifiez leurs accès et suivez les opérations sans modifier vos documents existants.`,"connections.safety":`Les opérations commerciales et les relances restent simulées. Seul le test Resend ci-dessous peut envoyer un vrai courriel.`,"connections.credentialsHint":`Une clé présente ne confirme pas sa validité. Les clés restent sur le serveur, dans le profil SOPS utilisé au démarrage.`,"connections.provider":`Prestataire`,"connections.usage":`Utilisation`,"connections.credentials":`Identifiants`,"connections.mode":`Mode actuel`,"connections.action":`Parcours`,"connections.present":`Présents sur le serveur`,"connections.missing":`À renseigner dans SOPS`,"connections.restricted":`Test à destinataire limité`,"connections.notConnected":`Pas encore raccordé`,"connections.resend":`Resend`,"connections.stripe":`Stripe`,"connections.signwell":`SignWell`,"connections.superpdp":`SUPER PDP`,"connections.email":`Courriels transactionnels`,"connections.payment":`Paiements par carte — mode test`,"connections.signature":`Signatures électroniques — mode test`,"connections.electronicInvoice":`Factures électroniques — bac à sable`,"connections.openResend":`Vérifier Resend`,"connections.pending":`Connecteur en préparation`,"connections.reload":`Actualiser les accès`,"connections.loading":`Chargement des connexions…`,"connections.error":`Impossible de charger la configuration des connexions. Réessayez le chargement.`,"connections.simulations":`Ouvrir les simulations et leur historique`,"connections.back":`Retour aux connexions`,"connections.breadcrumb":`Navigation des services`,"connections.bank":`La banque reste indépendante : les imports CSV et les rapprochements restent disponibles.`,"emailTest.title":`Resend — vérifier l’envoi`,"emailTest.intro":`Préparez un message de test, vérifiez son aperçu, puis suivez sa prise en charge et sa remise.`,"emailTest.safety":`Ce test envoie un vrai courriel, uniquement à sacha@sacha.house. Il n’active ni les envois clients ni les relances.`,"emailTest.routing":`1. Vérifier les adresses`,"emailTest.from":`Expéditeur`,"emailTest.replyTo":`Réponses vers`,"emailTest.recipient":`Destinataire autorisé`,"emailTest.routingHint":`Ces adresses sont imposées par le serveur. Aucun destinataire en copie ni aucune pièce jointe ne sont ajoutés.`,"emailTest.compose":`2. Préparer le message`,"emailTest.subject":`Objet`,"emailTest.subjectHint":`160 caractères maximum. Le serveur ajoute « [Test] » au début de l’objet.`,"emailTest.body":`Message`,"emailTest.bodyHint":`Texte brut, 20 000 caractères maximum. Les sauts de ligne sont conservés.`,"emailTest.subjectInvalid":`Saisissez un objet de 1 à 160 caractères, sans saut de ligne.`,"emailTest.bodyInvalid":`Saisissez un message de 1 à 20 000 caractères.`,"emailTest.preview":`Aperçu du courriel`,"emailTest.send":`Envoyer le test`,"emailTest.saving":`Enregistrer le test…`,"emailTest.confirm":`Envoyer ce vrai courriel de test à sacha@sacha.house ? Les autres envois resteront simulés.`,"emailTest.unsaved":`Quitter ce message de test sans enregistrer vos modifications ?`,"emailTest.defaultSubject":`Vérification de la connexion Resend`,"emailTest.defaultBody":`Bonjour Sacha,
|
|
1
|
+
import{n as m$4,t as l$1}from"./chunk-BwCtja5l.js";import{$n as nE,$t as ZC,A as Gy,Ar as uA,B as It$1,Br as xE,Bt as Ve$1,Cn as fE,Cr as s8,D as Fy,Dn as g$2,Dr as t_,E as Ft,En as fe$1,Et as Ra,F as IE,Fr as we$2,G as Ka,Gn as k_,Gt as Ww,H as JD,Hn as kE,Hr as xU,Ht as Vr,In as jH,Ir as wp,It as Us,Jn as lA,Jr as zS,Jt as Xy,K as Ke,Kn as kt$1,Kr as yo$1,Kt as XS,L as IN,Ln as jN,Lr as wy,Mn as i8,Nn as ie$3,Nr as vd,O as Gn$1,Or as tb,Ot as S$4,P as Hn$1,Pn as il,Qn as n8,R as Ia,Rr as x$3,Sn as fD,T as Fo,Tn as fd,Tr as se$2,Tt as RU,U as JS,Un as kH,Ur as y$2,V as Iy,Vn as jt,W as KS,Wn as kS,Wr as y_,Wt as We$1,Yn as ln$1,Yt as Ya,Z as Ly,Zt as Yt$1,_n as cn$1,a as $v,ar as oD,at as Ny,b as E$4,bn as dA,br as rl,cn as aa,cr as pE,d as Ar,dn as at$2,dr as pe$3,dt as Of,en as ZS,et as MS,f as At$1,fr as py,ft as Ol,g as Cr$1,gn as ce$3,gr as qa,h as CE,i as $r,in as Zy,ir as o8,it as Nt$2,j as H$3,jr as ue$1,k as Gr,kn as hd,l as A_,ln as ad,lr as pN,lt as OS,m as By,n as $E,nn as Za,nr as nt$1,nt as NH,o as A$2,on as _H,or as ou,ot as OD,p as Be$1,pr as qS,pt as Op,qn as ky,r as $_,rr as nv,rt as NS,s as AE,sn as _i$1,st as OE,u as Ao$1,un as ae$3,ur as pd,v as DI,vn as cr$1,vr as qy,vt as Py,w as Fb,wn as fa,wr as sd,xn as e_,xr as rn,xt as Qg,yr as r8,yt as Qa,z as Ip}from"./chunk-BAHiFuUo.js";var p$4=`primary`;var Fe=Symbol(`RouteTitle`);var Kt=class{params;constructor(n){this.params=n||{}}has(n){return Object.hasOwn(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function oe$2(t){return new Kt(t)}function Vt(t,n,e){for(let r=0;r<t.length;r++){let i=t[r],o=n[r];if(i[0]===`:`)e[i.substring(1)]=o;else if(i!==o.path)return!1}return!0}function ln(t,n,e){let r=e.path.split(`/`),i=r.indexOf(`**`);if(i===-1){if(r.length>t.length||e.pathMatch===`full`&&(n.hasChildren()||r.length<t.length))return null;let a={},u=t.slice(0,r.length);return Vt(r,u,a)?{consumed:u,posParams:a}:null}if(i!==r.lastIndexOf(`**`))return null;let o=r.slice(0,i),s=r.slice(i+1);if(o.length+s.length>t.length||e.pathMatch===`full`&&n.hasChildren()&&e.path!==`**`)return null;let c={};return!Vt(o,t.slice(0,o.length),c)||!Vt(s,t.slice(t.length-s.length),c)?null:{consumed:t,posParams:c}}function ut$1(t){return new Promise((n,e)=>{t.pipe(AE()).subscribe({next:r=>n(r),error:r=>e(r)})})}function ei(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!F$3(t[e],n[e]))return!1;return!0}function F$3(t,n){let e=t?Yt(t):void 0,r=n?Yt(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let o=0;o<e.length;o++)if(i=e[o],!dn(t[i],n[i]))return!1;return!0}function Yt(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function dn(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,o)=>r[o]===i)}else return t===n}function ti(t){return t.length>0?t[t.length-1]:null}function ae$2(t){return pE(t)?t:aa(t)?nt$1(Promise.resolve(t)):$r(t)}function hn(t){return pE(t)?ut$1(t):Promise.resolve(t)}var ri={exact:pn,subset:gn};var fn={exact:ni,subset:ii,ignored:()=>!0};var dr={paths:`exact`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`exact`};var ve={paths:`subset`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`subset`};function hr(t,n,e){let r=t instanceof E$3?t:n.parseUrl(t);return Ft(()=>Zt(n.lastSuccessfulNavigation()?.finalUrl??new E$3,r,l$1(l$1({},ve),e)))}function Zt(t,n,e){return ri[e.paths](t.root,n.root,e.matrixParams)&&fn[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment===`exact`&&t.fragment!==n.fragment)}function ni(t,n){return F$3(t,n)}function pn(t,n,e){if(!ie$2(t.segments,n.segments)||!st$1(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!pn(t.children[r],n.children[r],e))return!1;return!0}function ii(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>dn(t[e],n[e]))}function gn(t,n,e){return vn(t,n,n.segments,e)}function vn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!ie$2(i,e)||n.hasChildren()||!st$1(i,e,r))}else if(t.segments.length===e.length){if(!ie$2(t.segments,e)||!st$1(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!gn(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!ie$2(t.segments,i)||!st$1(t.segments,i,r)||!t.children[`primary`]?!1:vn(t.children[p$4],n,o,r)}}function st$1(t,n,e){return n.every((r,i)=>fn[e](t[i].parameters,r.parameters))}var E$3=class{root;queryParams;fragment;_queryParamMap;constructor(n=new m$3([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=oe$2(this.queryParams),this._queryParamMap}toString(){return ai.serialize(this)}};var m$3=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return at$1(this)}};var K$3=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=oe$2(this.parameters),this._parameterMap}toString(){return yn(this)}};function oi(t,n){return ie$2(t,n)&&t.every((e,r)=>F$3(e.parameters,n[r].parameters))}function ie$2(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function si(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===`primary`&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==`primary`&&(e=e.concat(n(i,r)))}),e}var ce$2=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>new Y$3})}return t})();var Y$3=class{parse(n){let e=new Xt(n);return new E$3(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){return`${`/${_e$1(n.root,!0)}`}${li(n.queryParams)}${typeof n.fragment==`string`?`#${ci(n.fragment)}`:``}`}};var ai=new Y$3;function at$1(t){return t.segments.map(n=>yn(n)).join(`/`)}function _e$1(t,n){if(!t.hasChildren())return at$1(t);if(n){let e=t.children[`primary`]?_e$1(t.children[p$4],!1):``,r=[];return Object.entries(t.children).forEach(([i,o])=>{i!==`primary`&&r.push(`${i}:${_e$1(o,!1)}`)}),r.length>0?`${e}(${r.join(`//`)})`:e}else{let e=si(t,(r,i)=>i===`primary`?[_e$1(t.children[p$4],!1)]:[`${i}:${_e$1(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[`primary`]!=null?`${at$1(t)}/${e[0]}`:`${at$1(t)}/(${e.join(`//`)})`}}function mn(t){return encodeURIComponent(t).replace(/%40/g,`@`).replace(/%3A/gi,`:`).replace(/%24/g,`$`).replace(/%2C/gi,`,`)}function it$1(t){return mn(t).replace(/%3B/gi,`;`)}function ci(t){return encodeURI(t)}function Jt(t){return mn(t).replace(/\(/g,`%28`).replace(/\)/g,`%29`).replace(/%26/gi,`&`)}function ct$1(t){return decodeURIComponent(t)}function nn(t){return ct$1(t.replace(/\+/g,`%20`))}function yn(t){return`${Jt(t.path)}${ui(t.parameters)}`}function ui(t){return Object.entries(t).map(([n,e])=>`;${Jt(n)}=${Jt(e)}`).join(``)}function li(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${it$1(e)}=${it$1(i)}`).join(`&`):`${it$1(e)}=${it$1(r)}`).filter(e=>e);return n.length?`?${n.join(`&`)}`:``}var di=/^[^\/()?;#]+/;function Gt(t){let n=t.match(di);return n?n[0]:``}var hi=/^[^\/()?;=#]+/;function fi(t){let n=t.match(hi);return n?n[0]:``}var pi=/^[^=?&#]+/;function gi(t){let n=t.match(pi);return n?n[0]:``}var vi=/^[^&#]+/;function mi(t){let n=t.match(vi);return n?n[0]:``}var Xt=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){for(;this.consumeOptional(`/`););return this.remaining===``||this.peekStartsWith(`?`)||this.peekStartsWith(`#`)?new m$3([],{}):new m$3([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional(`?`))do this.parseQueryParam(n);while(this.consumeOptional(`&`));return n}parseFragment(){return this.consumeOptional(`#`)?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new y$2(4010,!1);if(this.remaining===``)return{};this.consumeOptional(`/`);let e=[];for(this.peekStartsWith(`(`)||e.push(this.parseSegment());this.peekStartsWith(`/`)&&!this.peekStartsWith(`//`)&&!this.peekStartsWith(`/(`);)this.capture(`/`),e.push(this.parseSegment());let r={};this.peekStartsWith(`/(`)&&(this.capture(`/`),r=this.parseParens(!0,n));let i={};return this.peekStartsWith(`(`)&&(i=this.parseParens(!1,n)),(e.length>0||Object.keys(r).length>0)&&(i[`primary`]=new m$3(e,r)),i}parseSegment(){let n=Gt(this.remaining);if(n===``&&this.peekStartsWith(`;`))throw new y$2(4009,!1);return this.capture(n),new K$3(ct$1(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(`;`);)this.parseParam(n);return n}parseParam(n){let e=fi(this.remaining);if(!e)return;this.capture(e);let r=``;if(this.consumeOptional(`=`)){let i=Gt(this.remaining);i&&(r=i,this.capture(r))}n[ct$1(e)]=ct$1(r)}parseQueryParam(n){let e=gi(this.remaining);if(!e)return;this.capture(e);let r=``;if(this.consumeOptional(`=`)){let s=mi(this.remaining);s&&(r=s,this.capture(r))}let i=nn(e),o=nn(r);if(Object.hasOwn(n,i)){let s=n[i];Array.isArray(s)||(s=[s],n[i]=s),s.push(o)}else n[i]=o}parseParens(n,e){let r=Object.create(null);for(this.capture(`(`);!this.consumeOptional(`)`)&&this.remaining.length>0;){let i=Gt(this.remaining),o=this.remaining[i.length];if(o!==`/`&&o!==`)`&&o!==`;`)throw new y$2(4010,!1);let s;i.indexOf(`:`)>-1?(s=i.slice(0,i.indexOf(`:`)),this.capture(s),this.capture(`:`)):n&&(s=`primary`);let c=this.parseChildren(e+1);r[s??`primary`]=Object.keys(c).length===1&&c[`primary`]?c[p$4]:new m$3([],c),this.consumeOptional(`//`)}return r}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new y$2(4011,!1)}};function Rn(t){return t.segments.length>0?new m$3([],{[p$4]:t}):t}function Sn(t){let n=Object.create(null);for(let[r,i]of Object.entries(t.children)){let o=Sn(i);if(r===`primary`&&o.segments.length===0&&o.hasChildren())for(let[s,c]of Object.entries(o.children))n[s]=c;else(o.segments.length>0||o.hasChildren())&&(n[r]=o)}return yi(new m$3(t.segments,n))}function yi(t){if(t.numberOfChildren===1&&t.children[`primary`]){let n=t.children[p$4];return new m$3(t.segments.concat(n.segments),n.children)}return t}function Z$3(t){return t instanceof E$3}function Cn(t,n,e=null,r=null,i=new Y$3){return bn(wn(t),n,e,r,i)}function wn(t){let n;function e(o){let s={};for(let a of o.children){let u=e(a);s[a.outlet]=u}let c=new m$3(o.url,s);return o===t&&(n=c),c}let i=Rn(e(t.root));return n??i}function bn(t,n,e,r,i){let o=t;for(;o.parent;)o=o.parent;if(n.length===0)return Wt(o,o,o,e,r,i);let s=Ri(n);if(s.toRoot())return Wt(o,o,new m$3([],{}),e,r,i);let c=Si(s,o,t),a=c.processChildren?Oe$1(c.segmentGroup,c.index,s.commands):En(c.segmentGroup,c.index,s.commands);return Wt(o,c.segmentGroup,a,e,r,i)}function lt$1(t){return typeof t==`object`&&t!=null&&!t.outlets&&!t.segmentPath}function Le$1(t){return typeof t==`object`&&t!=null&&t.outlets}function on(t,n,e){t||=`ɵ`;let r=new E$3;return r.queryParams={[t]:n},e.parse(e.serialize(r)).queryParams[t]}function Wt(t,n,e,r,i,o){let s={};for(let[u,l]of Object.entries(r??{}))s[u]=Array.isArray(l)?l.map(v=>on(u,v,o)):on(u,l,o);let c;t===n?c=e:c=In(t,n,e);return new E$3(Rn(Sn(c)),s,i)}function In(t,n,e){let r=Object.create(null);return Object.entries(t.children).forEach(([i,o])=>{o===n?r[i]=e:r[i]=In(o,n,e)}),new m$3(t.segments,r)}var dt$1=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&<$1(r[0]))throw new y$2(4003,!1);let i=r.find(Le$1);if(i&&i!==ti(r))throw new y$2(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]==`/`}};function Ri(t){if(typeof t[0]==`string`&&t.length===1&&t[0]===`/`)return new dt$1(!0,0,t);let n=0,e=!1,r=t.reduce((i,o,s)=>{if(typeof o==`object`&&o!=null){if(o.outlets){let c={};return Object.entries(o.outlets).forEach(([a,u])=>{c[a]=typeof u==`string`?u.split(`/`):u}),[...i,{outlets:c}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!=`string`?[...i,o]:s===0?(o.split(`/`).forEach((c,a)=>{a==0&&c===`.`||(a==0&&c===``?e=!0:c===`..`?n++:c!=``&&i.push(c))}),i):[...i,o]},[]);return new dt$1(e,n,r)}var fe=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function Si(t,n,e){if(t.isAbsolute)return new fe(n,!0,0);if(!e)return new fe(n,!1,NaN);if(e.parent===null)return new fe(e,!0,0);let r=lt$1(t.commands[0])?0:1;return Ci(e,e.segments.length-1+r,t.numberOfDoubleDots)}function Ci(t,n,e){let r=t,i=n,o=e;for(;o>i;){if(o-=i,r=r.parent,!r)throw new y$2(4005,!1);i=r.segments.length}return new fe(r,!1,i-o)}function wi(t){return Le$1(t[0])?t[0].outlets:{[p$4]:t}}function En(t,n,e){if(t??=new m$3([],{}),t.segments.length===0&&t.hasChildren())return Oe$1(t,n,e);let r=bi(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let o=new m$3(t.segments.slice(0,r.pathIndex),{});return o.children[p$4]=new m$3(t.segments.slice(r.pathIndex),t.children),Oe$1(o,0,i)}else return r.match&&i.length===0?new m$3(t.segments,{}):r.match&&!t.hasChildren()?er(t,n,e):r.match?Oe$1(t,0,i):er(t,n,e)}function Oe$1(t,n,e){if(e.length===0)return new m$3(t.segments,{});{let r=wi(e),i=Object.create(null);if(Object.keys(r).some(o=>o!==`primary`)&&t.children[`primary`]&&t.numberOfChildren===1&&t.children[`primary`].segments.length===0){let o=Oe$1(t.children[p$4],n,e);return new m$3(t.segments,o.children)}return Object.entries(r).forEach(([o,s])=>{typeof s==`string`&&(s=[s]),s!==null&&(i[o]=En(t.children[o],n,s))}),Object.entries(t.children).forEach(([o,s])=>{r[o]===void 0&&(i[o]=s)}),new m$3(t.segments,i)}}function bi(t,n,e){let r=0,i=n,o={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return o;let s=t.segments[i],c=e[r];if(Le$1(c))break;let a=`${c}`,u=r<e.length-1?e[r+1]:null;if(i>0&&a===void 0)break;if(a&&u&&typeof u==`object`&&u.outlets===void 0){if(!an(a,u,s))return o;r+=2}else{if(!an(a,{},s))return o;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function er(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let o=e[i];if(Le$1(o))return new m$3(r,Ii(o.outlets));if(i===0&<$1(e[0])){let a=t.segments[n];r.push(new K$3(a.path,sn(e[0]))),i++;continue}let s=Le$1(o)?o.outlets[p$4]:`${o}`,c=i<e.length-1?e[i+1]:null;s&&c&<$1(c)?(r.push(new K$3(s,sn(c))),i+=2):(r.push(new K$3(s,{})),i++)}return new m$3(r,{})}function Ii(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r==`string`&&(r=[r]),r!==null&&(n[e]=er(new m$3([],{}),0,r))}),n}function sn(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function an(t,n,e){return t==e.path&&F$3(n,e.parameters)}var pe$2=`imperative`;var S$3=(function(t){return t[t.NavigationStart=0]=`NavigationStart`,t[t.NavigationEnd=1]=`NavigationEnd`,t[t.NavigationCancel=2]=`NavigationCancel`,t[t.NavigationError=3]=`NavigationError`,t[t.RoutesRecognized=4]=`RoutesRecognized`,t[t.ResolveStart=5]=`ResolveStart`,t[t.ResolveEnd=6]=`ResolveEnd`,t[t.GuardsCheckStart=7]=`GuardsCheckStart`,t[t.GuardsCheckEnd=8]=`GuardsCheckEnd`,t[t.RouteConfigLoadStart=9]=`RouteConfigLoadStart`,t[t.RouteConfigLoadEnd=10]=`RouteConfigLoadEnd`,t[t.ChildActivationStart=11]=`ChildActivationStart`,t[t.ChildActivationEnd=12]=`ChildActivationEnd`,t[t.ActivationStart=13]=`ActivationStart`,t[t.ActivationEnd=14]=`ActivationEnd`,t[t.Scroll=15]=`Scroll`,t[t.NavigationSkipped=16]=`NavigationSkipped`,t})(S$3||{});var U$3=class{id;url;constructor(n,e){this.id=n,this.url=e}};var J$3=class extends U$3{type=S$3.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r=`imperative`,i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}};var x$2=class extends U$3{urlAfterRedirects;type=S$3.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}};var b$2=(function(t){return t[t.Redirect=0]=`Redirect`,t[t.SupersededByNewNavigation=1]=`SupersededByNewNavigation`,t[t.NoDataFromResolver=2]=`NoDataFromResolver`,t[t.GuardRejected=3]=`GuardRejected`,t[t.Aborted=4]=`Aborted`,t})(b$2||{});var me$1=(function(t){return t[t.IgnoredSameUrlNavigation=0]=`IgnoredSameUrlNavigation`,t[t.IgnoredByUrlHandlingStrategy=1]=`IgnoredByUrlHandlingStrategy`,t})(me$1||{});var j$3=class extends U$3{reason;code;type=S$3.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function An(t){return t instanceof j$3&&(t.code===b$2.Redirect||t.code===b$2.SupersededByNewNavigation)}var H$2=class extends U$3{reason;code;type=S$3.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}};var se$1=class extends U$3{error;target;type=S$3.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}};var je=class extends U$3{urlAfterRedirects;state;type=S$3.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var ht$1=class extends U$3{urlAfterRedirects;state;type=S$3.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var ft$1=class extends U$3{urlAfterRedirects;state;shouldActivate;type=S$3.GuardsCheckEnd;constructor(n,e,r,i,o){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=o}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}};var pt=class extends U$3{urlAfterRedirects;state;type=S$3.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var gt$1=class extends U$3{urlAfterRedirects;state;type=S$3.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var vt$1=class{route;type=S$3.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}};var mt$1=class{route;type=S$3.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}};var yt$1=class{snapshot;type=S$3.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var Rt=class{snapshot;type=S$3.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var St$1=class{snapshot;type=S$3.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var Ct$1=class{snapshot;type=S$3.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var ye$1=class{routerEvent;position;anchor;scrollBehavior;type=S$3.Scroll;constructor(n,e,r,i){this.routerEvent=n,this.position=e,this.anchor=r,this.scrollBehavior=i}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}};var Re$1=class{};var xe$1=class{};var Se$1=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function Ei(t){return!(t instanceof Re$1)&&!(t instanceof Se$1)&&!(t instanceof xe$1)}var wt=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Ie$1(this.rootInjector)}};var Ie$1=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new wt(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static ɵfac=function(r){return new(r||t)(S$4(fe$1))};static ɵprov=A$2({token:t,factory:t.ɵfac,providedIn:`root`})}return t})();var bt$2=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=tr(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=tr(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=rr(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return rr(n,this._root).map(e=>e.value)}};function tr(t,n){if(t===n.value)return n;for(let e of n.children){let r=tr(t,e);if(r)return r}return null}function rr(t,n){if(t===n.value)return[n];for(let e of n.children){let r=rr(t,e);if(r.length)return r.unshift(n),r}return[]}var _$2=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function he(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var ke$1=class extends bt$2{snapshot;constructor(n,e){super(n),this.snapshot=e,pr(this,n)}toString(){return this.snapshot.toString()}};function Mn(t,n){let e=Ai(t,n),r=new Vr([new K$3(``,{})]),i=new Vr({}),o=new Vr({}),a=new G$2(r,i,new Vr({}),new Vr(``),o,p$4,t,e.root);return a.snapshot=e.root,new ke$1(new _$2(a,[]),e)}function Ai(t,n){return new $e(``,new _$2(new Ce$1([],{},{},``,{},p$4,t,null,{},n),[]))}var G$2=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;resources;_localInjector;pending;paramsSignal;queryParamsSignal;paramMapSignal;queryParamMapSignal;fragmentSignal;dataSignal;constructor(n,e,r,i,o,s,c,a){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=o,this.outlet=s,this.component=c,this._futureSnapshot=a,this.title=this.dataSubject?.pipe(ae$3(u=>u[Fe]))??$r(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(ae$3(n=>oe$2(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(ae$3(n=>oe$2(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}_setPending(n){this._futureSnapshot=n,this.pending?.set(!0)}};var Mi=`always`;function fr(t,n,e){let r,{routeConfig:i}=t;return n!==null&&(e===`always`||i?.path===``||!n.component&&!n.routeConfig?.loadComponent)?r={params:l$1(l$1({},n.params),t.params),data:l$1(l$1({},n.data),t.data),resolve:l$1(l$1(l$1(l$1({},t.data),n.data),i?.data),t._resolvedData)}:r={params:l$1({},t.params),data:l$1({},t.data),resolve:l$1(l$1({},t.data),t._resolvedData??{})},i&&Nn(i)&&(r.resolve[Fe]=i.title),r}var Ce$1=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;resources;get title(){return this.data?.[Fe]}constructor(n,e,r,i,o,s,c,a,u,l){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o,this.outlet=s,this.component=c,this.routeConfig=a,this._resolve=u,this._environmentInjector=l}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=oe$2(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=oe$2(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(r=>r.toString()).join(`/`)}', path:'${this.routeConfig?this.routeConfig.path:``}')`}};var $e=class extends bt$2{url;constructor(n,e){super(e),this.url=n,pr(this,e)}toString(){return Tn(this._root)}};function pr(t,n){n.value._routerState=t,n.children.forEach(e=>pr(t,e))}function Tn(t){let n=t.children.length>0?` { ${t.children.map(Tn).join(`, `)} } `:``;return`${t.value}${n}`}function Qt(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,F$3(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),F$3(n.params,e.params)||t.paramsSubject.next(e.params),ei(n.url,e.url)||t.urlSubject.next(e.url),F$3(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function nr(t,n){let e=F$3(t.params,n.params)&&oi(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||nr(t.parent,n.parent))}function Nn(t){return typeof t.title==`string`||t.title===null}var Dn=new E$4(``);var gr=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=p$4;activateEvents=new It$1;deactivateEvents=new It$1;attachEvents=new It$1;detachEvents=new It$1;routerOutletData=NH();parentContexts=g$2(Ie$1);location=g$2(Ar);changeDetector=g$2(oD);inputBinder=g$2(He,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new y$2(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new y$2(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new y$2(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new y$2(4013,!1);this._activatedRoute=e;let i=this.location,s=e.snapshot.component,c=this.parentContexts.getOrCreateContext(this.name).children,a=new ir(e,c,i.injector,this.routerOutletData);this.activated=i.createComponent(s,{index:i.length,injector:a,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.activateEvents.emit(this.activated.instance)}static ɵfac=function(r){return new(r||t)};static ɵdir=ad({type:t,selectors:[[`router-outlet`]],inputs:{name:`name`,routerOutletData:[1,`routerOutletData`]},outputs:{activateEvents:`activate`,deactivateEvents:`deactivate`,attachEvents:`attach`,detachEvents:`detach`},exportAs:[`outlet`],features:[rl]})}return t})();var ir=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===G$2?this.route:n===Ie$1?this.childContexts:n===Dn?this.outletData:this.parent.get(n,e)}};var He=new E$4(``);var _n=(()=>{class t{options;feature;outletDataSubscriptions=new Map;outletSeenKeys=new Map;outletEffects=new Map;constructor(e,r=null){this.options=e,this.feature=r,this.options.queryParams??=!0}bindActivatedRouteToOutletComponent(e,r){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e,r)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e),this.outletSeenKeys.delete(e),this.outletEffects.get(e)?.forEach(r=>r.destroy()),this.outletEffects.delete(e)}subscribeToRouteData(e,r){let{activatedRoute:i}=e,o=[],s=[];if(this.feature?.createResourceOutletBindingEffects&&e.activatedComponentRef){let{handledKeys:a,createdEffects:u}=this.feature.createResourceOutletBindingEffects(e.activatedComponentRef,i,r);o.push(...u),s=a}o.length>0&&this.outletEffects.set(e,o);let c=IE([this.options.queryParams?i.queryParams:$r({}),i.params,i.data]).pipe(Qa(([a,u,l],v)=>(l=l$1(l$1(l$1(l$1({},a),u),l),i.resources||{}),v===0?$r(l):Promise.resolve(l)))).subscribe(a=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||i.component===null){this.unsubscribeFromRouteData(e);return}let u=jH(i.component);if(!u){this.unsubscribeFromRouteData(e);return}let l=this.outletSeenKeys.get(e);l||(l=new Set,this.outletSeenKeys.set(e,l));for(let f of Object.keys(a))l.add(f);let v=this.options.unmatchedInputBehavior??`alwaysUndefined`;for(let{templateName:f}of u.inputs){if(s.includes(f))continue;let R=a[f];(R!==void 0||v===`alwaysUndefined`||l.has(f))&&e.activatedComponentRef.setInput(f,R)}});this.outletDataSubscriptions.set(e,c)}static ɵfac=function(r){tb()};static ɵprov=A$2({token:t,factory:t.ɵfac})}return t})();var vr=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵcmp=Fb({type:t,selectors:[[`ng-component`]],exportAs:[`emptyRouterOutlet`],decls:1,vars:0,template:function(r,i){r&1&&Py(0,`router-outlet`)},dependencies:[gr],encapsulation:2,changeDetection:1})}return t})();function mr(t){let n=t.children&&t.children.map(mr),e=n?m$4(l$1({},t),{children:n}):l$1({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==`primary`&&(e.component=vr),e}function Ti(t,n,e){let r=new Set;return{newlyCreatedRoutes:r,state:new ke$1(ze$1(t,n._root,e?e._root:void 0,r),n)}}function ze$1(t,n,e,r){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let i=e.value;i._setPending(n.value);return new _$2(i,Ni(t,n,e,r))}else{if(t.shouldAttach(n.value)){let s=t.retrieve(n.value);if(s!==null){let c=s.route;return c.value._setPending(n.value),c.children=n.children.map(a=>ze$1(t,a,void 0,r)),c}}let i=Di(n.value);i._setPending(n.value),r.add(i);return new _$2(i,n.children.map(s=>ze$1(t,s,void 0,r)))}}function Ni(t,n,e,r){return n.children.map(i=>{for(let o of e.children)if(t.shouldReuseRoute(i.value,o.value.snapshot))return ze$1(t,i,o,r);return ze$1(t,i,void 0,r)})}function Di(t){return new G$2(new Vr(t.url),new Vr(t.params),new Vr(t.queryParams),new Vr(t.fragment),new Vr(t.data),t.outlet,t.component,t)}var we$1=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}};var Un=`ngNavigationCancelingError`;function It(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=Z$3(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=On(!1,b$2.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function On(t,n){let e=new Error(`NavigationCancelingError: ${t||``}`);return e[Un]=!0,e.cancellationCode=n,e}function _i(t){return Pn(t)&&Z$3(t.url)}function Pn(t){return!!t&&t[Un]}var or=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,o){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=o}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),Qt(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=he(e);n.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,i[s],r),delete i[s]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,r)})}deactivateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(i===o)if(i.component){let s=r.getContext(i.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,r);else o&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=he(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);if(r&&r.outlet){let s=r.outlet.detach(),c=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:c})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=he(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null),n.value._localInjector?.destroy()}activateChildRoutes(n,e,r){let i=he(e);n.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],r),this.forwardEvent(new Ct$1(o.value.snapshot))}),n.children.length&&this.forwardEvent(new Rt(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(Qt(i),i===o)if(i.component){let s=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let s=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let c=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),s.children.onOutletReAttached(c.contexts),s.attachRef=c.componentRef,s.route=c.route.value,s.outlet&&s.outlet.attach(c.componentRef,c.route.value),Qt(c.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=i,s.outlet&&s.outlet.activateWith(i,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,r)}};var Et=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}};var ge=class{component;route;constructor(n,e){this.component=n,this.route=e}};function Ui(t,n,e){let r=t._root;return Ue(r,n?n._root:null,e,[r.value])}function Oi(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function Ee$1(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t==`function`&&!$E(t)?t:n.get(t):r}function Ue(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=he(n);return t.children.forEach(s=>{Pi(s,o[s.value.outlet],e,r.concat([s.value]),i),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,c])=>Pe$1(c,e.getContext(s),e,i)),i}function Pi(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=n?n.value:null,c=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let a=Li(s,o,o.routeConfig.runGuardsAndResolvers);a?i.canActivateChecks.push(new Et(r)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?Ue(t,n,c?c.children:null,r,i):Ue(t,n,e,r,i),a&&c&&c.outlet&&c.outlet.isActivated&&i.canDeactivateChecks.push(new ge(c.outlet.component,s))}else s&&Pe$1(n,c,e,i),i.canActivateChecks.push(new Et(r)),o.component?Ue(t,null,c?c.children:null,r,i):Ue(t,null,e,r,i);return i}function Li(t,n,e){if(typeof e==`function`)return cr$1(n._environmentInjector,()=>e(t,n));switch(e){case`pathParamsChange`:return!ie$2(t.url,n.url);case`pathParamsOrQueryParamsChange`:return!ie$2(t.url,n.url)||!F$3(t.queryParams,n.queryParams);case`always`:return!0;case`paramsOrQueryParamsChange`:return!nr(t,n)||!F$3(t.queryParams,n.queryParams);default:return!nr(t,n)}}function Pe$1(t,n,e,r){let i=he(t),o=t.value;Object.entries(i).forEach(([s,c])=>{o.component?n?Pe$1(c,n.children.getContext(s),n.children,r):Pe$1(c,null,null,r):Pe$1(c,e?e.getContext(s):null,e,r)}),o.component?n&&n.outlet&&n.outlet.isActivated?r.canDeactivateChecks.push(new ge(n.outlet.component,o)):r.canDeactivateChecks.push(new ge(null,o)):r.canDeactivateChecks.push(new ge(null,o))}function Be(t){return typeof t==`function`}function ji(t){return typeof t==`boolean`}function xi(t){return t&&Be(t.canLoad)}function ki(t){return t&&Be(t.canActivate)}function $i(t){return t&&Be(t.canActivateChild)}function zi(t){return t&&Be(t.canDeactivate)}function qi(t){return t&&Be(t.canMatch)}function Ln(t){return t instanceof rn||t?.name===`EmptyError`}var ot$1=Symbol(`INITIAL_VALUE`);function be(){return Qa(t=>IE(t.map(n=>n.pipe(Za(1),OE(ot$1)))).pipe(ae$3(n=>{for(let e of n)if(e!==!0){if(e===ot$1)return ot$1;if(e===!1||Fi(e))return e}return!0}),jt(n=>n!==ot$1),Za(1)))}function Fi(t){return Z$3(t)||t instanceof we$1}function jn(t){return t.aborted?$r(void 0).pipe(Za(1)):new x$3(n=>{let e=()=>{n.next(),n.complete()};return t.addEventListener(`abort`,e),()=>t.removeEventListener(`abort`,e)})}function xn(t){return kE(jn(t))}function Hi(t){return ln$1(n=>{let{targetSnapshot:e,currentSnapshot:r,guards:{canActivateChecks:i,canDeactivateChecks:o}}=n;return o.length===0&&i.length===0?$r(m$4(l$1({},n),{guardsResult:!0})):Bi(o,e,r).pipe(ln$1(s=>s&&ji(s)?Vi(e,i,t):$r(s)),ae$3(s=>m$4(l$1({},n),{guardsResult:s})))})}function Bi(t,n,e){return nt$1(t).pipe(ln$1(r=>Yi(r.component,r.route,e,n)),AE(r=>r!==!0,!0))}function Vi(t,n,e){return nt$1(n).pipe(Ya(r=>_i$1(Wi(r.route.parent,e),Gi(r.route,e),Ki(t,r.path),Qi(t,r.route))),AE(r=>r!==!0,!0))}function Gi(t,n){return t!==null&&n&&n(new St$1(t)),$r(!0)}function Wi(t,n){return t!==null&&n&&n(new yt$1(t)),$r(!0)}function Qi(t,n){let e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||e.length===0)return $r(!0);return $r(e.map(i=>CE(()=>{let o=n._environmentInjector,s=Ee$1(i,o);return ae$2(ki(s)?s.canActivate(n,t):cr$1(o,()=>s(n,t))).pipe(AE())}))).pipe(be())}function Ki(t,n){let e=n[n.length-1];return $r(n.slice(0,n.length-1).reverse().map(o=>Oi(o)).filter(o=>o!==null).map(o=>CE(()=>{return $r(o.guards.map(c=>{let a=o.node._environmentInjector,u=Ee$1(c,a);return ae$2($i(u)?u.canActivateChild(e,t):cr$1(a,()=>u(e,t))).pipe(AE())})).pipe(be())}))).pipe(be())}function Yi(t,n,e,r){let i=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!i||i.length===0)return $r(!0);return $r(i.map(s=>{let c=n._environmentInjector,a=Ee$1(s,c);return ae$2(zi(a)?a.canDeactivate(t,n,e,r):cr$1(c,()=>a(t,n,e,r))).pipe(AE())})).pipe(be())}function Zi(t,n,e,r,i){let o=n.canLoad;if(o===void 0||o.length===0)return $r(!0);return $r(o.map(c=>{let a=Ee$1(c,t),l=ae$2(xi(a)?a.canLoad(n,e):cr$1(t,()=>a(n,e)));return i?l.pipe(xn(i)):l})).pipe(be(),kn(r))}function kn(t){return nE(Of(n=>{if(typeof n!=`boolean`)throw It(t,n)}),ae$3(n=>n===!0))}function Ji(t,n,e,r,i,o){let s=n.canMatch;if(!s||s.length===0)return $r(!0);return $r(s.map(a=>{let u=Ee$1(a,t);return ae$2(qi(u)?u.canMatch(n,e,i):cr$1(t,()=>u(n,e,i))).pipe(xn(o))})).pipe(be(),kn(r))}var V$2=class t extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,t.prototype)}};var qe$1=class t extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,t.prototype)}};function Xi(t){throw new y$2(4e3,!1)}function eo(t){throw On(!1,b$2.GuardRejected)}var sr=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}async lineralizeSegments(n,e){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[`primary`])throw Xi(`${n.redirectTo}`);i=i.children[p$4]}}async applyRedirectCommands(n,e,r,i,o){let s=await to(e,i,o);if(s instanceof E$3)throw new qe$1(s);let c=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),n,r);if(s[0]===`/`)throw new qe$1(c);return c}applyRedirectCreateUrlTree(n,e,r,i){return new E$3(this.createSegmentGroup(n,e.root,r,i),this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,o])=>{if(typeof o==`string`&&o[0]===`:`){let c=o.substring(1);r[i]=e[c]}else r[i]=o}),r}createSegmentGroup(n,e,r,i){let o=this.createSegments(n,e.segments,r,i),s=Object.create(null);return Object.entries(e.children).forEach(([c,a])=>{s[c]=this.createSegmentGroup(n,a,r,i)}),new m$3(o,s)}createSegments(n,e,r,i){return e.map(o=>o.path[0]===`:`?this.findPosParam(n,o,i):this.findOrReturn(o,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new y$2(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function to(t,n,e){if(typeof t==`string`)return Promise.resolve(t);let r=t;return ut$1(ae$2(cr$1(e,()=>r(n))))}function ro(t,n){return t.providers&&!t._injector&&(t._injector=sd(t.providers,n,`Route: ${t.path}`)),t._injector??n}function z$3(t){return t.outlet||`primary`}function no(t,n){let e=t.filter(r=>z$3(r)===n);return e.push(...t.filter(r=>z$3(r)!==n)),e}var ar={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function $n(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function io(t,n,e,r,i,o,s){let c=zn(t,n,e);if(!c.matched)return $r(c);let a=$n(o(c));return r=ro(n,r),Ji(r,n,e,i,a,s).pipe(ae$3(u=>u===!0?c:l$1({},ar)))}function zn(t,n,e){if(n.path===``)return n.pathMatch===`full`&&(t.hasChildren()||e.length>0)?l$1({},ar):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||ln)(e,t,n);if(!i)return l$1({},ar);let o={};Object.entries(i.posParams??{}).forEach(([c,a])=>{o[c]=a.path});let s=i.consumed.length>0?l$1(l$1({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:s,positionalParamSegments:i.posParams??{}}}function cn(t,n,e,r,i){return e.length>0&&ao(t,e,r,i)?{segmentGroup:new m$3(n,so(r,new m$3(e,t.children))),slicedSegments:[]}:e.length===0&&co(t,e,r)?{segmentGroup:new m$3(t.segments,oo(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new m$3(t.segments,t.children),slicedSegments:e}}function oo(t,n,e,r){let i={};for(let o of e)if(Mt$1(t,n,o)&&!r[z$3(o)]){let s=new m$3([],{});i[z$3(o)]=s}return l$1(l$1({},r),i)}function so(t,n){let e={};e[p$4]=n;for(let r of t)if(r.path===``&&z$3(r)!==`primary`){let i=new m$3([],{});e[z$3(r)]=i}return e}function ao(t,n,e,r){return e.some(i=>!Mt$1(t,n,i)||!(z$3(i)!==`primary`)?!1:!(r!==void 0&&z$3(i)===r))}function co(t,n,e){return e.some(r=>Mt$1(t,n,r))}function Mt$1(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch===`full`?!1:e.path===``}function uo(t,n,e){return n.length===0&&!t.children[e]}var cr=class{};async function lo(t,n,e,r,i,o,s,c){return new ur(t,n,e,r,i,s,o,c).recognize()}var ho=31;var ur=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,o,s,c,a){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=c,this.abortSignal=a,this.applyRedirects=new sr(this.urlSerializer,this.urlTree)}noMatchError(n){return new y$2(4002,`'${n.segmentGroup}'`)}async recognize(){let n=cn(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:r}=await this.match(n),o=new $e(``,new _$2(r,e)),s=Cn(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),{state:o,tree:s}}async match(n){let e=new Ce$1([],Object.freeze({}),Object.freeze(l$1({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),p$4,this.rootComponentType,null,{},this.injector);try{return{children:await this.processSegmentGroup(this.injector,this.config,n,p$4,e),rootSnapshot:e}}catch(r){if(r instanceof qe$1)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof V$2?this.noMatchError(r):r}}async processSegmentGroup(n,e,r,i,o){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,e,r,o);let s=await this.processSegment(n,e,r,r.segments,i,!0,o);return s instanceof _$2?[s]:[]}async processChildren(n,e,r,i){let o=[];for(let a of Object.keys(r.children))a===`primary`?o.unshift(a):o.push(a);let s=[];for(let a of o){let u=r.children[a],l=no(e,a),v=await this.processSegmentGroup(n,l,u,a,i);s.push(...v)}let c=qn(s);return fo(c),c}async processSegment(n,e,r,i,o,s,c){for(let a of e)try{return await this.processSegmentAgainstRoute(a._injector??n,e,a,r,i,o,s,c)}catch(u){if(u instanceof V$2||Ln(u))continue;throw u}if(uo(r,i,o))return new cr;throw new V$2(r)}async processSegmentAgainstRoute(n,e,r,i,o,s,c,a){if(z$3(r)!==s&&(s===`primary`||!Mt$1(i,o,r)))throw new V$2(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,o,s,a);if(this.allowRedirects&&c)return this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,o,s,a);throw new V$2(i)}async expandSegmentAgainstRouteUsingRedirect(n,e,r,i,o,s,c){let{matched:a,parameters:u,consumedSegments:l,positionalParamSegments:v,remainingSegments:f}=zn(e,i,o);if(!a)throw new V$2(e);typeof i.redirectTo==`string`&&i.redirectTo[0]===`/`&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>ho&&(this.allowRedirects=!1));let R=this.createSnapshot(n,i,o,u,c);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let k=await this.applyRedirects.applyRedirectCommands(l,i.redirectTo,v,$n(R),n),X=await this.applyRedirects.lineralizeSegments(i,k);return this.processSegment(n,r,e,X.concat(f),s,!1,c)}createSnapshot(n,e,r,i,o){let s=new Ce$1(r,i,Object.freeze(l$1({},this.urlTree.queryParams)),this.urlTree.fragment,go(e),z$3(e),e.component??e._loadedComponent??null,e,vo(e),n),c=fr(s,o,this.paramsInheritanceStrategy);return s.params=Object.freeze(c.params),s.data=Object.freeze(c.data),s}async matchSegmentAgainstRoute(n,e,r,i,o,s){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let c=ee=>this.createSnapshot(n,r,ee.consumedSegments,ee.parameters,s),a=await ut$1(io(e,r,i,n,this.urlSerializer,c,this.abortSignal));if(r.path===`**`&&(e.children={}),!a?.matched)throw new V$2(e);n=r._injector??n;let{routes:u}=await this.getChildConfig(n,r,i),l=r._loadedInjector??n,{parameters:v,consumedSegments:f,remainingSegments:R}=a,k=this.createSnapshot(n,r,f,v,s),{segmentGroup:X,slicedSegments:Me}=cn(e,f,R,u,o);if(Me.length===0&&X.hasChildren())return new _$2(k,await this.processChildren(l,u,X,k));if(u.length===0&&Me.length===0)return new _$2(k,[]);let _t=z$3(r)===o,Ge=await this.processSegment(l,u,X,Me,_t?p$4:o,!0,k);return new _$2(k,Ge instanceof _$2?[Ge]:[])}async getChildConfig(n,e,r){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(e._loadedRoutes!==void 0){let o=e._loadedNgModuleFactory;return o&&!e._loadedInjector&&(e._loadedInjector=o.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(await ut$1(Zi(n,e,r,this.urlSerializer,this.abortSignal))){let o=await this.configLoader.loadChildren(n,e);return e._loadedRoutes=o.routes,e._loadedInjector=o.injector,e._loadedNgModuleFactory=o.factory,o}throw eo(e)}return{routes:[],injector:n}}};function fo(t){t.sort((n,e)=>n.value.outlet===`primary`?-1:e.value.outlet===`primary`?1:n.value.outlet.localeCompare(e.value.outlet))}function po(t){let n=t.value.routeConfig;return n&&n.path===``}function qn(t){let n=[],e=new Set;for(let r of t){if(!po(r)){n.push(r);continue}let i=n.find(o=>r.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=qn(r.children);n.push(new _$2(r.value,i))}return n.filter(r=>!e.has(r))}function go(t){return t.data||{}}function vo(t){return t.resolve||{}}function mo(t,n,e,r,i,o,s){return ln$1(async c=>{let{state:a,tree:u}=await lo(t,n,e,r,c.extractedUrl,i,o,s);return m$4(l$1({},c),{targetSnapshot:a,urlAfterRedirects:u})})}function yo(t){return ln$1(n=>{let{targetSnapshot:e,guards:{canActivateChecks:r}}=n;if(!r.length)return $r(n);let i=new Set(r.map(c=>c.route)),o=new Set;for(let c of i)if(!o.has(c))for(let a of Fn(c))o.add(a);let s=0;return nt$1(o).pipe(Ya(c=>i.has(c)?Ro(c,e,t):(c.data=fr(c,c.parent,t).resolve,$r(void 0))),Of(()=>s++),xE(1),ln$1(c=>s===o.size?$r(n):cn$1))})}function Fn(t){return[t,...t.children.map(e=>Fn(e)).flat()]}function Ro(t,n,e){let r=t.routeConfig,i=t._resolve;return r?.title!==void 0&&!Nn(r)&&(i[Fe]=r.title),CE(()=>(t.data=fr(t,t.parent,e).resolve,So(i,t,n).pipe(ae$3(o=>(t._resolvedData=o,t.data=l$1(l$1({},t.data),o),null)))))}function So(t,n,e){let r=Yt(t);if(r.length===0)return $r({});let i={};return nt$1(r).pipe(ln$1(o=>Co(t[o],n,e).pipe(AE(),Of(s=>{if(s instanceof we$1)throw It(new Y$3,s);i[o]=s}))),xE(1),ae$3(()=>i),qa(o=>Ln(o)?cn$1:fE(o)))}function Co(t,n,e){let r=n._environmentInjector,i=Ee$1(t,r);return ae$2(i.resolve?i.resolve(n,e):cr$1(r,()=>i(n,e)))}var yr=new E$4(``);function lr(t){return Qa(n=>{let e=t(n);return e?nt$1(e).pipe(ae$3(()=>n)):$r(n)})}var Rr=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(o=>o.outlet===p$4);return r}getResolvedTitleForRoute(e){return e.data[Fe]}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(Hn)})}return t})();var Hn=(()=>{class t extends Rr{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static ɵfac=function(r){return new(r||t)(S$4(r8))};static ɵprov=A$2({token:t,factory:t.ɵfac,providedIn:`root`})}return t})();var Ae$1=new E$4(``,{factory:()=>({})});var Ve=new E$4(``);var Bn=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=g$2($_);async loadComponent(e,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let s=await Gn(_H(await hn(cr$1(e,()=>r.loadComponent()))));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s,s}finally{this.componentLoaders.delete(r)}})();return this.componentLoaders.set(r,i),i}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let o=await Vn(r,this.compiler,e,this.onLoadEndListener);return r._loadedRoutes=o.routes,r._loadedInjector=o.injector,r._loadedNgModuleFactory=o.factory,o}finally{this.childrenLoaders.delete(r)}})();return this.childrenLoaders.set(r,i),i}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();async function Vn(t,n,e,r){let o=await Gn(_H(await hn(cr$1(e,()=>t.loadChildren())))),s;o instanceof py||Array.isArray(o)?s=o:s=await n.compileModuleAsync(o),r&&r(t);let c,a,l;return Array.isArray(s)?a=s:(c=s.create(e).injector,l=s,a=c.get(Ve,[],{optional:!0,self:!0}).flat()),{routes:a.map(mr),injector:c,factory:l}}async function Gn(t){return t}var Tt=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(wo)})}return t})();var wo=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();var Wn=new E$4(``);var bo=()=>{};var Sr=new E$4(``);var Cr=(()=>{class t{currentNavigation=Ke(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=Ke(null);events=new we$2;transitionAbortWithErrorSubject=new we$2;configLoader=g$2(Bn);environmentInjector=g$2(fe$1);destroyRef=g$2(pe$3);urlSerializer=g$2(ce$2);rootContexts=g$2(Ie$1);location=g$2(fD);inputBindingEnabled=g$2(He,{optional:!0})!==null;titleStrategy=g$2(Rr);options=g$2(Ae$1,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||Mi;urlHandlingStrategy=g$2(Tt);createViewTransition=g$2(Wn,{optional:!0});navigationErrorHandler=g$2(Sr,{optional:!0});routerResourcesFeature=g$2(yr,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>$r(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new vt$1(i)),r=i=>this.events.next(new mt$1(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;ie$3(()=>{this.transitions?.next(m$4(l$1({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(e){return this.transitions=new Vr(null),this.transitions.pipe(jt(r=>r!==null),Qa(r=>{let i=!0,o=!1,s=new AbortController,c=()=>!o&&this.currentTransition?.id===r.id;return $r(r).pipe(Qa(a=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,``,b$2.SupersededByNewNavigation),cn$1;this.currentTransition=r;let u=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:typeof a.extras.browserUrl==`string`?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:u?m$4(l$1({},u),{previousNavigation:null}):null,abort:()=>s.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});let l=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),v=a.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!l&&v!==`reload`)return this.events.next(new H$2(a.id,this.urlSerializer.serialize(a.rawUrl),``,me$1.IgnoredSameUrlNavigation)),a.resolve(!1),cn$1;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return $r(a).pipe(Qa(f=>(this.events.next(new J$3(f.id,this.urlSerializer.serialize(f.extractedUrl),f.source,f.restoredState)),f.id!==this.navigationId?cn$1:Promise.resolve(f))),mo(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,s.signal),Of(f=>{r.targetSnapshot=f.targetSnapshot,r.urlAfterRedirects=f.urlAfterRedirects,this.currentNavigation.update(R=>(R.finalUrl=f.urlAfterRedirects,R)),this.events.next(new xe$1)}),Qa(f=>nt$1(r.routesRecognizeHandler.deferredHandle??$r(void 0)).pipe(ae$3(()=>f))),Of(()=>{let f=new je(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(f)}));if(l&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){let{id:f,extractedUrl:R,source:k,restoredState:X,extras:Me}=a,_t=new J$3(f,this.urlSerializer.serialize(R),k,X);this.events.next(_t);let Ge=Mn(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=r=m$4(l$1({},a),{targetSnapshot:Ge,urlAfterRedirects:R,extras:m$4(l$1({},Me),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(ee=>(ee.finalUrl=R,ee)),$r(r)}else return this.events.next(new H$2(a.id,this.urlSerializer.serialize(a.extractedUrl),``,me$1.IgnoredByUrlHandlingStrategy)),a.resolve(!1),cn$1}),ae$3(a=>{let u=new ht$1(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(u),this.currentTransition=r=m$4(l$1({},a),{guards:Ui(a.targetSnapshot,a.currentSnapshot,this.rootContexts)}),r}),Hi(a=>this.events.next(a)),Qa(a=>{if(r.guardsResult=a.guardsResult,a.guardsResult&&typeof a.guardsResult!=`boolean`)throw It(this.urlSerializer,a.guardsResult);let u=new ft$1(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(u),!c())return cn$1;if(!a.guardsResult)return this.cancelNavigationTransition(a,``,b$2.GuardRejected),cn$1;if(a.guards.canActivateChecks.length===0)return $r(a);let l=new pt(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(l),!c())return cn$1;let v=!1;return $r(a).pipe(yo(this.paramsInheritanceStrategy),Of({next:()=>{v=!0;let f=new gt$1(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(f)},complete:()=>{v||this.cancelNavigationTransition(a,``,b$2.NoDataFromResolver)}}))}),lr(a=>{let u=v=>{let f=[];if(v.routeConfig?._loadedComponent)v.component=v.routeConfig?._loadedComponent;else if(v.routeConfig?.loadComponent){let R=v._environmentInjector;f.push(this.configLoader.loadComponent(R,v.routeConfig).then(k=>{v.component=k}))}for(let R of v.children)f.push(...u(R));return f},l=u(a.targetSnapshot.root);return l.length===0?$r(a):nt$1(Promise.all(l).then(()=>a))}),Qa(a=>{let{newlyCreatedRoutes:u,state:l}=Ti(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);return this.currentTransition=r=a=m$4(l$1({},a),{targetRouterState:l,newlyCreatedRoutes:u}),this.currentNavigation.update(v=>(v.targetRouterState=l,v)),$r(a)}),this.routerResourcesFeature?.setupAndRunResources(s.signal)??(a=>a),lr(()=>this.afterPreactivation()),Qa(()=>{let{currentSnapshot:a,targetSnapshot:u}=r,l=this.createViewTransition?.(this.environmentInjector,a.root,u.root,r.hasUAVisualTransition);return l?nt$1(l).pipe(ae$3(()=>r)):$r(r)}),Za(1),Qa(a=>{i=!1,this.events.next(new Re$1);let u=r.beforeActivateHandler.deferredHandle;return u?nt$1(u.then(()=>a)):$r(a)}),Of(a=>{new or(e.routeReuseStrategy,r.targetRouterState,r.currentRouterState,u=>this.events.next(u),this.inputBindingEnabled).activate(this.rootContexts),a.newlyCreatedRoutes?.clear(),c()&&(Qn(a.targetRouterState),o=!0,this.currentNavigation.update(u=>(u.abort=bo,u)),this.lastSuccessfulNavigation.set(ie$3(this.currentNavigation)),this.events.next(new x$2(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),kE(jn(s.signal).pipe(jt(()=>!o&&i),Of(()=>{this.cancelNavigationTransition(r,s.signal.reason+``,b$2.Aborted)}))),Of({complete:()=>{o=!0}}),kE(this.transitionAbortWithErrorSubject.pipe(Of(a=>{throw a}))),Ka(()=>{s.abort(),o||this.cancelNavigationTransition(r,``,b$2.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),qa(a=>{if(o=!0,un(r),this.destroyed)return r.resolve(!1),cn$1;if(Pn(a))this.events.next(new j$3(r.id,this.urlSerializer.serialize(r.extractedUrl),a.message,a.cancellationCode)),_i(a)?this.events.next(new Se$1(a.url,a.navigationBehaviorOptions)):r.resolve(!1);else{let u=new se$1(r.id,this.urlSerializer.serialize(r.extractedUrl),a,r.targetSnapshot??void 0);try{let l=cr$1(this.environmentInjector,()=>this.navigationErrorHandler?.(u));if(l instanceof we$1){let{message:v,cancellationCode:f}=It(this.urlSerializer,l);this.events.next(new j$3(r.id,this.urlSerializer.serialize(r.extractedUrl),v,f)),this.events.next(new Se$1(l.redirectTo,l.navigationBehaviorOptions))}else throw this.events.next(u),a}catch(l){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(l)}}return cn$1}))}))}cancelNavigationTransition(e,r,i){un(e);let o=new j$3(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(o),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=ie$3(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();function Io(t){return t!==pe$2}function un(t){for(let n of t.newlyCreatedRoutes??[])n._localInjector?.destroy(),n._localInjector=void 0;Qn(t.targetRouterState)}function Qn(t){if(!t)return;let n=e=>{e.value.pending?.set(!1),e.children.forEach(n)};n(t._root)}var Kn=new E$4(``);var Yn=(()=>{class t{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(Eo)})}return t})();var At=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}};var Eo=(()=>{class t extends At{static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();var Nt$1=(()=>{class t{urlSerializer=g$2(ce$2);options=g$2(Ae$1,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||`replace`;location=g$2(fD);urlHandlingStrategy=g$2(Tt);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;currentUrlTree=new E$3;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let o=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,s=i??o;return s instanceof E$3?this.urlSerializer.serialize(s):s}routerUrlState(e){return e?.targetBrowserUrl===void 0||e?.finalUrl===void 0?{}:{ɵrouterUrl:this.urlSerializer.serialize(e.finalUrl)}}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=Mn(null,g$2(fe$1));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:()=>g$2(Ao)})}return t})();var Ao=(()=>{class t extends Nt$1{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!==`computed`?this.currentPageId:this.restoredState()?.ɵrouterPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type===`popstate`&&setTimeout(()=>{e(r.url,r.state,`popstate`,{replaceUrl:!0},r.hasUAVisualTransition)})})}handleRouterEvent(e,r){e instanceof J$3?this.updateStateMemento():e instanceof H$2?this.commitTransition(r):e instanceof je?this.urlUpdateStrategy===`eager`&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof Re$1?(this.commitTransition(r),this.urlUpdateStrategy===`deferred`&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof j$3&&!An(e)?this.restoreHistory(r):e instanceof se$1?this.restoreHistory(r,!0):e instanceof x$2&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,r){let{extras:i,id:o}=r,{replaceUrl:s,state:c}=i;if(this.location.isCurrentPathEqualTo(e)||s){let a=this.browserPageId,u=l$1(l$1({},c),this.generateNgRouterState(o,a,r));this.location.replaceState(e,``,u)}else{let a=l$1(l$1({},c),this.generateNgRouterState(o,this.browserPageId+1,r));this.location.go(e,``,a)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution===`computed`){let i=this.browserPageId,o=this.currentPageId-i;o!==0?this.location.historyGo(o):this.getCurrentUrlTree()===e.finalUrl&&o===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution===`replace`&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),``,this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r,i){return this.canceledNavigationResolution===`computed`?l$1({navigationId:e,ɵrouterPageId:r},this.routerUrlState(i)):l$1({navigationId:e},this.routerUrlState(i))}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();function wr(t,n){t.events.pipe(jt(e=>e instanceof x$2||e instanceof j$3||e instanceof se$1||e instanceof H$2),ae$3(e=>e instanceof x$2||e instanceof H$2?0:(e instanceof j$3?e.code===b$2.Redirect||e.code===b$2.SupersededByNewNavigation:!1)?2:1),jt(e=>e!==2),Za(1)).subscribe(()=>{n()})}var ue=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=g$2(Ny);stateManager=g$2(Nt$1);options=g$2(Ae$1,{optional:!0})||{};pendingTasks=g$2(Yt$1);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;navigationTransitions=g$2(Cr);urlSerializer=g$2(ce$2);location=g$2(fD);urlHandlingStrategy=g$2(Tt);injector=g$2(fe$1);_events=new we$2;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=g$2(Yn);injectorCleanup=g$2(Kn,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||`ignore`;config=g$2(Ve,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!g$2(He,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new se$2;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,o=ie$3(this.navigationTransitions.currentNavigation);if(i!==null&&o!==null){if(this.stateManager.handleRouterEvent(r,o),r instanceof j$3&&r.code!==b$2.Redirect&&r.code!==b$2.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof x$2)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(r instanceof Se$1){let s=r.navigationBehaviorOptions,c=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),a=l$1({scroll:i.extras.scroll,browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy===`eager`||Io(i.source)},s);this.scheduleNavigation(c,pe$2,null,a,i.hasUAVisualTransition,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}Ei(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),pe$2,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i,o,s)=>{this.navigateToSyncWithBrowser(e,i,r,o,s)})}navigateToSyncWithBrowser(e,r,i,o,s){let c=i?.navigationId?i:null,a=i?.ɵrouterUrl??e;if(i?.ɵrouterUrl&&(o=m$4(l$1({},o),{browserUrl:e})),i){let l=l$1({},i);delete l.navigationId,delete l.ɵrouterPageId,delete l.ɵrouterUrl,Object.keys(l).length!==0&&(o.state=l)}let u=this.parseUrl(a);this.scheduleNavigation(u,r,c,o,s).catch(l=>{this.disposed||this.injector.get(Nt$2)(l)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return ie$3(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(mr),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:o,fragment:s,queryParamsHandling:c,preserveFragment:a}=r,u=a?this.currentUrlTree.fragment:s,l=null;switch(c??this.options.defaultQueryParamsHandling){case`merge`:l=l$1(l$1({},this.currentUrlTree.queryParams),o);break;case`preserve`:l=this.currentUrlTree.queryParams;break;default:l=o||null}l!==null&&(l=this.removeEmptyProps(l));let v;try{v=wn(i?i.snapshot:this.routerState.snapshot.root)}catch{(typeof e[0]!=`string`||e[0][0]!==`/`)&&(e=[]),v=this.currentUrlTree.root}return bn(v,e,l,u??null,this.urlSerializer)}navigateByUrl(e,r={skipLocationChange:!1}){let i=Z$3(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(o,pe$2,null,r)}navigate(e,r={skipLocationChange:!1}){return Mo(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.console.warn(We$1(4018,!1)),this.urlSerializer.parse(`/`)}}isActive(e,r){let i;if(r===!0?i=l$1({},dr):r===!1?i=l$1({},ve):i=l$1(l$1({},ve),r),Z$3(e))return Zt(this.currentUrlTree,e,i);let o=this.parseUrl(e);return Zt(this.currentUrlTree,o,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,o])=>(o!=null&&(r[i]=o),r),{})}scheduleNavigation(e,r,i,o,s,c){if(this.disposed)return Promise.resolve(!1);let a,u,l;c?(a=c.resolve,u=c.reject,l=c.promise):l=new Promise((f,R)=>{a=f,u=R});let v=this.pendingTasks.add();return wr(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(v))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,hasUAVisualTransition:s,resolve:a,reject:u,promise:l,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),l.catch(Promise.reject.bind(Promise))}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();function Mo(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new y$2(4008,!1)}var To=(()=>{class t{router=g$2(ue);stateManager=g$2(Nt$1);fragment=Ke(``);queryParams=Ke({});path=Ke(``);serializer=g$2(ce$2);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof x$2&&this.updateState()})}updateState(){let{fragment:e,root:r,queryParams:i}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(i),this.path.set(this.serializer.serialize(new E$3(r)))}static ɵfac=function(r){return new(r||t)};static ɵprov=Be$1({token:t,factory:t.ɵfac})}return t})();var Dt=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=g$2(new $v(`href`),{optional:!0});reactiveHref=fa(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return ie$3(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return ie$3(this._target)}_target=Ke(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return ie$3(this._queryParams)}_queryParams=Ke(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return ie$3(this._fragment)}_fragment=Ke(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return ie$3(this._queryParamsHandling)}_queryParamsHandling=Ke(void 0);set state(e){this._state.set(e)}get state(){return ie$3(this._state)}_state=Ke(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return ie$3(this._info)}_info=Ke(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return ie$3(this._relativeTo)}_relativeTo=Ke(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return ie$3(this._preserveFragment)}_preserveFragment=Ke(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return ie$3(this._skipLocationChange)}_skipLocationChange=Ke(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return ie$3(this._replaceUrl)}_replaceUrl=Ke(!1);browserUrl=NH(void 0);isAnchorElement;onChanges=new we$2;applicationErrorHandler=g$2(Nt$2);options=g$2(Ae$1,{optional:!0});reactiveRouterState=g$2(To);constructor(e,r,i,o,s,c){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=o,this.el=s,this.locationStrategy=c;let a=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=a===`a`||a===`area`||!!(typeof customElements==`object`&&customElements.get(a)?.observedAttributes?.includes?.(`href`))}setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue(`tabindex`,e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=Ke(null);set routerLink(e){e==null?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(Z$3(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl(`0`))}onClick(e,r,i,o,s){let c=this._urlTree();if(c===null||this.isAnchorElement&&(e!==0||r||i||o||s||typeof this.target==`string`&&this.target!=`_self`))return!0;let a=this.browserUrl(),u=l$1({skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info},a!==void 0&&{browserUrl:a});return this.router.navigateByUrl(c,u)?.catch(l=>{this.applicationErrorHandler(l)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,r){let i=this.renderer,o=this.el.nativeElement;r!==null?i.setAttribute(o,e,r):i.removeAttribute(o,e)}_urlTree=Ft(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();let e=i=>i===`preserve`||i===`merge`;(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();let r=this.routerLinkInput();return r===null||!this.router.createUrlTree?null:Z$3(r)?r:this.router.createUrlTree(r,{relativeTo:this._relativeTo()!==void 0?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()})},{equal:(e,r)=>this.computeHref(e)===this.computeHref(r)});get urlTree(){return ie$3(this._urlTree)}computeHref(e){return e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??``:null}static ɵfac=function(r){return new(r||t)(Gn$1(ue),Gn$1(G$2),il(`tabindex`),Gn$1(Ao$1),Gn$1(Hn$1),Gn$1(Ia))};static ɵdir=ad({type:t,selectors:[[``,`routerLink`,``]],hostVars:2,hostBindings:function(r,i){r&1&&Gy(`click`,function(s){return i.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&ky(`href`,i.reactiveHref(),Ww)(`target`,i._target())},inputs:{target:`target`,queryParams:`queryParams`,fragment:`fragment`,queryParamsHandling:`queryParamsHandling`,state:`state`,info:`info`,relativeTo:`relativeTo`,preserveFragment:[2,`preserveFragment`,`preserveFragment`,pN],skipLocationChange:[2,`skipLocationChange`,`skipLocationChange`,pN],replaceUrl:[2,`replaceUrl`,`replaceUrl`,pN],browserUrl:[1,`browserUrl`],routerLink:`routerLink`},features:[rl]})}return t})();var No=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new It$1;link=g$2(Dt,{optional:!0});constructor(e,r,i,o){this.router=e,this.element=r,this.renderer=i,this.cdr=o,this.routerEventsSubscription=e.events.subscribe(s=>{s instanceof x$2&&this.update()})}ngAfterContentInit(){$r(this.links.changes,$r(null)).pipe(Gr()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=nt$1(e).pipe(Gr()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){if(e==null){this.classes=[];return}let r=Array.isArray(e)?e:e.split(` `);this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||this.routerLinkActiveOptions===null&&!this._isActive||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,`aria-current`,this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,`aria-current`),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=this.routerLinkActiveOptions;if(r===null)return()=>!1;let i;return r===void 0?i=l$1({},ve):Do(r)?i=r:r.exact??!1?i=l$1({},dr):i=l$1({},ve),o=>{let s=o.urlTree;return s?ie$3(hr(s,e,i)):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static ɵfac=function(r){return new(r||t)(Gn$1(ue),Gn$1(Hn$1),Gn$1(Ao$1),Gn$1(oD))};static ɵdir=ad({type:t,selectors:[[``,`routerLinkActive`,``]],contentQueries:function(r,i,o){if(r&1&&qy(o,Dt,5),r&2){let s;XS(s=JS())&&(i.links=s)}},inputs:{routerLinkActiveOptions:`routerLinkActiveOptions`,ariaCurrentWhenActive:`ariaCurrentWhenActive`,routerLinkActive:`routerLinkActive`},outputs:{isActiveChange:`isActiveChange`},exportAs:[`routerLinkActive`],features:[rl]})}return t})();function Do(t){let n=t;return!!(n.paths||n.matrixParams||n.queryParams||n.fragment)}var Zn=new E$4(``);var _o=(()=>{class t{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=pe$2;restoredId=0;store={};isHydrating=g$2(Fo,{optional:!0})??!1;urlSerializer=g$2(ce$2);zone=g$2(ue$1);viewportScroller=g$2(RU);transitions=g$2(Cr);constructor(e){this.options=e,this.options.scrollPositionRestoration||=`disabled`,this.options.anchorScrolling||=`disabled`,this.isHydrating&&g$2(Ve$1).whenStable().then(()=>{this.isHydrating=!1})}init(){this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.setHistoryScrollRestoration(`manual`),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof J$3?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof x$2?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof H$2&&e.code===me$1.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof ye$1)||e.scrollBehavior===`manual`)return;let r={behavior:`instant`};e.position?this.options.scrollPositionRestoration===`top`?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration===`enabled`&&this.viewportScroller.scrollToPosition(e.position,r):e.anchor&&this.options.anchorScrolling===`enabled`?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,r){if(this.isHydrating)return;let i=ie$3(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(async()=>{await new Promise(o=>{setTimeout(o),typeof requestAnimationFrame<`u`&&requestAnimationFrame(o)}),this.zone.run(()=>{this.transitions.events.next(new ye$1(e,this.lastSource===`popstate`?this.store[this.restoredId]:null,r,i))})})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static ɵfac=function(r){tb()};static ɵprov=A$2({token:t,factory:t.ɵfac})}return t})();function Uo(t,...n){return at$2([{provide:Ve,multi:!0,useValue:t},{provide:G$2,useFactory:Oo},{provide:kt$1,multi:!0,useFactory:Lo},n.map(e=>e.ɵproviders)])}function Oo(){return g$2(ue).routerState.root}function br(t,n){return{ɵkind:t,ɵproviders:n}}function Po(t={}){return br(4,[{provide:Zn,useFactory:()=>new _o(t)}])}function Lo(){let t=g$2(ce$3);return n=>{let e=t.get(Ve$1);if(n!==e.components[0])return;let r=t.get(ue),i=t.get(jo);t.get(xo)===1&&r.initialNavigation(),t.get(ko,null,{optional:!0})?.setUpPreloading(),t.get(Zn,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var jo=new E$4(``,{factory:()=>new we$2});var xo=new E$4(``,{factory:()=>1});var ko=new E$4(``);function $o(t){return br(7,[{provide:Sr,useValue:t}])}function zo(t={}){return br(8,[{provide:He,useFactory:()=>new _n(t,g$2(yr,{optional:!0}))}])}var Ne=(t,i,n)=>{if(!Number.isSafeInteger(t))throw new RangeError(`money.invalid_minor_units`);let a=new Intl.NumberFormat(i,{style:`currency`,currency:n}),s=a.resolvedOptions().maximumFractionDigits;if(s===void 0)throw new RangeError(`money.currency_precision_missing`);let de=BigInt(Math.abs(t)),ue=10n**BigInt(s),pe=`${t<0?`-`:``}${de/ue}`,De=s===0?pe:`${pe}.${String(de%ue).padStart(s,`0`)}`;return a.format(De)};var y$1={fr:{"notice.dismiss":`Fermer le message`,"shell.contact":`Contact`,"shell.contactEmail":`contact@froment.software`,"shell.nowLive":`NOW LIVE!`,"shell.underConstruction":`UNDER CONSTRUCTION`,"shell.environment.development":`DEVELOPMENT`,"shell.environment.developmentName":`Environnement de développement`,"shell.environment.staging":`STAGING`,"shell.environment.stagingName":`Environnement de préproduction`,"shell.construction.kicker":`EN CONSTRUCTION`,"shell.construction.title":`Ouverture prochaine`,"shell.construction.description":`Froment Software prend forme. Le site complet sera bientôt disponible.`,"about.faq.label":`FAQ`,"backOffice.billing.summary":`Résumé`,"businessCard.defaultName":`Prénom Nom`,"businessCard.defaultRole":`Ingénieur logiciel`,"businessCard.title":`Carte de visite`,"businessCard.print":`Imprimer ou exporter en PDF`,"businessCard.preview":`Aperçu recto-verso de la carte de visite`,"businessCard.front":`Recto`,"businessCard.backSide":`Verso`,"businessCard.edit":`Personnaliser la carte`,"businessCard.editIntro":`Les modifications apparaissent directement dans l’aperçu.`,"businessCard.name":`Nom`,"businessCard.role":`Poste`,"businessCard.email":`Adresse e-mail`,"businessCard.website":`Site web`,"businessCard.brand":`Nom de marque au verso`,"businessCard.versionName":`Nom de la version`,"businessCard.save":`Enregistrer cette version`,"businessCard.contentInvalid":`Renseignez tous les champs avec une adresse e-mail valide.`,"businessCard.versionInvalid":`Renseignez le nom de la version.`,"businessCard.versions":`Versions locales`,"businessCard.versionsIntro":`Ces versions restent uniquement dans ce navigateur.`,"businessCard.delete":`Supprimer`,"businessCard.deleteLabel":`Supprimer {name}`,"businessCard.empty":`Aucune version enregistrée.`,"businessCard.nameRequired":`Le nom est requis.`,"businessCard.roleRequired":`Le poste est requis.`,"businessCard.emailRequired":`L’adresse e-mail est requise.`,"businessCard.emailInvalid":`L’adresse e-mail est invalide.`,"businessCard.websiteRequired":`Le site web est requis.`,"businessCard.brandRequired":`Le nom de marque est requis.`,"businessCard.versionRequired":`Le nom de la version est requis.`,"businessCard.saved":`Version « {name} » enregistrée dans ce navigateur.`,"businessCard.restored":`Version « {name} » restaurée.`,"businessCard.deleted":`Version « {name} » supprimée.`,"businessCard.storageError":`L’enregistrement local a échoué.`,"design.demo.variant":`Variante`,"design.demo.normal":`Normale`,"design.demo.hover":`Survol`,"design.demo.active":`Active`,"design.demo.readonly":`Lecture seule`,"design.demo.readonlyValue":`Readonly`,"design.demo.disabled":`Désactivée`,"design.demo.loading":`Chargement`,"design.demo.action":`Action`,"design.demo.iconButtons":`Boutons icône seule`,"design.demo.button":`Bouton`,"design.demo.link":`Lien`,"design.demo.icons":`Icônes`,"design.demo.render":`Rendu`,"design.demo.readonlyHint":`Cette valeur est immuable.`,"design.demo.invalid":`Invalide`,"design.demo.invalidEmail":`Saisissez une adresse électronique valide.`,"design.demo.disabledSelect":`Sélection désactivée`,"design.demo.unavailable":`Indisponible`,"design.demo.businessStatuses":`Statuts métier`,"design.demo.loadError":`Le chargement a échoué.`,"design.demo.retry":`Réessayer`,"design.demo.documentUnavailable":`Document indisponible`,"design.demo.copied":`Copié`,"design.demo.desktop":`Desktop`,"design.demo.lists":`Listes et définitions`,"design.demo.audit":`Audit logiciel`,"design.demo.tabs":`Exemple d’onglets`,"design.demo.panel":`Panneau`,"design.demo.documents":`DOCUMENTS`,"design.demo.revisions":`Révisions`,"design.demo.newRevision":`Nouvelle révision`,"design.demo.backQuotes":`← Retour aux devis`,"design.demo.editQuote":`Modifier le devis`,"design.demo.quotes":`Devis`,"design.demo.newQuote":`Nouveau devis`,"design.demo.backOfficeAccess":`Accès au back-office`,"design.demo.client":`Client Exemple`,"design.demo.save":`Enregistrer`,"design.demo.cancel":`Annuler`,"design.demo.delete":`Supprimer`,"design.demo.tabProposal":`Proposition détaillée`,"design.demo.tabDocument":`Document PDF téléchargeable`,"design.demo.tabAcceptance":`Acceptation et signature`,"design.demo.secureQuote":`DEVIS SÉCURISÉ`,"design.demo.auditTitle":`Audit et plan de rénovation`,"design.demo.parties":`Froment Software → Client Exemple`,"design.demo.reference":`Référence`,"design.demo.expiration":`Expiration`,"design.demo.orderConfirmed":`Commande confirmée`,"design.demo.orderConfirmedEyebrow":`COMMANDE CONFIRMÉE`,"design.demo.order":`Commande`,"design.demo.state":`État`,"design.demo.confirmed":`Confirmée`,"design.demo.line":`Ligne 1`,"design.demo.unitPrice":`Prix unitaire`,"design.demo.acceptance":`ACCEPTATION`,"design.demo.signQuote":`Signer le devis`,"design.demo.signIntro":`Confirmez votre identité et votre accord.`,"design.demo.fullName":`Nom complet`,"design.demo.exampleName":`Camille Exemple`,"design.demo.consent":`J’accepte ce devis.`,"design.demo.sign":`Signer et commander`,"design.demo.accepted":`Le devis est accepté`,"design.demo.acceptedDetail":`La signature et la commande sont enregistrées.`,"design.demo.version2":`Version 2`,"design.demo.version1":`Version 1`,"design.demo.date2":`21 août 2026`,"design.demo.date1":`20 août 2026`,"design.demo.documentLoading":`Chargement du document PDF…`,"design.demo.secureLink":`Lien sécurisé`,"design.demo.accessId":`Identifiant d’accès`,"blog.launch.title":`Froment Software arrive sur le marché`,"blog.launch.description":`Présentation de Froment Software, de ses missions et de sa méthode fondée sur des changements mesurables.`,"blog.launch.topic.development":`développement logiciel`,"blog.launch.topic.takeover":`reprise d’applications`,"blog.launch.topic.ci":`CI/CD`,"blog.launch.topic.nixos":`NixOS`,"blog.launch.topic.infrastructure":`infrastructure as code`,"blog.architecture.title":`De l’API au PDF : l’architecture de Froment Software`,"blog.architecture.description":`Une visite du monorepo, des contrats Effect, du modèle SQLite et de la chaîne documentaire vérifiable.`,"blog.security.title":`Sessions, jetons et audit : la sécurité de Froment Software`,"blog.security.description":`Le parcours complet d’une identité, de la connexion PASETO à la corrélation des événements d’audit.`,"blog.operations.title":`De Nix à Grafana : exploiter Froment Software en production`,"blog.operations.description":`La construction reproductible, la résolution des secrets et le trajet des journaux et traces en production.`,"blog.deployment.title":`Du commit à Nomad : une promotion vérifiable vers la production`,"blog.deployment.description":`Une chaîne de déploiement fondée sur Nix, les digests OCI, Tailscale, Nomad et des preuves de provenance.`,"blog.topic.effect":`Effect`,"blog.topic.sqlite":`SQLite`,"blog.topic.documents":`documents`,"blog.topic.security":`sécurité`,"blog.topic.authentication":`authentification`,"blog.topic.audit":`audit`,"blog.topic.nix":`Nix`,"blog.topic.secrets":`secrets`,"blog.topic.observability":`observabilité`,"blog.topic.nomad":`Nomad`,"blog.topic.supplyChain":`chaîne logicielle`,"blog.feed":`Flux Atom`,"metadata.author":`Sacha Froment`,"metadata.publisher":`Froment Software`},en:{"notice.dismiss":`Dismiss message`,"shell.contact":`Contact`,"shell.contactEmail":`contact@froment.software`,"shell.nowLive":`NOW LIVE!`,"shell.underConstruction":`UNDER CONSTRUCTION`,"shell.environment.development":`DEVELOPMENT`,"shell.environment.developmentName":`Development environment`,"shell.environment.staging":`STAGING`,"shell.environment.stagingName":`Staging environment`,"shell.construction.kicker":`UNDER CONSTRUCTION`,"shell.construction.title":`Opening soon`,"shell.construction.description":`Froment Software is taking shape. The complete site will be available soon.`,"about.faq.label":`FAQ`,"backOffice.billing.summary":`Summary`,"businessCard.defaultName":`First Last`,"businessCard.defaultRole":`Software engineer`,"businessCard.title":`Business card`,"businessCard.print":`Print or export as PDF`,"businessCard.preview":`Business card front and back preview`,"businessCard.front":`Front`,"businessCard.backSide":`Back`,"businessCard.edit":`Customize the card`,"businessCard.editIntro":`Changes appear directly in the preview.`,"businessCard.name":`Name`,"businessCard.role":`Role`,"businessCard.email":`Email address`,"businessCard.website":`Website`,"businessCard.brand":`Brand name on the back`,"businessCard.versionName":`Version name`,"businessCard.save":`Save this version`,"businessCard.contentInvalid":`Complete all fields with a valid email address.`,"businessCard.versionInvalid":`Enter the version name.`,"businessCard.versions":`Local versions`,"businessCard.versionsIntro":`These versions remain only in this browser.`,"businessCard.delete":`Delete`,"businessCard.deleteLabel":`Delete {name}`,"businessCard.empty":`No saved versions.`,"businessCard.nameRequired":`Name is required.`,"businessCard.roleRequired":`Role is required.`,"businessCard.emailRequired":`Email is required.`,"businessCard.emailInvalid":`Email is invalid.`,"businessCard.websiteRequired":`Website is required.`,"businessCard.brandRequired":`Brand name is required.`,"businessCard.versionRequired":`Version name is required.`,"businessCard.saved":`Version “{name}” saved in this browser.`,"businessCard.restored":`Version “{name}” restored.`,"businessCard.deleted":`Version “{name}” deleted.`,"businessCard.storageError":`Local storage failed.`,"design.demo.variant":`Variant`,"design.demo.normal":`Normal`,"design.demo.hover":`Hover`,"design.demo.active":`Active`,"design.demo.readonly":`Read only`,"design.demo.readonlyValue":`Readonly`,"design.demo.disabled":`Disabled`,"design.demo.loading":`Loading`,"design.demo.action":`Action`,"design.demo.iconButtons":`Icon-only buttons`,"design.demo.button":`Button`,"design.demo.link":`Link`,"design.demo.icons":`Icons`,"design.demo.render":`Rendering`,"design.demo.readonlyHint":`This value is immutable.`,"design.demo.invalid":`Invalid`,"design.demo.invalidEmail":`Enter a valid email address.`,"design.demo.disabledSelect":`Disabled selection`,"design.demo.unavailable":`Unavailable`,"design.demo.businessStatuses":`Business statuses`,"design.demo.loadError":`Loading failed.`,"design.demo.retry":`Retry`,"design.demo.documentUnavailable":`Document unavailable`,"design.demo.copied":`Copied`,"design.demo.desktop":`Desktop`,"design.demo.lists":`Lists and definitions`,"design.demo.audit":`Software audit`,"design.demo.tabs":`Tab example`,"design.demo.panel":`Panel`,"design.demo.documents":`DOCUMENTS`,"design.demo.revisions":`Revisions`,"design.demo.newRevision":`New revision`,"design.demo.backQuotes":`← Back to quotes`,"design.demo.editQuote":`Edit quote`,"design.demo.quotes":`Quotes`,"design.demo.newQuote":`New quote`,"design.demo.backOfficeAccess":`Back-office access`,"design.demo.client":`Example Client`,"design.demo.save":`Save`,"design.demo.cancel":`Cancel`,"design.demo.delete":`Delete`,"design.demo.tabProposal":`Detailed proposal`,"design.demo.tabDocument":`Downloadable PDF document`,"design.demo.tabAcceptance":`Acceptance and signature`,"design.demo.secureQuote":`SECURE QUOTE`,"design.demo.auditTitle":`Audit and renovation plan`,"design.demo.parties":`Froment Software → Example Client`,"design.demo.reference":`Reference`,"design.demo.expiration":`Expiration`,"design.demo.orderConfirmed":`Order confirmed`,"design.demo.orderConfirmedEyebrow":`ORDER CONFIRMED`,"design.demo.order":`Order`,"design.demo.state":`Status`,"design.demo.confirmed":`Confirmed`,"design.demo.line":`Line 1`,"design.demo.unitPrice":`Unit price`,"design.demo.acceptance":`ACCEPTANCE`,"design.demo.signQuote":`Sign the quote`,"design.demo.signIntro":`Confirm your identity and consent.`,"design.demo.fullName":`Full name`,"design.demo.exampleName":`Example Client`,"design.demo.consent":`I accept this quote.`,"design.demo.sign":`Sign and order`,"design.demo.accepted":`The quote is accepted`,"design.demo.acceptedDetail":`The signature and order are recorded.`,"design.demo.version2":`Version 2`,"design.demo.version1":`Version 1`,"design.demo.date2":`August 21, 2026`,"design.demo.date1":`August 20, 2026`,"design.demo.documentLoading":`Loading the PDF document…`,"design.demo.secureLink":`Secure link`,"design.demo.accessId":`Access identifier`,"blog.launch.title":`Froment Software enters the market`,"blog.launch.description":`Introducing Froment Software, its services and its method based on measurable changes.`,"blog.launch.topic.development":`software development`,"blog.launch.topic.takeover":`application takeover`,"blog.launch.topic.ci":`CI/CD`,"blog.launch.topic.nixos":`NixOS`,"blog.launch.topic.infrastructure":`infrastructure as code`,"blog.architecture.title":`From API to PDF: the Froment Software architecture`,"blog.architecture.description":`A tour of the monorepo, Effect contracts, SQLite model, and verifiable document pipeline.`,"blog.security.title":`Sessions, tokens, and audit: Froment Software security`,"blog.security.description":`The complete identity path, from PASETO login to correlated audit events.`,"blog.operations.title":`From Nix to Grafana: operating Froment Software in production`,"blog.operations.description":`Reproducible builds, secret resolution, and the path of production logs and traces.`,"blog.deployment.title":`From commit to Nomad: verifiable promotion to production`,"blog.deployment.description":`A deployment pipeline based on Nix, OCI digests, Tailscale, Nomad, and provenance records.`,"blog.topic.effect":`Effect`,"blog.topic.sqlite":`SQLite`,"blog.topic.documents":`documents`,"blog.topic.security":`security`,"blog.topic.authentication":`authentication`,"blog.topic.audit":`audit`,"blog.topic.nix":`Nix`,"blog.topic.secrets":`secrets`,"blog.topic.observability":`observability`,"blog.topic.nomad":`Nomad`,"blog.topic.supplyChain":`software supply chain`,"blog.feed":`Atom feed`,"metadata.author":`Sacha Froment`,"metadata.publisher":`Froment Software`}};var C$1={fr:{"connections.title":`Connexions aux services`,"connections.intro":`Raccordez les prestataires, vérifiez leurs accès et suivez les opérations sans modifier vos documents existants.`,"connections.safety":`Les opérations commerciales et les relances restent simulées. Seul le test Resend ci-dessous peut envoyer un vrai courriel.`,"connections.credentialsHint":`Une clé présente ne confirme pas sa validité. Les clés restent sur le serveur, dans le profil SOPS utilisé au démarrage.`,"connections.provider":`Prestataire`,"connections.usage":`Utilisation`,"connections.credentials":`Identifiants`,"connections.mode":`Mode actuel`,"connections.action":`Parcours`,"connections.present":`Présents sur le serveur`,"connections.missing":`À renseigner dans SOPS`,"connections.restricted":`Test à destinataire limité`,"connections.notConnected":`Pas encore raccordé`,"connections.resend":`Resend`,"connections.stripe":`Stripe`,"connections.signwell":`SignWell`,"connections.superpdp":`SUPER PDP`,"connections.email":`Courriels transactionnels`,"connections.payment":`Paiements par carte — mode test`,"connections.signature":`Signatures électroniques — mode test`,"connections.electronicInvoice":`Factures électroniques — bac à sable`,"connections.openResend":`Vérifier Resend`,"connections.pending":`Connecteur en préparation`,"connections.reload":`Actualiser les accès`,"connections.loading":`Chargement des connexions…`,"connections.error":`Impossible de charger la configuration des connexions. Réessayez le chargement.`,"connections.simulations":`Ouvrir les simulations et leur historique`,"connections.back":`Retour aux connexions`,"connections.breadcrumb":`Navigation des services`,"connections.bank":`La banque reste indépendante : les imports CSV et les rapprochements restent disponibles.`,"emailTest.title":`Resend — vérifier l’envoi`,"emailTest.intro":`Préparez un message de test, vérifiez son aperçu, puis suivez sa prise en charge et sa remise.`,"emailTest.safety":`Ce test envoie un vrai courriel, uniquement à sacha@sacha.house. Il n’active ni les envois clients ni les relances.`,"emailTest.routing":`1. Vérifier les adresses`,"emailTest.from":`Expéditeur`,"emailTest.replyTo":`Réponses vers`,"emailTest.recipient":`Destinataire autorisé`,"emailTest.routingHint":`Ces adresses sont imposées par le serveur. Aucun destinataire en copie ni aucune pièce jointe ne sont ajoutés.`,"emailTest.compose":`2. Préparer le message`,"emailTest.subject":`Objet`,"emailTest.subjectHint":`160 caractères maximum. Le serveur ajoute « [Test] » au début de l’objet.`,"emailTest.body":`Message`,"emailTest.bodyHint":`Texte brut, 20 000 caractères maximum. Les sauts de ligne sont conservés.`,"emailTest.subjectInvalid":`Saisissez un objet de 1 à 160 caractères, sans saut de ligne.`,"emailTest.bodyInvalid":`Saisissez un message de 1 à 20 000 caractères.`,"emailTest.preview":`Aperçu du courriel`,"emailTest.send":`Envoyer le test`,"emailTest.saving":`Enregistrer le test…`,"emailTest.confirm":`Envoyer ce vrai courriel de test à sacha@sacha.house ? Les autres envois resteront simulés.`,"emailTest.unsaved":`Quitter ce message de test sans enregistrer vos modifications ?`,"emailTest.defaultSubject":`Vérification de la connexion Resend`,"emailTest.defaultBody":`Bonjour Sacha,
|
|
2
2
|
|
|
3
3
|
Ce message v\xE9rifie l\u2019envoi depuis froment.software avec Resend.
|
|
4
4
|
Les envois clients et les relances restent simul\xE9s.
|
|
@@ -86,4 +86,4 @@ We would like to discuss the following project:
|
|
|
86
86
|
- Desired deadline:
|
|
87
87
|
- Approximate budget:
|
|
88
88
|
|
|
89
|
-
Thank you.`,"services.offer.renovation.title":`Audit and renovation`,"services.offer.renovation.desc":`We assess your projects, environment, risks and gaps. We then propose fixes, upgrades, automation and gradual refactoring.`,"services.offer.renovation.cta":`View audit and renovation details`,"services.offer.development.title":`All-inclusive development`,"services.offer.development.desc":`We handle the design, implementation, testing and deployment of a business application or internal tool.`,"services.offer.development.cta":`View development details`,"serviceDetail.back":`Back to services`,"serviceDetail.renovation.title":`Audit and renovation`,"serviceDetail.renovation.lead":`Understand the real problems before investing, then modernize existing software without a systematic rewrite.`,"serviceDetail.renovation.scope.title":`What we assess and improve`,"serviceDetail.renovation.scope.projects.title":`Projects and architecture`,"serviceDetail.renovation.scope.projects.desc":`Code structure, dependencies, data flows, weak points and capacity for further change.`,"serviceDetail.renovation.scope.delivery.title":`Delivery pipeline`,"serviceDetail.renovation.scope.delivery.desc":`Builds, tests, continuous integration, deployments and lead time from a change to production.`,"serviceDetail.renovation.scope.quality.title":`CVEs, vulnerabilities and secrets`,"serviceDetail.renovation.scope.quality.desc":`CVE and vulnerability detection with static analysis tools suited to each language. Detection of secrets in source code and Git history.`,"serviceDetail.renovation.scope.quality.staticAnalysis":`Static analysis tools`,"serviceDetail.renovation.scope.quality.trufflehog":`TruffleHog`,"serviceDetail.renovation.scope.environment.title":`Working environment`,"serviceDetail.renovation.scope.environment.desc":`Local setup, secrets, documentation, tools and problems faced by the existing team.`,"serviceDetail.renovation.deliverables.title":`What you receive`,"serviceDetail.renovation.deliverables.audit":`A documented, factual assessment ranked by risk level.`,"serviceDetail.renovation.deliverables.plan":`A prioritized improvement plan with costs, dependencies and expected results.`,"serviceDetail.renovation.deliverables.work":`The fixes and renovation agreed in the quote, validated in your environment.`,"serviceDetail.renovation.deliverables.handover":`The code, tests, documentation and instructions required for subsequent work.`,"serviceDetail.renovation.fit.title":`This service fits if…`,"serviceDetail.renovation.fit.desc":`Your software remains useful, but it is slow to change, hard to deploy or risky to maintain.`,"serviceDetail.development.title":`All-inclusive development`,"serviceDetail.development.lead":`One contact to turn a business need into tested, deployed and documented software.`,"serviceDetail.development.scope.title":`End-to-end delivery`,"serviceDetail.development.scope.design.title":`Design`,"serviceDetail.development.scope.design.desc":`Clarification of uses, journeys, data, constraints and approval criteria.`,"serviceDetail.development.scope.build.title":`Implementation`,"serviceDetail.development.scope.build.desc":`Development of the interface, business rules, integrations and required automation.`,"serviceDetail.development.scope.tests.title":`Testing`,"serviceDetail.development.scope.tests.desc":`Automated tests and functional checks focused on product uses and risks.`,"serviceDetail.development.scope.deploy.title":`Deployment`,"serviceDetail.development.scope.deploy.desc":`Reproducible rollout, environment configuration and preparation for operations.`,"serviceDetail.development.deliverables.title":`What is included`,"serviceDetail.development.deliverables.product":`A web application, desktop application or internal tool that meets the approved scope.`,"serviceDetail.development.deliverables.source":`The source code and dependencies required to build the product.`,"serviceDetail.development.deliverables.tests":`Automated tests and the criteria used to approve delivery.`,"serviceDetail.development.deliverables.operations":`Documentation and instructions for deployment, use and maintenance.`,"serviceDetail.development.fit.title":`This service fits if…`,"serviceDetail.development.fit.desc":`You have a precise business need and want to delegate delivery through production rollout.`,"services.examples.title":`Concrete examples`,"services.examples.upgrades.title":`Version upgrades`,"services.examples.upgrades.desc":`Upgrade dependencies and libraries, resolve incompatibilities, then validate behaviour through tests.`,"services.examples.build.title":`Build pipeline`,"services.examples.build.before":`Make builds reproducible with`,"services.examples.build.after":`: declared dependencies, identical environments and shared caches.`,"services.examples.ci.title":`Continuous integration`,"services.examples.ci.desc":`Take over an existing CI pipeline, remove unnecessary work, parallelize stages and cache reusable results.`,"services.examples.tests.title":`Automated tests`,"services.examples.tests.desc":`Add unit, integration and architecture tests to stabilize existing software and automatically verify application behaviour.`,"services.examples.environments.title":`Development environments`,"services.examples.environments.before":`Declare and automate reproducible development environments with`,"services.examples.secrets.title":`Secret management`,"services.examples.secrets.before":`Centralize secrets in an on-premises vault, a cloud service or a lightweight solution:`,"services.examples.secrets.through":`Automate their injection into applications with`,"services.examples.ai.title":`AI agents`,"services.examples.ai.before":`Integrate specialized agents into design discussions: backlog preparation, meeting analysis and live prototyping with`,"services.examples.ai.usage":`Track usage, models and costs with`,"services.examples.metrics.title":`Technical measurements`,"services.examples.metrics.before":`Measure response, test, build, CI and deployment times. Publish timestamped indicators to`,"services.examples.metrics.after":`to track measured values instead of estimates.`,"services.examples.infrastructure.title":`Infrastructure and deployment`,"services.examples.infrastructure.before":`Declare, test and reproduce on-premises or cloud deployments with NixOS, build caching and infrastructure as code through`,"services.examples.or":`or`,"services.process.kicker":`Delivery method`,"services.process.title":`How an engagement works`,"services.process.analysis.title":`Qualify the need`,"services.process.analysis.desc":`We perform a limited initial review to understand the context and prepare the quote. The full audit starts after approval.`,"services.process.quote.title":`Prepare the quote`,"services.process.quote.desc":`We provide a detailed quote. It defines the services, deliverables, schedule and price.`,"services.process.agreement.title":`Approve the scope`,"services.process.agreement.desc":`You accept the proposal. If we then refine an objective or the scope, we submit an updated quote before work starts.`,"services.process.delivery.title":`Deliver the work`,"services.process.delivery.desc":`We deliver the work in close contact with your stakeholders and existing development team.`,"services.process.validation.title":`Approve delivery`,"services.process.validation.desc":`You approve the deliverables against the quote criteria, then pay the remaining balance.`,"services.practical.title":`In practice`,"services.practical.method":`Method`,"services.practical.method.desc":`The quote defines scope, price, deliverables and acceptance criteria.`,"services.practical.schedule":`Schedule`,"services.practical.schedule.desc":`The schedule is defined from the scope, dependencies and expected approvals.`,"services.practical.deliverables":`Deliverables`,"services.practical.deliverables.desc":`Source code, tests, documentation and rollout instructions appropriate to the engagement.`,"services.criteria.title":`Useful information to get started`,"services.criteria.context":`The context and affected users.`,"services.criteria.problem":`The main problem or expected result.`,"services.criteria.deadline":`The known deadline and technical constraints.`,"serviceDetail.contact.title":`Discuss your need`,"clients.title":`Experience`,"clients.sectors.title":`Industry experience`,"clients.cv":`View full CV`,"clients.sector.industry":`Industry`,"clients.sector.insurance":`Insurance`,"clients.sector.services":`Services`,"about.faq.title":`Frequently asked questions`,"about.faq.intro":`Direct answers about how a collaboration works.`,"about.faq.process.q":`How does an engagement work?`,"about.faq.stack.q":`How do you choose technologies?`,"about.faq.remote.q":`Do you work remotely?`,"about.faq.nda.q":`Do you accept confidentiality agreements?`,"about.faq.timeline.q":`How do you set the schedule?`,"about.faq.maintenance.q":`Do you offer maintenance after delivery?`,"about.faq.pricing.q":`How are services billed?`,"about.faq.availability.q":`What is your availability?`,"about.faq.process.a":`An initial discussion identifies the need, constraints and success criteria. The quote then defines scope, deliverables and follow-up terms before development and go-live.`,"about.faq.stack.a":`The choice depends on the product, team and existing system. Technologies used: Angular, SvelteKit, ASP.NET, WPF, Go, Linux and PostgreSQL.`,"about.faq.remote.a":`Yes. Work is mainly remote, with review points agreed for each engagement.`,"about.faq.nda.a":`Yes, after agreement on the obligations, duration and information covered.`,"about.faq.timeline.a":`The schedule depends on scope, dependencies and expected approvals. It is defined in the quote rather than promised before scoping.`,"about.faq.maintenance.a":`Yes. Fixes, upgrades and further changes can be included in the quote or agreed after delivery.`,"about.faq.pricing.a":`Fixed-price when the scope is stable enough. Uncertainty is first isolated in a scoping phase.`,"about.faq.availability.a":`Engagements are scheduled part-time. The start date is confirmed before the quote.`,"not_found.title":`This page does not exist.`,"not_found.lead":`Check the address or return to the home page.`,"not_found.cta":`Back to home`,"not_found.links_label":`Next steps`,"not_found.services":`View services`,"not_found.contact":`Email Froment Software`,"about.contact.title":`Contact`,"about.contact.mail":`Email us`,"about.contact.book":`Book an appointment`,"blog.title":`Blog`,"blog.lead":`Technical notes, experience reports and ideas.`,"blog.topics":`Topics`,"blog.back":`Back to the blog`,"blog.missing":`Article not found`,"legal.kicker":`Site information`,"legal.title":`Legal notice`,"legal.lead":`Essential information about the publishing, hosting and use of froment.software content.`,"legal.updated":`Updated 19 August 2026`,"legal.summary.title":`At a glance`,"legal.summary.content":`froment.software presents Sacha FROMENT’s software-engineering consultancy work and services. Its private area provides accounts for clients and administrators.`,"legal.publisher.title":`Site publisher`,"legal.publisher.content":`froment.software is published and maintained by Sacha FROMENT. Administrative or legal requests can be sent by email.`,"legal.hosting.title":`Hosting`,"legal.hosting.content":`The site is served as a static website and hosted on private infrastructure administered by the publisher. Technical requests relating to hosting can be sent to the same contact.`,"legal.ip.title":`Content and intellectual property`,"legal.ip.content":`Unless stated otherwise, text, graphics and components created for froment.software remain their author’s property. Short quotations with attribution are permitted; any other reuse requires prior agreement.`,"legal.links.title":`External links`,"legal.links.content":`The site links to demonstrations, a booking service and other websites. Their content and practices are the responsibility of their respective publishers.`,"legal.contact.title":`Contact`,"legal.contact.content":`For a question about the site, its content or a legal request:`,"legal.related.title":`Related documents`,"legal.related.content":`You can also read how technical data and the language preference are handled.`,"legal.related.privacy":`Privacy policy`,"legal.related.cookies":`Cookies and local storage`,"privacy.kicker":`Data and browsing`,"privacy.title":`Privacy policy`,"privacy.lead":`What this site processes automatically, what it keeps in your browser and how to ask a question.`,"privacy.updated":`Updated 19 August 2026`,"privacy.summary.title":`Key points`,"privacy.summary.content":`The site has no advertising tool or audience analytics. The server may log technical requests. The browser stores the language and, after sign-in, two strictly necessary cookies.`,"privacy.who.title":`Site operator`,"privacy.who.content":`Sacha FROMENT publishes froment.software and handles requests about data processed by this site.`,"privacy.data.title":`Technical server logs`,"privacy.data.content":`When a page or file is loaded, the server may automatically log request data such as the IP address, date and time, requested path, user agent and response status. This technical logging results from the request sent to the server; it is not presented as consent-based. It may be used for service diagnosis, availability and security.`,"privacy.retention.title":`Log retention`,"privacy.retention.content":`No fixed duration is stated here because it depends on the operating configuration. You may request current information about retention or the handling of a specific request.`,"privacy.storage.title":`Language preference`,"privacy.storage.content":`The site stores the selected language in the browser’s local storage under the key “froment.software.language”, with the value “fr” or “en”. This setting persists until it is changed or cleared in the browser. It is neither a cookie nor a session.`,"privacy.session.title":`Private area`,"privacy.session.content":`After sign-in, the browser temporarily stores an access token in memory. A secure refresh cookie maintains access for up to 30 days. The server restricts this cookie to authentication routes.`,"privacy.external.title":`Email and external services`,"privacy.external.content":`Contact links open your email application; the site itself does not send a message. If you follow a link to another domain, that service applies its own data-handling rules.`,"privacy.rights.title":`Data requests`,"privacy.rights.content":`You may ask what technical data is available, report an error or request deletion when the request can be identified. An IP address, date and time range may be needed to locate a log entry. This is practical information, not legal advice.`,"privacy.contact.title":`Contact`,"privacy.contact.content":`For a privacy question or data request:`,"privacy.related.title":`Related information`,"privacy.related.cookies":`Details about cookies and local storage`,"privacy.related.legal":`Legal notice`,"cookies.kicker":`Browser storage`,"cookies.title":`Cookies and local storage`,"cookies.lead":`The public site only stores the display language. The private area uses two strictly necessary cookies after sign-in.`,"cookies.updated":`Updated 19 August 2026`,"cookies.summary.title":`Current behaviour`,"cookies.summary.content":`The application creates no audience analytics or advertising cookie. The “__Secure-froment-refresh” cookie maintains private-area authentication.`,"cookies.what.title":`Cookies and local storage are different`,"cookies.what.content":`A cookie may be sent to the server automatically with a request. Local storage remains in the browser. froment.software uses local storage for language and cookies only for the private area.`,"cookies.why.title":`Stored setting`,"cookies.why.content":`The key “froment.software.language” contains “fr” or “en”. If no valid value exists, the site selects French when the browser language starts with “fr”, and English otherwise, then stores that choice locally.`,"cookies.control.title":`Change or clear the setting`,"cookies.control.content":`Use the language selector in the header to replace the value. You can also clear site data in your browser settings. The site will continue to work and will detect the language again on the next load.`,"cookies.privacy.title":`Technical data`,"cookies.privacy.content":`Local storage is separate from the technical logs the server may produce when responding to a request.`,"cookies.privacy.link":`Read the privacy policy`,"cookies.contact.title":`Contact`,"cookies.contact.content":`For a question about this setting or how the site works:`})};function ye(t){let i=[],n=0,a=-1;for(let s=0;s<t.length;s+=1)t[s]===`{`?a=s:t[s]===`}`&&(a>=n&&a+1<s&&(a>n&&i.push({kind:`text`,value:t.slice(n,a)}),i.push({kind:`parameter`,name:t.slice(a+1,s)}),n=s+1),a=-1);return n<t.length&&i.push({kind:`text`,value:t.slice(n)}),i}function Ce(t,i){return t.map(n=>n.kind===`text`?n.value:Object.hasOwn(i,n.name)?String(i[n.name]):`{${n.name}}`).join(``)}var xe=[{code:`fr`,labelKey:`lang.fr`},{code:`en`,labelKey:`lang.en`}];function o$3(t,i){return ke[t][i]}var Pe={fr:new Intl.PluralRules(`fr`),en:new Intl.PluralRules(`en`)};var Te=new Map;function bt$1(t,i){return Re(o$3(t,i))}function we(t,i,n){return Oe(o$3(t,i),n)}function Ae(t,i,n){let a=`${i}.one`,s=`${i}.other`;return Ee(t,{one:o$3(t,a),other:o$3(t,s)},n)}function Ee(t,i,n){if(!Number.isSafeInteger(n.count)||n.count<0)throw new RangeError(`Le compteur de traduction doit être un entier sûr positif ou nul.`);return Oe(i[Pe[t].select(n.count)===`one`?`one`:`other`],n)}function Oe(t,i){return Ce(Re(t),i)}function Re(t){let i=Te.get(t);return i===void 0&&(i=ye(t),Te.set(t,i)),i}var ce$1={fr:{invoiceReceiptList:{summary:`Lister les encaissements enregistrés`,description:`Retourne les encaissements actifs et annulés avec leur facture et leur client. Inclut la date, l’auteur et le motif des corrections. Cette lecture ne crée aucun encaissement. Les paiements de test Stripe sont exclus. La limite est de 10 000 lignes. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},creditNoteList:{summary:`Lister les avoirs émis`,description:`Retourne les avoirs persistés avec leur facture, leur commande et leur client. Les montants proviennent de l’avoir immuable. Cette lecture ne modifie aucun document. La limite est de 10 000 lignes. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},invoiceRefundList:{summary:`Lister les remboursements enregistrés`,description:`Retourne les saisies actives et annulées avec leur facture et leur client. Une saisie locale ne prouve aucun virement bancaire. Cette lecture ne déclenche aucun remboursement. La limite est de 10 000 lignes. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},invoiceHistory:{summary:`Lire l’historique d’une facture`,description:`Retourne les événements persistés de la facture et de ses documents, par date décroissante. Exige aussi audit.read. Aucun événement n’est déduit du statut actuel. Une facture absente produit une réponse 404. La limite est de 10 000 événements, documents compris. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},bankTransactionGet:{summary:`Consulter une opération bancaire`,description:`Retourne une opération importée avec ses affectations et ses montants restants. La lecture par identifiant ne dépend pas de la limite de la liste. Elle ne contacte aucune banque.`},bankImportPreview:{summary:`Valider un relevé avant import`,description:`Valide le compte et toutes les lignes CSV avec le parseur utilisé par l’import. Distingue les opérations nouvelles des opérations déjà présentes. Ne persiste aucune ligne. La confirmation revalide le relevé dans la transaction d’import.`},bankLedgerEntryGet:{summary:`Consulter une écriture bancaire`,description:`Retourne une écriture persistée par identifiant, indépendamment de la période du journal. Inclut la référence de sa source et ses lignes comptables. Ne crée aucune écriture ni contrepassation.`},bankLedgerSourceGet:{summary:`Consulter une source à comptabiliser`,description:`Retourne le contexte d’un débit bancaire ou d’une commission de rapprochement. La comptabilisation reste une action distincte et explicite. Ce journal local ne constitue pas une comptabilité générale.`}},en:{invoiceReceiptList:{summary:`List recorded receipts`,description:`Returns active and cancelled receipts with their invoice and client. Includes the date, actor and reason for corrections. This read creates no receipt. Stripe test payments are excluded. The limit is 10,000 rows. Larger results return 413 with invoice.workspace_limit and no partial result.`},creditNoteList:{summary:`List issued credit notes`,description:`Returns persisted credit notes with their invoice, order and client. Amounts come from the immutable credit note. This read changes no document. The limit is 10,000 rows. Larger results return 413 with invoice.workspace_limit and no partial result.`},invoiceRefundList:{summary:`List recorded refunds`,description:`Returns active and cancelled records with their invoice and client. A local record does not prove a bank transfer. This read initiates no refund. The limit is 10,000 rows. Larger results return 413 with invoice.workspace_limit and no partial result.`},invoiceHistory:{summary:`Read invoice history`,description:`Returns persisted invoice and document events in descending date order. Also requires audit.read. No event is inferred from the current status. A missing invoice returns 404. The limit is 10,000 events, including document events. Larger results return 413 with invoice.workspace_limit and no partial result.`},bankTransactionGet:{summary:`Read a bank transaction`,description:`Returns an imported transaction with its allocations and remaining amounts. Access by identifier does not depend on the list limit. This read contacts no bank.`},bankImportPreview:{summary:`Validate a statement before import`,description:`Validates the account and all CSV rows with the import parser. Separates new transactions from existing transactions. Persists no row. Confirmation validates the statement again within the import transaction.`},bankLedgerEntryGet:{summary:`Read a bank ledger entry`,description:`Returns a persisted entry by identifier, independently of the journal period. Includes its source reference and accounting lines. Creates no entry or reversal.`},bankLedgerSourceGet:{summary:`Read a source to post`,description:`Returns the context of a bank debit or reconciliation fee. Posting remains a separate, explicit action. This local journal is not general accounting.`}}};var qe={providerEmailGet:[`Lire l’état du courriel`,`Read email delivery status`],providerEmailCancel:[`Annuler le courriel`,`Cancel email`],providerEmailEvents:[`Lire les événements du courriel`,`Read email events`],providerEmailVerifyWebhook:[`Vérifier une notification de courriel`,`Verify an email notification`],providerSignatureGet:[`Lire le dossier de signature`,`Read signature request`],providerSignatureCancel:[`Annuler la signature`,`Cancel signature request`],providerSignatureRemind:[`Relancer les signataires`,`Remind signers`],providerSignatureDocument:[`Récupérer le document signé`,`Retrieve signed document`],providerSignatureProof:[`Récupérer la preuve de signature`,`Retrieve signature evidence`],providerSignatureEvents:[`Lire les événements de signature`,`Read signature events`],providerSignatureVerifyWebhook:[`Vérifier une notification de signature`,`Verify a signature notification`],providerPaymentGet:[`Lire le paiement fournisseur`,`Read provider payment`],providerPaymentCancel:[`Annuler le paiement fournisseur`,`Cancel provider payment`],providerPaymentCapture:[`Capturer le paiement autorisé`,`Capture an authorized payment`],providerPaymentRefund:[`Demander un remboursement`,`Request a refund`],providerPaymentGetRefund:[`Lire le remboursement`,`Read refund status`],providerPaymentEvents:[`Lire les événements de paiement`,`Read payment events`],providerPaymentVerifyWebhook:[`Vérifier une notification de paiement`,`Verify a payment notification`],providerBankConnect:[`Préparer une connexion bancaire`,`Prepare a bank connection`],providerBankConnection:[`Lire la connexion bancaire`,`Read bank connection`],providerBankRevoke:[`Révoquer la connexion bancaire`,`Revoke bank connection`],providerBankAccounts:[`Lister les comptes bancaires`,`List bank accounts`],providerBankTransactions:[`Lister les opérations bancaires`,`List bank transactions`],providerBankVerifyWebhook:[`Vérifier une notification bancaire`,`Verify a bank notification`],providerElectronicInvoiceGet:[`Lire le statut de facturation électronique`,`Read electronic invoice status`],providerElectronicInvoiceCancel:[`Annuler la transmission électronique`,`Cancel electronic invoice submission`],providerElectronicInvoiceDownload:[`Récupérer la facture électronique`,`Retrieve electronic invoice`],providerElectronicInvoiceInbox:[`Lister les factures électroniques reçues`,`List received electronic invoices`],providerElectronicInvoiceReport:[`Transmettre un rapport électronique`,`Submit an electronic report`],providerElectronicInvoiceGetReport:[`Lire le statut du rapport`,`Read electronic report status`],providerElectronicInvoiceEvents:[`Lire les événements de facturation électronique`,`Read electronic invoice events`],providerElectronicInvoiceVerifyWebhook:[`Vérifier une notification de facturation électronique`,`Verify an electronic invoice notification`]};var _e="> [!important]\n> Implémentation actuelle : mock sans effet externe. `executed: false` est obligatoire en mode simulation. `preview` contient un exemple, jamais un résultat réel.\n\nChaque appel est indépendant. Aucun statut métier, règlement ou document local ne change. Les fichiers restent indisponibles et les notifications restent non vérifiées. Les routes de vérification ne sont pas des récepteurs publics de webhooks.";var ze="> [!important]\n> Current implementation: mock without external effects. Simulation requires `executed: false`. `preview` contains an example, never an actual result.\n\nEach call is independent. No business status, payment, or local document changes. Files remain unavailable and notifications remain unverified. Verification routes are not public webhook receivers.";var le$2={fr:Object.fromEntries(Object.entries(qe).map(([t,[i]])=>[t,{summary:i,description:_e}])),en:Object.fromEntries(Object.entries(qe).map(([t,[,i]])=>[t,{summary:i,description:ze}]))};var Se=[`accountingAccountCreate`,`accountingAccountList`,`accountingAccountUpdate`,`accountingBalanceReport`,`accountingCa3Export`,`accountingEntryCreate`,`accountingEntryList`,`accountingEntryPost`,`accountingEntryReverse`,`accountingEvidenceCreate`,`accountingEvidenceDownload`,`accountingEvidenceList`,`accountingFecExport`,`accountingFinancialReport`,`accountingJournalCreate`,`accountingJournalList`,`accountingJournalUpdate`,`accountingLedgerReport`,`accountingLetterableLineList`,`accountingLetteringCreate`,`accountingOpeningCommit`,`accountingOpeningPreview`,`accountingPeriodClose`,`accountingPeriodCreate`,`accountingPeriodFinalClose`,`accountingPeriodList`,`accountingPeriodLock`,`accountingPeriodReopen`,`accountingTaxFilingSettings`,`accountingTaxFilingSettingsUpdate`,`accountingTaxFilingSubmissionList`,`accountingTaxFilingSubmit`,`accountingTaxReport`];var Le=[`demoReset`,`invoiceCreditAllocate`,`invoiceCreditAllocationCancel`,`supplierBankMatch`,`supplierBankMatchList`,`supplierBankPaymentList`,`supplierBankUnmatch`,`supplierCreditCreate`,`supplierInvoiceEvidenceCreate`,`supplierInvoiceEvidenceDownload`,`supplierInvoiceEvidenceList`];var b$1=(t,i,n)=>Object.fromEntries(t.map(a=>[a,{summary:i,description:n}]));c$2.fr.group,m$2.fr.group,l.fr.group,d.fr.group,h$1.fr.group,u$2.fr.group,p$3.fr.group,f$3.fr.group,v$3.fr.group,g$1.fr.group,m$4(l$1(l$1(l$1(l$1(l$1(l$1(l$1(l$1(m$4(l$1(l$1(l$1(l$1(l$1(m$4(l$1(l$1(l$1({},b$1(Se,`Gérer la comptabilité`,`Exécute une opération comptable selon les permissions et les règles de période applicables.`)),b$1(Le,`Gérer la suite de gestion`,`Exécute une opération métier selon les permissions et les contrôles applicables.`)),c$2.fr.operations),{blogFeed:{summary:`Lire le flux Atom du blog`,description:`Retourne les résumés français des publications au format Atom XML. Aucune authentification requise.`}}),ce$1.fr),m$2.fr.operations),f$3.fr.operations),T$3.fr),w$4.fr),{integrationRetryList:{summary:`Lire les reprises automatiques`,description:`Retourne les 100 reprises les plus récentes. Chaque reprise conserve la demande et son mode. Cinq tentatives au maximum après l’appel initial.`}}),v$3.fr.operations),g$1.fr.operations),le$2.fr),l.fr.operations),d.fr.operations),h$1.fr.operations),u$2.fr.operations),p$3.fr.operations),{bankPaymentList:{summary:`Lister les soldes rapprochables des règlements`,description:`Retourne les règlements actifs d’une facture et leurs montants disponibles, après déduction de toutes les affectations actives.`},bankMatchHistory:{summary:`Consulter les rapprochements conservés`,description:`Afficher les 100 derniers rapprochements d’une opération, avec auteurs, dates et motifs de dissociation.`},bankMatchSuggestionList:{summary:`Proposer des rapprochements`,description:`Classe au maximum dix règlements probables. Une confirmation humaine reste obligatoire.`},bankTransactionList:{summary:`Lister les opérations bancaires`,description:`Retourne les 1 000 dernières opérations et leurs rapprochements actifs.`},bankImport:{summary:`Importer un relevé CSV`,description:`Importe atomiquement les lignes et refuse les références réutilisées avec des valeurs différentes.`},bankMatch:{summary:`Rapprocher un encaissement`,description:`Affecte amountCents au règlement et amountCents moins feeCents au crédit bancaire. La commission doit être inférieure au montant affecté. Utilisez une clé UUID v4 stable. Ne crée aucun règlement.`},bankUnmatch:{summary:`Dissocier un rapprochement`,description:`Conserve le rapprochement précédent et son motif de dissociation.`},integrationStatus:{summary:`Lister les modes des adaptateurs`,description:`Indique les services simulés et les prestataires connectés.`},integrationOperationList:{summary:`Consulter les opérations externes`,description:`Retourne les 100 dernières demandes et leurs reçus.`},integrationOperationCreate:{summary:`Soumettre une demande externe`,description:`Enregistre la demande et appelle son adaptateur avec une clé d’idempotence. Une simulation ne réalise aucune opération externe.`},catalogList:{summary:`Lister les prestations`,description:`Liste les prestations actives et archivées.`},catalogCreate:{summary:`Créer une prestation`,description:`Enregistre une description, une quantité, un prix en euros et un taux de TVA.`},catalogUpdate:{summary:`Modifier une prestation`,description:`Modifie ou archive une prestation si sa version correspond à expectedVersion. Les lignes de devis restent inchangées.`},clientList:{summary:`Lister les clients`,description:`Liste les clients actifs et archivés.`},clientGet:{summary:`Obtenir un client`,description:`Renvoie un client par identifiant.`},clientCreate:{summary:`Créer un client`,description:`Crée un client.`},clientUpdate:{summary:`Modifier un client`,description:`Modifie un client actif.`},clientArchive:{summary:`Archiver un client`,description:`Archive un client.`},clientReactivate:{summary:`Réactiver un client`,description:`Réactive un client archivé.`},companySettingsGet:{summary:`Lire la configuration de la société`,description:`Renvoie la juridiction, la devise, l’exercice et les modules activés.`},brandingGet:{summary:`Lire l’identité de l’entreprise`,description:`Renvoie le nom et le logo affichés sur la page de connexion.`},brandingUpdate:{summary:`Modifier l’identité de l’entreprise`,description:`Enregistre le nom et le logo si la version correspond.`},companySettingsUpdate:{summary:`Modifier la configuration de la société`,description:`Modifie la configuration si sa version correspond.`},companyAccountingInitialize:{summary:`Initialiser la comptabilité`,description:`Fixe définitivement la devise fonctionnelle de la comptabilité.`},companyExchangeRateList:{summary:`Lister les taux de change`,description:`Renvoie les taux BCE et les surcharges manuelles enregistrés.`},companyExchangeRateSet:{summary:`Surcharger un taux de change`,description:`Enregistre un taux daté et trace la surcharge manuelle.`},companyExchangeRateImport:{summary:`Importer les taux de la BCE`,description:`Importe les taux récents et conserve les surcharges manuelles.`},supplierList:{summary:`Lister les fournisseurs`,description:`Liste les fournisseurs actifs et archivés.`},supplierGet:{summary:`Obtenir un fournisseur`,description:`Renvoie un fournisseur par identifiant.`},supplierCreate:{summary:`Créer un fournisseur`,description:`Crée un fournisseur avec ses coordonnées et ses paramètres de paiement.`},supplierUpdate:{summary:`Modifier un fournisseur`,description:`Modifie un fournisseur actif si sa version correspond.`},supplierArchive:{summary:`Archiver un fournisseur`,description:`Archive un fournisseur.`},supplierReactivate:{summary:`Réactiver un fournisseur`,description:`Réactive un fournisseur archivé.`},orderList:{summary:`Lister les commandes`,description:`Liste les commandes créées depuis les devis acceptés.`},orderPdfDownload:{summary:`Télécharger le PDF d’une commande`,description:`Télécharge le PDF existant d’une commande.`},quoteList:{summary:`Lister les devis`,description:`Liste les devis et leur dernière révision.`},quoteGet:{summary:`Obtenir un devis`,description:`Renvoie un devis et toutes ses révisions.`},quotePdfDownload:{summary:`Télécharger le PDF d’un devis`,description:`Télécharge le PDF existant d’une révision de devis.`},quoteCreate:{summary:`Créer un devis`,description:`Crée la première révision d’un devis.`},quoteSend:{summary:`Envoyer un devis`,description:`Crée un lien public de consultation pour un devis rendu.`},quoteLinkState:{summary:`Consulter l’état du lien de signature`,description:`Retourne l’identifiant et l’expiration du lien courant, sans révéler son jeton.`},quoteLinkReplace:{summary:`Remplacer un lien de signature`,description:`Révoque le lien attendu et crée un nouveau lien pour le même devis envoyé non signé.`},quoteCancel:{summary:`Annuler un devis`,description:`Annule un devis modifiable.`},quoteRevisionCreate:{summary:`Créer une révision de devis`,description:`Crée une révision d’un devis modifiable.`},invoiceList:{summary:`Lister les factures`,description:`Liste les factures et leur état actuel.`},invoiceGet:{summary:`Obtenir une facture`,description:`Renvoie une facture et ses révisions.`},invoicePdfDownload:{summary:`Télécharger le PDF d’une facture`,description:`Télécharge le PDF existant d’une révision de facture.`},invoiceCreate:{summary:`Créer une facture`,description:`Crée un brouillon de facture depuis une commande.`},invoiceRevisionCreate:{summary:`Créer une révision de facture`,description:`Crée une révision de brouillon de facture.`},invoiceIssue:{summary:`Émettre une facture`,description:`Attribue le numéro légal et émet la facture.`},invoicePaymentCancel:{summary:`Annuler une saisie de règlement`,description:`Conserve le règlement et le motif de correction. Rétablit le solde dû sans modifier le document émis ni effectuer de remboursement.`},invoicePaymentExport:{summary:`Exporter les règlements`,description:`Exporte les règlements reçus entre from et to inclus, dans un CSV UTF-8. Limite de 10 000 lignes ; aucune troncature silencieuse.`},invoicePaymentCreate:{summary:`Enregistrer un règlement`,description:`Enregistre un règlement partiel ou complet. Réutilisez requestId avec les mêmes valeurs après une erreur réseau. Le solde ne peut pas devenir négatif.`},invoiceVoid:{summary:`Annuler une facture`,description:`Annule une facture.`},affairList:{summary:`Lister les affaires`,description:`Liste les affaires indépendantes et leurs documents liés.`},affairGet:{summary:`Consulter une affaire`,description:`Retourne une affaire et les identifiants de ses documents liés.`},affairCreate:{summary:`Créer une affaire`,description:`Crée une affaire numérotée pour un client.`},affairUpdate:{summary:`Modifier une affaire`,description:`Modifie le titre ou le statut avec contrôle de version.`},affairEventList:{summary:`Lister les événements d’une affaire`,description:`Liste les événements commerciaux liés à un client.`},bootstrapCreate:{summary:`Créer le premier administrateur`,description:`Initialise le premier compte administrateur.`},bootstrapStatus:{summary:`Obtenir l’état de l’initialisation`,description:`Indique si la création du premier administrateur reste disponible.`},clientAccessCreate:{summary:`Créer un accès client`,description:`Crée un nouveau compte d’accès pour un client.`},clientAccessList:{summary:`Lister les accès client`,description:`Liste les comptes qui peuvent accéder au portail d’un client.`},clientAccessRevoke:{summary:`Supprimer un accès client`,description:`Supprime un compte du portail et révoque ses sessions.`},clientInvoiceList:{summary:`Lister les factures du client`,description:`Liste les factures accessibles au client connecté.`},clientInvoicePdf:{summary:`Télécharger une facture du client`,description:`Télécharge le PDF d’une facture accessible au client connecté.`},clientOrderList:{summary:`Lister les commandes du client`,description:`Liste les commandes accessibles au client connecté.`},clientOrderPdf:{summary:`Télécharger une commande du client`,description:`Télécharge le PDF d’une commande accessible au client connecté.`},clientQuoteList:{summary:`Lister les devis du client`,description:`Liste les devis accessibles au client connecté.`},clientQuotePdf:{summary:`Télécharger un devis du client`,description:`Télécharge le PDF d’un devis accessible au client connecté.`},health:{summary:`Vérifier la santé du service`,description:`Renvoie l’état de santé du service et de ses dépendances.`},apiTokenCreate:{summary:`Créer un jeton d’API`,description:`Crée un jeton Bearer et révèle son secret une seule fois.`},apiTokenList:{summary:`Lister les jetons d’API`,description:`Liste les jetons actifs, expirés et révoqués.`},apiTokenRevoke:{summary:`Révoquer un jeton d’API`,description:`Révoque définitivement un jeton.`},invoicePdfRender:{summary:`Générer le PDF d’une facture`,description:`Génère et conserve le PDF d’une révision de facture.`},invoicePreview:{summary:`Prévisualiser une facture`,description:`Génère un aperçu sans créer de document conservé.`},issuerSettingsGet:{summary:`Obtenir les paramètres émetteur`,description:`Renvoie les coordonnées utilisées dans les documents.`},issuerSettingsUpdate:{summary:`Modifier les paramètres émetteur`,description:`Modifie les coordonnées utilisées dans les futurs documents.`},login:{summary:`Se connecter`,description:`Authentifie un compte et crée une session.`},logout:{summary:`Se déconnecter`,description:`Révoque la session active.`},refresh:{summary:`Renouveler la session`,description:`Renouvelle la session et ses cookies. La réponse contient le mode d’accès et l’expiration, sans jeton secret.`},passwordChange:{summary:`Changer le mot de passe`,description:`Vérifie le mot de passe actuel et révoque toutes les sessions dans la transaction de changement. Réservé aux sessions navigateur.`},currentAccount:{summary:`Consulter le compte courant`,description:`Retourne le compte authentifié.`},updatePreferences:{summary:`Modifier les préférences du compte`,description:`Modifie le thème, la langue et le mode des messages du compte connecté.`},accountSessionList:{summary:`Lister les sessions actives`,description:`Liste les familles de sessions actives du compte connecté, sans jetons ni empreintes.`},accountSessionRevoke:{summary:`Fermer une autre session`,description:`Révoque une famille de sessions appartenant au compte connecté. La session actuelle utilise la déconnexion habituelle.`},orderPdfRender:{summary:`Générer le PDF d’une commande`,description:`Génère et conserve le PDF d’une commande.`},orderPreview:{summary:`Prévisualiser une commande`,description:`Génère un aperçu sans créer de document conservé.`},publicQuoteGet:{summary:`Consulter un devis public`,description:`Ouvre un devis avec un lien public valide.`},publicQuotePdfDownload:{summary:`Télécharger un devis public`,description:`Télécharge le PDF associé à un lien public valide.`},publicQuoteSign:{summary:`Signer un devis public`,description:`Accepte et signe un devis avec un lien public valide.`},quoteConditionPresetCreate:{summary:`Créer un préréglage de devis`,description:`Crée un jeu de conditions réutilisable.`},quoteConditionPresetDelete:{summary:`Supprimer un préréglage de devis`,description:`Supprime un jeu de conditions réutilisable.`},quoteConditionPresetList:{summary:`Lister les préréglages de devis`,description:`Liste les jeux de conditions réutilisables.`},quoteConditionPresetUpdate:{summary:`Modifier un préréglage de devis`,description:`Modifie un jeu de conditions réutilisable.`},quotePdfRender:{summary:`Générer le PDF d’un devis`,description:`Génère et conserve le PDF d’une révision de devis.`},quotePreview:{summary:`Prévisualiser un devis`,description:`Génère un aperçu sans créer de document conservé.`},version:{summary:`Obtenir la version du service`,description:`Renvoie les métadonnées du déploiement actif.`}}),c$2.en.group,m$2.en.group,l.en.group,d.en.group,h$1.en.group,u$2.en.group,p$3.en.group,f$3.en.group,v$3.en.group,g$1.en.group,m$4(l$1(l$1(l$1(l$1(l$1(l$1(l$1(l$1(m$4(l$1(l$1(l$1(l$1(m$4(l$1(m$4(l$1(l$1(l$1({},b$1(Se,`Manage accounting`,`Runs an accounting operation with the applicable permissions and period rules.`)),b$1(Le,`Manage the business suite`,`Runs a business operation with the applicable permissions and controls.`)),c$2.en.operations),{blogFeed:{summary:`Read the blog Atom feed`,description:`Returns French article summaries as Atom XML. Authentication is not required.`}}),ce$1.en),{catalogList:{summary:`List services`,description:`Lists active and archived services.`}}),m$2.en.operations),f$3.en.operations),T$3.en),w$4.en),{integrationRetryList:{summary:`Read automatic retries`,description:`Returns the latest 100 retry records. Each retry preserves the request and its mode. At most five attempts follow the initial call.`}}),v$3.en.operations),g$1.en.operations),le$2.en),l.en.operations),d.en.operations),h$1.en.operations),u$2.en.operations),p$3.en.operations),{bankPaymentList:{summary:`List available payment balances for reconciliation`,description:`Returns active invoice payments and their available amounts after deducting all active allocations.`},bankMatchHistory:{summary:`Read reconciliation history`,description:`Return the latest 100 matches for a transaction, including actors, dates and reasons for removal.`},bankMatchSuggestionList:{summary:`Suggest reconciliations`,description:`Ranks at most ten probable receipts. Human confirmation remains required.`},bankTransactionList:{summary:`List bank transactions`,description:`Returns the latest 1,000 transactions and their active matches.`},bankImport:{summary:`Import a CSV statement`,description:`Imports rows atomically and rejects reused references with changed values.`},bankMatch:{summary:`Reconcile a receipt`,description:`Allocates amountCents to the payment and amountCents minus feeCents to the bank credit. The fee must be less than the allocated amount. Use a stable UUID v4 key. Creates no payment.`},bankUnmatch:{summary:`Remove a match`,description:`Preserves the previous match and the reason for removing it.`},integrationStatus:{summary:`List adapter modes`,description:`Identifies simulated services and connected providers.`},integrationOperationList:{summary:`Read external operations`,description:`Returns the latest 100 requests and their receipts.`},integrationOperationCreate:{summary:`Submit an external request`,description:`Records the request and calls its adapter with an idempotency key. A simulation performs no external operation.`},catalogCreate:{summary:`Create a service`,description:`Stores a description, quantity, price in euros and VAT rate.`},catalogUpdate:{summary:`Update a service`,description:`Updates or archives a service when its version matches expectedVersion. Quote lines remain unchanged.`},clientList:{summary:`List clients`,description:`Lists active and archived clients.`},clientGet:{summary:`Get a client`,description:`Returns one client by identifier.`},clientCreate:{summary:`Create a client`,description:`Creates a client.`},clientUpdate:{summary:`Update a client`,description:`Updates an active client.`},clientArchive:{summary:`Archive a client`,description:`Archives a client.`},clientReactivate:{summary:`Reactivate a client`,description:`Reactivates an archived client.`},companySettingsGet:{summary:`Get company settings`,description:`Returns jurisdiction, currency, fiscal year, and enabled modules.`},brandingGet:{summary:`Get enterprise branding`,description:`Returns the name and logo shown on the login page.`},brandingUpdate:{summary:`Update enterprise branding`,description:`Saves the name and logo when the version matches.`},companySettingsUpdate:{summary:`Update company settings`,description:`Updates the settings when their version matches.`},companyAccountingInitialize:{summary:`Initialize accounting`,description:`Permanently locks the accounting functional currency.`},companyExchangeRateList:{summary:`List exchange rates`,description:`Returns stored ECB rates and manual overrides.`},companyExchangeRateSet:{summary:`Override an exchange rate`,description:`Stores a dated rate and audits the manual override.`},companyExchangeRateImport:{summary:`Import ECB rates`,description:`Imports recent rates and preserves manual overrides.`},supplierList:{summary:`List suppliers`,description:`Lists active and archived suppliers.`},supplierGet:{summary:`Get a supplier`,description:`Returns one supplier by identifier.`},supplierCreate:{summary:`Create a supplier`,description:`Creates a supplier with contact and payment settings.`},supplierUpdate:{summary:`Update a supplier`,description:`Updates an active supplier when its version matches.`},supplierArchive:{summary:`Archive a supplier`,description:`Archives a supplier.`},supplierReactivate:{summary:`Reactivate a supplier`,description:`Reactivates an archived supplier.`},orderList:{summary:`List orders`,description:`Lists orders created from accepted quotes.`},orderPdfDownload:{summary:`Download an order PDF`,description:`Downloads an existing order PDF.`},quoteList:{summary:`List quotes`,description:`Lists quotes and their latest revision.`},quoteGet:{summary:`Get a quote`,description:`Returns a quote and all of its revisions.`},quotePdfDownload:{summary:`Download a quote PDF`,description:`Downloads an existing quote revision PDF.`},quoteCreate:{summary:`Create a quote`,description:`Creates the first revision of a quote.`},quoteSend:{summary:`Send a quote`,description:`Creates a public consultation link for a rendered quote.`},quoteLinkState:{summary:`Read signature link state`,description:`Returns the current link identifier and expiration without revealing its token.`},quoteLinkReplace:{summary:`Replace a signature link`,description:`Revokes the expected link and creates a new link for the same unsigned sent quote.`},quoteCancel:{summary:`Cancel a quote`,description:`Cancels an editable quote.`},quoteRevisionCreate:{summary:`Create a quote revision`,description:`Creates a new revision of an editable quote.`},invoiceList:{summary:`List invoices`,description:`Lists invoices and their current state.`},invoiceGet:{summary:`Get an invoice`,description:`Returns an invoice and its revisions.`},invoicePdfDownload:{summary:`Download an invoice PDF`,description:`Downloads an existing invoice revision PDF.`},invoiceCreate:{summary:`Create an invoice`,description:`Creates a draft invoice from an order.`},invoiceRevisionCreate:{summary:`Create an invoice revision`,description:`Creates a new draft invoice revision.`},invoiceIssue:{summary:`Issue an invoice`,description:`Assigns the legal invoice number and issues the invoice.`},invoicePaymentExport:{summary:`Export payments`,description:`Exports payments received between from and to inclusive as UTF-8 CSV. Limited to 10,000 rows without silent truncation.`},invoicePaymentCancel:{summary:`Cancel a payment entry`,description:`Keeps the payment and correction reason. Restores the outstanding balance without changing the issued document or making a refund.`},invoicePaymentCreate:{summary:`Record a payment`,description:`Records a partial or full payment. Reuse requestId with unchanged values after a network error. The balance cannot become negative.`},invoiceVoid:{summary:`Void an invoice`,description:`Voids an invoice.`},affairList:{summary:`List affairs`,description:`Lists independent affairs and their linked documents.`},affairGet:{summary:`Read an affair`,description:`Returns an affair and its linked document identifiers.`},affairCreate:{summary:`Create an affair`,description:`Creates a numbered affair for one client.`},affairUpdate:{summary:`Update an affair`,description:`Updates the title or status with version control.`},affairEventList:{summary:`List affair events`,description:`Lists the commercial events related to a client.`},bootstrapCreate:{summary:`Create the first administrator`,description:`Creates the first administrator account.`},bootstrapStatus:{summary:`Get bootstrap status`,description:`Reports whether first administrator creation remains available.`},clientAccessCreate:{summary:`Create client access`,description:`Creates a new access account for a client.`},clientAccessList:{summary:`List client access accounts`,description:`Lists the accounts that can access a client portal.`},clientAccessRevoke:{summary:`Remove client access`,description:`Removes a portal account and revokes its sessions.`},clientInvoiceList:{summary:`List client invoices`,description:`Lists invoices available to the authenticated client.`},clientInvoicePdf:{summary:`Download a client invoice`,description:`Downloads an invoice PDF available to the authenticated client.`},clientOrderList:{summary:`List client orders`,description:`Lists orders available to the authenticated client.`},clientOrderPdf:{summary:`Download a client order`,description:`Downloads an order PDF available to the authenticated client.`},clientQuoteList:{summary:`List client quotes`,description:`Lists quotes available to the authenticated client.`},clientQuotePdf:{summary:`Download a client quote`,description:`Downloads a quote PDF available to the authenticated client.`},health:{summary:`Check service health`,description:`Returns the health of the service and its dependencies.`},apiTokenCreate:{summary:`Create an API token`,description:`Creates a Bearer token and reveals its secret once.`},apiTokenList:{summary:`List API tokens`,description:`Lists active, expired, and revoked tokens.`},apiTokenRevoke:{summary:`Revoke an API token`,description:`Permanently revokes a token.`},invoicePdfRender:{summary:`Render an invoice PDF`,description:`Renders and stores an invoice revision PDF.`},invoicePreview:{summary:`Preview an invoice`,description:`Renders a preview without creating a stored document.`},issuerSettingsGet:{summary:`Get issuer settings`,description:`Returns the issuer details used in documents.`},issuerSettingsUpdate:{summary:`Update issuer settings`,description:`Updates the issuer details used in future documents.`},login:{summary:`Log in`,description:`Authenticates an account and creates a session.`},logout:{summary:`Log out`,description:`Revokes the active session.`},refresh:{summary:`Renew the session`,description:`Renews the session and its cookies. The response contains the access mode and expiration, without a secret token.`},currentAccount:{summary:`Get current account`,description:`Returns the authenticated account.`},updatePreferences:{summary:`Update account preferences`,description:`Updates the theme, language, and message mode for the signed-in account.`},accountSessionList:{summary:`List active sessions`,description:`Lists active session families owned by the signed-in account, without tokens or hashes.`},accountSessionRevoke:{summary:`Close another session`,description:`Revokes a session family owned by the signed-in account. The current session uses the standard sign-out action.`},passwordChange:{summary:`Change password`,description:`Verifies the current password and revokes all sessions in the password change transaction. Requires a browser session.`},orderPdfRender:{summary:`Render an order PDF`,description:`Renders and stores an order PDF.`},orderPreview:{summary:`Preview an order`,description:`Renders a preview without creating a stored document.`},publicQuoteGet:{summary:`Open a public quote`,description:`Opens a quote with a valid public link.`},publicQuotePdfDownload:{summary:`Download a public quote`,description:`Downloads the PDF for a valid public link.`},publicQuoteSign:{summary:`Sign a public quote`,description:`Accepts and signs a quote with a valid public link.`},quoteConditionPresetCreate:{summary:`Create a quote preset`,description:`Creates a reusable set of quote terms.`},quoteConditionPresetDelete:{summary:`Delete a quote preset`,description:`Deletes a reusable set of quote terms.`},quoteConditionPresetList:{summary:`List quote presets`,description:`Lists reusable sets of quote terms.`},quoteConditionPresetUpdate:{summary:`Update a quote preset`,description:`Updates a reusable set of quote terms.`},quotePdfRender:{summary:`Render a quote PDF`,description:`Renders and stores a quote revision PDF.`},quotePreview:{summary:`Preview a quote`,description:`Renders a preview without creating a stored document.`},version:{summary:`Get service version`,description:`Returns the active deployment metadata.`}});function k$2(t){return t===`fr`||t===`en`}var We=`froment.software.language`;var Ie=class t{document=g$2(H$3);language=Ke(`fr`);languages=xe;constructor(){Ol(()=>{let i=this.detectLanguage();this.language.set(i),this.writeStoredLanguage(i)}),ou(()=>{let i=this.language();this.document.documentElement.lang=i,this.document.documentElement.setAttribute(`data-language`,i)})}t(i){return o$3(this.language(),i)}tf(i,n){return we(this.language(),i,n)}plural(i,n){return Ae(this.language(),i,n)}setLanguage(i){k$2(i)&&(this.language.set(i),this.writeStoredLanguage(i))}detectLanguage(){let i=this.document.location.pathname.split(`/`)[1];if(k$2(i))return i;let n=this.readStoredLanguage();return k$2(n)?n:(globalThis.navigator?.language?.toLowerCase()??`fr`).startsWith(`fr`)?`fr`:`en`}readStoredLanguage(){try{return globalThis.localStorage?.getItem(We)??null}catch{return null}}writeStoredLanguage(i){try{globalThis.localStorage?.setItem(We,i)}catch{}}static ɵfac=function(n){return new(n||t)};static ɵprov=A$2({token:t,factory:t.ɵfac,providedIn:`root`})};function m$1(i,t){if(i&1&&Ly(0,`div`,0),i&2)ky(`aria-label`,qS().i18n.t(`shell.loading`))}var v$2=class i{navigation=g$2(ue).currentNavigation;i18n=g$2(Ie);static ɵfac=function(n){return new(n||i)};static ɵcmp=Fb({type:i,selectors:[[`app-navigation-progress`]],decls:1,vars:1,consts:[[`role`,`progressbar`,1,`navigation-bar`]],template:function(n,d){n&1&&OS(0,m$1,1,1,`div`,0),n&2&&kS(d.navigation()?0:-1)},styles:[`[_nghost-%COMP%]{position:absolute;inset-block-start:100%;inset-inline:0;z-index:var(--%NS%z-header);display:block;block-size:3px;pointer-events:none}.navigation-bar[_ngcontent-%COMP%]{position:absolute;inset:0;visibility:hidden;background:var(--%NS%color-link);box-shadow:0 1px 7px color-mix(in oklab,var(--%NS%color-link) 35%,transparent);animation:_ngcontent-%COMP%_navigation-reveal 0s .15s forwards}@media(prefers-reduced-motion:no-preference){.navigation-bar[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_navigation-reveal 0s .15s forwards,_ngcontent-%COMP%_navigation-pulse 1.2s ease-in-out .15s infinite}}@keyframes _ngcontent-%COMP%_navigation-reveal{to{visibility:visible}}@keyframes _ngcontent-%COMP%_navigation-pulse{0%,to{opacity:.4}50%{opacity:1}}@media print{[_nghost-%COMP%]{display:none}}`]})};var a$1={appEnvironment:`development`,sitePhase:`live`,commit:null,githubRepositoryUrl:null,demo:null};var c$1=()=>globalThis.fromentRuntimeConfig??a$1;var u$1=class n{browser=xU(g$2(yo$1));value=this.browser?c$1():void 0;productionConstruction=this.value?.appEnvironment===`production`&&this.value.sitePhase===`construction`;commitUrl(o){let e=this.value?.githubRepositoryUrl;if(!(!e||!o))return`${e.replace(/\/$/,``).replace(/\.git$/,``)}/commit/${o}`}static ɵfac=function(e){return new(e||n)};static ɵprov=A$2({token:n,factory:n.ɵfac,providedIn:`root`})};var N$2=n=>({commit:n});function O$2(n,l){if(n&1&&(Us(0,`a`,5),y_(1),fd()),n&2){let e=qS(3);Fy(`href`,e.commitUrl,Qg),ky(`aria-label`,e.i18n.tf(`version.commitLink`,k_(3,N$2,e.shortCommit))),ZC(),vd(` `,e.shortCommit,` `)}}function k$1(n,l){if(n&1&&(Us(0,`span`,3)(1,`a`,4),y_(2),fd(),OS(3,O$2,2,5,`a`,5),fd()),n&2){let e=qS(),i=qS();Xy(`staging`,i.environment===`staging`),ZC(),ky(`aria-label`,i.i18n.t(e.nameKey)),ZC(),vd(` `,i.i18n.t(e.labelKey),` `),ZC(),kS(i.shortCommit?3:-1)}}function E$1(n,l){if(n&1&&OS(0,k$1,4,5,`span`,2),n&2)kS(qS().placement()!==`hidden`?0:-1)}function w$3(n,l){if(n&1&&(Us(0,`a`,0),y_(1),fd()),n&2){let e=qS();ZC(),nv(e.i18n.t(`nav.version`))}}function K$1(n,l){if(n&1&&(Us(0,`aside`,1)(1,`div`,6)(2,`p`,7),y_(3),fd(),Us(4,`div`)(5,`h2`,8),y_(6),fd(),Us(7,`p`),y_(8),fd()()()()),n&2){let e=qS();ZC(3),nv(e.i18n.t(`shell.construction.kicker`)),ZC(3),nv(e.i18n.t(`shell.construction.title`)),ZC(2),nv(e.i18n.t(`shell.construction.description`))}}var z$1=n=>{if(n===`development`)return{labelKey:`shell.environment.development`,nameKey:`shell.environment.developmentName`};if(n===`staging`)return{labelKey:`shell.environment.staging`,nameKey:`shell.environment.stagingName`}};var M$1=class n{publicPage=NH.required();placement=NH.required();i18n=g$2(Ie);runtime=g$2(u$1);environment=this.runtime.value?.appEnvironment;environmentStatus=z$1(this.environment);shortCommit=this.runtime.value?.commit?.slice(0,8);commitUrl=this.runtime.commitUrl(this.runtime.value?.commit);static ɵfac=function(e){return new(e||n)};static ɵcmp=Fb({type:n,selectors:[[`app-environment-status`]],inputs:{publicPage:[1,`publicPage`],placement:[1,`placement`]},decls:3,vars:2,consts:[[`routerLink`,`/version`,1,`version-link`],[`aria-labelledby`,`construction-title`,1,`construction-notice`,`runtime-construction-only`],[1,`environment-ribbon`,3,`staging`],[1,`environment-ribbon`],[`routerLink`,`/version`,1,`environment-name`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`environment-commit`,3,`href`],[1,`construction-inner`],[1,`construction-kicker`],[`id`,`construction-title`]],template:function(e,i){if(e&1&&(OS(0,E$1,1,1)(1,w$3,2,1,`a`,0),OS(2,K$1,9,3,`aside`,1)),e&2){let x;kS((x=i.environmentStatus)?0:i.placement()===`sidebar`?1:-1,x),ZC(2),kS(i.publicPage()?2:-1)}},dependencies:[Dt],styles:[`[_nghost-%COMP%]{display:contents}.environment-ribbon[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35rem;min-block-size:1.25rem;padding:.1rem .35rem;border:1px solid rgba(83,12,17,.65);border-radius:var(--%NS%radius-xs);background:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 2px,transparent 2px 5px),#a1232aeb;color:#fff;font-family:var(--%NS%font-mono);font-size:.625rem;font-weight:700;letter-spacing:.08em;line-height:1.4;text-align:center;text-decoration:none;text-transform:uppercase}.environment-ribbon.staging[_ngcontent-%COMP%]{border-color:#5b3c03ad;background:repeating-linear-gradient(135deg,rgba(255,255,255,.09) 0 2px,transparent 2px 5px),#ab710feb}.environment-ribbon[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:inherit;text-decoration:none}.environment-ribbon[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.environment-commit[_ngcontent-%COMP%]{font-size:.5625rem;font-weight:400;letter-spacing:.02em;text-transform:none}.version-link[_ngcontent-%COMP%]{color:var(--%NS%color-muted);font-size:var(--%NS%text-sm);text-decoration:none}.version-link[_ngcontent-%COMP%]:hover{color:var(--%NS%color-ink);text-decoration:underline}.environment-ribbon[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--%NS%color-focus);outline-offset:3px}.construction-notice[_ngcontent-%COMP%]{position:relative;overflow:hidden;border-bottom:1px solid color-mix(in oklab,var(--%NS%color-warning) 55%,var(--%NS%color-line));background:radial-gradient(circle at 1px 1px,rgba(71,47,6,.12) .7px,transparent .8px) 0 0/6px 6px,linear-gradient(100deg,var(--%NS%color-warning-soft),var(--%NS%color-surface-raised));box-shadow:inset 0 -1px #ffffff57}.construction-notice[_ngcontent-%COMP%]:after{position:absolute;inset:0;background:repeating-linear-gradient(-12deg,transparent 0 1.5rem,color-mix(in oklab,var(--%NS%color-warning) 7%,transparent) 1.5rem 1.58rem);content:"";pointer-events:none}.construction-inner[_ngcontent-%COMP%]{position:relative;z-index:1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--%NS%space-4);width:calc(100% - 2 * var(--%NS%shell-gutter));max-width:var(--%NS%layout-max);margin-inline:auto;padding:var(--%NS%space-4) var(--%NS%page-x)}.construction-kicker[_ngcontent-%COMP%]{width:max-content;padding:.3rem .48rem;border:1px solid currentColor;color:var(--%NS%color-warning);font-family:var(--%NS%font-mono);font-size:var(--%NS%text-xs);font-weight:700;letter-spacing:.08em;line-height:1}.construction-inner[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .construction-inner[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.construction-inner[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:var(--%NS%text-base);line-height:1.2}.construction-inner[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] + p[_ngcontent-%COMP%]{margin-top:var(--%NS%space-1);color:var(--%NS%color-muted);font-size:var(--%NS%text-sm)}@media(max-width:36rem){.construction-inner[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:var(--%NS%space-2)}}@media print{.environment-ribbon[_ngcontent-%COMP%], .construction-notice[_ngcontent-%COMP%]{display:none}}`]})};var t=e=>e.canDeactivate();var c=[{path:``,pathMatch:`full`,redirectTo:`security`},{path:`security`,loadComponent:()=>import(`./chunk-C_QyIKvy.js`).then(e=>e.AccountSecurity),canDeactivate:[t]},{path:`passkeys`,loadComponent:()=>import(`./chunk-DEXzwHB0.js`).then(e=>e.AccountPasskeys),canDeactivate:[t]},{path:`sessions`,loadComponent:()=>import(`./chunk-4ipZT9nT.js`).then(e=>e.AccountSessions),canDeactivate:[t]},{path:`preferences`,loadComponent:()=>import(`./chunk-Bi4Jixry2.js`).then(e=>e.AccountPreferences),canDeactivate:[t]}];var j$1=[`*`];function F$1(t,n){t&1&&By(0)}var r$2=class t{name=NH.required({alias:`appTabPanel`});template=g$2(Cr$1);static ɵfac=function(e){return new(e||t)};static ɵdir=ad({type:t,selectors:[[`ng-template`,`appTabPanel`,``]],inputs:{name:[1,`appTabPanel`,`name`]}})};var o$2=class t{panels=Ke(new Map);static ɵfac=function(e){return new(e||t)};static ɵprov=A$2({token:t,factory:t.ɵfac})};var O$1=class t{registry=g$2(o$2);panels=kH(r$2,{descendants:!0});constructor(){ou(()=>{this.registry.panels.set(new Map(this.panels().map(n=>[n.name(),n.template])))})}static ɵfac=function(e){return new(e||t)};static ɵcmp=Fb({type:t,selectors:[[``,`appTabLayout`,``]],contentQueries:function(e,a,x){e&1&&Zy(x,a.panels,r$2,5),e&2&&e_()},features:[A_([o$2])],ngContentSelectors:j$1,decls:1,vars:0,template:function(e,a){e&1&&(ZS(),KS(0))},styles:[`[_nghost-%COMP%]{display:grid;gap:var(--%NS%space-4);min-inline-size:0}`]})};var w$2=class t{route=g$2(G$2);registry=g$2(o$2);context=this.route.snapshot.data;panel=Ft(()=>{let n=this.route.snapshot.data.panel;return this.registry.panels().get(n)??null});static ɵfac=function(e){return new(e||t)};static ɵcmp=Fb({type:t,selectors:[[`app-tab-panel-outlet`]],hostAttrs:[2,`display`,`grid`,`gap`,`var(--space-4)`,`min-inline-size`,`0`],decls:1,vars:2,consts:[[4,`ngTemplateOutlet`,`ngTemplateOutletContext`]],template:function(e,a){e&1&&Iy(0,F$1,1,0,`ng-container`,0),e&2&&Fy(`ngTemplateOutlet`,a.panel())(`ngTemplateOutletContext`,a.context)},dependencies:[IN],encapsulation:2})};var a=class e{document=g$2(H$3);async copy(o){try{let t=this.document.defaultView?.navigator.clipboard;if(t===void 0)throw new Error(`clipboard_unavailable`);return await t.writeText(o),!0}catch{let t=this.document.createElement(`textarea`);t.value=o,t.style.position=`fixed`,t.style.opacity=`0`,this.document.body.appendChild(t),t.select();let c=this.document.execCommand(`copy`);return t.remove(),c}}static ɵfac=function(t){return new(t||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};function U$1(n){n||(n=g$2(pe$3));let e=new x$3(t=>{if(n.destroyed){t.next();return}return n.onDestroy(t.next.bind(t))});return t=>t.pipe(kE(e))}function T$2(n,e){let d=!e?.manualCleanup?e?.injector?.get(pe$3)??g$2(pe$3):null,l=p$2(e?.equal),o;e?.requireSync?o=Ke({kind:0},{equal:l}):o=Ke({kind:1,value:e?.initialValue},{equal:l});let i,b=n.subscribe({next:r=>o.set({kind:1,value:r}),error:r=>{o.set({kind:2,error:r}),i?.()},complete:()=>{i?.()}});if(e?.requireSync&&o().kind===0)throw new y$2(601,!1);return i=d?.onDestroy(b.unsubscribe.bind(b)),Ft(()=>{let r=o();switch(r.kind){case 1:return r.value;case 2:throw r.error;case 0:throw new y$2(601,!1)}},{equal:e?.equal})}function p$2(n=Object.is){return(e,t)=>e.kind===1&&t.kind===1&&n(e.value,t.value)}function u(e,n){e&1&&(Op(),Ly(0,`path`,1))}function f$2(e,n){e&1&&(Op(),Ly(0,`path`,2))}function v$1(e,n){e&1&&(Op(),Ly(0,`path`,3))}function g(e,n){e&1&&(Op(),Ly(0,`path`,4))}function E(e,n){e&1&&(Op(),Ly(0,`path`,5))}function M(e,n){e&1&&(Op(),Ly(0,`path`,6))}function x(e,n){e&1&&(Op(),Ly(0,`path`,7))}function y(e,n){e&1&&(Op(),Ly(0,`path`,8))}function V(e,n){e&1&&(Op(),Ly(0,`path`,9))}function b(e,n){e&1&&(Op(),Ly(0,`path`,10))}function S$1(e,n){e&1&&(Op(),Ly(0,`path`,11))}function C(e,n){e&1&&(Op(),Ly(0,`circle`,33)(1,`path`,34))}function I$1(e,n){e&1&&(Op(),Ly(0,`path`,12))}function G(e,n){e&1&&(Op(),Ly(0,`path`,13))}function T$1(e,n){e&1&&(Op(),Ly(0,`path`,35)(1,`circle`,36)(2,`circle`,37))}function H(e,n){e&1&&(Op(),Ly(0,`circle`,38)(1,`circle`,39)(2,`path`,40))}function z(e,n){e&1&&(Op(),Ly(0,`path`,14))}function w$1(e,n){e&1&&(Op(),Ly(0,`path`,15))}function L(e,n){e&1&&(Op(),Ly(0,`path`,16))}function k(e,n){e&1&&(Op(),Ly(0,`path`,17))}function A(e,n){e&1&&(Op(),Ly(0,`path`,18))}function N$1(e,n){e&1&&(Op(),Ly(0,`circle`,41)(1,`circle`,42)(2,`circle`,43))}function D(e,n){e&1&&(Op(),Ly(0,`path`,19))}function P(e,n){e&1&&(Op(),Ly(0,`path`,20))}function O(e,n){e&1&&(Op(),Ly(0,`path`,21))}function j(e,n){e&1&&(Op(),Ly(0,`path`,22))}function q(e,n){e&1&&(Op(),Ly(0,`path`,23))}function B(e,n){e&1&&(Op(),Ly(0,`circle`,44)(1,`path`,45))}function F(e,n){e&1&&(Op(),Ly(0,`path`,24))}function J$1(e,n){e&1&&(Op(),Ly(0,`path`,25))}function K(e,n){e&1&&(Op(),Ly(0,`circle`,46)(1,`path`,47))}function Q$1(e,n){e&1&&(Op(),Ly(0,`path`,26))}function R(e,n){e&1&&(Op(),Ly(0,`path`,27))}function U(e,n){e&1&&(Op(),Ly(0,`path`,28))}function W(e,n){e&1&&(Op(),Ly(0,`path`,29))}function X$1(e,n){e&1&&(Op(),Ly(0,`path`,48)(1,`circle`,49))}function Y$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`rect`,50)(2,`path`,51),hd())}function Z$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,52)(2,`rect`,53),hd())}function $$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,54)(2,`path`,55),hd())}function ee$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,56),hd())}function ae(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,57)(2,`path`,58)(3,`path`,59),hd())}function ne(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,60)(2,`path`,61),hd())}function te(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`rect`,62)(2,`path`,63)(3,`rect`,64),hd())}function me(e,n){e&1&&(Op(),Ly(0,`path`,30))}function ie(e,n){e&1&&(Op(),Ly(0,`path`,31))}function ce(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,65)(2,`circle`,66),hd())}function oe(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,67)(2,`rect`,68)(3,`path`,69),hd())}function le$1(e,n){e&1&&(Op(),Ly(0,`path`,32))}function pe$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,70)(2,`path`,71)(3,`path`,72),hd())}var r$1=class e{name=NH.required();static ɵfac=function(o){return new(o||e)};static ɵcmp=Fb({type:e,selectors:[[`app-icon`]],inputs:{name:[1,`name`]},decls:50,vars:1,consts:[[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`d`,`M13 4v16m4-16v16m2-16H9.5a4.5 4.5 0 0 0 0 9H13`],[`d`,`M4 12h8m-8 6V6m8 12V6m9 12h-4c0-4 4-3 4-6c0-1.5-2-2.5-4-1`],[`d`,`M4 12h8m-8 6V6m8 12V6m5.5 4.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2m-2 3.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2`],[`d`,`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`],[`d`,`M19 4h-9m4 16H5M15 4L9 20`],[`d`,`M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13`],[`d`,`M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`],[`d`,`M9 14 4 9l5-5M4 9h10.5a5.5 5.5 0 0 1 0 11H11`],[`d`,`m15 14 5-5-5-5M20 9H9.5a5.5 5.5 0 0 0 0 11H13`],[`d`,`M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4z`],[`d`,`M3 3h7v7H3zm11 0h7v7h-7zM3 14h7v7H3zm11 0h7v7h-7z`],[`d`,`M3 7V5a2 2 0 0 1 2-2h5l2 3h7a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`],[`d`,`M6 3h9l4 4v14H5V3zm8 0v5h5M8 12h8m-8 4h6`],[`d`,`m3 9 9-6 9 6zm2 3v7m5-7v7m4-7v7m5-7v7M3 22h18`],[`d`,`M4 6h16M4 12h16M4 18h16M8 3v6m8 0v6m-6 0v6`],[`d`,`M4 3h4v18H4zm8 0h4v18h-4zm7 1 3 16`],[`d`,`M12 5v16m0-16C8 2 4 3 2 4v16c3-1 7-1 10 1 3-2 7-2 10-1V4c-2-1-6-2-10 1`],[`d`,`M4 6h16M4 12h16M4 18h16`],[`d`,`m6 6 12 12M6 18 18 6`],[`d`,`m20 6-11 11-5-5`],[`d`,`m12 19-7-7 7-7m-7 7h14`],[`d`,`m9 18 6-6-6-6`],[`d`,`m8 9 4-4 4 4m-8 6 4 4 4-4`],[`d`,`M10 5H5v14h5m4-11 4 4-4 4m4-4H9`],[`d`,`M12 5v14M5 12h14`],[`d`,`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3`],[`d`,`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12`],[`d`,`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6M12 18v-6m-3 3h6`],[`d`,`M4 7h16M7 12h10M10 17h4`],[`d`,`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2M6.453 15h11.094M8.5 2h7`],[`d`,`M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2zm2.054 10.987H3.946`],[`d`,`M12 16v5m4-6.361V21m4-10.344V21m2-18-8.646 8.646a.5.5 0 0 1-.708 0L9.354 8.354a.5.5 0 0 0-.707 0L2 15m2 3.463V21m4-6.344V21`],[`cx`,`9`,`cy`,`8`,`r`,`3`],[`d`,`M3 21v-2a6 6 0 0 1 12 0v2m1-17a3 3 0 0 1 0 6m3 11v-2a6 6 0 0 0-3-5.2`],[`d`,`M10 17h4V5H2v12h3m9-8h4l4 4v4h-3m-9 0H8`],[`cx`,`6.5`,`cy`,`17.5`,`r`,`2.5`],[`cx`,`16.5`,`cy`,`17.5`,`r`,`2.5`],[`cx`,`9`,`cy`,`20`,`r`,`1`],[`cx`,`19`,`cy`,`20`,`r`,`1`],[`d`,`M3 4h2l2.4 10.4A2 2 0 0 0 9.3 16H18a2 2 0 0 0 1.9-1.4L21 8H6`],[`cx`,`5`,`cy`,`12`,`r`,`1`],[`cx`,`12`,`cy`,`12`,`r`,`1`],[`cx`,`19`,`cy`,`12`,`r`,`1`],[`cx`,`12`,`cy`,`8`,`r`,`3`],[`d`,`M5 21v-2a7 7 0 0 1 14 0v2`],[`cx`,`10`,`cy`,`10`,`r`,`7`],[`d`,`m15 15 6 6`],[`d`,`M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16`],[`cx`,`5`,`cy`,`19`,`r`,`1`],[`width`,`20`,`height`,`16`,`x`,`2`,`y`,`4`,`rx`,`2`],[`d`,`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`],[`d`,`M8 2v4m8-4v4M3 10h18`],[`width`,`18`,`height`,`18`,`x`,`3`,`y`,`4`,`rx`,`2`],[`d`,`M15 3h6v6m0-6-9 9`],[`d`,`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`],[`d`,`m8 9-4 3 4 3m8-6 4 3-4 3m-2-9-4 12`],[`d`,`M12 22v-9m3.17-10.79a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.66 1.66 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z`],[`d`,`M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13`],[`d`,`M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.64 1.64 0 0 0 1.63 0z`],[`d`,`m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9m6 6 4-4`],[`d`,`m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5`],[`width`,`8`,`height`,`8`,`x`,`3`,`y`,`3`,`rx`,`2`],[`d`,`M7 11v4a2 2 0 0 0 2 2h4`],[`width`,`8`,`height`,`8`,`x`,`13`,`y`,`13`,`rx`,`2`],[`d`,`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`],[`cx`,`16.5`,`cy`,`7.5`,`r`,`.5`,`fill`,`currentColor`],[`d`,`M12 8V4H8`],[`width`,`16`,`height`,`12`,`x`,`4`,`y`,`8`,`rx`,`2`],[`d`,`M2 14h2m16 0h2m-7-1v2m-6-2v2`],[`d`,`m10.852 14.772-.383.923m2.679-.923a3 3 0 1 0-2.296-5.544l-.383-.923m2.679.923.383-.923`],[`d`,`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544m3.92 1.624.923-.383m-.923 2.679.923.383`],[`d`,`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5m-15 4H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5M6 18h.01M6 6h.01m3.228 4.852-.923-.383m.923 2.679-.923.383`]],template:function(o,_){if(o&1&&(Op(),pd(0,`svg`,0),OS(1,u,1,0,`:svg:path`,1)(2,f$2,1,0,`:svg:path`,2)(3,v$1,1,0,`:svg:path`,3)(4,g,1,0,`:svg:path`,4)(5,E,1,0,`:svg:path`,5)(6,M,1,0,`:svg:path`,6)(7,x,1,0,`:svg:path`,7)(8,y,1,0,`:svg:path`,8)(9,V,1,0,`:svg:path`,9)(10,b,1,0,`:svg:path`,10)(11,S$1,1,0,`:svg:path`,11)(12,C,2,0)(13,I$1,1,0,`:svg:path`,12)(14,G,1,0,`:svg:path`,13)(15,T$1,3,0)(16,H,3,0)(17,z,1,0,`:svg:path`,14)(18,w$1,1,0,`:svg:path`,15)(19,L,1,0,`:svg:path`,16)(20,k,1,0,`:svg:path`,17)(21,A,1,0,`:svg:path`,18)(22,N$1,3,0)(23,D,1,0,`:svg:path`,19)(24,P,1,0,`:svg:path`,20)(25,O,1,0,`:svg:path`,21)(26,j,1,0,`:svg:path`,22)(27,q,1,0,`:svg:path`,23)(28,B,2,0)(29,F,1,0,`:svg:path`,24)(30,J$1,1,0,`:svg:path`,25)(31,K,2,0)(32,Q$1,1,0,`:svg:path`,26)(33,R,1,0,`:svg:path`,27)(34,U,1,0,`:svg:path`,28)(35,W,1,0,`:svg:path`,29)(36,X$1,2,0)(37,Y$1,3,0,`:svg:g`)(38,Z$1,3,0,`:svg:g`)(39,$$1,3,0,`:svg:g`)(40,ee$1,2,0,`:svg:g`)(41,ae,4,0,`:svg:g`)(42,ne,3,0,`:svg:g`)(43,te,4,0,`:svg:g`)(44,me,1,0,`:svg:path`,30)(45,ie,1,0,`:svg:path`,31)(46,ce,3,0,`:svg:g`)(47,oe,4,0,`:svg:g`)(48,le$1,1,0,`:svg:path`,32)(49,pe$1,4,0,`:svg:g`),hd()),o&2){let m;ZC(),kS((m=_.name())===`paragraph`?1:m===`heading-2`?2:m===`heading-3`?3:m===`bold`?4:m===`italic`?5:m===`list-bullets`?6:m===`list-numbers`?7:m===`undo`?8:m===`redo`?9:m===`pencil`?10:m===`dashboard`?11:m===`clients`?12:m===`folder`?13:m===`invoice`?14:m===`truck`?15:m===`shopping-cart`?16:m===`bank`?17:m===`settings`?18:m===`catalog`?19:m===`book`?20:m===`menu`?21:m===`more`?22:m===`close`?23:m===`check`?24:m===`arrow-left`?25:m===`chevron-right`?26:m===`chevron`?27:m===`user`?28:m===`logout`?29:m===`plus`?30:m===`search`?31:m===`download`?32:m===`upload`?33:m===`file-plus`?34:m===`filter`?35:m===`rss`?36:m===`mail`?37:m===`calendar`?38:m===`external`?39:m===`development`?40:m===`upgrade`?41:m===`build`?42:m===`ci`?43:m===`tests`?44:m===`environment`?45:m===`secrets`?46:m===`ai`?47:m===`metrics`?48:m===`infrastructure`?49:-1)}},styles:[`[_nghost-%COMP%]{display:inline-flex;flex:0 0 auto;color:var(--%NS%icon-color, var(--%NS%color-muted))}svg[_ngcontent-%COMP%]{width:1.25rem;height:1.25rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75}`]})};var p$1=[`*`];function S(t,a){t&1&&Py(0,`app-icon`,0),t&2&&Fy(`name`,a)}function m(t,a){if(t&1&&OS(0,S,1,1,`app-icon`,0),t&2){let o;kS((o=qS().icon())?0:-1,o)}}function f$1(t,a){t&1&&Py(0,`app-icon`,0),t&2&&Fy(`name`,a)}function _(t,a){if(t&1&&OS(0,f$1,1,1,`app-icon`,0),t&2){let o;kS((o=qS().icon())?0:-1,o)}}var N=class t{variant=NH(`default`);size=NH(`default`);iconOnly=NH(!1);icon=NH();iconPosition=NH(`start`);static ɵfac=function(o){return new(o||t)};static ɵcmp=Fb({type:t,selectors:[[`button`,`appButton`,``],[`a`,`appLinkButton`,``]],hostVars:3,hostBindings:function(o,n){o&2&&ky(`data-button-variant`,n.variant())(`data-button-size`,n.size())(`data-button-icon-only`,n.iconOnly()?``:null)},inputs:{variant:[1,`variant`],size:[1,`size`],iconOnly:[1,`iconOnly`],icon:[1,`icon`],iconPosition:[1,`iconPosition`]},ngContentSelectors:p$1,decls:3,vars:2,consts:[[3,`name`]],template:function(o,n){o&1&&(ZS(),OS(0,m,1,1),KS(1),OS(2,_,1,1)),o&2&&(kS(n.iconPosition()===`start`?0:-1),ZC(2),kS(n.iconPosition()===`end`?2:-1))},dependencies:[r$1],styles:[`[_nghost-%COMP%]{--%NS%icon-color: var(--%NS%button-text);--%NS%button-color: var(--%NS%color-button-default);--%NS%button-highlight: var(--%NS%color-button-default-highlight);--%NS%button-border: var(--%NS%color-button-default-border);--%NS%button-border-bottom: var(--%NS%color-button-default-border-bottom);--%NS%button-text: var(--%NS%color-button-on-default);appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--%NS%space-2);min-height:var(--%NS%control-height);padding:.4rem .75rem;border:1px solid var(--%NS%button-border);border-bottom-color:var(--%NS%button-border-bottom);border-radius:var(--%NS%radius-md);background-color:color-mix(in srgb,var(--%NS%button-color) 60%,var(--%NS%button-highlight));background-image:linear-gradient(to bottom,var(--%NS%button-color),var(--%NS%button-highlight));background-repeat:repeat-x;color:var(--%NS%button-text);font-size:var(--%NS%text-sm);font-weight:600;line-height:1.2;text-decoration:none;text-shadow:var(--%NS%shadow-button-default-label);box-shadow:inset 0 1px #fff3,0 1px 2px #0000000d;cursor:pointer}[_nghost-%COMP%]:visited{color:var(--%NS%button-text)}[data-button-variant=primary][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-primary);--%NS%button-highlight: var(--%NS%color-button-primary-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-size=small][_nghost-%COMP%]{min-height:2rem;padding:.25rem .5rem;font-size:var(--%NS%text-xs)}[data-button-size=small][data-button-icon-only][_nghost-%COMP%]{width:2rem}[data-button-size=large][_nghost-%COMP%]{min-height:3rem;padding:.55rem 1rem;font-size:var(--%NS%text-base)}[data-button-size=large][data-button-icon-only][_nghost-%COMP%]{width:3rem}[data-button-variant=info][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-info);--%NS%button-highlight: var(--%NS%color-button-info-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=success][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-success);--%NS%button-highlight: var(--%NS%color-button-success-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=warning][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-warning);--%NS%button-highlight: var(--%NS%color-button-warning-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=danger][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-danger);--%NS%button-highlight: var(--%NS%color-button-danger-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=dark][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-dark);--%NS%button-highlight: var(--%NS%color-button-dark-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[_nghost-%COMP%]:is([data-button-variant=primary],[data-button-variant=info],[data-button-variant=success],[data-button-variant=warning],[data-button-variant=danger],[data-button-variant=dark]){--%NS%button-border: rgb(0 0 0 / .1);--%NS%button-border-bottom: rgb(0 0 0 / .25);text-shadow:0 -1px 0 rgba(0,0,0,.25)}[_nghost-%COMP%]:is([data-button-variant=info],[data-button-variant=success],[data-button-variant=warning]){--%NS%button-text: var(--%NS%color-button-on-bright);text-shadow:none}[data-button-variant=link][_nghost-%COMP%]{--%NS%icon-color: var(--%NS%color-link);border-color:transparent;background:transparent;color:var(--%NS%color-link);text-decoration:underline;text-shadow:none;box-shadow:none}[data-button-icon-only][_nghost-%COMP%]{width:var(--%NS%control-height);padding:0}[aria-busy=true][_nghost-%COMP%]:before{width:.85rem;height:.85rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;content:"";animation:_ngcontent-%COMP%_button-loading .7s linear infinite}[_nghost-%COMP%]:is(:active,[data-button-state=active]):not(:disabled,[aria-disabled=true],[data-button-variant=ghost],[data-button-variant=link]){background-color:var(--%NS%button-highlight);background-image:none;box-shadow:inset 0 2px 4px #00000026,0 1px 2px #0000000d}@media(hover:hover)and (pointer:fine){[_nghost-%COMP%]:is(:hover,[data-button-state=hover]):not(:disabled,[aria-disabled=true],[data-button-variant=ghost],[data-button-variant=link]){background-color:var(--%NS%button-highlight);background-image:linear-gradient(to bottom,var(--%NS%button-highlight),var(--%NS%button-color));color:var(--%NS%button-text)}[data-button-variant=link][_nghost-%COMP%]:hover:not(:disabled,[aria-disabled=true]), [data-button-variant=link][data-button-state=hover][_nghost-%COMP%]:not(:disabled,[aria-disabled=true]){--%NS%icon-color: var(--%NS%color-link-hover);border-color:transparent;background:transparent;color:var(--%NS%color-link-hover)}}[data-button-variant=ghost][_nghost-%COMP%]{--%NS%icon-color: currentColor;border-color:transparent;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%color-muted);text-decoration:none;text-shadow:none;box-shadow:none;cursor:pointer}[data-button-variant=ghost][_nghost-%COMP%]:is(:hover,[data-button-state=hover]):not(:disabled,[aria-disabled=true],:active,[data-button-state=active],[aria-pressed=true],[aria-expanded=true]){background:color-mix(in oklab,var(--%NS%color-surface-sunken),transparent 35%);color:var(--%NS%color-ink)}[data-button-variant=ghost][_nghost-%COMP%]:is(:active,[data-button-state=active]):not(:disabled,[aria-disabled=true]), [data-button-variant=ghost][_nghost-%COMP%]:is([aria-pressed=true],[aria-expanded=true]){background:var(--%NS%color-panel);color:var(--%NS%color-ink);box-shadow:var(--%NS%shadow-panel)}[data-button-variant=ghost][_nghost-%COMP%]:focus-visible{outline:2px solid var(--%NS%color-focus);outline-offset:-2px}[data-button-variant=ghost][_nghost-%COMP%]:is(:disabled,[aria-disabled=true]){cursor:not-allowed;opacity:.55}@keyframes _ngcontent-%COMP%_button-loading{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){[aria-busy=true][_nghost-%COMP%]:before{animation-duration:1.4s}}@media(forced-colors:active){[_nghost-%COMP%]{box-shadow:none}}`]})};var w=new E$4(`AUTH_COOKIE_LOCK_MANAGER`,{providedIn:`root`,factory:()=>xU(g$2(yo$1))?navigator.locks:void 0});var o$1=class r{manager=g$2(w);run(e){return this.manager?.request(`froment-auth-cookie`,e)??e()}static ɵfac=function(t){return new(t||r)};static ɵprov=A$2({token:r,factory:r.ɵfac,providedIn:`root`})};var p=3e4;var T=2147483647;var v=class r{http=new OD(g$2(Ra));cookieLock=g$2(o$1);destroyRef=g$2(pe$3);document=g$2(H$3);state=Ke(void 0);refreshRequest;refreshTimer;generation=0;identityState=Ke(0);identity=this.identityState.asReadonly();revisionState=Ke(0);revision=this.revisionState.asReadonly();refreshState=Ke(!1);refreshing=this.refreshState.asReadonly();constructor(){let e=this.document.defaultView,t=()=>{this.document.visibilityState!==`hidden`&&this.refreshExpiringSession()};this.document.addEventListener(`visibilitychange`,t),e?.addEventListener(`focus`,t),this.destroyRef.onDestroy(()=>{this.refreshTimer!==void 0&&clearTimeout(this.refreshTimer),this.document.removeEventListener(`visibilitychange`,t),e?.removeEventListener(`focus`,t)})}current(){let e=this.state();if(e!==void 0&&e.expiresAt<=Date.now()){this.clear();return}return e}mode(){return this.current()?.mode}set(e){return this.identityState.update(t=>t+1),this.updateSession(e)}updateSession(e){return this.generation+=1,this.revisionState.update(t=>t+1),this.state.set(e),this.scheduleRefresh(e.expiresAt),e}clear(){this.identityState.update(e=>e+1),this.generation+=1,this.revisionState.update(e=>e+1),this.state.set(void 0),this.refreshTimer!==void 0&&clearTimeout(this.refreshTimer),this.refreshTimer=void 0}refresh(){if(this.refreshRequest!==void 0)return this.refreshRequest;this.refreshState.set(!0),this.revisionState.update(t=>t+1);let e=this.generation;return this.refreshRequest=this.cookieLock.run(async()=>{try{let t=await JD(this.http.post(`/api/auth/refresh`,void 0)),{decodeBrowserSession:y}=await import(`./chunk-owvOEsA9.js`),S=y(t);return this.generation!==e?this.mode():this.updateSession(S).mode}catch{return this.generation===e&&this.clear(),this.mode()}}).finally(()=>{this.refreshRequest=void 0,this.refreshState.set(!1)}),this.refreshRequest}scheduleRefresh(e){if(this.refreshTimer!==void 0&&clearTimeout(this.refreshTimer),e<=Date.now()){this.refreshTimer=void 0;return}let t=Math.max(0,e-Date.now()-p);this.refreshTimer=setTimeout(()=>{this.refresh()},Math.min(t,T))}refreshExpiringSession(){let e=this.state();e!==void 0&&e.expiresAt<=Date.now()+p&&this.refresh()}static ɵfac=function(t){return new(t||r)};static ɵprov=A$2({token:r,factory:r.ɵfac,providedIn:`root`})};var de=()=>({access:`session`});var o=(...e)=>({access:`permissions`,permissions:e});var lt=async(e,t)=>{let a=t.permissions,[{CompanyModule:s,PermissionCode:p},{Schema:C}]=await Promise.all([import(`./chunk-C19Alcnx2.js`),import(`./chunk-CGo7Fepz.js`)]),M=e.account(),x=C.Array(p).check(C.isMinLength(1));if(M?.mode!==`administrator`||t.access!==`permissions`||!C.is(x)(a))return!1;let me=mt(a),fe=t.modules;if(C.is(C.Array(s))(fe))for(let R of fe)me.add(R);return a.every(R=>e.can(R))&&[...me].every(R=>M.enabledModules.includes(R))};var mt=e=>{let t=new Set;for(let a of e)a.startsWith(`supplier`)?t.add(`purchasing`):a.startsWith(`bank.`)?t.add(`banking`):a.startsWith(`accounting.`)?t.add(`accounting`):a.startsWith(`demo.`)?t.add(`demonstration`):(a.startsWith(`quote.`)||a.startsWith(`order.`)||a.startsWith(`invoice.`)||a.startsWith(`payment.`)||a.startsWith(`client.`)||a.startsWith(`catalog.`)||a.startsWith(`ledger.`)||a.startsWith(`document.`))&&t.add(`sales`);return t};var ft=e=>e.pathFromRoot.map(t=>t.routeConfig?.data??t.data).filter(t=>t.access!==void 0||t.permissions!==void 0);var pe=async e=>{let t=g$2(ce$3),a=g$2(ue),{Authentication:s}=await import(`./chunk-CV_fLVFT.js`),p=t.get(s);if(await p.sessionMode()!==`administrator`)return a.createUrlTree([`/login`]);if((await p.currentAccount())?.mode!==`administrator`)return a.createUrlTree([`/login`]);let M=ft(e);return M.length>0&&(await Promise.all(M.map(x=>x.access===`session`&&x.permissions===void 0||lt(p,x)))).every(Boolean)?!0:a.createUrlTree([`/account`])};var r=pe;var f=pe;var h=pe;var Q=async(e,t)=>{let a=g$2(ce$3),s=g$2(ue),{Authentication:p}=await import(`./chunk-CV_fLVFT.js`);return await a.get(p).sessionMode()===`client`?!0:s.createUrlTree([`/login`],{queryParams:{returnUrl:t.url}})};var Je=[{path:`billing`,pathMatch:`full`,loadComponent:()=>import(`./chunk-DQp-2GVv.js`).then(e=>e.Billing),canActivate:[r],data:m$4(l$1({},o(`invoice.read`)),{titleKey:`billingWorkspace.invoices`,robots:`noindex, nofollow`})},{path:`billing/receipts`,loadComponent:()=>import(`./chunk-Bf3eV_su2.js`).then(e=>e.ReceiptList),canActivate:[r],data:m$4(l$1({},o(`payment.read`,`invoice.read`)),{titleKey:`billingWorkspace.receipts`,robots:`noindex, nofollow`})},{path:`billing/credit-notes`,loadComponent:()=>import(`./chunk-Dnzjseqf2.js`).then(e=>e.CreditNotes),canActivate:[r],data:m$4(l$1({},o(`invoice.read`)),{titleKey:`billingWorkspace.credits`,robots:`noindex, nofollow`})},{path:`billing/refunds`,loadComponent:()=>import(`./chunk-BHDXYrox.js`).then(e=>e.RefundList),canActivate:[r],data:m$4(l$1({},o(`payment.read`,`invoice.read`)),{titleKey:`billingWorkspace.refunds`,robots:`noindex, nofollow`})},{path:`invoices/new`,loadComponent:()=>import(`./chunk-BR0demlX.js`).then(e=>e.InvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.create`,`order.read`)),{titleKey:`backOffice.invoice.title.new`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/edit`,loadComponent:()=>import(`./chunk-BR0demlX.js`).then(e=>e.InvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.update`,`order.read`)),{titleKey:`billingWorkspace.edit`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/issue`,loadComponent:()=>import(`./chunk-BI9lIdFn.js`).then(e=>e.InvoiceIssue),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.issue`)),{titleKey:`billingWorkspace.issueTitle`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/payments/new`,loadComponent:()=>import(`./chunk-DSpA-ZPx.js`).then(e=>e.PaymentEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.mark-paid`)),{titleKey:`billingWorkspace.recordReceipt`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/payments/:paymentId/cancel`,loadComponent:()=>import(`./chunk-COTrF1xY2.js`).then(e=>e.ReceiptCancel),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.mark-paid`)),{titleKey:`payment.cancel`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credits/new`,loadComponent:()=>import(`./chunk-CNfmNEak.js`).then(e=>e.CreditEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.credit`)),{titleKey:`credit.issue`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credits/:creditNoteId/edit`,loadComponent:()=>import(`./chunk-CNfmNEak.js`).then(e=>e.CreditEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.credit`)),{titleKey:`credit.editDraft`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credit-allocations/new`,loadComponent:()=>import(`./chunk-DURq7J8U2.js`).then(e=>e.CreditAllocationEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.allocate`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/refunds/new`,loadComponent:()=>import(`./chunk-D8t0s8LD.js`).then(e=>e.RefundEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.recordRefund`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/refunds/:refundId/cancel`,loadComponent:()=>import(`./chunk-CaJrmM9V.js`).then(e=>e.RefundCancel),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.cancelRefund`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credit-allocations/:allocationId/cancel`,loadComponent:()=>import(`./chunk-CaJrmM9V.js`).then(e=>e.RefundCancel),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.cancelAllocation`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/void`,loadComponent:()=>import(`./chunk-Dl4V93zm2.js`).then(e=>e.InvoiceVoid),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.void`)),{titleKey:`backOffice.invoice.void`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId`,loadComponent:()=>import(`./chunk-BiECfDS7.js`).then(e=>e.InvoiceDetail),canActivate:[r],data:m$4(l$1({},o(`invoice.read`)),{titleKey:`billingWorkspace.invoices`,robots:`noindex, nofollow`})}];var Xe=[{path:`banking/import`,loadComponent:()=>import(`./chunk-DddDKWSn2.js`).then(e=>e.BankImport),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`bank.import`)),{titleKey:`bank.import`,robots:`noindex, nofollow`})},{path:`banking/transactions/:transactionId`,loadComponent:()=>import(`./chunk-B5xzAYYx2.js`).then(e=>e.BankReconciliation),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`bank.read`)),{titleKey:`bankWorkspace.reconciliation`,robots:`noindex, nofollow`})},{path:`banking/ledger/post/:sourceKind/:sourceId`,loadComponent:()=>import(`./chunk-CE9WzUCM.js`).then(e=>e.LedgerPost),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`ledger.read`,`ledger.post`)),{titleKey:`bankWorkspace.postTitle`,robots:`noindex, nofollow`})},{path:`banking/ledger/:entryId/reverse`,loadComponent:()=>import(`./chunk-DTPC4JtI2.js`).then(e=>e.LedgerReversal),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`ledger.read`)),{titleKey:`bankWorkspace.reverseTitle`,robots:`noindex, nofollow`})},{path:`banking/ledger`,loadComponent:()=>import(`./chunk-CYRUKYKv2.js`).then(e=>e.BankLedger),canActivate:[r],data:m$4(l$1({},o(`ledger.read`)),{titleKey:`bankWorkspace.entries`,robots:`noindex, nofollow`})},{path:`banking`,loadComponent:()=>import(`./chunk-a_Va_Nj7.js`).then(e=>e.Banking),canActivate:[r],data:m$4(l$1({},o(`bank.read`)),{titleKey:`bankWorkspace.transactions`,robots:`noindex, nofollow`})}];var Ze=[{path:``,pathMatch:`full`,loadComponent:()=>import(`./chunk-Bjo6eVnk.js`).then(e=>e.ConfigurationIndex)},{path:`company`,canActivate:[f],data:o(`company.read`),loadComponent:()=>import(`./chunk-B91VAo1J.js`).then(e=>e.CompanySettingsPage),canDeactivate:[t]},{path:`issuer`,canActivate:[f],data:o(`issuer.read`),loadComponent:()=>import(`./chunk-COXN76fu2.js`).then(e=>e.IssuerSettings),canDeactivate:[t]},{path:`conditions/new`,canActivate:[f],data:o(`condition.manage`),loadComponent:()=>import(`./chunk-DjwvqY3z2.js`).then(e=>e.ConditionEditor),canDeactivate:[t]},{path:`conditions/:presetId/edit`,canActivate:[f],data:o(`condition.read`,`condition.manage`),loadComponent:()=>import(`./chunk-DjwvqY3z2.js`).then(e=>e.ConditionEditor),canDeactivate:[t]},{path:`conditions`,canActivate:[f],data:o(`condition.read`),loadComponent:()=>import(`./chunk-CDS6LjBz2.js`).then(e=>e.QuoteConditionPresets),canDeactivate:[t]},{path:`business-card`,canActivate:[f],data:o(`issuer.read`),loadComponent:()=>import(`./chunk-Cx07K71K.js`).then(e=>e.BusinessCard),canDeactivate:[t]},{path:`supplier-invoice-analysis`,canActivate:[f],data:o(`integration.configure`),loadComponent:()=>import(`./chunk-Db2zQ-8C.js`).then(e=>e.SupplierInvoiceAnalysisSettingsPage),canDeactivate:[t]}];var et=[{path:`team/roles/new`,loadComponent:()=>import(`./chunk-DKlxu0GP2.js`).then(e=>e.RoleEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`role.manage`)),{titleKey:`role.createTitle`,robots:`noindex, nofollow`})},{path:`team/roles/:roleId/edit`,loadComponent:()=>import(`./chunk-DKlxu0GP2.js`).then(e=>e.RoleEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`role.read`,`role.manage`)),{titleKey:`role.editTitle`,robots:`noindex, nofollow`})},{path:`team/roles`,loadComponent:()=>import(`./chunk-DVyDnsGh.js`).then(e=>e.RolesPage),canActivate:[r],data:m$4(l$1({},o(`role.read`)),{titleKey:`role.title`,robots:`noindex, nofollow`})},{path:`team/invitations/new`,loadComponent:()=>import(`./chunk-CG4Kbo1n2.js`).then(e=>e.TeamInvitation),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`user.create`)),{titleKey:`configurationWorkspace.newInvitation`,robots:`noindex, nofollow`})},{path:`team`,loadComponent:()=>import(`./chunk-CvMAjyvr2.js`).then(e=>e.Team),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`user.read`)),{titleKey:`team.title`,robots:`noindex, nofollow`})}];var tt=[{path:`api/new`,loadComponent:()=>import(`./chunk-By2EFyNM.js`).then(e=>e.ApiTokenEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`api-token.manage`)),{titleKey:`backOffice.apiTokens.create`,robots:`noindex, nofollow`})},{path:`api`,loadComponent:()=>import(`./chunk-B9NV1rY62.js`).then(e=>e.ApiTokens),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`api-token.manage`)),{titleKey:`backOffice.apiTokens.title`,robots:`noindex, nofollow`})}];var ot=[{path:`services`,pathMatch:`full`,loadComponent:()=>import(`./chunk-Bn46cQyx.js`).then(e=>e.Connections),canActivate:[r],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`connections.title`,robots:`noindex, nofollow`})},{path:`services/simulations`,loadComponent:()=>import(`./chunk-CUqj_Bxs2.js`).then(e=>e.Integrations),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`integration.manage`)),{titleKey:`configurationWorkspace.simulations`,robots:`noindex, nofollow`})},{path:`services/resend/tests/new`,loadComponent:()=>import(`./chunk-CYGyIy7J.js`).then(e=>e.EmailTest),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`configurationWorkspace.newTest`,robots:`noindex, nofollow`})},{path:`services/resend/tests/:requestId`,loadComponent:()=>import(`./chunk-CwzCbuXH.js`).then(e=>e.EmailTestDetail),canActivate:[r],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`configurationWorkspace.testDetail`,robots:`noindex, nofollow`})},{path:`services/resend/tests`,loadComponent:()=>import(`./chunk-D-VHaopx.js`).then(e=>e.EmailTestList),canActivate:[r],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`configurationWorkspace.tests`,robots:`noindex, nofollow`})},{path:`services/stripe/tests/new`,loadComponent:()=>import(`./chunk-Dh86w63y.js`).then(e=>e.Checkout),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`integration.configure`,`invoice.read`)),{titleKey:`configurationWorkspace.newTest`,robots:`noindex, nofollow`})},{path:`services/stripe/tests/:requestId`,loadComponent:()=>import(`./chunk-DOinRyX_2.js`).then(e=>e.CheckoutDetail),canActivate:[r],data:m$4(l$1({},o(`integration.configure`,`invoice.read`)),{titleKey:`configurationWorkspace.testDetail`,robots:`noindex, nofollow`})},{path:`services/stripe/tests`,loadComponent:()=>import(`./chunk-XvyWOb2Q.js`).then(e=>e.CheckoutList),canActivate:[r],data:m$4(l$1({},o(`integration.configure`,`invoice.read`)),{titleKey:`configurationWorkspace.tests`,robots:`noindex, nofollow`})},...[`resend`,`stripe`,`signwell`,`superpdp`].map(e=>({path:`services/${e}`,data:m$4(l$1({},o(`integration.configure`)),{provider:e,titleKey:`configurationWorkspace.connection`,robots:`noindex, nofollow`}),loadComponent:()=>import(`./chunk-DubWLqvO.js`).then(t=>t.ProviderConnection),canActivate:[r]}))];var at={path:`audit`,loadComponent:()=>import(`./chunk-WNYFaDlu2.js`).then(e=>e.Audit),canActivate:[r],data:m$4(l$1({},o(`audit.read`)),{titleKey:`audit.title`,robots:`noindex, nofollow`})};var nt=[{path:`accounting`,loadComponent:()=>import(`./chunk-BNksdK_D2.js`).then(e=>e.Accounting),canActivate:[r],data:m$4(l$1({},o(`accounting.read`)),{titleKey:`accounting.title`,robots:`noindex, nofollow`})}];var it=(e,t)=>e.fragment!==t.fragment;var le=`app-shell`;var rt=(e,t)=>t.map(a=>m$4(l$1({},a),{data:m$4(l$1({},a.data),{shell:e})}));function $(e){let t=`public`,a=e;for(;a;){let s=a.data.shell;s&&(t=s),a=a.firstChild}return t}var I=(e,t,a)=>[{path:``,redirectTo:e,pathMatch:`full`},...a.map(s=>({path:s,component:w$2,data:{panel:t,tab:s}}))];var ct=[...rt(`administrator`,[...Je,...Xe,...nt,...et,...tt,...ot,at]),{path:`join`,loadComponent:()=>import(`./chunk-r6H-BfOd.js`).then(e=>e.TeamJoin),canDeactivate:[t],data:{shell:`public`,titleKey:`team.join`,robots:`noindex, nofollow`}},{path:``,redirectTo:`login`,pathMatch:`full`},{path:`quote`,canDeactivate:[t],runGuardsAndResolvers:it,loadComponent:()=>import(`./chunk-BcUjdID-.js`).then(e=>e.PublicQuote),data:{shell:`standalone`,titleKey:`page.public_quote`,descriptionKey:`page.description.public_quote`,robots:`noindex, nofollow`},children:[{path:``,redirectTo:`summary`,pathMatch:`full`},{path:`summary`,component:w$2,data:{panel:`summary`}},{path:`document`,component:w$2,data:{panel:`document`}},{path:`signature`,component:w$2,data:{panel:`signature`}},{path:`confirmation`,component:w$2,data:{panel:`confirmation`}}]},{path:`login`,loadComponent:()=>import(`./chunk-D1DvlGbP.js`).then(e=>e.Login),data:{shell:`public`,titleKey:`page.back_office`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`}},{path:`sign-out`,loadComponent:()=>import(`./chunk-DIJSXeQC2.js`).then(e=>e.SignOut),canDeactivate:[t],data:{shell:`public`,titleKey:`backOffice.signOut`,robots:`noindex, nofollow`}},{path:`bootstrap`,loadComponent:()=>import(`./chunk-Bck0-DJt2.js`).then(e=>e.Bootstrap),data:{shell:`public`,titleKey:`page.back_office`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`}},{path:`dashboard`,loadComponent:()=>import(`./chunk-CGfyD3XX2.js`).then(e=>e.Dashboard),canActivate:[r],data:m$4(l$1({shell:`administrator`},o(`client.read`,`quote.read`,`order.read`,`invoice.read`)),{titleKey:`page.back_office`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`})},{path:`account`,loadComponent:()=>import(`./chunk-k6TIcaIA.js`).then(e=>e.AccountLayout),children:c,canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`},de()),{titleKey:`account.security_title`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`})},{path:`client/account`,loadComponent:()=>import(`./chunk-k6TIcaIA.js`).then(e=>e.AccountLayout),children:c,canActivate:[Q],data:{shell:`client`,titleKey:`account.security_title`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`}},{path:`client/documents/:kind/:documentId`,loadComponent:()=>import(`./chunk-CApvwK4D.js`).then(e=>e.CustomerDocumentDetail),canActivate:[Q],data:{shell:`client`,titleKey:`page.back_office_client`,robots:`noindex, nofollow`}},{path:`client`,loadComponent:()=>import(`./chunk-CpXqQPuw.js`).then(e=>e.ClientPortal),canActivate:[Q],data:{shell:`client`,titleKey:`page.back_office_client`,descriptionKey:`page.description.back_office_client`,robots:`noindex, nofollow`}},{path:`clients`,loadComponent:()=>import(`./chunk-Bn6RkvPA2.js`).then(e=>e.Clients),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_clients`},o(`client.read`)),{descriptionKey:`page.description.back_office_clients`,robots:`noindex, nofollow`}),children:I(`active`,`clients`,[`active`,`archived`,`all`])},{path:`purchases`,loadComponent:()=>import(`./chunk-B8_dFe5w.js`).then(e=>e.SupplierInvoicesPage),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_supplier_invoices`},o(`supplier-invoice.read`)),{descriptionKey:`page.description.back_office_supplier_invoices`,robots:`noindex, nofollow`})},{path:`purchases/new`,loadComponent:()=>import(`./chunk-DMXgU6Nc2.js`).then(e=>e.SupplierInvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`,titleKey:`supplierInvoice.createTitle`},o(`supplier-invoice.create`)),{robots:`noindex, nofollow`})},{path:`purchases/analyze`,loadComponent:()=>import(`./chunk-IlM3eTPp2.js`).then(e=>e.SupplierInvoiceAnalysisPage),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`supplierInvoice.analysis.title`},o(`supplier-invoice.analyze`,`supplier.read`)),{modules:[`purchasing`,`ai`],robots:`noindex, nofollow`})},{path:`purchases/payments`,loadComponent:()=>import(`./chunk-CubfQf-X2.js`).then(e=>e.SupplierPaymentBatchesPage),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`supplierPaymentBatch.title`},o(`supplier-invoice.pay`,`supplier-invoice.read`)),{robots:`noindex, nofollow`})},{path:`purchases/:invoiceId/edit`,loadComponent:()=>import(`./chunk-DMXgU6Nc2.js`).then(e=>e.SupplierInvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`,titleKey:`supplierInvoice.editTitle`},o(`supplier-invoice.read`,`supplier-invoice.update`)),{robots:`noindex, nofollow`})},{path:`purchases/:invoiceId`,loadComponent:()=>import(`./chunk-CK6Sjqig.js`).then(e=>e.SupplierInvoiceDetail),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_supplier_invoices`},o(`supplier-invoice.read`)),{descriptionKey:`page.description.back_office_supplier_invoices`,robots:`noindex, nofollow`})},{path:`suppliers`,loadComponent:()=>import(`./chunk-tDREPM-0.js`).then(e=>e.Suppliers),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_suppliers`},o(`supplier.read`)),{descriptionKey:`page.description.back_office_suppliers`,robots:`noindex, nofollow`}),children:I(`active`,`suppliers`,[`active`,`archived`,`all`])},{path:`suppliers/new`,loadComponent:()=>import(`./chunk-D3XjW5Cm.js`).then(e=>e.SupplierEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`supplier.create`)),{titleKey:`supplier.createTitle`,robots:`noindex, nofollow`})},{path:`suppliers/:supplierId/edit`,loadComponent:()=>import(`./chunk-D3XjW5Cm.js`).then(e=>e.SupplierEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`supplier.read`,`supplier.update`)),{titleKey:`supplier.editTitle`,robots:`noindex, nofollow`})},{path:`suppliers/:supplierId`,loadComponent:()=>import(`./chunk-CLZ5xsSQ2.js`).then(e=>e.SupplierDetail),canActivate:[r],data:m$4(l$1({shell:`administrator`},o(`supplier.read`)),{titleKey:`page.back_office_supplier_detail`,descriptionKey:`page.description.back_office_supplier_detail`,robots:`noindex, nofollow`})},{path:`clients/new`,loadComponent:()=>import(`./chunk-fYJ7OBkh.js`).then(e=>e.ClientEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`client.create`)),{titleKey:`backOffice.clients.create`,robots:`noindex, nofollow`})},{path:`clients/:clientId/edit`,loadComponent:()=>import(`./chunk-fYJ7OBkh.js`).then(e=>e.ClientEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`client.read`,`client.update`)),{titleKey:`clientsWorkspace.edit`,robots:`noindex, nofollow`})},{path:`clients/:clientId/access/new`,loadComponent:()=>import(`./chunk-DdOc1fs-.js`).then(e=>e.ClientAccessEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`client.read`,`client.access.manage`)),{titleKey:`page.back_office_client_detail`,robots:`noindex, nofollow`})},{path:`clients/:clientId`,loadComponent:()=>import(`./chunk-BQrmVphu2.js`).then(e=>e.ClientDetail),canActivate:[r],canActivateChild:[h],canDeactivate:[t],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_client_detail`},o(`client.read`)),{descriptionKey:`page.description.back_office_client_detail`,robots:`noindex, nofollow`}),children:[{path:``,redirectTo:`profile`,pathMatch:`full`},{path:`profile`,component:w$2,data:{panel:`profile`}},{path:`affairs`,component:w$2,data:{panel:`affairs`}},{path:`documents`,component:w$2,data:{panel:`documents`}},{path:`access`,component:w$2,canActivate:[f],data:l$1({panel:`access`},o(`client.access.manage`))}]},{path:`affairs`,loadComponent:()=>import(`./chunk-DQr_9Q6T.js`).then(e=>e.Affairs),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_quotes`},o(`affair.read`)),{descriptionKey:`page.description.back_office_quotes`,robots:`noindex, nofollow`}),children:I(`attention`,`affairs`,[`attention`,`active`,`completed`,`all`])},{path:`affairs/:affairId`,loadComponent:()=>import(`./chunk-DpI44v1z.js`).then(e=>e.AffairDetail),canActivate:[r],canActivateChild:[h],children:[...I(`overview`,`affair-detail`,[`overview`]),{path:`history`,component:w$2,canActivate:[f],data:l$1({panel:`affair-detail`,tab:`history`},o(`audit.read`))}],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_affair_detail`},o(`affair.read`,`quote.read`,`order.read`,`invoice.read`)),{descriptionKey:`page.description.back_office_affair_detail`,robots:`noindex, nofollow`})},{path:`quotes/new`,loadComponent:()=>import(`./chunk-BT8KtCYG.js`).then(e=>e.QuoteEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`quote.create`,`client.read`,`catalog.read`,`condition.read`,`issuer.read`)),{titleKey:`page.back_office_quote_editor`,descriptionKey:`page.description.back_office_quote_editor`,robots:`noindex, nofollow`})},{path:`quotes/:quoteId/edit`,loadComponent:()=>import(`./chunk-BT8KtCYG.js`).then(e=>e.QuoteEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`quote.read`,`quote.update`,`client.read`,`catalog.read`,`condition.read`,`issuer.read`)),{titleKey:`page.back_office_quote_editor`,descriptionKey:`page.description.back_office_quote_editor`,robots:`noindex, nofollow`})},{path:`quotes/:quoteId/publication`,loadComponent:()=>import(`./chunk-yfBrkklv.js`).then(e=>e.QuotePublication),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`quote.read`,`quote.send`)),{titleKey:`commercial.publicationTitle`,robots:`noindex, nofollow`})},{path:`quotes/:quoteId`,loadComponent:()=>import(`./chunk-Dqhs2Pyw2.js`).then(e=>e.QuoteDetail),canActivate:[r],canActivateChild:[h],canDeactivate:[t],children:I(`summary`,`quote-detail`,[`summary`,`document`]),data:m$4(l$1({shell:`administrator`},o(`quote.read`)),{titleKey:`commercial.quote`,robots:`noindex, nofollow`})},{path:`orders/:orderId`,loadComponent:()=>import(`./chunk-CKFB1V-p2.js`).then(e=>e.OrderDetail),canActivate:[r],data:m$4(l$1({shell:`administrator`},o(`order.read`,`quote.read`)),{titleKey:`commercial.order`,robots:`noindex, nofollow`})},{path:`catalog/new`,loadComponent:()=>import(`./chunk-DIBFSF2Z.js`).then(e=>e.CatalogEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`catalog.manage`)),{titleKey:`catalog.create`,robots:`noindex, nofollow`})},{path:`catalog/:itemId/edit`,loadComponent:()=>import(`./chunk-DIBFSF2Z.js`).then(e=>e.CatalogEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`catalog.read`,`catalog.manage`)),{titleKey:`catalogWorkspace.editTitle`,robots:`noindex, nofollow`})},{path:`catalog`,loadComponent:()=>import(`./chunk-CuepVIkm2.js`).then(e=>e.Catalog),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`},o(`catalog.read`)),{titleKey:`catalog.title`,robots:`noindex, nofollow`}),children:I(`active`,`catalog`,[`active`,`archived`,`all`])},{path:`configuration`,loadComponent:()=>import(`./chunk--RuvStn6.js`).then(e=>e.Configuration),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`},de()),{titleKey:`page.back_office_issuer_settings`,descriptionKey:`page.description.back_office_issuer_settings`,robots:`noindex, nofollow`}),children:Ze},{path:`emails/new`,loadComponent:()=>import(`./chunk-DMskLhpk2.js`).then(e=>e.EmailComposer),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emailsWorkspace.newMessage`,robots:`noindex, nofollow`})},{path:`emails/drafts/:draftId/edit`,loadComponent:()=>import(`./chunk-DMskLhpk2.js`).then(e=>e.EmailComposer),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emailsWorkspace.editDraft`,robots:`noindex, nofollow`})},{path:`emails/messages/:operationId`,loadComponent:()=>import(`./chunk-DM4Wc9U7.js`).then(e=>e.EmailDetail),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emailsWorkspace.message`,robots:`noindex, nofollow`})},{path:`emails/templates/new`,loadComponent:()=>import(`./chunk-Ca3lwqEF.js`).then(e=>e.EmailTemplateEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.template.manage`)),{titleKey:`emailsWorkspace.newTemplate`,robots:`noindex, nofollow`})},{path:`emails/templates/:templateId/edit`,loadComponent:()=>import(`./chunk-Ca3lwqEF.js`).then(e=>e.EmailTemplateEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.template.manage`)),{titleKey:`emailsWorkspace.editTemplate`,robots:`noindex, nofollow`})},{path:`emails/reminders/new`,loadComponent:()=>import(`./chunk-CCr_R2Cg.js`).then(e=>e.ReminderEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.reminder.manage`)),{titleKey:`emailsWorkspace.newReminder`,robots:`noindex, nofollow`})},{path:`emails`,loadComponent:()=>import(`./chunk-DVJ4YZuU.js`).then(e=>e.Emails),canActivate:[r],canActivateChild:[h],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emails.title`,descriptionKey:`emails.intro`,robots:`noindex, nofollow`}),children:[{path:``,redirectTo:`messages`,pathMatch:`full`},{path:`messages`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`messages`},o(`integration.manage`))},{path:`drafts`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`drafts`},o(`email.draft.manage`))},{path:`reminders`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`reminders`},o(`email.reminder.manage`,`invoice.read`,`client.read`,`integration.manage`))},{path:`templates`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`templates`},o(`email.template.manage`))}]},{path:`version`,loadComponent:()=>import(`./chunk-CmokTGIG.js`).then(e=>e.Version),data:{shell:`standalone`,titleKey:`page.version`,descriptionKey:`page.description.version`}},{path:`404`,loadComponent:()=>import(`./chunk-DhLlQTD-2.js`).then(e=>e.NotFoundComponent),data:{titleKey:`page.not_found`,descriptionKey:`page.description.not_found`,robots:`noindex, nofollow`}},{path:`**`,loadComponent:()=>import(`./chunk-DhLlQTD-2.js`).then(e=>e.NotFoundComponent),data:{titleKey:`page.not_found`,descriptionKey:`page.description.not_found`,robots:`noindex, nofollow`}}];var ut=e=>e===`/api/auth/account`||e===`/api/auth/login`||e===`/api/auth/refresh`||e===`/api/auth/logout`||e===`/api/auth/password`||e===`/api/bootstrap`||e===`/api/team/accept`||e.startsWith(`/api/public/`)||e===`/api/health`||e===`/api/version`;var st=(e,t)=>{let a=g$2(v);return!e.url.startsWith(`/api/`)||ut(e.url)||e.headers.has(`Authorization`)?t(e):t(e).pipe(qa(s=>s.status!==401?fE(()=>s):nt$1(a.refresh()).pipe(Qa(()=>a.mode()===void 0?fE(()=>s):t(e)))))};var dt={providers:[DI(),uA(dA(),lA([st])),s8(o8(),i8()),Uo(ct,zo(),Po({anchorScrolling:`enabled`,scrollPositionRestoration:`enabled`}),$o(e=>{let t=e.error instanceof Error?e.error.message:String(e.error);if(!/chunk|dynamically imported module|importing a module script/i.test(t))return;let a=Number(sessionStorage.getItem(`froment.chunk-reload`));Date.now()-a<1e4||(sessionStorage.setItem(`froment.chunk-reload`,String(Date.now())),location.reload())}))]};var Y=class e{router=g$2(ue);document=g$2(H$3);injector=g$2(ce$3);isBrowser=xU(g$2(yo$1));navigationEnd=T$2(this.router.events.pipe(jt(t=>t instanceof x$2)),{initialValue:null});initialNavigationComplete=this.router.navigated;previousUrl=this.router.url;constructor(){ou(()=>{let t=this.navigationEnd();if(!t)return;let a=this.previousUrl;if(this.previousUrl=t.urlAfterRedirects,!this.initialNavigationComplete){this.initialNavigationComplete=!0;return}let s=this.router.parseUrl(t.urlAfterRedirects).fragment;a.split(/[?#]/,1)[0]===t.urlAfterRedirects.split(/[?#]/,1)[0]&&this.router.parseUrl(a).fragment===s||(s?this.focusFragment(s):this.focusMainAfterRender())})}focusFragment(t){this.isBrowser&&Ol(()=>{let a=this.document.getElementById(t);if(!a)return this.focusMain();let s=a.matches(`h1, h2, h3, h4, h5, h6, [role="heading"]`)?a:a.querySelector(`h1, h2, h3, h4, h5, h6, [role="heading"]`)??a;this.focusElement(s)},{injector:this.injector})}focusElement(t){let a=!t.hasAttribute(`tabindex`)&&!t.matches(`a[href], area[href], button, input, select, textarea, iframe, [contenteditable="true"]`);if(a&&(t.tabIndex=-1),t.focus({preventScroll:!0}),a){if(this.document.activeElement!==t)return t.removeAttribute(`tabindex`);t.addEventListener(`blur`,()=>t.removeAttribute(`tabindex`),{once:!0})}}focusMain(){this.document.getElementById(`main-content`)?.focus({preventScroll:!0})}focusMainAfterRender(){this.isBrowser&&Ol(()=>this.focusMain(),{injector:this.injector})}static ɵfac=function(a){return new(a||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};var J=class e{router=g$2(ue);route=g$2(G$2);i18n=g$2(Ie);title=g$2(r8);meta=g$2(n8);navigationEnd=T$2(this.router.events.pipe(jt(t=>t instanceof x$2)),{initialValue:null});constructor(){ou(()=>{this.i18n.language(),this.navigationEnd(),this.updateRoute()})}updateRoute(){let t=this.route.snapshot;for(;t.firstChild;)t=t.firstChild;this.setPageTitle(t.data.titleKey),this.meta.updateTag({name:`robots`,content:`noindex, nofollow`})}setPageTitle(t){if(t){let a=this.i18n.t(t).split(` | `)[0];this.title.setTitle(a)}}static ɵfac=function(a){return new(a||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};var X=class e{document=g$2(H$3);textCopy=g$2(a);hideTimer;message=Ke(null);async copy(t,a){let s=this.document.defaultView?.location;if(!s)return;let p=`${s.origin}${s.pathname}${s.search}#${t}`;await this.textCopy.copy(p)&&(clearTimeout(this.hideTimer),this.message.set(a),this.hideTimer=setTimeout(()=>this.message.set(null),2400))}static ɵfac=function(a){return new(a||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};function gt(e,t){e&1&&(pd(0,`div`,0),y_(1),hd()),e&2&&(ZC(),nv(t))}var Z=class e{anchorCopy=g$2(X);static ɵfac=function(a){return new(a||e)};static ɵcmp=Fb({type:e,selectors:[[`app-copy-notice`]],decls:1,vars:1,consts:[[`role`,`status`,`aria-live`,`polite`,1,`copy-notice`,`visible`]],template:function(a,s){if(a&1&&OS(0,gt,2,1,`div`,0),a&2){let p;kS((p=s.anchorCopy.message())?0:-1,p)}},styles:[`[_nghost-%COMP%]{display:contents}.copy-notice[_ngcontent-%COMP%]{position:fixed;right:var(--%NS%page-x);bottom:var(--%NS%space-4);z-index:var(--%NS%z-skip-link);max-width:min(24rem,100vw - 2 * var(--%NS%page-x));padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%color-line-strong);border-radius:var(--%NS%radius-sm);background:var(--%NS%color-surface-raised);box-shadow:var(--%NS%shadow-sm);font-size:var(--%NS%text-sm);opacity:0;pointer-events:none;transform:translateY(var(--%NS%space-2));transition:opacity var(--%NS%duration-base) var(--%NS%ease-out),transform var(--%NS%duration-base) var(--%NS%ease-out)}.copy-notice.visible[_ngcontent-%COMP%]{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.copy-notice[_ngcontent-%COMP%]{transition:none}}`]})};var ee=class e{administrator=NH(!1);static ɵfac=function(a){return new(a||e)};static ɵcmp=Fb({type:e,selectors:[[`app-back-office-header-placeholder`]],inputs:{administrator:[1,`administrator`]},decls:12,vars:2,consts:[[`aria-hidden`,`true`,1,`sidebar`],[1,`placeholder`,`account-placeholder`],[1,`navigation-placeholder`],[1,`placeholder`],[`aria-hidden`,`true`,1,`workspace-header`],[1,`placeholder`,`search-placeholder`],[1,`placeholder`,`actions-placeholder`]],template:function(a,s){a&1&&(Us(0,`div`,0),Py(1,`span`,1),Us(2,`div`,2),Py(3,`span`,3)(4,`span`,3)(5,`span`,3)(6,`span`,3)(7,`span`,3),fd()(),Us(8,`div`,4),Py(9,`app-navigation-progress`)(10,`span`,5)(11,`span`,6),fd()),a&2&&(ZC(8),Xy(`administrator`,s.administrator()))},dependencies:[v$2],styles:[`[_nghost-%COMP%]{display:contents}.sidebar[_ngcontent-%COMP%]{grid-area:sidebar;position:sticky;inset-block-start:0;block-size:100dvh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--%NS%space-5);padding:var(--%NS%space-4);border-inline-end:1px solid var(--%NS%color-line);background:var(--%NS%color-header)}@media(max-width:63.999rem){.sidebar[_ngcontent-%COMP%]{display:none}}.workspace-header[_ngcontent-%COMP%]{grid-area:header;position:sticky;inset-block-start:0;z-index:var(--%NS%z-header);display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3);min-block-size:3.75rem;padding:var(--%NS%space-3) var(--%NS%page-x);border-block-end:1px solid var(--%NS%color-line);background:var(--%NS%color-surface)}.placeholder[_ngcontent-%COMP%]{display:block;block-size:1.5rem;border-radius:var(--%NS%radius-xs);background:var(--%NS%color-surface-sunken)}.account-placeholder[_ngcontent-%COMP%]{block-size:3.75rem}.navigation-placeholder[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4)}.search-placeholder[_ngcontent-%COMP%]{inline-size:min(100%,32rem);block-size:var(--%NS%control-height)}.actions-placeholder[_ngcontent-%COMP%]{display:none;inline-size:12rem;block-size:var(--%NS%control-height)}@media(max-width:40rem){.administrator[_ngcontent-%COMP%] .search-placeholder[_ngcontent-%COMP%]{inline-size:100%}.administrator[_ngcontent-%COMP%] .actions-placeholder[_ngcontent-%COMP%]{display:block}}@media print{.sidebar[_ngcontent-%COMP%], .workspace-header[_ngcontent-%COMP%]{display:none}}`]})};var vt=()=>[import(`./chunk-C0gTeWW62.js`).then(e=>e.FlashOutlet)];var ht=()=>[import(`./chunk-CL02A9wI.js`).then(e=>e.BackOfficeHeader)];function yt(e,t){if(e&1&&Py(0,`app-back-office-header`,8),e&2)Fy(`administrator`,qS(2).administrator())}function bt(e,t){if(e&1&&Py(0,`app-back-office-header-placeholder`,8),e&2)Fy(`administrator`,qS(2).administrator())}function St(e,t){if(e&1){let a=zS();Us(0,`div`,9),Py(1,`app-navigation-progress`),Us(2,`p`,10),y_(3),fd(),Us(4,`button`,11),Gy(`click`,function(){Ip(a);return wp(qS(2).reload())}),y_(5),fd()()}if(e&2){let a=qS(2);ZC(3),nv(a.i18n.t(`shell.navigationUnavailable`)),ZC(2),nv(a.i18n.t(`shell.reload`))}}function kt(e,t){if(e&1&&(wy(0,yt,1,1)(1,bt,1,1)(2,St,6,2),MS(3,0,ht,null,1,2)),e&2){let a=qS();ZC(3),NS(a.startup()===`ready`)}}function Ct(e,t){e&1&&Py(0,`app-navigation-progress`,3)}function Mt(e,t){if(e&1&&Py(0,`app-environment-status`,4),e&2)Fy(`publicPage`,qS().publicPage())}function xt(e,t){if(e&1&&(Us(0,`div`,6),Py(1,`span`,12),Us(2,`p`),y_(3),fd()()),e&2){let a=qS();ZC(3),nv(a.i18n.t(`shell.loading`))}}function _t(e,t){if(e&1){let a=zS();Us(0,`div`,7)(1,`p`,10),y_(2),fd(),Us(3,`button`,11),Gy(`click`,function(){Ip(a);return wp(qS().reload())}),y_(4),fd()()}if(e&2){let a=qS();ZC(2),nv(a.i18n.t(`shell.loadError`)),ZC(2),nv(a.i18n.t(`shell.reload`))}}function Nt(e,t){e&1&&Py(0,`app-flash-outlet`)}jN(class e{i18n=g$2(Ie);router=g$2(ue);navigating=Ft(()=>this.router.currentNavigation()!==null);document=g$2(H$3);transferState=g$2(At$1);initialShell=this.router.navigated?$(this.router.routerState.snapshot.root):this.transferState.get(le,void 0);shell=Ke(this.initialShell);startup=Ke(this.initialShell===void 0?`loading`:`ready`);backOffice=Ft(()=>this.shell()===`administrator`||this.shell()===`client`);administrator=Ft(()=>this.shell()===`administrator`);standalonePage=Ft(()=>this.shell()===`standalone`);publicPage=Ft(()=>this.shell()===`public`);constructor(){g$2(Y),g$2(J),this.transferState.onSerialize(le,()=>this.shell()),this.router.events.pipe(U$1()).subscribe(t=>{t instanceof x$2?(this.shell.set($(this.router.routerState.snapshot.root)),this.startup.set(`ready`)):this.startup()!==`ready`&&(t instanceof je?(this.shell.set($(t.state.root)),this.startup.set(`loading`)):t instanceof J$3?this.startup.set(`loading`):(t instanceof se$1||t instanceof H$2||t instanceof j$3&&t.code!==b$2.Redirect&&t.code!==b$2.SupersededByNewNavigation)&&this.startup.set(`error`))})}reload(){this.document.defaultView?.location.reload()}static ɵfac=function(a){return new(a||e)};static ɵcmp=Fb({type:e,selectors:[[`app-root`]],decls:15,vars:12,consts:[[`mainContent`,``],[1,`app-shell`],[`href`,`#main-content`,1,`skip-link`,3,`click`],[1,`standalone-progress`],[`ngSkipHydration`,``,`placement`,`hidden`,3,`publicPage`],[`id`,`main-content`,`tabindex`,`-1`],[`role`,`status`,1,`startup-status`],[1,`startup-status`],[3,`administrator`],[1,`header-error`],[`role`,`alert`],[`appButton`,``,`type`,`button`,3,`click`],[`aria-hidden`,`true`,1,`loading-spinner`]],template:function(a,s){if(a&1){let p=zS();Us(0,`div`,1)(1,`a`,2),Gy(`click`,function(M){Ip(p);let x=t_(7);return M.preventDefault(),wp(x.focus({preventScroll:!0}))}),y_(2),fd(),OS(3,kt,5,1)(4,Ct,1,0,`app-navigation-progress`,3),OS(5,Mt,1,1,`app-environment-status`,4),Us(6,`main`,5,0),OS(8,xt,4,1,`div`,6)(9,_t,5,2,`div`,7),wy(10,Nt,1,0),MS(11,10,vt),Py(13,`router-outlet`),fd(),Py(14,`app-copy-notice`),fd()}a&2&&(Xy(`back-office-shell`,s.backOffice())(`standalone-shell`,s.standalonePage()),ZC(2),nv(s.i18n.t(`shell.skip`)),ZC(),kS(s.backOffice()?3:s.standalonePage()?4:-1),ZC(2),kS(s.backOffice()?-1:5),ZC(),Xy(`startup-main`,s.startup()!==`ready`),ky(`aria-busy`,s.navigating()),ZC(2),kS(s.startup()===`loading`?8:s.startup()===`error`?9:-1),ZC(3),NS(s.backOffice()))},dependencies:[ee,N,Z,M$1,v$2,gr],styles:[`[_nghost-%COMP%]{display:block;min-height:100dvh}.app-shell[_ngcontent-%COMP%]{display:flex;min-width:0;min-height:100dvh;flex-direction:column;color:var(--%NS%color-ink)}.back-office-shell[_ngcontent-%COMP%]{display:grid;grid-template-columns:16rem minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"sidebar header" "sidebar content";align-items:start;background:var(--%NS%color-surface)}.back-office-shell[_ngcontent-%COMP%] main[_ngcontent-%COMP%]{grid-area:content;width:100%;max-width:var(--%NS%page-width-wide);margin-block:0;margin-inline:auto}.back-office-shell[_ngcontent-%COMP%] app-copy-notice[_ngcontent-%COMP%]{display:contents}.startup-main[_ngcontent-%COMP%]{display:flex;align-self:stretch}.startup-status[_ngcontent-%COMP%], .header-error[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%page-y) var(--%NS%page-x);color:var(--%NS%color-muted)}.startup-status[_ngcontent-%COMP%]{flex:1;min-width:0;flex-direction:column;flex-wrap:nowrap;justify-content:center;gap:var(--%NS%space-4);color:var(--%NS%color-ink);font-size:var(--%NS%text-xl);text-align:center}.header-error[_ngcontent-%COMP%]{position:relative;grid-area:header}.standalone-progress[_ngcontent-%COMP%]{position:fixed;inset-block-start:0}.loading-spinner[_ngcontent-%COMP%]{flex:none;inline-size:3rem;block-size:3rem;border:3px solid var(--%NS%color-line-strong);border-block-start-color:var(--%NS%color-ink);border-radius:50%}@media(prefers-reduced-motion:no-preference){.loading-spinner[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_loading-spin .8s linear infinite}}@keyframes _ngcontent-%COMP%_loading-spin{to{transform:rotate(360deg)}}@media(max-width:63.999rem){.back-office-shell[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr);grid-template-areas:"header" "content"}}.skip-link[_ngcontent-%COMP%]{position:fixed;top:var(--%NS%space-2);inset-inline-start:var(--%NS%space-3);z-index:var(--%NS%z-skip-link);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%color-line-strong);border-radius:var(--%NS%radius-sm);background:var(--%NS%color-surface-raised);font-size:var(--%NS%text-sm);clip-path:inset(50%);translate:0 calc(-100% - var(--%NS%space-6))}.skip-link[_ngcontent-%COMP%]:focus-visible{clip-path:none;translate:0 0}main[_ngcontent-%COMP%]{flex:1;min-width:0;width:calc(100% - 2 * var(--%NS%shell-gutter));max-width:var(--%NS%layout-max);margin-block:var(--%NS%shell-gutter);margin-inline:auto;outline:none}.standalone-shell[_ngcontent-%COMP%] main[_ngcontent-%COMP%]{width:100%;max-width:none;margin:0}#main-content[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--%NS%color-focus);outline-offset:-2px;box-shadow:none}@media print{.back-office-shell[_ngcontent-%COMP%] main[_ngcontent-%COMP%]{max-width:none}.back-office-shell[_ngcontent-%COMP%]{display:block}main[_ngcontent-%COMP%]{width:100%;max-width:none;margin:0}}`],changeDetection:1})},dt).catch(e=>console.error(e));export{oe$2 as C,x$2 as E,gr as S,ue as T,o$3 as _,T$2 as a,No as b,O$1 as c,M$1 as d,u$1 as f,bt$1 as g,Ne as h,r$1 as i,r$2 as l,Ie as m,v as n,U$1 as o,v$2 as p,N as r,a as s,o$1 as t,c as u,Dt as v,p$4 as w,ce$2 as x,G$2 as y};
|
|
89
|
+
Thank you.`,"services.offer.renovation.title":`Audit and renovation`,"services.offer.renovation.desc":`We assess your projects, environment, risks and gaps. We then propose fixes, upgrades, automation and gradual refactoring.`,"services.offer.renovation.cta":`View audit and renovation details`,"services.offer.development.title":`All-inclusive development`,"services.offer.development.desc":`We handle the design, implementation, testing and deployment of a business application or internal tool.`,"services.offer.development.cta":`View development details`,"serviceDetail.back":`Back to services`,"serviceDetail.renovation.title":`Audit and renovation`,"serviceDetail.renovation.lead":`Understand the real problems before investing, then modernize existing software without a systematic rewrite.`,"serviceDetail.renovation.scope.title":`What we assess and improve`,"serviceDetail.renovation.scope.projects.title":`Projects and architecture`,"serviceDetail.renovation.scope.projects.desc":`Code structure, dependencies, data flows, weak points and capacity for further change.`,"serviceDetail.renovation.scope.delivery.title":`Delivery pipeline`,"serviceDetail.renovation.scope.delivery.desc":`Builds, tests, continuous integration, deployments and lead time from a change to production.`,"serviceDetail.renovation.scope.quality.title":`CVEs, vulnerabilities and secrets`,"serviceDetail.renovation.scope.quality.desc":`CVE and vulnerability detection with static analysis tools suited to each language. Detection of secrets in source code and Git history.`,"serviceDetail.renovation.scope.quality.staticAnalysis":`Static analysis tools`,"serviceDetail.renovation.scope.quality.trufflehog":`TruffleHog`,"serviceDetail.renovation.scope.environment.title":`Working environment`,"serviceDetail.renovation.scope.environment.desc":`Local setup, secrets, documentation, tools and problems faced by the existing team.`,"serviceDetail.renovation.deliverables.title":`What you receive`,"serviceDetail.renovation.deliverables.audit":`A documented, factual assessment ranked by risk level.`,"serviceDetail.renovation.deliverables.plan":`A prioritized improvement plan with costs, dependencies and expected results.`,"serviceDetail.renovation.deliverables.work":`The fixes and renovation agreed in the quote, validated in your environment.`,"serviceDetail.renovation.deliverables.handover":`The code, tests, documentation and instructions required for subsequent work.`,"serviceDetail.renovation.fit.title":`This service fits if…`,"serviceDetail.renovation.fit.desc":`Your software remains useful, but it is slow to change, hard to deploy or risky to maintain.`,"serviceDetail.development.title":`All-inclusive development`,"serviceDetail.development.lead":`One contact to turn a business need into tested, deployed and documented software.`,"serviceDetail.development.scope.title":`End-to-end delivery`,"serviceDetail.development.scope.design.title":`Design`,"serviceDetail.development.scope.design.desc":`Clarification of uses, journeys, data, constraints and approval criteria.`,"serviceDetail.development.scope.build.title":`Implementation`,"serviceDetail.development.scope.build.desc":`Development of the interface, business rules, integrations and required automation.`,"serviceDetail.development.scope.tests.title":`Testing`,"serviceDetail.development.scope.tests.desc":`Automated tests and functional checks focused on product uses and risks.`,"serviceDetail.development.scope.deploy.title":`Deployment`,"serviceDetail.development.scope.deploy.desc":`Reproducible rollout, environment configuration and preparation for operations.`,"serviceDetail.development.deliverables.title":`What is included`,"serviceDetail.development.deliverables.product":`A web application, desktop application or internal tool that meets the approved scope.`,"serviceDetail.development.deliverables.source":`The source code and dependencies required to build the product.`,"serviceDetail.development.deliverables.tests":`Automated tests and the criteria used to approve delivery.`,"serviceDetail.development.deliverables.operations":`Documentation and instructions for deployment, use and maintenance.`,"serviceDetail.development.fit.title":`This service fits if…`,"serviceDetail.development.fit.desc":`You have a precise business need and want to delegate delivery through production rollout.`,"services.examples.title":`Concrete examples`,"services.examples.upgrades.title":`Version upgrades`,"services.examples.upgrades.desc":`Upgrade dependencies and libraries, resolve incompatibilities, then validate behaviour through tests.`,"services.examples.build.title":`Build pipeline`,"services.examples.build.before":`Make builds reproducible with`,"services.examples.build.after":`: declared dependencies, identical environments and shared caches.`,"services.examples.ci.title":`Continuous integration`,"services.examples.ci.desc":`Take over an existing CI pipeline, remove unnecessary work, parallelize stages and cache reusable results.`,"services.examples.tests.title":`Automated tests`,"services.examples.tests.desc":`Add unit, integration and architecture tests to stabilize existing software and automatically verify application behaviour.`,"services.examples.environments.title":`Development environments`,"services.examples.environments.before":`Declare and automate reproducible development environments with`,"services.examples.secrets.title":`Secret management`,"services.examples.secrets.before":`Centralize secrets in an on-premises vault, a cloud service or a lightweight solution:`,"services.examples.secrets.through":`Automate their injection into applications with`,"services.examples.ai.title":`AI agents`,"services.examples.ai.before":`Integrate specialized agents into design discussions: backlog preparation, meeting analysis and live prototyping with`,"services.examples.ai.usage":`Track usage, models and costs with`,"services.examples.metrics.title":`Technical measurements`,"services.examples.metrics.before":`Measure response, test, build, CI and deployment times. Publish timestamped indicators to`,"services.examples.metrics.after":`to track measured values instead of estimates.`,"services.examples.infrastructure.title":`Infrastructure and deployment`,"services.examples.infrastructure.before":`Declare, test and reproduce on-premises or cloud deployments with NixOS, build caching and infrastructure as code through`,"services.examples.or":`or`,"services.process.kicker":`Delivery method`,"services.process.title":`How an engagement works`,"services.process.analysis.title":`Qualify the need`,"services.process.analysis.desc":`We perform a limited initial review to understand the context and prepare the quote. The full audit starts after approval.`,"services.process.quote.title":`Prepare the quote`,"services.process.quote.desc":`We provide a detailed quote. It defines the services, deliverables, schedule and price.`,"services.process.agreement.title":`Approve the scope`,"services.process.agreement.desc":`You accept the proposal. If we then refine an objective or the scope, we submit an updated quote before work starts.`,"services.process.delivery.title":`Deliver the work`,"services.process.delivery.desc":`We deliver the work in close contact with your stakeholders and existing development team.`,"services.process.validation.title":`Approve delivery`,"services.process.validation.desc":`You approve the deliverables against the quote criteria, then pay the remaining balance.`,"services.practical.title":`In practice`,"services.practical.method":`Method`,"services.practical.method.desc":`The quote defines scope, price, deliverables and acceptance criteria.`,"services.practical.schedule":`Schedule`,"services.practical.schedule.desc":`The schedule is defined from the scope, dependencies and expected approvals.`,"services.practical.deliverables":`Deliverables`,"services.practical.deliverables.desc":`Source code, tests, documentation and rollout instructions appropriate to the engagement.`,"services.criteria.title":`Useful information to get started`,"services.criteria.context":`The context and affected users.`,"services.criteria.problem":`The main problem or expected result.`,"services.criteria.deadline":`The known deadline and technical constraints.`,"serviceDetail.contact.title":`Discuss your need`,"clients.title":`Experience`,"clients.sectors.title":`Industry experience`,"clients.cv":`View full CV`,"clients.sector.industry":`Industry`,"clients.sector.insurance":`Insurance`,"clients.sector.services":`Services`,"about.faq.title":`Frequently asked questions`,"about.faq.intro":`Direct answers about how a collaboration works.`,"about.faq.process.q":`How does an engagement work?`,"about.faq.stack.q":`How do you choose technologies?`,"about.faq.remote.q":`Do you work remotely?`,"about.faq.nda.q":`Do you accept confidentiality agreements?`,"about.faq.timeline.q":`How do you set the schedule?`,"about.faq.maintenance.q":`Do you offer maintenance after delivery?`,"about.faq.pricing.q":`How are services billed?`,"about.faq.availability.q":`What is your availability?`,"about.faq.process.a":`An initial discussion identifies the need, constraints and success criteria. The quote then defines scope, deliverables and follow-up terms before development and go-live.`,"about.faq.stack.a":`The choice depends on the product, team and existing system. Technologies used: Angular, SvelteKit, ASP.NET, WPF, Go, Linux and PostgreSQL.`,"about.faq.remote.a":`Yes. Work is mainly remote, with review points agreed for each engagement.`,"about.faq.nda.a":`Yes, after agreement on the obligations, duration and information covered.`,"about.faq.timeline.a":`The schedule depends on scope, dependencies and expected approvals. It is defined in the quote rather than promised before scoping.`,"about.faq.maintenance.a":`Yes. Fixes, upgrades and further changes can be included in the quote or agreed after delivery.`,"about.faq.pricing.a":`Fixed-price when the scope is stable enough. Uncertainty is first isolated in a scoping phase.`,"about.faq.availability.a":`Engagements are scheduled part-time. The start date is confirmed before the quote.`,"not_found.title":`This page does not exist.`,"not_found.lead":`Check the address or return to the home page.`,"not_found.cta":`Back to home`,"not_found.links_label":`Next steps`,"not_found.services":`View services`,"not_found.contact":`Email Froment Software`,"about.contact.title":`Contact`,"about.contact.mail":`Email us`,"about.contact.book":`Book an appointment`,"blog.title":`Blog`,"blog.lead":`Technical notes, experience reports and ideas.`,"blog.topics":`Topics`,"blog.back":`Back to the blog`,"blog.missing":`Article not found`,"legal.kicker":`Site information`,"legal.title":`Legal notice`,"legal.lead":`Essential information about the publishing, hosting and use of froment.software content.`,"legal.updated":`Updated 19 August 2026`,"legal.summary.title":`At a glance`,"legal.summary.content":`froment.software presents Sacha FROMENT’s software-engineering consultancy work and services. Its private area provides accounts for clients and administrators.`,"legal.publisher.title":`Site publisher`,"legal.publisher.content":`froment.software is published and maintained by Sacha FROMENT. Administrative or legal requests can be sent by email.`,"legal.hosting.title":`Hosting`,"legal.hosting.content":`The site is served as a static website and hosted on private infrastructure administered by the publisher. Technical requests relating to hosting can be sent to the same contact.`,"legal.ip.title":`Content and intellectual property`,"legal.ip.content":`Unless stated otherwise, text, graphics and components created for froment.software remain their author’s property. Short quotations with attribution are permitted; any other reuse requires prior agreement.`,"legal.links.title":`External links`,"legal.links.content":`The site links to demonstrations, a booking service and other websites. Their content and practices are the responsibility of their respective publishers.`,"legal.contact.title":`Contact`,"legal.contact.content":`For a question about the site, its content or a legal request:`,"legal.related.title":`Related documents`,"legal.related.content":`You can also read how technical data and the language preference are handled.`,"legal.related.privacy":`Privacy policy`,"legal.related.cookies":`Cookies and local storage`,"privacy.kicker":`Data and browsing`,"privacy.title":`Privacy policy`,"privacy.lead":`What this site processes automatically, what it keeps in your browser and how to ask a question.`,"privacy.updated":`Updated 19 August 2026`,"privacy.summary.title":`Key points`,"privacy.summary.content":`The site has no advertising tool or audience analytics. The server may log technical requests. The browser stores the language and, after sign-in, two strictly necessary cookies.`,"privacy.who.title":`Site operator`,"privacy.who.content":`Sacha FROMENT publishes froment.software and handles requests about data processed by this site.`,"privacy.data.title":`Technical server logs`,"privacy.data.content":`When a page or file is loaded, the server may automatically log request data such as the IP address, date and time, requested path, user agent and response status. This technical logging results from the request sent to the server; it is not presented as consent-based. It may be used for service diagnosis, availability and security.`,"privacy.retention.title":`Log retention`,"privacy.retention.content":`No fixed duration is stated here because it depends on the operating configuration. You may request current information about retention or the handling of a specific request.`,"privacy.storage.title":`Language preference`,"privacy.storage.content":`The site stores the selected language in the browser’s local storage under the key “froment.software.language”, with the value “fr” or “en”. This setting persists until it is changed or cleared in the browser. It is neither a cookie nor a session.`,"privacy.session.title":`Private area`,"privacy.session.content":`After sign-in, the browser temporarily stores an access token in memory. A secure refresh cookie maintains access for up to 30 days. The server restricts this cookie to authentication routes.`,"privacy.external.title":`Email and external services`,"privacy.external.content":`Contact links open your email application; the site itself does not send a message. If you follow a link to another domain, that service applies its own data-handling rules.`,"privacy.rights.title":`Data requests`,"privacy.rights.content":`You may ask what technical data is available, report an error or request deletion when the request can be identified. An IP address, date and time range may be needed to locate a log entry. This is practical information, not legal advice.`,"privacy.contact.title":`Contact`,"privacy.contact.content":`For a privacy question or data request:`,"privacy.related.title":`Related information`,"privacy.related.cookies":`Details about cookies and local storage`,"privacy.related.legal":`Legal notice`,"cookies.kicker":`Browser storage`,"cookies.title":`Cookies and local storage`,"cookies.lead":`The public site only stores the display language. The private area uses two strictly necessary cookies after sign-in.`,"cookies.updated":`Updated 19 August 2026`,"cookies.summary.title":`Current behaviour`,"cookies.summary.content":`The application creates no audience analytics or advertising cookie. The “__Secure-froment-refresh” cookie maintains private-area authentication.`,"cookies.what.title":`Cookies and local storage are different`,"cookies.what.content":`A cookie may be sent to the server automatically with a request. Local storage remains in the browser. froment.software uses local storage for language and cookies only for the private area.`,"cookies.why.title":`Stored setting`,"cookies.why.content":`The key “froment.software.language” contains “fr” or “en”. If no valid value exists, the site selects French when the browser language starts with “fr”, and English otherwise, then stores that choice locally.`,"cookies.control.title":`Change or clear the setting`,"cookies.control.content":`Use the language selector in the header to replace the value. You can also clear site data in your browser settings. The site will continue to work and will detect the language again on the next load.`,"cookies.privacy.title":`Technical data`,"cookies.privacy.content":`Local storage is separate from the technical logs the server may produce when responding to a request.`,"cookies.privacy.link":`Read the privacy policy`,"cookies.contact.title":`Contact`,"cookies.contact.content":`For a question about this setting or how the site works:`})};function ye(t){let i=[],n=0,a=-1;for(let s=0;s<t.length;s+=1)t[s]===`{`?a=s:t[s]===`}`&&(a>=n&&a+1<s&&(a>n&&i.push({kind:`text`,value:t.slice(n,a)}),i.push({kind:`parameter`,name:t.slice(a+1,s)}),n=s+1),a=-1);return n<t.length&&i.push({kind:`text`,value:t.slice(n)}),i}function Ce(t,i){return t.map(n=>n.kind===`text`?n.value:Object.hasOwn(i,n.name)?String(i[n.name]):`{${n.name}}`).join(``)}var xe=[{code:`fr`,labelKey:`lang.fr`},{code:`en`,labelKey:`lang.en`}];function o$3(t,i){return ke[t][i]}var Pe={fr:new Intl.PluralRules(`fr`),en:new Intl.PluralRules(`en`)};var Te=new Map;function bt$1(t,i){return Re(o$3(t,i))}function we(t,i,n){return Oe(o$3(t,i),n)}function Ae(t,i,n){let a=`${i}.one`,s=`${i}.other`;return Ee(t,{one:o$3(t,a),other:o$3(t,s)},n)}function Ee(t,i,n){if(!Number.isSafeInteger(n.count)||n.count<0)throw new RangeError(`Le compteur de traduction doit être un entier sûr positif ou nul.`);return Oe(i[Pe[t].select(n.count)===`one`?`one`:`other`],n)}function Oe(t,i){return Ce(Re(t),i)}function Re(t){let i=Te.get(t);return i===void 0&&(i=ye(t),Te.set(t,i)),i}var ce$1={fr:{invoiceReceiptList:{summary:`Lister les encaissements enregistrés`,description:`Retourne les encaissements actifs et annulés avec leur facture et leur client. Inclut la date, l’auteur et le motif des corrections. Cette lecture ne crée aucun encaissement. Les paiements de test Stripe sont exclus. La limite est de 10 000 lignes. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},creditNoteList:{summary:`Lister les avoirs émis`,description:`Retourne les avoirs persistés avec leur facture, leur commande et leur client. Les montants proviennent de l’avoir immuable. Cette lecture ne modifie aucun document. La limite est de 10 000 lignes. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},invoiceRefundList:{summary:`Lister les remboursements enregistrés`,description:`Retourne les saisies actives et annulées avec leur facture et leur client. Une saisie locale ne prouve aucun virement bancaire. Cette lecture ne déclenche aucun remboursement. La limite est de 10 000 lignes. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},invoiceHistory:{summary:`Lire l’historique d’une facture`,description:`Retourne les événements persistés de la facture et de ses documents, par date décroissante. Exige aussi audit.read. Aucun événement n’est déduit du statut actuel. Une facture absente produit une réponse 404. La limite est de 10 000 événements, documents compris. Au-delà, retourne 413 avec invoice.workspace_limit, sans résultat partiel.`},bankTransactionGet:{summary:`Consulter une opération bancaire`,description:`Retourne une opération importée avec ses affectations et ses montants restants. La lecture par identifiant ne dépend pas de la limite de la liste. Elle ne contacte aucune banque.`},bankImportPreview:{summary:`Valider un relevé avant import`,description:`Valide le compte et toutes les lignes CSV avec le parseur utilisé par l’import. Distingue les opérations nouvelles des opérations déjà présentes. Ne persiste aucune ligne. La confirmation revalide le relevé dans la transaction d’import.`},bankLedgerEntryGet:{summary:`Consulter une écriture bancaire`,description:`Retourne une écriture persistée par identifiant, indépendamment de la période du journal. Inclut la référence de sa source et ses lignes comptables. Ne crée aucune écriture ni contrepassation.`},bankLedgerSourceGet:{summary:`Consulter une source à comptabiliser`,description:`Retourne le contexte d’un débit bancaire ou d’une commission de rapprochement. La comptabilisation reste une action distincte et explicite. Ce journal local ne constitue pas une comptabilité générale.`}},en:{invoiceReceiptList:{summary:`List recorded receipts`,description:`Returns active and cancelled receipts with their invoice and client. Includes the date, actor and reason for corrections. This read creates no receipt. Stripe test payments are excluded. The limit is 10,000 rows. Larger results return 413 with invoice.workspace_limit and no partial result.`},creditNoteList:{summary:`List issued credit notes`,description:`Returns persisted credit notes with their invoice, order and client. Amounts come from the immutable credit note. This read changes no document. The limit is 10,000 rows. Larger results return 413 with invoice.workspace_limit and no partial result.`},invoiceRefundList:{summary:`List recorded refunds`,description:`Returns active and cancelled records with their invoice and client. A local record does not prove a bank transfer. This read initiates no refund. The limit is 10,000 rows. Larger results return 413 with invoice.workspace_limit and no partial result.`},invoiceHistory:{summary:`Read invoice history`,description:`Returns persisted invoice and document events in descending date order. Also requires audit.read. No event is inferred from the current status. A missing invoice returns 404. The limit is 10,000 events, including document events. Larger results return 413 with invoice.workspace_limit and no partial result.`},bankTransactionGet:{summary:`Read a bank transaction`,description:`Returns an imported transaction with its allocations and remaining amounts. Access by identifier does not depend on the list limit. This read contacts no bank.`},bankImportPreview:{summary:`Validate a statement before import`,description:`Validates the account and all CSV rows with the import parser. Separates new transactions from existing transactions. Persists no row. Confirmation validates the statement again within the import transaction.`},bankLedgerEntryGet:{summary:`Read a bank ledger entry`,description:`Returns a persisted entry by identifier, independently of the journal period. Includes its source reference and accounting lines. Creates no entry or reversal.`},bankLedgerSourceGet:{summary:`Read a source to post`,description:`Returns the context of a bank debit or reconciliation fee. Posting remains a separate, explicit action. This local journal is not general accounting.`}}};var qe={providerEmailGet:[`Lire l’état du courriel`,`Read email delivery status`],providerEmailCancel:[`Annuler le courriel`,`Cancel email`],providerEmailEvents:[`Lire les événements du courriel`,`Read email events`],providerEmailVerifyWebhook:[`Vérifier une notification de courriel`,`Verify an email notification`],providerSignatureGet:[`Lire le dossier de signature`,`Read signature request`],providerSignatureCancel:[`Annuler la signature`,`Cancel signature request`],providerSignatureRemind:[`Relancer les signataires`,`Remind signers`],providerSignatureDocument:[`Récupérer le document signé`,`Retrieve signed document`],providerSignatureProof:[`Récupérer la preuve de signature`,`Retrieve signature evidence`],providerSignatureEvents:[`Lire les événements de signature`,`Read signature events`],providerSignatureVerifyWebhook:[`Vérifier une notification de signature`,`Verify a signature notification`],providerPaymentGet:[`Lire le paiement fournisseur`,`Read provider payment`],providerPaymentCancel:[`Annuler le paiement fournisseur`,`Cancel provider payment`],providerPaymentCapture:[`Capturer le paiement autorisé`,`Capture an authorized payment`],providerPaymentRefund:[`Demander un remboursement`,`Request a refund`],providerPaymentGetRefund:[`Lire le remboursement`,`Read refund status`],providerPaymentEvents:[`Lire les événements de paiement`,`Read payment events`],providerPaymentVerifyWebhook:[`Vérifier une notification de paiement`,`Verify a payment notification`],providerBankConnect:[`Préparer une connexion bancaire`,`Prepare a bank connection`],providerBankConnection:[`Lire la connexion bancaire`,`Read bank connection`],providerBankRevoke:[`Révoquer la connexion bancaire`,`Revoke bank connection`],providerBankAccounts:[`Lister les comptes bancaires`,`List bank accounts`],providerBankTransactions:[`Lister les opérations bancaires`,`List bank transactions`],providerBankVerifyWebhook:[`Vérifier une notification bancaire`,`Verify a bank notification`],providerElectronicInvoiceGet:[`Lire le statut de facturation électronique`,`Read electronic invoice status`],providerElectronicInvoiceCancel:[`Annuler la transmission électronique`,`Cancel electronic invoice submission`],providerElectronicInvoiceDownload:[`Récupérer la facture électronique`,`Retrieve electronic invoice`],providerElectronicInvoiceInbox:[`Lister les factures électroniques reçues`,`List received electronic invoices`],providerElectronicInvoiceReport:[`Transmettre un rapport électronique`,`Submit an electronic report`],providerElectronicInvoiceGetReport:[`Lire le statut du rapport`,`Read electronic report status`],providerElectronicInvoiceEvents:[`Lire les événements de facturation électronique`,`Read electronic invoice events`],providerElectronicInvoiceVerifyWebhook:[`Vérifier une notification de facturation électronique`,`Verify an electronic invoice notification`]};var _e="> [!important]\n> Implémentation actuelle : mock sans effet externe. `executed: false` est obligatoire en mode simulation. `preview` contient un exemple, jamais un résultat réel.\n\nChaque appel est indépendant. Aucun statut métier, règlement ou document local ne change. Les fichiers restent indisponibles et les notifications restent non vérifiées. Les routes de vérification ne sont pas des récepteurs publics de webhooks.";var ze="> [!important]\n> Current implementation: mock without external effects. Simulation requires `executed: false`. `preview` contains an example, never an actual result.\n\nEach call is independent. No business status, payment, or local document changes. Files remain unavailable and notifications remain unverified. Verification routes are not public webhook receivers.";var le$2={fr:Object.fromEntries(Object.entries(qe).map(([t,[i]])=>[t,{summary:i,description:_e}])),en:Object.fromEntries(Object.entries(qe).map(([t,[,i]])=>[t,{summary:i,description:ze}]))};var Se=[`accountingAccountCreate`,`accountingAccountList`,`accountingAccountUpdate`,`accountingBalanceReport`,`accountingCa3Export`,`accountingEntryCreate`,`accountingEntryList`,`accountingEntryPost`,`accountingEntryReverse`,`accountingEvidenceCreate`,`accountingEvidenceDownload`,`accountingEvidenceList`,`accountingFecExport`,`accountingFinancialReport`,`accountingJournalCreate`,`accountingJournalList`,`accountingJournalUpdate`,`accountingLedgerReport`,`accountingLetterableLineList`,`accountingLetteringCreate`,`accountingOpeningCommit`,`accountingOpeningPreview`,`accountingPeriodClose`,`accountingPeriodCreate`,`accountingPeriodFinalClose`,`accountingPeriodList`,`accountingPeriodLock`,`accountingPeriodReopen`,`accountingTaxFilingSettings`,`accountingTaxFilingSettingsUpdate`,`accountingTaxFilingSubmissionList`,`accountingTaxFilingSubmit`,`accountingTaxReport`];var Le=[`demoReset`,`invoiceCreditAllocate`,`invoiceCreditAllocationCancel`,`supplierBankMatch`,`supplierBankMatchList`,`supplierBankPaymentList`,`supplierBankUnmatch`,`supplierCreditCreate`,`supplierInvoiceEvidenceCreate`,`supplierInvoiceEvidenceDownload`,`supplierInvoiceEvidenceList`];var b$1=(t,i,n)=>Object.fromEntries(t.map(a=>[a,{summary:i,description:n}]));c$2.fr.group,m$2.fr.group,l.fr.group,d.fr.group,h$1.fr.group,u$2.fr.group,p$3.fr.group,f$3.fr.group,v$3.fr.group,g$1.fr.group,m$4(l$1(l$1(l$1(l$1(l$1(l$1(l$1(l$1(m$4(l$1(l$1(l$1(l$1(l$1(m$4(l$1(l$1(l$1({},b$1(Se,`Gérer la comptabilité`,`Exécute une opération comptable selon les permissions et les règles de période applicables.`)),b$1(Le,`Gérer la suite de gestion`,`Exécute une opération métier selon les permissions et les contrôles applicables.`)),c$2.fr.operations),{blogFeed:{summary:`Lire le flux Atom du blog`,description:`Retourne les résumés français des publications au format Atom XML. Aucune authentification requise.`}}),ce$1.fr),m$2.fr.operations),f$3.fr.operations),T$3.fr),w$4.fr),{integrationRetryList:{summary:`Lire les reprises automatiques`,description:`Retourne les 100 reprises les plus récentes. Chaque reprise conserve la demande et son mode. Cinq tentatives au maximum après l’appel initial.`}}),v$3.fr.operations),g$1.fr.operations),le$2.fr),l.fr.operations),d.fr.operations),h$1.fr.operations),u$2.fr.operations),p$3.fr.operations),{bankPaymentList:{summary:`Lister les soldes rapprochables des règlements`,description:`Retourne les règlements actifs d’une facture et leurs montants disponibles, après déduction de toutes les affectations actives.`},bankMatchHistory:{summary:`Consulter les rapprochements conservés`,description:`Afficher les 100 derniers rapprochements d’une opération, avec auteurs, dates et motifs de dissociation.`},bankMatchSuggestionList:{summary:`Proposer des rapprochements`,description:`Classe au maximum dix règlements probables. Une confirmation humaine reste obligatoire.`},bankTransactionList:{summary:`Lister les opérations bancaires`,description:`Retourne les 1 000 dernières opérations et leurs rapprochements actifs.`},bankImport:{summary:`Importer un relevé CSV`,description:`Importe atomiquement les lignes et refuse les références réutilisées avec des valeurs différentes.`},bankMatch:{summary:`Rapprocher un encaissement`,description:`Affecte amountCents au règlement et amountCents moins feeCents au crédit bancaire. La commission doit être inférieure au montant affecté. Utilisez une clé UUID v4 stable. Ne crée aucun règlement.`},bankUnmatch:{summary:`Dissocier un rapprochement`,description:`Conserve le rapprochement précédent et son motif de dissociation.`},integrationStatus:{summary:`Lister les modes des adaptateurs`,description:`Indique les services simulés et les prestataires connectés.`},integrationOperationList:{summary:`Consulter les opérations externes`,description:`Retourne les 100 dernières demandes et leurs reçus.`},integrationOperationCreate:{summary:`Soumettre une demande externe`,description:`Enregistre la demande et appelle son adaptateur avec une clé d’idempotence. Une simulation ne réalise aucune opération externe.`},catalogList:{summary:`Lister les prestations`,description:`Liste les prestations actives et archivées.`},catalogCreate:{summary:`Créer une prestation`,description:`Enregistre une description, une quantité, un prix en euros et un taux de TVA.`},catalogUpdate:{summary:`Modifier une prestation`,description:`Modifie ou archive une prestation si sa version correspond à expectedVersion. Les lignes de devis restent inchangées.`},clientList:{summary:`Lister les clients`,description:`Liste les clients actifs et archivés.`},clientGet:{summary:`Obtenir un client`,description:`Renvoie un client par identifiant.`},clientCreate:{summary:`Créer un client`,description:`Crée un client.`},clientUpdate:{summary:`Modifier un client`,description:`Modifie un client actif.`},clientArchive:{summary:`Archiver un client`,description:`Archive un client.`},clientReactivate:{summary:`Réactiver un client`,description:`Réactive un client archivé.`},companySettingsGet:{summary:`Lire la configuration de la société`,description:`Renvoie la juridiction, la devise, l’exercice et les modules activés.`},brandingGet:{summary:`Lire l’identité de l’entreprise`,description:`Renvoie le nom et le logo affichés sur la page de connexion.`},brandingUpdate:{summary:`Modifier l’identité de l’entreprise`,description:`Enregistre le nom et le logo si la version correspond.`},companySettingsUpdate:{summary:`Modifier la configuration de la société`,description:`Modifie la configuration si sa version correspond.`},companyAccountingInitialize:{summary:`Initialiser la comptabilité`,description:`Fixe définitivement la devise fonctionnelle de la comptabilité.`},companyExchangeRateList:{summary:`Lister les taux de change`,description:`Renvoie les taux BCE et les surcharges manuelles enregistrés.`},companyExchangeRateSet:{summary:`Surcharger un taux de change`,description:`Enregistre un taux daté et trace la surcharge manuelle.`},companyExchangeRateImport:{summary:`Importer les taux de la BCE`,description:`Importe les taux récents et conserve les surcharges manuelles.`},supplierList:{summary:`Lister les fournisseurs`,description:`Liste les fournisseurs actifs et archivés.`},supplierGet:{summary:`Obtenir un fournisseur`,description:`Renvoie un fournisseur par identifiant.`},supplierCreate:{summary:`Créer un fournisseur`,description:`Crée un fournisseur avec ses coordonnées et ses paramètres de paiement.`},supplierUpdate:{summary:`Modifier un fournisseur`,description:`Modifie un fournisseur actif si sa version correspond.`},supplierArchive:{summary:`Archiver un fournisseur`,description:`Archive un fournisseur.`},supplierReactivate:{summary:`Réactiver un fournisseur`,description:`Réactive un fournisseur archivé.`},orderList:{summary:`Lister les commandes`,description:`Liste les commandes créées depuis les devis acceptés.`},orderPdfDownload:{summary:`Télécharger le PDF d’une commande`,description:`Télécharge le PDF existant d’une commande.`},quoteList:{summary:`Lister les devis`,description:`Liste les devis et leur dernière révision.`},quoteGet:{summary:`Obtenir un devis`,description:`Renvoie un devis et toutes ses révisions.`},quotePdfDownload:{summary:`Télécharger le PDF d’un devis`,description:`Télécharge le PDF existant d’une révision de devis.`},quoteCreate:{summary:`Créer un devis`,description:`Crée la première révision d’un devis.`},quoteSend:{summary:`Envoyer un devis`,description:`Crée un lien public de consultation pour un devis rendu.`},quoteLinkState:{summary:`Consulter l’état du lien de signature`,description:`Retourne l’identifiant et l’expiration du lien courant, sans révéler son jeton.`},quoteLinkReplace:{summary:`Remplacer un lien de signature`,description:`Révoque le lien attendu et crée un nouveau lien pour le même devis envoyé non signé.`},quoteCancel:{summary:`Annuler un devis`,description:`Annule un devis modifiable.`},quoteRevisionCreate:{summary:`Créer une révision de devis`,description:`Crée une révision d’un devis modifiable.`},invoiceList:{summary:`Lister les factures`,description:`Liste les factures et leur état actuel.`},invoiceGet:{summary:`Obtenir une facture`,description:`Renvoie une facture et ses révisions.`},invoicePdfDownload:{summary:`Télécharger le PDF d’une facture`,description:`Télécharge le PDF existant d’une révision de facture.`},invoiceCreate:{summary:`Créer une facture`,description:`Crée un brouillon de facture depuis une commande.`},invoiceRevisionCreate:{summary:`Créer une révision de facture`,description:`Crée une révision de brouillon de facture.`},invoiceIssue:{summary:`Émettre une facture`,description:`Attribue le numéro légal et émet la facture.`},invoicePaymentCancel:{summary:`Annuler une saisie de règlement`,description:`Conserve le règlement et le motif de correction. Rétablit le solde dû sans modifier le document émis ni effectuer de remboursement.`},invoicePaymentExport:{summary:`Exporter les règlements`,description:`Exporte les règlements reçus entre from et to inclus, dans un CSV UTF-8. Limite de 10 000 lignes ; aucune troncature silencieuse.`},invoicePaymentCreate:{summary:`Enregistrer un règlement`,description:`Enregistre un règlement partiel ou complet. Réutilisez requestId avec les mêmes valeurs après une erreur réseau. Le solde ne peut pas devenir négatif.`},invoiceVoid:{summary:`Annuler une facture`,description:`Annule une facture.`},affairList:{summary:`Lister les affaires`,description:`Liste les affaires indépendantes et leurs documents liés.`},affairGet:{summary:`Consulter une affaire`,description:`Retourne une affaire et les identifiants de ses documents liés.`},affairCreate:{summary:`Créer une affaire`,description:`Crée une affaire numérotée pour un client.`},affairUpdate:{summary:`Modifier une affaire`,description:`Modifie le titre ou le statut avec contrôle de version.`},affairEventList:{summary:`Lister les événements d’une affaire`,description:`Liste les événements commerciaux liés à un client.`},bootstrapCreate:{summary:`Créer le premier administrateur`,description:`Initialise le premier compte administrateur.`},bootstrapStatus:{summary:`Obtenir l’état de l’initialisation`,description:`Indique si la création du premier administrateur reste disponible.`},clientAccessCreate:{summary:`Créer un accès client`,description:`Crée un nouveau compte d’accès pour un client.`},clientAccessList:{summary:`Lister les accès client`,description:`Liste les comptes qui peuvent accéder au portail d’un client.`},clientAccessRevoke:{summary:`Supprimer un accès client`,description:`Supprime un compte du portail et révoque ses sessions.`},clientInvoiceList:{summary:`Lister les factures du client`,description:`Liste les factures accessibles au client connecté.`},clientInvoicePdf:{summary:`Télécharger une facture du client`,description:`Télécharge le PDF d’une facture accessible au client connecté.`},clientOrderList:{summary:`Lister les commandes du client`,description:`Liste les commandes accessibles au client connecté.`},clientOrderPdf:{summary:`Télécharger une commande du client`,description:`Télécharge le PDF d’une commande accessible au client connecté.`},clientQuoteList:{summary:`Lister les devis du client`,description:`Liste les devis accessibles au client connecté.`},clientQuotePdf:{summary:`Télécharger un devis du client`,description:`Télécharge le PDF d’un devis accessible au client connecté.`},health:{summary:`Vérifier la santé du service`,description:`Renvoie l’état de santé du service et de ses dépendances.`},apiTokenCreate:{summary:`Créer un jeton d’API`,description:`Crée un jeton Bearer et révèle son secret une seule fois.`},apiTokenList:{summary:`Lister les jetons d’API`,description:`Liste les jetons actifs, expirés et révoqués.`},apiTokenRevoke:{summary:`Révoquer un jeton d’API`,description:`Révoque définitivement un jeton.`},invoicePdfRender:{summary:`Générer le PDF d’une facture`,description:`Génère et conserve le PDF d’une révision de facture.`},invoicePreview:{summary:`Prévisualiser une facture`,description:`Génère un aperçu sans créer de document conservé.`},issuerSettingsGet:{summary:`Obtenir les paramètres émetteur`,description:`Renvoie les coordonnées utilisées dans les documents.`},issuerSettingsUpdate:{summary:`Modifier les paramètres émetteur`,description:`Modifie les coordonnées utilisées dans les futurs documents.`},login:{summary:`Se connecter`,description:`Authentifie un compte et crée une session.`},logout:{summary:`Se déconnecter`,description:`Révoque la session active.`},refresh:{summary:`Renouveler la session`,description:`Renouvelle la session et ses cookies. La réponse contient le mode d’accès et l’expiration, sans jeton secret.`},passwordChange:{summary:`Changer le mot de passe`,description:`Vérifie le mot de passe actuel et révoque toutes les sessions dans la transaction de changement. Réservé aux sessions navigateur.`},currentAccount:{summary:`Consulter le compte courant`,description:`Retourne le compte authentifié.`},updatePreferences:{summary:`Modifier les préférences du compte`,description:`Modifie le thème, la langue et le mode des messages du compte connecté.`},accountSessionList:{summary:`Lister les sessions actives`,description:`Liste les familles de sessions actives du compte connecté, sans jetons ni empreintes.`},accountSessionRevoke:{summary:`Fermer une autre session`,description:`Révoque une famille de sessions appartenant au compte connecté. La session actuelle utilise la déconnexion habituelle.`},orderPdfRender:{summary:`Générer le PDF d’une commande`,description:`Génère et conserve le PDF d’une commande.`},orderPreview:{summary:`Prévisualiser une commande`,description:`Génère un aperçu sans créer de document conservé.`},publicQuoteGet:{summary:`Consulter un devis public`,description:`Ouvre un devis avec un lien public valide.`},publicQuotePdfDownload:{summary:`Télécharger un devis public`,description:`Télécharge le PDF associé à un lien public valide.`},publicQuoteSign:{summary:`Signer un devis public`,description:`Accepte et signe un devis avec un lien public valide.`},quoteConditionPresetCreate:{summary:`Créer un préréglage de devis`,description:`Crée un jeu de conditions réutilisable.`},quoteConditionPresetDelete:{summary:`Supprimer un préréglage de devis`,description:`Supprime un jeu de conditions réutilisable.`},quoteConditionPresetList:{summary:`Lister les préréglages de devis`,description:`Liste les jeux de conditions réutilisables.`},quoteConditionPresetUpdate:{summary:`Modifier un préréglage de devis`,description:`Modifie un jeu de conditions réutilisable.`},quotePdfRender:{summary:`Générer le PDF d’un devis`,description:`Génère et conserve le PDF d’une révision de devis.`},quotePreview:{summary:`Prévisualiser un devis`,description:`Génère un aperçu sans créer de document conservé.`},version:{summary:`Obtenir la version du service`,description:`Renvoie les métadonnées du déploiement actif.`}}),c$2.en.group,m$2.en.group,l.en.group,d.en.group,h$1.en.group,u$2.en.group,p$3.en.group,f$3.en.group,v$3.en.group,g$1.en.group,m$4(l$1(l$1(l$1(l$1(l$1(l$1(l$1(l$1(m$4(l$1(l$1(l$1(l$1(m$4(l$1(m$4(l$1(l$1(l$1({},b$1(Se,`Manage accounting`,`Runs an accounting operation with the applicable permissions and period rules.`)),b$1(Le,`Manage the business suite`,`Runs a business operation with the applicable permissions and controls.`)),c$2.en.operations),{blogFeed:{summary:`Read the blog Atom feed`,description:`Returns French article summaries as Atom XML. Authentication is not required.`}}),ce$1.en),{catalogList:{summary:`List services`,description:`Lists active and archived services.`}}),m$2.en.operations),f$3.en.operations),T$3.en),w$4.en),{integrationRetryList:{summary:`Read automatic retries`,description:`Returns the latest 100 retry records. Each retry preserves the request and its mode. At most five attempts follow the initial call.`}}),v$3.en.operations),g$1.en.operations),le$2.en),l.en.operations),d.en.operations),h$1.en.operations),u$2.en.operations),p$3.en.operations),{bankPaymentList:{summary:`List available payment balances for reconciliation`,description:`Returns active invoice payments and their available amounts after deducting all active allocations.`},bankMatchHistory:{summary:`Read reconciliation history`,description:`Return the latest 100 matches for a transaction, including actors, dates and reasons for removal.`},bankMatchSuggestionList:{summary:`Suggest reconciliations`,description:`Ranks at most ten probable receipts. Human confirmation remains required.`},bankTransactionList:{summary:`List bank transactions`,description:`Returns the latest 1,000 transactions and their active matches.`},bankImport:{summary:`Import a CSV statement`,description:`Imports rows atomically and rejects reused references with changed values.`},bankMatch:{summary:`Reconcile a receipt`,description:`Allocates amountCents to the payment and amountCents minus feeCents to the bank credit. The fee must be less than the allocated amount. Use a stable UUID v4 key. Creates no payment.`},bankUnmatch:{summary:`Remove a match`,description:`Preserves the previous match and the reason for removing it.`},integrationStatus:{summary:`List adapter modes`,description:`Identifies simulated services and connected providers.`},integrationOperationList:{summary:`Read external operations`,description:`Returns the latest 100 requests and their receipts.`},integrationOperationCreate:{summary:`Submit an external request`,description:`Records the request and calls its adapter with an idempotency key. A simulation performs no external operation.`},catalogCreate:{summary:`Create a service`,description:`Stores a description, quantity, price in euros and VAT rate.`},catalogUpdate:{summary:`Update a service`,description:`Updates or archives a service when its version matches expectedVersion. Quote lines remain unchanged.`},clientList:{summary:`List clients`,description:`Lists active and archived clients.`},clientGet:{summary:`Get a client`,description:`Returns one client by identifier.`},clientCreate:{summary:`Create a client`,description:`Creates a client.`},clientUpdate:{summary:`Update a client`,description:`Updates an active client.`},clientArchive:{summary:`Archive a client`,description:`Archives a client.`},clientReactivate:{summary:`Reactivate a client`,description:`Reactivates an archived client.`},companySettingsGet:{summary:`Get company settings`,description:`Returns jurisdiction, currency, fiscal year, and enabled modules.`},brandingGet:{summary:`Get enterprise branding`,description:`Returns the name and logo shown on the login page.`},brandingUpdate:{summary:`Update enterprise branding`,description:`Saves the name and logo when the version matches.`},companySettingsUpdate:{summary:`Update company settings`,description:`Updates the settings when their version matches.`},companyAccountingInitialize:{summary:`Initialize accounting`,description:`Permanently locks the accounting functional currency.`},companyExchangeRateList:{summary:`List exchange rates`,description:`Returns stored ECB rates and manual overrides.`},companyExchangeRateSet:{summary:`Override an exchange rate`,description:`Stores a dated rate and audits the manual override.`},companyExchangeRateImport:{summary:`Import ECB rates`,description:`Imports recent rates and preserves manual overrides.`},supplierList:{summary:`List suppliers`,description:`Lists active and archived suppliers.`},supplierGet:{summary:`Get a supplier`,description:`Returns one supplier by identifier.`},supplierCreate:{summary:`Create a supplier`,description:`Creates a supplier with contact and payment settings.`},supplierUpdate:{summary:`Update a supplier`,description:`Updates an active supplier when its version matches.`},supplierArchive:{summary:`Archive a supplier`,description:`Archives a supplier.`},supplierReactivate:{summary:`Reactivate a supplier`,description:`Reactivates an archived supplier.`},orderList:{summary:`List orders`,description:`Lists orders created from accepted quotes.`},orderPdfDownload:{summary:`Download an order PDF`,description:`Downloads an existing order PDF.`},quoteList:{summary:`List quotes`,description:`Lists quotes and their latest revision.`},quoteGet:{summary:`Get a quote`,description:`Returns a quote and all of its revisions.`},quotePdfDownload:{summary:`Download a quote PDF`,description:`Downloads an existing quote revision PDF.`},quoteCreate:{summary:`Create a quote`,description:`Creates the first revision of a quote.`},quoteSend:{summary:`Send a quote`,description:`Creates a public consultation link for a rendered quote.`},quoteLinkState:{summary:`Read signature link state`,description:`Returns the current link identifier and expiration without revealing its token.`},quoteLinkReplace:{summary:`Replace a signature link`,description:`Revokes the expected link and creates a new link for the same unsigned sent quote.`},quoteCancel:{summary:`Cancel a quote`,description:`Cancels an editable quote.`},quoteRevisionCreate:{summary:`Create a quote revision`,description:`Creates a new revision of an editable quote.`},invoiceList:{summary:`List invoices`,description:`Lists invoices and their current state.`},invoiceGet:{summary:`Get an invoice`,description:`Returns an invoice and its revisions.`},invoicePdfDownload:{summary:`Download an invoice PDF`,description:`Downloads an existing invoice revision PDF.`},invoiceCreate:{summary:`Create an invoice`,description:`Creates a draft invoice from an order.`},invoiceRevisionCreate:{summary:`Create an invoice revision`,description:`Creates a new draft invoice revision.`},invoiceIssue:{summary:`Issue an invoice`,description:`Assigns the legal invoice number and issues the invoice.`},invoicePaymentExport:{summary:`Export payments`,description:`Exports payments received between from and to inclusive as UTF-8 CSV. Limited to 10,000 rows without silent truncation.`},invoicePaymentCancel:{summary:`Cancel a payment entry`,description:`Keeps the payment and correction reason. Restores the outstanding balance without changing the issued document or making a refund.`},invoicePaymentCreate:{summary:`Record a payment`,description:`Records a partial or full payment. Reuse requestId with unchanged values after a network error. The balance cannot become negative.`},invoiceVoid:{summary:`Void an invoice`,description:`Voids an invoice.`},affairList:{summary:`List affairs`,description:`Lists independent affairs and their linked documents.`},affairGet:{summary:`Read an affair`,description:`Returns an affair and its linked document identifiers.`},affairCreate:{summary:`Create an affair`,description:`Creates a numbered affair for one client.`},affairUpdate:{summary:`Update an affair`,description:`Updates the title or status with version control.`},affairEventList:{summary:`List affair events`,description:`Lists the commercial events related to a client.`},bootstrapCreate:{summary:`Create the first administrator`,description:`Creates the first administrator account.`},bootstrapStatus:{summary:`Get bootstrap status`,description:`Reports whether first administrator creation remains available.`},clientAccessCreate:{summary:`Create client access`,description:`Creates a new access account for a client.`},clientAccessList:{summary:`List client access accounts`,description:`Lists the accounts that can access a client portal.`},clientAccessRevoke:{summary:`Remove client access`,description:`Removes a portal account and revokes its sessions.`},clientInvoiceList:{summary:`List client invoices`,description:`Lists invoices available to the authenticated client.`},clientInvoicePdf:{summary:`Download a client invoice`,description:`Downloads an invoice PDF available to the authenticated client.`},clientOrderList:{summary:`List client orders`,description:`Lists orders available to the authenticated client.`},clientOrderPdf:{summary:`Download a client order`,description:`Downloads an order PDF available to the authenticated client.`},clientQuoteList:{summary:`List client quotes`,description:`Lists quotes available to the authenticated client.`},clientQuotePdf:{summary:`Download a client quote`,description:`Downloads a quote PDF available to the authenticated client.`},health:{summary:`Check service health`,description:`Returns the health of the service and its dependencies.`},apiTokenCreate:{summary:`Create an API token`,description:`Creates a Bearer token and reveals its secret once.`},apiTokenList:{summary:`List API tokens`,description:`Lists active, expired, and revoked tokens.`},apiTokenRevoke:{summary:`Revoke an API token`,description:`Permanently revokes a token.`},invoicePdfRender:{summary:`Render an invoice PDF`,description:`Renders and stores an invoice revision PDF.`},invoicePreview:{summary:`Preview an invoice`,description:`Renders a preview without creating a stored document.`},issuerSettingsGet:{summary:`Get issuer settings`,description:`Returns the issuer details used in documents.`},issuerSettingsUpdate:{summary:`Update issuer settings`,description:`Updates the issuer details used in future documents.`},login:{summary:`Log in`,description:`Authenticates an account and creates a session.`},logout:{summary:`Log out`,description:`Revokes the active session.`},refresh:{summary:`Renew the session`,description:`Renews the session and its cookies. The response contains the access mode and expiration, without a secret token.`},currentAccount:{summary:`Get current account`,description:`Returns the authenticated account.`},updatePreferences:{summary:`Update account preferences`,description:`Updates the theme, language, and message mode for the signed-in account.`},accountSessionList:{summary:`List active sessions`,description:`Lists active session families owned by the signed-in account, without tokens or hashes.`},accountSessionRevoke:{summary:`Close another session`,description:`Revokes a session family owned by the signed-in account. The current session uses the standard sign-out action.`},passwordChange:{summary:`Change password`,description:`Verifies the current password and revokes all sessions in the password change transaction. Requires a browser session.`},orderPdfRender:{summary:`Render an order PDF`,description:`Renders and stores an order PDF.`},orderPreview:{summary:`Preview an order`,description:`Renders a preview without creating a stored document.`},publicQuoteGet:{summary:`Open a public quote`,description:`Opens a quote with a valid public link.`},publicQuotePdfDownload:{summary:`Download a public quote`,description:`Downloads the PDF for a valid public link.`},publicQuoteSign:{summary:`Sign a public quote`,description:`Accepts and signs a quote with a valid public link.`},quoteConditionPresetCreate:{summary:`Create a quote preset`,description:`Creates a reusable set of quote terms.`},quoteConditionPresetDelete:{summary:`Delete a quote preset`,description:`Deletes a reusable set of quote terms.`},quoteConditionPresetList:{summary:`List quote presets`,description:`Lists reusable sets of quote terms.`},quoteConditionPresetUpdate:{summary:`Update a quote preset`,description:`Updates a reusable set of quote terms.`},quotePdfRender:{summary:`Render a quote PDF`,description:`Renders and stores a quote revision PDF.`},quotePreview:{summary:`Preview a quote`,description:`Renders a preview without creating a stored document.`},version:{summary:`Get service version`,description:`Returns the active deployment metadata.`}});function k$2(t){return t===`fr`||t===`en`}var We=`froment.software.language`;var Ie=class t{document=g$2(H$3);language=Ke(`fr`);languages=xe;constructor(){Ol(()=>{let i=this.detectLanguage();this.language.set(i),this.writeStoredLanguage(i)}),ou(()=>{let i=this.language();this.document.documentElement.lang=i,this.document.documentElement.setAttribute(`data-language`,i)})}t(i){return o$3(this.language(),i)}tf(i,n){return we(this.language(),i,n)}plural(i,n){return Ae(this.language(),i,n)}setLanguage(i){k$2(i)&&(this.language.set(i),this.writeStoredLanguage(i))}detectLanguage(){let i=this.document.location.pathname.split(`/`)[1];if(k$2(i))return i;let n=this.readStoredLanguage();return k$2(n)?n:(globalThis.navigator?.language?.toLowerCase()??`fr`).startsWith(`fr`)?`fr`:`en`}readStoredLanguage(){try{return globalThis.localStorage?.getItem(We)??null}catch{return null}}writeStoredLanguage(i){try{globalThis.localStorage?.setItem(We,i)}catch{}}static ɵfac=function(n){return new(n||t)};static ɵprov=A$2({token:t,factory:t.ɵfac,providedIn:`root`})};function m$1(i,t){if(i&1&&Ly(0,`div`,0),i&2)ky(`aria-label`,qS().i18n.t(`shell.loading`))}var v$2=class i{navigation=g$2(ue).currentNavigation;i18n=g$2(Ie);static ɵfac=function(n){return new(n||i)};static ɵcmp=Fb({type:i,selectors:[[`app-navigation-progress`]],decls:1,vars:1,consts:[[`role`,`progressbar`,1,`navigation-bar`]],template:function(n,d){n&1&&OS(0,m$1,1,1,`div`,0),n&2&&kS(d.navigation()?0:-1)},styles:[`[_nghost-%COMP%]{position:absolute;inset-block-start:100%;inset-inline:0;z-index:var(--%NS%z-header);display:block;block-size:3px;pointer-events:none}.navigation-bar[_ngcontent-%COMP%]{position:absolute;inset:0;visibility:hidden;background:var(--%NS%color-link);box-shadow:0 1px 7px color-mix(in oklab,var(--%NS%color-link) 35%,transparent);animation:_ngcontent-%COMP%_navigation-reveal 0s .15s forwards}@media(prefers-reduced-motion:no-preference){.navigation-bar[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_navigation-reveal 0s .15s forwards,_ngcontent-%COMP%_navigation-pulse 1.2s ease-in-out .15s infinite}}@keyframes _ngcontent-%COMP%_navigation-reveal{to{visibility:visible}}@keyframes _ngcontent-%COMP%_navigation-pulse{0%,to{opacity:.4}50%{opacity:1}}@media print{[_nghost-%COMP%]{display:none}}`]})};var a$1={appEnvironment:`development`,sitePhase:`live`,commit:null,githubRepositoryUrl:null,demo:null};var c$1=()=>globalThis.fromentRuntimeConfig??a$1;var u$1=class n{browser=xU(g$2(yo$1));value=this.browser?c$1():void 0;productionConstruction=this.value?.appEnvironment===`production`&&this.value.sitePhase===`construction`;commitUrl(o){let e=this.value?.githubRepositoryUrl;if(!(!e||!o))return`${e.replace(/\/$/,``).replace(/\.git$/,``)}/commit/${o}`}static ɵfac=function(e){return new(e||n)};static ɵprov=A$2({token:n,factory:n.ɵfac,providedIn:`root`})};var N$2=n=>({commit:n});function O$2(n,l){if(n&1&&(Us(0,`a`,5),y_(1),fd()),n&2){let e=qS(3);Fy(`href`,e.commitUrl,Qg),ky(`aria-label`,e.i18n.tf(`version.commitLink`,k_(3,N$2,e.shortCommit))),ZC(),vd(` `,e.shortCommit,` `)}}function k$1(n,l){if(n&1&&(Us(0,`span`,3)(1,`a`,4),y_(2),fd(),OS(3,O$2,2,5,`a`,5),fd()),n&2){let e=qS(),i=qS();Xy(`staging`,i.environment===`staging`),ZC(),ky(`aria-label`,i.i18n.t(e.nameKey)),ZC(),vd(` `,i.i18n.t(e.labelKey),` `),ZC(),kS(i.shortCommit?3:-1)}}function E$1(n,l){if(n&1&&OS(0,k$1,4,5,`span`,2),n&2)kS(qS().placement()!==`hidden`?0:-1)}function w$3(n,l){if(n&1&&(Us(0,`a`,0),y_(1),fd()),n&2){let e=qS();ZC(),nv(e.i18n.t(`nav.version`))}}function K$1(n,l){if(n&1&&(Us(0,`aside`,1)(1,`div`,6)(2,`p`,7),y_(3),fd(),Us(4,`div`)(5,`h2`,8),y_(6),fd(),Us(7,`p`),y_(8),fd()()()()),n&2){let e=qS();ZC(3),nv(e.i18n.t(`shell.construction.kicker`)),ZC(3),nv(e.i18n.t(`shell.construction.title`)),ZC(2),nv(e.i18n.t(`shell.construction.description`))}}var z$1=n=>{if(n===`development`)return{labelKey:`shell.environment.development`,nameKey:`shell.environment.developmentName`};if(n===`staging`)return{labelKey:`shell.environment.staging`,nameKey:`shell.environment.stagingName`}};var M$1=class n{publicPage=NH.required();placement=NH.required();i18n=g$2(Ie);runtime=g$2(u$1);environment=this.runtime.value?.appEnvironment;environmentStatus=z$1(this.environment);shortCommit=this.runtime.value?.commit?.slice(0,8);commitUrl=this.runtime.commitUrl(this.runtime.value?.commit);static ɵfac=function(e){return new(e||n)};static ɵcmp=Fb({type:n,selectors:[[`app-environment-status`]],inputs:{publicPage:[1,`publicPage`],placement:[1,`placement`]},decls:3,vars:2,consts:[[`routerLink`,`/version`,1,`version-link`],[`aria-labelledby`,`construction-title`,1,`construction-notice`,`runtime-construction-only`],[1,`environment-ribbon`,3,`staging`],[1,`environment-ribbon`],[`routerLink`,`/version`,1,`environment-name`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`environment-commit`,3,`href`],[1,`construction-inner`],[1,`construction-kicker`],[`id`,`construction-title`]],template:function(e,i){if(e&1&&(OS(0,E$1,1,1)(1,w$3,2,1,`a`,0),OS(2,K$1,9,3,`aside`,1)),e&2){let x;kS((x=i.environmentStatus)?0:i.placement()===`sidebar`?1:-1,x),ZC(2),kS(i.publicPage()?2:-1)}},dependencies:[Dt],styles:[`[_nghost-%COMP%]{display:contents}.environment-ribbon[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35rem;min-block-size:1.25rem;padding:.1rem .35rem;border:1px solid rgba(83,12,17,.65);border-radius:var(--%NS%radius-xs);background:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 2px,transparent 2px 5px),#a1232aeb;color:#fff;font-family:var(--%NS%font-mono);font-size:.625rem;font-weight:700;letter-spacing:.08em;line-height:1.4;text-align:center;text-decoration:none;text-transform:uppercase}.environment-ribbon.staging[_ngcontent-%COMP%]{border-color:#5b3c03ad;background:repeating-linear-gradient(135deg,rgba(255,255,255,.09) 0 2px,transparent 2px 5px),#ab710feb}.environment-ribbon[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:inherit;text-decoration:none}.environment-ribbon[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.environment-commit[_ngcontent-%COMP%]{font-size:.5625rem;font-weight:400;letter-spacing:.02em;text-transform:none}.version-link[_ngcontent-%COMP%]{color:var(--%NS%color-muted);font-size:var(--%NS%text-sm);text-decoration:none}.version-link[_ngcontent-%COMP%]:hover{color:var(--%NS%color-ink);text-decoration:underline}.environment-ribbon[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--%NS%color-focus);outline-offset:3px}.construction-notice[_ngcontent-%COMP%]{position:relative;overflow:hidden;border-bottom:1px solid color-mix(in oklab,var(--%NS%color-warning) 55%,var(--%NS%color-line));background:radial-gradient(circle at 1px 1px,rgba(71,47,6,.12) .7px,transparent .8px) 0 0/6px 6px,linear-gradient(100deg,var(--%NS%color-warning-soft),var(--%NS%color-surface-raised));box-shadow:inset 0 -1px #ffffff57}.construction-notice[_ngcontent-%COMP%]:after{position:absolute;inset:0;background:repeating-linear-gradient(-12deg,transparent 0 1.5rem,color-mix(in oklab,var(--%NS%color-warning) 7%,transparent) 1.5rem 1.58rem);content:"";pointer-events:none}.construction-inner[_ngcontent-%COMP%]{position:relative;z-index:1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--%NS%space-4);width:calc(100% - 2 * var(--%NS%shell-gutter));max-width:var(--%NS%layout-max);margin-inline:auto;padding:var(--%NS%space-4) var(--%NS%page-x)}.construction-kicker[_ngcontent-%COMP%]{width:max-content;padding:.3rem .48rem;border:1px solid currentColor;color:var(--%NS%color-warning);font-family:var(--%NS%font-mono);font-size:var(--%NS%text-xs);font-weight:700;letter-spacing:.08em;line-height:1}.construction-inner[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .construction-inner[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.construction-inner[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:var(--%NS%text-base);line-height:1.2}.construction-inner[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] + p[_ngcontent-%COMP%]{margin-top:var(--%NS%space-1);color:var(--%NS%color-muted);font-size:var(--%NS%text-sm)}@media(max-width:36rem){.construction-inner[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:var(--%NS%space-2)}}@media print{.environment-ribbon[_ngcontent-%COMP%], .construction-notice[_ngcontent-%COMP%]{display:none}}`]})};var t=e=>e.canDeactivate();var c=[{path:``,pathMatch:`full`,redirectTo:`security`},{path:`security`,loadComponent:()=>import(`./chunk-BqXhvdC0.js`).then(e=>e.AccountSecurity),canDeactivate:[t]},{path:`passkeys`,loadComponent:()=>import(`./chunk-CrwYH4R_2.js`).then(e=>e.AccountPasskeys),canDeactivate:[t]},{path:`sessions`,loadComponent:()=>import(`./chunk-DTj9NKPI.js`).then(e=>e.AccountSessions),canDeactivate:[t]},{path:`preferences`,loadComponent:()=>import(`./chunk-DnKyRGr_.js`).then(e=>e.AccountPreferences),canDeactivate:[t]}];var j$1=[`*`];function F$1(t,n){t&1&&By(0)}var r$2=class t{name=NH.required({alias:`appTabPanel`});template=g$2(Cr$1);static ɵfac=function(e){return new(e||t)};static ɵdir=ad({type:t,selectors:[[`ng-template`,`appTabPanel`,``]],inputs:{name:[1,`appTabPanel`,`name`]}})};var o$2=class t{panels=Ke(new Map);static ɵfac=function(e){return new(e||t)};static ɵprov=A$2({token:t,factory:t.ɵfac})};var O$1=class t{registry=g$2(o$2);panels=kH(r$2,{descendants:!0});constructor(){ou(()=>{this.registry.panels.set(new Map(this.panels().map(n=>[n.name(),n.template])))})}static ɵfac=function(e){return new(e||t)};static ɵcmp=Fb({type:t,selectors:[[``,`appTabLayout`,``]],contentQueries:function(e,a,x){e&1&&Zy(x,a.panels,r$2,5),e&2&&e_()},features:[A_([o$2])],ngContentSelectors:j$1,decls:1,vars:0,template:function(e,a){e&1&&(ZS(),KS(0))},styles:[`[_nghost-%COMP%]{display:grid;gap:var(--%NS%space-4);min-inline-size:0}`]})};var w$2=class t{route=g$2(G$2);registry=g$2(o$2);context=this.route.snapshot.data;panel=Ft(()=>{let n=this.route.snapshot.data.panel;return this.registry.panels().get(n)??null});static ɵfac=function(e){return new(e||t)};static ɵcmp=Fb({type:t,selectors:[[`app-tab-panel-outlet`]],hostAttrs:[2,`display`,`grid`,`gap`,`var(--space-4)`,`min-inline-size`,`0`],decls:1,vars:2,consts:[[4,`ngTemplateOutlet`,`ngTemplateOutletContext`]],template:function(e,a){e&1&&Iy(0,F$1,1,0,`ng-container`,0),e&2&&Fy(`ngTemplateOutlet`,a.panel())(`ngTemplateOutletContext`,a.context)},dependencies:[IN],encapsulation:2})};var a=class e{document=g$2(H$3);async copy(o){try{let t=this.document.defaultView?.navigator.clipboard;if(t===void 0)throw new Error(`clipboard_unavailable`);return await t.writeText(o),!0}catch{let t=this.document.createElement(`textarea`);t.value=o,t.style.position=`fixed`,t.style.opacity=`0`,this.document.body.appendChild(t),t.select();let c=this.document.execCommand(`copy`);return t.remove(),c}}static ɵfac=function(t){return new(t||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};function U$1(n){n||(n=g$2(pe$3));let e=new x$3(t=>{if(n.destroyed){t.next();return}return n.onDestroy(t.next.bind(t))});return t=>t.pipe(kE(e))}function T$2(n,e){let d=!e?.manualCleanup?e?.injector?.get(pe$3)??g$2(pe$3):null,l=p$2(e?.equal),o;e?.requireSync?o=Ke({kind:0},{equal:l}):o=Ke({kind:1,value:e?.initialValue},{equal:l});let i,b=n.subscribe({next:r=>o.set({kind:1,value:r}),error:r=>{o.set({kind:2,error:r}),i?.()},complete:()=>{i?.()}});if(e?.requireSync&&o().kind===0)throw new y$2(601,!1);return i=d?.onDestroy(b.unsubscribe.bind(b)),Ft(()=>{let r=o();switch(r.kind){case 1:return r.value;case 2:throw r.error;case 0:throw new y$2(601,!1)}},{equal:e?.equal})}function p$2(n=Object.is){return(e,t)=>e.kind===1&&t.kind===1&&n(e.value,t.value)}function u(e,n){e&1&&(Op(),Ly(0,`path`,1))}function f$2(e,n){e&1&&(Op(),Ly(0,`path`,2))}function v$1(e,n){e&1&&(Op(),Ly(0,`path`,3))}function g(e,n){e&1&&(Op(),Ly(0,`path`,4))}function E(e,n){e&1&&(Op(),Ly(0,`path`,5))}function M(e,n){e&1&&(Op(),Ly(0,`path`,6))}function x(e,n){e&1&&(Op(),Ly(0,`path`,7))}function y(e,n){e&1&&(Op(),Ly(0,`path`,8))}function V(e,n){e&1&&(Op(),Ly(0,`path`,9))}function b(e,n){e&1&&(Op(),Ly(0,`path`,10))}function S$1(e,n){e&1&&(Op(),Ly(0,`path`,11))}function C(e,n){e&1&&(Op(),Ly(0,`circle`,33)(1,`path`,34))}function I$1(e,n){e&1&&(Op(),Ly(0,`path`,12))}function G(e,n){e&1&&(Op(),Ly(0,`path`,13))}function T$1(e,n){e&1&&(Op(),Ly(0,`path`,35)(1,`circle`,36)(2,`circle`,37))}function H(e,n){e&1&&(Op(),Ly(0,`circle`,38)(1,`circle`,39)(2,`path`,40))}function z(e,n){e&1&&(Op(),Ly(0,`path`,14))}function w$1(e,n){e&1&&(Op(),Ly(0,`path`,15))}function L(e,n){e&1&&(Op(),Ly(0,`path`,16))}function k(e,n){e&1&&(Op(),Ly(0,`path`,17))}function A(e,n){e&1&&(Op(),Ly(0,`path`,18))}function N$1(e,n){e&1&&(Op(),Ly(0,`circle`,41)(1,`circle`,42)(2,`circle`,43))}function D(e,n){e&1&&(Op(),Ly(0,`path`,19))}function P(e,n){e&1&&(Op(),Ly(0,`path`,20))}function O(e,n){e&1&&(Op(),Ly(0,`path`,21))}function j(e,n){e&1&&(Op(),Ly(0,`path`,22))}function q(e,n){e&1&&(Op(),Ly(0,`path`,23))}function B(e,n){e&1&&(Op(),Ly(0,`circle`,44)(1,`path`,45))}function F(e,n){e&1&&(Op(),Ly(0,`path`,24))}function J$1(e,n){e&1&&(Op(),Ly(0,`path`,25))}function K(e,n){e&1&&(Op(),Ly(0,`circle`,46)(1,`path`,47))}function Q$1(e,n){e&1&&(Op(),Ly(0,`path`,26))}function R(e,n){e&1&&(Op(),Ly(0,`path`,27))}function U(e,n){e&1&&(Op(),Ly(0,`path`,28))}function W(e,n){e&1&&(Op(),Ly(0,`path`,29))}function X$1(e,n){e&1&&(Op(),Ly(0,`path`,48)(1,`circle`,49))}function Y$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`rect`,50)(2,`path`,51),hd())}function Z$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,52)(2,`rect`,53),hd())}function $$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,54)(2,`path`,55),hd())}function ee$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,56),hd())}function ae(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,57)(2,`path`,58)(3,`path`,59),hd())}function ne(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,60)(2,`path`,61),hd())}function te(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`rect`,62)(2,`path`,63)(3,`rect`,64),hd())}function me(e,n){e&1&&(Op(),Ly(0,`path`,30))}function ie(e,n){e&1&&(Op(),Ly(0,`path`,31))}function ce(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,65)(2,`circle`,66),hd())}function oe(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,67)(2,`rect`,68)(3,`path`,69),hd())}function le$1(e,n){e&1&&(Op(),Ly(0,`path`,32))}function pe$1(e,n){e&1&&(Op(),pd(0,`g`),Ly(1,`path`,70)(2,`path`,71)(3,`path`,72),hd())}var r$1=class e{name=NH.required();static ɵfac=function(o){return new(o||e)};static ɵcmp=Fb({type:e,selectors:[[`app-icon`]],inputs:{name:[1,`name`]},decls:50,vars:1,consts:[[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`d`,`M13 4v16m4-16v16m2-16H9.5a4.5 4.5 0 0 0 0 9H13`],[`d`,`M4 12h8m-8 6V6m8 12V6m9 12h-4c0-4 4-3 4-6c0-1.5-2-2.5-4-1`],[`d`,`M4 12h8m-8 6V6m8 12V6m5.5 4.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2m-2 3.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2`],[`d`,`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`],[`d`,`M19 4h-9m4 16H5M15 4L9 20`],[`d`,`M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13`],[`d`,`M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`],[`d`,`M9 14 4 9l5-5M4 9h10.5a5.5 5.5 0 0 1 0 11H11`],[`d`,`m15 14 5-5-5-5M20 9H9.5a5.5 5.5 0 0 0 0 11H13`],[`d`,`M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4z`],[`d`,`M3 3h7v7H3zm11 0h7v7h-7zM3 14h7v7H3zm11 0h7v7h-7z`],[`d`,`M3 7V5a2 2 0 0 1 2-2h5l2 3h7a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`],[`d`,`M6 3h9l4 4v14H5V3zm8 0v5h5M8 12h8m-8 4h6`],[`d`,`m3 9 9-6 9 6zm2 3v7m5-7v7m4-7v7m5-7v7M3 22h18`],[`d`,`M4 6h16M4 12h16M4 18h16M8 3v6m8 0v6m-6 0v6`],[`d`,`M4 3h4v18H4zm8 0h4v18h-4zm7 1 3 16`],[`d`,`M12 5v16m0-16C8 2 4 3 2 4v16c3-1 7-1 10 1 3-2 7-2 10-1V4c-2-1-6-2-10 1`],[`d`,`M4 6h16M4 12h16M4 18h16`],[`d`,`m6 6 12 12M6 18 18 6`],[`d`,`m20 6-11 11-5-5`],[`d`,`m12 19-7-7 7-7m-7 7h14`],[`d`,`m9 18 6-6-6-6`],[`d`,`m8 9 4-4 4 4m-8 6 4 4 4-4`],[`d`,`M10 5H5v14h5m4-11 4 4-4 4m4-4H9`],[`d`,`M12 5v14M5 12h14`],[`d`,`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3`],[`d`,`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12`],[`d`,`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6M12 18v-6m-3 3h6`],[`d`,`M4 7h16M7 12h10M10 17h4`],[`d`,`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2M6.453 15h11.094M8.5 2h7`],[`d`,`M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2zm2.054 10.987H3.946`],[`d`,`M12 16v5m4-6.361V21m4-10.344V21m2-18-8.646 8.646a.5.5 0 0 1-.708 0L9.354 8.354a.5.5 0 0 0-.707 0L2 15m2 3.463V21m4-6.344V21`],[`cx`,`9`,`cy`,`8`,`r`,`3`],[`d`,`M3 21v-2a6 6 0 0 1 12 0v2m1-17a3 3 0 0 1 0 6m3 11v-2a6 6 0 0 0-3-5.2`],[`d`,`M10 17h4V5H2v12h3m9-8h4l4 4v4h-3m-9 0H8`],[`cx`,`6.5`,`cy`,`17.5`,`r`,`2.5`],[`cx`,`16.5`,`cy`,`17.5`,`r`,`2.5`],[`cx`,`9`,`cy`,`20`,`r`,`1`],[`cx`,`19`,`cy`,`20`,`r`,`1`],[`d`,`M3 4h2l2.4 10.4A2 2 0 0 0 9.3 16H18a2 2 0 0 0 1.9-1.4L21 8H6`],[`cx`,`5`,`cy`,`12`,`r`,`1`],[`cx`,`12`,`cy`,`12`,`r`,`1`],[`cx`,`19`,`cy`,`12`,`r`,`1`],[`cx`,`12`,`cy`,`8`,`r`,`3`],[`d`,`M5 21v-2a7 7 0 0 1 14 0v2`],[`cx`,`10`,`cy`,`10`,`r`,`7`],[`d`,`m15 15 6 6`],[`d`,`M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16`],[`cx`,`5`,`cy`,`19`,`r`,`1`],[`width`,`20`,`height`,`16`,`x`,`2`,`y`,`4`,`rx`,`2`],[`d`,`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`],[`d`,`M8 2v4m8-4v4M3 10h18`],[`width`,`18`,`height`,`18`,`x`,`3`,`y`,`4`,`rx`,`2`],[`d`,`M15 3h6v6m0-6-9 9`],[`d`,`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`],[`d`,`m8 9-4 3 4 3m8-6 4 3-4 3m-2-9-4 12`],[`d`,`M12 22v-9m3.17-10.79a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.66 1.66 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z`],[`d`,`M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13`],[`d`,`M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.64 1.64 0 0 0 1.63 0z`],[`d`,`m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9m6 6 4-4`],[`d`,`m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5`],[`width`,`8`,`height`,`8`,`x`,`3`,`y`,`3`,`rx`,`2`],[`d`,`M7 11v4a2 2 0 0 0 2 2h4`],[`width`,`8`,`height`,`8`,`x`,`13`,`y`,`13`,`rx`,`2`],[`d`,`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`],[`cx`,`16.5`,`cy`,`7.5`,`r`,`.5`,`fill`,`currentColor`],[`d`,`M12 8V4H8`],[`width`,`16`,`height`,`12`,`x`,`4`,`y`,`8`,`rx`,`2`],[`d`,`M2 14h2m16 0h2m-7-1v2m-6-2v2`],[`d`,`m10.852 14.772-.383.923m2.679-.923a3 3 0 1 0-2.296-5.544l-.383-.923m2.679.923.383-.923`],[`d`,`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544m3.92 1.624.923-.383m-.923 2.679.923.383`],[`d`,`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5m-15 4H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5M6 18h.01M6 6h.01m3.228 4.852-.923-.383m.923 2.679-.923.383`]],template:function(o,_){if(o&1&&(Op(),pd(0,`svg`,0),OS(1,u,1,0,`:svg:path`,1)(2,f$2,1,0,`:svg:path`,2)(3,v$1,1,0,`:svg:path`,3)(4,g,1,0,`:svg:path`,4)(5,E,1,0,`:svg:path`,5)(6,M,1,0,`:svg:path`,6)(7,x,1,0,`:svg:path`,7)(8,y,1,0,`:svg:path`,8)(9,V,1,0,`:svg:path`,9)(10,b,1,0,`:svg:path`,10)(11,S$1,1,0,`:svg:path`,11)(12,C,2,0)(13,I$1,1,0,`:svg:path`,12)(14,G,1,0,`:svg:path`,13)(15,T$1,3,0)(16,H,3,0)(17,z,1,0,`:svg:path`,14)(18,w$1,1,0,`:svg:path`,15)(19,L,1,0,`:svg:path`,16)(20,k,1,0,`:svg:path`,17)(21,A,1,0,`:svg:path`,18)(22,N$1,3,0)(23,D,1,0,`:svg:path`,19)(24,P,1,0,`:svg:path`,20)(25,O,1,0,`:svg:path`,21)(26,j,1,0,`:svg:path`,22)(27,q,1,0,`:svg:path`,23)(28,B,2,0)(29,F,1,0,`:svg:path`,24)(30,J$1,1,0,`:svg:path`,25)(31,K,2,0)(32,Q$1,1,0,`:svg:path`,26)(33,R,1,0,`:svg:path`,27)(34,U,1,0,`:svg:path`,28)(35,W,1,0,`:svg:path`,29)(36,X$1,2,0)(37,Y$1,3,0,`:svg:g`)(38,Z$1,3,0,`:svg:g`)(39,$$1,3,0,`:svg:g`)(40,ee$1,2,0,`:svg:g`)(41,ae,4,0,`:svg:g`)(42,ne,3,0,`:svg:g`)(43,te,4,0,`:svg:g`)(44,me,1,0,`:svg:path`,30)(45,ie,1,0,`:svg:path`,31)(46,ce,3,0,`:svg:g`)(47,oe,4,0,`:svg:g`)(48,le$1,1,0,`:svg:path`,32)(49,pe$1,4,0,`:svg:g`),hd()),o&2){let m;ZC(),kS((m=_.name())===`paragraph`?1:m===`heading-2`?2:m===`heading-3`?3:m===`bold`?4:m===`italic`?5:m===`list-bullets`?6:m===`list-numbers`?7:m===`undo`?8:m===`redo`?9:m===`pencil`?10:m===`dashboard`?11:m===`clients`?12:m===`folder`?13:m===`invoice`?14:m===`truck`?15:m===`shopping-cart`?16:m===`bank`?17:m===`settings`?18:m===`catalog`?19:m===`book`?20:m===`menu`?21:m===`more`?22:m===`close`?23:m===`check`?24:m===`arrow-left`?25:m===`chevron-right`?26:m===`chevron`?27:m===`user`?28:m===`logout`?29:m===`plus`?30:m===`search`?31:m===`download`?32:m===`upload`?33:m===`file-plus`?34:m===`filter`?35:m===`rss`?36:m===`mail`?37:m===`calendar`?38:m===`external`?39:m===`development`?40:m===`upgrade`?41:m===`build`?42:m===`ci`?43:m===`tests`?44:m===`environment`?45:m===`secrets`?46:m===`ai`?47:m===`metrics`?48:m===`infrastructure`?49:-1)}},styles:[`[_nghost-%COMP%]{display:inline-flex;flex:0 0 auto;color:var(--%NS%icon-color, var(--%NS%color-muted))}svg[_ngcontent-%COMP%]{width:1.25rem;height:1.25rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75}`]})};var p$1=[`*`];function S(t,a){t&1&&Py(0,`app-icon`,0),t&2&&Fy(`name`,a)}function m(t,a){if(t&1&&OS(0,S,1,1,`app-icon`,0),t&2){let o;kS((o=qS().icon())?0:-1,o)}}function f$1(t,a){t&1&&Py(0,`app-icon`,0),t&2&&Fy(`name`,a)}function _(t,a){if(t&1&&OS(0,f$1,1,1,`app-icon`,0),t&2){let o;kS((o=qS().icon())?0:-1,o)}}var N=class t{variant=NH(`default`);size=NH(`default`);iconOnly=NH(!1);icon=NH();iconPosition=NH(`start`);static ɵfac=function(o){return new(o||t)};static ɵcmp=Fb({type:t,selectors:[[`button`,`appButton`,``],[`a`,`appLinkButton`,``]],hostVars:3,hostBindings:function(o,n){o&2&&ky(`data-button-variant`,n.variant())(`data-button-size`,n.size())(`data-button-icon-only`,n.iconOnly()?``:null)},inputs:{variant:[1,`variant`],size:[1,`size`],iconOnly:[1,`iconOnly`],icon:[1,`icon`],iconPosition:[1,`iconPosition`]},ngContentSelectors:p$1,decls:3,vars:2,consts:[[3,`name`]],template:function(o,n){o&1&&(ZS(),OS(0,m,1,1),KS(1),OS(2,_,1,1)),o&2&&(kS(n.iconPosition()===`start`?0:-1),ZC(2),kS(n.iconPosition()===`end`?2:-1))},dependencies:[r$1],styles:[`[_nghost-%COMP%]{--%NS%icon-color: var(--%NS%button-text);--%NS%button-color: var(--%NS%color-button-default);--%NS%button-highlight: var(--%NS%color-button-default-highlight);--%NS%button-border: var(--%NS%color-button-default-border);--%NS%button-border-bottom: var(--%NS%color-button-default-border-bottom);--%NS%button-text: var(--%NS%color-button-on-default);appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--%NS%space-2);min-height:var(--%NS%control-height);padding:.4rem .75rem;border:1px solid var(--%NS%button-border);border-bottom-color:var(--%NS%button-border-bottom);border-radius:var(--%NS%radius-md);background-color:color-mix(in srgb,var(--%NS%button-color) 60%,var(--%NS%button-highlight));background-image:linear-gradient(to bottom,var(--%NS%button-color),var(--%NS%button-highlight));background-repeat:repeat-x;color:var(--%NS%button-text);font-size:var(--%NS%text-sm);font-weight:600;line-height:1.2;text-decoration:none;text-shadow:var(--%NS%shadow-button-default-label);box-shadow:inset 0 1px #fff3,0 1px 2px #0000000d;cursor:pointer}[_nghost-%COMP%]:visited{color:var(--%NS%button-text)}[data-button-variant=primary][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-primary);--%NS%button-highlight: var(--%NS%color-button-primary-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-size=small][_nghost-%COMP%]{min-height:2rem;padding:.25rem .5rem;font-size:var(--%NS%text-xs)}[data-button-size=small][data-button-icon-only][_nghost-%COMP%]{width:2rem}[data-button-size=large][_nghost-%COMP%]{min-height:3rem;padding:.55rem 1rem;font-size:var(--%NS%text-base)}[data-button-size=large][data-button-icon-only][_nghost-%COMP%]{width:3rem}[data-button-variant=info][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-info);--%NS%button-highlight: var(--%NS%color-button-info-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=success][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-success);--%NS%button-highlight: var(--%NS%color-button-success-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=warning][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-warning);--%NS%button-highlight: var(--%NS%color-button-warning-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=danger][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-danger);--%NS%button-highlight: var(--%NS%color-button-danger-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[data-button-variant=dark][_nghost-%COMP%]{--%NS%button-color: var(--%NS%color-button-dark);--%NS%button-highlight: var(--%NS%color-button-dark-highlight);--%NS%button-text: var(--%NS%color-button-on-color)}[_nghost-%COMP%]:is([data-button-variant=primary],[data-button-variant=info],[data-button-variant=success],[data-button-variant=warning],[data-button-variant=danger],[data-button-variant=dark]){--%NS%button-border: rgb(0 0 0 / .1);--%NS%button-border-bottom: rgb(0 0 0 / .25);text-shadow:0 -1px 0 rgba(0,0,0,.25)}[_nghost-%COMP%]:is([data-button-variant=info],[data-button-variant=success],[data-button-variant=warning]){--%NS%button-text: var(--%NS%color-button-on-bright);text-shadow:none}[data-button-variant=link][_nghost-%COMP%]{--%NS%icon-color: var(--%NS%color-link);border-color:transparent;background:transparent;color:var(--%NS%color-link);text-decoration:underline;text-shadow:none;box-shadow:none}[data-button-icon-only][_nghost-%COMP%]{width:var(--%NS%control-height);padding:0}[aria-busy=true][_nghost-%COMP%]:before{width:.85rem;height:.85rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;content:"";animation:_ngcontent-%COMP%_button-loading .7s linear infinite}[_nghost-%COMP%]:is(:active,[data-button-state=active]):not(:disabled,[aria-disabled=true],[data-button-variant=ghost],[data-button-variant=link]){background-color:var(--%NS%button-highlight);background-image:none;box-shadow:inset 0 2px 4px #00000026,0 1px 2px #0000000d}@media(hover:hover)and (pointer:fine){[_nghost-%COMP%]:is(:hover,[data-button-state=hover]):not(:disabled,[aria-disabled=true],[data-button-variant=ghost],[data-button-variant=link]){background-color:var(--%NS%button-highlight);background-image:linear-gradient(to bottom,var(--%NS%button-highlight),var(--%NS%button-color));color:var(--%NS%button-text)}[data-button-variant=link][_nghost-%COMP%]:hover:not(:disabled,[aria-disabled=true]), [data-button-variant=link][data-button-state=hover][_nghost-%COMP%]:not(:disabled,[aria-disabled=true]){--%NS%icon-color: var(--%NS%color-link-hover);border-color:transparent;background:transparent;color:var(--%NS%color-link-hover)}}[data-button-variant=ghost][_nghost-%COMP%]{--%NS%icon-color: currentColor;border-color:transparent;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%color-muted);text-decoration:none;text-shadow:none;box-shadow:none;cursor:pointer}[data-button-variant=ghost][_nghost-%COMP%]:is(:hover,[data-button-state=hover]):not(:disabled,[aria-disabled=true],:active,[data-button-state=active],[aria-pressed=true],[aria-expanded=true]){background:color-mix(in oklab,var(--%NS%color-surface-sunken),transparent 35%);color:var(--%NS%color-ink)}[data-button-variant=ghost][_nghost-%COMP%]:is(:active,[data-button-state=active]):not(:disabled,[aria-disabled=true]), [data-button-variant=ghost][_nghost-%COMP%]:is([aria-pressed=true],[aria-expanded=true]){background:var(--%NS%color-panel);color:var(--%NS%color-ink);box-shadow:var(--%NS%shadow-panel)}[data-button-variant=ghost][_nghost-%COMP%]:focus-visible{outline:2px solid var(--%NS%color-focus);outline-offset:-2px}[data-button-variant=ghost][_nghost-%COMP%]:is(:disabled,[aria-disabled=true]){cursor:not-allowed;opacity:.55}@keyframes _ngcontent-%COMP%_button-loading{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){[aria-busy=true][_nghost-%COMP%]:before{animation-duration:1.4s}}@media(forced-colors:active){[_nghost-%COMP%]{box-shadow:none}}`]})};var w=new E$4(`AUTH_COOKIE_LOCK_MANAGER`,{providedIn:`root`,factory:()=>xU(g$2(yo$1))?navigator.locks:void 0});var o$1=class r{manager=g$2(w);run(e){return this.manager?.request(`froment-auth-cookie`,e)??e()}static ɵfac=function(t){return new(t||r)};static ɵprov=A$2({token:r,factory:r.ɵfac,providedIn:`root`})};var p=3e4;var T=2147483647;var v=class r{http=new OD(g$2(Ra));cookieLock=g$2(o$1);destroyRef=g$2(pe$3);document=g$2(H$3);state=Ke(void 0);refreshRequest;refreshTimer;generation=0;identityState=Ke(0);identity=this.identityState.asReadonly();revisionState=Ke(0);revision=this.revisionState.asReadonly();refreshState=Ke(!1);refreshing=this.refreshState.asReadonly();constructor(){let e=this.document.defaultView,t=()=>{this.document.visibilityState!==`hidden`&&this.refreshExpiringSession()};this.document.addEventListener(`visibilitychange`,t),e?.addEventListener(`focus`,t),this.destroyRef.onDestroy(()=>{this.refreshTimer!==void 0&&clearTimeout(this.refreshTimer),this.document.removeEventListener(`visibilitychange`,t),e?.removeEventListener(`focus`,t)})}current(){let e=this.state();if(e!==void 0&&e.expiresAt<=Date.now()){this.clear();return}return e}mode(){return this.current()?.mode}set(e){return this.identityState.update(t=>t+1),this.updateSession(e)}updateSession(e){return this.generation+=1,this.revisionState.update(t=>t+1),this.state.set(e),this.scheduleRefresh(e.expiresAt),e}clear(){this.identityState.update(e=>e+1),this.generation+=1,this.revisionState.update(e=>e+1),this.state.set(void 0),this.refreshTimer!==void 0&&clearTimeout(this.refreshTimer),this.refreshTimer=void 0}refresh(){if(this.refreshRequest!==void 0)return this.refreshRequest;this.refreshState.set(!0),this.revisionState.update(t=>t+1);let e=this.generation;return this.refreshRequest=this.cookieLock.run(async()=>{try{let t=await JD(this.http.post(`/api/auth/refresh`,void 0)),{decodeBrowserSession:y}=await import(`./chunk-CXb1THnv2.js`),S=y(t);return this.generation!==e?this.mode():this.updateSession(S).mode}catch{return this.generation===e&&this.clear(),this.mode()}}).finally(()=>{this.refreshRequest=void 0,this.refreshState.set(!1)}),this.refreshRequest}scheduleRefresh(e){if(this.refreshTimer!==void 0&&clearTimeout(this.refreshTimer),e<=Date.now()){this.refreshTimer=void 0;return}let t=Math.max(0,e-Date.now()-p);this.refreshTimer=setTimeout(()=>{this.refresh()},Math.min(t,T))}refreshExpiringSession(){let e=this.state();e!==void 0&&e.expiresAt<=Date.now()+p&&this.refresh()}static ɵfac=function(t){return new(t||r)};static ɵprov=A$2({token:r,factory:r.ɵfac,providedIn:`root`})};var de=()=>({access:`session`});var o=(...e)=>({access:`permissions`,permissions:e});var lt=async(e,t)=>{let a=t.permissions,[{CompanyModule:s,PermissionCode:p},{Schema:C}]=await Promise.all([import(`./chunk-Zj43itle.js`),import(`./chunk-CGo7Fepz2.js`)]),M=e.account(),x=C.Array(p).check(C.isMinLength(1));if(M?.mode!==`administrator`||t.access!==`permissions`||!C.is(x)(a))return!1;let me=mt(a),fe=t.modules;if(C.is(C.Array(s))(fe))for(let R of fe)me.add(R);return a.every(R=>e.can(R))&&[...me].every(R=>M.enabledModules.includes(R))};var mt=e=>{let t=new Set;for(let a of e)a.startsWith(`supplier`)?t.add(`purchasing`):a.startsWith(`bank.`)?t.add(`banking`):a.startsWith(`accounting.`)?t.add(`accounting`):a.startsWith(`demo.`)?t.add(`demonstration`):(a.startsWith(`quote.`)||a.startsWith(`order.`)||a.startsWith(`invoice.`)||a.startsWith(`payment.`)||a.startsWith(`client.`)||a.startsWith(`catalog.`)||a.startsWith(`ledger.`)||a.startsWith(`document.`))&&t.add(`sales`);return t};var ft=e=>e.pathFromRoot.map(t=>t.routeConfig?.data??t.data).filter(t=>t.access!==void 0||t.permissions!==void 0);var pe=async e=>{let t=g$2(ce$3),a=g$2(ue),{Authentication:s}=await import(`./chunk-Bfm6z5eI2.js`),p=t.get(s);if(await p.sessionMode()!==`administrator`)return a.createUrlTree([`/login`]);if((await p.currentAccount())?.mode!==`administrator`)return a.createUrlTree([`/login`]);let M=ft(e);return M.length>0&&(await Promise.all(M.map(x=>x.access===`session`&&x.permissions===void 0||lt(p,x)))).every(Boolean)?!0:a.createUrlTree([`/account`])};var r=pe;var f=pe;var h=pe;var Q=async(e,t)=>{let a=g$2(ce$3),s=g$2(ue),{Authentication:p}=await import(`./chunk-Bfm6z5eI2.js`);return await a.get(p).sessionMode()===`client`?!0:s.createUrlTree([`/login`],{queryParams:{returnUrl:t.url}})};var Je=[{path:`billing`,pathMatch:`full`,loadComponent:()=>import(`./chunk-DLH3RPM22.js`).then(e=>e.Billing),canActivate:[r],data:m$4(l$1({},o(`invoice.read`)),{titleKey:`billingWorkspace.invoices`,robots:`noindex, nofollow`})},{path:`billing/receipts`,loadComponent:()=>import(`./chunk-B0Pr-tNT.js`).then(e=>e.ReceiptList),canActivate:[r],data:m$4(l$1({},o(`payment.read`,`invoice.read`)),{titleKey:`billingWorkspace.receipts`,robots:`noindex, nofollow`})},{path:`billing/credit-notes`,loadComponent:()=>import(`./chunk-B4cAnuMM2.js`).then(e=>e.CreditNotes),canActivate:[r],data:m$4(l$1({},o(`invoice.read`)),{titleKey:`billingWorkspace.credits`,robots:`noindex, nofollow`})},{path:`billing/refunds`,loadComponent:()=>import(`./chunk-ZZuAWaLQ.js`).then(e=>e.RefundList),canActivate:[r],data:m$4(l$1({},o(`payment.read`,`invoice.read`)),{titleKey:`billingWorkspace.refunds`,robots:`noindex, nofollow`})},{path:`invoices/new`,loadComponent:()=>import(`./chunk-BZe5DpAa.js`).then(e=>e.InvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.create`,`order.read`)),{titleKey:`backOffice.invoice.title.new`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/edit`,loadComponent:()=>import(`./chunk-BZe5DpAa.js`).then(e=>e.InvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.update`,`order.read`)),{titleKey:`billingWorkspace.edit`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/issue`,loadComponent:()=>import(`./chunk-BpkPnQ2K.js`).then(e=>e.InvoiceIssue),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.issue`)),{titleKey:`billingWorkspace.issueTitle`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/payments/new`,loadComponent:()=>import(`./chunk-CdvoW0GI.js`).then(e=>e.PaymentEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.mark-paid`)),{titleKey:`billingWorkspace.recordReceipt`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/payments/:paymentId/cancel`,loadComponent:()=>import(`./chunk-DgZvyF3s.js`).then(e=>e.ReceiptCancel),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.mark-paid`)),{titleKey:`payment.cancel`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credits/new`,loadComponent:()=>import(`./chunk-Bxrld4562.js`).then(e=>e.CreditEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.credit`)),{titleKey:`credit.issue`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credits/:creditNoteId/edit`,loadComponent:()=>import(`./chunk-Bxrld4562.js`).then(e=>e.CreditEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.credit`)),{titleKey:`credit.editDraft`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credit-allocations/new`,loadComponent:()=>import(`./chunk-CRDadWvH2.js`).then(e=>e.CreditAllocationEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.allocate`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/refunds/new`,loadComponent:()=>import(`./chunk-DWN606KF2.js`).then(e=>e.RefundEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.recordRefund`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/refunds/:refundId/cancel`,loadComponent:()=>import(`./chunk-Dr_Uz6uR2.js`).then(e=>e.RefundCancel),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.cancelRefund`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/credit-allocations/:allocationId/cancel`,loadComponent:()=>import(`./chunk-Dr_Uz6uR2.js`).then(e=>e.RefundCancel),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.refund`)),{titleKey:`credit.cancelAllocation`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId/void`,loadComponent:()=>import(`./chunk-DZvdrgcs2.js`).then(e=>e.InvoiceVoid),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`invoice.read`,`invoice.void`)),{titleKey:`backOffice.invoice.void`,robots:`noindex, nofollow`})},{path:`invoices/:invoiceId`,loadComponent:()=>import(`./chunk-fxkvCM0b.js`).then(e=>e.InvoiceDetail),canActivate:[r],data:m$4(l$1({},o(`invoice.read`)),{titleKey:`billingWorkspace.invoices`,robots:`noindex, nofollow`})}];var Xe=[{path:`banking/import`,loadComponent:()=>import(`./chunk-B8tEtjeZ2.js`).then(e=>e.BankImport),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`bank.import`)),{titleKey:`bank.import`,robots:`noindex, nofollow`})},{path:`banking/transactions/:transactionId`,loadComponent:()=>import(`./chunk-CGLHod2X2.js`).then(e=>e.BankReconciliation),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`bank.read`)),{titleKey:`bankWorkspace.reconciliation`,robots:`noindex, nofollow`})},{path:`banking/ledger/post/:sourceKind/:sourceId`,loadComponent:()=>import(`./chunk-CecoTW2V.js`).then(e=>e.LedgerPost),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`ledger.read`,`ledger.post`)),{titleKey:`bankWorkspace.postTitle`,robots:`noindex, nofollow`})},{path:`banking/ledger/:entryId/reverse`,loadComponent:()=>import(`./chunk-BYRTViky2.js`).then(e=>e.LedgerReversal),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`ledger.read`)),{titleKey:`bankWorkspace.reverseTitle`,robots:`noindex, nofollow`})},{path:`banking/ledger`,loadComponent:()=>import(`./chunk-DgZxoBPB.js`).then(e=>e.BankLedger),canActivate:[r],data:m$4(l$1({},o(`ledger.read`)),{titleKey:`bankWorkspace.entries`,robots:`noindex, nofollow`})},{path:`banking`,loadComponent:()=>import(`./chunk-eAm9Qkk4.js`).then(e=>e.Banking),canActivate:[r],data:m$4(l$1({},o(`bank.read`)),{titleKey:`bankWorkspace.transactions`,robots:`noindex, nofollow`})}];var Ze=[{path:``,pathMatch:`full`,loadComponent:()=>import(`./chunk-CZM1REvY.js`).then(e=>e.ConfigurationIndex)},{path:`company`,canActivate:[f],data:o(`company.read`),loadComponent:()=>import(`./chunk-CoUH4AfS2.js`).then(e=>e.CompanySettingsPage),canDeactivate:[t]},{path:`issuer`,canActivate:[f],data:o(`issuer.read`),loadComponent:()=>import(`./chunk-ZxYSyP21.js`).then(e=>e.IssuerSettings),canDeactivate:[t]},{path:`conditions/new`,canActivate:[f],data:o(`condition.manage`),loadComponent:()=>import(`./chunk-WylMVh3d.js`).then(e=>e.ConditionEditor),canDeactivate:[t]},{path:`conditions/:presetId/edit`,canActivate:[f],data:o(`condition.read`,`condition.manage`),loadComponent:()=>import(`./chunk-WylMVh3d.js`).then(e=>e.ConditionEditor),canDeactivate:[t]},{path:`conditions`,canActivate:[f],data:o(`condition.read`),loadComponent:()=>import(`./chunk-I2ekTEA32.js`).then(e=>e.QuoteConditionPresets),canDeactivate:[t]},{path:`business-card`,canActivate:[f],data:o(`issuer.read`),loadComponent:()=>import(`./chunk-CA-xctoQ2.js`).then(e=>e.BusinessCard),canDeactivate:[t]},{path:`supplier-invoice-analysis`,canActivate:[f],data:o(`integration.configure`),loadComponent:()=>import(`./chunk-DJfwJBD6.js`).then(e=>e.SupplierInvoiceAnalysisSettingsPage),canDeactivate:[t]}];var et=[{path:`team/roles/new`,loadComponent:()=>import(`./chunk-Dfxr5EJU.js`).then(e=>e.RoleEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`role.manage`)),{titleKey:`role.createTitle`,robots:`noindex, nofollow`})},{path:`team/roles/:roleId/edit`,loadComponent:()=>import(`./chunk-Dfxr5EJU.js`).then(e=>e.RoleEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`role.read`,`role.manage`)),{titleKey:`role.editTitle`,robots:`noindex, nofollow`})},{path:`team/roles`,loadComponent:()=>import(`./chunk-CMFGRRh02.js`).then(e=>e.RolesPage),canActivate:[r],data:m$4(l$1({},o(`role.read`)),{titleKey:`role.title`,robots:`noindex, nofollow`})},{path:`team/invitations/new`,loadComponent:()=>import(`./chunk-CLzfpBlo2.js`).then(e=>e.TeamInvitation),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`user.create`)),{titleKey:`configurationWorkspace.newInvitation`,robots:`noindex, nofollow`})},{path:`team`,loadComponent:()=>import(`./chunk-B2X87TB92.js`).then(e=>e.Team),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`user.read`)),{titleKey:`team.title`,robots:`noindex, nofollow`})}];var tt=[{path:`api/new`,loadComponent:()=>import(`./chunk-Cg6D1SkX2.js`).then(e=>e.ApiTokenEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`api-token.manage`)),{titleKey:`backOffice.apiTokens.create`,robots:`noindex, nofollow`})},{path:`api`,loadComponent:()=>import(`./chunk-LKcToPK62.js`).then(e=>e.ApiTokens),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`api-token.manage`)),{titleKey:`backOffice.apiTokens.title`,robots:`noindex, nofollow`})}];var ot=[{path:`services`,pathMatch:`full`,loadComponent:()=>import(`./chunk-CL9McPWU.js`).then(e=>e.Connections),canActivate:[r],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`connections.title`,robots:`noindex, nofollow`})},{path:`services/simulations`,loadComponent:()=>import(`./chunk-DTRJLfq02.js`).then(e=>e.Integrations),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`integration.manage`)),{titleKey:`configurationWorkspace.simulations`,robots:`noindex, nofollow`})},{path:`services/resend/tests/new`,loadComponent:()=>import(`./chunk-DdVUVFhX.js`).then(e=>e.EmailTest),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`configurationWorkspace.newTest`,robots:`noindex, nofollow`})},{path:`services/resend/tests/:requestId`,loadComponent:()=>import(`./chunk-DRY4w4Td.js`).then(e=>e.EmailTestDetail),canActivate:[r],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`configurationWorkspace.testDetail`,robots:`noindex, nofollow`})},{path:`services/resend/tests`,loadComponent:()=>import(`./chunk-C_wLUbPJ2.js`).then(e=>e.EmailTestList),canActivate:[r],data:m$4(l$1({},o(`integration.configure`)),{titleKey:`configurationWorkspace.tests`,robots:`noindex, nofollow`})},{path:`services/stripe/tests/new`,loadComponent:()=>import(`./chunk-ZoQD3eIP2.js`).then(e=>e.Checkout),canActivate:[r],canDeactivate:[t],data:m$4(l$1({},o(`integration.configure`,`invoice.read`)),{titleKey:`configurationWorkspace.newTest`,robots:`noindex, nofollow`})},{path:`services/stripe/tests/:requestId`,loadComponent:()=>import(`./chunk-3MmwmyDh.js`).then(e=>e.CheckoutDetail),canActivate:[r],data:m$4(l$1({},o(`integration.configure`,`invoice.read`)),{titleKey:`configurationWorkspace.testDetail`,robots:`noindex, nofollow`})},{path:`services/stripe/tests`,loadComponent:()=>import(`./chunk-DeERUxjp.js`).then(e=>e.CheckoutList),canActivate:[r],data:m$4(l$1({},o(`integration.configure`,`invoice.read`)),{titleKey:`configurationWorkspace.tests`,robots:`noindex, nofollow`})},...[`resend`,`stripe`,`signwell`,`superpdp`].map(e=>({path:`services/${e}`,data:m$4(l$1({},o(`integration.configure`)),{provider:e,titleKey:`configurationWorkspace.connection`,robots:`noindex, nofollow`}),loadComponent:()=>import(`./chunk-B3fBH9Bt2.js`).then(t=>t.ProviderConnection),canActivate:[r]}))];var at={path:`audit`,loadComponent:()=>import(`./chunk-f6C5Rz_B2.js`).then(e=>e.Audit),canActivate:[r],data:m$4(l$1({},o(`audit.read`)),{titleKey:`audit.title`,robots:`noindex, nofollow`})};var nt=[{path:`accounting`,loadComponent:()=>import(`./chunk-DVu24rwt.js`).then(e=>e.Accounting),canActivate:[r],data:m$4(l$1({},o(`accounting.read`)),{titleKey:`accounting.title`,robots:`noindex, nofollow`})}];var it=(e,t)=>e.fragment!==t.fragment;var le=`app-shell`;var rt=(e,t)=>t.map(a=>m$4(l$1({},a),{data:m$4(l$1({},a.data),{shell:e})}));function $(e){let t=`public`,a=e;for(;a;){let s=a.data.shell;s&&(t=s),a=a.firstChild}return t}var I=(e,t,a)=>[{path:``,redirectTo:e,pathMatch:`full`},...a.map(s=>({path:s,component:w$2,data:{panel:t,tab:s}}))];var ct=[...rt(`administrator`,[...Je,...Xe,...nt,...et,...tt,...ot,at]),{path:`join`,loadComponent:()=>import(`./chunk-D0MIkZdd2.js`).then(e=>e.TeamJoin),canDeactivate:[t],data:{shell:`public`,titleKey:`team.join`,robots:`noindex, nofollow`}},{path:``,redirectTo:`login`,pathMatch:`full`},{path:`quote`,canDeactivate:[t],runGuardsAndResolvers:it,loadComponent:()=>import(`./chunk-Bi9TDDm92.js`).then(e=>e.PublicQuote),data:{shell:`standalone`,titleKey:`page.public_quote`,descriptionKey:`page.description.public_quote`,robots:`noindex, nofollow`},children:[{path:``,redirectTo:`summary`,pathMatch:`full`},{path:`summary`,component:w$2,data:{panel:`summary`}},{path:`document`,component:w$2,data:{panel:`document`}},{path:`signature`,component:w$2,data:{panel:`signature`}},{path:`confirmation`,component:w$2,data:{panel:`confirmation`}}]},{path:`login`,loadComponent:()=>import(`./chunk-BRp_hGNk.js`).then(e=>e.Login),data:{shell:`public`,titleKey:`page.back_office`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`}},{path:`sign-out`,loadComponent:()=>import(`./chunk-bQhJGrXj2.js`).then(e=>e.SignOut),canDeactivate:[t],data:{shell:`public`,titleKey:`backOffice.signOut`,robots:`noindex, nofollow`}},{path:`bootstrap`,loadComponent:()=>import(`./chunk-AE7J7wcH2.js`).then(e=>e.Bootstrap),data:{shell:`public`,titleKey:`page.back_office`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`}},{path:`dashboard`,loadComponent:()=>import(`./chunk-B-2b7DJP.js`).then(e=>e.Dashboard),canActivate:[r],data:m$4(l$1({shell:`administrator`},o(`client.read`,`quote.read`,`order.read`,`invoice.read`)),{titleKey:`page.back_office`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`})},{path:`account`,loadComponent:()=>import(`./chunk-BDmE_ZEe2.js`).then(e=>e.AccountLayout),children:c,canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`},de()),{titleKey:`account.security_title`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`})},{path:`client/account`,loadComponent:()=>import(`./chunk-BDmE_ZEe2.js`).then(e=>e.AccountLayout),children:c,canActivate:[Q],data:{shell:`client`,titleKey:`account.security_title`,descriptionKey:`page.description.back_office`,robots:`noindex, nofollow`}},{path:`client/documents/:kind/:documentId`,loadComponent:()=>import(`./chunk-Fo633neF.js`).then(e=>e.CustomerDocumentDetail),canActivate:[Q],data:{shell:`client`,titleKey:`page.back_office_client`,robots:`noindex, nofollow`}},{path:`client`,loadComponent:()=>import(`./chunk-c57UHX0J.js`).then(e=>e.ClientPortal),canActivate:[Q],data:{shell:`client`,titleKey:`page.back_office_client`,descriptionKey:`page.description.back_office_client`,robots:`noindex, nofollow`}},{path:`clients`,loadComponent:()=>import(`./chunk-ClviGHGr.js`).then(e=>e.Clients),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_clients`},o(`client.read`)),{descriptionKey:`page.description.back_office_clients`,robots:`noindex, nofollow`}),children:I(`active`,`clients`,[`active`,`archived`,`all`])},{path:`purchases`,loadComponent:()=>import(`./chunk-xRsHYitB.js`).then(e=>e.SupplierInvoicesPage),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_supplier_invoices`},o(`supplier-invoice.read`)),{descriptionKey:`page.description.back_office_supplier_invoices`,robots:`noindex, nofollow`})},{path:`purchases/new`,loadComponent:()=>import(`./chunk-BSKQUQGn.js`).then(e=>e.SupplierInvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`,titleKey:`supplierInvoice.createTitle`},o(`supplier-invoice.create`)),{robots:`noindex, nofollow`})},{path:`purchases/analyze`,loadComponent:()=>import(`./chunk-CxgCrZQl.js`).then(e=>e.SupplierInvoiceAnalysisPage),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`supplierInvoice.analysis.title`},o(`supplier-invoice.analyze`,`supplier.read`)),{modules:[`purchasing`,`ai`],robots:`noindex, nofollow`})},{path:`purchases/payments`,loadComponent:()=>import(`./chunk-C2i4N9dz.js`).then(e=>e.SupplierPaymentBatchesPage),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`supplierPaymentBatch.title`},o(`supplier-invoice.pay`,`supplier-invoice.read`)),{robots:`noindex, nofollow`})},{path:`purchases/:invoiceId/edit`,loadComponent:()=>import(`./chunk-BSKQUQGn.js`).then(e=>e.SupplierInvoiceEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`,titleKey:`supplierInvoice.editTitle`},o(`supplier-invoice.read`,`supplier-invoice.update`)),{robots:`noindex, nofollow`})},{path:`purchases/:invoiceId`,loadComponent:()=>import(`./chunk-C94w9Yq2.js`).then(e=>e.SupplierInvoiceDetail),canActivate:[r],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_supplier_invoices`},o(`supplier-invoice.read`)),{descriptionKey:`page.description.back_office_supplier_invoices`,robots:`noindex, nofollow`})},{path:`suppliers`,loadComponent:()=>import(`./chunk-CS69nNvh.js`).then(e=>e.Suppliers),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_suppliers`},o(`supplier.read`)),{descriptionKey:`page.description.back_office_suppliers`,robots:`noindex, nofollow`}),children:I(`active`,`suppliers`,[`active`,`archived`,`all`])},{path:`suppliers/new`,loadComponent:()=>import(`./chunk-BuyEsqZU2.js`).then(e=>e.SupplierEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`supplier.create`)),{titleKey:`supplier.createTitle`,robots:`noindex, nofollow`})},{path:`suppliers/:supplierId/edit`,loadComponent:()=>import(`./chunk-BuyEsqZU2.js`).then(e=>e.SupplierEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`supplier.read`,`supplier.update`)),{titleKey:`supplier.editTitle`,robots:`noindex, nofollow`})},{path:`suppliers/:supplierId`,loadComponent:()=>import(`./chunk-BwGtxWvC.js`).then(e=>e.SupplierDetail),canActivate:[r],data:m$4(l$1({shell:`administrator`},o(`supplier.read`)),{titleKey:`page.back_office_supplier_detail`,descriptionKey:`page.description.back_office_supplier_detail`,robots:`noindex, nofollow`})},{path:`clients/new`,loadComponent:()=>import(`./chunk-B_7K7EHr.js`).then(e=>e.ClientEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`client.create`)),{titleKey:`backOffice.clients.create`,robots:`noindex, nofollow`})},{path:`clients/:clientId/edit`,loadComponent:()=>import(`./chunk-B_7K7EHr.js`).then(e=>e.ClientEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`client.read`,`client.update`)),{titleKey:`clientsWorkspace.edit`,robots:`noindex, nofollow`})},{path:`clients/:clientId/access/new`,loadComponent:()=>import(`./chunk-fLDt2Dc5.js`).then(e=>e.ClientAccessEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`client.read`,`client.access.manage`)),{titleKey:`page.back_office_client_detail`,robots:`noindex, nofollow`})},{path:`clients/:clientId`,loadComponent:()=>import(`./chunk-DGXdMht2.js`).then(e=>e.ClientDetail),canActivate:[r],canActivateChild:[h],canDeactivate:[t],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_client_detail`},o(`client.read`)),{descriptionKey:`page.description.back_office_client_detail`,robots:`noindex, nofollow`}),children:[{path:``,redirectTo:`profile`,pathMatch:`full`},{path:`profile`,component:w$2,data:{panel:`profile`}},{path:`affairs`,component:w$2,data:{panel:`affairs`}},{path:`documents`,component:w$2,data:{panel:`documents`}},{path:`access`,component:w$2,canActivate:[f],data:l$1({panel:`access`},o(`client.access.manage`))}]},{path:`affairs`,loadComponent:()=>import(`./chunk-CiQcqWHR.js`).then(e=>e.Affairs),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_quotes`},o(`affair.read`)),{descriptionKey:`page.description.back_office_quotes`,robots:`noindex, nofollow`}),children:I(`attention`,`affairs`,[`attention`,`active`,`completed`,`all`])},{path:`affairs/:affairId`,loadComponent:()=>import(`./chunk-Bq24rsxm2.js`).then(e=>e.AffairDetail),canActivate:[r],canActivateChild:[h],children:[...I(`overview`,`affair-detail`,[`overview`]),{path:`history`,component:w$2,canActivate:[f],data:l$1({panel:`affair-detail`,tab:`history`},o(`audit.read`))}],data:m$4(l$1({shell:`administrator`,titleKey:`page.back_office_affair_detail`},o(`affair.read`,`quote.read`,`order.read`,`invoice.read`)),{descriptionKey:`page.description.back_office_affair_detail`,robots:`noindex, nofollow`})},{path:`quotes/new`,loadComponent:()=>import(`./chunk-DKDWoDXU.js`).then(e=>e.QuoteEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`quote.create`,`client.read`,`catalog.read`,`condition.read`,`issuer.read`)),{titleKey:`page.back_office_quote_editor`,descriptionKey:`page.description.back_office_quote_editor`,robots:`noindex, nofollow`})},{path:`quotes/:quoteId/edit`,loadComponent:()=>import(`./chunk-DKDWoDXU.js`).then(e=>e.QuoteEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`quote.read`,`quote.update`,`client.read`,`catalog.read`,`condition.read`,`issuer.read`)),{titleKey:`page.back_office_quote_editor`,descriptionKey:`page.description.back_office_quote_editor`,robots:`noindex, nofollow`})},{path:`quotes/:quoteId/publication`,loadComponent:()=>import(`./chunk-BurkPLm-2.js`).then(e=>e.QuotePublication),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`quote.read`,`quote.send`)),{titleKey:`commercial.publicationTitle`,robots:`noindex, nofollow`})},{path:`quotes/:quoteId`,loadComponent:()=>import(`./chunk-BSDpuA332.js`).then(e=>e.QuoteDetail),canActivate:[r],canActivateChild:[h],canDeactivate:[t],children:I(`summary`,`quote-detail`,[`summary`,`document`]),data:m$4(l$1({shell:`administrator`},o(`quote.read`)),{titleKey:`commercial.quote`,robots:`noindex, nofollow`})},{path:`orders/:orderId`,loadComponent:()=>import(`./chunk-BJ0yZa2G.js`).then(e=>e.OrderDetail),canActivate:[r],data:m$4(l$1({shell:`administrator`},o(`order.read`,`quote.read`)),{titleKey:`commercial.order`,robots:`noindex, nofollow`})},{path:`catalog/new`,loadComponent:()=>import(`./chunk-JqPdfaO22.js`).then(e=>e.CatalogEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`catalog.manage`)),{titleKey:`catalog.create`,robots:`noindex, nofollow`})},{path:`catalog/:itemId/edit`,loadComponent:()=>import(`./chunk-JqPdfaO22.js`).then(e=>e.CatalogEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`catalog.read`,`catalog.manage`)),{titleKey:`catalogWorkspace.editTitle`,robots:`noindex, nofollow`})},{path:`catalog`,loadComponent:()=>import(`./chunk-AZB0sMq_.js`).then(e=>e.Catalog),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`},o(`catalog.read`)),{titleKey:`catalog.title`,robots:`noindex, nofollow`}),children:I(`active`,`catalog`,[`active`,`archived`,`all`])},{path:`configuration`,loadComponent:()=>import(`./chunk-BNS7t55s2.js`).then(e=>e.Configuration),canActivate:[r],canActivateChild:[h],data:m$4(l$1({shell:`administrator`},de()),{titleKey:`page.back_office_issuer_settings`,descriptionKey:`page.description.back_office_issuer_settings`,robots:`noindex, nofollow`}),children:Ze},{path:`emails/new`,loadComponent:()=>import(`./chunk-B6mYbErA2.js`).then(e=>e.EmailComposer),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emailsWorkspace.newMessage`,robots:`noindex, nofollow`})},{path:`emails/drafts/:draftId/edit`,loadComponent:()=>import(`./chunk-B6mYbErA2.js`).then(e=>e.EmailComposer),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emailsWorkspace.editDraft`,robots:`noindex, nofollow`})},{path:`emails/messages/:operationId`,loadComponent:()=>import(`./chunk-Dc29tEgJ2.js`).then(e=>e.EmailDetail),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emailsWorkspace.message`,robots:`noindex, nofollow`})},{path:`emails/templates/new`,loadComponent:()=>import(`./chunk-6twPawwh.js`).then(e=>e.EmailTemplateEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.template.manage`)),{titleKey:`emailsWorkspace.newTemplate`,robots:`noindex, nofollow`})},{path:`emails/templates/:templateId/edit`,loadComponent:()=>import(`./chunk-6twPawwh.js`).then(e=>e.EmailTemplateEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.template.manage`)),{titleKey:`emailsWorkspace.editTemplate`,robots:`noindex, nofollow`})},{path:`emails/reminders/new`,loadComponent:()=>import(`./chunk-Ub2hjsmX.js`).then(e=>e.ReminderEditor),canActivate:[r],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.reminder.manage`)),{titleKey:`emailsWorkspace.newReminder`,robots:`noindex, nofollow`})},{path:`emails`,loadComponent:()=>import(`./chunk-ChMWeKtk2.js`).then(e=>e.Emails),canActivate:[r],canActivateChild:[h],canDeactivate:[t],data:m$4(l$1({shell:`administrator`},o(`email.draft.manage`)),{titleKey:`emails.title`,descriptionKey:`emails.intro`,robots:`noindex, nofollow`}),children:[{path:``,redirectTo:`messages`,pathMatch:`full`},{path:`messages`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`messages`},o(`integration.manage`))},{path:`drafts`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`drafts`},o(`email.draft.manage`))},{path:`reminders`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`reminders`},o(`email.reminder.manage`,`invoice.read`,`client.read`,`integration.manage`))},{path:`templates`,component:w$2,canActivate:[f],data:l$1({panel:`emails`,tab:`templates`},o(`email.template.manage`))}]},{path:`version`,loadComponent:()=>import(`./chunk-fY-2jgAh.js`).then(e=>e.Version),data:{shell:`standalone`,titleKey:`page.version`,descriptionKey:`page.description.version`}},{path:`404`,loadComponent:()=>import(`./chunk-DnYJfVdt.js`).then(e=>e.NotFoundComponent),data:{titleKey:`page.not_found`,descriptionKey:`page.description.not_found`,robots:`noindex, nofollow`}},{path:`**`,loadComponent:()=>import(`./chunk-DnYJfVdt.js`).then(e=>e.NotFoundComponent),data:{titleKey:`page.not_found`,descriptionKey:`page.description.not_found`,robots:`noindex, nofollow`}}];var ut=e=>e===`/api/auth/account`||e===`/api/auth/login`||e===`/api/auth/refresh`||e===`/api/auth/logout`||e===`/api/auth/password`||e===`/api/bootstrap`||e===`/api/team/accept`||e.startsWith(`/api/public/`)||e===`/api/health`||e===`/api/version`;var st=(e,t)=>{let a=g$2(v);return!e.url.startsWith(`/api/`)||ut(e.url)||e.headers.has(`Authorization`)?t(e):t(e).pipe(qa(s=>s.status!==401?fE(()=>s):nt$1(a.refresh()).pipe(Qa(()=>a.mode()===void 0?fE(()=>s):t(e)))))};var dt={providers:[DI(),uA(dA(),lA([st])),s8(o8(),i8()),Uo(ct,zo(),Po({anchorScrolling:`enabled`,scrollPositionRestoration:`enabled`}),$o(e=>{let t=e.error instanceof Error?e.error.message:String(e.error);if(!/chunk|dynamically imported module|importing a module script/i.test(t))return;let a=Number(sessionStorage.getItem(`froment.chunk-reload`));Date.now()-a<1e4||(sessionStorage.setItem(`froment.chunk-reload`,String(Date.now())),location.reload())}))]};var Y=class e{router=g$2(ue);document=g$2(H$3);injector=g$2(ce$3);isBrowser=xU(g$2(yo$1));navigationEnd=T$2(this.router.events.pipe(jt(t=>t instanceof x$2)),{initialValue:null});initialNavigationComplete=this.router.navigated;previousUrl=this.router.url;constructor(){ou(()=>{let t=this.navigationEnd();if(!t)return;let a=this.previousUrl;if(this.previousUrl=t.urlAfterRedirects,!this.initialNavigationComplete){this.initialNavigationComplete=!0;return}let s=this.router.parseUrl(t.urlAfterRedirects).fragment;a.split(/[?#]/,1)[0]===t.urlAfterRedirects.split(/[?#]/,1)[0]&&this.router.parseUrl(a).fragment===s||(s?this.focusFragment(s):this.focusMainAfterRender())})}focusFragment(t){this.isBrowser&&Ol(()=>{let a=this.document.getElementById(t);if(!a)return this.focusMain();let s=a.matches(`h1, h2, h3, h4, h5, h6, [role="heading"]`)?a:a.querySelector(`h1, h2, h3, h4, h5, h6, [role="heading"]`)??a;this.focusElement(s)},{injector:this.injector})}focusElement(t){let a=!t.hasAttribute(`tabindex`)&&!t.matches(`a[href], area[href], button, input, select, textarea, iframe, [contenteditable="true"]`);if(a&&(t.tabIndex=-1),t.focus({preventScroll:!0}),a){if(this.document.activeElement!==t)return t.removeAttribute(`tabindex`);t.addEventListener(`blur`,()=>t.removeAttribute(`tabindex`),{once:!0})}}focusMain(){this.document.getElementById(`main-content`)?.focus({preventScroll:!0})}focusMainAfterRender(){this.isBrowser&&Ol(()=>this.focusMain(),{injector:this.injector})}static ɵfac=function(a){return new(a||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};var J=class e{router=g$2(ue);route=g$2(G$2);i18n=g$2(Ie);title=g$2(r8);meta=g$2(n8);navigationEnd=T$2(this.router.events.pipe(jt(t=>t instanceof x$2)),{initialValue:null});constructor(){ou(()=>{this.i18n.language(),this.navigationEnd(),this.updateRoute()})}updateRoute(){let t=this.route.snapshot;for(;t.firstChild;)t=t.firstChild;this.setPageTitle(t.data.titleKey),this.meta.updateTag({name:`robots`,content:`noindex, nofollow`})}setPageTitle(t){if(t){let a=this.i18n.t(t).split(` | `)[0];this.title.setTitle(a)}}static ɵfac=function(a){return new(a||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};var X=class e{document=g$2(H$3);textCopy=g$2(a);hideTimer;message=Ke(null);async copy(t,a){let s=this.document.defaultView?.location;if(!s)return;let p=`${s.origin}${s.pathname}${s.search}#${t}`;await this.textCopy.copy(p)&&(clearTimeout(this.hideTimer),this.message.set(a),this.hideTimer=setTimeout(()=>this.message.set(null),2400))}static ɵfac=function(a){return new(a||e)};static ɵprov=A$2({token:e,factory:e.ɵfac,providedIn:`root`})};function gt(e,t){e&1&&(pd(0,`div`,0),y_(1),hd()),e&2&&(ZC(),nv(t))}var Z=class e{anchorCopy=g$2(X);static ɵfac=function(a){return new(a||e)};static ɵcmp=Fb({type:e,selectors:[[`app-copy-notice`]],decls:1,vars:1,consts:[[`role`,`status`,`aria-live`,`polite`,1,`copy-notice`,`visible`]],template:function(a,s){if(a&1&&OS(0,gt,2,1,`div`,0),a&2){let p;kS((p=s.anchorCopy.message())?0:-1,p)}},styles:[`[_nghost-%COMP%]{display:contents}.copy-notice[_ngcontent-%COMP%]{position:fixed;right:var(--%NS%page-x);bottom:var(--%NS%space-4);z-index:var(--%NS%z-skip-link);max-width:min(24rem,100vw - 2 * var(--%NS%page-x));padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%color-line-strong);border-radius:var(--%NS%radius-sm);background:var(--%NS%color-surface-raised);box-shadow:var(--%NS%shadow-sm);font-size:var(--%NS%text-sm);opacity:0;pointer-events:none;transform:translateY(var(--%NS%space-2));transition:opacity var(--%NS%duration-base) var(--%NS%ease-out),transform var(--%NS%duration-base) var(--%NS%ease-out)}.copy-notice.visible[_ngcontent-%COMP%]{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.copy-notice[_ngcontent-%COMP%]{transition:none}}`]})};var ee=class e{administrator=NH(!1);static ɵfac=function(a){return new(a||e)};static ɵcmp=Fb({type:e,selectors:[[`app-back-office-header-placeholder`]],inputs:{administrator:[1,`administrator`]},decls:12,vars:2,consts:[[`aria-hidden`,`true`,1,`sidebar`],[1,`placeholder`,`account-placeholder`],[1,`navigation-placeholder`],[1,`placeholder`],[`aria-hidden`,`true`,1,`workspace-header`],[1,`placeholder`,`search-placeholder`],[1,`placeholder`,`actions-placeholder`]],template:function(a,s){a&1&&(Us(0,`div`,0),Py(1,`span`,1),Us(2,`div`,2),Py(3,`span`,3)(4,`span`,3)(5,`span`,3)(6,`span`,3)(7,`span`,3),fd()(),Us(8,`div`,4),Py(9,`app-navigation-progress`)(10,`span`,5)(11,`span`,6),fd()),a&2&&(ZC(8),Xy(`administrator`,s.administrator()))},dependencies:[v$2],styles:[`[_nghost-%COMP%]{display:contents}.sidebar[_ngcontent-%COMP%]{grid-area:sidebar;position:sticky;inset-block-start:0;block-size:100dvh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--%NS%space-5);padding:var(--%NS%space-4);border-inline-end:1px solid var(--%NS%color-line);background:var(--%NS%color-header)}@media(max-width:63.999rem){.sidebar[_ngcontent-%COMP%]{display:none}}.workspace-header[_ngcontent-%COMP%]{grid-area:header;position:sticky;inset-block-start:0;z-index:var(--%NS%z-header);display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3);min-block-size:3.75rem;padding:var(--%NS%space-3) var(--%NS%page-x);border-block-end:1px solid var(--%NS%color-line);background:var(--%NS%color-surface)}.placeholder[_ngcontent-%COMP%]{display:block;block-size:1.5rem;border-radius:var(--%NS%radius-xs);background:var(--%NS%color-surface-sunken)}.account-placeholder[_ngcontent-%COMP%]{block-size:3.75rem}.navigation-placeholder[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4)}.search-placeholder[_ngcontent-%COMP%]{inline-size:min(100%,32rem);block-size:var(--%NS%control-height)}.actions-placeholder[_ngcontent-%COMP%]{display:none;inline-size:12rem;block-size:var(--%NS%control-height)}@media(max-width:40rem){.administrator[_ngcontent-%COMP%] .search-placeholder[_ngcontent-%COMP%]{inline-size:100%}.administrator[_ngcontent-%COMP%] .actions-placeholder[_ngcontent-%COMP%]{display:block}}@media print{.sidebar[_ngcontent-%COMP%], .workspace-header[_ngcontent-%COMP%]{display:none}}`]})};var vt=()=>[import(`./chunk-DbL20WIB2.js`).then(e=>e.FlashOutlet)];var ht=()=>[import(`./chunk-pffFf_PV2.js`).then(e=>e.BackOfficeHeader)];function yt(e,t){if(e&1&&Py(0,`app-back-office-header`,8),e&2)Fy(`administrator`,qS(2).administrator())}function bt(e,t){if(e&1&&Py(0,`app-back-office-header-placeholder`,8),e&2)Fy(`administrator`,qS(2).administrator())}function St(e,t){if(e&1){let a=zS();Us(0,`div`,9),Py(1,`app-navigation-progress`),Us(2,`p`,10),y_(3),fd(),Us(4,`button`,11),Gy(`click`,function(){Ip(a);return wp(qS(2).reload())}),y_(5),fd()()}if(e&2){let a=qS(2);ZC(3),nv(a.i18n.t(`shell.navigationUnavailable`)),ZC(2),nv(a.i18n.t(`shell.reload`))}}function kt(e,t){if(e&1&&(wy(0,yt,1,1)(1,bt,1,1)(2,St,6,2),MS(3,0,ht,null,1,2)),e&2){let a=qS();ZC(3),NS(a.startup()===`ready`)}}function Ct(e,t){e&1&&Py(0,`app-navigation-progress`,3)}function Mt(e,t){if(e&1&&Py(0,`app-environment-status`,4),e&2)Fy(`publicPage`,qS().publicPage())}function xt(e,t){if(e&1&&(Us(0,`div`,6),Py(1,`span`,12),Us(2,`p`),y_(3),fd()()),e&2){let a=qS();ZC(3),nv(a.i18n.t(`shell.loading`))}}function _t(e,t){if(e&1){let a=zS();Us(0,`div`,7)(1,`p`,10),y_(2),fd(),Us(3,`button`,11),Gy(`click`,function(){Ip(a);return wp(qS().reload())}),y_(4),fd()()}if(e&2){let a=qS();ZC(2),nv(a.i18n.t(`shell.loadError`)),ZC(2),nv(a.i18n.t(`shell.reload`))}}function Nt(e,t){e&1&&Py(0,`app-flash-outlet`)}jN(class e{i18n=g$2(Ie);router=g$2(ue);navigating=Ft(()=>this.router.currentNavigation()!==null);document=g$2(H$3);transferState=g$2(At$1);initialShell=this.router.navigated?$(this.router.routerState.snapshot.root):this.transferState.get(le,void 0);shell=Ke(this.initialShell);startup=Ke(this.initialShell===void 0?`loading`:`ready`);backOffice=Ft(()=>this.shell()===`administrator`||this.shell()===`client`);administrator=Ft(()=>this.shell()===`administrator`);standalonePage=Ft(()=>this.shell()===`standalone`);publicPage=Ft(()=>this.shell()===`public`);constructor(){g$2(Y),g$2(J),this.transferState.onSerialize(le,()=>this.shell()),this.router.events.pipe(U$1()).subscribe(t=>{t instanceof x$2?(this.shell.set($(this.router.routerState.snapshot.root)),this.startup.set(`ready`)):this.startup()!==`ready`&&(t instanceof je?(this.shell.set($(t.state.root)),this.startup.set(`loading`)):t instanceof J$3?this.startup.set(`loading`):(t instanceof se$1||t instanceof H$2||t instanceof j$3&&t.code!==b$2.Redirect&&t.code!==b$2.SupersededByNewNavigation)&&this.startup.set(`error`))})}reload(){this.document.defaultView?.location.reload()}static ɵfac=function(a){return new(a||e)};static ɵcmp=Fb({type:e,selectors:[[`app-root`]],decls:15,vars:12,consts:[[`mainContent`,``],[1,`app-shell`],[`href`,`#main-content`,1,`skip-link`,3,`click`],[1,`standalone-progress`],[`ngSkipHydration`,``,`placement`,`hidden`,3,`publicPage`],[`id`,`main-content`,`tabindex`,`-1`],[`role`,`status`,1,`startup-status`],[1,`startup-status`],[3,`administrator`],[1,`header-error`],[`role`,`alert`],[`appButton`,``,`type`,`button`,3,`click`],[`aria-hidden`,`true`,1,`loading-spinner`]],template:function(a,s){if(a&1){let p=zS();Us(0,`div`,1)(1,`a`,2),Gy(`click`,function(M){Ip(p);let x=t_(7);return M.preventDefault(),wp(x.focus({preventScroll:!0}))}),y_(2),fd(),OS(3,kt,5,1)(4,Ct,1,0,`app-navigation-progress`,3),OS(5,Mt,1,1,`app-environment-status`,4),Us(6,`main`,5,0),OS(8,xt,4,1,`div`,6)(9,_t,5,2,`div`,7),wy(10,Nt,1,0),MS(11,10,vt),Py(13,`router-outlet`),fd(),Py(14,`app-copy-notice`),fd()}a&2&&(Xy(`back-office-shell`,s.backOffice())(`standalone-shell`,s.standalonePage()),ZC(2),nv(s.i18n.t(`shell.skip`)),ZC(),kS(s.backOffice()?3:s.standalonePage()?4:-1),ZC(2),kS(s.backOffice()?-1:5),ZC(),Xy(`startup-main`,s.startup()!==`ready`),ky(`aria-busy`,s.navigating()),ZC(2),kS(s.startup()===`loading`?8:s.startup()===`error`?9:-1),ZC(3),NS(s.backOffice()))},dependencies:[ee,N,Z,M$1,v$2,gr],styles:[`[_nghost-%COMP%]{display:block;min-height:100dvh}.app-shell[_ngcontent-%COMP%]{display:flex;min-width:0;min-height:100dvh;flex-direction:column;color:var(--%NS%color-ink)}.back-office-shell[_ngcontent-%COMP%]{display:grid;grid-template-columns:16rem minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"sidebar header" "sidebar content";align-items:start;background:var(--%NS%color-surface)}.back-office-shell[_ngcontent-%COMP%] main[_ngcontent-%COMP%]{grid-area:content;width:100%;max-width:var(--%NS%page-width-wide);margin-block:0;margin-inline:auto}.back-office-shell[_ngcontent-%COMP%] app-copy-notice[_ngcontent-%COMP%]{display:contents}.startup-main[_ngcontent-%COMP%]{display:flex;align-self:stretch}.startup-status[_ngcontent-%COMP%], .header-error[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%page-y) var(--%NS%page-x);color:var(--%NS%color-muted)}.startup-status[_ngcontent-%COMP%]{flex:1;min-width:0;flex-direction:column;flex-wrap:nowrap;justify-content:center;gap:var(--%NS%space-4);color:var(--%NS%color-ink);font-size:var(--%NS%text-xl);text-align:center}.header-error[_ngcontent-%COMP%]{position:relative;grid-area:header}.standalone-progress[_ngcontent-%COMP%]{position:fixed;inset-block-start:0}.loading-spinner[_ngcontent-%COMP%]{flex:none;inline-size:3rem;block-size:3rem;border:3px solid var(--%NS%color-line-strong);border-block-start-color:var(--%NS%color-ink);border-radius:50%}@media(prefers-reduced-motion:no-preference){.loading-spinner[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_loading-spin .8s linear infinite}}@keyframes _ngcontent-%COMP%_loading-spin{to{transform:rotate(360deg)}}@media(max-width:63.999rem){.back-office-shell[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr);grid-template-areas:"header" "content"}}.skip-link[_ngcontent-%COMP%]{position:fixed;top:var(--%NS%space-2);inset-inline-start:var(--%NS%space-3);z-index:var(--%NS%z-skip-link);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%color-line-strong);border-radius:var(--%NS%radius-sm);background:var(--%NS%color-surface-raised);font-size:var(--%NS%text-sm);clip-path:inset(50%);translate:0 calc(-100% - var(--%NS%space-6))}.skip-link[_ngcontent-%COMP%]:focus-visible{clip-path:none;translate:0 0}main[_ngcontent-%COMP%]{flex:1;min-width:0;width:calc(100% - 2 * var(--%NS%shell-gutter));max-width:var(--%NS%layout-max);margin-block:var(--%NS%shell-gutter);margin-inline:auto;outline:none}.standalone-shell[_ngcontent-%COMP%] main[_ngcontent-%COMP%]{width:100%;max-width:none;margin:0}#main-content[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--%NS%color-focus);outline-offset:-2px;box-shadow:none}@media print{.back-office-shell[_ngcontent-%COMP%] main[_ngcontent-%COMP%]{max-width:none}.back-office-shell[_ngcontent-%COMP%]{display:block}main[_ngcontent-%COMP%]{width:100%;max-width:none;margin:0}}`],changeDetection:1})},dt).catch(e=>console.error(e));export{oe$2 as C,x$2 as E,gr as S,ue as T,o$3 as _,T$2 as a,No as b,O$1 as c,M$1 as d,u$1 as f,bt$1 as g,Ne as h,r$1 as i,r$2 as l,Ie as m,v as n,U$1 as o,v$2 as p,N as r,a as s,o$1 as t,c as u,Dt as v,p$4 as w,ce$2 as x,G$2 as y};
|