From 060014429673b1e988da1dbbfe3059fb40e8637b Mon Sep 17 00:00:00 2001 From: saeed Date: Wed, 28 Oct 2026 14:34:43 +0330 Subject: [PATCH] build: release artifacts after order revision, rial wage, and product tags Co-authored-by: Cursor --- ...e_type_script_setup_true_lang-aFInWcLz.js} | 2 +- apps/admin-panel/dist/assets/Add-CyAPNN08.js | 1 + apps/admin-panel/dist/assets/Add-o90TOQ6U.js | 1 - ...e_type_script_setup_true_lang-Bc-uQ6iU.js} | 2 +- .../dist/assets/AddBranches-DU7wFOIC.js | 1 + .../dist/assets/AddBranches-DbKQr4RL.js | 1 - ...e_type_script_setup_true_lang-D-h0CMKK.js} | 2 +- ...er-C93P9Nl8.js => AddCustomer-DXt3pmSf.js} | 2 +- ...ice-iZuqzIMz.js => AddInvoice-DwmImnAo.js} | 2 +- .../dist/assets/AddProduct-B3HJWpgQ.css | 1 - .../dist/assets/AddProduct-Bl-1Lqf-.css | 1 + .../dist/assets/AddProduct-CqaK3I6Q.js | 1 - .../dist/assets/AddProduct-DqeCa5en.js | 1 + .../dist/assets/AddWorkshop-Cq08meS9.js | 1 - .../dist/assets/AddWorkshop-DkrmcSHY.js | 1 + ...e_type_script_setup_true_lang-qc3OG2kG.js} | 2 +- ...il-sO_PGm1D.js => AgentDetail-DRGOkkVC.js} | 2 +- ...qrCmxh.js => AppstoreOutlined-D5DMeuPl.js} | 2 +- .../dist/assets/BankerList-BPuo9i5M.js | 1 - .../dist/assets/BankerList-CuVGBn-P.js | 1 + ...e_vue_type_style_index_0_lang-BEGcbOVS.js} | 2 +- ...B6nXMt0y.js => CameraOutlined-CFYC5ScW.js} | 2 +- ...-sP7FGIWF.js => ChangePercent-HGfS5bXV.js} | 2 +- ...e_type_script_setup_true_lang-K2atGUyk.js} | 2 +- ...ments-CGkM8YQW.js => Comments-BRX5fmch.js} | 2 +- .../{Const-CvgkKjTn.js => Const-CiWiRUCV.js} | 2 +- ...FLTI.js => CreditCardOutlined-CcvN7g1Z.js} | 2 +- ...DzOk8IG6.js => CustomerDetail-BxNzOtlQ.js} | 2 +- ...oard-Cb_e8hUK.js => Dashboard-Dty7lg2F.js} | 2 +- ...nput-CSLG7sxn.js => DateInput-D9Jh1loF.js} | 2 +- apps/admin-panel/dist/assets/Edit-CNTQOlgk.js | 1 + apps/admin-panel/dist/assets/Edit-kPt-2bSX.js | 1 - .../dist/assets/EditBranches-BgZpg5Qg.js | 1 + .../dist/assets/EditBranches-DD2D-1SM.js | 1 - .../dist/assets/EditBulkCustomer-C_e-C8L8.js | 1 + .../dist/assets/EditBulkCustomer-w9LEjkC1.js | 1 - .../dist/assets/EditInvoice-CKOrEPF-.js | 1 - .../dist/assets/EditInvoice-oFQdQ5sU.js | 1 + .../dist/assets/EditProduct-BKzZP7ji.js | 1 + .../dist/assets/EditProduct-miBXIVTw.js | 1 - .../dist/assets/EditReagent-Ba5R7-Av.js | 1 - .../dist/assets/EditReagent-CwG5Obtx.js | 1 + .../assets/EditSingleCustomer-Bn4VcGk8.js | 1 + .../assets/EditSingleCustomer-CTn0uVfI.js | 1 - .../dist/assets/EditWorkshop-BC8_AOnI.js | 1 + .../dist/assets/EditWorkshop-CoYdSxko.js | 1 - ..._xx.js => EnvironmentOutlined-BKbou10z.js} | 2 +- ...or404-CrARqFTT.js => Error404-RiMPFrr5.js} | 2 +- ...or500-2YJNeuLX.js => Error500-jeDtZpef.js} | 2 +- ...e_type_script_setup_true_lang-B2i1tZYn.js} | 2 +- ...lPage-DpKiI4Qs.js => FullPage-DMlJXjfZ.js} | 2 +- ...ck-DFjtEuae.js => IamCallback-CDfS1Tyd.js} | 2 +- ...e_type_script_setup_true_lang-D89_uh6g.js} | 2 +- .../{List-Be1uA64N.js => List-CMDP8SDT.js} | 2 +- apps/admin-panel/dist/assets/List-Cql7jPx_.js | 1 + .../admin-panel/dist/assets/List-DYRF6PAj.css | 1 - apps/admin-panel/dist/assets/List-DZ2UtgZK.js | 1 - .../admin-panel/dist/assets/List-vIzaRldC.css | 1 + ...s-DKS9egre.js => ListBranches-HIAgbHcy.js} | 2 +- ...ce-BUUcrdEN.js => ListInvoice-g-UG6V0q.js} | 2 +- ...e_type_script_setup_true_lang-BPANTZG7.js} | 2 +- ...tUser-B5HisvUF.js => ListUser-xB3fMA3W.js} | 2 +- ...p-Co07pp0l.js => ListWorkshop-eILF1R4A.js} | 2 +- ...d-XBpx1rxs.js => LockOutlined-BQjJg0kk.js} | 2 +- .../{Login-B0DXknhX.js => Login-uO1nRvXv.js} | 2 +- .../{Main-B6XfJkyt.js => Main-D1tnU8tP.js} | 2 +- ...ce-CRfOTU6G.js => Maintenance-Df5I5LOi.js} | 2 +- ...rder-aTjo9HZz.js => MakeOrder-umVSia6q.js} | 2 +- ...-kSbkBInP.js => NotAuthorized-Cl9-8nb6.js} | 2 +- .../dist/assets/OmdeArchivedList-DXe8fsa2.js | 1 - .../dist/assets/OmdeArchivedList-RTBSSPqv.js | 1 + .../dist/assets/OmdeCustomerList-CytNKR8R.js | 1 + .../dist/assets/OmdeCustomerList-c6FcwBcS.js | 1 - .../dist/assets/OmdeList-CEBt8LxW.js | 1 - .../dist/assets/OmdeList-CF36um8c.css | 1 - .../dist/assets/OmdeList-D6Hbka2-.css | 1 + .../dist/assets/OmdeList-D7WY5ylW.js | 1 + .../dist/assets/OmdeList-DH-oJpv0.js | 1 - .../dist/assets/OmdeList-DQ1AeZVa.js | 1 + .../assets/OmdeNonVerifiedList-BiBG9jCs.js | 1 + .../assets/OmdeNonVerifiedList-Chk-ZLmx.js | 1 - .../assets/OrderStatusTimeline-Dm95hywe.js | 1 + .../assets/OrderStatusTimeline-nDDfaXIt.css | 1 + ...bn5o.js => PercentageOutlined-DyprS4lh.js} | 2 +- ...ion-BDWBYh7-.js => Permission-CenARUCd.js} | 2 +- .../dist/assets/PictureOutlined-BQUWPT2c.js | 1 + .../dist/assets/ProductList-D4ZJWLMm.css | 1 + .../dist/assets/ProductList-D6w5abTS.css | 1 - .../dist/assets/ProductList-DKYFsy5A.js | 1 - .../dist/assets/ProductList-DlDr1CI8.js | 1 + ...-ii0sb4Z5.js => PromotionForm-CAyJlwhb.js} | 2 +- ...AV0MXtJ.js => ReagentCustomer-BXqRAucN.js} | 2 +- .../dist/assets/ReagentList-Bm3uQYje.js | 1 + .../dist/assets/ReagentList-CtR1WkfW.js | 1 - ... => SafetyCertificateOutlined-Du6lFDs_.js} | 2 +- ...BdK6RkP.js => SettingOutlined-DibNCEeh.js} | 2 +- ...d-MoIbCAG4.js => ShopOutlined-DIjF3I3z.js} | 2 +- .../dist/assets/ShopkeeperList-DAWnyPJb.js | 1 + .../dist/assets/ShopkeeperList-pfD0i838.js | 1 - ...BP-Jvfsy.js => SingleCustomer-Ds30MZZu.js} | 2 +- .../dist/assets/TaminList-BDxHKzcP.js | 1 + .../dist/assets/TaminList-CDSG2cQ_.css | 1 + .../dist/assets/TaminList-Cta7c5dR.js | 1 - .../dist/assets/TaminList-V-O9JF64.css | 1 - ...d-DPoMD9pK.js => TeamOutlined-Bx4ezhPp.js} | 2 +- ...e_type_script_setup_true_lang-CHnLAped.js} | 2 +- ..._.js => UnorderedListOutlined-cPIiOEaQ.js} | 2 +- ...CWSfp_Y.js => UserAddOutlined-GWNEdhY8.js} | 2 +- ...ate-B9hxrLOO.js => UserCreate-8S3eAopa.js} | 2 +- .../dist/assets/UserEdit-DgpzTP1E.js | 1 + .../dist/assets/UserEdit-DvU5z6vT.js | 1 - ...d-CzruAWCH.js => UserOutlined-B4M5rNrX.js} | 2 +- .../dist/assets/ViewOmdeCustomer-D3i36iTG.js | 1 + .../dist/assets/ViewOmdeCustomer-eFH3i6bz.js | 1 - .../assets/ViewSingleCustomer-B2QupTSx.js | 1 + .../assets/ViewSingleCustomer-BsTNdacv.js | 1 - ...ing-SNbebogb.js => accounting-Dbj920fC.js} | 2 +- .../dist/assets/addFinDoc-Copg65eX.js | 1 + .../dist/assets/addFinDoc-Crm0ebUu.js | 1 - ...e_type_script_setup_true_lang-BeApu2ja.js} | 2 +- .../{auth-l1fvj2RU.js => auth-Cmkre2IW.js} | 2 +- ...-cv1k7IXP.js => autopromotion-DXzzvH9j.js} | 2 +- ...e_type_script_setup_true_lang-_PHXAFqm.js} | 2 +- ...yList-ZcdYYFeM.js => cityList-DX9LVS_S.js} | 2 +- ...{create-DqSLe1hW.js => create-BIvFVhDo.js} | 2 +- ...{create-BcV0LZ6B.js => create-Coyb76zV.js} | 2 +- ...{create-BLo5130R.js => create-ucx1HuF8.js} | 2 +- .../dist/assets/createCity-CbhYJB0l.js | 1 - .../dist/assets/createCity-pjdKbfGT.js | 1 + ...e_type_script_setup_true_lang-DsfElQum.js} | 2 +- ...ilters-gmIfX3-G.js => filters-BMytoA2k.js} | 2 +- .../{icons-DiNnR1E8.js => icons-DaMkWfMK.js} | 2 +- .../{index-BAamWbCu.js => index-CKaD48iT.js} | 2 +- .../{index-DdFLWjO6.js => index-DrgFPRTa.js} | 2 +- .../{index-DajPj7Ec.js => index-eLNLLYwC.js} | 8 +- .../{list-D63BjZ2R.js => list-DNHKXSxl.js} | 2 +- .../{model-CR-NjhTP.js => model-btNVLLyF.js} | 2 +- ...{myData-DsOyJhsC.js => myData-CDJUmBNX.js} | 2 +- ...rs-Cw3--aFT.js => newsletters-CkmueuCH.js} | 2 +- ...O.js => offersIgnore-add-edit-B39Jv3mn.js} | 2 +- ...tem-BCXFMT8w.js => order_item-BLR_vTQ1.js} | 2 +- ...roduct-CdHCOmwK.js => product-Pyi69LQn.js} | 2 +- .../dist/assets/productListModel-C4fzek7T.js | 1 - .../dist/assets/productListModel-DskQX-jW.js | 1 + .../assets/promotion_add_edit-CkCABaCG.js | 1 + .../assets/promotion_add_edit-CqCju9pR.js | 1 - ...e_type_script_setup_true_lang-Byvx5z5L.js} | 2 +- ...CJB17R4H.js => promotion_list-C6ai2IKH.js} | 2 +- .../assets/promotion_tak_add_edit-0aN9XPzw.js | 1 + .../assets/promotion_tak_add_edit-Bza5oS11.js | 1 - ...e_type_script_setup_true_lang-JRmgfs03.js} | 2 +- .../{reg-CTnxnWvP.js => reg-CqiFjlXn.js} | 2 +- ...{report-OEDYaCDs.js => report-e-YemU3S.js} | 2 +- ...3o4eCG9y.js => singleCustomer-gqRtFTnm.js} | 2 +- ...whuWqX.js => useDeleteHandler-BHXHWuUG.js} | 2 +- .../{user-CB1sVp_3.js => user-B7WvnXNF.js} | 2 +- .../{wage-B6j_dXIJ.js => wage-DTUfXfWe.js} | 2 +- ...{wallet-BYMX27q1.js => wallet-D0sHW9q3.js} | 2 +- ...{wallet-61JBaLmV.js => wallet-DNF2ihBn.js} | 2 +- apps/admin-panel/dist/img/no-items.png | Bin 0 -> 54377 bytes apps/admin-panel/dist/index.html | 2 +- apps/admin-panel/dist/version.json | 8 +- apps/api/release/app.js | 4731 ++++++++++------- .../20261028120000_product_tags/migration.sql | 2 + .../migration.sql | 29 + .../api/release/vendor/.prisma/client/edge.js | 30 +- .../vendor/.prisma/client/index-browser.js | 24 + .../release/vendor/.prisma/client/index.d.ts | 2206 +++++++- .../release/vendor/.prisma/client/index.js | 30 +- .../vendor/.prisma/client/package.json | 2 +- .../query_engine-windows.dll.node.tmp19856 | Bin 0 -> 19261952 bytes .../query_engine-windows.dll.node.tmp20952 | Bin 0 -> 19261952 bytes .../vendor/.prisma/client/schema.prisma | 46 + .../api/release/vendor/.prisma/client/wasm.js | 24 + ...Dmucuir1.js => AppPullRefresh-DVPfmdvm.js} | 2 +- .../dist/assets/AppPullRefresh-DWkBh8zT.css | 1 + .../dist/assets/AppPullRefresh-gZ_s2cpM.css | 1 - ...BYcr0e1H.js => AppearanceView-CUsXmHF0.js} | 2 +- .../dist/assets/CartView-CL9FImRk.css | 1 + .../user-app/dist/assets/CartView-Ct6Zc1_I.js | 1 - .../user-app/dist/assets/CartView-GtT1enft.js | 1 + .../dist/assets/CartView-d_gFMtNn.css | 1 - ..._7wkNjH.js => ChildOrdersView-ByIf7jot.js} | 2 +- ...D9T_s0_2.js => CollectionView-66nKvWZN.js} | 2 +- ...OvA.js => CompleteProfileView-DFbpsgK6.js} | 2 +- ...Lo6h.js => CustomerChoiceView-iJCk0oR2.js} | 2 +- .../dist/assets/DashboardView-BOx8zmyl.js | 1 + .../dist/assets/DashboardView-DETiCNYx.js | 1 - .../dist/assets/DashboardView-Dj4lvaLJ.css | 1 - .../dist/assets/DashboardView-WvQ3hXRt.css | 1 + .../dist/assets/FavoritesView-BJMQQykv.js | 1 + .../dist/assets/FavoritesView-ocw8VEJH.js | 1 - ...Sm5I2XV.js => FormItemContext-DO_EI-jS.js} | 2 +- .../dist/assets/HomeView-BXtbtAW5.css | 1 + .../user-app/dist/assets/HomeView-CXgztcLl.js | 1 + .../user-app/dist/assets/HomeView-CwOSyyYq.js | 1 - .../dist/assets/HomeView-D4WkSpMr.css | 1 - ...ck-DY250iJ7.js => IamCallback-BbnxS2jM.js} | 2 +- ...eyCode-DN5saFNF.js => KeyCode-DjPzM-x4.js} | 2 +- ...8-d_v.js => LoginRegisterView-DIj95X40.js} | 2 +- .../dist/assets/NewestView-B0LiRttB.css | 1 + .../dist/assets/NewestView-BA-h2jMN.js | 1 + .../dist/assets/NewestView-DbhMJFjT.js | 1 - .../dist/assets/NewestView-DerjwzWa.css | 1 - .../assets/NotificationsView-BYJ2kMU3.css | 1 - .../assets/NotificationsView-BpHQiLIG.css | 1 + .../dist/assets/NotificationsView-CJfXVl4B.js | 1 + .../dist/assets/NotificationsView-_2hXwzdY.js | 1 - .../dist/assets/OrdersView-5LJQ_igs.js | 1 - .../dist/assets/OrdersView-CkkMhEH-.css | 1 - .../dist/assets/OrdersView-DATVGhQO.js | 1 + .../dist/assets/OrdersView-UefU7h2O.css | 1 + apps/user-app/dist/assets/PageBar-5ktYOrio.js | 1 + .../user-app/dist/assets/PageBar-BNJ2ryzL.css | 1 + apps/user-app/dist/assets/PageBar-BbDixxVX.js | 1 - .../user-app/dist/assets/PageBar-Cjc9-xat.css | 1 - .../dist/assets/ProductCard-BaiSrMlA.css | 1 + .../dist/assets/ProductCard-Byz7gE1A.css | 1 - .../dist/assets/ProductCard-DBkHagfD.js | 1 + .../dist/assets/ProductCard-FLh64_a3.js | 1 - ...ew-DQBoBNMf.js => ProfileView-jJb8VhBc.js} | 2 +- ...trip-CGcLM-Jj.js => RateStrip-CLgBwSRD.js} | 2 +- ...iew-Bu-vsqk7.js => ReportView-CVEFPwFE.js} | 2 +- ...ut-jycvDyRd.js => SearchInput-DDuMk5Z_.js} | 2 +- ...iew-zO_JHCgU.js => SearchView-3DX2NCyJ.js} | 2 +- .../dist/assets/SectionHead-0fBhSKkB.js | 1 - .../dist/assets/SectionHead-D0LXM_VW.js | 1 + ...QeDU1F.js => TransactionsView-DjivejWs.js} | 2 +- ...e-DqQUSSlC.js => catalogStore-CZRXJqcR.js} | 2 +- ...Cq3GxPzH.js => classCallCheck-CpYTQ_t0.js} | 2 +- ...ilters-D_vYSbiN.js => filters-DytSQLR6.js} | 4 +- ...e-CJnKqRzA.js => filtersStore-DJYkS_DJ.js} | 2 +- .../{index-Cxj5xLOO.js => index-B9HuvFuj.js} | 2 +- ...{index-BNwiSs5S.css => index-BkStEeIV.css} | 2 +- .../{index-C6_LSiEl.js => index-CqU2-fRE.js} | 2 +- .../{index-CVwJmJzN.js => index-Crp8bPtg.js} | 44 +- .../assets/notificationsStore-CIXrZUlJ.js | 1 + .../dist/assets/orderStatus-DQMd9b1t.js | 1 + ...veal-DsHH0sJn.js => useReveal-D00ju8ME.js} | 2 +- apps/user-app/dist/index.html | 95 +- apps/user-app/dist/sw.js | 2 +- apps/user-app/dist/version.json | 8 +- apps/user-app/tsconfig.tsbuildinfo | 2 +- 243 files changed, 5240 insertions(+), 2384 deletions(-) rename apps/admin-panel/dist/assets/{AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js => AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js} (96%) create mode 100644 apps/admin-panel/dist/assets/Add-CyAPNN08.js delete mode 100644 apps/admin-panel/dist/assets/Add-o90TOQ6U.js rename apps/admin-panel/dist/assets/{Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js => Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js} (97%) create mode 100644 apps/admin-panel/dist/assets/AddBranches-DU7wFOIC.js delete mode 100644 apps/admin-panel/dist/assets/AddBranches-DbKQr4RL.js rename apps/admin-panel/dist/assets/{AddBranches.vue_vue_type_script_setup_true_lang-C5lsu342.js => AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js} (96%) rename apps/admin-panel/dist/assets/{AddCustomer-C93P9Nl8.js => AddCustomer-DXt3pmSf.js} (80%) rename apps/admin-panel/dist/assets/{AddInvoice-iZuqzIMz.js => AddInvoice-DwmImnAo.js} (96%) delete mode 100644 apps/admin-panel/dist/assets/AddProduct-B3HJWpgQ.css create mode 100644 apps/admin-panel/dist/assets/AddProduct-Bl-1Lqf-.css delete mode 100644 apps/admin-panel/dist/assets/AddProduct-CqaK3I6Q.js create mode 100644 apps/admin-panel/dist/assets/AddProduct-DqeCa5en.js delete mode 100644 apps/admin-panel/dist/assets/AddWorkshop-Cq08meS9.js create mode 100644 apps/admin-panel/dist/assets/AddWorkshop-DkrmcSHY.js rename apps/admin-panel/dist/assets/{AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js => AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js} (97%) rename apps/admin-panel/dist/assets/{AgentDetail-sO_PGm1D.js => AgentDetail-DRGOkkVC.js} (96%) rename apps/admin-panel/dist/assets/{AppstoreOutlined-BPqrCmxh.js => AppstoreOutlined-D5DMeuPl.js} (95%) delete mode 100644 apps/admin-panel/dist/assets/BankerList-BPuo9i5M.js create mode 100644 apps/admin-panel/dist/assets/BankerList-CuVGBn-P.js rename apps/admin-panel/dist/assets/{BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js => BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js} (88%) rename apps/admin-panel/dist/assets/{CameraOutlined-B6nXMt0y.js => CameraOutlined-CFYC5ScW.js} (94%) rename apps/admin-panel/dist/assets/{ChangePercent-sP7FGIWF.js => ChangePercent-HGfS5bXV.js} (97%) rename apps/admin-panel/dist/assets/{CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js => CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js} (95%) rename apps/admin-panel/dist/assets/{Comments-CGkM8YQW.js => Comments-BRX5fmch.js} (91%) rename apps/admin-panel/dist/assets/{Const-CvgkKjTn.js => Const-CiWiRUCV.js} (97%) rename apps/admin-panel/dist/assets/{CreditCardOutlined-H5cAFLTI.js => CreditCardOutlined-CcvN7g1Z.js} (93%) rename apps/admin-panel/dist/assets/{CustomerDetail-DzOk8IG6.js => CustomerDetail-BxNzOtlQ.js} (98%) rename apps/admin-panel/dist/assets/{Dashboard-Cb_e8hUK.js => Dashboard-Dty7lg2F.js} (98%) rename apps/admin-panel/dist/assets/{DateInput-CSLG7sxn.js => DateInput-D9Jh1loF.js} (89%) create mode 100644 apps/admin-panel/dist/assets/Edit-CNTQOlgk.js delete mode 100644 apps/admin-panel/dist/assets/Edit-kPt-2bSX.js create mode 100644 apps/admin-panel/dist/assets/EditBranches-BgZpg5Qg.js delete mode 100644 apps/admin-panel/dist/assets/EditBranches-DD2D-1SM.js create mode 100644 apps/admin-panel/dist/assets/EditBulkCustomer-C_e-C8L8.js delete mode 100644 apps/admin-panel/dist/assets/EditBulkCustomer-w9LEjkC1.js delete mode 100644 apps/admin-panel/dist/assets/EditInvoice-CKOrEPF-.js create mode 100644 apps/admin-panel/dist/assets/EditInvoice-oFQdQ5sU.js create mode 100644 apps/admin-panel/dist/assets/EditProduct-BKzZP7ji.js delete mode 100644 apps/admin-panel/dist/assets/EditProduct-miBXIVTw.js delete mode 100644 apps/admin-panel/dist/assets/EditReagent-Ba5R7-Av.js create mode 100644 apps/admin-panel/dist/assets/EditReagent-CwG5Obtx.js create mode 100644 apps/admin-panel/dist/assets/EditSingleCustomer-Bn4VcGk8.js delete mode 100644 apps/admin-panel/dist/assets/EditSingleCustomer-CTn0uVfI.js create mode 100644 apps/admin-panel/dist/assets/EditWorkshop-BC8_AOnI.js delete mode 100644 apps/admin-panel/dist/assets/EditWorkshop-CoYdSxko.js rename apps/admin-panel/dist/assets/{EnvironmentOutlined-DzgF3_xx.js => EnvironmentOutlined-BKbou10z.js} (96%) rename apps/admin-panel/dist/assets/{Error404-CrARqFTT.js => Error404-RiMPFrr5.js} (89%) rename apps/admin-panel/dist/assets/{Error500-2YJNeuLX.js => Error500-jeDtZpef.js} (89%) rename apps/admin-panel/dist/assets/{FacilityList.vue_vue_type_script_setup_true_lang-rDFQ96E5.js => FacilityList.vue_vue_type_script_setup_true_lang-B2i1tZYn.js} (85%) rename apps/admin-panel/dist/assets/{FullPage-DpKiI4Qs.js => FullPage-DMlJXjfZ.js} (70%) rename apps/admin-panel/dist/assets/{IamCallback-DFjtEuae.js => IamCallback-CDfS1Tyd.js} (85%) rename apps/admin-panel/dist/assets/{ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js => ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js} (96%) rename apps/admin-panel/dist/assets/{List-Be1uA64N.js => List-CMDP8SDT.js} (79%) create mode 100644 apps/admin-panel/dist/assets/List-Cql7jPx_.js delete mode 100644 apps/admin-panel/dist/assets/List-DYRF6PAj.css delete mode 100644 apps/admin-panel/dist/assets/List-DZ2UtgZK.js create mode 100644 apps/admin-panel/dist/assets/List-vIzaRldC.css rename apps/admin-panel/dist/assets/{ListBranches-DKS9egre.js => ListBranches-HIAgbHcy.js} (66%) rename apps/admin-panel/dist/assets/{ListInvoice-BUUcrdEN.js => ListInvoice-g-UG6V0q.js} (88%) rename apps/admin-panel/dist/assets/{ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js => ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js} (87%) rename apps/admin-panel/dist/assets/{ListUser-B5HisvUF.js => ListUser-xB3fMA3W.js} (84%) rename apps/admin-panel/dist/assets/{ListWorkshop-Co07pp0l.js => ListWorkshop-eILF1R4A.js} (65%) rename apps/admin-panel/dist/assets/{LockOutlined-XBpx1rxs.js => LockOutlined-BQjJg0kk.js} (94%) rename apps/admin-panel/dist/assets/{Login-B0DXknhX.js => Login-uO1nRvXv.js} (94%) rename apps/admin-panel/dist/assets/{Main-B6XfJkyt.js => Main-D1tnU8tP.js} (97%) rename apps/admin-panel/dist/assets/{Maintenance-CRfOTU6G.js => Maintenance-Df5I5LOi.js} (88%) rename apps/admin-panel/dist/assets/{MakeOrder-aTjo9HZz.js => MakeOrder-umVSia6q.js} (90%) rename apps/admin-panel/dist/assets/{NotAuthorized-kSbkBInP.js => NotAuthorized-Cl9-8nb6.js} (89%) delete mode 100644 apps/admin-panel/dist/assets/OmdeArchivedList-DXe8fsa2.js create mode 100644 apps/admin-panel/dist/assets/OmdeArchivedList-RTBSSPqv.js create mode 100644 apps/admin-panel/dist/assets/OmdeCustomerList-CytNKR8R.js delete mode 100644 apps/admin-panel/dist/assets/OmdeCustomerList-c6FcwBcS.js delete mode 100644 apps/admin-panel/dist/assets/OmdeList-CEBt8LxW.js delete mode 100644 apps/admin-panel/dist/assets/OmdeList-CF36um8c.css create mode 100644 apps/admin-panel/dist/assets/OmdeList-D6Hbka2-.css create mode 100644 apps/admin-panel/dist/assets/OmdeList-D7WY5ylW.js delete mode 100644 apps/admin-panel/dist/assets/OmdeList-DH-oJpv0.js create mode 100644 apps/admin-panel/dist/assets/OmdeList-DQ1AeZVa.js create mode 100644 apps/admin-panel/dist/assets/OmdeNonVerifiedList-BiBG9jCs.js delete mode 100644 apps/admin-panel/dist/assets/OmdeNonVerifiedList-Chk-ZLmx.js create mode 100644 apps/admin-panel/dist/assets/OrderStatusTimeline-Dm95hywe.js create mode 100644 apps/admin-panel/dist/assets/OrderStatusTimeline-nDDfaXIt.css rename apps/admin-panel/dist/assets/{PercentageOutlined-D8KYbn5o.js => PercentageOutlined-DyprS4lh.js} (94%) rename apps/admin-panel/dist/assets/{Permission-BDWBYh7-.js => Permission-CenARUCd.js} (99%) create mode 100644 apps/admin-panel/dist/assets/PictureOutlined-BQUWPT2c.js create mode 100644 apps/admin-panel/dist/assets/ProductList-D4ZJWLMm.css delete mode 100644 apps/admin-panel/dist/assets/ProductList-D6w5abTS.css delete mode 100644 apps/admin-panel/dist/assets/ProductList-DKYFsy5A.js create mode 100644 apps/admin-panel/dist/assets/ProductList-DlDr1CI8.js rename apps/admin-panel/dist/assets/{PromotionForm-ii0sb4Z5.js => PromotionForm-CAyJlwhb.js} (98%) rename apps/admin-panel/dist/assets/{ReagentCustomer-BAV0MXtJ.js => ReagentCustomer-BXqRAucN.js} (94%) create mode 100644 apps/admin-panel/dist/assets/ReagentList-Bm3uQYje.js delete mode 100644 apps/admin-panel/dist/assets/ReagentList-CtR1WkfW.js rename apps/admin-panel/dist/assets/{SafetyCertificateOutlined-DSk-s9OX.js => SafetyCertificateOutlined-Du6lFDs_.js} (95%) rename apps/admin-panel/dist/assets/{SettingOutlined-BBdK6RkP.js => SettingOutlined-DibNCEeh.js} (97%) rename apps/admin-panel/dist/assets/{ShopOutlined-MoIbCAG4.js => ShopOutlined-DIjF3I3z.js} (96%) create mode 100644 apps/admin-panel/dist/assets/ShopkeeperList-DAWnyPJb.js delete mode 100644 apps/admin-panel/dist/assets/ShopkeeperList-pfD0i838.js rename apps/admin-panel/dist/assets/{SingleCustomer-BP-Jvfsy.js => SingleCustomer-Ds30MZZu.js} (92%) create mode 100644 apps/admin-panel/dist/assets/TaminList-BDxHKzcP.js create mode 100644 apps/admin-panel/dist/assets/TaminList-CDSG2cQ_.css delete mode 100644 apps/admin-panel/dist/assets/TaminList-Cta7c5dR.js delete mode 100644 apps/admin-panel/dist/assets/TaminList-V-O9JF64.css rename apps/admin-panel/dist/assets/{TeamOutlined-DPoMD9pK.js => TeamOutlined-Bx4ezhPp.js} (97%) rename apps/admin-panel/dist/assets/{TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js => TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js} (78%) rename apps/admin-panel/dist/assets/{UnorderedListOutlined-B6W9NsW_.js => UnorderedListOutlined-cPIiOEaQ.js} (97%) rename apps/admin-panel/dist/assets/{UserAddOutlined-tCWSfp_Y.js => UserAddOutlined-GWNEdhY8.js} (98%) rename apps/admin-panel/dist/assets/{UserCreate-B9hxrLOO.js => UserCreate-8S3eAopa.js} (98%) create mode 100644 apps/admin-panel/dist/assets/UserEdit-DgpzTP1E.js delete mode 100644 apps/admin-panel/dist/assets/UserEdit-DvU5z6vT.js rename apps/admin-panel/dist/assets/{UserOutlined-CzruAWCH.js => UserOutlined-B4M5rNrX.js} (95%) create mode 100644 apps/admin-panel/dist/assets/ViewOmdeCustomer-D3i36iTG.js delete mode 100644 apps/admin-panel/dist/assets/ViewOmdeCustomer-eFH3i6bz.js create mode 100644 apps/admin-panel/dist/assets/ViewSingleCustomer-B2QupTSx.js delete mode 100644 apps/admin-panel/dist/assets/ViewSingleCustomer-BsTNdacv.js rename apps/admin-panel/dist/assets/{accounting-SNbebogb.js => accounting-Dbj920fC.js} (99%) create mode 100644 apps/admin-panel/dist/assets/addFinDoc-Copg65eX.js delete mode 100644 apps/admin-panel/dist/assets/addFinDoc-Crm0ebUu.js rename apps/admin-panel/dist/assets/{addFinDoc.vue_vue_type_script_setup_true_lang-Bhb3Mras.js => addFinDoc.vue_vue_type_script_setup_true_lang-BeApu2ja.js} (98%) rename apps/admin-panel/dist/assets/{auth-l1fvj2RU.js => auth-Cmkre2IW.js} (88%) rename apps/admin-panel/dist/assets/{autopromotion-cv1k7IXP.js => autopromotion-DXzzvH9j.js} (97%) rename apps/admin-panel/dist/assets/{bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js => bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js} (96%) rename apps/admin-panel/dist/assets/{cityList-ZcdYYFeM.js => cityList-DX9LVS_S.js} (86%) rename apps/admin-panel/dist/assets/{create-DqSLe1hW.js => create-BIvFVhDo.js} (97%) rename apps/admin-panel/dist/assets/{create-BcV0LZ6B.js => create-Coyb76zV.js} (95%) rename apps/admin-panel/dist/assets/{create-BLo5130R.js => create-ucx1HuF8.js} (96%) delete mode 100644 apps/admin-panel/dist/assets/createCity-CbhYJB0l.js create mode 100644 apps/admin-panel/dist/assets/createCity-pjdKbfGT.js rename apps/admin-panel/dist/assets/{createCity.vue_vue_type_script_setup_true_lang-JXoB9ElE.js => createCity.vue_vue_type_script_setup_true_lang-DsfElQum.js} (95%) rename apps/admin-panel/dist/assets/{filters-gmIfX3-G.js => filters-BMytoA2k.js} (86%) rename apps/admin-panel/dist/assets/{icons-DiNnR1E8.js => icons-DaMkWfMK.js} (95%) rename apps/admin-panel/dist/assets/{index-BAamWbCu.js => index-CKaD48iT.js} (99%) rename apps/admin-panel/dist/assets/{index-DdFLWjO6.js => index-DrgFPRTa.js} (89%) rename apps/admin-panel/dist/assets/{index-DajPj7Ec.js => index-eLNLLYwC.js} (98%) rename apps/admin-panel/dist/assets/{list-D63BjZ2R.js => list-DNHKXSxl.js} (88%) rename apps/admin-panel/dist/assets/{model-CR-NjhTP.js => model-btNVLLyF.js} (98%) rename apps/admin-panel/dist/assets/{myData-DsOyJhsC.js => myData-CDJUmBNX.js} (88%) rename apps/admin-panel/dist/assets/{newsletters-Cw3--aFT.js => newsletters-CkmueuCH.js} (79%) rename apps/admin-panel/dist/assets/{offersIgnore-add-edit-DE72s5pO.js => offersIgnore-add-edit-B39Jv3mn.js} (96%) rename apps/admin-panel/dist/assets/{order_item-BCXFMT8w.js => order_item-BLR_vTQ1.js} (91%) rename apps/admin-panel/dist/assets/{product-CdHCOmwK.js => product-Pyi69LQn.js} (89%) delete mode 100644 apps/admin-panel/dist/assets/productListModel-C4fzek7T.js create mode 100644 apps/admin-panel/dist/assets/productListModel-DskQX-jW.js create mode 100644 apps/admin-panel/dist/assets/promotion_add_edit-CkCABaCG.js delete mode 100644 apps/admin-panel/dist/assets/promotion_add_edit-CqCju9pR.js rename apps/admin-panel/dist/assets/{promotion_add_edit.vue_vue_type_script_setup_true_lang--2Wiku7A.js => promotion_add_edit.vue_vue_type_script_setup_true_lang-Byvx5z5L.js} (72%) rename apps/admin-panel/dist/assets/{promotion_list-CJB17R4H.js => promotion_list-C6ai2IKH.js} (85%) create mode 100644 apps/admin-panel/dist/assets/promotion_tak_add_edit-0aN9XPzw.js delete mode 100644 apps/admin-panel/dist/assets/promotion_tak_add_edit-Bza5oS11.js rename apps/admin-panel/dist/assets/{promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DFzOW-j9.js => promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-JRmgfs03.js} (72%) rename apps/admin-panel/dist/assets/{reg-CTnxnWvP.js => reg-CqiFjlXn.js} (97%) rename apps/admin-panel/dist/assets/{report-OEDYaCDs.js => report-e-YemU3S.js} (91%) rename apps/admin-panel/dist/assets/{singleCustomer-3o4eCG9y.js => singleCustomer-gqRtFTnm.js} (92%) rename apps/admin-panel/dist/assets/{useDeleteHandler-CdwhuWqX.js => useDeleteHandler-BHXHWuUG.js} (86%) rename apps/admin-panel/dist/assets/{user-CB1sVp_3.js => user-B7WvnXNF.js} (93%) rename apps/admin-panel/dist/assets/{wage-B6j_dXIJ.js => wage-DTUfXfWe.js} (99%) rename apps/admin-panel/dist/assets/{wallet-BYMX27q1.js => wallet-D0sHW9q3.js} (98%) rename apps/admin-panel/dist/assets/{wallet-61JBaLmV.js => wallet-DNF2ihBn.js} (82%) create mode 100644 apps/admin-panel/dist/img/no-items.png create mode 100644 apps/api/release/migrations/20261028120000_product_tags/migration.sql create mode 100644 apps/api/release/migrations/20261028140000_order_revision/migration.sql create mode 100644 apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp19856 create mode 100644 apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp20952 rename apps/user-app/dist/assets/{AppPullRefresh-Dmucuir1.js => AppPullRefresh-DVPfmdvm.js} (52%) create mode 100644 apps/user-app/dist/assets/AppPullRefresh-DWkBh8zT.css delete mode 100644 apps/user-app/dist/assets/AppPullRefresh-gZ_s2cpM.css rename apps/user-app/dist/assets/{AppearanceView-BYcr0e1H.js => AppearanceView-CUsXmHF0.js} (76%) create mode 100644 apps/user-app/dist/assets/CartView-CL9FImRk.css delete mode 100644 apps/user-app/dist/assets/CartView-Ct6Zc1_I.js create mode 100644 apps/user-app/dist/assets/CartView-GtT1enft.js delete mode 100644 apps/user-app/dist/assets/CartView-d_gFMtNn.css rename apps/user-app/dist/assets/{ChildOrdersView-B_7wkNjH.js => ChildOrdersView-ByIf7jot.js} (73%) rename apps/user-app/dist/assets/{CollectionView-D9T_s0_2.js => CollectionView-66nKvWZN.js} (61%) rename apps/user-app/dist/assets/{CompleteProfileView-_gB5hOvA.js => CompleteProfileView-DFbpsgK6.js} (72%) rename apps/user-app/dist/assets/{CustomerChoiceView-BoVKLo6h.js => CustomerChoiceView-iJCk0oR2.js} (76%) create mode 100644 apps/user-app/dist/assets/DashboardView-BOx8zmyl.js delete mode 100644 apps/user-app/dist/assets/DashboardView-DETiCNYx.js delete mode 100644 apps/user-app/dist/assets/DashboardView-Dj4lvaLJ.css create mode 100644 apps/user-app/dist/assets/DashboardView-WvQ3hXRt.css create mode 100644 apps/user-app/dist/assets/FavoritesView-BJMQQykv.js delete mode 100644 apps/user-app/dist/assets/FavoritesView-ocw8VEJH.js rename apps/user-app/dist/assets/{FormItemContext-VSm5I2XV.js => FormItemContext-DO_EI-jS.js} (99%) create mode 100644 apps/user-app/dist/assets/HomeView-BXtbtAW5.css create mode 100644 apps/user-app/dist/assets/HomeView-CXgztcLl.js delete mode 100644 apps/user-app/dist/assets/HomeView-CwOSyyYq.js delete mode 100644 apps/user-app/dist/assets/HomeView-D4WkSpMr.css rename apps/user-app/dist/assets/{IamCallback-DY250iJ7.js => IamCallback-BbnxS2jM.js} (86%) rename apps/user-app/dist/assets/{KeyCode-DN5saFNF.js => KeyCode-DjPzM-x4.js} (92%) rename apps/user-app/dist/assets/{LoginRegisterView-BZV8-d_v.js => LoginRegisterView-DIj95X40.js} (76%) create mode 100644 apps/user-app/dist/assets/NewestView-B0LiRttB.css create mode 100644 apps/user-app/dist/assets/NewestView-BA-h2jMN.js delete mode 100644 apps/user-app/dist/assets/NewestView-DbhMJFjT.js delete mode 100644 apps/user-app/dist/assets/NewestView-DerjwzWa.css delete mode 100644 apps/user-app/dist/assets/NotificationsView-BYJ2kMU3.css create mode 100644 apps/user-app/dist/assets/NotificationsView-BpHQiLIG.css create mode 100644 apps/user-app/dist/assets/NotificationsView-CJfXVl4B.js delete mode 100644 apps/user-app/dist/assets/NotificationsView-_2hXwzdY.js delete mode 100644 apps/user-app/dist/assets/OrdersView-5LJQ_igs.js delete mode 100644 apps/user-app/dist/assets/OrdersView-CkkMhEH-.css create mode 100644 apps/user-app/dist/assets/OrdersView-DATVGhQO.js create mode 100644 apps/user-app/dist/assets/OrdersView-UefU7h2O.css create mode 100644 apps/user-app/dist/assets/PageBar-5ktYOrio.js create mode 100644 apps/user-app/dist/assets/PageBar-BNJ2ryzL.css delete mode 100644 apps/user-app/dist/assets/PageBar-BbDixxVX.js delete mode 100644 apps/user-app/dist/assets/PageBar-Cjc9-xat.css create mode 100644 apps/user-app/dist/assets/ProductCard-BaiSrMlA.css delete mode 100644 apps/user-app/dist/assets/ProductCard-Byz7gE1A.css create mode 100644 apps/user-app/dist/assets/ProductCard-DBkHagfD.js delete mode 100644 apps/user-app/dist/assets/ProductCard-FLh64_a3.js rename apps/user-app/dist/assets/{ProfileView-DQBoBNMf.js => ProfileView-jJb8VhBc.js} (74%) rename apps/user-app/dist/assets/{RateStrip-CGcLM-Jj.js => RateStrip-CLgBwSRD.js} (65%) rename apps/user-app/dist/assets/{ReportView-Bu-vsqk7.js => ReportView-CVEFPwFE.js} (60%) rename apps/user-app/dist/assets/{SearchInput-jycvDyRd.js => SearchInput-DDuMk5Z_.js} (86%) rename apps/user-app/dist/assets/{SearchView-zO_JHCgU.js => SearchView-3DX2NCyJ.js} (96%) delete mode 100644 apps/user-app/dist/assets/SectionHead-0fBhSKkB.js create mode 100644 apps/user-app/dist/assets/SectionHead-D0LXM_VW.js rename apps/user-app/dist/assets/{TransactionsView-DlQeDU1F.js => TransactionsView-DjivejWs.js} (68%) rename apps/user-app/dist/assets/{catalogStore-DqQUSSlC.js => catalogStore-CZRXJqcR.js} (89%) rename apps/user-app/dist/assets/{classCallCheck-Cq3GxPzH.js => classCallCheck-CpYTQ_t0.js} (80%) rename apps/user-app/dist/assets/{filters-D_vYSbiN.js => filters-DytSQLR6.js} (99%) rename apps/user-app/dist/assets/{filtersStore-CJnKqRzA.js => filtersStore-DJYkS_DJ.js} (75%) rename apps/user-app/dist/assets/{index-Cxj5xLOO.js => index-B9HuvFuj.js} (99%) rename apps/user-app/dist/assets/{index-BNwiSs5S.css => index-BkStEeIV.css} (71%) rename apps/user-app/dist/assets/{index-C6_LSiEl.js => index-CqU2-fRE.js} (78%) rename apps/user-app/dist/assets/{index-CVwJmJzN.js => index-Crp8bPtg.js} (89%) create mode 100644 apps/user-app/dist/assets/notificationsStore-CIXrZUlJ.js create mode 100644 apps/user-app/dist/assets/orderStatus-DQMd9b1t.js rename apps/user-app/dist/assets/{useReveal-DsHH0sJn.js => useReveal-D00ju8ME.js} (80%) diff --git a/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js b/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js similarity index 96% rename from apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js rename to apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js index c0ae84f..73e4bd4 100644 --- a/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js +++ b/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js @@ -1 +1 @@ -import{c as O,I as x,d as j,x as B,y as m,o as C,a as A,w as y,f as $,t as E,h as P,i as L,m as u,a8 as v,M as b,G as M,r as N}from"./index-DajPj7Ec.js";var V={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z"}}]},name:"sync",theme:"outlined"};function g(o){for(var t=1;te&&typeof e=="object"?Object.entries(e).map(([s,a])=>`${_[s]??s}: ${a}`).join("، "):"";B(async()=>{try{const{data:e}=await m.get("admin/accounting-status");c.value=!!(e!=null&&e.connected),p.value=(e==null?void 0:e.provider)??null}catch{c.value=!1}});async function w(){var e,s;i.value=!0;try{const{data:a}=await m.post(n.endpoint),k=Object.entries(a.results).map(([f,l])=>v("p",{style:l.ok?"":"color:#d4380d"},`${h[f]??f}: ${l.ok?S(l.summary)||"انجام شد":`خطا — ${l.error}`}`));(a.ok?b.success:b.warning)({title:a.ok?"سینک با حسابداری انجام شد":"سینک با حسابداری کامل انجام نشد",content:v("div",k),okText:"باشه"}),r("done")}catch(a){M.error(((s=(e=a==null?void 0:a.response)==null?void 0:e.data)==null?void 0:s.message)||"سینک با حسابداری انجام نشد")}finally{i.value=!1}}return(e,s)=>{const a=N("a-button");return c.value?(C(),A(a,{key:0,loading:i.value,onClick:w},{icon:y(()=>[O(P(d))]),default:y(()=>[$(" سینک با "+E(p.value||"حسابداری"),1)]),_:1},8,["loading"])):L("",!0)}}});export{I as _}; +import{c as O,I as x,d as j,x as B,y as m,o as C,a as A,w as y,f as $,t as E,h as P,i as L,m as u,a9 as v,M as b,G as M,r as N}from"./index-eLNLLYwC.js";var V={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z"}}]},name:"sync",theme:"outlined"};function g(o){for(var t=1;te&&typeof e=="object"?Object.entries(e).map(([s,a])=>`${_[s]??s}: ${a}`).join("، "):"";B(async()=>{try{const{data:e}=await m.get("admin/accounting-status");c.value=!!(e!=null&&e.connected),p.value=(e==null?void 0:e.provider)??null}catch{c.value=!1}});async function w(){var e,s;i.value=!0;try{const{data:a}=await m.post(n.endpoint),k=Object.entries(a.results).map(([f,l])=>v("p",{style:l.ok?"":"color:#d4380d"},`${h[f]??f}: ${l.ok?S(l.summary)||"انجام شد":`خطا — ${l.error}`}`));(a.ok?b.success:b.warning)({title:a.ok?"سینک با حسابداری انجام شد":"سینک با حسابداری کامل انجام نشد",content:v("div",k),okText:"باشه"}),r("done")}catch(a){M.error(((s=(e=a==null?void 0:a.response)==null?void 0:e.data)==null?void 0:s.message)||"سینک با حسابداری انجام نشد")}finally{i.value=!1}}return(e,s)=>{const a=N("a-button");return c.value?(C(),A(a,{key:0,loading:i.value,onClick:w},{icon:y(()=>[O(P(d))]),default:y(()=>[$(" سینک با "+E(p.value||"حسابداری"),1)]),_:1},8,["loading"])):L("",!0)}}});export{I as _}; diff --git a/apps/admin-panel/dist/assets/Add-CyAPNN08.js b/apps/admin-panel/dist/assets/Add-CyAPNN08.js new file mode 100644 index 0000000..cf69215 --- /dev/null +++ b/apps/admin-panel/dist/assets/Add-CyAPNN08.js @@ -0,0 +1 @@ +import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js";import"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/Add-o90TOQ6U.js b/apps/admin-panel/dist/assets/Add-o90TOQ6U.js deleted file mode 100644 index d3d3192..0000000 --- a/apps/admin-panel/dist/assets/Add-o90TOQ6U.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js";import"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js b/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js similarity index 97% rename from apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js rename to apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js index 86cfc8f..e417b3e 100644 --- a/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js +++ b/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js @@ -1 +1 @@ -import{d as P,n as Q,x as W,y as b,a as g,w as o,h as X,k as Y,m as j,z,s as M,r,o as v,c as l,f as m,p as N,b as h,e as E,F,H as Z,G as A,l as ee,t as D}from"./index-DajPj7Ec.js";import{_ as te}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import{_ as c}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";const ae={class:"grid-2"},le={class:"grid-2"},ue=P({__name:"Add",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(V,{emit:G}){const k=V,x=G,$=k.open!==void 0,H=Y(),L=ee(),p=$?k.id:H.params.id,f=j(!1),B=j([]),t=z({type:1,title:"",parent_id_id:void 0,image:"",icon:"",meta:"",body_html:""}),d=z({}),i=M(()=>t.type===1?"(سایت)":t.type===2?"(موبایل)":""),w=M(()=>B.value.filter(n=>n.type===t.type&&n.id!==p));Q(()=>t.type,()=>{t.parent_id_id&&!w.value.some(n=>n.id===t.parent_id_id)&&(t.parent_id_id=void 0)});function R(n,e){var s,_;return String(((_=(s=e==null?void 0:e.children)==null?void 0:s[0])==null?void 0:_.children)??"").includes(n)}function T(){return Object.keys(d).forEach(n=>delete d[n]),t.type||(d.type="لطفا نوع نمایش دسته بندی را انتخاب کنید"),t.title||(d.title="لطفا مقدار را وارد کنید"),Object.keys(d).length===0}async function U(){var n,e;if(T())try{f.value=!0,p?await b.put(`category/${p}`,{...t,id:p}):await b.post("category/",t),A.info("اطلاعات با موفقیت به ثبت رسید."),$?(x("success"),x("update:open",!1)):L.push("/category/list")}catch(s){A.error(((e=(n=s==null?void 0:s.response)==null?void 0:n.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{f.value=!1}}return W(async()=>{try{const{data:n}=await b.get("admin/categories/tree");B.value=n}catch(n){console.log(n)}if(p)try{const{data:n}=await b.get(`admin/categories/${p}`);Object.assign(t,{type:n.type??1,title:n.title??"",parent_id_id:n.parent_id_id??void 0,image:n.image??"",icon:n.icon??"",meta:n.meta??"",body_html:n.body_html??""})}catch(n){console.log(n)}}),(n,e)=>{const s=r("a-radio"),_=r("a-radio-group"),u=r("a-form-item"),y=r("a-input"),S=r("a-select-option"),C=r("a-select"),O=r("a-textarea"),q=r("a-button"),I=r("a-card"),J=r("a-form"),K=r("a-spin");return $?(v(),g(te,{key:0,open:!!V.open,id:X(p),"add-title":`دسته بندی ${i.value}`,"edit-title":`دسته بندی ${i.value}`,loading:f.value,submitting:f.value,width:"lg","onUpdate:open":e[7]||(e[7]=a=>n.$emit("update:open",a)),onSubmit:U},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(_,{value:t.type,"onUpdate:value":e[0]||(e[0]=a=>t.type=a)},{default:o(()=>[l(s,{value:1},{default:o(()=>[...e[15]||(e[15]=[m("سایت",-1)])]),_:1}),l(s,{value:2},{default:o(()=>[...e[16]||(e[16]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",ae,[l(u,{label:`عنوان ${i.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(y,{value:t.title,"onUpdate:value":e[1]||(e[1]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${i.value}`},{default:o(()=>[l(C,{value:t.parent_id_id,"onUpdate:value":e[2]||(e[2]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":R},{default:o(()=>[(v(!0),h(F,null,E(w.value,a=>(v(),g(S,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${i.value}`},{default:o(()=>[l(c,{modelValue:t.image,"onUpdate:modelValue":e[3]||(e[3]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${i.value}`},{default:o(()=>[l(c,{modelValue:t.icon,"onUpdate:modelValue":e[4]||(e[4]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${i.value}`},{default:o(()=>[l(y,{value:t.meta,"onUpdate:value":e[5]||(e[5]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${i.value}`},{default:o(()=>[l(O,{value:t.body_html,"onUpdate:value":e[6]||(e[6]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(v(),g(K,{key:1,spinning:f.value},{default:o(()=>[l(J,{layout:"vertical",onSubmit:Z(U,["prevent"])},{default:o(()=>[l(I,{title:`دسته بندی ${i.value}`,class:"mb-base page-card"},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(_,{value:t.type,"onUpdate:value":e[8]||(e[8]=a=>t.type=a)},{default:o(()=>[l(s,{value:1},{default:o(()=>[...e[17]||(e[17]=[m("سایت",-1)])]),_:1}),l(s,{value:2},{default:o(()=>[...e[18]||(e[18]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",le,[l(u,{label:`عنوان ${i.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(y,{value:t.title,"onUpdate:value":e[9]||(e[9]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${i.value}`},{default:o(()=>[l(C,{value:t.parent_id_id,"onUpdate:value":e[10]||(e[10]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":R},{default:o(()=>[(v(!0),h(F,null,E(w.value,a=>(v(),g(S,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${i.value}`},{default:o(()=>[l(c,{modelValue:t.image,"onUpdate:modelValue":e[11]||(e[11]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${i.value}`},{default:o(()=>[l(c,{modelValue:t.icon,"onUpdate:modelValue":e[12]||(e[12]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${i.value}`},{default:o(()=>[l(y,{value:t.meta,"onUpdate:value":e[13]||(e[13]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${i.value}`},{default:o(()=>[l(O,{value:t.body_html,"onUpdate:value":e[14]||(e[14]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"]),l(q,{type:"primary",class:"form-submit",onClick:U},{default:o(()=>[...e[19]||(e[19]=[m("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{ue as _}; +import{d as P,n as Q,x as W,y as b,a as g,w as o,h as X,k as Y,m as j,z,s as M,r,o as v,c as l,f as m,p as N,b as h,e as E,F,H as Z,G as A,l as ee,t as D}from"./index-eLNLLYwC.js";import{_ as te}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import{_ as c}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";const ae={class:"grid-2"},le={class:"grid-2"},ue=P({__name:"Add",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(V,{emit:G}){const k=V,x=G,$=k.open!==void 0,H=Y(),L=ee(),p=$?k.id:H.params.id,f=j(!1),B=j([]),t=z({type:1,title:"",parent_id_id:void 0,image:"",icon:"",meta:"",body_html:""}),d=z({}),i=M(()=>t.type===1?"(سایت)":t.type===2?"(موبایل)":""),w=M(()=>B.value.filter(n=>n.type===t.type&&n.id!==p));Q(()=>t.type,()=>{t.parent_id_id&&!w.value.some(n=>n.id===t.parent_id_id)&&(t.parent_id_id=void 0)});function R(n,e){var s,_;return String(((_=(s=e==null?void 0:e.children)==null?void 0:s[0])==null?void 0:_.children)??"").includes(n)}function T(){return Object.keys(d).forEach(n=>delete d[n]),t.type||(d.type="لطفا نوع نمایش دسته بندی را انتخاب کنید"),t.title||(d.title="لطفا مقدار را وارد کنید"),Object.keys(d).length===0}async function U(){var n,e;if(T())try{f.value=!0,p?await b.put(`category/${p}`,{...t,id:p}):await b.post("category/",t),A.info("اطلاعات با موفقیت به ثبت رسید."),$?(x("success"),x("update:open",!1)):L.push("/category/list")}catch(s){A.error(((e=(n=s==null?void 0:s.response)==null?void 0:n.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{f.value=!1}}return W(async()=>{try{const{data:n}=await b.get("admin/categories/tree");B.value=n}catch(n){console.log(n)}if(p)try{const{data:n}=await b.get(`admin/categories/${p}`);Object.assign(t,{type:n.type??1,title:n.title??"",parent_id_id:n.parent_id_id??void 0,image:n.image??"",icon:n.icon??"",meta:n.meta??"",body_html:n.body_html??""})}catch(n){console.log(n)}}),(n,e)=>{const s=r("a-radio"),_=r("a-radio-group"),u=r("a-form-item"),y=r("a-input"),S=r("a-select-option"),C=r("a-select"),O=r("a-textarea"),q=r("a-button"),I=r("a-card"),J=r("a-form"),K=r("a-spin");return $?(v(),g(te,{key:0,open:!!V.open,id:X(p),"add-title":`دسته بندی ${i.value}`,"edit-title":`دسته بندی ${i.value}`,loading:f.value,submitting:f.value,width:"lg","onUpdate:open":e[7]||(e[7]=a=>n.$emit("update:open",a)),onSubmit:U},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(_,{value:t.type,"onUpdate:value":e[0]||(e[0]=a=>t.type=a)},{default:o(()=>[l(s,{value:1},{default:o(()=>[...e[15]||(e[15]=[m("سایت",-1)])]),_:1}),l(s,{value:2},{default:o(()=>[...e[16]||(e[16]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",ae,[l(u,{label:`عنوان ${i.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(y,{value:t.title,"onUpdate:value":e[1]||(e[1]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${i.value}`},{default:o(()=>[l(C,{value:t.parent_id_id,"onUpdate:value":e[2]||(e[2]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":R},{default:o(()=>[(v(!0),h(F,null,E(w.value,a=>(v(),g(S,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${i.value}`},{default:o(()=>[l(c,{modelValue:t.image,"onUpdate:modelValue":e[3]||(e[3]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${i.value}`},{default:o(()=>[l(c,{modelValue:t.icon,"onUpdate:modelValue":e[4]||(e[4]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${i.value}`},{default:o(()=>[l(y,{value:t.meta,"onUpdate:value":e[5]||(e[5]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${i.value}`},{default:o(()=>[l(O,{value:t.body_html,"onUpdate:value":e[6]||(e[6]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(v(),g(K,{key:1,spinning:f.value},{default:o(()=>[l(J,{layout:"vertical",onSubmit:Z(U,["prevent"])},{default:o(()=>[l(I,{title:`دسته بندی ${i.value}`,class:"mb-base page-card"},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(_,{value:t.type,"onUpdate:value":e[8]||(e[8]=a=>t.type=a)},{default:o(()=>[l(s,{value:1},{default:o(()=>[...e[17]||(e[17]=[m("سایت",-1)])]),_:1}),l(s,{value:2},{default:o(()=>[...e[18]||(e[18]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",le,[l(u,{label:`عنوان ${i.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(y,{value:t.title,"onUpdate:value":e[9]||(e[9]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${i.value}`},{default:o(()=>[l(C,{value:t.parent_id_id,"onUpdate:value":e[10]||(e[10]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":R},{default:o(()=>[(v(!0),h(F,null,E(w.value,a=>(v(),g(S,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${i.value}`},{default:o(()=>[l(c,{modelValue:t.image,"onUpdate:modelValue":e[11]||(e[11]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${i.value}`},{default:o(()=>[l(c,{modelValue:t.icon,"onUpdate:modelValue":e[12]||(e[12]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${i.value}`},{default:o(()=>[l(y,{value:t.meta,"onUpdate:value":e[13]||(e[13]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${i.value}`},{default:o(()=>[l(O,{value:t.body_html,"onUpdate:value":e[14]||(e[14]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"]),l(q,{type:"primary",class:"form-submit",onClick:U},{default:o(()=>[...e[19]||(e[19]=[m("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{ue as _}; diff --git a/apps/admin-panel/dist/assets/AddBranches-DU7wFOIC.js b/apps/admin-panel/dist/assets/AddBranches-DU7wFOIC.js new file mode 100644 index 0000000..3e42aa3 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddBranches-DU7wFOIC.js @@ -0,0 +1 @@ +import{_ as o}from"./AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js";import"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddBranches-DbKQr4RL.js b/apps/admin-panel/dist/assets/AddBranches-DbKQr4RL.js deleted file mode 100644 index 40d0f5d..0000000 --- a/apps/admin-panel/dist/assets/AddBranches-DbKQr4RL.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./AddBranches.vue_vue_type_script_setup_true_lang-C5lsu342.js";import"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-C5lsu342.js b/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js similarity index 96% rename from apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-C5lsu342.js rename to apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js index b474d04..c909f2d 100644 --- a/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-C5lsu342.js +++ b/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js @@ -1 +1 @@ -import{d as L,x as T,y as c,a as v,w as l,h as R,k as q,m as S,z as C,r as i,o as p,p as O,c as n,b as $,e as j,f as g,t as z,F as M,H as I,G as N,l as J}from"./index-DajPj7Ec.js";import{_ as K}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";const P={class:"grid-2"},Q={class:"grid-2"},Y=L({__name:"AddBranches",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(h,{emit:V}){const y=h,w=V,f=y.open!==void 0,E=q(),F=J(),r=f?y.id:E.params.id,m=S(!1),_=S([]),t=C({name:"",phone:"",address:"",user_id:void 0}),d=C({});function k(s,e){var o,u;return String(((u=(o=e==null?void 0:e.children)==null?void 0:o[0])==null?void 0:u.children)??"").includes(s)}async function b(){var s,e;if(Object.keys(d).forEach(o=>delete d[o]),!t.name){d.name="لطفا مقدار را وارد کنید";return}try{m.value=!0,r?await c.put(`branch/${r}`,t):await c.post("branch",t),N.info("اطلاعات با موفقیت به ثبت رسید."),r||Object.assign(t,{name:"",phone:"",address:"",user_id:void 0}),f?(w("success"),w("update:open",!1)):F.push("/branch/list")}catch(o){N.error(((e=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return T(async()=>{try{const{data:s}=await c.get("user/list");_.value=s}catch(s){console.log(s)}if(r)try{const{data:s}=await c.get(`branch/${r}`);Object.assign(t,{name:s.name??"",phone:s.phone??"",address:s.address??"",user_id:s.user_id??void 0})}catch(s){console.log(s)}}),(s,e)=>{const o=i("a-input"),u=i("a-form-item"),U=i("a-select-option"),x=i("a-select"),B=i("a-textarea"),A=i("a-button"),D=i("a-card"),G=i("a-form"),H=i("a-spin");return f?(p(),v(K,{key:0,open:!!h.open,id:R(r),"add-title":"افزودن شعبه","edit-title":"ویرایش شعبه",loading:m.value,submitting:m.value,"onUpdate:open":e[4]||(e[4]=a=>s.$emit("update:open",a)),onSubmit:b},{default:l(()=>[O("div",P,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:l(()=>[n(o,{value:t.name,"onUpdate:value":e[0]||(e[0]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:l(()=>[n(o,{value:t.phone,"onUpdate:value":e[1]||(e[1]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:l(()=>[n(x,{value:t.user_id,"onUpdate:value":e[2]||(e[2]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:l(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(U,{key:a.id,value:a.id},{default:l(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:l(()=>[n(B,{value:t.address,"onUpdate:value":e[3]||(e[3]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(p(),v(H,{key:1,spinning:m.value},{default:l(()=>[n(G,{layout:"vertical",onSubmit:I(b,["prevent"])},{default:l(()=>[n(D,{title:R(r)?"ویرایش شعبه":"افزودن شعبه",class:"mb-base page-card"},{default:l(()=>[O("div",Q,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:l(()=>[n(o,{value:t.name,"onUpdate:value":e[5]||(e[5]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:l(()=>[n(o,{value:t.phone,"onUpdate:value":e[6]||(e[6]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:l(()=>[n(x,{value:t.user_id,"onUpdate:value":e[7]||(e[7]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:l(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(U,{key:a.id,value:a.id},{default:l(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:l(()=>[n(B,{value:t.address,"onUpdate:value":e[8]||(e[8]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),n(A,{type:"primary",class:"form-submit",onClick:b},{default:l(()=>[...e[9]||(e[9]=[g("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{Y as _}; +import{d as L,x as T,y as c,a as v,w as l,h as R,k as q,m as S,z as C,r as i,o as p,p as O,c as n,b as $,e as j,f as g,t as z,F as M,H as I,G as N,l as J}from"./index-eLNLLYwC.js";import{_ as K}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const P={class:"grid-2"},Q={class:"grid-2"},Y=L({__name:"AddBranches",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(h,{emit:V}){const y=h,w=V,f=y.open!==void 0,E=q(),F=J(),r=f?y.id:E.params.id,m=S(!1),_=S([]),t=C({name:"",phone:"",address:"",user_id:void 0}),d=C({});function k(s,e){var o,u;return String(((u=(o=e==null?void 0:e.children)==null?void 0:o[0])==null?void 0:u.children)??"").includes(s)}async function b(){var s,e;if(Object.keys(d).forEach(o=>delete d[o]),!t.name){d.name="لطفا مقدار را وارد کنید";return}try{m.value=!0,r?await c.put(`branch/${r}`,t):await c.post("branch",t),N.info("اطلاعات با موفقیت به ثبت رسید."),r||Object.assign(t,{name:"",phone:"",address:"",user_id:void 0}),f?(w("success"),w("update:open",!1)):F.push("/branch/list")}catch(o){N.error(((e=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return T(async()=>{try{const{data:s}=await c.get("user/list");_.value=s}catch(s){console.log(s)}if(r)try{const{data:s}=await c.get(`branch/${r}`);Object.assign(t,{name:s.name??"",phone:s.phone??"",address:s.address??"",user_id:s.user_id??void 0})}catch(s){console.log(s)}}),(s,e)=>{const o=i("a-input"),u=i("a-form-item"),U=i("a-select-option"),x=i("a-select"),B=i("a-textarea"),A=i("a-button"),D=i("a-card"),G=i("a-form"),H=i("a-spin");return f?(p(),v(K,{key:0,open:!!h.open,id:R(r),"add-title":"افزودن شعبه","edit-title":"ویرایش شعبه",loading:m.value,submitting:m.value,"onUpdate:open":e[4]||(e[4]=a=>s.$emit("update:open",a)),onSubmit:b},{default:l(()=>[O("div",P,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:l(()=>[n(o,{value:t.name,"onUpdate:value":e[0]||(e[0]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:l(()=>[n(o,{value:t.phone,"onUpdate:value":e[1]||(e[1]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:l(()=>[n(x,{value:t.user_id,"onUpdate:value":e[2]||(e[2]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:l(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(U,{key:a.id,value:a.id},{default:l(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:l(()=>[n(B,{value:t.address,"onUpdate:value":e[3]||(e[3]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(p(),v(H,{key:1,spinning:m.value},{default:l(()=>[n(G,{layout:"vertical",onSubmit:I(b,["prevent"])},{default:l(()=>[n(D,{title:R(r)?"ویرایش شعبه":"افزودن شعبه",class:"mb-base page-card"},{default:l(()=>[O("div",Q,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:l(()=>[n(o,{value:t.name,"onUpdate:value":e[5]||(e[5]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:l(()=>[n(o,{value:t.phone,"onUpdate:value":e[6]||(e[6]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:l(()=>[n(x,{value:t.user_id,"onUpdate:value":e[7]||(e[7]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:l(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(U,{key:a.id,value:a.id},{default:l(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:l(()=>[n(B,{value:t.address,"onUpdate:value":e[8]||(e[8]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),n(A,{type:"primary",class:"form-submit",onClick:b},{default:l(()=>[...e[9]||(e[9]=[g("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{Y as _}; diff --git a/apps/admin-panel/dist/assets/AddCustomer-C93P9Nl8.js b/apps/admin-panel/dist/assets/AddCustomer-DXt3pmSf.js similarity index 80% rename from apps/admin-panel/dist/assets/AddCustomer-C93P9Nl8.js rename to apps/admin-panel/dist/assets/AddCustomer-DXt3pmSf.js index b6889e2..1024036 100644 --- a/apps/admin-panel/dist/assets/AddCustomer-C93P9Nl8.js +++ b/apps/admin-panel/dist/assets/AddCustomer-DXt3pmSf.js @@ -1 +1 @@ -import{c as h,I as w,d as x,u as z,m as B,b as l,p as n,w as I,F as v,e as P,a as m,g as k,i as p,k as R,s as A,r as F,o as i,h as b,R as H,l as V,q as j,t as y,L as M,_ as N}from"./index-DajPj7Ec.js";import{_ as D}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js";import{R as U}from"./ReagentCustomer-BAV0MXtJ.js";import{S as $}from"./singleCustomer-3o4eCG9y.js";import{S as q}from"./ShopOutlined-MoIbCAG4.js";import{U as E}from"./UserOutlined-CzruAWCH.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./DateInput-CSLG7sxn.js";import"./index-BAamWbCu.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./PercentageOutlined-D8KYbn5o.js";import"./SafetyCertificateOutlined-DSk-s9OX.js";import"./CameraOutlined-B6nXMt0y.js";var L={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 008-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0029.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 00-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z"}}]},name:"idcard",theme:"outlined"};function g(r){for(var e=1;e!!o.hasPermission(c),d=A(()=>{const c=[];return u("persons.create.client")&&c.push({key:"omde",title:"مشتری عمده",hint:"مغازه‌دار، بنکدار و خریدار عمده",icon:q}),u("persons.create.seller")&&c.push({key:"reagent",title:"کارشناس فروش",hint:"کارشناس با کمیسیون و سقف اعتبار",icon:_}),o.isSuperAdmin&&c.push({key:"tak",title:"مشتری تک",hint:"مشتری خرده‌فروشی حضوری",icon:E}),c}),O={omde:D,reagent:U,tak:$};function C(){window.history.length>1?t.back():t.push("/customer/omde-list")}return(c,f)=>{const S=F("a-button");return i(),l("div",G,[n("header",J,[h(S,{class:"pf-head__back",shape:"circle",onClick:C},{icon:I(()=>[h(b(H))]),_:1}),f[0]||(f[0]=n("div",{class:"pf-head__text"},[n("h1",null,"افزودن شخص"),n("p",null,"نوع شخص را انتخاب و اطلاعات او را تکمیل کنید.")],-1))]),u("persons.create")&&d.value.length?(i(),l(v,{key:0},[n("div",Q,[(i(!0),l(v,null,P(d.value,a=>(i(),l("button",{key:a.key,type:"button",role:"tab",class:j(["kind-card",{"is-on":s.value===a.key}]),"aria-selected":s.value===a.key,onClick:K=>s.value=a.key},[n("span",X,[(i(),m(k(a.icon)))]),n("span",Y,[n("b",null,y(a.title),1),n("small",null,y(a.hint),1)]),s.value===a.key?(i(),m(b(M),{key:0,class:"kind-card__check"})):p("",!0)],10,W))),128))]),d.value.some(a=>a.key===s.value)?(i(),m(k(O[s.value]),{key:s.value})):p("",!0)],64)):p("",!0)])}}}),_e=N(Z,[["__scopeId","data-v-09902473"]]);export{_e as default}; +import{c as h,I as w,d as x,u as z,m as B,b as l,p as n,w as I,F as v,e as P,a as m,g as k,i as p,k as R,s as A,r as F,o as i,h as b,R as H,l as V,q as j,t as y,L as M,_ as N}from"./index-eLNLLYwC.js";import{_ as D}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js";import{R as U}from"./ReagentCustomer-BXqRAucN.js";import{S as $}from"./singleCustomer-gqRtFTnm.js";import{S as q}from"./ShopOutlined-DIjF3I3z.js";import{U as E}from"./UserOutlined-B4M5rNrX.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./DateInput-D9Jh1loF.js";import"./index-CKaD48iT.js";import"./EnvironmentOutlined-BKbou10z.js";import"./PercentageOutlined-DyprS4lh.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";import"./CameraOutlined-CFYC5ScW.js";var L={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 008-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0029.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 00-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z"}}]},name:"idcard",theme:"outlined"};function g(r){for(var e=1;e!!o.hasPermission(c),d=A(()=>{const c=[];return u("persons.create.client")&&c.push({key:"omde",title:"مشتری عمده",hint:"مغازه‌دار، بنکدار و خریدار عمده",icon:q}),u("persons.create.seller")&&c.push({key:"reagent",title:"کارشناس فروش",hint:"کارشناس با کمیسیون و سقف اعتبار",icon:_}),o.isSuperAdmin&&c.push({key:"tak",title:"مشتری تک",hint:"مشتری خرده‌فروشی حضوری",icon:E}),c}),O={omde:D,reagent:U,tak:$};function C(){window.history.length>1?t.back():t.push("/customer/omde-list")}return(c,f)=>{const S=F("a-button");return i(),l("div",G,[n("header",J,[h(S,{class:"pf-head__back",shape:"circle",onClick:C},{icon:I(()=>[h(b(H))]),_:1}),f[0]||(f[0]=n("div",{class:"pf-head__text"},[n("h1",null,"افزودن شخص"),n("p",null,"نوع شخص را انتخاب و اطلاعات او را تکمیل کنید.")],-1))]),u("persons.create")&&d.value.length?(i(),l(v,{key:0},[n("div",Q,[(i(!0),l(v,null,P(d.value,a=>(i(),l("button",{key:a.key,type:"button",role:"tab",class:j(["kind-card",{"is-on":s.value===a.key}]),"aria-selected":s.value===a.key,onClick:K=>s.value=a.key},[n("span",X,[(i(),m(k(a.icon)))]),n("span",Y,[n("b",null,y(a.title),1),n("small",null,y(a.hint),1)]),s.value===a.key?(i(),m(b(M),{key:0,class:"kind-card__check"})):p("",!0)],10,W))),128))]),d.value.some(a=>a.key===s.value)?(i(),m(k(O[s.value]),{key:s.value})):p("",!0)],64)):p("",!0)])}}}),_e=N(Z,[["__scopeId","data-v-09902473"]]);export{_e as default}; diff --git a/apps/admin-panel/dist/assets/AddInvoice-iZuqzIMz.js b/apps/admin-panel/dist/assets/AddInvoice-DwmImnAo.js similarity index 96% rename from apps/admin-panel/dist/assets/AddInvoice-iZuqzIMz.js rename to apps/admin-panel/dist/assets/AddInvoice-DwmImnAo.js index f2e8720..b62b031 100644 --- a/apps/admin-panel/dist/assets/AddInvoice-iZuqzIMz.js +++ b/apps/admin-panel/dist/assets/AddInvoice-DwmImnAo.js @@ -1 +1 @@ -import{Y as it,d as nt,x as st,y as q,a as f,w as n,h as b,k as ot,m as M,z as K,r as u,o as l,c as o,f as m,p as I,$ as L,b as C,t as S,F as B,i as P,e as Q,H as lt,s as dt,G as V,l as rt,_ as ct}from"./index-DajPj7Ec.js";import{_ as ut}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import{a as mt,b as p,X as Y}from"./model-CR-NjhTP.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";function pt(){const e=new mt("admin/products/list","لیست محصولات");return e.add(new p("id","کد").filterNumber()),e.add(new p("ProductImage","تصویر محصول").renderSlot("image").noSort()),e.add(new p("title","نام محصول").filterText()),e.add(new p("min_gram","وزن").filterNumber().noSort()),e.add(new p("brand.title","برند").filterText()),e.add(new p("category.collection.title","دسته بندی").filterText()),e.add(new p("product_code","کد محصول").filterText()),e.add(new p("max_gram","حداکثر وزن").filterNumber().hidden().noSort()),e.add(new p("op","عملیات").noSort().renderSlot("op")),e}const W="admin_invoice_items",_t=it("invoiceCart",{state:()=>({items:[]}),actions:{setItems(e){this.items=e,localStorage.setItem(W,JSON.stringify(e))},add(e){var x;const _=this.items.findIndex(w=>w.pid==e.pid&&w.vid==e.vid),y=(((x=e.product)==null?void 0:x.variants_all)??[]).filter(w=>w.id===e.vid)[0];e.vid&&y&&!y.is_pre_order&&y.qty===0||(_==-1?this.items.push(e):(this.items[_].product=e.product,this.items[_].qty=e.qty),this.setItems(this.items))},remove(e){const _=this.items.findIndex(g=>g.pid==e.pid&&g.vid==e.vid);_>-1&&this.items.splice(_,1),this.setItems(this.items)},updateItemQuantity(e){this.items[e.index].qty=e.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},init(){try{this.items=JSON.parse(localStorage.getItem(W)??"[]")||[]}catch{this.items=[]}}}}),ft=["src"],ht={key:1,class:"flex items-center"},vt=["src"],bt={class:"grid-3 mt-4"},gt=["src"],yt={key:1,class:"flex items-center"},xt=["src"],wt={class:"grid-3"},X="/img/no-items.png",kt=nt({__name:"AddInvoice",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(e,{emit:_}){const g=e,y=_,x=g.open!==void 0,w=ot(),Z=rt(),h=_t(),N=x?g.id:w.params.id,$=M(!1),j=pt(),z=M(null),O=M([]),d=K({branch_id:void 0,note:""}),v=K({}),k=dt(()=>h.items),A=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:120},{title:"محصول",dataIndex:"product"},{title:"وزن",dataIndex:"weight",align:"center"}];function E(i){var a,s,r;return((a=i==null?void 0:i.thumb)==null?void 0:a.full)??((r=(s=i==null?void 0:i.ProductImage)==null?void 0:s[0])==null?void 0:r.image)??X}function F(i){h.add({pid:i.id,qty:1,product:i}),V.info("اضافه شد")}function J(i,a){var s,r;return String(((r=(s=a==null?void 0:a.children)==null?void 0:s[0])==null?void 0:r.children)??"").includes(i)}async function U(){var i,a;if(Object.keys(v).forEach(s=>delete v[s]),!d.branch_id){v.branch_id="مقدار را وارد نمایید";return}try{$.value=!0;const s=k.value.map(r=>r.pid);N?await q.put(`branch/product/${N}`,{...d,products:s}):await q.post("branch/product",{...d,products:s}),V.info("عملیات با موفقیت انجام شد"),h.clear(),x?(y("success"),y("update:open",!1)):Z.push("/invoice/list")}catch(s){V.error(((a=(i=s==null?void 0:s.response)==null?void 0:i.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{$.value=!1}}return st(async()=>{h.init();try{const{data:i}=await q.get("branch/list");O.value=i}catch(i){console.log(i)}if(N)try{const{data:i}=await q.get(`branch/product/${N}`);d.branch_id=i.branch_id,d.note=i.note??"",h.setItems((i.products??[]).map(a=>({pid:a.id,qty:1,product:{id:a.id,title:a.title,min_gram:a.grams}})))}catch(i){console.log(i)}}),(i,a)=>{const s=u("a-button"),r=u("a-card"),R=u("a-table"),D=u("a-select-option"),G=u("a-select"),T=u("a-form-item"),H=u("a-input"),tt=u("a-form"),et=u("a-spin");return x?(l(),f(ut,{key:0,open:!!e.open,id:b(N),"add-title":"افزودن فاکتور","edit-title":"ویرایش فاکتور",loading:$.value,submitting:$.value,width:"xl","ok-text":"ثبت تغییرات","onUpdate:open":a[2]||(a[2]=t=>i.$emit("update:open",t)),onSubmit:U},{default:n(()=>[o(r,{title:"لیست محصولات"},{default:n(()=>[o(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,ft)]),op:n(({record:t})=>[o(s,{size:"small",type:"primary",onClick:c=>F(t)},{default:n(()=>[...a[5]||(a[5]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"])]),_:1}),k.value.length>0?(l(),f(r,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[o(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:c})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(c)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",ht,[I("img",{src:E(c.product),width:"50px"},null,8,vt),m(" "+S(c.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(c.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),I("div",bt,[o(T,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[o(G,{value:d.branch_id,"onUpdate:value":a[0]||(a[0]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(T,{label:"توضیحات"},{default:n(()=>[o(H,{value:d.note,"onUpdate:value":a[1]||(a[1]=t=>d.note=t)},null,8,["value"])]),_:1})])]),_:1})):P("",!0)]),_:1},8,["open","id","loading","submitting"])):(l(),f(et,{key:1,spinning:$.value},{default:n(()=>[o(r,{title:"لیست محصولات",class:"page-card"},{default:n(()=>[o(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,gt)]),op:n(({record:t})=>[o(s,{size:"small",type:"primary",onClick:c=>F(t)},{default:n(()=>[...a[6]||(a[6]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"]),k.value.length>0?(l(),f(r,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[o(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:c})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(c)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",yt,[I("img",{src:E(c.product),width:"50px"},null,8,xt),m(" "+S(c.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(c.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),o(tt,{layout:"vertical",class:"mt-4",onSubmit:lt(U,["prevent"])},{default:n(()=>[I("div",wt,[o(T,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[o(G,{value:d.branch_id,"onUpdate:value":a[3]||(a[3]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(T,{label:"توضیحات"},{default:n(()=>[o(H,{value:d.note,"onUpdate:value":a[4]||(a[4]=t=>d.note=t)},null,8,["value"])]),_:1})]),o(s,{type:"primary",class:"form-submit",disabled:k.value.length<1,onClick:U},{default:n(()=>[...a[7]||(a[7]=[m(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):P("",!0)]),_:1})]),_:1},8,["spinning"]))}}}),qt=ct(kt,[["__scopeId","data-v-a752a6ce"]]);export{qt as default}; +import{Y as it,d as nt,x as st,y as q,a as f,w as n,h as b,k as ot,m as M,z as K,r as u,o as l,c as o,f as m,p as I,$ as L,b as C,t as S,F as B,i as P,e as Q,H as lt,s as dt,G as V,l as rt,_ as ct}from"./index-eLNLLYwC.js";import{_ as ut}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import{a as mt,b as p,X as Y}from"./model-btNVLLyF.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";function pt(){const e=new mt("admin/products/list","لیست محصولات");return e.add(new p("id","کد").filterNumber()),e.add(new p("ProductImage","تصویر محصول").renderSlot("image").noSort()),e.add(new p("title","نام محصول").filterText()),e.add(new p("min_gram","وزن").filterNumber().noSort()),e.add(new p("brand.title","برند").filterText()),e.add(new p("category.collection.title","دسته بندی").filterText()),e.add(new p("product_code","کد محصول").filterText()),e.add(new p("max_gram","حداکثر وزن").filterNumber().hidden().noSort()),e.add(new p("op","عملیات").noSort().renderSlot("op")),e}const W="admin_invoice_items",_t=it("invoiceCart",{state:()=>({items:[]}),actions:{setItems(e){this.items=e,localStorage.setItem(W,JSON.stringify(e))},add(e){var x;const _=this.items.findIndex(w=>w.pid==e.pid&&w.vid==e.vid),y=(((x=e.product)==null?void 0:x.variants_all)??[]).filter(w=>w.id===e.vid)[0];e.vid&&y&&!y.is_pre_order&&y.qty===0||(_==-1?this.items.push(e):(this.items[_].product=e.product,this.items[_].qty=e.qty),this.setItems(this.items))},remove(e){const _=this.items.findIndex(g=>g.pid==e.pid&&g.vid==e.vid);_>-1&&this.items.splice(_,1),this.setItems(this.items)},updateItemQuantity(e){this.items[e.index].qty=e.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},init(){try{this.items=JSON.parse(localStorage.getItem(W)??"[]")||[]}catch{this.items=[]}}}}),ft=["src"],ht={key:1,class:"flex items-center"},vt=["src"],bt={class:"grid-3 mt-4"},gt=["src"],yt={key:1,class:"flex items-center"},xt=["src"],wt={class:"grid-3"},X="/img/no-items.png",kt=nt({__name:"AddInvoice",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(e,{emit:_}){const g=e,y=_,x=g.open!==void 0,w=ot(),Z=rt(),h=_t(),N=x?g.id:w.params.id,$=M(!1),j=pt(),z=M(null),O=M([]),d=K({branch_id:void 0,note:""}),v=K({}),k=dt(()=>h.items),A=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:120},{title:"محصول",dataIndex:"product"},{title:"وزن",dataIndex:"weight",align:"center"}];function E(i){var a,s,r;return((a=i==null?void 0:i.thumb)==null?void 0:a.full)??((r=(s=i==null?void 0:i.ProductImage)==null?void 0:s[0])==null?void 0:r.image)??X}function F(i){h.add({pid:i.id,qty:1,product:i}),V.info("اضافه شد")}function J(i,a){var s,r;return String(((r=(s=a==null?void 0:a.children)==null?void 0:s[0])==null?void 0:r.children)??"").includes(i)}async function U(){var i,a;if(Object.keys(v).forEach(s=>delete v[s]),!d.branch_id){v.branch_id="مقدار را وارد نمایید";return}try{$.value=!0;const s=k.value.map(r=>r.pid);N?await q.put(`branch/product/${N}`,{...d,products:s}):await q.post("branch/product",{...d,products:s}),V.info("عملیات با موفقیت انجام شد"),h.clear(),x?(y("success"),y("update:open",!1)):Z.push("/invoice/list")}catch(s){V.error(((a=(i=s==null?void 0:s.response)==null?void 0:i.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{$.value=!1}}return st(async()=>{h.init();try{const{data:i}=await q.get("branch/list");O.value=i}catch(i){console.log(i)}if(N)try{const{data:i}=await q.get(`branch/product/${N}`);d.branch_id=i.branch_id,d.note=i.note??"",h.setItems((i.products??[]).map(a=>({pid:a.id,qty:1,product:{id:a.id,title:a.title,min_gram:a.grams}})))}catch(i){console.log(i)}}),(i,a)=>{const s=u("a-button"),r=u("a-card"),R=u("a-table"),D=u("a-select-option"),G=u("a-select"),T=u("a-form-item"),H=u("a-input"),tt=u("a-form"),et=u("a-spin");return x?(l(),f(ut,{key:0,open:!!e.open,id:b(N),"add-title":"افزودن فاکتور","edit-title":"ویرایش فاکتور",loading:$.value,submitting:$.value,width:"xl","ok-text":"ثبت تغییرات","onUpdate:open":a[2]||(a[2]=t=>i.$emit("update:open",t)),onSubmit:U},{default:n(()=>[o(r,{title:"لیست محصولات"},{default:n(()=>[o(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,ft)]),op:n(({record:t})=>[o(s,{size:"small",type:"primary",onClick:c=>F(t)},{default:n(()=>[...a[5]||(a[5]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"])]),_:1}),k.value.length>0?(l(),f(r,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[o(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:c})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(c)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",ht,[I("img",{src:E(c.product),width:"50px"},null,8,vt),m(" "+S(c.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(c.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),I("div",bt,[o(T,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[o(G,{value:d.branch_id,"onUpdate:value":a[0]||(a[0]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(T,{label:"توضیحات"},{default:n(()=>[o(H,{value:d.note,"onUpdate:value":a[1]||(a[1]=t=>d.note=t)},null,8,["value"])]),_:1})])]),_:1})):P("",!0)]),_:1},8,["open","id","loading","submitting"])):(l(),f(et,{key:1,spinning:$.value},{default:n(()=>[o(r,{title:"لیست محصولات",class:"page-card"},{default:n(()=>[o(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,gt)]),op:n(({record:t})=>[o(s,{size:"small",type:"primary",onClick:c=>F(t)},{default:n(()=>[...a[6]||(a[6]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"]),k.value.length>0?(l(),f(r,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[o(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:c})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(c)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",yt,[I("img",{src:E(c.product),width:"50px"},null,8,xt),m(" "+S(c.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(c.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),o(tt,{layout:"vertical",class:"mt-4",onSubmit:lt(U,["prevent"])},{default:n(()=>[I("div",wt,[o(T,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[o(G,{value:d.branch_id,"onUpdate:value":a[3]||(a[3]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(T,{label:"توضیحات"},{default:n(()=>[o(H,{value:d.note,"onUpdate:value":a[4]||(a[4]=t=>d.note=t)},null,8,["value"])]),_:1})]),o(s,{type:"primary",class:"form-submit",disabled:k.value.length<1,onClick:U},{default:n(()=>[...a[7]||(a[7]=[m(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):P("",!0)]),_:1})]),_:1},8,["spinning"]))}}}),qt=ct(kt,[["__scopeId","data-v-a752a6ce"]]);export{qt as default}; diff --git a/apps/admin-panel/dist/assets/AddProduct-B3HJWpgQ.css b/apps/admin-panel/dist/assets/AddProduct-B3HJWpgQ.css deleted file mode 100644 index 0f6d969..0000000 --- a/apps/admin-panel/dist/assets/AddProduct-B3HJWpgQ.css +++ /dev/null @@ -1 +0,0 @@ -.gallery-upload[data-v-79ab0f30]{display:flex;flex-direction:column;gap:12px}.gallery-upload__zone[data-v-79ab0f30]{padding:18px 12px}.gallery-upload__icon[data-v-79ab0f30]{font-size:16px;color:#1c2d56;opacity:.75}.gallery-upload__title[data-v-79ab0f30]{margin:8px 0 2px;font-weight:500;font-size:14px;color:#101828}.gallery-upload__hint[data-v-79ab0f30]{margin:0;font-size:12px;color:#8a94a6}.gallery-upload__grid[data-v-79ab0f30]{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}.tile[data-v-79ab0f30]{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:1px solid #eef0f5;background:#f5f7fb}.tile img[data-v-79ab0f30]{width:100%;height:100%;object-fit:cover;display:block}.tile.is-uploading img[data-v-79ab0f30]{filter:brightness(.6)}.tile__progress[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}.tile__overlay[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:8px;background:#10182880;opacity:0;transition:opacity .2s ease}.tile:hover .tile__overlay[data-v-79ab0f30],.tile:focus-within .tile__overlay[data-v-79ab0f30]{opacity:1}.tile__btn[data-v-79ab0f30]{width:32px;height:32px;display:grid;place-items:center;border:none;border-radius:9px;background:#ffffffeb;color:#1c2d56;font-size:15px;cursor:pointer;transition:transform .15s ease}.tile__btn[data-v-79ab0f30]:hover{transform:scale(1.08)}.tile__btn--danger[data-v-79ab0f30]{color:#ea5455}@media (hover: none){.tile__overlay[data-v-79ab0f30]{opacity:1;align-items:flex-end;justify-content:flex-end;padding:6px;gap:4px;background:linear-gradient(to top,rgba(16,24,40,.55),transparent 55%)}.tile__btn[data-v-79ab0f30]{width:28px;height:28px;font-size:13px}}.gallery-upload__meta[data-v-79ab0f30]{display:flex;align-items:center;gap:14px;font-size:12px;color:#8a94a6}.gallery-upload__pending[data-v-79ab0f30]{display:inline-flex;align-items:center;gap:6px;color:#1c2d56}.product-form-page[data-v-4d03854e]{--c-primary: #1c2d56;--ink: #101828;--muted: #8a94a6;--line: #eef0f5;min-width:0}.pf-table__title[data-v-4d03854e]{font-weight:500;color:var(--ink)}.pf-table__ops[data-v-4d03854e]{display:flex;gap:2px}.muted[data-v-4d03854e]{color:var(--muted)}.variant-thumb[data-v-4d03854e]{width:44px;height:44px;object-fit:cover;border-radius:10px;display:inline-block;border:1px solid var(--line)}.variant-thumb--empty[data-v-4d03854e]{display:inline-flex;align-items:center;justify-content:center;border:1px dashed #d9dde5;background:#fafbfd;color:#b4bccb;font-size:16px}.variant-form[data-v-4d03854e]{display:grid;grid-template-columns:120px minmax(0,1fr);gap:20px;align-items:start}.variant-form__media[data-v-4d03854e]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.variant-form__gallery-btn[data-v-4d03854e]{padding-inline:0}.variant-form__hint[data-v-4d03854e]{margin:12px 0 0;font-size:12px;color:var(--muted)}.variant-gallery[data-v-4d03854e]{display:grid;grid-template-columns:repeat(4,64px);gap:8px;max-height:232px;overflow-y:auto}.variant-gallery__item[data-v-4d03854e]{width:64px;height:64px;padding:2px;border:2px solid #e3e7ef;border-radius:10px;background:#fff;cursor:pointer;overflow:hidden}.variant-gallery__item[data-v-4d03854e]:hover{border-color:#b4bccb}.variant-gallery__item.is-on[data-v-4d03854e]{border-color:#1c2d56}.variant-gallery__item img[data-v-4d03854e]{width:100%;height:100%;object-fit:cover;border-radius:7px;display:block}@media (max-width: 575px){.variant-form[data-v-4d03854e]{grid-template-columns:minmax(0,1fr);gap:12px}}.product-editor-page[data-v-4d03854e]{display:flex;flex-direction:column;gap:16px;min-width:0}.page-top-header[data-v-4d03854e]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:2px 4px}.page-title-wrap[data-v-4d03854e]{display:flex;flex-direction:column;gap:4px}.title-with-badge[data-v-4d03854e]{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.page-title[data-v-4d03854e]{margin:0;font-size:20px;font-weight:600;color:#1c2d56;line-height:1.3}.product-name-badge[data-v-4d03854e]{margin:0;font-size:13px;font-weight:500;border-radius:6px}.accounting-badge[data-v-4d03854e]{margin:0;font-size:12px;border-radius:6px}.page-subtitle[data-v-4d03854e]{margin:0;font-size:13px;color:#8c8c8c}.header-actions[data-v-4d03854e]{display:flex;align-items:center;gap:10px}.back-btn[data-v-4d03854e]{display:inline-flex;align-items:center;gap:6px;height:38px;border-radius:8px;color:#595959;font-size:13px}.header-save-btn[data-v-4d03854e]{background:#1c2d56;border-color:#1c2d56;height:38px;padding:0 18px;border-radius:8px;font-size:13px;font-weight:600}.header-save-btn[data-v-4d03854e]:hover{background:#2b427a!important;border-color:#2b427a!important}.product-grid-layout[data-v-4d03854e]{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}.layout-main[data-v-4d03854e],.layout-sidebar[data-v-4d03854e]{display:flex;flex-direction:column;gap:20px;min-width:0}.form-section[data-v-4d03854e]{background:#fff;border:1px solid #edf0f5;border-radius:12px;padding:20px 22px 24px;box-shadow:0 1px 2px #1c2d5605}.form-section-head[data-v-4d03854e]{display:flex;align-items:center;gap:12px;padding-bottom:14px;margin-bottom:20px;border-bottom:1px solid #f0f2f5}.form-section-head.has-action[data-v-4d03854e]{justify-content:space-between}.head-info[data-v-4d03854e]{display:flex;align-items:center;gap:12px}.section-icon-badge[data-v-4d03854e]{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:#1c2d560d;color:#1c2d56;font-size:18px;flex-shrink:0}.section-title-wrap[data-v-4d03854e]{display:flex;flex-direction:column;gap:2px}.section-title[data-v-4d03854e]{margin:0;font-size:15px;font-weight:600;color:#1c2d56;line-height:1.3}.section-subtitle[data-v-4d03854e]{margin:0;font-size:12px;color:#8c8c8c;line-height:1.4}.form-grid-2[data-v-4d03854e]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}.full-width-item[data-v-4d03854e]{grid-column:1 / -1}.form-grid-2[data-v-4d03854e] .ant-form-item,.sidebar-section[data-v-4d03854e] .ant-form-item{margin-bottom:0}.sidebar-section[data-v-4d03854e]{padding:18px}.sidebar-item[data-v-4d03854e]{margin-bottom:16px}.switch-row[data-v-4d03854e]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:8px;background:#fafbfc;border:1px solid #f0f2f5}.switch-info[data-v-4d03854e]{display:flex;flex-direction:column;gap:2px}.switch-title[data-v-4d03854e]{font-size:13px;font-weight:600;color:#262626}.switch-subtitle[data-v-4d03854e]{font-size:11px;color:#8c8c8c}.featured-images-grid[data-v-4d03854e]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.featured-upload-card[data-v-4d03854e]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;background:#fafbfc;border:1px dashed #d9d9d9;border-radius:8px;transition:all .2s ease}.featured-upload-card[data-v-4d03854e]:hover{border-color:#1c2d56;background:#fff}.featured-label[data-v-4d03854e]{font-size:12px;font-weight:500;color:#595959}.gallery-tabs[data-v-4d03854e]{margin-bottom:14px}.gallery-segmented[data-v-4d03854e]{width:100%;display:flex}.gallery-segmented[data-v-4d03854e] .ant-radio-button-wrapper{flex:1;text-align:center;font-size:12px}.gallery-grid[data-v-4d03854e]{display:flex;flex-wrap:wrap;gap:10px}.gallery-item[data-v-4d03854e]{flex-shrink:0}.add-variant-btn[data-v-4d03854e]{background:#1c2d56;border-color:#1c2d56;border-radius:6px;font-size:13px}.add-variant-btn[data-v-4d03854e]:hover{background:#2b427a!important;border-color:#2b427a!important}.table-container[data-v-4d03854e]{border:1px solid #edf0f5;border-radius:8px;overflow:hidden}.variants-table[data-v-4d03854e] .ant-table-thead>tr>th{background:#fafbfc;font-size:12px;font-weight:600;color:#595959}.variant-thumb[data-v-4d03854e]{width:42px;height:42px;object-fit:cover;border-radius:6px;border:1px solid #e8e8e8;display:inline-block}.variant-thumb--empty[data-v-4d03854e]{display:inline-flex;align-items:center;justify-content:center;background:#fafafa;color:#bfbfbf;border:1px dashed #d9d9d9;font-size:14px}.variant-title-cell[data-v-4d03854e]{font-weight:600;color:#262626;font-size:13px}.weight-cell[data-v-4d03854e]{color:#1c2d56;font-weight:500;font-size:13px}.wage-cell[data-v-4d03854e]{color:#28c76f;font-weight:600;font-size:13px}.qty-badge[data-v-4d03854e]{display:inline-block;padding:2px 8px;background:#f5f5f5;border-radius:4px;font-size:12px;color:#595959}.status-tag[data-v-4d03854e]{margin:0;border-radius:4px;font-size:11px}.table-actions[data-v-4d03854e]{display:inline-flex;align-items:center;gap:4px}.action-btn[data-v-4d03854e]{border-radius:4px}.edit-btn[data-v-4d03854e]{color:#1c2d56}.edit-btn[data-v-4d03854e]:hover{background:#1c2d5614}.delete-btn[data-v-4d03854e]{color:#ea5455}.delete-btn[data-v-4d03854e]:hover{background:#ea545514}.variants-empty[data-v-4d03854e]{padding:24px 16px;text-align:center}.empty-title[data-v-4d03854e]{margin:0 0 4px;font-size:14px;font-weight:600;color:#262626}.empty-desc[data-v-4d03854e]{margin:0 0 16px;font-size:12px;color:#8c8c8c}.empty-add-btn[data-v-4d03854e]{border-radius:6px;color:#1c2d56;border-color:#1c2d56}.form-actions-bar[data-v-4d03854e]{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #edf0f5}.submit-btn[data-v-4d03854e]{background:#1c2d56;border-color:#1c2d56;height:42px;padding:0 24px;font-size:14px;font-weight:600;border-radius:8px}.submit-btn[data-v-4d03854e]:hover{background:#2b427a!important;border-color:#2b427a!important}.cancel-btn[data-v-4d03854e]{height:42px;padding:0 20px;font-size:14px;border-radius:8px;color:#595959}.vmodal-header[data-v-4d03854e]{display:flex;align-items:center;gap:12px;padding:0 0 10px;border-bottom:1px solid #edf2f7}.vmodal-header__icon[data-v-4d03854e]{width:36px;height:36px;border-radius:8px;background:#1c2d5614;color:#1c2d56;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.vmodal-header__text h3[data-v-4d03854e]{margin:0;font-size:15px;font-weight:700;color:#1a202c;line-height:1.2}.vmodal-header__text p[data-v-4d03854e]{margin:2px 0 0;font-size:11.5px;color:#718096}.vmodal-form[data-v-4d03854e]{padding-top:8px}.vmodal-cols[data-v-4d03854e]{display:grid;grid-template-columns:1.05fr .95fr;gap:12px;align-items:stretch}.vmodal-col[data-v-4d03854e]{display:flex;flex-direction:column;gap:10px}.vmodal-card[data-v-4d03854e]{background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:10px 14px}.vmodal-card__head[data-v-4d03854e]{font-size:12.5px;font-weight:700;color:#2d3748;margin-bottom:8px;padding-bottom:4px;border-bottom:1px dashed #e2e8f0;position:relative;padding-right:10px}.vmodal-card__head[data-v-4d03854e]:before{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);width:3px;height:12px;background:#1c2d56;border-radius:2px}.vmodal-grid[data-v-4d03854e]{display:grid;gap:8px}.vmodal-grid--2[data-v-4d03854e]{grid-template-columns:repeat(2,minmax(0,1fr))}.vmodal-item[data-v-4d03854e]{margin-bottom:6px}.vmodal-item[data-v-4d03854e]:last-child{margin-bottom:0}.vmodal-item[data-v-4d03854e] .ant-form-item-label{padding-bottom:2px!important}.vmodal-item[data-v-4d03854e] .ant-form-item-label>label{font-size:11.5px;font-weight:600;color:#4a5568;height:auto}.vmodal-switches[data-v-4d03854e]{display:flex;gap:10px;margin-top:6px;padding-top:6px;border-top:1px dashed #e2e8f0}.vmodal-switch-box[data-v-4d03854e]{flex:1;display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;margin:0}.vmodal-switch-box[data-v-4d03854e]:hover{border-color:#cbd5e0}.vmodal-switch-label[data-v-4d03854e]{font-size:11.5px;font-weight:600;color:#2d3748}.color-opt[data-v-4d03854e]{display:flex;align-items:center;gap:6px}.color-opt__dot[data-v-4d03854e]{width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.2);display:inline-block}.color-opt__dot--0[data-v-4d03854e]{background:#fdfdfd}.color-opt__dot--1[data-v-4d03854e]{background:gold}.color-opt__dot--2[data-v-4d03854e]{background:#795548}.color-opt__dot--3[data-v-4d03854e]{background:#b76e79}.vmodal-picker[data-v-4d03854e]{display:flex;flex-wrap:wrap;gap:8px;max-height:125px;overflow-y:auto;padding:2px}.vmodal-picker__item[data-v-4d03854e]{position:relative;width:54px;height:54px;padding:2px;border:1.5px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:all .15s ease;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;color:#a0aec0}.vmodal-picker__item[data-v-4d03854e]:hover{border-color:#1c2d56}.vmodal-picker__item img[data-v-4d03854e]{width:100%;height:100%;object-fit:cover;border-radius:4px;display:block}.vmodal-picker__item.is-active[data-v-4d03854e]{border-color:#1c2d56;box-shadow:0 0 0 2px #1c2d5633}.vmodal-picker__check[data-v-4d03854e]{position:absolute;top:2px;right:2px;width:14px;height:14px;background:#1c2d56;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px}.vmodal-picker-empty[data-v-4d03854e]{font-size:11px;color:#8c8c8c;padding:8px;text-align:center;background:#fff;border:1px dashed #e2e8f0;border-radius:6px}.vmodal-footer[data-v-4d03854e]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:10px;margin-top:8px;border-top:1px solid #edf2f7}.vmodal-footer__cancel[data-v-4d03854e]{border-radius:6px;min-width:80px}.vmodal-footer__submit[data-v-4d03854e]{border-radius:6px;background:#1c2d56;border-color:#1c2d56;min-width:110px;font-weight:600}.vmodal-footer__submit[data-v-4d03854e]:hover{background:#2b427a!important;border-color:#2b427a!important}@media (max-width: 1199px){.product-grid-layout[data-v-4d03854e]{grid-template-columns:1fr}.layout-sidebar[data-v-4d03854e]{order:2}}@media (max-width: 575px){.page-top-header[data-v-4d03854e]{flex-direction:column;align-items:flex-start}.header-actions[data-v-4d03854e]{width:100%;flex-direction:column}.back-btn[data-v-4d03854e],.header-save-btn[data-v-4d03854e]{width:100%;justify-content:center}.form-grid-2[data-v-4d03854e],.form-grid-3[data-v-4d03854e]{grid-template-columns:1fr;gap:12px}.form-section[data-v-4d03854e]{padding:16px 14px}.form-actions-bar[data-v-4d03854e]{flex-direction:column}.submit-btn[data-v-4d03854e],.cancel-btn[data-v-4d03854e]{width:100%}} diff --git a/apps/admin-panel/dist/assets/AddProduct-Bl-1Lqf-.css b/apps/admin-panel/dist/assets/AddProduct-Bl-1Lqf-.css new file mode 100644 index 0000000..f0e7a42 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddProduct-Bl-1Lqf-.css @@ -0,0 +1 @@ +.gallery-upload[data-v-79ab0f30]{display:flex;flex-direction:column;gap:12px}.gallery-upload__zone[data-v-79ab0f30]{padding:18px 12px}.gallery-upload__icon[data-v-79ab0f30]{font-size:16px;color:#1c2d56;opacity:.75}.gallery-upload__title[data-v-79ab0f30]{margin:8px 0 2px;font-weight:500;font-size:14px;color:#101828}.gallery-upload__hint[data-v-79ab0f30]{margin:0;font-size:12px;color:#8a94a6}.gallery-upload__grid[data-v-79ab0f30]{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}.tile[data-v-79ab0f30]{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:1px solid #eef0f5;background:#f5f7fb}.tile img[data-v-79ab0f30]{width:100%;height:100%;object-fit:cover;display:block}.tile.is-uploading img[data-v-79ab0f30]{filter:brightness(.6)}.tile__progress[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}.tile__overlay[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:8px;background:#10182880;opacity:0;transition:opacity .2s ease}.tile:hover .tile__overlay[data-v-79ab0f30],.tile:focus-within .tile__overlay[data-v-79ab0f30]{opacity:1}.tile__btn[data-v-79ab0f30]{width:32px;height:32px;display:grid;place-items:center;border:none;border-radius:9px;background:#ffffffeb;color:#1c2d56;font-size:15px;cursor:pointer;transition:transform .15s ease}.tile__btn[data-v-79ab0f30]:hover{transform:scale(1.08)}.tile__btn--danger[data-v-79ab0f30]{color:#ea5455}@media (hover: none){.tile__overlay[data-v-79ab0f30]{opacity:1;align-items:flex-end;justify-content:flex-end;padding:6px;gap:4px;background:linear-gradient(to top,rgba(16,24,40,.55),transparent 55%)}.tile__btn[data-v-79ab0f30]{width:28px;height:28px;font-size:13px}}.gallery-upload__meta[data-v-79ab0f30]{display:flex;align-items:center;gap:14px;font-size:12px;color:#8a94a6}.gallery-upload__pending[data-v-79ab0f30]{display:inline-flex;align-items:center;gap:6px;color:#1c2d56}.product-form-page[data-v-461486f5]{--c-primary: #1c2d56;--ink: #101828;--muted: #8a94a6;--line: #eef0f5;min-width:0}.pf-table__title[data-v-461486f5]{font-weight:500;color:var(--ink)}.pf-table__ops[data-v-461486f5]{display:flex;gap:2px}.muted[data-v-461486f5]{color:var(--muted)}.variant-thumb[data-v-461486f5]{width:44px;height:44px;object-fit:cover;border-radius:10px;display:inline-block;border:1px solid var(--line)}.variant-thumb--empty[data-v-461486f5]{display:inline-flex;align-items:center;justify-content:center;border:1px dashed #d9dde5;background:#fafbfd;color:#b4bccb;font-size:16px}.variant-form[data-v-461486f5]{display:grid;grid-template-columns:120px minmax(0,1fr);gap:20px;align-items:start}.variant-form__media[data-v-461486f5]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.variant-form__gallery-btn[data-v-461486f5]{padding-inline:0}.variant-form__hint[data-v-461486f5]{margin:12px 0 0;font-size:12px;color:var(--muted)}.variant-gallery[data-v-461486f5]{display:grid;grid-template-columns:repeat(4,64px);gap:8px;max-height:232px;overflow-y:auto}.variant-gallery__item[data-v-461486f5]{width:64px;height:64px;padding:2px;border:2px solid #e3e7ef;border-radius:10px;background:#fff;cursor:pointer;overflow:hidden}.variant-gallery__item[data-v-461486f5]:hover{border-color:#b4bccb}.variant-gallery__item.is-on[data-v-461486f5]{border-color:#1c2d56}.variant-gallery__item img[data-v-461486f5]{width:100%;height:100%;object-fit:cover;border-radius:7px;display:block}@media (max-width: 575px){.variant-form[data-v-461486f5]{grid-template-columns:minmax(0,1fr);gap:12px}}.product-editor-page[data-v-461486f5]{display:flex;flex-direction:column;gap:16px;min-width:0}.page-top-header[data-v-461486f5]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:2px 4px}.page-title-wrap[data-v-461486f5]{display:flex;flex-direction:column;gap:4px}.title-with-badge[data-v-461486f5]{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.page-title[data-v-461486f5]{margin:0;font-size:20px;font-weight:600;color:#1c2d56;line-height:1.3}.product-name-badge[data-v-461486f5]{margin:0;font-size:13px;font-weight:500;border-radius:6px}.accounting-badge[data-v-461486f5]{margin:0;font-size:12px;border-radius:6px}.page-subtitle[data-v-461486f5]{margin:0;font-size:13px;color:#8c8c8c}.header-actions[data-v-461486f5]{display:flex;align-items:center;gap:10px}.back-btn[data-v-461486f5]{display:inline-flex;align-items:center;gap:6px;height:38px;border-radius:8px;color:#595959;font-size:13px}.header-save-btn[data-v-461486f5]{background:#1c2d56;border-color:#1c2d56;height:38px;padding:0 18px;border-radius:8px;font-size:13px;font-weight:600}.header-save-btn[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}.product-grid-layout[data-v-461486f5]{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}.layout-main[data-v-461486f5],.layout-sidebar[data-v-461486f5]{display:flex;flex-direction:column;gap:20px;min-width:0}.form-section[data-v-461486f5]{background:#fff;border:1px solid #edf0f5;border-radius:12px;padding:20px 22px 24px;box-shadow:0 1px 2px #1c2d5605}.form-section-head[data-v-461486f5]{display:flex;align-items:center;gap:12px;padding-bottom:14px;margin-bottom:20px;border-bottom:1px solid #f0f2f5}.form-section-head.has-action[data-v-461486f5]{justify-content:space-between}.head-info[data-v-461486f5]{display:flex;align-items:center;gap:12px}.section-icon-badge[data-v-461486f5]{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:#1c2d560d;color:#1c2d56;font-size:18px;flex-shrink:0}.section-title-wrap[data-v-461486f5]{display:flex;flex-direction:column;gap:2px}.section-title[data-v-461486f5]{margin:0;font-size:15px;font-weight:600;color:#1c2d56;line-height:1.3}.section-subtitle[data-v-461486f5]{margin:0;font-size:12px;color:#8c8c8c;line-height:1.4}.form-grid-2[data-v-461486f5]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}.full-width-item[data-v-461486f5]{grid-column:1 / -1}.form-grid-2[data-v-461486f5] .ant-form-item,.sidebar-section[data-v-461486f5] .ant-form-item{margin-bottom:0}.sidebar-section[data-v-461486f5]{padding:18px}.sidebar-item[data-v-461486f5]{margin-bottom:16px}.switch-row[data-v-461486f5]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:8px;background:#fafbfc;border:1px solid #f0f2f5}.switch-info[data-v-461486f5]{display:flex;flex-direction:column;gap:2px}.switch-title[data-v-461486f5]{font-size:13px;font-weight:600;color:#262626}.switch-subtitle[data-v-461486f5]{font-size:11px;color:#8c8c8c}.featured-images-grid[data-v-461486f5]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.featured-upload-card[data-v-461486f5]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;background:#fafbfc;border:1px dashed #d9d9d9;border-radius:8px;transition:all .2s ease}.featured-upload-card[data-v-461486f5]:hover{border-color:#1c2d56;background:#fff}.featured-label[data-v-461486f5]{font-size:12px;font-weight:500;color:#595959}.gallery-tabs[data-v-461486f5]{margin-bottom:14px}.gallery-segmented[data-v-461486f5]{width:100%;display:flex}.gallery-segmented[data-v-461486f5] .ant-radio-button-wrapper{flex:1;text-align:center;font-size:12px}.gallery-grid[data-v-461486f5]{display:flex;flex-wrap:wrap;gap:10px}.gallery-item[data-v-461486f5]{flex-shrink:0}.add-variant-btn[data-v-461486f5]{background:#1c2d56;border-color:#1c2d56;border-radius:6px;font-size:13px}.add-variant-btn[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}.table-container[data-v-461486f5]{border:1px solid #edf0f5;border-radius:8px;overflow:hidden}.variants-table[data-v-461486f5] .ant-table-thead>tr>th{background:#fafbfc;font-size:12px;font-weight:600;color:#595959}.variant-thumb[data-v-461486f5]{width:42px;height:42px;object-fit:cover;border-radius:6px;border:1px solid #e8e8e8;display:inline-block}.variant-thumb--empty[data-v-461486f5]{display:inline-flex;align-items:center;justify-content:center;background:#fafafa;color:#bfbfbf;border:1px dashed #d9d9d9;font-size:14px}.variant-title-cell[data-v-461486f5]{font-weight:600;color:#262626;font-size:13px}.weight-cell[data-v-461486f5]{color:#1c2d56;font-weight:500;font-size:13px}.wage-cell[data-v-461486f5]{color:#28c76f;font-weight:600;font-size:13px}.qty-badge[data-v-461486f5]{display:inline-block;padding:2px 8px;background:#f5f5f5;border-radius:4px;font-size:12px;color:#595959}.status-tag[data-v-461486f5]{margin:0;border-radius:4px;font-size:11px}.table-actions[data-v-461486f5]{display:inline-flex;align-items:center;gap:4px}.action-btn[data-v-461486f5]{border-radius:4px}.edit-btn[data-v-461486f5]{color:#1c2d56}.edit-btn[data-v-461486f5]:hover{background:#1c2d5614}.delete-btn[data-v-461486f5]{color:#ea5455}.delete-btn[data-v-461486f5]:hover{background:#ea545514}.variants-empty[data-v-461486f5]{padding:24px 16px;text-align:center}.empty-title[data-v-461486f5]{margin:0 0 4px;font-size:14px;font-weight:600;color:#262626}.empty-desc[data-v-461486f5]{margin:0 0 16px;font-size:12px;color:#8c8c8c}.empty-add-btn[data-v-461486f5]{border-radius:6px;color:#1c2d56;border-color:#1c2d56}.form-actions-bar[data-v-461486f5]{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #edf0f5}.submit-btn[data-v-461486f5]{background:#1c2d56;border-color:#1c2d56;height:42px;padding:0 24px;font-size:14px;font-weight:600;border-radius:8px}.submit-btn[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}.cancel-btn[data-v-461486f5]{height:42px;padding:0 20px;font-size:14px;border-radius:8px;color:#595959}.vmodal-header[data-v-461486f5]{display:flex;align-items:center;gap:12px;padding:0 0 10px;border-bottom:1px solid #edf2f7}.vmodal-header__icon[data-v-461486f5]{width:36px;height:36px;border-radius:8px;background:#1c2d5614;color:#1c2d56;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.vmodal-header__text h3[data-v-461486f5]{margin:0;font-size:15px;font-weight:700;color:#1a202c;line-height:1.2}.vmodal-header__text p[data-v-461486f5]{margin:2px 0 0;font-size:11.5px;color:#718096}.vmodal-form[data-v-461486f5]{padding-top:8px}.vmodal-cols[data-v-461486f5]{display:grid;grid-template-columns:1.05fr .95fr;gap:12px;align-items:stretch}.vmodal-col[data-v-461486f5]{display:flex;flex-direction:column;gap:10px}.vmodal-card[data-v-461486f5]{background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:10px 14px}.vmodal-card__head[data-v-461486f5]{font-size:12.5px;font-weight:700;color:#2d3748;margin-bottom:8px;padding-bottom:4px;border-bottom:1px dashed #e2e8f0;position:relative;padding-right:10px}.vmodal-card__head[data-v-461486f5]:before{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);width:3px;height:12px;background:#1c2d56;border-radius:2px}.vmodal-grid[data-v-461486f5]{display:grid;gap:8px}.vmodal-grid--2[data-v-461486f5]{grid-template-columns:repeat(2,minmax(0,1fr))}.vmodal-item[data-v-461486f5]{margin-bottom:6px}.vmodal-item[data-v-461486f5]:last-child{margin-bottom:0}.vmodal-item[data-v-461486f5] .ant-form-item-label{padding-bottom:2px!important}.vmodal-item[data-v-461486f5] .ant-form-item-label>label{font-size:11.5px;font-weight:600;color:#4a5568;height:auto}.vmodal-switches[data-v-461486f5]{display:flex;gap:10px;margin-top:6px;padding-top:6px;border-top:1px dashed #e2e8f0}.vmodal-switch-box[data-v-461486f5]{flex:1;display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;margin:0}.vmodal-switch-box[data-v-461486f5]:hover{border-color:#cbd5e0}.vmodal-switch-label[data-v-461486f5]{font-size:11.5px;font-weight:600;color:#2d3748}.color-opt[data-v-461486f5]{display:flex;align-items:center;gap:6px}.color-opt__dot[data-v-461486f5]{width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.2);display:inline-block}.color-opt__dot--0[data-v-461486f5]{background:#fdfdfd}.color-opt__dot--1[data-v-461486f5]{background:gold}.color-opt__dot--2[data-v-461486f5]{background:#795548}.color-opt__dot--3[data-v-461486f5]{background:#b76e79}.vmodal-picker[data-v-461486f5]{display:flex;flex-wrap:wrap;gap:8px;max-height:125px;overflow-y:auto;padding:2px}.vmodal-picker__item[data-v-461486f5]{position:relative;width:54px;height:54px;padding:2px;border:1.5px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:all .15s ease;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;color:#a0aec0}.vmodal-picker__item[data-v-461486f5]:hover{border-color:#1c2d56}.vmodal-picker__item img[data-v-461486f5]{width:100%;height:100%;object-fit:cover;border-radius:4px;display:block}.vmodal-picker__item.is-active[data-v-461486f5]{border-color:#1c2d56;box-shadow:0 0 0 2px #1c2d5633}.vmodal-picker__check[data-v-461486f5]{position:absolute;top:2px;right:2px;width:14px;height:14px;background:#1c2d56;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px}.vmodal-picker-empty[data-v-461486f5]{font-size:11px;color:#8c8c8c;padding:8px;text-align:center;background:#fff;border:1px dashed #e2e8f0;border-radius:6px}.vmodal-footer[data-v-461486f5]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:10px;margin-top:8px;border-top:1px solid #edf2f7}.vmodal-footer__cancel[data-v-461486f5]{border-radius:6px;min-width:80px}.vmodal-footer__submit[data-v-461486f5]{border-radius:6px;background:#1c2d56;border-color:#1c2d56;min-width:110px;font-weight:600}.vmodal-footer__submit[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}@media (max-width: 1199px){.product-grid-layout[data-v-461486f5]{grid-template-columns:1fr}.layout-sidebar[data-v-461486f5]{order:2}}@media (max-width: 575px){.page-top-header[data-v-461486f5]{flex-direction:column;align-items:flex-start}.header-actions[data-v-461486f5]{width:100%;flex-direction:column}.back-btn[data-v-461486f5],.header-save-btn[data-v-461486f5]{width:100%;justify-content:center}.form-grid-2[data-v-461486f5],.form-grid-3[data-v-461486f5]{grid-template-columns:1fr;gap:12px}.form-section[data-v-461486f5]{padding:16px 14px}.form-actions-bar[data-v-461486f5]{flex-direction:column}.submit-btn[data-v-461486f5],.cancel-btn[data-v-461486f5]{width:100%}} diff --git a/apps/admin-panel/dist/assets/AddProduct-CqaK3I6Q.js b/apps/admin-panel/dist/assets/AddProduct-CqaK3I6Q.js deleted file mode 100644 index 67ae9d7..0000000 --- a/apps/admin-panel/dist/assets/AddProduct-CqaK3I6Q.js +++ /dev/null @@ -1 +0,0 @@ -import{c as a,I as ae,d as $e,n as je,N as Ae,o,b as p,w as s,p as l,h as v,t as $,F as A,e as W,i as P,O as Me,f as w,m as V,s as me,G as Z,U as Ne,r as x,q as H,Q as xe,D as Ue,y as B,_ as Ce,u as Re,x as Ee,k as qe,z as oe,R as Be,a as S,H as De,S as He,P as fe,T as Fe,E as Te,V as Ge,W as ie,l as We}from"./index-DajPj7Ec.js";import{_ as ge}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import{A as ye}from"./AppstoreOutlined-BPqrCmxh.js";var Je={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M518.3 459a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-upload",theme:"outlined"};function be(u){for(var n=1;n[]},purpose:{default:void 0},placeholder:{default:"افزودن تصاویر گالری"}},emits:["update:modelValue"],setup(u,{emit:n}){const r=u,_=n,c=V([]),M=V(!1),N=V(""),J=()=>c.value.filter(d=>d.status==="done"&&d.url).map(d=>d.url),F=me(()=>c.value.filter(d=>d.status==="done").length),Q=me(()=>c.value.filter(d=>d.status==="uploading").length);function X(){_("update:modelValue",J())}je(()=>r.modelValue,d=>{if(JSON.stringify(J())===JSON.stringify(d??[]))return;const i=c.value.filter(f=>f.status==="uploading");c.value=[...(d??[]).map(f=>({uid:f,status:"done",url:f,percent:100})),...i]},{immediate:!0});function ee(d){return d.type.startsWith("image/")?!0:(Z.error(`«${d.name}» تصویر نیست`),Ne.LIST_IGNORE)}let m=0;const R=[];function T(d){return new Promise((i,f)=>{const U=()=>{m++,d().then(i,f).finally(()=>{var L;m--,(L=R.shift())==null||L()})};mc.value.find(i=>i.uid===d);function Y({file:d}){const i=d.uid??`${Date.now()}-${Math.random().toString(36).slice(2,8)}`;c.value.push({uid:i,status:"uploading",preview:URL.createObjectURL(d),percent:0}),T(async()=>{if(!q(i))return null;const f=new FormData;f.append("file",d),r.purpose&&f.append("purpose",r.purpose);const{data:U}=await B.post("file/create",f,{onUploadProgress:L=>{const C=q(i);C&&L.total&&(C.percent=Math.round(L.loaded/L.total*100))}});return U}).then(f=>{const U=q(i);!U||!(f!=null&&f.url)||(U.preview&&URL.revokeObjectURL(U.preview),Object.assign(U,{status:"done",url:f.url,preview:void 0,percent:100}),X())}).catch(f=>{var L,C;const U=((C=(L=f==null?void 0:f.response)==null?void 0:L.data)==null?void 0:C.message)??`بارگذاری «${d.name}» ناموفق بود`;Z.error(U),G(i)})}function G(d){const i=c.value.findIndex(U=>U.uid===d);if(i===-1)return;const[f]=c.value.splice(i,1);f.preview&&URL.revokeObjectURL(f.preview)}function E(d){G(d),X()}function D(d){N.value=d.url??d.preview??"",M.value=!0}return Ae(()=>{c.value.forEach(d=>d.preview&&URL.revokeObjectURL(d.preview))}),(d,i)=>{const f=x("a-upload-dragger"),U=x("a-progress"),L=x("a-modal");return o(),p("div",lt,[a(f,{accept:"image/*",multiple:"","show-upload-list":!1,"custom-request":Y,"before-upload":ee},{default:s(()=>[l("div",at,[a(v(ne),{class:"gallery-upload__icon"}),l("p",st,$(u.placeholder),1),i[1]||(i[1]=l("p",{class:"gallery-upload__hint"}," تصاویر را اینجا بکشید و رها کنید یا کلیک کنید — انتخاب چند تصویر به‌صورت همزمان امکان‌پذیر است ",-1))])]),_:1}),c.value.length?(o(),p("div",ot,[(o(!0),p(A,null,W(c.value,C=>(o(),p("div",{key:C.uid,class:H(["tile",{"is-uploading":C.status==="uploading"}])},[l("img",{src:C.url??C.preview,alt:""},null,8,it),C.status==="uploading"?(o(),p("div",nt,[a(U,{type:"circle",percent:C.percent,size:40,"stroke-width":8,"stroke-color":"#fff","trail-color":"rgba(255,255,255,.3)","show-info":!1},null,8,["percent"])])):(o(),p("div",rt,[l("button",{type:"button",class:"tile__btn",title:"نمایش",onClick:te=>D(C)},[a(v(xe))],8,dt),l("button",{type:"button",class:"tile__btn tile__btn--danger",title:"حذف",onClick:te=>E(C.uid)},[a(v(Ue))],8,ut)]))],2))),128))])):P("",!0),c.value.length?(o(),p("div",ct,[l("span",null,$(F.value)+" تصویر",1),Q.value?(o(),p("span",pt,[a(v(Me)),w(" در حال بارگذاری "+$(Q.value)+" تصویر… ",1)])):P("",!0)])):P("",!0),a(L,{open:M.value,footer:null,onCancel:i[0]||(i[0]=C=>M.value=!1)},{default:s(()=>[l("img",{src:N.value,style:{width:"100%"},alt:""},null,8,_t)]),_:1},8,["open"])])}}}),Oe=Ce(mt,[["__scopeId","data-v-79ab0f30"]]),ft={id:"page-user-view",class:"pf-page product-form-page"},gt={class:"pf-head"},yt={class:"pf-head__text"},bt={class:"pf-layout"},ht={class:"pf-main"},kt={class:"pf-section"},wt={class:"pf-section__head"},Ot={class:"pf-section__icon"},$t={key:0,class:"pf-section"},xt={class:"pf-section__head"},Ut={class:"pf-section__icon"},Ct={key:1,class:"table-scroll"},It=["src"],St={key:1,class:"variant-thumb variant-thumb--empty"},Pt={key:1,class:"pf-table__title"},Vt={key:0},Lt={key:1,class:"muted"},zt={key:0},jt={key:1,class:"muted"},At={key:0},Mt={key:1,class:"muted"},Nt={key:0},Rt={key:1,class:"muted"},Et={key:6,class:"pf-table__ops"},qt={class:"pf-section"},Bt={class:"pf-section__head"},Dt={class:"pf-section__icon"},Ht={class:"pf-side"},Ft={class:"pf-section"},Tt={class:"pf-section__head"},Gt={class:"pf-section__icon"},Wt={class:"pf-section"},Jt={class:"pf-section__head"},Qt={class:"pf-section__icon"},Xt={class:"pf-section"},Yt={class:"pf-section__head"},Zt={class:"pf-section__icon"},Kt={class:"pf-uploads"},el={class:"pf-actions"},tl={class:"pf-actions__hint"},ll={class:"vmodal-header"},al={class:"vmodal-header__icon"},sl={class:"vmodal-header__text"},ol={class:"vmodal-cols"},il={class:"vmodal-col"},nl={class:"vmodal-card"},rl={class:"vmodal-grid vmodal-grid--2"},dl={class:"vmodal-grid vmodal-grid--2"},ul={class:"color-opt"},cl={class:"vmodal-switches"},pl={class:"vmodal-switch-box"},_l={class:"vmodal-switch-box"},vl={class:"vmodal-card"},ml={class:"vmodal-grid vmodal-grid--2"},fl={class:"vmodal-col"},gl={class:"vmodal-card"},yl={key:0,class:"vmodal-picker"},bl=["onClick"],hl=["src"],kl={key:0,class:"vmodal-picker__check"},wl={key:1,class:"vmodal-picker-empty"},Ol={class:"vmodal-card"},$l={class:"vmodal-footer"},xl=$e({__name:"AddProduct",setup(u){const n=qe(),r=We(),_=Re(),c=h=>!!_.hasPermission(h),M=n.params.id,N=V(!1),J=V(void 0),F=V(!1),Q=V([]),X=V([]),ee=V([]),m=oe({title:"",product_code:"",show_type:3,category_id:void 0,brand_id:void 0,ciny_ids:[],body_html:"",is_active:!0,indicator_id:null,mobile_pic:null}),R=oe({}),T=V([]),q=V([]),Y=V([]),G=V([]),E=V([]),D=V(!1),d=V(null),i=oe({__key:"",title:"",grams:void 0,percentage_pay:void 0,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null});function f(h){i.image_id=h?h.id:null,i.image_url=h?h.url:null}const U=[{title:"تصویر",dataIndex:"image",width:68,align:"center"},{title:"عنوان تنوع",dataIndex:"title"},{title:"وزن",dataIndex:"grams",align:"right"},{title:"رنگ",dataIndex:"color",align:"center"},{title:"اجرت",dataIndex:"percentage_pay",align:"right"},{title:"اجرت ریالی",dataIndex:"rial_pay",align:"right"},{title:"موجودی",dataIndex:"qty",align:"center"},{title:"وضعیت",dataIndex:"is_active",align:"center"},{title:"پیش‌سفارش",dataIndex:"is_pre_order",align:"center"},{title:"عملیات",dataIndex:"op",width:84,align:"center"}];function L(h,e){h&&e!==void 0?(d.value=e,Object.assign(i,h)):(d.value=null,Object.assign(i,{__key:`v-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,id:void 0,title:"",grams:void 0,percentage_pay:J.value,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null})),D.value=!0}function C(){if(!i.title){Z.error("عنوان تنوع الزامی است");return}const h=G.value.find(k=>k.id===i.color);i.color_str=h?h.title:null;const e={...i};d.value===null?E.value.push(e):E.value[d.value]=e,D.value=!1}function te(){window.history.length>1?r.back():r.push("/apps/product/list")}function Ie(){return Object.keys(R).forEach(h=>delete R[h]),m.title||(R.title="لطفا مقدار را وارد کنید"),Object.keys(R).length===0}async function ue(){var h,e;if(Ie())try{F.value=!0;const k={...m,cats:m.category_id?[m.category_id]:[],images:T.value,images_mobile:q.value,variants:E.value.map(O=>({id:O.id,title:O.title,grams:O.grams,percentage_pay:O.percentage_pay,qty:O.qty,is_active:O.is_active,is_pre_order:O.is_pre_order,color:O.color??null,rial_pay:O.rial_pay??null,details:O.details||null,description:O.description||null,image_id:O.image_id??null}))};M?await B.put(`product/update/${M}`,k):await B.post("product/create",k),Z.info("اطلاعات با موفقیت به ثبت رسید."),r.push("/apps/product/list")}catch(k){Z.error(((e=(h=k==null?void 0:k.response)==null?void 0:h.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{F.value=!1}}return Ee(async()=>{var h,e,k,O;try{const[g,y,b,z]=await Promise.all([B.get("brand"),B.post("category"),_.isSuperAdmin?B.get("admin/products/collections"):Promise.resolve({data:[]}),B.get("admin/products/colors").catch(()=>({data:[]}))]);Q.value=g.data,X.value=(y.data.rows??y.data).map(j=>({id:j.id,title:j.type_str?`${j.title} (${j.type_str}) `:j.title,type:j.type})),ee.value=b.data,G.value=z.data??[]}catch(g){console.log(g)}if(M)try{const{data:g}=await B.get(`product/show/${M}`);N.value=!!((h=g.accounting)!=null&&h.locked),J.value=((e=g.accounting)==null?void 0:e.sale_wage_percent)!=null?Number(g.accounting.sale_wage_percent):void 0,Object.assign(m,{title:g.title??"",product_code:g.product_code??"",show_type:g.show_type??3,category_id:((k=g.category)==null?void 0:k.id)??void 0,brand_id:((O=g.brand)==null?void 0:O.id)??void 0,ciny_ids:g.ciny_ids??[],body_html:g.body_html??"",is_active:g.is_active??!0,indicator_id:g.indicator_id??null,mobile_pic:g.mobile_pic??null}),T.value=g.images_gallery??[],q.value=g.images_mobile??[],Y.value=g.gallery??[],E.value=(g.variants_all??[]).map((y,b)=>{var z;return{__key:y.id??`v-${b}`,id:y.id,title:y.title,grams:Number(y.grams),percentage_pay:Number(y.percentage_pay),qty:y.qty,is_active:y.is_active,is_pre_order:y.is_pre_order,color:y.color!=null?Number(y.color):void 0,color_str:y.color_str??null,rial_pay:y.rial_pay!=null?Number(y.rial_pay):void 0,details:y.details??"",description:y.description??"",image_id:y.image_id??null,image_url:((z=y.image)==null?void 0:z.url)??null}})}catch(g){console.log(g)}}),(h,e)=>{const k=x("a-button"),O=x("a-tag"),g=x("a-alert"),y=x("a-input"),b=x("a-form-item"),z=x("a-select-option"),j=x("a-select"),ce=x("a-textarea"),Se=x("a-empty"),pe=x("a-tooltip"),Pe=x("a-table"),se=x("a-switch"),_e=x("a-form"),Ve=x("a-spin"),le=x("a-input-number"),Le=x("a-modal");return o(),p("div",ft,[a(Ve,{spinning:F.value},{default:s(()=>[l("header",gt,[a(k,{class:"pf-head__back",shape:"circle",onClick:te},{icon:s(()=>[a(v(Be))]),_:1}),l("div",yt,[l("h1",null,$(v(M)?"ویرایش محصول":"افزودن محصول"),1),e[27]||(e[27]=l("p",null,"اطلاعات، تنوع‌ها و تصاویر محصول را تکمیل کنید.",-1))]),v(M)?(o(),S(O,{key:0,color:m.is_active?"green":"default",class:"pf-head__status"},{default:s(()=>[w($(m.is_active?"فعال":"غیر فعال"),1)]),_:1},8,["color"])):P("",!0)]),a(_e,{layout:"vertical",class:"pf-form",onSubmit:De(ue,["prevent"])},{default:s(()=>[l("div",bt,[l("div",ht,[l("section",kt,[l("div",wt,[l("span",Ot,[a(v(He))]),e[28]||(e[28]=l("div",null,[l("h3",null,"اطلاعات پایه"),l("p",null,"نام، کد و توضیحات محصول")],-1))]),N.value?(o(),S(g,{key:0,class:"pf-alert",type:"info","show-icon":"",message:"این محصول به نرم‌افزار حسابداری متصل است؛ نام و کد محصول از آنجا خوانده می‌شود."})):P("",!0),a(b,{label:"نام محصول",required:"","validate-status":R.title?"error":"",help:R.title||(N.value?"از نرم‌افزار حسابداری — برای تغییر، آن را در حسابداری ویرایش کنید":void 0)},{default:s(()=>[a(y,{value:m.title,"onUpdate:value":e[0]||(e[0]=t=>m.title=t),placeholder:"مثلاً: گردنبند طلا",disabled:N.value},null,8,["value","disabled"])]),_:1},8,["validate-status","help"]),l("div",{class:H({"pf-grid-2":v(_).isSuperAdmin})},[a(b,{label:"کد محصول",class:H({"mb-0":!v(_).isSuperAdmin}),help:N.value?"از نرم‌افزار حسابداری":void 0},{default:s(()=>[a(y,{value:m.product_code,"onUpdate:value":e[1]||(e[1]=t=>m.product_code=t),disabled:N.value},null,8,["value","disabled"])]),_:1},8,["class","help"]),v(_).isSuperAdmin?(o(),S(b,{key:0,label:"نوع نمایش"},{default:s(()=>[a(j,{value:m.show_type,"onUpdate:value":e[2]||(e[2]=t=>m.show_type=t)},{default:s(()=>[a(z,{value:1},{default:s(()=>[...e[29]||(e[29]=[w("سایت",-1)])]),_:1}),a(z,{value:2},{default:s(()=>[...e[30]||(e[30]=[w("گوشی",-1)])]),_:1}),a(z,{value:3},{default:s(()=>[...e[31]||(e[31]=[w("سایت و گوشی",-1)])]),_:1})]),_:1},8,["value"])]),_:1})):P("",!0)],2),v(_).isSuperAdmin?(o(),S(b,{key:1,label:"شرح محصول (سایت)",class:"mb-0"},{default:s(()=>[a(ce,{value:m.body_html,"onUpdate:value":e[3]||(e[3]=t=>m.body_html=t),"auto-size":{minRows:5,maxRows:12},placeholder:"توضیحات محصول برای نمایش در سایت"},null,8,["value"])]),_:1})):P("",!0)]),c("product.list.variants")?(o(),p("section",$t,[l("div",xt,[l("span",Ut,[a(v(ye))]),e[33]||(e[33]=l("div",null,[l("h3",null,"تنوع ها"),l("p",null,"وزن، اجرت و موجودی هر مدل از محصول")],-1)),c("product.list.variants.add")?(o(),S(k,{key:0,type:"primary",class:"pf-section__action",onClick:e[4]||(e[4]=t=>L())},{icon:s(()=>[a(v(fe))]),default:s(()=>[e[32]||(e[32]=w(" افزودن تنوع ",-1))]),_:1})):P("",!0)]),E.value.length?(o(),p("div",Ct,[a(Pe,{class:"pf-table",columns:U,"data-source":E.value,pagination:!1,scroll:{x:"max-content"},size:"middle","row-key":"__key"},{bodyCell:s(({column:t,record:I,index:ve})=>[t.dataIndex==="image"?(o(),p(A,{key:0},[I.image_url?(o(),p("img",{key:0,src:I.image_url,class:"variant-thumb",alt:""},null,8,It)):(o(),p("span",St,[a(v(K))]))],64)):t.dataIndex==="title"?(o(),p("span",Pt,$(I.title),1)):t.dataIndex==="grams"?(o(),p(A,{key:2},[I.grams!=null?(o(),p("span",Vt,[w($(I.grams)+" ",1),e[35]||(e[35]=l("small",{class:"muted"},"گرم",-1))])):(o(),p("span",Lt,"—"))],64)):t.dataIndex==="color"?(o(),p(A,{key:3},[I.color_str?(o(),p("span",zt,$(I.color_str),1)):(o(),p("span",jt,"—"))],64)):t.dataIndex==="percentage_pay"?(o(),p(A,{key:4},[I.percentage_pay!=null?(o(),p("span",At,[w($(I.percentage_pay),1),e[36]||(e[36]=l("small",{class:"muted"},"٪",-1))])):(o(),p("span",Mt,"—"))],64)):t.dataIndex==="rial_pay"?(o(),p(A,{key:5},[I.rial_pay!=null?(o(),p("span",Nt,[w($(Number(I.rial_pay).toLocaleString("fa-IR"))+" ",1),e[37]||(e[37]=l("small",{class:"muted"},"ریال",-1))])):(o(),p("span",Rt,"—"))],64)):t.dataIndex==="op"?(o(),p("div",Et,[c("product.list.variants.edit")?(o(),S(pe,{key:0,title:"ویرایش"},{default:s(()=>[a(k,{type:"text",size:"small",onClick:ze=>L(I,ve)},{icon:s(()=>[a(v(Te),{class:"text-primary"})]),_:1},8,["onClick"])]),_:2},1024)):P("",!0),c("product.list.variants.remove")?(o(),S(pe,{key:1,title:"حذف"},{default:s(()=>[a(k,{type:"text",size:"small",danger:"",onClick:ze=>E.value.splice(ve,1)},{icon:s(()=>[a(v(Ue))]),_:1},8,["onClick"])]),_:2},1024)):P("",!0)])):t.dataIndex==="is_active"?(o(),S(O,{key:7,color:I.is_active?"green":"red"},{default:s(()=>[w($(I.is_active?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="is_pre_order"?(o(),S(O,{key:8,color:I.is_pre_order?"blue":""},{default:s(()=>[w($(I.is_pre_order?"بله":"خیر"),1)]),_:2},1032,["color"])):P("",!0)]),_:1},8,["data-source"])])):(o(),S(Se,{key:0,image:v(Fe).PRESENTED_IMAGE_SIMPLE,description:"هنوز تنوعی برای این محصول ثبت نشده است."},{default:s(()=>[c("product.list.variants.add")?(o(),S(k,{key:0,onClick:e[5]||(e[5]=t=>L())},{icon:s(()=>[a(v(fe))]),default:s(()=>[e[34]||(e[34]=w(" افزودن اولین تنوع ",-1))]),_:1})):P("",!0)]),_:1},8,["image"]))])):P("",!0),l("section",qt,[l("div",Bt,[l("span",Dt,[a(v(K))]),l("div",null,[e[38]||(e[38]=l("h3",null,"گالری تصاویر",-1)),l("p",null,$(v(_).isSuperAdmin?"تصاویر جداگانه برای نمایش در سایت و اپلیکیشن موبایل":"تصاویر نمایش در اپلیکیشن موبایل"),1)])]),v(_).isSuperAdmin?(o(),p(A,{key:0},[a(b,{label:"گالری تصاویر سایت"},{default:s(()=>[a(Oe,{modelValue:T.value,"onUpdate:modelValue":e[6]||(e[6]=t=>T.value=t),purpose:"product.gallery",placeholder:"افزودن تصاویر گالری سایت"},null,8,["modelValue"])]),_:1}),e[39]||(e[39]=l("div",{class:"pf-divider"},null,-1))],64)):P("",!0),a(b,{label:"گالری تصاویر موبایل",class:"mb-0"},{default:s(()=>[a(Oe,{modelValue:q.value,"onUpdate:modelValue":e[7]||(e[7]=t=>q.value=t),purpose:"product.gallery_mobile",placeholder:"افزودن تصاویر گالری موبایل"},null,8,["modelValue"])]),_:1})])]),l("aside",Ht,[l("section",Ft,[l("div",Tt,[l("span",Gt,[a(v(xe))]),e[40]||(e[40]=l("div",null,[l("h3",null,"وضعیت نمایش"),l("p",null,"نمایش یا عدم نمایش محصول برای مشتریان")],-1))]),a(b,{label:"نمایش محصول",extra:m.is_active?"محصول برای مشتریان قابل مشاهده است":"محصول پنهان است",class:"mb-0"},{default:s(()=>[a(se,{checked:m.is_active,"onUpdate:checked":e[8]||(e[8]=t=>m.is_active=t)},null,8,["checked"])]),_:1},8,["extra"])]),l("section",Wt,[l("div",Jt,[l("span",Qt,[a(v(de))]),e[41]||(e[41]=l("div",null,[l("h3",null,"دسته‌بندی"),l("p",null,"دسته، برند و سینی‌های محصول")],-1))]),a(b,{label:"دسته بندی"},{default:s(()=>[a(j,{value:m.category_id,"onUpdate:value":e[9]||(e[9]=t=>m.category_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(o(!0),p(A,null,W(X.value,t=>(o(),S(z,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w($(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),a(b,{label:"برند",class:H({"mb-0":!v(_).isSuperAdmin})},{default:s(()=>[a(j,{value:m.brand_id,"onUpdate:value":e[10]||(e[10]=t=>m.brand_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(o(!0),p(A,null,W(Q.value,t=>(o(),S(z,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w($(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1},8,["class"]),v(_).isSuperAdmin?(o(),S(b,{key:0,label:"سینی ها",class:"mb-0"},{default:s(()=>[a(j,{value:m.ciny_ids,"onUpdate:value":e[11]||(e[11]=t=>m.ciny_ids=t),mode:"multiple","allow-clear":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(o(!0),p(A,null,W(ee.value,t=>(o(),S(z,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w($(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1})):P("",!0)]),l("section",Xt,[l("div",Yt,[l("span",Zt,[a(v(re))]),e[42]||(e[42]=l("div",null,[l("h3",null,"تصویر شاخص"),l("p",null,"تصویر اصلی در لیست محصولات")],-1))]),l("div",Kt,[v(_).isSuperAdmin?(o(),S(b,{key:0,label:"سایت",class:"mb-0"},{default:s(()=>[a(ge,{modelValue:m.indicator_id,"onUpdate:modelValue":e[12]||(e[12]=t=>m.indicator_id=t),purpose:"product.indicator",placeholder:"تصویر شاخص"},null,8,["modelValue"])]),_:1})):P("",!0),a(b,{label:"موبایل",class:"mb-0"},{default:s(()=>[a(ge,{modelValue:m.mobile_pic,"onUpdate:modelValue":e[13]||(e[13]=t=>m.mobile_pic=t),purpose:"product.indicator_mobile",placeholder:"تصویر شاخص موبایل"},null,8,["modelValue"])]),_:1})])])])]),l("div",el,[l("span",tl,[a(v(Ge)),e[43]||(e[43]=w(" تغییرات تنوع‌ها و تصاویر پس از «ثبت اطلاعات» ذخیره می‌شوند. ",-1))]),a(k,{onClick:te},{default:s(()=>[...e[44]||(e[44]=[w("انصراف",-1)])]),_:1}),a(k,{type:"primary",class:"form-submit",loading:F.value,onClick:ue},{icon:s(()=>[a(v(ie))]),default:s(()=>[e[45]||(e[45]=w(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"]),a(Le,{open:D.value,"onUpdate:open":e[26]||(e[26]=t=>D.value=t),width:860,"wrap-class-name":"pf-variant-modal",footer:null,"destroy-on-close":!0,centered:""},{title:s(()=>[l("div",ll,[l("div",al,[a(v(ye))]),l("div",sl,[l("h3",null,$(d.value===null?"افزودن تنوع جدید":"ویرایش تنوع"),1),e[46]||(e[46]=l("p",null,"مشخصات، قیمت‌گذاری و تصویر این تنوع را وارد کنید.",-1))])])]),default:s(()=>[a(_e,{layout:"vertical",class:"vmodal-form"},{default:s(()=>[l("div",ol,[l("div",il,[l("div",nl,[e[49]||(e[49]=l("div",{class:"vmodal-card__head"},"مشخصات اصلی",-1)),l("div",rl,[a(b,{label:"عنوان تنوع",required:"",class:"vmodal-item"},{default:s(()=>[a(y,{value:i.title,"onUpdate:value":e[14]||(e[14]=t=>i.title=t),placeholder:"مثلاً: ۵ گرمی"},null,8,["value"])]),_:1}),a(b,{label:"وزن خام",class:"vmodal-item"},{default:s(()=>[a(le,{value:i.grams,"onUpdate:value":e[15]||(e[15]=t=>i.grams=t),class:"w-full",step:.001,"addon-after":"گرم",placeholder:"۰.۰۰۰"},null,8,["value"])]),_:1})]),l("div",dl,[a(b,{label:"تعداد موجودی",class:"vmodal-item"},{default:s(()=>[a(le,{value:i.qty,"onUpdate:value":e[16]||(e[16]=t=>i.qty=t),class:"w-full",min:0,placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"رنگ طلا",class:"vmodal-item"},{default:s(()=>[a(j,{value:i.color,"onUpdate:value":e[17]||(e[17]=t=>i.color=t),placeholder:"انتخاب رنگ","allow-clear":""},{default:s(()=>[(o(!0),p(A,null,W(G.value,t=>(o(),S(z,{key:t.id,value:t.id},{default:s(()=>[l("div",ul,[l("span",{class:H(["color-opt__dot",`color-opt__dot--${t.id}`])},null,2),l("span",null,$(t.title),1)])]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),l("div",cl,[l("label",pl,[e[47]||(e[47]=l("span",{class:"vmodal-switch-label"},"فعال برای فروش",-1)),a(se,{checked:i.is_active,"onUpdate:checked":e[18]||(e[18]=t=>i.is_active=t),size:"small"},null,8,["checked"])]),l("label",_l,[e[48]||(e[48]=l("span",{class:"vmodal-switch-label"},"پیش‌سفارش",-1)),a(se,{checked:i.is_pre_order,"onUpdate:checked":e[19]||(e[19]=t=>i.is_pre_order=t),size:"small"},null,8,["checked"])])])]),l("div",vl,[e[50]||(e[50]=l("div",{class:"vmodal-card__head"},"اجرت و قیمت‌گذاری",-1)),l("div",ml,[a(b,{label:"اجرت درصدی",class:"vmodal-item"},{default:s(()=>[a(le,{value:i.percentage_pay,"onUpdate:value":e[20]||(e[20]=t=>i.percentage_pay=t),class:"w-full",step:.1,"addon-after":"٪",placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"اجرت ریالی",class:"vmodal-item"},{default:s(()=>[a(le,{value:i.rial_pay,"onUpdate:value":e[21]||(e[21]=t=>i.rial_pay=t),class:"w-full",step:5e4,"addon-after":"ریال",placeholder:"۰",formatter:t=>t?`${t}`.replace(/\B(?=(\d{3})+(?!\d))/g,","):"",parser:t=>t?t.replace(/,/g,""):""},null,8,["value","formatter","parser"])]),_:1})])])]),l("div",fl,[l("div",gl,[e[52]||(e[52]=l("div",{class:"vmodal-card__head"},"تصویر اختصاصی تنوع",-1)),Y.value.length?(o(),p("div",yl,[l("button",{type:"button",class:H(["vmodal-picker__item",{"is-active":!i.image_id}]),title:"بدون تصویر",onClick:e[22]||(e[22]=t=>f(null))},[a(v(K)),e[51]||(e[51]=l("span",null,"بدون عکس",-1))],2),(o(!0),p(A,null,W(Y.value,t=>(o(),p("button",{key:t.id,type:"button",class:H(["vmodal-picker__item",{"is-active":i.image_id===t.id}]),onClick:I=>f(t)},[l("img",{src:t.url,alt:""},null,8,hl),i.image_id===t.id?(o(),p("div",kl,[a(v(ie))])):P("",!0)],10,bl))),128))])):(o(),p("div",wl," تصویری در گالری ثبت نشده است (می‌توانید در بخش گالری محصول تصویر بارگذاری کنید). "))]),l("div",Ol,[e[53]||(e[53]=l("div",{class:"vmodal-card__head"},"توضیحات تکمیلی",-1)),a(b,{label:"توضیح مختصر",class:"vmodal-item"},{default:s(()=>[a(y,{value:i.details,"onUpdate:value":e[23]||(e[23]=t=>i.details=t),placeholder:"مثلاً: طراحی مات با تراش برلیان"},null,8,["value"])]),_:1}),a(b,{label:"توضیحات کامل",class:"vmodal-item mb-0"},{default:s(()=>[a(ce,{value:i.description,"onUpdate:value":e[24]||(e[24]=t=>i.description=t),style:{height:"95px","min-height":"95px","max-height":"95px",resize:"none"},placeholder:"ویژگی‌های خاص این تنوع..."},null,8,["value"])]),_:1})])])]),l("div",$l,[a(k,{class:"vmodal-footer__cancel",onClick:e[25]||(e[25]=t=>D.value=!1)},{default:s(()=>[...e[54]||(e[54]=[w(" انصراف ",-1)])]),_:1}),a(k,{type:"primary",class:"vmodal-footer__submit",onClick:C},{icon:s(()=>[a(v(ie))]),default:s(()=>[w(" "+$(d.value===null?"افزودن تنوع":"ذخیره تغییرات"),1)]),_:1})])]),_:1})]),_:1},8,["open"])])}}}),Sl=Ce(xl,[["__scopeId","data-v-4d03854e"]]);export{Sl as default}; diff --git a/apps/admin-panel/dist/assets/AddProduct-DqeCa5en.js b/apps/admin-panel/dist/assets/AddProduct-DqeCa5en.js new file mode 100644 index 0000000..39f5040 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddProduct-DqeCa5en.js @@ -0,0 +1 @@ +import{c as a,I as ne,d as Ue,n as je,N as ze,o as i,b as d,w as s,p as l,h as _,t as x,F as j,e as W,i as P,O as Re,f as w,m as V,s as fe,G as K,U as Me,r as $,q as J,Q as xe,D as $e,y as q,_ as Ce,u as Ne,x as Ee,k as qe,z as se,R as Be,a as S,H as De,S as Fe,P as ge,T as Te,E as He,V as Ge,W as oe,l as We}from"./index-eLNLLYwC.js";import{_ as ye}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import{A as be}from"./AppstoreOutlined-D5DMeuPl.js";import{P as ie}from"./PictureOutlined-BQUWPT2c.js";var Je={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M518.3 459a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-upload",theme:"outlined"};function he(v){for(var u=1;u[]},purpose:{default:void 0},placeholder:{default:"افزودن تصاویر گالری"}},emits:["update:modelValue"],setup(v,{emit:u}){const r=v,m=u,c=V([]),z=V(!1),R=V(""),Q=()=>c.value.filter(n=>n.status==="done"&&n.url).map(n=>n.url),F=fe(()=>c.value.filter(n=>n.status==="done").length),X=fe(()=>c.value.filter(n=>n.status==="uploading").length);function Y(){m("update:modelValue",Q())}je(()=>r.modelValue,n=>{if(JSON.stringify(Q())===JSON.stringify(n??[]))return;const g=c.value.filter(o=>o.status==="uploading");c.value=[...(n??[]).map(o=>({uid:o,status:"done",url:o,percent:100})),...g]},{immediate:!0});function ee(n){return n.type.startsWith("image/")?!0:(K.error(`«${n.name}» تصویر نیست`),Me.LIST_IGNORE)}let T=0;const p=[];function B(n){return new Promise((g,o)=>{const C=()=>{T++,n().then(g,o).finally(()=>{var A;T--,(A=p.shift())==null||A()})};Tc.value.find(g=>g.uid===n);function H({file:n}){const g=n.uid??`${Date.now()}-${Math.random().toString(36).slice(2,8)}`;c.value.push({uid:g,status:"uploading",preview:URL.createObjectURL(n),percent:0}),B(async()=>{if(!D(g))return null;const o=new FormData;o.append("file",n),r.purpose&&o.append("purpose",r.purpose);const{data:C}=await q.post("file/create",o,{onUploadProgress:A=>{const O=D(g);O&&A.total&&(O.percent=Math.round(A.loaded/A.total*100))}});return C}).then(o=>{const C=D(g);!C||!(o!=null&&o.url)||(C.preview&&URL.revokeObjectURL(C.preview),Object.assign(C,{status:"done",url:o.url,preview:void 0,percent:100}),Y())}).catch(o=>{var A,O;const C=((O=(A=o==null?void 0:o.response)==null?void 0:A.data)==null?void 0:O.message)??`بارگذاری «${n.name}» ناموفق بود`;K.error(C),G(g)})}function G(n){const g=c.value.findIndex(C=>C.uid===n);if(g===-1)return;const[o]=c.value.splice(g,1);o.preview&&URL.revokeObjectURL(o.preview)}function Z(n){G(n),Y()}function M(n){R.value=n.url??n.preview??"",z.value=!0}return ze(()=>{c.value.forEach(n=>n.preview&&URL.revokeObjectURL(n.preview))}),(n,g)=>{const o=$("a-upload-dragger"),C=$("a-progress"),A=$("a-modal");return i(),d("div",et,[a(o,{accept:"image/*",multiple:"","show-upload-list":!1,"custom-request":H,"before-upload":ee},{default:s(()=>[l("div",tt,[a(_(de),{class:"gallery-upload__icon"}),l("p",lt,x(v.placeholder),1),g[1]||(g[1]=l("p",{class:"gallery-upload__hint"}," تصاویر را اینجا بکشید و رها کنید یا کلیک کنید — انتخاب چند تصویر به‌صورت همزمان امکان‌پذیر است ",-1))])]),_:1}),c.value.length?(i(),d("div",at,[(i(!0),d(j,null,W(c.value,O=>(i(),d("div",{key:O.uid,class:J(["tile",{"is-uploading":O.status==="uploading"}])},[l("img",{src:O.url??O.preview,alt:""},null,8,st),O.status==="uploading"?(i(),d("div",ot,[a(C,{type:"circle",percent:O.percent,size:40,"stroke-width":8,"stroke-color":"#fff","trail-color":"rgba(255,255,255,.3)","show-info":!1},null,8,["percent"])])):(i(),d("div",it,[l("button",{type:"button",class:"tile__btn",title:"نمایش",onClick:le=>M(O)},[a(_(xe))],8,nt),l("button",{type:"button",class:"tile__btn tile__btn--danger",title:"حذف",onClick:le=>Z(O.uid)},[a(_($e))],8,dt)]))],2))),128))])):P("",!0),c.value.length?(i(),d("div",rt,[l("span",null,x(F.value)+" تصویر",1),X.value?(i(),d("span",ut,[a(_(Re)),w(" در حال بارگذاری "+x(X.value)+" تصویر… ",1)])):P("",!0)])):P("",!0),a(A,{open:z.value,footer:null,onCancel:g[0]||(g[0]=O=>z.value=!1)},{default:s(()=>[l("img",{src:R.value,style:{width:"100%"},alt:""},null,8,ct)]),_:1},8,["open"])])}}}),Oe=Ce(_t,[["__scopeId","data-v-79ab0f30"]]),vt={id:"page-user-view",class:"pf-page product-form-page"},mt={class:"pf-head"},ft={class:"pf-head__text"},gt={class:"pf-layout"},yt={class:"pf-main"},bt={class:"pf-section"},ht={class:"pf-section__head"},kt={class:"pf-section__icon"},wt={key:0,class:"pf-section"},Ot={class:"pf-section__head"},Ut={class:"pf-section__icon"},xt={key:1,class:"table-scroll"},$t=["src"],Ct={key:1,class:"variant-thumb variant-thumb--empty"},It={key:1,class:"pf-table__title"},St={key:0},Pt={key:1,class:"muted"},Vt={key:0},At={key:1,class:"muted"},Lt={key:0},jt={key:1,class:"muted"},zt={key:0},Rt={key:1,class:"muted"},Mt={key:6,class:"pf-table__ops"},Nt={class:"pf-section"},Et={class:"pf-section__head"},qt={class:"pf-section__icon"},Bt={class:"pf-side"},Dt={class:"pf-section"},Ft={class:"pf-section__head"},Tt={class:"pf-section__icon"},Ht={class:"pf-section"},Gt={class:"pf-section__head"},Wt={class:"pf-section__icon"},Jt={class:"pf-section"},Qt={class:"pf-section__head"},Xt={class:"pf-section__icon"},Yt={class:"pf-uploads"},Zt={class:"pf-actions"},Kt={class:"pf-actions__hint"},el={class:"vmodal-header"},tl={class:"vmodal-header__icon"},ll={class:"vmodal-header__text"},al={class:"vmodal-cols"},sl={class:"vmodal-col"},ol={class:"vmodal-card"},il={class:"vmodal-grid vmodal-grid--2"},nl={class:"vmodal-grid vmodal-grid--2"},dl={class:"color-opt"},rl={class:"vmodal-switches"},ul={class:"vmodal-switch-box"},cl={class:"vmodal-switch-box"},pl={class:"vmodal-card"},_l={class:"vmodal-grid vmodal-grid--2"},vl={class:"vmodal-col"},ml={class:"vmodal-card"},fl={key:0,class:"vmodal-picker"},gl=["onClick"],yl=["src"],bl={key:0,class:"vmodal-picker__check"},hl={key:1,class:"vmodal-picker-empty"},kl={class:"vmodal-card"},wl={class:"vmodal-footer"},Ol=Ue({__name:"AddProduct",setup(v){const u=qe(),r=We(),m=Ne(),c=h=>!!m.hasPermission(h),z=u.params.id,R=V(!1),Q=V(void 0),F=V(!1),X=V([]),Y=V([]),ee=V([]),T=V([]),p=se({title:"",product_code:"",show_type:3,category_id:void 0,brand_id:void 0,ciny_ids:[],tags:[],body_html:"",is_active:!0,indicator_id:null,mobile_pic:null}),B=se({}),D=V([]),H=V([]),G=V([]),Z=V([]),M=V([]),n=V(!1),g=V(null),o=se({__key:"",title:"",grams:void 0,percentage_pay:void 0,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null});function C(h){o.image_id=h?h.id:null,o.image_url=h?h.url:null}const A=[{title:"تصویر",dataIndex:"image",width:68,align:"center"},{title:"عنوان تنوع",dataIndex:"title"},{title:"وزن",dataIndex:"grams",align:"right"},{title:"رنگ",dataIndex:"color",align:"center"},{title:"اجرت",dataIndex:"percentage_pay",align:"right"},{title:"اجرت ریالی",dataIndex:"rial_pay",align:"right"},{title:"موجودی",dataIndex:"qty",align:"center"},{title:"وضعیت",dataIndex:"is_active",align:"center"},{title:"پیش‌سفارش",dataIndex:"is_pre_order",align:"center"},{title:"عملیات",dataIndex:"op",width:84,align:"center"}];function O(h,e){h&&e!==void 0?(g.value=e,Object.assign(o,h)):(g.value=null,Object.assign(o,{__key:`v-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,id:void 0,title:"",grams:void 0,percentage_pay:Q.value,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null})),n.value=!0}function le(){if(!o.title){K.error("عنوان تنوع الزامی است");return}const h=Z.value.find(k=>k.id===o.color);o.color_str=h?h.title:null;const e={...o};g.value===null?M.value.push(e):M.value[g.value]=e,n.value=!1}function ce(){window.history.length>1?r.back():r.push("/apps/product/list")}function Ie(){return Object.keys(B).forEach(h=>delete B[h]),p.title||(B.title="لطفا مقدار را وارد کنید"),Object.keys(B).length===0}async function pe(){var h,e;if(Ie())try{F.value=!0;const k={...p,cats:p.category_id?[p.category_id]:[],images:D.value,images_mobile:H.value,variants:M.value.map(U=>({id:U.id,title:U.title,grams:U.grams,percentage_pay:U.percentage_pay,qty:U.qty,is_active:U.is_active,is_pre_order:U.is_pre_order,color:U.color??null,rial_pay:U.rial_pay??null,details:U.details||null,description:U.description||null,image_id:U.image_id??null}))};z?await q.put(`product/update/${z}`,k):await q.post("product/create",k),K.info("اطلاعات با موفقیت به ثبت رسید."),r.push("/apps/product/list")}catch(k){K.error(((e=(h=k==null?void 0:k.response)==null?void 0:h.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{F.value=!1}}return Ee(async()=>{var h,e,k,U;try{const[f,y,b,L,N]=await Promise.all([q.get("brand"),q.post("category"),m.isSuperAdmin?q.get("admin/products/collections"):Promise.resolve({data:[]}),q.get("admin/products/colors").catch(()=>({data:[]})),q.get("const/__list__tags").catch(()=>({data:[]}))]);X.value=f.data,Y.value=(y.data.rows??y.data).map(E=>({id:E.id,title:E.type_str?`${E.title} (${E.type_str}) `:E.title,type:E.type})),ee.value=b.data,Z.value=L.data??[],T.value=Array.isArray(N.data)?N.data.map(String):[]}catch(f){console.log(f)}if(z)try{const{data:f}=await q.get(`product/show/${z}`);R.value=!!((h=f.accounting)!=null&&h.locked),Q.value=((e=f.accounting)==null?void 0:e.sale_wage_percent)!=null?Number(f.accounting.sale_wage_percent):void 0,Object.assign(p,{title:f.title??"",product_code:f.product_code??"",show_type:f.show_type??3,category_id:((k=f.category)==null?void 0:k.id)??void 0,brand_id:((U=f.brand)==null?void 0:U.id)??void 0,ciny_ids:f.ciny_ids??[],tags:Array.isArray(f.tags)?f.tags:[],body_html:f.body_html??"",is_active:f.is_active??!0,indicator_id:f.indicator_id??null,mobile_pic:f.mobile_pic??null}),D.value=f.images_gallery??[],H.value=f.images_mobile??[],G.value=f.gallery??[],M.value=(f.variants_all??[]).map((y,b)=>{var L;return{__key:y.id??`v-${b}`,id:y.id,title:y.title,grams:Number(y.grams),percentage_pay:Number(y.percentage_pay),qty:y.qty,is_active:y.is_active,is_pre_order:y.is_pre_order,color:y.color!=null?Number(y.color):void 0,color_str:y.color_str??null,rial_pay:y.rial_pay!=null?Number(y.rial_pay):void 0,details:y.details??"",description:y.description??"",image_id:y.image_id??null,image_url:((L=y.image)==null?void 0:L.url)??null}})}catch(f){console.log(f)}}),(h,e)=>{const k=$("a-button"),U=$("a-tag"),f=$("a-alert"),y=$("a-input"),b=$("a-form-item"),L=$("a-select-option"),N=$("a-select"),E=$("a-textarea"),Se=$("a-empty"),_e=$("a-tooltip"),Pe=$("a-table"),ae=$("a-switch"),ve=$("a-form"),Ve=$("a-spin"),te=$("a-input-number"),Ae=$("a-modal");return i(),d("div",vt,[a(Ve,{spinning:F.value},{default:s(()=>[l("header",mt,[a(k,{class:"pf-head__back",shape:"circle",onClick:ce},{icon:s(()=>[a(_(Be))]),_:1}),l("div",ft,[l("h1",null,x(_(z)?"ویرایش محصول":"افزودن محصول"),1),e[28]||(e[28]=l("p",null,"اطلاعات، تنوع‌ها و تصاویر محصول را تکمیل کنید.",-1))]),_(z)?(i(),S(U,{key:0,color:p.is_active?"green":"default",class:"pf-head__status"},{default:s(()=>[w(x(p.is_active?"فعال":"غیر فعال"),1)]),_:1},8,["color"])):P("",!0)]),a(ve,{layout:"vertical",class:"pf-form",onSubmit:De(pe,["prevent"])},{default:s(()=>[l("div",gt,[l("div",yt,[l("section",bt,[l("div",ht,[l("span",kt,[a(_(Fe))]),e[29]||(e[29]=l("div",null,[l("h3",null,"اطلاعات پایه"),l("p",null,"نام، کد و توضیحات محصول")],-1))]),R.value?(i(),S(f,{key:0,class:"pf-alert",type:"info","show-icon":"",message:"این محصول به نرم‌افزار حسابداری متصل است؛ نام و کد محصول از آنجا خوانده می‌شود."})):P("",!0),a(b,{label:"نام محصول",required:"","validate-status":B.title?"error":"",help:B.title||(R.value?"از نرم‌افزار حسابداری — برای تغییر، آن را در حسابداری ویرایش کنید":void 0)},{default:s(()=>[a(y,{value:p.title,"onUpdate:value":e[0]||(e[0]=t=>p.title=t),placeholder:"مثلاً: گردنبند طلا",disabled:R.value},null,8,["value","disabled"])]),_:1},8,["validate-status","help"]),l("div",{class:J({"pf-grid-2":_(m).isSuperAdmin})},[a(b,{label:"کد محصول",class:J({"mb-0":!_(m).isSuperAdmin}),help:R.value?"از نرم‌افزار حسابداری":void 0},{default:s(()=>[a(y,{value:p.product_code,"onUpdate:value":e[1]||(e[1]=t=>p.product_code=t),disabled:R.value},null,8,["value","disabled"])]),_:1},8,["class","help"]),_(m).isSuperAdmin?(i(),S(b,{key:0,label:"نوع نمایش"},{default:s(()=>[a(N,{value:p.show_type,"onUpdate:value":e[2]||(e[2]=t=>p.show_type=t)},{default:s(()=>[a(L,{value:1},{default:s(()=>[...e[30]||(e[30]=[w("سایت",-1)])]),_:1}),a(L,{value:2},{default:s(()=>[...e[31]||(e[31]=[w("گوشی",-1)])]),_:1}),a(L,{value:3},{default:s(()=>[...e[32]||(e[32]=[w("سایت و گوشی",-1)])]),_:1})]),_:1},8,["value"])]),_:1})):P("",!0)],2),_(m).isSuperAdmin?(i(),S(b,{key:1,label:"شرح محصول (سایت)",class:"mb-0"},{default:s(()=>[a(E,{value:p.body_html,"onUpdate:value":e[3]||(e[3]=t=>p.body_html=t),"auto-size":{minRows:5,maxRows:12},placeholder:"توضیحات محصول برای نمایش در سایت"},null,8,["value"])]),_:1})):P("",!0)]),c("product.list.variants")?(i(),d("section",wt,[l("div",Ot,[l("span",Ut,[a(_(be))]),e[34]||(e[34]=l("div",null,[l("h3",null,"تنوع ها"),l("p",null,"وزن، اجرت و موجودی هر مدل از محصول")],-1)),c("product.list.variants.add")?(i(),S(k,{key:0,type:"primary",class:"pf-section__action",onClick:e[4]||(e[4]=t=>O())},{icon:s(()=>[a(_(ge))]),default:s(()=>[e[33]||(e[33]=w(" افزودن تنوع ",-1))]),_:1})):P("",!0)]),M.value.length?(i(),d("div",xt,[a(Pe,{class:"pf-table",columns:A,"data-source":M.value,pagination:!1,scroll:{x:"max-content"},size:"middle","row-key":"__key"},{bodyCell:s(({column:t,record:I,index:me})=>[t.dataIndex==="image"?(i(),d(j,{key:0},[I.image_url?(i(),d("img",{key:0,src:I.image_url,class:"variant-thumb",alt:""},null,8,$t)):(i(),d("span",Ct,[a(_(ie))]))],64)):t.dataIndex==="title"?(i(),d("span",It,x(I.title),1)):t.dataIndex==="grams"?(i(),d(j,{key:2},[I.grams!=null?(i(),d("span",St,[w(x(I.grams)+" ",1),e[36]||(e[36]=l("small",{class:"muted"},"گرم",-1))])):(i(),d("span",Pt,"—"))],64)):t.dataIndex==="color"?(i(),d(j,{key:3},[I.color_str?(i(),d("span",Vt,x(I.color_str),1)):(i(),d("span",At,"—"))],64)):t.dataIndex==="percentage_pay"?(i(),d(j,{key:4},[I.percentage_pay!=null?(i(),d("span",Lt,[w(x(I.percentage_pay),1),e[37]||(e[37]=l("small",{class:"muted"},"٪",-1))])):(i(),d("span",jt,"—"))],64)):t.dataIndex==="rial_pay"?(i(),d(j,{key:5},[I.rial_pay!=null?(i(),d("span",zt,[w(x(Number(I.rial_pay).toLocaleString("fa-IR"))+" ",1),e[38]||(e[38]=l("small",{class:"muted"},"ریال",-1))])):(i(),d("span",Rt,"—"))],64)):t.dataIndex==="op"?(i(),d("div",Mt,[c("product.list.variants.edit")?(i(),S(_e,{key:0,title:"ویرایش"},{default:s(()=>[a(k,{type:"text",size:"small",onClick:Le=>O(I,me)},{icon:s(()=>[a(_(He),{class:"text-primary"})]),_:1},8,["onClick"])]),_:2},1024)):P("",!0),c("product.list.variants.remove")?(i(),S(_e,{key:1,title:"حذف"},{default:s(()=>[a(k,{type:"text",size:"small",danger:"",onClick:Le=>M.value.splice(me,1)},{icon:s(()=>[a(_($e))]),_:1},8,["onClick"])]),_:2},1024)):P("",!0)])):t.dataIndex==="is_active"?(i(),S(U,{key:7,color:I.is_active?"green":"red"},{default:s(()=>[w(x(I.is_active?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="is_pre_order"?(i(),S(U,{key:8,color:I.is_pre_order?"blue":""},{default:s(()=>[w(x(I.is_pre_order?"بله":"خیر"),1)]),_:2},1032,["color"])):P("",!0)]),_:1},8,["data-source"])])):(i(),S(Se,{key:0,image:_(Te).PRESENTED_IMAGE_SIMPLE,description:"هنوز تنوعی برای این محصول ثبت نشده است."},{default:s(()=>[c("product.list.variants.add")?(i(),S(k,{key:0,onClick:e[5]||(e[5]=t=>O())},{icon:s(()=>[a(_(ge))]),default:s(()=>[e[35]||(e[35]=w(" افزودن اولین تنوع ",-1))]),_:1})):P("",!0)]),_:1},8,["image"]))])):P("",!0),l("section",Nt,[l("div",Et,[l("span",qt,[a(_(ie))]),l("div",null,[e[39]||(e[39]=l("h3",null,"گالری تصاویر",-1)),l("p",null,x(_(m).isSuperAdmin?"تصاویر جداگانه برای نمایش در سایت و اپلیکیشن موبایل":"تصاویر نمایش در اپلیکیشن موبایل"),1)])]),_(m).isSuperAdmin?(i(),d(j,{key:0},[a(b,{label:"گالری تصاویر سایت"},{default:s(()=>[a(Oe,{modelValue:D.value,"onUpdate:modelValue":e[6]||(e[6]=t=>D.value=t),purpose:"product.gallery",placeholder:"افزودن تصاویر گالری سایت"},null,8,["modelValue"])]),_:1}),e[40]||(e[40]=l("div",{class:"pf-divider"},null,-1))],64)):P("",!0),a(b,{label:"گالری تصاویر موبایل",class:"mb-0"},{default:s(()=>[a(Oe,{modelValue:H.value,"onUpdate:modelValue":e[7]||(e[7]=t=>H.value=t),purpose:"product.gallery_mobile",placeholder:"افزودن تصاویر گالری موبایل"},null,8,["modelValue"])]),_:1})])]),l("aside",Bt,[l("section",Dt,[l("div",Ft,[l("span",Tt,[a(_(xe))]),e[41]||(e[41]=l("div",null,[l("h3",null,"وضعیت نمایش"),l("p",null,"نمایش یا عدم نمایش محصول برای مشتریان")],-1))]),a(b,{label:"نمایش محصول",extra:p.is_active?"محصول برای مشتریان قابل مشاهده است":"محصول پنهان است",class:"mb-0"},{default:s(()=>[a(ae,{checked:p.is_active,"onUpdate:checked":e[8]||(e[8]=t=>p.is_active=t)},null,8,["checked"])]),_:1},8,["extra"])]),l("section",Ht,[l("div",Gt,[l("span",Wt,[a(_(ue))]),e[42]||(e[42]=l("div",null,[l("h3",null,"دسته‌بندی"),l("p",null,"دسته، برند، سینی و برچسب‌های محصول")],-1))]),a(b,{label:"دسته بندی"},{default:s(()=>[a(N,{value:p.category_id,"onUpdate:value":e[9]||(e[9]=t=>p.category_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(Y.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),a(b,{label:"برند"},{default:s(()=>[a(N,{value:p.brand_id,"onUpdate:value":e[10]||(e[10]=t=>p.brand_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(X.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),_(m).isSuperAdmin?(i(),S(b,{key:0,label:"سینی ها"},{default:s(()=>[a(N,{value:p.ciny_ids,"onUpdate:value":e[11]||(e[11]=t=>p.ciny_ids=t),mode:"multiple","allow-clear":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(ee.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1})):P("",!0),a(b,{label:"برچسب ها",class:"mb-0"},{default:s(()=>[a(N,{value:p.tags,"onUpdate:value":e[12]||(e[12]=t=>p.tags=t),mode:"multiple","allow-clear":"","option-filter-prop":"label",placeholder:"انتخاب از فهرست برچسب‌ها",options:T.value.map(t=>({value:t,label:t}))},null,8,["value","options"])]),_:1})]),l("section",Jt,[l("div",Qt,[l("span",Xt,[a(_(re))]),e[43]||(e[43]=l("div",null,[l("h3",null,"تصویر شاخص"),l("p",null,"تصویر اصلی در لیست محصولات")],-1))]),l("div",Yt,[_(m).isSuperAdmin?(i(),S(b,{key:0,label:"سایت",class:"mb-0"},{default:s(()=>[a(ye,{modelValue:p.indicator_id,"onUpdate:modelValue":e[13]||(e[13]=t=>p.indicator_id=t),purpose:"product.indicator",placeholder:"تصویر شاخص"},null,8,["modelValue"])]),_:1})):P("",!0),a(b,{label:"موبایل",class:"mb-0"},{default:s(()=>[a(ye,{modelValue:p.mobile_pic,"onUpdate:modelValue":e[14]||(e[14]=t=>p.mobile_pic=t),purpose:"product.indicator_mobile",placeholder:"تصویر شاخص موبایل"},null,8,["modelValue"])]),_:1})])])])]),l("div",Zt,[l("span",Kt,[a(_(Ge)),e[44]||(e[44]=w(" تغییرات تنوع‌ها و تصاویر پس از «ثبت اطلاعات» ذخیره می‌شوند. ",-1))]),a(k,{onClick:ce},{default:s(()=>[...e[45]||(e[45]=[w("انصراف",-1)])]),_:1}),a(k,{type:"primary",class:"form-submit",loading:F.value,onClick:pe},{icon:s(()=>[a(_(oe))]),default:s(()=>[e[46]||(e[46]=w(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"]),a(Ae,{open:n.value,"onUpdate:open":e[27]||(e[27]=t=>n.value=t),width:860,"wrap-class-name":"pf-variant-modal",footer:null,"destroy-on-close":!0,centered:""},{title:s(()=>[l("div",el,[l("div",tl,[a(_(be))]),l("div",ll,[l("h3",null,x(g.value===null?"افزودن تنوع جدید":"ویرایش تنوع"),1),e[47]||(e[47]=l("p",null,"مشخصات، قیمت‌گذاری و تصویر این تنوع را وارد کنید.",-1))])])]),default:s(()=>[a(ve,{layout:"vertical",class:"vmodal-form"},{default:s(()=>[l("div",al,[l("div",sl,[l("div",ol,[e[50]||(e[50]=l("div",{class:"vmodal-card__head"},"مشخصات اصلی",-1)),l("div",il,[a(b,{label:"عنوان تنوع",required:"",class:"vmodal-item"},{default:s(()=>[a(y,{value:o.title,"onUpdate:value":e[15]||(e[15]=t=>o.title=t),placeholder:"مثلاً: ۵ گرمی"},null,8,["value"])]),_:1}),a(b,{label:"وزن خام",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.grams,"onUpdate:value":e[16]||(e[16]=t=>o.grams=t),class:"w-full",step:.001,"addon-after":"گرم",placeholder:"۰.۰۰۰"},null,8,["value"])]),_:1})]),l("div",nl,[a(b,{label:"تعداد موجودی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.qty,"onUpdate:value":e[17]||(e[17]=t=>o.qty=t),class:"w-full",min:0,placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"رنگ طلا",class:"vmodal-item"},{default:s(()=>[a(N,{value:o.color,"onUpdate:value":e[18]||(e[18]=t=>o.color=t),placeholder:"انتخاب رنگ","allow-clear":""},{default:s(()=>[(i(!0),d(j,null,W(Z.value,t=>(i(),S(L,{key:t.id,value:t.id},{default:s(()=>[l("div",dl,[l("span",{class:J(["color-opt__dot",`color-opt__dot--${t.id}`])},null,2),l("span",null,x(t.title),1)])]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),l("div",rl,[l("label",ul,[e[48]||(e[48]=l("span",{class:"vmodal-switch-label"},"فعال برای فروش",-1)),a(ae,{checked:o.is_active,"onUpdate:checked":e[19]||(e[19]=t=>o.is_active=t),size:"small"},null,8,["checked"])]),l("label",cl,[e[49]||(e[49]=l("span",{class:"vmodal-switch-label"},"پیش‌سفارش",-1)),a(ae,{checked:o.is_pre_order,"onUpdate:checked":e[20]||(e[20]=t=>o.is_pre_order=t),size:"small"},null,8,["checked"])])])]),l("div",pl,[e[51]||(e[51]=l("div",{class:"vmodal-card__head"},"اجرت و قیمت‌گذاری",-1)),l("div",_l,[a(b,{label:"اجرت درصدی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.percentage_pay,"onUpdate:value":e[21]||(e[21]=t=>o.percentage_pay=t),class:"w-full",step:.1,"addon-after":"٪",placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"اجرت ریالی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.rial_pay,"onUpdate:value":e[22]||(e[22]=t=>o.rial_pay=t),class:"w-full",step:5e4,"addon-after":"ریال",placeholder:"۰",formatter:t=>t?`${t}`.replace(/\B(?=(\d{3})+(?!\d))/g,","):"",parser:t=>t?t.replace(/,/g,""):""},null,8,["value","formatter","parser"])]),_:1})])])]),l("div",vl,[l("div",ml,[e[53]||(e[53]=l("div",{class:"vmodal-card__head"},"تصویر اختصاصی تنوع",-1)),G.value.length?(i(),d("div",fl,[l("button",{type:"button",class:J(["vmodal-picker__item",{"is-active":!o.image_id}]),title:"بدون تصویر",onClick:e[23]||(e[23]=t=>C(null))},[a(_(ie)),e[52]||(e[52]=l("span",null,"بدون عکس",-1))],2),(i(!0),d(j,null,W(G.value,t=>(i(),d("button",{key:t.id,type:"button",class:J(["vmodal-picker__item",{"is-active":o.image_id===t.id}]),onClick:I=>C(t)},[l("img",{src:t.url,alt:""},null,8,yl),o.image_id===t.id?(i(),d("div",bl,[a(_(oe))])):P("",!0)],10,gl))),128))])):(i(),d("div",hl," تصویری در گالری ثبت نشده است (می‌توانید در بخش گالری محصول تصویر بارگذاری کنید). "))]),l("div",kl,[e[54]||(e[54]=l("div",{class:"vmodal-card__head"},"توضیحات تکمیلی",-1)),a(b,{label:"توضیح مختصر",class:"vmodal-item"},{default:s(()=>[a(y,{value:o.details,"onUpdate:value":e[24]||(e[24]=t=>o.details=t),placeholder:"مثلاً: طراحی مات با تراش برلیان"},null,8,["value"])]),_:1}),a(b,{label:"توضیحات کامل",class:"vmodal-item mb-0"},{default:s(()=>[a(E,{value:o.description,"onUpdate:value":e[25]||(e[25]=t=>o.description=t),style:{height:"95px","min-height":"95px","max-height":"95px",resize:"none"},placeholder:"ویژگی‌های خاص این تنوع..."},null,8,["value"])]),_:1})])])]),l("div",wl,[a(k,{class:"vmodal-footer__cancel",onClick:e[26]||(e[26]=t=>n.value=!1)},{default:s(()=>[...e[55]||(e[55]=[w(" انصراف ",-1)])]),_:1}),a(k,{type:"primary",class:"vmodal-footer__submit",onClick:le},{icon:s(()=>[a(_(oe))]),default:s(()=>[w(" "+x(g.value===null?"افزودن تنوع":"ذخیره تغییرات"),1)]),_:1})])]),_:1})]),_:1},8,["open"])])}}}),Il=Ce(Ol,[["__scopeId","data-v-461486f5"]]);export{Il as default}; diff --git a/apps/admin-panel/dist/assets/AddWorkshop-Cq08meS9.js b/apps/admin-panel/dist/assets/AddWorkshop-Cq08meS9.js deleted file mode 100644 index ed3df05..0000000 --- a/apps/admin-panel/dist/assets/AddWorkshop-Cq08meS9.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js";import"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddWorkshop-DkrmcSHY.js b/apps/admin-panel/dist/assets/AddWorkshop-DkrmcSHY.js new file mode 100644 index 0000000..3371f73 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddWorkshop-DkrmcSHY.js @@ -0,0 +1 @@ +import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js";import"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js b/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js similarity index 97% rename from apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js rename to apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js index 0272e9e..5e6a059 100644 --- a/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js +++ b/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js @@ -1 +1 @@ -import{d as N,x as O,y as v,a as b,w as n,h as g,k as S,m as V,z as y,r as p,o as U,p as x,c as o,f as A,H as E,G as c,l as G}from"./index-DajPj7Ec.js";import{_ as H}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";const T={class:"grid-3"},W={class:"grid-3"},F=N({__name:"AddWorkshop",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(f,{emit:R}){const h=f,w=R,_=h.open!==void 0,B=S(),C=G(),d=_?h.id:B.params.id,i=V(!1),e=y({workshop_name:"",workshop_phone:"",workshop_address:"",user_fname:"",user_lname:"",user_phone:""}),u=y({});async function m(){var t,a;if(Object.keys(u).forEach(l=>delete u[l]),e.workshop_name||(u.workshop_name="لطفا مقدار را وارد کنید"),(e.user_fname||e.user_lname)&&!e.user_phone&&(u.user_phone="موبایل سرپرست کارگاه الزامی است"),!Object.keys(u).length)try{i.value=!0,d?await v.put(`workshop/${d}`,e):await v.post("workshop",e),c.info("اطلاعات با موفقیت به ثبت رسید."),_?(w("success"),w("update:open",!1)):C.push("/workshop/list")}catch(l){c.error(((a=(t=l==null?void 0:l.response)==null?void 0:t.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return O(async()=>{if(d)try{const{data:t}=await v.get(`workshop/${d}`);Object.assign(e,{workshop_name:t.workshop_name??t.name??"",workshop_phone:t.workshop_phone??t.phone??"",workshop_address:t.workshop_address??t.address??"",user_fname:t.user_fname??"",user_lname:t.user_lname??"",user_phone:t.user_phone??""})}catch(t){console.log(t)}}),(t,a)=>{const l=p("a-input"),r=p("a-form-item"),k=p("a-textarea"),$=p("a-button"),j=p("a-card"),z=p("a-form"),M=p("a-spin");return _?(U(),b(H,{key:0,open:!!f.open,id:g(d),"add-title":"افزودن کارگاه","edit-title":"ویرایش کارگاه",loading:i.value,submitting:i.value,width:"lg","onUpdate:open":a[6]||(a[6]=s=>t.$emit("update:open",s)),onSubmit:m},{default:n(()=>[x("div",T,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[0]||(a[0]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[1]||(a[1]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[2]||(a[2]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[3]||(a[3]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[4]||(a[4]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[5]||(a[5]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(U(),b(M,{key:1,spinning:i.value},{default:n(()=>[o(z,{layout:"vertical",onSubmit:E(m,["prevent"])},{default:n(()=>[o(j,{title:g(d)?"ویرایش کارگاه":"افزودن کارگاه",class:"mb-base page-card"},{default:n(()=>[x("div",W,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[7]||(a[7]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[8]||(a[8]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[9]||(a[9]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[10]||(a[10]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[11]||(a[11]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[12]||(a[12]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),o($,{type:"primary",class:"form-submit",onClick:m},{default:n(()=>[...a[13]||(a[13]=[A("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{F as _}; +import{d as N,x as O,y as v,a as b,w as n,h as g,k as S,m as V,z as y,r as p,o as U,p as x,c as o,f as A,H as E,G as c,l as G}from"./index-eLNLLYwC.js";import{_ as H}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const T={class:"grid-3"},W={class:"grid-3"},F=N({__name:"AddWorkshop",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(f,{emit:R}){const h=f,w=R,_=h.open!==void 0,B=S(),C=G(),d=_?h.id:B.params.id,i=V(!1),e=y({workshop_name:"",workshop_phone:"",workshop_address:"",user_fname:"",user_lname:"",user_phone:""}),u=y({});async function m(){var t,a;if(Object.keys(u).forEach(l=>delete u[l]),e.workshop_name||(u.workshop_name="لطفا مقدار را وارد کنید"),(e.user_fname||e.user_lname)&&!e.user_phone&&(u.user_phone="موبایل سرپرست کارگاه الزامی است"),!Object.keys(u).length)try{i.value=!0,d?await v.put(`workshop/${d}`,e):await v.post("workshop",e),c.info("اطلاعات با موفقیت به ثبت رسید."),_?(w("success"),w("update:open",!1)):C.push("/workshop/list")}catch(l){c.error(((a=(t=l==null?void 0:l.response)==null?void 0:t.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return O(async()=>{if(d)try{const{data:t}=await v.get(`workshop/${d}`);Object.assign(e,{workshop_name:t.workshop_name??t.name??"",workshop_phone:t.workshop_phone??t.phone??"",workshop_address:t.workshop_address??t.address??"",user_fname:t.user_fname??"",user_lname:t.user_lname??"",user_phone:t.user_phone??""})}catch(t){console.log(t)}}),(t,a)=>{const l=p("a-input"),r=p("a-form-item"),k=p("a-textarea"),$=p("a-button"),j=p("a-card"),z=p("a-form"),M=p("a-spin");return _?(U(),b(H,{key:0,open:!!f.open,id:g(d),"add-title":"افزودن کارگاه","edit-title":"ویرایش کارگاه",loading:i.value,submitting:i.value,width:"lg","onUpdate:open":a[6]||(a[6]=s=>t.$emit("update:open",s)),onSubmit:m},{default:n(()=>[x("div",T,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[0]||(a[0]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[1]||(a[1]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[2]||(a[2]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[3]||(a[3]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[4]||(a[4]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[5]||(a[5]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(U(),b(M,{key:1,spinning:i.value},{default:n(()=>[o(z,{layout:"vertical",onSubmit:E(m,["prevent"])},{default:n(()=>[o(j,{title:g(d)?"ویرایش کارگاه":"افزودن کارگاه",class:"mb-base page-card"},{default:n(()=>[x("div",W,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[7]||(a[7]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[8]||(a[8]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[9]||(a[9]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[10]||(a[10]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[11]||(a[11]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[12]||(a[12]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),o($,{type:"primary",class:"form-submit",onClick:m},{default:n(()=>[...a[13]||(a[13]=[A("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{F as _}; diff --git a/apps/admin-panel/dist/assets/AgentDetail-sO_PGm1D.js b/apps/admin-panel/dist/assets/AgentDetail-DRGOkkVC.js similarity index 96% rename from apps/admin-panel/dist/assets/AgentDetail-sO_PGm1D.js rename to apps/admin-panel/dist/assets/AgentDetail-DRGOkkVC.js index ca5cc32..0459b28 100644 --- a/apps/admin-panel/dist/assets/AgentDetail-sO_PGm1D.js +++ b/apps/admin-panel/dist/assets/AgentDetail-DRGOkkVC.js @@ -1 +1 @@ -import{d as D,x as S,y as A,a as b,w as a,k as F,m as y,r as d,o as i,c as l,f as n,t as s,p as E,b as p,F as f,h as I,i as k,_ as M}from"./index-DajPj7Ec.js";import{j as h}from"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";const R={class:"stats mt-4"},T=D({__name:"AgentDetail",setup($){const j=F().params.id,m=y(!1),o=y(void 0),C=[{title:"نام",dataIndex:"name"},{title:"موبایل",dataIndex:"mobile"},{title:"شهر",dataIndex:"city"},{title:"نوع",dataIndex:"type_str"},{title:"وضعیت",dataIndex:"active"},{title:"تاریخ ثبت",dataIndex:"caj"}],w=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"status"},{title:"تاریخ",dataIndex:"caj"}];return S(async()=>{try{m.value=!0;const{data:_}=await A.get(`admin/customers-omde/reagent/${j}`);o.value=_}catch(_){console.log(_)}finally{m.value=!1}}),(_,G)=>{const c=d("a-descriptions-item"),u=d("a-tag"),z=d("a-descriptions"),B=d("a-card"),v=d("a-table"),x=d("a-tab-pane"),N=d("a-tabs"),V=d("a-spin");return i(),b(V,{spinning:m.value},{default:a(()=>[l(B,{title:"مشاهده اطلاعات کارشناس فروش",class:"page-card"},{default:a(()=>[l(z,{bordered:"",size:"small",column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:a(()=>[l(c,{label:"نام"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.name)??"-"),1)]}),_:1}),l(c,{label:"موبایل"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.mobile)??"-"),1)]}),_:1}),l(c,{label:"شعبه"},{default:a(()=>{var e,t;return[n(s(((t=(e=o.value)==null?void 0:e.branch)==null?void 0:t.name)??"-"),1)]}),_:1}),l(c,{label:"درصد کمیسیون"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.percent)??"-"),1)]}),_:1}),l(c,{label:"وضعیت"},{default:a(()=>{var e;return[l(u,{color:((e=o.value)==null?void 0:e.active)===1?"green":"red"},{default:a(()=>{var t;return[n(s(((t=o.value)==null?void 0:t.active)===1?"فعال":"غیر فعال"),1)]}),_:1},8,["color"])]}),_:1}),l(c,{label:"میزان فروش (گرم)"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.grams_sell)??0),1)]}),_:1})]),_:1}),E("div",R,[l(u,{color:"blue"},{default:a(()=>{var e,t;return[n("مشتریان معرفی‌شده: "+s(((t=(e=o.value)==null?void 0:e.referred_customers)==null?void 0:t.length)??0),1)]}),_:1}),l(u,{color:"green"},{default:a(()=>{var e,t;return[n("سفارش‌های ثبت‌شده: "+s(((t=(e=o.value)==null?void 0:e.orders)==null?void 0:t.length)??0),1)]}),_:1})])]),_:1}),l(N,{class:"mt-4 detail-tabs","default-active-key":"referred"},{default:a(()=>[l(x,{key:"referred",tab:"مشتریان معرفی‌شده"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.referred_customers,columns:C,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>{var g;return[t.dataIndex==="active"?(i(),b(u,{key:0,color:r.active===1?"green":"red"},{default:a(()=>[n(s(r.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="city"?(i(),p(f,{key:1},[n(s(((g=r.city)==null?void 0:g.title)??"-"),1)],64)):t.dataIndex==="caj"?(i(),p(f,{key:2},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]}),_:1},8,["data-source"])]}),_:1}),l(x,{key:"orders",tab:"سفارش‌های مشتریان"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.orders,columns:w,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>[t.dataIndex==="caj"?(i(),p(f,{key:0},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]),_:1},8,["data-source"])]}),_:1})]),_:1})]),_:1},8,["spinning"])}}}),L=M(T,[["__scopeId","data-v-eef9d79c"]]);export{L as default}; +import{d as D,x as S,y as A,a as b,w as a,k as F,m as y,r as d,o as i,c as l,f as n,t as s,p as E,b as p,F as f,h as I,i as k,_ as M}from"./index-eLNLLYwC.js";import{j as h}from"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";const R={class:"stats mt-4"},T=D({__name:"AgentDetail",setup($){const j=F().params.id,m=y(!1),o=y(void 0),C=[{title:"نام",dataIndex:"name"},{title:"موبایل",dataIndex:"mobile"},{title:"شهر",dataIndex:"city"},{title:"نوع",dataIndex:"type_str"},{title:"وضعیت",dataIndex:"active"},{title:"تاریخ ثبت",dataIndex:"caj"}],w=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"status"},{title:"تاریخ",dataIndex:"caj"}];return S(async()=>{try{m.value=!0;const{data:_}=await A.get(`admin/customers-omde/reagent/${j}`);o.value=_}catch(_){console.log(_)}finally{m.value=!1}}),(_,G)=>{const c=d("a-descriptions-item"),u=d("a-tag"),z=d("a-descriptions"),B=d("a-card"),v=d("a-table"),x=d("a-tab-pane"),N=d("a-tabs"),V=d("a-spin");return i(),b(V,{spinning:m.value},{default:a(()=>[l(B,{title:"مشاهده اطلاعات کارشناس فروش",class:"page-card"},{default:a(()=>[l(z,{bordered:"",size:"small",column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:a(()=>[l(c,{label:"نام"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.name)??"-"),1)]}),_:1}),l(c,{label:"موبایل"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.mobile)??"-"),1)]}),_:1}),l(c,{label:"شعبه"},{default:a(()=>{var e,t;return[n(s(((t=(e=o.value)==null?void 0:e.branch)==null?void 0:t.name)??"-"),1)]}),_:1}),l(c,{label:"درصد کمیسیون"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.percent)??"-"),1)]}),_:1}),l(c,{label:"وضعیت"},{default:a(()=>{var e;return[l(u,{color:((e=o.value)==null?void 0:e.active)===1?"green":"red"},{default:a(()=>{var t;return[n(s(((t=o.value)==null?void 0:t.active)===1?"فعال":"غیر فعال"),1)]}),_:1},8,["color"])]}),_:1}),l(c,{label:"میزان فروش (گرم)"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.grams_sell)??0),1)]}),_:1})]),_:1}),E("div",R,[l(u,{color:"blue"},{default:a(()=>{var e,t;return[n("مشتریان معرفی‌شده: "+s(((t=(e=o.value)==null?void 0:e.referred_customers)==null?void 0:t.length)??0),1)]}),_:1}),l(u,{color:"green"},{default:a(()=>{var e,t;return[n("سفارش‌های ثبت‌شده: "+s(((t=(e=o.value)==null?void 0:e.orders)==null?void 0:t.length)??0),1)]}),_:1})])]),_:1}),l(N,{class:"mt-4 detail-tabs","default-active-key":"referred"},{default:a(()=>[l(x,{key:"referred",tab:"مشتریان معرفی‌شده"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.referred_customers,columns:C,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>{var g;return[t.dataIndex==="active"?(i(),b(u,{key:0,color:r.active===1?"green":"red"},{default:a(()=>[n(s(r.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="city"?(i(),p(f,{key:1},[n(s(((g=r.city)==null?void 0:g.title)??"-"),1)],64)):t.dataIndex==="caj"?(i(),p(f,{key:2},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]}),_:1},8,["data-source"])]}),_:1}),l(x,{key:"orders",tab:"سفارش‌های مشتریان"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.orders,columns:w,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>[t.dataIndex==="caj"?(i(),p(f,{key:0},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]),_:1},8,["data-source"])]}),_:1})]),_:1})]),_:1},8,["spinning"])}}}),L=M(T,[["__scopeId","data-v-eef9d79c"]]);export{L as default}; diff --git a/apps/admin-panel/dist/assets/AppstoreOutlined-BPqrCmxh.js b/apps/admin-panel/dist/assets/AppstoreOutlined-D5DMeuPl.js similarity index 95% rename from apps/admin-panel/dist/assets/AppstoreOutlined-BPqrCmxh.js rename to apps/admin-panel/dist/assets/AppstoreOutlined-D5DMeuPl.js index 18d244d..53bf9ba 100644 --- a/apps/admin-panel/dist/assets/AppstoreOutlined-BPqrCmxh.js +++ b/apps/admin-panel/dist/assets/AppstoreOutlined-D5DMeuPl.js @@ -1 +1 @@ -import{c as i,I as u}from"./index-DajPj7Ec.js";var l={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"}}]},name:"appstore",theme:"outlined"};function a(r){for(var t=1;t(s(),a(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/BankerList-CuVGBn-P.js b/apps/admin-panel/dist/assets/BankerList-CuVGBn-P.js new file mode 100644 index 0000000..8285723 --- /dev/null +++ b/apps/admin-panel/dist/assets/BankerList-CuVGBn-P.js @@ -0,0 +1 @@ +import{b as m,O as i,a as e}from"./OmdeCustomerList-CytNKR8R.js";import{d as p,a,h as t,o as s}from"./index-eLNLLYwC.js";import"./index-CKaD48iT.js";import"./model-btNVLLyF.js";import"./filters-BMytoA2k.js";import"./SettingOutlined-DibNCEeh.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./DateInput-D9Jh1loF.js";import"./UserOutlined-B4M5rNrX.js";import"./ShopOutlined-DIjF3I3z.js";import"./EnvironmentOutlined-BKbou10z.js";import"./PercentageOutlined-DyprS4lh.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";import"./UnorderedListOutlined-cPIiOEaQ.js";const j=p({__name:"BankerList",setup(n){const o=i.banker.title,r=m("banker");return(l,c)=>(s(),a(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js b/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js similarity index 88% rename from apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js rename to apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js index 0871e5b..a2a2255 100644 --- a/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js +++ b/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js @@ -1 +1 @@ -import{d as r,a as g,w as a,r as o,o as k,c as i,a7 as w}from"./index-DajPj7Ec.js";const b=r({__name:"BaseFormModal",props:{open:{type:Boolean},id:{default:void 0},addTitle:{},editTitle:{},loading:{type:Boolean,default:!1},submitting:{type:Boolean,default:!1},width:{default:"md"},okText:{default:"ثبت اطلاعات"}},emits:["update:open","submit","cancel"],setup(e,{emit:d}){const n=d,s={sm:520,md:720,lg:900,xl:1140};function m(t){n("update:open",t)}function c(){n("update:open",!1),n("cancel")}return(t,l)=>{const f=o("a-form"),u=o("a-spin"),p=o("a-modal");return k(),g(p,{open:e.open,title:e.id?e.editTitle:e.addTitle,width:s[e.width],"confirm-loading":e.submitting,"ok-text":e.okText,"cancel-text":"انصراف","mask-closable":!1,"wrap-class-name":"base-form-modal","onUpdate:open":m,onOk:l[0]||(l[0]=x=>t.$emit("submit")),onCancel:c},{default:a(()=>[i(u,{spinning:e.loading},{default:a(()=>[i(f,{layout:"vertical"},{default:a(()=>[w(t.$slots,"default")]),_:3})]),_:3},8,["spinning"])]),_:3},8,["open","title","width","confirm-loading","ok-text"])}}});export{b as _}; +import{d as r,a as g,w as a,r as o,o as k,c as i,a8 as w}from"./index-eLNLLYwC.js";const b=r({__name:"BaseFormModal",props:{open:{type:Boolean},id:{default:void 0},addTitle:{},editTitle:{},loading:{type:Boolean,default:!1},submitting:{type:Boolean,default:!1},width:{default:"md"},okText:{default:"ثبت اطلاعات"}},emits:["update:open","submit","cancel"],setup(e,{emit:d}){const n=d,s={sm:520,md:720,lg:900,xl:1140};function m(t){n("update:open",t)}function c(){n("update:open",!1),n("cancel")}return(t,l)=>{const f=o("a-form"),u=o("a-spin"),p=o("a-modal");return k(),g(p,{open:e.open,title:e.id?e.editTitle:e.addTitle,width:s[e.width],"confirm-loading":e.submitting,"ok-text":e.okText,"cancel-text":"انصراف","mask-closable":!1,"wrap-class-name":"base-form-modal","onUpdate:open":m,onOk:l[0]||(l[0]=x=>t.$emit("submit")),onCancel:c},{default:a(()=>[i(u,{spinning:e.loading},{default:a(()=>[i(f,{layout:"vertical"},{default:a(()=>[w(t.$slots,"default")]),_:3})]),_:3},8,["spinning"])]),_:3},8,["open","title","width","confirm-loading","ok-text"])}}});export{b as _}; diff --git a/apps/admin-panel/dist/assets/CameraOutlined-B6nXMt0y.js b/apps/admin-panel/dist/assets/CameraOutlined-CFYC5ScW.js similarity index 94% rename from apps/admin-panel/dist/assets/CameraOutlined-B6nXMt0y.js rename to apps/admin-panel/dist/assets/CameraOutlined-CFYC5ScW.js index d88d15c..c5f137d 100644 --- a/apps/admin-panel/dist/assets/CameraOutlined-B6nXMt0y.js +++ b/apps/admin-panel/dist/assets/CameraOutlined-CFYC5ScW.js @@ -1 +1 @@ -import{c as i,I as u}from"./index-DajPj7Ec.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 248H728l-32.4-90.8a32.07 32.07 0 00-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"}}]},name:"camera",theme:"outlined"};function c(r){for(var e=1;e=0}async function m(){try{const{data:t}=await u.post("change/percent/count",{category_id:a.category_id,brand_id:a.brand_id});p.value=t.count}catch(t){console.log("e ==> ",t)}}async function L(){if(a.percent===void 0||a.percent===null){z.error("لطفا اجرت درصدی را وارد کنید");return}try{f.value=!0;const{data:t}=await u.post("change/all",{percent:a.percent,category_id:a.category_id,brand_id:a.brand_id});k.success({title:"تغییرات با موفقیت اعمال شد",okText:"بستن"}),p.value=t.updated}catch(t){k.success({title:"خطا در اعمال تغییرات"}),console.log(t)}finally{f.value=!1}}return S(async()=>{try{const[t,e]=await Promise.all([u.get("brand"),u.post("category")]);y.value=t.data,b.value=(e.data.rows??e.data).map(r=>({id:r.id,title:r.type_str?`${r.title} (${r.type_str}) `:r.title}))}catch(t){console.log(t)}m()}),(t,e)=>{const r=s("a-select-option"),c=s("a-select"),i=s("a-form-item"),M=s("a-input"),N=s("a-input-number"),U=s("a-button"),V=s("a-popconfirm"),F=s("a-form"),O=s("a-card");return d(),v("div",D,[n(O,{title:"تغییر درصد محصولات",class:"page-card"},{default:l(()=>[n(F,{layout:"vertical"},{default:l(()=>[$("div",E,[n(i,{label:"دسته بندی"},{default:l(()=>[n(c,{value:a.category_id,"onUpdate:value":e[0]||(e[0]=o=>a.category_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":h,onChange:m},{default:l(()=>[(d(!0),v(w,null,C(b.value,o=>(d(),x(r,{key:o.id,value:o.id},{default:l(()=>[g(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"برند"},{default:l(()=>[n(c,{value:a.brand_id,"onUpdate:value":e[1]||(e[1]=o=>a.brand_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":h,onChange:m},{default:l(()=>[(d(!0),v(w,null,C(y.value,o=>(d(),x(r,{key:o.id,value:o.id},{default:l(()=>[g(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"تعداد یافت شده"},{default:l(()=>[n(M,{value:p.value,disabled:""},null,8,["value"])]),_:1}),n(i,{label:"اجرت درصدی"},{default:l(()=>[n(N,{value:a.percent,"onUpdate:value":e[2]||(e[2]=o=>a.percent=o),class:"w-full",step:.1},null,8,["value"])]),_:1})]),n(V,{title:"آیا از اعمال تغییرات مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:L},{default:l(()=>[n(U,{type:"primary",class:"form-submit",loading:f.value},{default:l(()=>[...e[3]||(e[3]=[g("اعمال تغییرات",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})])}}});export{q as default}; +import{d as P,x as S,y as u,b as v,c as n,w as l,m as _,r as s,z as T,o as d,p as $,F as w,e as C,f as g,G as z,M as k,a as x,t as B}from"./index-eLNLLYwC.js";const D={id:"page-user-list"},E={class:"grid-3"},q=P({__name:"ChangePercent",setup(G){const y=_([]),b=_([]),p=_("-"),f=_(!1),a=T({category_id:void 0,brand_id:void 0,percent:void 0});function h(t,e){var r,c;return String(((c=(r=e==null?void 0:e.children)==null?void 0:r[0])==null?void 0:c.children)??"").toLowerCase().indexOf(t.toLowerCase())>=0}async function m(){try{const{data:t}=await u.post("change/percent/count",{category_id:a.category_id,brand_id:a.brand_id});p.value=t.count}catch(t){console.log("e ==> ",t)}}async function L(){if(a.percent===void 0||a.percent===null){z.error("لطفا اجرت درصدی را وارد کنید");return}try{f.value=!0;const{data:t}=await u.post("change/all",{percent:a.percent,category_id:a.category_id,brand_id:a.brand_id});k.success({title:"تغییرات با موفقیت اعمال شد",okText:"بستن"}),p.value=t.updated}catch(t){k.success({title:"خطا در اعمال تغییرات"}),console.log(t)}finally{f.value=!1}}return S(async()=>{try{const[t,e]=await Promise.all([u.get("brand"),u.post("category")]);y.value=t.data,b.value=(e.data.rows??e.data).map(r=>({id:r.id,title:r.type_str?`${r.title} (${r.type_str}) `:r.title}))}catch(t){console.log(t)}m()}),(t,e)=>{const r=s("a-select-option"),c=s("a-select"),i=s("a-form-item"),M=s("a-input"),N=s("a-input-number"),U=s("a-button"),V=s("a-popconfirm"),F=s("a-form"),O=s("a-card");return d(),v("div",D,[n(O,{title:"تغییر درصد محصولات",class:"page-card"},{default:l(()=>[n(F,{layout:"vertical"},{default:l(()=>[$("div",E,[n(i,{label:"دسته بندی"},{default:l(()=>[n(c,{value:a.category_id,"onUpdate:value":e[0]||(e[0]=o=>a.category_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":h,onChange:m},{default:l(()=>[(d(!0),v(w,null,C(b.value,o=>(d(),x(r,{key:o.id,value:o.id},{default:l(()=>[g(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"برند"},{default:l(()=>[n(c,{value:a.brand_id,"onUpdate:value":e[1]||(e[1]=o=>a.brand_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":h,onChange:m},{default:l(()=>[(d(!0),v(w,null,C(y.value,o=>(d(),x(r,{key:o.id,value:o.id},{default:l(()=>[g(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"تعداد یافت شده"},{default:l(()=>[n(M,{value:p.value,disabled:""},null,8,["value"])]),_:1}),n(i,{label:"اجرت درصدی"},{default:l(()=>[n(N,{value:a.percent,"onUpdate:value":e[2]||(e[2]=o=>a.percent=o),class:"w-full",step:.1},null,8,["value"])]),_:1})]),n(V,{title:"آیا از اعمال تغییرات مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:L},{default:l(()=>[n(U,{type:"primary",class:"form-submit",loading:f.value},{default:l(()=>[...e[3]||(e[3]=[g("اعمال تغییرات",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})])}}});export{q as default}; diff --git a/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js b/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js similarity index 95% rename from apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js rename to apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js index 0412c1a..a3976cf 100644 --- a/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js +++ b/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js @@ -1 +1 @@ -import{d as m,o as k,a as w,s as u,r as _}from"./index-DajPj7Ec.js";const p=" › ",g=m({__name:"CityTreeSelect",props:{value:{},cities:{},parentPicker:{type:Boolean},excludeId:{},placeholder:{}},emits:["update:value","change"],setup(o,{emit:h}){const c=o,r=h,d=u(()=>{const e=new Set(c.cities.map(n=>n.id)),l=new Map;for(const n of c.cities){const t=n.parent&&e.has(n.parent)&&n.parent!==n.id?n.parent:null;l.has(t)||l.set(t,[]),l.get(t).push(n)}const a=new Set,i=n=>(l.get(n)??[]).filter(t=>!a.has(t.id)&&!(c.parentPicker&&t.id===c.excludeId)).map(t=>(a.add(t.id),{id:t.id,title:t.title,children:i(t.id)}));return i(null)});function s(e,l,a=""){return e.flatMap(i=>{const n=[...l,i.title],t=n.join(p);return[{value:i.id,label:t,search:a?`${a}${p}${t}`:t},...s(i.children,n,a)]})}const v=u(()=>c.parentPicker?s(d.value,[]):d.value.map(e=>e.children.length?{key:e.id,label:e.title,options:s(e.children,[],e.title)}:{value:e.id,label:e.title,search:e.title}));function f(e){r("update:value",e??void 0),r("change",e??void 0)}return(e,l)=>{const a=_("a-select");return k(),w(a,{value:o.value??void 0,options:v.value,"show-search":"","allow-clear":"","option-filter-prop":"search",placeholder:o.placeholder??"شهر را انتخاب کنید",class:"w-full","onUpdate:value":f},null,8,["value","options","placeholder"])}}});export{g as _}; +import{d as m,o as k,a as w,s as u,r as _}from"./index-eLNLLYwC.js";const p=" › ",g=m({__name:"CityTreeSelect",props:{value:{},cities:{},parentPicker:{type:Boolean},excludeId:{},placeholder:{}},emits:["update:value","change"],setup(o,{emit:h}){const c=o,r=h,d=u(()=>{const e=new Set(c.cities.map(n=>n.id)),l=new Map;for(const n of c.cities){const t=n.parent&&e.has(n.parent)&&n.parent!==n.id?n.parent:null;l.has(t)||l.set(t,[]),l.get(t).push(n)}const a=new Set,i=n=>(l.get(n)??[]).filter(t=>!a.has(t.id)&&!(c.parentPicker&&t.id===c.excludeId)).map(t=>(a.add(t.id),{id:t.id,title:t.title,children:i(t.id)}));return i(null)});function s(e,l,a=""){return e.flatMap(i=>{const n=[...l,i.title],t=n.join(p);return[{value:i.id,label:t,search:a?`${a}${p}${t}`:t},...s(i.children,n,a)]})}const v=u(()=>c.parentPicker?s(d.value,[]):d.value.map(e=>e.children.length?{key:e.id,label:e.title,options:s(e.children,[],e.title)}:{value:e.id,label:e.title,search:e.title}));function f(e){r("update:value",e??void 0),r("change",e??void 0)}return(e,l)=>{const a=_("a-select");return k(),w(a,{value:o.value??void 0,options:v.value,"show-search":"","allow-clear":"","option-filter-prop":"search",placeholder:o.placeholder??"شهر را انتخاب کنید",class:"w-full","onUpdate:value":f},null,8,["value","options","placeholder"])}}});export{g as _}; diff --git a/apps/admin-panel/dist/assets/Comments-CGkM8YQW.js b/apps/admin-panel/dist/assets/Comments-BRX5fmch.js similarity index 91% rename from apps/admin-panel/dist/assets/Comments-CGkM8YQW.js rename to apps/admin-panel/dist/assets/Comments-BRX5fmch.js index 5b91804..26ef1f6 100644 --- a/apps/admin-panel/dist/assets/Comments-CGkM8YQW.js +++ b/apps/admin-panel/dist/assets/Comments-BRX5fmch.js @@ -1 +1 @@ -import{_ as F}from"./brand-icon-COpT6LnI.js";import{a as H,b as p,X as J}from"./model-CR-NjhTP.js";import{_ as V}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js";import{u as z,d as K,b as N,c as m,w as o,r as u,o as i,h as C,p as a,a as d,i as y,f as c,t as w,Z as Q,G as _,m as S,s as X,j as W,y as B,_ as Y}from"./index-DajPj7Ec.js";import{U as ee}from"./UserOutlined-CzruAWCH.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";import"./icons-DiNnR1E8.js";import"./UnorderedListOutlined-B6W9NsW_.js";import"./PercentageOutlined-D8KYbn5o.js";import"./UserAddOutlined-tCWSfp_Y.js";import"./CreditCardOutlined-H5cAFLTI.js";import"./AppstoreOutlined-BPqrCmxh.js";import"./TeamOutlined-DPoMD9pK.js";import"./CameraOutlined-B6nXMt0y.js";function te(){const x=z(),r=new H("admin/comments/list","لیست دیدگاه ها");return r.add(new p("product_id","شناسه محصول").filterNumber().hidden()),r.add(new p("product.title","نام محصول").filterNumber().renderSlot("productName")),r.add(new p("customer.id","شناسه نویسنده دیدگاه").filterNumber().hidden()),r.add(new p("customer","نام نویسنده ").filterText().renderSlot("customer")),r.add(new p("reply","پاسخ").renderSlot("reply").noSort()),r.add(new p("sts","وضعیت").renderSlot("sts").noSort()),x.roles&&x.roles.includes("comment.state")&&r.add(new p("changeState","تغییر وضعیت").renderSlot("changeState").noSort()),r.add(new p("opt","عملیات").noSort().renderSlot("opt")),r}const oe={id:"page-user-list"},ne=["href"],se=["onClick"],le=["onClick"],ae={class:"flex"},me={key:0,class:"comments-list"},ie={class:"comment-item"},re={class:"img"},ue={class:"comment-body"},de={class:"time"},ce={class:"comment-item"},pe={class:"comment-body"},_e={key:0,class:"time"},ve=K({__name:"Comments",setup(x){const r=z(),v=n=>!!r.hasPermission(n),D=te(),h=S(null),l=S(void 0),k=S(!1),$=S(""),b=S(""),I=X(()=>{var n;return $.value!==(((n=l.value)==null?void 0:n.comment)??"")}),E=X(()=>{var n,e,s;return b.value!==(((s=(e=(n=l.value)==null?void 0:n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"")});function L(n){var s,f;const e=String(((s=n.product)==null?void 0:s.title)??"").split(" ").join("-");return`${W.siteUrl}/product/${e}/${(f=n.product)==null?void 0:f.id}`}async function T(n,e){var s;try{await B.post("comment/sts",{id:n,sts:e}),_.info("تغییرات ثبت شد "),(s=h.value)==null||s.fetch()}catch{_.error("خطا در تغییر وضعیت")}}function O(n){var e,s;l.value=n,$.value=n.comment??"",b.value=((s=(e=n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"",k.value=!0}async function P(n){var e;try{await B.delete(`comment/${n}`),_.info("دیدگاه حذف شد"),(e=h.value)==null||e.fetch()}catch{_.error("خطا در حذف")}}async function G(n){var e;try{await B.post("comment",{product_id:n.product_id,customer_id:n.customer_id,comment:b.value,reply_to:n.id}),_.info("تغییرات ثبت شد "),k.value=!1,(e=h.value)==null||e.fetch()}catch{_.error("خطا در ثبت تغییرات")}}return(n,e)=>{const s=u("a-tag"),f=u("a-menu-item"),M=u("a-menu"),Z=u("a-dropdown"),U=u("a-textarea"),j=u("a-form-item"),R=u("a-button"),q=u("a-modal"),A=u("a-card");return i(),N("div",oe,[m(A,{title:"لیست دیدگاه ها",class:"page-card"},{default:o(()=>[m(J,{ref_key:"tbl",ref:h,model:C(D),"mobile-cards":""},{customer:o(({text:t})=>[c(w(t&&t.fname&&t.lname?`${t.fname} ${t.lname}`:"بدون نام"),1)]),productName:o(({record:t})=>[a("a",{href:L(t),target:"_blank"},w(t.product.title),9,ne)]),sts:o(({text:t})=>[t==1?(i(),d(s,{key:0},{default:o(()=>[...e[6]||(e[6]=[c("در انتظار تایید",-1)])]),_:1})):t==2?(i(),d(s,{key:1,color:"green"},{default:o(()=>[...e[7]||(e[7]=[c("تایید شده",-1)])]),_:1})):(i(),d(s,{key:2,color:"red"},{default:o(()=>[...e[8]||(e[8]=[c("عدم تایید",-1)])]),_:1}))]),reply:o(({text:t})=>[t&&t.length>0&&t[0].comment!==null?(i(),d(s,{key:0,color:"green"},{default:o(()=>[...e[9]||(e[9]=[c(" پاسخ داده شده ",-1)])]),_:1})):(i(),d(s,{key:1},{default:o(()=>[...e[10]||(e[10]=[c("بدون پاسخ",-1)])]),_:1}))]),changeState:o(({record:t})=>[v("comment.state")?(i(),d(Z,{key:0},{overlay:o(()=>[m(M,null,{default:o(()=>[m(f,null,{default:o(()=>[a("div",{onClick:g=>t.sts!==2?T(t.id,2):C(_).error("حالت فعلی تایید می باشد")}," تایید ",8,se)]),_:2},1024),m(f,{class:"red"},{default:o(()=>[a("div",{onClick:g=>t.sts!==3?T(t.id,3):C(_).error("حالت فعلی عدم تایید می باشد")}," عدم تایید ",8,le)]),_:2},1024)]),_:2},1024)]),default:o(()=>[m(s,{style:{cursor:"pointer"},color:t.sts===1?"":t.sts===2?"green":t.sts===3?"red":"",onClick:e[0]||(e[0]=g=>g.preventDefault())},{default:o(()=>[c(w(t.sts===1?"در انتظار تایید":t.sts===2?"تایید":"عدم تایید")+" ",1),m(C(Q))]),_:2},1032,["color"])]),_:2},1024)):y("",!0)]),opt:o(({record:t})=>[a("div",ae,[v("comment.view")?(i(),d(V,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"EyeIcon",title:"مشاهده دیدگاه",onClick:g=>O(t)},null,8,["onClick"])):y("",!0),v("comment.remove")?(i(),d(V,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon","pop-title":"دیدگاه حذف شود؟",onClick:g=>P(t.id)},null,8,["onClick"])):y("",!0)])]),_:1},8,["model"]),m(q,{open:k.value,"onUpdate:open":e[5]||(e[5]=t=>k.value=t),title:"مشاهده دیدگاه",width:"80%","wrap-class-name":"detail-modal"},{footer:o(()=>[m(R,{onClick:e[4]||(e[4]=t=>k.value=!1)},{default:o(()=>[...e[14]||(e[14]=[c("بستن",-1)])]),_:1})]),default:o(()=>[l.value?(i(),N("div",me,[a("ul",null,[a("li",ie,[a("span",re,[m(C(ee),{style:{"font-size":"48px",color:"#1c2d56"}})]),a("div",ue,[a("h5",null,w(l.value.customer&&l.value.customer.fname&&l.value.customer.lname?`${l.value.customer.fname} ${l.value.customer.lname}`:"بدون نام"),1),a("span",de," ارسال شده در تاریخ : "+w(l.value.caj?String(l.value.caj).split("-")[0]:null),1),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:$.value,"onUpdate:value":e[1]||(e[1]=t=>$.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1})]),a("ul",null,[a("li",ce,[e[13]||(e[13]=a("img",{src:F,alt:"comment author",class:"img border"},null,-1)),a("div",pe,[e[12]||(e[12]=a("h5",null,"ادمین",-1)),l.value.reply&&l.value.reply[0]?(i(),N("span",_e," ارسال شده در تاریخ : "+w(l.value.reply[0].caj?String(l.value.reply[0].caj).split("-")[0]:""),1)):y("",!0),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:b.value,"onUpdate:value":e[2]||(e[2]=t=>b.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1}),(E.value||I.value)&&v("comment.view.edit")?(i(),d(R,{key:1,class:"mr-4",onClick:e[3]||(e[3]=t=>G(l.value))},{default:o(()=>[...e[11]||(e[11]=[c(" ثبت تغییرات ",-1)])]),_:1})):y("",!0)])])])])])])):y("",!0)]),_:1},8,["open"])]),_:1})])}}}),Re=Y(ve,[["__scopeId","data-v-a75e1991"]]);export{Re as default}; +import{_ as F}from"./brand-icon-COpT6LnI.js";import{a as H,b as p,X as J}from"./model-btNVLLyF.js";import{_ as V}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js";import{u as z,d as K,b as N,c as m,w as o,r as u,o as i,h as C,p as a,a as d,i as y,f as c,t as w,Z as Q,G as _,m as S,s as X,j as W,y as B,_ as Y}from"./index-eLNLLYwC.js";import{U as ee}from"./UserOutlined-B4M5rNrX.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./icons-DaMkWfMK.js";import"./UnorderedListOutlined-cPIiOEaQ.js";import"./PercentageOutlined-DyprS4lh.js";import"./UserAddOutlined-GWNEdhY8.js";import"./CreditCardOutlined-CcvN7g1Z.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./TeamOutlined-Bx4ezhPp.js";import"./CameraOutlined-CFYC5ScW.js";function te(){const x=z(),r=new H("admin/comments/list","لیست دیدگاه ها");return r.add(new p("product_id","شناسه محصول").filterNumber().hidden()),r.add(new p("product.title","نام محصول").filterNumber().renderSlot("productName")),r.add(new p("customer.id","شناسه نویسنده دیدگاه").filterNumber().hidden()),r.add(new p("customer","نام نویسنده ").filterText().renderSlot("customer")),r.add(new p("reply","پاسخ").renderSlot("reply").noSort()),r.add(new p("sts","وضعیت").renderSlot("sts").noSort()),x.roles&&x.roles.includes("comment.state")&&r.add(new p("changeState","تغییر وضعیت").renderSlot("changeState").noSort()),r.add(new p("opt","عملیات").noSort().renderSlot("opt")),r}const oe={id:"page-user-list"},ne=["href"],se=["onClick"],le=["onClick"],ae={class:"flex"},me={key:0,class:"comments-list"},ie={class:"comment-item"},re={class:"img"},ue={class:"comment-body"},de={class:"time"},ce={class:"comment-item"},pe={class:"comment-body"},_e={key:0,class:"time"},ve=K({__name:"Comments",setup(x){const r=z(),v=n=>!!r.hasPermission(n),D=te(),h=S(null),l=S(void 0),k=S(!1),$=S(""),b=S(""),I=X(()=>{var n;return $.value!==(((n=l.value)==null?void 0:n.comment)??"")}),E=X(()=>{var n,e,s;return b.value!==(((s=(e=(n=l.value)==null?void 0:n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"")});function L(n){var s,f;const e=String(((s=n.product)==null?void 0:s.title)??"").split(" ").join("-");return`${W.siteUrl}/product/${e}/${(f=n.product)==null?void 0:f.id}`}async function T(n,e){var s;try{await B.post("comment/sts",{id:n,sts:e}),_.info("تغییرات ثبت شد "),(s=h.value)==null||s.fetch()}catch{_.error("خطا در تغییر وضعیت")}}function O(n){var e,s;l.value=n,$.value=n.comment??"",b.value=((s=(e=n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"",k.value=!0}async function P(n){var e;try{await B.delete(`comment/${n}`),_.info("دیدگاه حذف شد"),(e=h.value)==null||e.fetch()}catch{_.error("خطا در حذف")}}async function G(n){var e;try{await B.post("comment",{product_id:n.product_id,customer_id:n.customer_id,comment:b.value,reply_to:n.id}),_.info("تغییرات ثبت شد "),k.value=!1,(e=h.value)==null||e.fetch()}catch{_.error("خطا در ثبت تغییرات")}}return(n,e)=>{const s=u("a-tag"),f=u("a-menu-item"),M=u("a-menu"),Z=u("a-dropdown"),U=u("a-textarea"),j=u("a-form-item"),R=u("a-button"),q=u("a-modal"),A=u("a-card");return i(),N("div",oe,[m(A,{title:"لیست دیدگاه ها",class:"page-card"},{default:o(()=>[m(J,{ref_key:"tbl",ref:h,model:C(D),"mobile-cards":""},{customer:o(({text:t})=>[c(w(t&&t.fname&&t.lname?`${t.fname} ${t.lname}`:"بدون نام"),1)]),productName:o(({record:t})=>[a("a",{href:L(t),target:"_blank"},w(t.product.title),9,ne)]),sts:o(({text:t})=>[t==1?(i(),d(s,{key:0},{default:o(()=>[...e[6]||(e[6]=[c("در انتظار تایید",-1)])]),_:1})):t==2?(i(),d(s,{key:1,color:"green"},{default:o(()=>[...e[7]||(e[7]=[c("تایید شده",-1)])]),_:1})):(i(),d(s,{key:2,color:"red"},{default:o(()=>[...e[8]||(e[8]=[c("عدم تایید",-1)])]),_:1}))]),reply:o(({text:t})=>[t&&t.length>0&&t[0].comment!==null?(i(),d(s,{key:0,color:"green"},{default:o(()=>[...e[9]||(e[9]=[c(" پاسخ داده شده ",-1)])]),_:1})):(i(),d(s,{key:1},{default:o(()=>[...e[10]||(e[10]=[c("بدون پاسخ",-1)])]),_:1}))]),changeState:o(({record:t})=>[v("comment.state")?(i(),d(Z,{key:0},{overlay:o(()=>[m(M,null,{default:o(()=>[m(f,null,{default:o(()=>[a("div",{onClick:g=>t.sts!==2?T(t.id,2):C(_).error("حالت فعلی تایید می باشد")}," تایید ",8,se)]),_:2},1024),m(f,{class:"red"},{default:o(()=>[a("div",{onClick:g=>t.sts!==3?T(t.id,3):C(_).error("حالت فعلی عدم تایید می باشد")}," عدم تایید ",8,le)]),_:2},1024)]),_:2},1024)]),default:o(()=>[m(s,{style:{cursor:"pointer"},color:t.sts===1?"":t.sts===2?"green":t.sts===3?"red":"",onClick:e[0]||(e[0]=g=>g.preventDefault())},{default:o(()=>[c(w(t.sts===1?"در انتظار تایید":t.sts===2?"تایید":"عدم تایید")+" ",1),m(C(Q))]),_:2},1032,["color"])]),_:2},1024)):y("",!0)]),opt:o(({record:t})=>[a("div",ae,[v("comment.view")?(i(),d(V,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"EyeIcon",title:"مشاهده دیدگاه",onClick:g=>O(t)},null,8,["onClick"])):y("",!0),v("comment.remove")?(i(),d(V,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon","pop-title":"دیدگاه حذف شود؟",onClick:g=>P(t.id)},null,8,["onClick"])):y("",!0)])]),_:1},8,["model"]),m(q,{open:k.value,"onUpdate:open":e[5]||(e[5]=t=>k.value=t),title:"مشاهده دیدگاه",width:"80%","wrap-class-name":"detail-modal"},{footer:o(()=>[m(R,{onClick:e[4]||(e[4]=t=>k.value=!1)},{default:o(()=>[...e[14]||(e[14]=[c("بستن",-1)])]),_:1})]),default:o(()=>[l.value?(i(),N("div",me,[a("ul",null,[a("li",ie,[a("span",re,[m(C(ee),{style:{"font-size":"48px",color:"#1c2d56"}})]),a("div",ue,[a("h5",null,w(l.value.customer&&l.value.customer.fname&&l.value.customer.lname?`${l.value.customer.fname} ${l.value.customer.lname}`:"بدون نام"),1),a("span",de," ارسال شده در تاریخ : "+w(l.value.caj?String(l.value.caj).split("-")[0]:null),1),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:$.value,"onUpdate:value":e[1]||(e[1]=t=>$.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1})]),a("ul",null,[a("li",ce,[e[13]||(e[13]=a("img",{src:F,alt:"comment author",class:"img border"},null,-1)),a("div",pe,[e[12]||(e[12]=a("h5",null,"ادمین",-1)),l.value.reply&&l.value.reply[0]?(i(),N("span",_e," ارسال شده در تاریخ : "+w(l.value.reply[0].caj?String(l.value.reply[0].caj).split("-")[0]:""),1)):y("",!0),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:b.value,"onUpdate:value":e[2]||(e[2]=t=>b.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1}),(E.value||I.value)&&v("comment.view.edit")?(i(),d(R,{key:1,class:"mr-4",onClick:e[3]||(e[3]=t=>G(l.value))},{default:o(()=>[...e[11]||(e[11]=[c(" ثبت تغییرات ",-1)])]),_:1})):y("",!0)])])])])])])):y("",!0)]),_:1},8,["open"])]),_:1})])}}}),Re=Y(ve,[["__scopeId","data-v-a75e1991"]]);export{Re as default}; diff --git a/apps/admin-panel/dist/assets/Const-CvgkKjTn.js b/apps/admin-panel/dist/assets/Const-CiWiRUCV.js similarity index 97% rename from apps/admin-panel/dist/assets/Const-CvgkKjTn.js rename to apps/admin-panel/dist/assets/Const-CiWiRUCV.js index 4a76351..2b68b9f 100644 --- a/apps/admin-panel/dist/assets/Const-CvgkKjTn.js +++ b/apps/admin-panel/dist/assets/Const-CiWiRUCV.js @@ -1 +1 @@ -import{d as _e,u as fe,x as ye,y as p,a as v,w as n,i as m,m as i,r as u,o,c as a,p as _,f as y,b as w,h as C,E as R,D as z,F as S,e as W,t as A,P as ge,G as d,_ as ke}from"./index-DajPj7Ec.js";import{u as be}from"./useDeleteHandler-CdwhuWqX.js";import{_ as Ce}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";const xe={class:"row"},we={class:"row"},he={class:"mt-4 tags"},Be={class:"slider-toolbar"},Ee={class:"slider-count"},Ie={class:"row"},$e={key:1,class:"slider-grid"},Pe={class:"slide-card__head"},Ue={class:"slide-card__title"},Ve={class:"slide-card__media"},Se={class:"row"},Ae=_e({__name:"Const",setup(Te){const T=fe(),x=e=>!!T.hasPermission(e),D=i(!1),F=i([]),h=i(""),E=i(!1),I=i(""),G=i(void 0),X=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}],g=i([]),$=i(""),k=i([]),H=i([]),b=i(""),B=i(!1),M=i(void 0),Y=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}];async function P(){const{data:e}=await p.get("brand");F.value=e}async function L(){var e,t;if(h.value.trim())try{await p.post("brand/create",{title:h.value.trim()}),h.value="",await P(),d.success("برند اضافه شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در افزودن برند")}}function Z(e){G.value=e.id,I.value=e.title,E.value=!0}async function ee(){var e,t;try{await p.put(`brand/${G.value}`,{title:I.value}),E.value=!1,await P(),d.success("تغییرات ثبت شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ویرایش")}}const{remove:te}=be({onSuccess:P,successMessage:"برند حذف شد",fallbackErrorMessage:"خطا در حذف برند"});function ae(e){return te(`brand/${e}`)}function j(){const e=$.value.trim();e&&(g.value.includes(e)||g.value.push(e),$.value="")}function se(e){g.value.splice(e,1)}async function ne(){var e,t;try{await p.put("const/__list__tags",{val:g.value}),d.success("برچسب ها ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}function le(){k.value.push({image:"",link:""})}function oe(e){k.value.splice(e,1)}async function ie(){var e,t;try{await p.put("const/slider",{val:k.value}),d.success("اسلایدر ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}async function N(){const{data:e}=await p.post("ciny",{page:1,limit:200});H.value=e.rows??e}async function q(){var e,t;if(b.value.trim())try{B.value?await p.put(`ciny/${M.value}`,{title:b.value.trim()}):await p.post("ciny/create",{title:b.value.trim()}),J(),await N(),d.success("عملیات انجام شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا")}}function re(e){B.value=!0,M.value=e.id,b.value=e.title}function J(){B.value=!1,M.value=void 0,b.value=""}async function ce(e){var t,s;try{await p.delete(`ciny/${e}`),await N(),d.success("حذف شد")}catch(r){d.error(((s=(t=r==null?void 0:r.response)==null?void 0:t.data)==null?void 0:s.message)??"خطا در حذف")}}return ye(async()=>{try{D.value=!0,await Promise.all([P(),T.isSuperAdmin?N():Promise.resolve()]);const[e,t]=await Promise.all([p.get("const/__list__tags"),p.get("const/slider")]);g.value=Array.isArray(e.data)?e.data:[],k.value=Array.isArray(t.data)?t.data:[]}catch(e){console.log(e)}finally{D.value=!1}}),(e,t)=>{const s=u("a-input"),r=u("a-button"),U=u("a-tooltip"),O=u("a-popconfirm"),K=u("a-table"),V=u("a-tab-pane"),ue=u("a-tag"),Q=u("a-empty"),de=u("a-tabs"),pe=u("a-spin"),ve=u("a-modal"),me=u("a-card");return x("config.statics")?(o(),v(me,{key:0,title:"مدیریت ثابت ها",class:"page-card table-scroll"},{default:n(()=>[a(pe,{spinning:D.value},{default:n(()=>[a(de,null,{default:n(()=>[a(V,{key:"brands",tab:"برند ها"},{default:n(()=>[_("div",xe,[a(s,{value:h.value,"onUpdate:value":t[0]||(t[0]=l=>h.value=l),placeholder:"نام برند",style:{"max-width":"260px"},onPressEnter:L},null,8,["value"]),x("config.statics.brand.create")?(o(),v(r,{key:0,type:"primary",onClick:L},{default:n(()=>[...t[5]||(t[5]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":F.value,columns:X,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[x("config.statics.brand.edit")?(o(),v(U,{key:0,title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>Z(c)},null,8,["onClick"])]),_:2},1024)):m("",!0),x("config.statics.brand.remove")?(o(),v(U,{key:1,title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ae(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):m("",!0)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1}),a(V,{key:"tags",tab:"برچسب ها"},{default:n(()=>[_("div",we,[a(s,{value:$.value,"onUpdate:value":t[1]||(t[1]=l=>$.value=l),placeholder:"برچسب",style:{"max-width":"260px"},onPressEnter:j},null,8,["value"]),x("config.statics.tags.create")?(o(),v(r,{key:0,type:"primary",onClick:j},{default:n(()=>[...t[6]||(t[6]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),_("div",he,[(o(!0),w(S,null,W(g.value,(l,c)=>(o(),v(ue,{key:c,closable:x("config.statics.tags.remove"),onClose:f=>se(c)},{default:n(()=>[y(A(l),1)]),_:2},1032,["closable","onClose"]))),128)),g.value.length===0?(o(),v(Q,{key:0,description:"برچسبی ثبت نشده است"})):m("",!0)]),a(r,{class:"mt-4",type:"primary",onClick:ne},{default:n(()=>[...t[7]||(t[7]=[y("ذخیره برچسب ها",-1)])]),_:1})]),_:1}),a(V,{key:"slider",tab:"اسلایدر موبایل"},{default:n(()=>[_("div",Be,[_("span",Ee,A(k.value.length)+" اسلاید",1),_("div",Ie,[a(r,{onClick:le},{icon:n(()=>[a(C(ge))]),default:n(()=>[t[8]||(t[8]=y(" افزودن اسلاید ",-1))]),_:1}),a(r,{type:"primary",onClick:ie},{default:n(()=>[...t[9]||(t[9]=[y("ذخیره اسلایدر",-1)])]),_:1})])]),k.value.length===0?(o(),v(Q,{key:0,description:"اسلایدی ثبت نشده است"})):(o(),w("div",$e,[(o(!0),w(S,null,W(k.value,(l,c)=>(o(),w("div",{key:c,class:"slide-card"},[_("div",Pe,[_("span",Ue,"اسلاید "+A(c+1),1),a(O,{"ok-text":"بله","cancel-text":"خیر",title:"این اسلاید حذف شود؟",onConfirm:f=>oe(c)},{default:n(()=>[a(r,{type:"text",danger:"",size:"small",title:"حذف"},{icon:n(()=>[a(C(z))]),_:1})]),_:1},8,["onConfirm"])]),_("div",Ve,[a(Ce,{modelValue:l.image,"onUpdate:modelValue":f=>l.image=f,purpose:"slider",placeholder:"تصویر اسلاید"},null,8,["modelValue","onUpdate:modelValue"])]),a(s,{value:l.link,"onUpdate:value":f=>l.link=f,placeholder:"لینک"},null,8,["value","onUpdate:value"])]))),128))]))]),_:1}),C(T).isSuperAdmin?(o(),v(V,{key:"collections",tab:"سینی ها"},{default:n(()=>[_("div",Se,[a(s,{value:b.value,"onUpdate:value":t[2]||(t[2]=l=>b.value=l),placeholder:"نام سینی",style:{"max-width":"260px"},onPressEnter:q},null,8,["value"]),a(r,{type:"primary",onClick:q},{default:n(()=>[y(A(B.value?"ویرایش":"ثبت")+" سینی ",1)]),_:1}),B.value?(o(),v(r,{key:0,onClick:J},{default:n(()=>[...t[10]||(t[10]=[y("انصراف",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":H.value,columns:Y,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[a(U,{title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>re(c)},null,8,["onClick"])]),_:2},1024),a(U,{title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ce(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1})):m("",!0)]),_:1})]),_:1},8,["spinning"]),a(ve,{open:E.value,"onUpdate:open":t[4]||(t[4]=l=>E.value=l),title:"ویرایش برند",onOk:ee},{default:n(()=>[a(s,{value:I.value,"onUpdate:value":t[3]||(t[3]=l=>I.value=l)},null,8,["value"])]),_:1},8,["open"])]),_:1})):m("",!0)}}}),Oe=ke(Ae,[["__scopeId","data-v-b55e5eb0"]]);export{Oe as default}; +import{d as _e,u as fe,x as ye,y as p,a as v,w as n,i as m,m as i,r as u,o,c as a,p as _,f as y,b as w,h as C,E as R,D as z,F as S,e as W,t as A,P as ge,G as d,_ as ke}from"./index-eLNLLYwC.js";import{u as be}from"./useDeleteHandler-BHXHWuUG.js";import{_ as Ce}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";const xe={class:"row"},we={class:"row"},he={class:"mt-4 tags"},Be={class:"slider-toolbar"},Ee={class:"slider-count"},Ie={class:"row"},$e={key:1,class:"slider-grid"},Pe={class:"slide-card__head"},Ue={class:"slide-card__title"},Ve={class:"slide-card__media"},Se={class:"row"},Ae=_e({__name:"Const",setup(Te){const T=fe(),x=e=>!!T.hasPermission(e),D=i(!1),F=i([]),h=i(""),E=i(!1),I=i(""),G=i(void 0),X=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}],g=i([]),$=i(""),k=i([]),H=i([]),b=i(""),B=i(!1),M=i(void 0),Y=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}];async function P(){const{data:e}=await p.get("brand");F.value=e}async function L(){var e,t;if(h.value.trim())try{await p.post("brand/create",{title:h.value.trim()}),h.value="",await P(),d.success("برند اضافه شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در افزودن برند")}}function Z(e){G.value=e.id,I.value=e.title,E.value=!0}async function ee(){var e,t;try{await p.put(`brand/${G.value}`,{title:I.value}),E.value=!1,await P(),d.success("تغییرات ثبت شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ویرایش")}}const{remove:te}=be({onSuccess:P,successMessage:"برند حذف شد",fallbackErrorMessage:"خطا در حذف برند"});function ae(e){return te(`brand/${e}`)}function j(){const e=$.value.trim();e&&(g.value.includes(e)||g.value.push(e),$.value="")}function se(e){g.value.splice(e,1)}async function ne(){var e,t;try{await p.put("const/__list__tags",{val:g.value}),d.success("برچسب ها ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}function le(){k.value.push({image:"",link:""})}function oe(e){k.value.splice(e,1)}async function ie(){var e,t;try{await p.put("const/slider",{val:k.value}),d.success("اسلایدر ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}async function N(){const{data:e}=await p.post("ciny",{page:1,limit:200});H.value=e.rows??e}async function q(){var e,t;if(b.value.trim())try{B.value?await p.put(`ciny/${M.value}`,{title:b.value.trim()}):await p.post("ciny/create",{title:b.value.trim()}),J(),await N(),d.success("عملیات انجام شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا")}}function re(e){B.value=!0,M.value=e.id,b.value=e.title}function J(){B.value=!1,M.value=void 0,b.value=""}async function ce(e){var t,s;try{await p.delete(`ciny/${e}`),await N(),d.success("حذف شد")}catch(r){d.error(((s=(t=r==null?void 0:r.response)==null?void 0:t.data)==null?void 0:s.message)??"خطا در حذف")}}return ye(async()=>{try{D.value=!0,await Promise.all([P(),T.isSuperAdmin?N():Promise.resolve()]);const[e,t]=await Promise.all([p.get("const/__list__tags"),p.get("const/slider")]);g.value=Array.isArray(e.data)?e.data:[],k.value=Array.isArray(t.data)?t.data:[]}catch(e){console.log(e)}finally{D.value=!1}}),(e,t)=>{const s=u("a-input"),r=u("a-button"),U=u("a-tooltip"),O=u("a-popconfirm"),K=u("a-table"),V=u("a-tab-pane"),ue=u("a-tag"),Q=u("a-empty"),de=u("a-tabs"),pe=u("a-spin"),ve=u("a-modal"),me=u("a-card");return x("config.statics")?(o(),v(me,{key:0,title:"مدیریت ثابت ها",class:"page-card table-scroll"},{default:n(()=>[a(pe,{spinning:D.value},{default:n(()=>[a(de,null,{default:n(()=>[a(V,{key:"brands",tab:"برند ها"},{default:n(()=>[_("div",xe,[a(s,{value:h.value,"onUpdate:value":t[0]||(t[0]=l=>h.value=l),placeholder:"نام برند",style:{"max-width":"260px"},onPressEnter:L},null,8,["value"]),x("config.statics.brand.create")?(o(),v(r,{key:0,type:"primary",onClick:L},{default:n(()=>[...t[5]||(t[5]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":F.value,columns:X,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[x("config.statics.brand.edit")?(o(),v(U,{key:0,title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>Z(c)},null,8,["onClick"])]),_:2},1024)):m("",!0),x("config.statics.brand.remove")?(o(),v(U,{key:1,title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ae(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):m("",!0)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1}),a(V,{key:"tags",tab:"برچسب ها"},{default:n(()=>[_("div",we,[a(s,{value:$.value,"onUpdate:value":t[1]||(t[1]=l=>$.value=l),placeholder:"برچسب",style:{"max-width":"260px"},onPressEnter:j},null,8,["value"]),x("config.statics.tags.create")?(o(),v(r,{key:0,type:"primary",onClick:j},{default:n(()=>[...t[6]||(t[6]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),_("div",he,[(o(!0),w(S,null,W(g.value,(l,c)=>(o(),v(ue,{key:c,closable:x("config.statics.tags.remove"),onClose:f=>se(c)},{default:n(()=>[y(A(l),1)]),_:2},1032,["closable","onClose"]))),128)),g.value.length===0?(o(),v(Q,{key:0,description:"برچسبی ثبت نشده است"})):m("",!0)]),a(r,{class:"mt-4",type:"primary",onClick:ne},{default:n(()=>[...t[7]||(t[7]=[y("ذخیره برچسب ها",-1)])]),_:1})]),_:1}),a(V,{key:"slider",tab:"اسلایدر موبایل"},{default:n(()=>[_("div",Be,[_("span",Ee,A(k.value.length)+" اسلاید",1),_("div",Ie,[a(r,{onClick:le},{icon:n(()=>[a(C(ge))]),default:n(()=>[t[8]||(t[8]=y(" افزودن اسلاید ",-1))]),_:1}),a(r,{type:"primary",onClick:ie},{default:n(()=>[...t[9]||(t[9]=[y("ذخیره اسلایدر",-1)])]),_:1})])]),k.value.length===0?(o(),v(Q,{key:0,description:"اسلایدی ثبت نشده است"})):(o(),w("div",$e,[(o(!0),w(S,null,W(k.value,(l,c)=>(o(),w("div",{key:c,class:"slide-card"},[_("div",Pe,[_("span",Ue,"اسلاید "+A(c+1),1),a(O,{"ok-text":"بله","cancel-text":"خیر",title:"این اسلاید حذف شود؟",onConfirm:f=>oe(c)},{default:n(()=>[a(r,{type:"text",danger:"",size:"small",title:"حذف"},{icon:n(()=>[a(C(z))]),_:1})]),_:1},8,["onConfirm"])]),_("div",Ve,[a(Ce,{modelValue:l.image,"onUpdate:modelValue":f=>l.image=f,purpose:"slider",placeholder:"تصویر اسلاید"},null,8,["modelValue","onUpdate:modelValue"])]),a(s,{value:l.link,"onUpdate:value":f=>l.link=f,placeholder:"لینک"},null,8,["value","onUpdate:value"])]))),128))]))]),_:1}),C(T).isSuperAdmin?(o(),v(V,{key:"collections",tab:"سینی ها"},{default:n(()=>[_("div",Se,[a(s,{value:b.value,"onUpdate:value":t[2]||(t[2]=l=>b.value=l),placeholder:"نام سینی",style:{"max-width":"260px"},onPressEnter:q},null,8,["value"]),a(r,{type:"primary",onClick:q},{default:n(()=>[y(A(B.value?"ویرایش":"ثبت")+" سینی ",1)]),_:1}),B.value?(o(),v(r,{key:0,onClick:J},{default:n(()=>[...t[10]||(t[10]=[y("انصراف",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":H.value,columns:Y,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[a(U,{title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>re(c)},null,8,["onClick"])]),_:2},1024),a(U,{title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ce(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1})):m("",!0)]),_:1})]),_:1},8,["spinning"]),a(ve,{open:E.value,"onUpdate:open":t[4]||(t[4]=l=>E.value=l),title:"ویرایش برند",onOk:ee},{default:n(()=>[a(s,{value:I.value,"onUpdate:value":t[3]||(t[3]=l=>I.value=l)},null,8,["value"])]),_:1},8,["open"])]),_:1})):m("",!0)}}}),Oe=ke(Ae,[["__scopeId","data-v-b55e5eb0"]]);export{Oe as default}; diff --git a/apps/admin-panel/dist/assets/CreditCardOutlined-H5cAFLTI.js b/apps/admin-panel/dist/assets/CreditCardOutlined-CcvN7g1Z.js similarity index 93% rename from apps/admin-panel/dist/assets/CreditCardOutlined-H5cAFLTI.js rename to apps/admin-panel/dist/assets/CreditCardOutlined-CcvN7g1Z.js index a55cb1e..0a31ce0 100644 --- a/apps/admin-panel/dist/assets/CreditCardOutlined-H5cAFLTI.js +++ b/apps/admin-panel/dist/assets/CreditCardOutlined-CcvN7g1Z.js @@ -1 +1 @@ -import{c as u,I as l}from"./index-DajPj7Ec.js";var d={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-792 72h752v120H136V232zm752 560H136V440h752v352zm-237-64h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z"}}]},name:"credit-card",theme:"outlined"};function c(r){for(var t=1;tnew Me(u).setAlpha(l).toRgbString(),J=(u,l)=>new Me(u).lighten(l).toHexString(),mt=u=>{const l=Ue(u,{theme:"dark"});return{1:l[0],2:l[1],3:l[2],4:l[3],5:l[6],6:l[5],7:l[4],8:l[6],9:l[5],10:l[4]}},pt=(u,l)=>{const d=u||"#000",r=l||"#fff";return{colorBgBase:d,colorTextBase:r,colorText:U(r,.85),colorTextSecondary:U(r,.65),colorTextTertiary:U(r,.45),colorTextQuaternary:U(r,.25),colorFill:U(r,.18),colorFillSecondary:U(r,.12),colorFillTertiary:U(r,.08),colorFillQuaternary:U(r,.04),colorBgElevated:J(d,12),colorBgContainer:J(d,8),colorBgLayout:J(d,0),colorBgSpotlight:J(d,26),colorBorder:J(d,26),colorBorderSecondary:J(d,19)}},_t=(u,l)=>{const d=Object.keys(qe).map(E=>{const f=Ue(u[E],{theme:"dark"});return new Array(10).fill(1).reduce((k,_,$)=>(k[`${E}-${$+1}`]=f[$],k),{})}).reduce((E,f)=>(E=D(D({},E),f),E),{}),r=l??ue(u);return D(D(D({},r),d),Ke(u,{generateColorPalettes:mt,generateNeutralColorPalettes:pt}))};function gt(u){const{sizeUnit:l,sizeStep:d}=u,r=d-2;return{sizeXXL:l*(r+10),sizeXL:l*(r+6),sizeLG:l*(r+2),sizeMD:l*(r+2),sizeMS:l*(r+1),size:l*r,sizeSM:l*r,sizeXS:l*(r-1),sizeXXS:l*(r-1)}}const yt=(u,l)=>{const d=l??ue(u),r=d.fontSizeSM,E=d.controlHeight-4;return D(D(D(D(D({},d),gt(l??u)),Ze(r)),{controlHeight:E}),et(D(D({},d),{controlHeight:E})))};function bt(){const[u,l,d]=tt();return{theme:u,token:l,hashId:d}}const Ye={defaultConfig:je,defaultSeed:je.token,useToken:bt,defaultAlgorithm:ue,darkAlgorithm:_t,compactAlgorithm:yt},ft={class:"acc-head"},kt={class:"acc-body"},ht={class:"acc-code"},Et={class:"code",dir:"ltr"},xt={class:"origin"},It={key:1,class:"muted"},St={class:"balances"},Ct={class:"balance"},Tt={class:"line"},Nt={class:"line"},Rt={class:"hint"},Dt={class:"balance"},wt={class:"line"},At={class:"line"},Ot={key:0,class:"last-job"},$t={key:0,class:"warn"},Pt={class:"link-form"},jt={class:"label"},zt={class:"link-row"},Bt=Fe({__name:"CustomerAccountingCard",props:{customerId:{}},setup(u){const l=u,d={LINKED:"جفت با موبایل",IMPORTED:"وارد شده از حسابداری",PUSHED:"ساخته شده از اپ",MANUAL:"دستی"},r={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},E={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"success"},f=Ve(),{token:k}=Ye.useToken(),_=A(null),$=A(!1),i=A(""),L=O(()=>({"--acc-bg":k.value.colorBgContainer,"--acc-border":k.value.colorBorderSecondary,"--acc-fill":k.value.colorFillQuaternary,"--acc-text":k.value.colorText,"--acc-text-2":k.value.colorTextSecondary,"--acc-text-3":k.value.colorTextTertiary,"--acc-error":k.value.colorError,"--acc-success":k.value.colorSuccess})),V=O(()=>!!f.hasPermission("config.accounting")&&_.value&&_.value.provider!=="none"),T=O(()=>{var y,o;return(o=(y=_.value)==null?void 0:y.jobs)==null?void 0:o[0]}),P=(y,o)=>y==null?"—":Number(y).toLocaleString("fa-IR",{maximumFractionDigits:o}),j=y=>Number(y)>0?"debt":Number(y)<0?"credit":"",Z=y=>y?rt(y).format("jYYYY/jMM/jDD HH:mm"):"";async function Y(){if(f.hasPermission("config.accounting")){$.value=!0;try{const{data:y}=await B.get(`admin/accounting/customers/${l.customerId}`);_.value=y}catch{_.value=null}finally{$.value=!1}}}async function ee(){var y,o;try{await B.post("admin/accounting/links",{entityType:"CUSTOMER",entityId:l.customerId,externalCode:i.value.trim()}),ze.success("لینک شد"),i.value="",Y()}catch(M){ze.error(((o=(y=M==null?void 0:M.response)==null?void 0:y.data)==null?void 0:o.message)??"خطا")}}async function ie(){var y;(y=_.value)!=null&&y.link&&(await B.delete(`admin/accounting/links/${_.value.link.id}`),Y())}return Ge(Y),(y,o)=>{var G;const M=C("a-tag"),x=C("a-badge"),te=C("a-input"),q=C("a-button"),X=C("a-popconfirm"),re=C("a-spin");return V.value?(n(),p("section",{key:0,class:"acc-card",style:He(L.value)},[e("header",ft,[o[4]||(o[4]=e("h2",null,"حسابداری",-1)),(G=_.value)!=null&&G.link?(n(),R(M,{key:0,color:"success"},{default:m(()=>[...o[2]||(o[2]=[c("لینک شده",-1)])]),_:1})):(n(),R(M,{key:1,color:"warning"},{default:m(()=>[...o[3]||(o[3]=[c("لینک نشده",-1)])]),_:1}))]),b(re,{spinning:$.value},{default:m(()=>{var ae,le,se,K,t,a,w,N,z,oe,H,W;return[e("div",kt,[e("div",ht,[o[5]||(o[5]=e("span",{class:"label"},"کد حساب",-1)),(ae=_.value)!=null&&ae.link?(n(),p(S,{key:0},[e("span",Et,s(_.value.link.externalCode),1),e("span",xt,s(d[_.value.link.origin]??_.value.link.origin),1)],64)):(n(),p("span",It,"—"))]),e("div",St,[e("div",Ct,[o[10]||(o[10]=e("div",{class:"label"},"مانده‌ی حسابداری",-1)),(le=_.value)!=null&&le.accounting?(n(),p(S,{key:0},[e("div",Tt,[e("span",{class:F(j(_.value.accounting.gold))},s(P(_.value.accounting.gold,3)),3),o[6]||(o[6]=e("small",null,"گرم",-1))]),e("div",Nt,[e("span",{class:F(j(_.value.accounting.rial))},s(P(_.value.accounting.rial,0)),3),o[7]||(o[7]=e("small",null,"ریال",-1))]),e("div",Rt,s(Z(_.value.accounting.at)),1)],64)):(n(),p(S,{key:1},[o[8]||(o[8]=e("div",{class:"line muted"},"—",-1)),o[9]||(o[9]=e("div",{class:"hint"},"هنوز دریافت نشده",-1))],64))]),e("div",Dt,[o[13]||(o[13]=e("div",{class:"label"},"مانده‌ی دفتر اپ",-1)),e("div",wt,[e("span",{class:F(j((K=(se=_.value)==null?void 0:se.internal)==null?void 0:K.gold))},s(P((a=(t=_.value)==null?void 0:t.internal)==null?void 0:a.gold,3)),3),o[11]||(o[11]=e("small",null,"گرم",-1))]),e("div",At,[e("span",{class:F(j((N=(w=_.value)==null?void 0:w.internal)==null?void 0:N.rial))},s(P((oe=(z=_.value)==null?void 0:z.internal)==null?void 0:oe.rial,0)),3),o[12]||(o[12]=e("small",null,"ریال",-1))]),o[14]||(o[14]=e("div",{class:"hint"},"مبنای سقف اعتبار",-1))])]),T.value?(n(),p("div",Ot,[b(x,{status:E[T.value.status]??"default"},null,8,["status"]),c(" آخرین ارسال: "+s(r[T.value.status]??T.value.status)+" — "+s(Z(T.value.updatedAt))+" ",1),T.value.lastError?(n(),p("div",$t,s(T.value.lastError),1)):h("",!0)])):h("",!0),e("div",Pt,[e("div",jt,s((H=_.value)!=null&&H.link?"تغییر لینک":"لینک دستی"),1),e("div",zt,[b(te,{value:i.value,"onUpdate:value":o[0]||(o[0]=ne=>i.value=ne),dir:"ltr",placeholder:"کد حساب در حسابداری",onPressEnter:o[1]||(o[1]=ne=>i.value.trim()&&ee())},null,8,["value"]),b(q,{type:"primary",ghost:"",disabled:!i.value.trim(),onClick:ee},{default:m(()=>[...o[15]||(o[15]=[c("لینک",-1)])]),_:1},8,["disabled"])]),(W=_.value)!=null&&W.link?(n(),R(X,{key:0,title:"لینک حذف شود؟",onConfirm:ie},{default:m(()=>[b(q,{type:"link",danger:"",size:"small",class:"unlink"},{default:m(()=>[...o[16]||(o[16]=[c("حذف لینک فعلی",-1)])]),_:1})]),_:1})):h("",!0)])])]}),_:1},8,["spinning"])],4)):h("",!0)}}}),Lt=We(Bt,[["__scopeId","data-v-17e381b4"]]),Mt={class:"panel hero"},Ut={class:"hero-main"},Ft={class:"hero-text"},Vt={class:"hero-eyebrow"},Gt={class:"hero-name"},Ht={class:"hero-tags"},Wt={class:"hero-meta"},Yt={key:0,class:"meta-item"},Xt={dir:"ltr"},Qt={key:1,class:"meta-item"},Jt={key:2,class:"meta-item"},qt={key:3,class:"meta-item"},Kt={class:"hero-actions"},Zt={class:"kpis"},ea={class:"panel kpi"},ta={class:"kpi-foot"},aa={class:"panel kpi"},la={class:"kpi-foot"},sa={class:"panel kpi"},oa={class:"kpi-value"},na={class:"kpi-foot"},ia={key:1,class:"kpi-foot"},ra={class:"panel kpi"},ua={class:"kpi-value"},da={class:"panel kpi"},ca={class:"kpi-value"},va={class:"kpi-foot"},ma={class:"layout"},pa={class:"panel layout-main"},_a={class:"tab-count"},ga={key:0,class:"mono",dir:"ltr"},ya={class:"tab-count"},ba={class:"unit"},fa={key:3,class:"note"},ka={class:"tab-count"},ha={class:"tab-count"},Ea={key:0,dir:"ltr"},xa={class:"layout-side"},Ia={class:"panel"},Sa={class:"facts"},Ca=["dir"],Ta={key:0,class:"panel"},Na={class:"facts"},Ra=Fe({__name:"CustomerDetail",props:{title:{default:"مشاهده اطلاعات مشتری"},showWallet:{type:Boolean,default:!1},showActivity:{type:Boolean,default:!1},defaultTab:{default:"orders"},editRoute:{default:void 0}},setup(u){const l=u,d=at(),r=nt(),E=Ve(),{token:f}=Ye.useToken(),k=d.params.id,_=A(!1),$=A(l.defaultTab),i=A(void 0),L=A(void 0),V=A([]),T=A([]),P=A([]),j=A([]),Z=O(()=>({"--cd-bg":f.value.colorBgContainer,"--cd-border":f.value.colorBorderSecondary,"--cd-text":f.value.colorText,"--cd-text-2":f.value.colorTextSecondary,"--cd-text-3":f.value.colorTextTertiary,"--cd-fill":f.value.colorFillQuaternary,"--cd-primary":f.value.colorPrimary,"--cd-primary-bg":f.value.colorPrimaryBg,"--cd-error":f.value.colorError,"--cd-success":f.value.colorSuccess,"--cd-warning":f.value.colorWarning})),Y={SUSPENDED:{label:"معلق (عبور از سقف)",color:"error"},PLACED:{label:"ثبت سفارش",color:"default"},ADMIN_APPROVED:{label:"تأیید مدیر",color:"processing"},SOURCING:{label:"در حال تأمین",color:"processing"},PREPARING:{label:"در حال آماده‌سازی",color:"processing"},DELIVERED_TO_AGENT:{label:"تحویل مسئول فروش",color:"cyan"},DELIVERED_TO_CUSTOMER:{label:"تحویل مشتری",color:"success"},CANCELLED:{label:"لغو شده",color:"default"}},ee={ORDER_STOCK:"سفارش کالای موجود",ORDER_PRE_ORDER:"پیش‌سفارش",REPAYMENT_MELTED_GOLD:"تسویه با آبشده",REPAYMENT_TRANSFER:"تسویه با واریز",REPAYMENT_CHEQUE:"تسویه با چک",REPAYMENT_CASH:"تسویه نقدی",WALLET_BONUS:"پاداش کیف پول",ADJUSTMENT:"اصلاحیه"},ie=[{title:"شماره سفارش",dataIndex:"name"},{title:"وضعیت",dataIndex:"status"},{title:"وزن",dataIndex:"w"},{title:"تعداد آیتم",dataIndex:"items_count",align:"center"},{title:"شعبه",dataIndex:"branch"},{title:"تاریخ",dataIndex:"caj"}],y=[{title:"نوع",dataIndex:"type"},{title:"مقدار",dataIndex:"value"},{title:"وضعیت",dataIndex:"confirmed"},{title:"توضیحات",dataIndex:"note",ellipsis:!0},{title:"تاریخ",dataIndex:"caj"}],o=[{title:"مقدار",dataIndex:"value"},{title:"تاریخ اعطا",dataIndex:"caj"},{title:"انقضا",dataIndex:"expires_at"}],M=[{title:"عملیات",dataIndex:"action"},{title:"جزئیات",dataIndex:"detail"},{title:"تاریخ",dataIndex:"caj"}],x=(t,a)=>t==null||t===""||Number.isNaN(Number(t))?"—":Number(t).toLocaleString("fa-IR",{maximumFractionDigits:a}),te=t=>Number(t)>0?"debt":Number(t)<0?"credit":"",q=t=>t==null?"":Number(t)>0?"بدهکار":Number(t)<0?"بستانکار":"تسویه",X=(t,a)=>a>t?{pageSize:t,size:"small",showSizeChanger:!1}:!1,re=O(()=>{var t;return(((t=i.value)==null?void 0:t.name)??"").trim().charAt(0)||"؟"}),G=O(()=>{var w,N;const t=Number((w=i.value)==null?void 0:w.gram_level);if(!t||t<=0)return null;const a=Math.max(Number((N=i.value)==null?void 0:N.remain)||0,0);return Math.min(Math.round(a/t*100),100)}),ae=O(()=>{const t=G.value??0;return t>=90?f.value.colorError:t>=70?f.value.colorWarning:f.value.colorPrimary}),le=O(()=>{if(!l.editRoute||!r.hasRoute(l.editRoute))return!1;const t=r.resolve({name:l.editRoute,params:{id:k}}).meta;return t.superAdminOnly&&!E.isSuperAdmin?!1:!t.role||!!E.hasPermission(t.role)}),se=O(()=>{var a;const t=i.value;return[{label:"موبایل",value:t==null?void 0:t.mobile,ltr:!0},{label:"تلفن ثابت",value:t==null?void 0:t.phone,ltr:!0},{label:"کد ملی",value:t==null?void 0:t.national_code,ltr:!0},{label:"تاریخ تولد",value:t!=null&&t.birth_date?Q(t.birth_date):null},{label:"شهر",value:(a=t==null?void 0:t.city)==null?void 0:a.title},{label:"آدرس",value:t==null?void 0:t.address}]}),K=O(()=>{var a;const t=i.value;return[{label:"نام فروشگاه",value:t==null?void 0:t.store_name},{label:"پاساژ",value:t==null?void 0:t.pasazh_name},{label:"منطقه",value:t==null?void 0:t.zone},{label:"کد عضویت",value:t==null?void 0:t.mcode},{label:"کارشناس فروش",value:(a=t==null?void 0:t.reagent)==null?void 0:a.name},{label:"درصد اجرت",value:(t==null?void 0:t.percent)!==null&&(t==null?void 0:t.percent)!==void 0&&(t==null?void 0:t.percent)!==""?`${x(t.percent,2)}٪`:null}].filter(w=>w.value)});return Ge(async()=>{try{_.value=!0;const[t,a,w,N]=await Promise.all([B.get(`customer/${k}`),B.get(`major/dashboard/${k}`).catch(()=>({data:void 0})),B.get(`admin/customers-omde/${k}/orders`).catch(()=>({data:[]})),B.get(`admin/customers-omde/${k}/documents`).catch(()=>({data:[]}))]);if(i.value=t.data,L.value=a.data,V.value=w.data,T.value=N.data,l.showWallet){const z=await B.get(`admin/customers-omde/${k}/wallet`).catch(()=>({data:[]}));P.value=z.data}if(l.showActivity){const z=await B.get(`log/ago/${k}`).catch(()=>({data:[]}));j.value=z.data}}catch(t){console.log(t)}finally{_.value=!1}}),(t,a)=>{const w=C("a-avatar"),N=C("a-tag"),z=C("a-button"),oe=C("a-progress"),H=C("a-table"),W=C("a-tab-pane"),ne=C("a-badge"),Xe=C("a-tabs"),Qe=C("a-spin");return n(),R(Qe,{spinning:_.value},{default:m(()=>{var ce,ve,me,pe,_e,ge,ye,be,fe,ke,he,Ee,xe,Ie,Se,Ce,Te,Ne,Re,De,we,Ae,Oe;return[e("div",{class:"customer-detail",style:He(Z.value)},[e("section",Mt,[e("div",Ut,[b(w,{size:64,src:(ve=(ce=i.value)==null?void 0:ce.image)==null?void 0:ve.image,class:"hero-avatar"},{default:m(()=>[c(s(re.value),1)]),_:1},8,["src"]),e("div",Ft,[e("div",Vt,s(u.title),1),e("h1",Gt,s(((me=i.value)==null?void 0:me.name)||"—"),1),e("div",Ht,[i.value?(n(),R(N,{key:0,color:i.value.active===1?"success":"error"},{default:m(()=>[c(s(i.value.active===1?"فعال":"غیرفعال"),1)]),_:1},8,["color"])):h("",!0),i.value?(n(),R(N,{key:1,color:i.value.sts===1?"processing":"warning"},{default:m(()=>[c(s(i.value.sts===1?"مجاز به سفارش":"عدم سفارش"),1)]),_:1},8,["color"])):h("",!0),(pe=i.value)!=null&&pe.type_str?(n(),R(N,{key:2},{default:m(()=>[c(s(i.value.type_str),1)]),_:1})):h("",!0),((_e=i.value)==null?void 0:_e.is_archive)===1?(n(),R(N,{key:3,color:"default"},{default:m(()=>[...a[3]||(a[3]=[c("بایگانی‌شده",-1)])]),_:1})):h("",!0)]),e("div",Wt,[(ge=i.value)!=null&&ge.mobile?(n(),p("span",Yt,[b(I(de)),e("span",Xt,s(i.value.mobile),1)])):h("",!0),(be=(ye=i.value)==null?void 0:ye.city)!=null&&be.title?(n(),p("span",Qt,[b(I(ut)),c(" "+s(i.value.city.title),1)])):h("",!0),(ke=(fe=i.value)==null?void 0:fe.reagent)!=null&&ke.name?(n(),p("span",Jt,[b(I(dt)),c(" کارشناس فروش: "+s(i.value.reagent.name),1)])):h("",!0),(he=i.value)!=null&&he.caj?(n(),p("span",qt,[b(I(lt)),c(" عضویت از "+s(I(Q)(i.value.caj)),1)])):h("",!0)])])]),e("div",Kt,[b(z,{onClick:a[0]||(a[0]=v=>I(r).back())},{icon:m(()=>[b(I(st))]),default:m(()=>[a[4]||(a[4]=c(" بازگشت ",-1))]),_:1}),le.value?(n(),R(z,{key:0,type:"primary",onClick:a[1]||(a[1]=v=>I(r).push({name:u.editRoute,params:{id:I(k)}}))},{icon:m(()=>[b(I(ot))]),default:m(()=>[a[5]||(a[5]=c(" ویرایش مشتری ",-1))]),_:1})):h("",!0)])]),e("section",Zt,[e("div",ea,[a[7]||(a[7]=e("div",{class:"kpi-label"},"بدهی طلایی",-1)),e("div",{class:F(["kpi-value",te((Ee=i.value)==null?void 0:Ee.remain)])},[c(s(x((xe=i.value)==null?void 0:xe.remain,3)),1),a[6]||(a[6]=e("small",null,"گرم",-1))],2),e("div",ta,s(q((Ie=i.value)==null?void 0:Ie.remain)),1)]),e("div",aa,[a[9]||(a[9]=e("div",{class:"kpi-label"},"بدهی ریالی",-1)),e("div",{class:F(["kpi-value",te((Se=i.value)==null?void 0:Se.rial_remain)])},[c(s(x((Ce=i.value)==null?void 0:Ce.rial_remain,0)),1),a[8]||(a[8]=e("small",null,"ریال",-1))],2),e("div",la,s(q((Te=i.value)==null?void 0:Te.rial_remain)),1)]),e("div",sa,[a[11]||(a[11]=e("div",{class:"kpi-label"},"سقف اعتبار",-1)),e("div",oa,[c(s(x((Ne=i.value)==null?void 0:Ne.gram_level,3)),1),a[10]||(a[10]=e("small",null,"گرم",-1))]),G.value!==null?(n(),p(S,{key:0},[b(oe,{percent:G.value,"stroke-color":ae.value,"show-info":!1,size:"small",class:"kpi-progress"},null,8,["percent","stroke-color"]),e("div",na,s(x(G.value,0))+"٪ از سقف استفاده شده",1)],64)):(n(),p("div",ia,"سقفی تعیین نشده"))]),e("div",ra,[a[13]||(a[13]=e("div",{class:"kpi-label"},"میزان فروش",-1)),e("div",ua,[c(s(x((Re=L.value)==null?void 0:Re.grams_sell,3)),1),a[12]||(a[12]=e("small",null,"گرم",-1))]),a[14]||(a[14]=e("div",{class:"kpi-foot"},"مجموع وزن سفارش‌ها",-1))]),e("div",da,[a[15]||(a[15]=e("div",{class:"kpi-label"},"سفارش‌ها",-1)),e("div",ca,s(x(((De=L.value)==null?void 0:De.total_order)??V.value.length,0)),1),e("div",va,[e("span",{class:F({"text-warning":Number((we=L.value)==null?void 0:we.open_order)>0})},s(x((Ae=L.value)==null?void 0:Ae.open_order,0))+" باز ",3),c(" · "+s(x(((Oe=L.value)==null?void 0:Oe.ledger_entries)??T.value.length,0))+" سند ",1)])])]),e("div",ma,[e("section",pa,[b(Xe,{"active-key":$.value,"onUpdate:activeKey":a[2]||(a[2]=v=>$.value=v),class:"detail-tabs"},{default:m(()=>[b(W,{key:"orders"},{tab:m(()=>[a[16]||(a[16]=c(" سفارش‌ها ",-1)),e("span",_a,s(x(V.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":V.value,columns:ie,pagination:X(10,V.value.length),locale:{emptyText:"سفارشی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>{var $e;return[v.dataIndex==="name"?(n(),p("span",ga,s(g.name),1)):v.dataIndex==="w"?(n(),p(S,{key:1},[c(s(x(g.w,3))+" ",1),a[17]||(a[17]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="status"?(n(),R(N,{key:2,color:($e=Y[g.status])==null?void 0:$e.color},{default:m(()=>{var Pe;return[c(s(((Pe=Y[g.status])==null?void 0:Pe.label)??g.status??"—"),1)]}),_:2},1032,["color"])):v.dataIndex==="branch"?(n(),p(S,{key:3},[c(s(g.branch??"—"),1)],64)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]}),_:1},8,["data-source","pagination"])]),_:1}),b(W,{key:"documents"},{tab:m(()=>[a[18]||(a[18]=c(" سندهای مالی ",-1)),e("span",ya,s(x(T.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":T.value,columns:y,pagination:X(10,T.value.length),locale:{emptyText:"سندی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="type"?(n(),p(S,{key:0},[c(s(ee[g.type]??g.type),1)],64)):v.dataIndex==="value"?(n(),p(S,{key:1},[e("span",{class:F(g.direction==="DEBIT"?"debt":g.direction==="CREDIT"?"credit":"")},s(g.direction==="CREDIT"?"−":g.direction==="DEBIT"?"+":"")+s(x(g.value,g.currency==="RIAL"?0:3)),3),e("span",ba,s(g.currency==="RIAL"?"ریال":"گرم"),1)],64)):v.dataIndex==="confirmed"?(n(),R(ne,{key:2,status:g.confirmed===1?"success":"default",text:g.confirmed===1?"تایید شده":"تایید نشده"},null,8,["status","text"])):v.dataIndex==="note"?(n(),p("span",fa,s(g.note||"—"),1)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1}),u.showWallet?(n(),R(W,{key:"wallet"},{tab:m(()=>[a[19]||(a[19]=c(" کیف پول ",-1)),e("span",ka,s(x(P.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":P.value,columns:o,pagination:X(10,P.value.length),locale:{emptyText:"اعتباری در کیف پول ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="value"?(n(),p(S,{key:0},[c(s(x(g.value,3))+" ",1),a[20]||(a[20]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="caj"?(n(),p(S,{key:1},[c(s(I(Q)(g.caj)),1)],64)):v.dataIndex==="expires_at"?(n(),p(S,{key:2},[c(s(g.expires_at?I(Q)(g.expires_at):"—"),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0),u.showActivity?(n(),R(W,{key:"activity"},{tab:m(()=>[a[21]||(a[21]=c(" فعالیت‌ها ",-1)),e("span",ha,s(x(j.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":j.value,columns:M,pagination:X(15,j.value.length),locale:{emptyText:"فعالیتی ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="caj"?(n(),p("span",Ea,s(I(it)(g.caj)),1)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0)]),_:1},8,["active-key"])]),e("aside",xa,[e("section",Ia,[a[22]||(a[22]=e("h2",{class:"panel-title"},"اطلاعات هویتی و تماس",-1)),e("dl",Sa,[(n(!0),p(S,null,Be(se.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",{dir:v.ltr?"ltr":void 0},s(v.value||"—"),9,Ca)]))),128))])]),K.value.length?(n(),p("section",Ta,[a[23]||(a[23]=e("h2",{class:"panel-title"},"اطلاعات کسب‌وکار",-1)),e("dl",Na,[(n(!0),p(S,null,Be(K.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",null,s(v.value),1)]))),128))])])):h("",!0),b(Lt,{"customer-id":I(k)},null,8,["customer-id"])])])],4)]}),_:1},8,["spinning"])}}}),Pa=We(Ra,[["__scopeId","data-v-46230ed7"]]);export{Pa as C}; +import{c as b,I as Je,aa as Me,ab as Ue,ac as qe,ad as D,ae as ue,af as Ke,ag as Ze,ah as et,ai as je,aj as tt,d as Fe,u as Ve,x as Ge,o as n,b as p,p as e,a as R,w as m,f as c,F as S,t as s,q as F,i as h,A as He,m as A,s as O,y as B,G as ze,r as C,_ as We,k as at,h as I,C as lt,R as st,E as ot,e as Be,l as nt}from"./index-eLNLLYwC.js";import{j as Q,b as it}from"./filters-BMytoA2k.js";import{m as rt}from"./index-CKaD48iT.js";import{E as ut}from"./EnvironmentOutlined-BKbou10z.js";import{U as dt}from"./UserOutlined-B4M5rNrX.js";var ct={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 01-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 00-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 00285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z"}}]},name:"phone",theme:"outlined"};function Le(u){for(var l=1;lnew Me(u).setAlpha(l).toRgbString(),J=(u,l)=>new Me(u).lighten(l).toHexString(),mt=u=>{const l=Ue(u,{theme:"dark"});return{1:l[0],2:l[1],3:l[2],4:l[3],5:l[6],6:l[5],7:l[4],8:l[6],9:l[5],10:l[4]}},pt=(u,l)=>{const d=u||"#000",r=l||"#fff";return{colorBgBase:d,colorTextBase:r,colorText:U(r,.85),colorTextSecondary:U(r,.65),colorTextTertiary:U(r,.45),colorTextQuaternary:U(r,.25),colorFill:U(r,.18),colorFillSecondary:U(r,.12),colorFillTertiary:U(r,.08),colorFillQuaternary:U(r,.04),colorBgElevated:J(d,12),colorBgContainer:J(d,8),colorBgLayout:J(d,0),colorBgSpotlight:J(d,26),colorBorder:J(d,26),colorBorderSecondary:J(d,19)}},_t=(u,l)=>{const d=Object.keys(qe).map(E=>{const f=Ue(u[E],{theme:"dark"});return new Array(10).fill(1).reduce((k,_,$)=>(k[`${E}-${$+1}`]=f[$],k),{})}).reduce((E,f)=>(E=D(D({},E),f),E),{}),r=l??ue(u);return D(D(D({},r),d),Ke(u,{generateColorPalettes:mt,generateNeutralColorPalettes:pt}))};function gt(u){const{sizeUnit:l,sizeStep:d}=u,r=d-2;return{sizeXXL:l*(r+10),sizeXL:l*(r+6),sizeLG:l*(r+2),sizeMD:l*(r+2),sizeMS:l*(r+1),size:l*r,sizeSM:l*r,sizeXS:l*(r-1),sizeXXS:l*(r-1)}}const yt=(u,l)=>{const d=l??ue(u),r=d.fontSizeSM,E=d.controlHeight-4;return D(D(D(D(D({},d),gt(l??u)),Ze(r)),{controlHeight:E}),et(D(D({},d),{controlHeight:E})))};function bt(){const[u,l,d]=tt();return{theme:u,token:l,hashId:d}}const Ye={defaultConfig:je,defaultSeed:je.token,useToken:bt,defaultAlgorithm:ue,darkAlgorithm:_t,compactAlgorithm:yt},ft={class:"acc-head"},kt={class:"acc-body"},ht={class:"acc-code"},Et={class:"code",dir:"ltr"},xt={class:"origin"},It={key:1,class:"muted"},St={class:"balances"},Ct={class:"balance"},Tt={class:"line"},Nt={class:"line"},Rt={class:"hint"},Dt={class:"balance"},wt={class:"line"},At={class:"line"},Ot={key:0,class:"last-job"},$t={key:0,class:"warn"},Pt={class:"link-form"},jt={class:"label"},zt={class:"link-row"},Bt=Fe({__name:"CustomerAccountingCard",props:{customerId:{}},setup(u){const l=u,d={LINKED:"جفت با موبایل",IMPORTED:"وارد شده از حسابداری",PUSHED:"ساخته شده از اپ",MANUAL:"دستی"},r={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},E={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"success"},f=Ve(),{token:k}=Ye.useToken(),_=A(null),$=A(!1),i=A(""),L=O(()=>({"--acc-bg":k.value.colorBgContainer,"--acc-border":k.value.colorBorderSecondary,"--acc-fill":k.value.colorFillQuaternary,"--acc-text":k.value.colorText,"--acc-text-2":k.value.colorTextSecondary,"--acc-text-3":k.value.colorTextTertiary,"--acc-error":k.value.colorError,"--acc-success":k.value.colorSuccess})),V=O(()=>!!f.hasPermission("config.accounting")&&_.value&&_.value.provider!=="none"),T=O(()=>{var y,o;return(o=(y=_.value)==null?void 0:y.jobs)==null?void 0:o[0]}),P=(y,o)=>y==null?"—":Number(y).toLocaleString("fa-IR",{maximumFractionDigits:o}),j=y=>Number(y)>0?"debt":Number(y)<0?"credit":"",Z=y=>y?rt(y).format("jYYYY/jMM/jDD HH:mm"):"";async function Y(){if(f.hasPermission("config.accounting")){$.value=!0;try{const{data:y}=await B.get(`admin/accounting/customers/${l.customerId}`);_.value=y}catch{_.value=null}finally{$.value=!1}}}async function ee(){var y,o;try{await B.post("admin/accounting/links",{entityType:"CUSTOMER",entityId:l.customerId,externalCode:i.value.trim()}),ze.success("لینک شد"),i.value="",Y()}catch(M){ze.error(((o=(y=M==null?void 0:M.response)==null?void 0:y.data)==null?void 0:o.message)??"خطا")}}async function ie(){var y;(y=_.value)!=null&&y.link&&(await B.delete(`admin/accounting/links/${_.value.link.id}`),Y())}return Ge(Y),(y,o)=>{var G;const M=C("a-tag"),x=C("a-badge"),te=C("a-input"),q=C("a-button"),X=C("a-popconfirm"),re=C("a-spin");return V.value?(n(),p("section",{key:0,class:"acc-card",style:He(L.value)},[e("header",ft,[o[4]||(o[4]=e("h2",null,"حسابداری",-1)),(G=_.value)!=null&&G.link?(n(),R(M,{key:0,color:"success"},{default:m(()=>[...o[2]||(o[2]=[c("لینک شده",-1)])]),_:1})):(n(),R(M,{key:1,color:"warning"},{default:m(()=>[...o[3]||(o[3]=[c("لینک نشده",-1)])]),_:1}))]),b(re,{spinning:$.value},{default:m(()=>{var ae,le,se,K,t,a,w,N,z,oe,H,W;return[e("div",kt,[e("div",ht,[o[5]||(o[5]=e("span",{class:"label"},"کد حساب",-1)),(ae=_.value)!=null&&ae.link?(n(),p(S,{key:0},[e("span",Et,s(_.value.link.externalCode),1),e("span",xt,s(d[_.value.link.origin]??_.value.link.origin),1)],64)):(n(),p("span",It,"—"))]),e("div",St,[e("div",Ct,[o[10]||(o[10]=e("div",{class:"label"},"مانده‌ی حسابداری",-1)),(le=_.value)!=null&&le.accounting?(n(),p(S,{key:0},[e("div",Tt,[e("span",{class:F(j(_.value.accounting.gold))},s(P(_.value.accounting.gold,3)),3),o[6]||(o[6]=e("small",null,"گرم",-1))]),e("div",Nt,[e("span",{class:F(j(_.value.accounting.rial))},s(P(_.value.accounting.rial,0)),3),o[7]||(o[7]=e("small",null,"ریال",-1))]),e("div",Rt,s(Z(_.value.accounting.at)),1)],64)):(n(),p(S,{key:1},[o[8]||(o[8]=e("div",{class:"line muted"},"—",-1)),o[9]||(o[9]=e("div",{class:"hint"},"هنوز دریافت نشده",-1))],64))]),e("div",Dt,[o[13]||(o[13]=e("div",{class:"label"},"مانده‌ی دفتر اپ",-1)),e("div",wt,[e("span",{class:F(j((K=(se=_.value)==null?void 0:se.internal)==null?void 0:K.gold))},s(P((a=(t=_.value)==null?void 0:t.internal)==null?void 0:a.gold,3)),3),o[11]||(o[11]=e("small",null,"گرم",-1))]),e("div",At,[e("span",{class:F(j((N=(w=_.value)==null?void 0:w.internal)==null?void 0:N.rial))},s(P((oe=(z=_.value)==null?void 0:z.internal)==null?void 0:oe.rial,0)),3),o[12]||(o[12]=e("small",null,"ریال",-1))]),o[14]||(o[14]=e("div",{class:"hint"},"مبنای سقف اعتبار",-1))])]),T.value?(n(),p("div",Ot,[b(x,{status:E[T.value.status]??"default"},null,8,["status"]),c(" آخرین ارسال: "+s(r[T.value.status]??T.value.status)+" — "+s(Z(T.value.updatedAt))+" ",1),T.value.lastError?(n(),p("div",$t,s(T.value.lastError),1)):h("",!0)])):h("",!0),e("div",Pt,[e("div",jt,s((H=_.value)!=null&&H.link?"تغییر لینک":"لینک دستی"),1),e("div",zt,[b(te,{value:i.value,"onUpdate:value":o[0]||(o[0]=ne=>i.value=ne),dir:"ltr",placeholder:"کد حساب در حسابداری",onPressEnter:o[1]||(o[1]=ne=>i.value.trim()&&ee())},null,8,["value"]),b(q,{type:"primary",ghost:"",disabled:!i.value.trim(),onClick:ee},{default:m(()=>[...o[15]||(o[15]=[c("لینک",-1)])]),_:1},8,["disabled"])]),(W=_.value)!=null&&W.link?(n(),R(X,{key:0,title:"لینک حذف شود؟",onConfirm:ie},{default:m(()=>[b(q,{type:"link",danger:"",size:"small",class:"unlink"},{default:m(()=>[...o[16]||(o[16]=[c("حذف لینک فعلی",-1)])]),_:1})]),_:1})):h("",!0)])])]}),_:1},8,["spinning"])],4)):h("",!0)}}}),Lt=We(Bt,[["__scopeId","data-v-17e381b4"]]),Mt={class:"panel hero"},Ut={class:"hero-main"},Ft={class:"hero-text"},Vt={class:"hero-eyebrow"},Gt={class:"hero-name"},Ht={class:"hero-tags"},Wt={class:"hero-meta"},Yt={key:0,class:"meta-item"},Xt={dir:"ltr"},Qt={key:1,class:"meta-item"},Jt={key:2,class:"meta-item"},qt={key:3,class:"meta-item"},Kt={class:"hero-actions"},Zt={class:"kpis"},ea={class:"panel kpi"},ta={class:"kpi-foot"},aa={class:"panel kpi"},la={class:"kpi-foot"},sa={class:"panel kpi"},oa={class:"kpi-value"},na={class:"kpi-foot"},ia={key:1,class:"kpi-foot"},ra={class:"panel kpi"},ua={class:"kpi-value"},da={class:"panel kpi"},ca={class:"kpi-value"},va={class:"kpi-foot"},ma={class:"layout"},pa={class:"panel layout-main"},_a={class:"tab-count"},ga={key:0,class:"mono",dir:"ltr"},ya={class:"tab-count"},ba={class:"unit"},fa={key:3,class:"note"},ka={class:"tab-count"},ha={class:"tab-count"},Ea={key:0,dir:"ltr"},xa={class:"layout-side"},Ia={class:"panel"},Sa={class:"facts"},Ca=["dir"],Ta={key:0,class:"panel"},Na={class:"facts"},Ra=Fe({__name:"CustomerDetail",props:{title:{default:"مشاهده اطلاعات مشتری"},showWallet:{type:Boolean,default:!1},showActivity:{type:Boolean,default:!1},defaultTab:{default:"orders"},editRoute:{default:void 0}},setup(u){const l=u,d=at(),r=nt(),E=Ve(),{token:f}=Ye.useToken(),k=d.params.id,_=A(!1),$=A(l.defaultTab),i=A(void 0),L=A(void 0),V=A([]),T=A([]),P=A([]),j=A([]),Z=O(()=>({"--cd-bg":f.value.colorBgContainer,"--cd-border":f.value.colorBorderSecondary,"--cd-text":f.value.colorText,"--cd-text-2":f.value.colorTextSecondary,"--cd-text-3":f.value.colorTextTertiary,"--cd-fill":f.value.colorFillQuaternary,"--cd-primary":f.value.colorPrimary,"--cd-primary-bg":f.value.colorPrimaryBg,"--cd-error":f.value.colorError,"--cd-success":f.value.colorSuccess,"--cd-warning":f.value.colorWarning})),Y={SUSPENDED:{label:"معلق (عبور از سقف)",color:"error"},PLACED:{label:"ثبت سفارش",color:"default"},ADMIN_APPROVED:{label:"تأیید مدیر",color:"processing"},SOURCING:{label:"در حال تأمین",color:"processing"},PREPARING:{label:"در حال آماده‌سازی",color:"processing"},DELIVERED_TO_AGENT:{label:"تحویل مسئول فروش",color:"cyan"},DELIVERED_TO_CUSTOMER:{label:"تحویل مشتری",color:"success"},CANCELLED:{label:"لغو شده",color:"default"}},ee={ORDER_STOCK:"سفارش کالای موجود",ORDER_PRE_ORDER:"پیش‌سفارش",REPAYMENT_MELTED_GOLD:"تسویه با آبشده",REPAYMENT_TRANSFER:"تسویه با واریز",REPAYMENT_CHEQUE:"تسویه با چک",REPAYMENT_CASH:"تسویه نقدی",WALLET_BONUS:"پاداش کیف پول",ADJUSTMENT:"اصلاحیه"},ie=[{title:"شماره سفارش",dataIndex:"name"},{title:"وضعیت",dataIndex:"status"},{title:"وزن",dataIndex:"w"},{title:"تعداد آیتم",dataIndex:"items_count",align:"center"},{title:"شعبه",dataIndex:"branch"},{title:"تاریخ",dataIndex:"caj"}],y=[{title:"نوع",dataIndex:"type"},{title:"مقدار",dataIndex:"value"},{title:"وضعیت",dataIndex:"confirmed"},{title:"توضیحات",dataIndex:"note",ellipsis:!0},{title:"تاریخ",dataIndex:"caj"}],o=[{title:"مقدار",dataIndex:"value"},{title:"تاریخ اعطا",dataIndex:"caj"},{title:"انقضا",dataIndex:"expires_at"}],M=[{title:"عملیات",dataIndex:"action"},{title:"جزئیات",dataIndex:"detail"},{title:"تاریخ",dataIndex:"caj"}],x=(t,a)=>t==null||t===""||Number.isNaN(Number(t))?"—":Number(t).toLocaleString("fa-IR",{maximumFractionDigits:a}),te=t=>Number(t)>0?"debt":Number(t)<0?"credit":"",q=t=>t==null?"":Number(t)>0?"بدهکار":Number(t)<0?"بستانکار":"تسویه",X=(t,a)=>a>t?{pageSize:t,size:"small",showSizeChanger:!1}:!1,re=O(()=>{var t;return(((t=i.value)==null?void 0:t.name)??"").trim().charAt(0)||"؟"}),G=O(()=>{var w,N;const t=Number((w=i.value)==null?void 0:w.gram_level);if(!t||t<=0)return null;const a=Math.max(Number((N=i.value)==null?void 0:N.remain)||0,0);return Math.min(Math.round(a/t*100),100)}),ae=O(()=>{const t=G.value??0;return t>=90?f.value.colorError:t>=70?f.value.colorWarning:f.value.colorPrimary}),le=O(()=>{if(!l.editRoute||!r.hasRoute(l.editRoute))return!1;const t=r.resolve({name:l.editRoute,params:{id:k}}).meta;return t.superAdminOnly&&!E.isSuperAdmin?!1:!t.role||!!E.hasPermission(t.role)}),se=O(()=>{var a;const t=i.value;return[{label:"موبایل",value:t==null?void 0:t.mobile,ltr:!0},{label:"تلفن ثابت",value:t==null?void 0:t.phone,ltr:!0},{label:"کد ملی",value:t==null?void 0:t.national_code,ltr:!0},{label:"تاریخ تولد",value:t!=null&&t.birth_date?Q(t.birth_date):null},{label:"شهر",value:(a=t==null?void 0:t.city)==null?void 0:a.title},{label:"آدرس",value:t==null?void 0:t.address}]}),K=O(()=>{var a;const t=i.value;return[{label:"نام فروشگاه",value:t==null?void 0:t.store_name},{label:"پاساژ",value:t==null?void 0:t.pasazh_name},{label:"منطقه",value:t==null?void 0:t.zone},{label:"کد عضویت",value:t==null?void 0:t.mcode},{label:"کارشناس فروش",value:(a=t==null?void 0:t.reagent)==null?void 0:a.name},{label:"درصد اجرت",value:(t==null?void 0:t.percent)!==null&&(t==null?void 0:t.percent)!==void 0&&(t==null?void 0:t.percent)!==""?`${x(t.percent,2)}٪`:null}].filter(w=>w.value)});return Ge(async()=>{try{_.value=!0;const[t,a,w,N]=await Promise.all([B.get(`customer/${k}`),B.get(`major/dashboard/${k}`).catch(()=>({data:void 0})),B.get(`admin/customers-omde/${k}/orders`).catch(()=>({data:[]})),B.get(`admin/customers-omde/${k}/documents`).catch(()=>({data:[]}))]);if(i.value=t.data,L.value=a.data,V.value=w.data,T.value=N.data,l.showWallet){const z=await B.get(`admin/customers-omde/${k}/wallet`).catch(()=>({data:[]}));P.value=z.data}if(l.showActivity){const z=await B.get(`log/ago/${k}`).catch(()=>({data:[]}));j.value=z.data}}catch(t){console.log(t)}finally{_.value=!1}}),(t,a)=>{const w=C("a-avatar"),N=C("a-tag"),z=C("a-button"),oe=C("a-progress"),H=C("a-table"),W=C("a-tab-pane"),ne=C("a-badge"),Xe=C("a-tabs"),Qe=C("a-spin");return n(),R(Qe,{spinning:_.value},{default:m(()=>{var ce,ve,me,pe,_e,ge,ye,be,fe,ke,he,Ee,xe,Ie,Se,Ce,Te,Ne,Re,De,we,Ae,Oe;return[e("div",{class:"customer-detail",style:He(Z.value)},[e("section",Mt,[e("div",Ut,[b(w,{size:64,src:(ve=(ce=i.value)==null?void 0:ce.image)==null?void 0:ve.image,class:"hero-avatar"},{default:m(()=>[c(s(re.value),1)]),_:1},8,["src"]),e("div",Ft,[e("div",Vt,s(u.title),1),e("h1",Gt,s(((me=i.value)==null?void 0:me.name)||"—"),1),e("div",Ht,[i.value?(n(),R(N,{key:0,color:i.value.active===1?"success":"error"},{default:m(()=>[c(s(i.value.active===1?"فعال":"غیرفعال"),1)]),_:1},8,["color"])):h("",!0),i.value?(n(),R(N,{key:1,color:i.value.sts===1?"processing":"warning"},{default:m(()=>[c(s(i.value.sts===1?"مجاز به سفارش":"عدم سفارش"),1)]),_:1},8,["color"])):h("",!0),(pe=i.value)!=null&&pe.type_str?(n(),R(N,{key:2},{default:m(()=>[c(s(i.value.type_str),1)]),_:1})):h("",!0),((_e=i.value)==null?void 0:_e.is_archive)===1?(n(),R(N,{key:3,color:"default"},{default:m(()=>[...a[3]||(a[3]=[c("بایگانی‌شده",-1)])]),_:1})):h("",!0)]),e("div",Wt,[(ge=i.value)!=null&&ge.mobile?(n(),p("span",Yt,[b(I(de)),e("span",Xt,s(i.value.mobile),1)])):h("",!0),(be=(ye=i.value)==null?void 0:ye.city)!=null&&be.title?(n(),p("span",Qt,[b(I(ut)),c(" "+s(i.value.city.title),1)])):h("",!0),(ke=(fe=i.value)==null?void 0:fe.reagent)!=null&&ke.name?(n(),p("span",Jt,[b(I(dt)),c(" کارشناس فروش: "+s(i.value.reagent.name),1)])):h("",!0),(he=i.value)!=null&&he.caj?(n(),p("span",qt,[b(I(lt)),c(" عضویت از "+s(I(Q)(i.value.caj)),1)])):h("",!0)])])]),e("div",Kt,[b(z,{onClick:a[0]||(a[0]=v=>I(r).back())},{icon:m(()=>[b(I(st))]),default:m(()=>[a[4]||(a[4]=c(" بازگشت ",-1))]),_:1}),le.value?(n(),R(z,{key:0,type:"primary",onClick:a[1]||(a[1]=v=>I(r).push({name:u.editRoute,params:{id:I(k)}}))},{icon:m(()=>[b(I(ot))]),default:m(()=>[a[5]||(a[5]=c(" ویرایش مشتری ",-1))]),_:1})):h("",!0)])]),e("section",Zt,[e("div",ea,[a[7]||(a[7]=e("div",{class:"kpi-label"},"بدهی طلایی",-1)),e("div",{class:F(["kpi-value",te((Ee=i.value)==null?void 0:Ee.remain)])},[c(s(x((xe=i.value)==null?void 0:xe.remain,3)),1),a[6]||(a[6]=e("small",null,"گرم",-1))],2),e("div",ta,s(q((Ie=i.value)==null?void 0:Ie.remain)),1)]),e("div",aa,[a[9]||(a[9]=e("div",{class:"kpi-label"},"بدهی ریالی",-1)),e("div",{class:F(["kpi-value",te((Se=i.value)==null?void 0:Se.rial_remain)])},[c(s(x((Ce=i.value)==null?void 0:Ce.rial_remain,0)),1),a[8]||(a[8]=e("small",null,"ریال",-1))],2),e("div",la,s(q((Te=i.value)==null?void 0:Te.rial_remain)),1)]),e("div",sa,[a[11]||(a[11]=e("div",{class:"kpi-label"},"سقف اعتبار",-1)),e("div",oa,[c(s(x((Ne=i.value)==null?void 0:Ne.gram_level,3)),1),a[10]||(a[10]=e("small",null,"گرم",-1))]),G.value!==null?(n(),p(S,{key:0},[b(oe,{percent:G.value,"stroke-color":ae.value,"show-info":!1,size:"small",class:"kpi-progress"},null,8,["percent","stroke-color"]),e("div",na,s(x(G.value,0))+"٪ از سقف استفاده شده",1)],64)):(n(),p("div",ia,"سقفی تعیین نشده"))]),e("div",ra,[a[13]||(a[13]=e("div",{class:"kpi-label"},"میزان فروش",-1)),e("div",ua,[c(s(x((Re=L.value)==null?void 0:Re.grams_sell,3)),1),a[12]||(a[12]=e("small",null,"گرم",-1))]),a[14]||(a[14]=e("div",{class:"kpi-foot"},"مجموع وزن سفارش‌ها",-1))]),e("div",da,[a[15]||(a[15]=e("div",{class:"kpi-label"},"سفارش‌ها",-1)),e("div",ca,s(x(((De=L.value)==null?void 0:De.total_order)??V.value.length,0)),1),e("div",va,[e("span",{class:F({"text-warning":Number((we=L.value)==null?void 0:we.open_order)>0})},s(x((Ae=L.value)==null?void 0:Ae.open_order,0))+" باز ",3),c(" · "+s(x(((Oe=L.value)==null?void 0:Oe.ledger_entries)??T.value.length,0))+" سند ",1)])])]),e("div",ma,[e("section",pa,[b(Xe,{"active-key":$.value,"onUpdate:activeKey":a[2]||(a[2]=v=>$.value=v),class:"detail-tabs"},{default:m(()=>[b(W,{key:"orders"},{tab:m(()=>[a[16]||(a[16]=c(" سفارش‌ها ",-1)),e("span",_a,s(x(V.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":V.value,columns:ie,pagination:X(10,V.value.length),locale:{emptyText:"سفارشی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>{var $e;return[v.dataIndex==="name"?(n(),p("span",ga,s(g.name),1)):v.dataIndex==="w"?(n(),p(S,{key:1},[c(s(x(g.w,3))+" ",1),a[17]||(a[17]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="status"?(n(),R(N,{key:2,color:($e=Y[g.status])==null?void 0:$e.color},{default:m(()=>{var Pe;return[c(s(((Pe=Y[g.status])==null?void 0:Pe.label)??g.status??"—"),1)]}),_:2},1032,["color"])):v.dataIndex==="branch"?(n(),p(S,{key:3},[c(s(g.branch??"—"),1)],64)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]}),_:1},8,["data-source","pagination"])]),_:1}),b(W,{key:"documents"},{tab:m(()=>[a[18]||(a[18]=c(" سندهای مالی ",-1)),e("span",ya,s(x(T.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":T.value,columns:y,pagination:X(10,T.value.length),locale:{emptyText:"سندی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="type"?(n(),p(S,{key:0},[c(s(ee[g.type]??g.type),1)],64)):v.dataIndex==="value"?(n(),p(S,{key:1},[e("span",{class:F(g.direction==="DEBIT"?"debt":g.direction==="CREDIT"?"credit":"")},s(g.direction==="CREDIT"?"−":g.direction==="DEBIT"?"+":"")+s(x(g.value,g.currency==="RIAL"?0:3)),3),e("span",ba,s(g.currency==="RIAL"?"ریال":"گرم"),1)],64)):v.dataIndex==="confirmed"?(n(),R(ne,{key:2,status:g.confirmed===1?"success":"default",text:g.confirmed===1?"تایید شده":"تایید نشده"},null,8,["status","text"])):v.dataIndex==="note"?(n(),p("span",fa,s(g.note||"—"),1)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1}),u.showWallet?(n(),R(W,{key:"wallet"},{tab:m(()=>[a[19]||(a[19]=c(" کیف پول ",-1)),e("span",ka,s(x(P.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":P.value,columns:o,pagination:X(10,P.value.length),locale:{emptyText:"اعتباری در کیف پول ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="value"?(n(),p(S,{key:0},[c(s(x(g.value,3))+" ",1),a[20]||(a[20]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="caj"?(n(),p(S,{key:1},[c(s(I(Q)(g.caj)),1)],64)):v.dataIndex==="expires_at"?(n(),p(S,{key:2},[c(s(g.expires_at?I(Q)(g.expires_at):"—"),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0),u.showActivity?(n(),R(W,{key:"activity"},{tab:m(()=>[a[21]||(a[21]=c(" فعالیت‌ها ",-1)),e("span",ha,s(x(j.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":j.value,columns:M,pagination:X(15,j.value.length),locale:{emptyText:"فعالیتی ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="caj"?(n(),p("span",Ea,s(I(it)(g.caj)),1)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0)]),_:1},8,["active-key"])]),e("aside",xa,[e("section",Ia,[a[22]||(a[22]=e("h2",{class:"panel-title"},"اطلاعات هویتی و تماس",-1)),e("dl",Sa,[(n(!0),p(S,null,Be(se.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",{dir:v.ltr?"ltr":void 0},s(v.value||"—"),9,Ca)]))),128))])]),K.value.length?(n(),p("section",Ta,[a[23]||(a[23]=e("h2",{class:"panel-title"},"اطلاعات کسب‌وکار",-1)),e("dl",Na,[(n(!0),p(S,null,Be(K.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",null,s(v.value),1)]))),128))])])):h("",!0),b(Lt,{"customer-id":I(k)},null,8,["customer-id"])])])],4)]}),_:1},8,["spinning"])}}}),Pa=We(Ra,[["__scopeId","data-v-46230ed7"]]);export{Pa as C}; diff --git a/apps/admin-panel/dist/assets/Dashboard-Cb_e8hUK.js b/apps/admin-panel/dist/assets/Dashboard-Dty7lg2F.js similarity index 98% rename from apps/admin-panel/dist/assets/Dashboard-Cb_e8hUK.js rename to apps/admin-panel/dist/assets/Dashboard-Dty7lg2F.js index 9211071..2b3786a 100644 --- a/apps/admin-panel/dist/assets/Dashboard-Cb_e8hUK.js +++ b/apps/admin-panel/dist/assets/Dashboard-Dty7lg2F.js @@ -1 +1 @@ -import{j as M,p as j}from"./filters-gmIfX3-G.js";import{c as h,I,d as Ne,v as Pe,u as Te,x as Ae,y as Be,a as b,w as S,m as K,z as Re,r as O,o as d,p as e,h as g,C as je,t as o,f as v,i as P,q as ee,b as y,A as T,F as L,e as te,B as He,s as c,_ as Ie}from"./index-DajPj7Ec.js";import{U as De,D as Fe}from"./UserAddOutlined-tCWSfp_Y.js";import{C as Ge}from"./CreditCardOutlined-H5cAFLTI.js";import"./index-BAamWbCu.js";var $e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 00-11.3 0L531 565 416.6 450.5a8.03 8.03 0 00-11.3 0l-214.9 215a8.03 8.03 0 000 11.3l36.7 36.9z"}}]},name:"fund",theme:"outlined"};function se(r){for(var n=1;np.isSuperAdmin),ne=c(()=>a.isMobile?240:300),oe=c(()=>a.isMobile?220:240),re=c(()=>a.isMobile?260:320),l=Re({customerCount:0,allgram:0,ordercount:0,reagent:[],lastOrder:[],sumLastOrder:0,sumLastOrderMonth:0,ordersTrend:[],statusBreakdown:[],channelBreakdown:[],topProducts:[],goldPricePerGram:null,totalCustomerDebtGrams:0}),B=[C,k],ie=[H,C,C,H,H,k,k,Kt],z={fontFamily:"inherit",parentHeightOffset:0,toolbar:{show:!1}},R={borderColor:"#eef0f5",strokeDashArray:4},de=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"sts_str"},{title:"تاریخ",dataIndex:"caj"}];function G(s){return{success:"green",warning:"orange",danger:"red",primary:"blue"}[s]??""}function m(s){return j(s??0)||"0"}const ce=c(()=>M(new Date().toISOString())),ue=c(()=>l.goldPricePerGram?`${j(Math.round(Number(l.goldPricePerGram)))} تومان`:"—"),$=c(()=>j(Number(l.totalCustomerDebtGrams??0).toFixed(2))),E=c(()=>{const s=Number(l.sumLastOrder??0),t=Number(l.sumLastOrderMonth??0);return s>0?(t/s).toFixed(2):"0"}),W=c(()=>(l.ordersTrend??[]).map(s=>s.total)),pe={chart:{...z,sparkline:{enabled:!0},animations:{enabled:!1}},colors:[k],stroke:{curve:"smooth",width:2},fill:{type:"gradient",gradient:{opacityFrom:.35,opacityTo:0}},tooltip:{enabled:!1}},w=K("area"),_e=[{label:"ناحیه‌ای",value:"area"},{label:"ستونی",value:"bar"}],he=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.retail??0),0)),me=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.wholesale??0),0)),be=c(()=>{const s=l.ordersTrend??[],t={name:"عمده فروشی",data:s.map(_=>_.wholesale)};return u.value?[{name:"تک فروشی",data:s.map(_=>_.retail)},t]:[t]}),ge=c(()=>({chart:{...z,stacked:w.value==="bar"},colors:u.value?[C,k]:[k],dataLabels:{enabled:!1},stroke:w.value==="area"?{curve:"smooth",width:2.5}:{width:0},fill:w.value==="area"?{type:"gradient",gradient:{opacityFrom:.3,opacityTo:.02}}:{opacity:1},plotOptions:{bar:{columnWidth:"55%",borderRadius:3,borderRadiusApplication:"end"}},legend:{show:!1},grid:{...R,padding:a.isMobile?{left:4,right:4}:{}},markers:{size:0,hover:{size:5}},xaxis:{categories:(l.ordersTrend??[]).map(s=>String(M(s.date)??"").slice(5)),tickAmount:a.isMobile?6:10,axisBorder:{show:!1},axisTicks:{show:!1},labels:{rotate:0,hideOverlappingLabels:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{style:{colors:x,fontSize:a.isMobile?"10px":"12px"},formatter:s=>String(Math.round(s))}},tooltip:{shared:!0,intersect:!1,x:{formatter:(s,t)=>{var _;return M((_=(l.ordersTrend??[])[t==null?void 0:t.dataPointIndex])==null?void 0:_.date)}}}})),U=c(()=>(l.channelBreakdown??[]).map(s=>Number(s.count??0))),fe=c(()=>({chart:{...z},labels:(l.channelBreakdown??[]).map(s=>s.label),colors:B,legend:{show:!1},dataLabels:{enabled:!1},stroke:{width:3,colors:["#fff"]},plotOptions:{pie:{donut:{size:"74%",labels:{show:!0,name:{fontSize:"13px",color:x,offsetY:18},value:{fontSize:"16px",fontWeight:500,color:C,offsetY:-14},total:{show:!0,label:"کل سفارش‌ها",color:x,fontSize:"13px",formatter:s=>String(s.globals.seriesTotals.reduce((t,_)=>t+_,0))}}}}}})),ve=c(()=>(l.statusBreakdown??[]).reduce((s,t)=>s+Number(t.count??0),0)),V=c(()=>[{name:"تعداد",data:(l.statusBreakdown??[]).map(s=>Number(s.count??0))}]),ye=c(()=>{var s;return Math.max(200,(((s=l.statusBreakdown)==null?void 0:s.length)??0)*(a.isMobile?38:44)+40)}),Oe=c(()=>({chart:{...z},colors:ie,plotOptions:{bar:{horizontal:!0,distributed:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"58%"}},legend:{show:!1},dataLabels:{enabled:!0,textAnchor:"start",offsetX:8,style:{colors:["#fff"],fontWeight:500,fontSize:"12px"}},grid:{...R,xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{categories:(l.statusBreakdown??[]).map(s=>s.label),axisBorder:{show:!1},axisTicks:{show:!1},labels:{style:{colors:x,fontSize:"11px"}}},yaxis:{labels:{maxWidth:a.isMobile?110:160,style:{colors:"#475467",fontSize:"12px",fontWeight:500}}},tooltip:{y:{formatter:s=>`${s} سفارش`}}})),ke=c(()=>Math.max(1,...(l.reagent??[]).map(s=>Number(s.grams_sell??0))));function we(s){return Math.max(2,Math.round(Number(s.grams_sell??0)/ke.value*100))}const Y=c(()=>[{name:"وزن فروخته‌شده (گرم)",data:(l.topProducts??[]).map(s=>Number(s.weight??0))}]),xe=c(()=>({chart:{...z},plotOptions:{bar:a.isMobile?{horizontal:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"60%"}:{borderRadius:8,borderRadiusApplication:"end",columnWidth:"45%"}},colors:[k],fill:{type:"gradient",gradient:{shade:"light",type:"vertical",shadeIntensity:.2,opacityFrom:1,opacityTo:.75}},dataLabels:{enabled:!1},grid:R,xaxis:{categories:(l.topProducts??[]).map(s=>s.title),axisBorder:{show:!1},axisTicks:{show:!1},labels:{trim:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{maxWidth:a.isMobile?120:160,style:{colors:x,fontSize:a.isMobile?"11px":"12px"}}},tooltip:{y:{formatter:s=>`${s} گرم`}}}));return Ae(async()=>{try{n.value=!0;const{data:s}=await Be.get("dashboard/overview");Object.assign(l,s),l.reagent=[...l.reagent??[]].sort((t,_)=>Number(_.grams_sell)-Number(t.grams_sell)),l.lastOrder=[...l.lastOrder??[]].sort((t,_)=>Number(_.w)-Number(t.w))}catch(s){console.error(s)}finally{n.value=!1}}),(s,t)=>{const _=O("apexchart"),Se=O("a-segmented"),N=O("a-empty"),X=O("a-tag"),Ce=O("a-list-item"),ze=O("a-list"),Me=O("a-table"),Le=O("a-spin");return d(),b(Le,{spinning:n.value},{default:S(()=>{var q,J,Q,Z;return[e("div",Xe,[e("header",qe,[t[1]||(t[1]=e("div",null,[e("h1",{class:"dash-head__title"},"داشبورد"),e("p",{class:"dash-head__sub"},"خلاصه عملکرد فروش در ۳۰ روز گذشته")],-1)),e("div",Je,[h(g(je)),e("span",null,o(ce.value),1)])]),e("section",Qe,[e("div",Ze,[e("div",Ke,[e("span",et,[h(g(F))]),t[2]||(t[2]=e("span",{class:"kpi__label"},"تعداد سفارشات (۳۰ روز گذشته)",-1))]),e("div",tt,[v(o(m(l.ordercount)),1),t[3]||(t[3]=e("small",null,"سفارش",-1))]),W.value.length?(d(),b(_,{key:0,class:"kpi__spark",type:"area",height:"56",options:pe,series:[{name:"سفارش",data:W.value}]},null,8,["series"])):P("",!0)]),e("div",st,[e("div",at,[e("span",lt,[h(g(A))]),t[4]||(t[4]=e("span",{class:"kpi__label"},"طلای فروش رفته (۳۰ روز گذشته)",-1))]),e("div",nt,[v(o(m(l.allgram)),1),t[5]||(t[5]=e("small",null,"گرم",-1))]),e("div",ot,[t[6]||(t[6]=v(" میانگین هر سفارش تحویل‌شده: ",-1)),e("b",null,o(E.value)+" گرم",1)])]),e("div",rt,[e("div",it,[e("span",dt,[h(g(De))]),t[7]||(t[7]=e("span",{class:"kpi__label"},"مشتریان جدید (۳۰ روز گذشته)",-1))]),e("div",ct,[v(o(m(l.customerCount)),1),t[8]||(t[8]=e("small",null,"نفر",-1))]),e("div",ut,[t[9]||(t[9]=v(" مجموع بدهی طلای مشتریان: ",-1)),e("b",null,o($.value)+" گرم",1)])]),e("div",pt,[e("div",_t,[e("span",ht,[h(g(Fe))]),t[10]||(t[10]=e("span",{class:"kpi__label"},"نرخ هر گرم طلای ۱۸ عیار",-1))]),e("div",mt,o(ue.value),1),e("div",bt,[t[11]||(t[11]=v(" سفارشات تحویل‌شده (۳۰ روز گذشته): ",-1)),e("b",null,o(m(l.sumLastOrder))+" سفارش",1)])])]),e("section",{class:ee(["row",u.value?"row--main":"row--single"])},[e("div",gt,[e("div",ft,[e("div",null,[t[12]||(t[12]=e("h3",{class:"panel__title"},"روند سفارش‌ها",-1)),e("p",vt,o(u.value?"۳۰ روز گذشته، تفکیک تک و عمده":"۳۰ روز گذشته"),1)]),h(Se,{value:w.value,"onUpdate:value":t[0]||(t[0]=i=>w.value=i),options:_e,size:"small"},null,8,["value"])]),e("div",yt,[u.value?(d(),y("div",Ot,[e("span",{class:"dot",style:T({background:C})},null,4),t[13]||(t[13]=e("span",null,"تک فروشی",-1)),e("b",null,o(m(he.value)),1)])):P("",!0),e("div",kt,[e("span",{class:"dot",style:T({background:k})},null,4),t[14]||(t[14]=e("span",null,"عمده فروشی",-1)),e("b",null,o(m(me.value)),1)])]),(d(),b(_,{key:w.value,type:w.value,height:ne.value,options:ge.value,series:be.value},null,8,["type","height","options","series"]))]),u.value?(d(),y("div",wt,[t[15]||(t[15]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"تفکیک عمده / تک"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),U.value.some(i=>i>0)?(d(),y(L,{key:0},[h(_,{type:"donut",height:oe.value,options:fe.value,series:U.value},null,8,["height","options","series"]),e("ul",xt,[(d(!0),y(L,null,te(l.channelBreakdown,(i,f)=>(d(),y("li",{key:i.channel},[e("span",{class:"dot",style:T({background:B[f%B.length]})},null,4),e("span",St,o(i.label),1),e("span",Ct,o(m(i.grams))+" گرم",1),e("b",null,o(m(i.count)),1)]))),128))])],64)):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])):P("",!0)],2),e("section",zt,[e("div",Mt,[e("div",Lt,[t[16]||(t[16]=e("div",null,[e("h3",{class:"panel__title"},"وضعیت سفارشات"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")],-1)),e("span",Nt,o(m(ve.value))+" سفارش",1)]),V.value[0].data.length?(d(),b(_,{key:0,type:"bar",height:ye.value,options:Oe.value,series:V.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Pt,[t[21]||(t[21]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"میزان فروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),e("ul",Tt,[e("li",null,[e("span",At,[h(g(He))]),t[17]||(t[17]=e("span",{class:"metric-list__label"},"تعداد سفارش (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrder)),1)]),e("li",null,[e("span",Bt,[h(g(A))]),t[18]||(t[18]=e("span",{class:"metric-list__label"},"مجموع وزن (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrderMonth))+" گرم",1)]),e("li",null,[e("span",Rt,[h(g(D))]),t[19]||(t[19]=e("span",{class:"metric-list__label"},"میانگین هر سفارش",-1)),e("b",null,o(E.value)+" گرم",1)]),e("li",null,[e("span",jt,[h(g(Ge))]),t[20]||(t[20]=e("span",{class:"metric-list__label"},"مجموع بدهی طلای مشتریان",-1)),e("b",null,o($.value)+" گرم",1)])])])]),e("section",Ht,[e("div",It,[t[22]||(t[22]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"عملکرد کارشناسان فروش"),e("p",{class:"panel__sub"},"بر اساس گرم فروخته‌شده")])],-1)),(q=l.reagent)!=null&&q.length?(d(),y("ol",Dt,[(d(!0),y(L,null,te(l.reagent,(i,f)=>(d(),y("li",{key:i.id??f},[e("span",{class:ee(["rank-list__pos",{"is-top":f<3}])},o(f+1),3),e("div",Ft,[e("div",Gt,[e("span",$t,o(i.name),1),e("b",null,o(m(i.grams_sell))+" گرم",1)]),e("div",Et,[e("span",{style:T({width:`${we(i)}%`})},null,4)]),e("span",Wt,o(m(i.order_count))+" سفارش",1)])]))),128))])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Ut,[t[23]||(t[23]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"محصولات پرفروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته، بر اساس وزن")])],-1)),(J=Y.value[0])!=null&&J.data.length?(d(),b(_,{key:0,type:"bar",height:re.value,options:xe.value,series:Y.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])]),e("section",Vt,[e("div",Yt,[t[24]||(t[24]=e("div",null,[e("h3",{class:"panel__title"},"سفارشات هفته جاری"),e("p",{class:"panel__sub"},"مرتب‌شده بر اساس وزن")],-1)),e("span",Xt,o(m(((Q=l.lastOrder)==null?void 0:Q.length)??0))+" سفارش",1)]),g(a).isMobile?(d(),b(ze,{key:0,class:"order-list","data-source":l.lastOrder,pagination:((Z=l.lastOrder)==null?void 0:Z.length)>10?{pageSize:10,size:"small",align:"center"}:!1,"row-key":"id"},{renderItem:S(({item:i})=>[h(Ce,{class:"order-item"},{default:S(()=>[e("div",qt,[e("span",Jt,o(i.name),1),h(X,{color:G(i.statusColor),class:"order-item__tag"},{default:S(()=>[v(o(i.sts_str),1)]),_:2},1032,["color"])]),e("div",Qt,o(i.customer),1),e("div",Zt,[e("span",null,o(i.w)+" گرم",1),e("span",null,o(g(M)(i.caj)),1)])]),_:2},1024)]),_:1},8,["data-source","pagination"])):(d(),b(Me,{key:1,class:"dash-table",size:"middle","data-source":l.lastOrder,columns:de,pagination:{pageSize:10},scroll:{x:"max-content"},"row-key":"id"},{bodyCell:S(({column:i,record:f})=>[i.dataIndex==="sts_str"?(d(),b(X,{key:0,color:G(f.statusColor)},{default:S(()=>[v(o(f.sts_str),1)]),_:2},1032,["color"])):i.dataIndex==="caj"?(d(),y(L,{key:1},[v(o(g(M)(f.caj)),1)],64)):i.dataIndex==="w"?(d(),y(L,{key:2},[v(o(f.w)+" گرم",1)],64)):P("",!0)]),_:1},8,["data-source"]))])])]}),_:1},8,["spinning"])}}}),os=Ie(es,[["__scopeId","data-v-00f0eac8"]]);export{os as default}; +import{j as M,p as j}from"./filters-BMytoA2k.js";import{c as h,I,d as Ne,v as Pe,u as Te,x as Ae,y as Be,a as b,w as S,m as K,z as Re,r as O,o as d,p as e,h as g,C as je,t as o,f as v,i as P,q as ee,b as y,A as T,F as L,e as te,B as He,s as c,_ as Ie}from"./index-eLNLLYwC.js";import{U as De,D as Fe}from"./UserAddOutlined-GWNEdhY8.js";import{C as Ge}from"./CreditCardOutlined-CcvN7g1Z.js";import"./index-CKaD48iT.js";var $e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 00-11.3 0L531 565 416.6 450.5a8.03 8.03 0 00-11.3 0l-214.9 215a8.03 8.03 0 000 11.3l36.7 36.9z"}}]},name:"fund",theme:"outlined"};function se(r){for(var n=1;np.isSuperAdmin),ne=c(()=>a.isMobile?240:300),oe=c(()=>a.isMobile?220:240),re=c(()=>a.isMobile?260:320),l=Re({customerCount:0,allgram:0,ordercount:0,reagent:[],lastOrder:[],sumLastOrder:0,sumLastOrderMonth:0,ordersTrend:[],statusBreakdown:[],channelBreakdown:[],topProducts:[],goldPricePerGram:null,totalCustomerDebtGrams:0}),B=[C,k],ie=[H,C,C,H,H,k,k,Kt],z={fontFamily:"inherit",parentHeightOffset:0,toolbar:{show:!1}},R={borderColor:"#eef0f5",strokeDashArray:4},de=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"sts_str"},{title:"تاریخ",dataIndex:"caj"}];function G(s){return{success:"green",warning:"orange",danger:"red",primary:"blue"}[s]??""}function m(s){return j(s??0)||"0"}const ce=c(()=>M(new Date().toISOString())),ue=c(()=>l.goldPricePerGram?`${j(Math.round(Number(l.goldPricePerGram)))} تومان`:"—"),$=c(()=>j(Number(l.totalCustomerDebtGrams??0).toFixed(2))),E=c(()=>{const s=Number(l.sumLastOrder??0),t=Number(l.sumLastOrderMonth??0);return s>0?(t/s).toFixed(2):"0"}),W=c(()=>(l.ordersTrend??[]).map(s=>s.total)),pe={chart:{...z,sparkline:{enabled:!0},animations:{enabled:!1}},colors:[k],stroke:{curve:"smooth",width:2},fill:{type:"gradient",gradient:{opacityFrom:.35,opacityTo:0}},tooltip:{enabled:!1}},w=K("area"),_e=[{label:"ناحیه‌ای",value:"area"},{label:"ستونی",value:"bar"}],he=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.retail??0),0)),me=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.wholesale??0),0)),be=c(()=>{const s=l.ordersTrend??[],t={name:"عمده فروشی",data:s.map(_=>_.wholesale)};return u.value?[{name:"تک فروشی",data:s.map(_=>_.retail)},t]:[t]}),ge=c(()=>({chart:{...z,stacked:w.value==="bar"},colors:u.value?[C,k]:[k],dataLabels:{enabled:!1},stroke:w.value==="area"?{curve:"smooth",width:2.5}:{width:0},fill:w.value==="area"?{type:"gradient",gradient:{opacityFrom:.3,opacityTo:.02}}:{opacity:1},plotOptions:{bar:{columnWidth:"55%",borderRadius:3,borderRadiusApplication:"end"}},legend:{show:!1},grid:{...R,padding:a.isMobile?{left:4,right:4}:{}},markers:{size:0,hover:{size:5}},xaxis:{categories:(l.ordersTrend??[]).map(s=>String(M(s.date)??"").slice(5)),tickAmount:a.isMobile?6:10,axisBorder:{show:!1},axisTicks:{show:!1},labels:{rotate:0,hideOverlappingLabels:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{style:{colors:x,fontSize:a.isMobile?"10px":"12px"},formatter:s=>String(Math.round(s))}},tooltip:{shared:!0,intersect:!1,x:{formatter:(s,t)=>{var _;return M((_=(l.ordersTrend??[])[t==null?void 0:t.dataPointIndex])==null?void 0:_.date)}}}})),U=c(()=>(l.channelBreakdown??[]).map(s=>Number(s.count??0))),fe=c(()=>({chart:{...z},labels:(l.channelBreakdown??[]).map(s=>s.label),colors:B,legend:{show:!1},dataLabels:{enabled:!1},stroke:{width:3,colors:["#fff"]},plotOptions:{pie:{donut:{size:"74%",labels:{show:!0,name:{fontSize:"13px",color:x,offsetY:18},value:{fontSize:"16px",fontWeight:500,color:C,offsetY:-14},total:{show:!0,label:"کل سفارش‌ها",color:x,fontSize:"13px",formatter:s=>String(s.globals.seriesTotals.reduce((t,_)=>t+_,0))}}}}}})),ve=c(()=>(l.statusBreakdown??[]).reduce((s,t)=>s+Number(t.count??0),0)),V=c(()=>[{name:"تعداد",data:(l.statusBreakdown??[]).map(s=>Number(s.count??0))}]),ye=c(()=>{var s;return Math.max(200,(((s=l.statusBreakdown)==null?void 0:s.length)??0)*(a.isMobile?38:44)+40)}),Oe=c(()=>({chart:{...z},colors:ie,plotOptions:{bar:{horizontal:!0,distributed:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"58%"}},legend:{show:!1},dataLabels:{enabled:!0,textAnchor:"start",offsetX:8,style:{colors:["#fff"],fontWeight:500,fontSize:"12px"}},grid:{...R,xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{categories:(l.statusBreakdown??[]).map(s=>s.label),axisBorder:{show:!1},axisTicks:{show:!1},labels:{style:{colors:x,fontSize:"11px"}}},yaxis:{labels:{maxWidth:a.isMobile?110:160,style:{colors:"#475467",fontSize:"12px",fontWeight:500}}},tooltip:{y:{formatter:s=>`${s} سفارش`}}})),ke=c(()=>Math.max(1,...(l.reagent??[]).map(s=>Number(s.grams_sell??0))));function we(s){return Math.max(2,Math.round(Number(s.grams_sell??0)/ke.value*100))}const Y=c(()=>[{name:"وزن فروخته‌شده (گرم)",data:(l.topProducts??[]).map(s=>Number(s.weight??0))}]),xe=c(()=>({chart:{...z},plotOptions:{bar:a.isMobile?{horizontal:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"60%"}:{borderRadius:8,borderRadiusApplication:"end",columnWidth:"45%"}},colors:[k],fill:{type:"gradient",gradient:{shade:"light",type:"vertical",shadeIntensity:.2,opacityFrom:1,opacityTo:.75}},dataLabels:{enabled:!1},grid:R,xaxis:{categories:(l.topProducts??[]).map(s=>s.title),axisBorder:{show:!1},axisTicks:{show:!1},labels:{trim:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{maxWidth:a.isMobile?120:160,style:{colors:x,fontSize:a.isMobile?"11px":"12px"}}},tooltip:{y:{formatter:s=>`${s} گرم`}}}));return Ae(async()=>{try{n.value=!0;const{data:s}=await Be.get("dashboard/overview");Object.assign(l,s),l.reagent=[...l.reagent??[]].sort((t,_)=>Number(_.grams_sell)-Number(t.grams_sell)),l.lastOrder=[...l.lastOrder??[]].sort((t,_)=>Number(_.w)-Number(t.w))}catch(s){console.error(s)}finally{n.value=!1}}),(s,t)=>{const _=O("apexchart"),Se=O("a-segmented"),N=O("a-empty"),X=O("a-tag"),Ce=O("a-list-item"),ze=O("a-list"),Me=O("a-table"),Le=O("a-spin");return d(),b(Le,{spinning:n.value},{default:S(()=>{var q,J,Q,Z;return[e("div",Xe,[e("header",qe,[t[1]||(t[1]=e("div",null,[e("h1",{class:"dash-head__title"},"داشبورد"),e("p",{class:"dash-head__sub"},"خلاصه عملکرد فروش در ۳۰ روز گذشته")],-1)),e("div",Je,[h(g(je)),e("span",null,o(ce.value),1)])]),e("section",Qe,[e("div",Ze,[e("div",Ke,[e("span",et,[h(g(F))]),t[2]||(t[2]=e("span",{class:"kpi__label"},"تعداد سفارشات (۳۰ روز گذشته)",-1))]),e("div",tt,[v(o(m(l.ordercount)),1),t[3]||(t[3]=e("small",null,"سفارش",-1))]),W.value.length?(d(),b(_,{key:0,class:"kpi__spark",type:"area",height:"56",options:pe,series:[{name:"سفارش",data:W.value}]},null,8,["series"])):P("",!0)]),e("div",st,[e("div",at,[e("span",lt,[h(g(A))]),t[4]||(t[4]=e("span",{class:"kpi__label"},"طلای فروش رفته (۳۰ روز گذشته)",-1))]),e("div",nt,[v(o(m(l.allgram)),1),t[5]||(t[5]=e("small",null,"گرم",-1))]),e("div",ot,[t[6]||(t[6]=v(" میانگین هر سفارش تحویل‌شده: ",-1)),e("b",null,o(E.value)+" گرم",1)])]),e("div",rt,[e("div",it,[e("span",dt,[h(g(De))]),t[7]||(t[7]=e("span",{class:"kpi__label"},"مشتریان جدید (۳۰ روز گذشته)",-1))]),e("div",ct,[v(o(m(l.customerCount)),1),t[8]||(t[8]=e("small",null,"نفر",-1))]),e("div",ut,[t[9]||(t[9]=v(" مجموع بدهی طلای مشتریان: ",-1)),e("b",null,o($.value)+" گرم",1)])]),e("div",pt,[e("div",_t,[e("span",ht,[h(g(Fe))]),t[10]||(t[10]=e("span",{class:"kpi__label"},"نرخ هر گرم طلای ۱۸ عیار",-1))]),e("div",mt,o(ue.value),1),e("div",bt,[t[11]||(t[11]=v(" سفارشات تحویل‌شده (۳۰ روز گذشته): ",-1)),e("b",null,o(m(l.sumLastOrder))+" سفارش",1)])])]),e("section",{class:ee(["row",u.value?"row--main":"row--single"])},[e("div",gt,[e("div",ft,[e("div",null,[t[12]||(t[12]=e("h3",{class:"panel__title"},"روند سفارش‌ها",-1)),e("p",vt,o(u.value?"۳۰ روز گذشته، تفکیک تک و عمده":"۳۰ روز گذشته"),1)]),h(Se,{value:w.value,"onUpdate:value":t[0]||(t[0]=i=>w.value=i),options:_e,size:"small"},null,8,["value"])]),e("div",yt,[u.value?(d(),y("div",Ot,[e("span",{class:"dot",style:T({background:C})},null,4),t[13]||(t[13]=e("span",null,"تک فروشی",-1)),e("b",null,o(m(he.value)),1)])):P("",!0),e("div",kt,[e("span",{class:"dot",style:T({background:k})},null,4),t[14]||(t[14]=e("span",null,"عمده فروشی",-1)),e("b",null,o(m(me.value)),1)])]),(d(),b(_,{key:w.value,type:w.value,height:ne.value,options:ge.value,series:be.value},null,8,["type","height","options","series"]))]),u.value?(d(),y("div",wt,[t[15]||(t[15]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"تفکیک عمده / تک"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),U.value.some(i=>i>0)?(d(),y(L,{key:0},[h(_,{type:"donut",height:oe.value,options:fe.value,series:U.value},null,8,["height","options","series"]),e("ul",xt,[(d(!0),y(L,null,te(l.channelBreakdown,(i,f)=>(d(),y("li",{key:i.channel},[e("span",{class:"dot",style:T({background:B[f%B.length]})},null,4),e("span",St,o(i.label),1),e("span",Ct,o(m(i.grams))+" گرم",1),e("b",null,o(m(i.count)),1)]))),128))])],64)):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])):P("",!0)],2),e("section",zt,[e("div",Mt,[e("div",Lt,[t[16]||(t[16]=e("div",null,[e("h3",{class:"panel__title"},"وضعیت سفارشات"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")],-1)),e("span",Nt,o(m(ve.value))+" سفارش",1)]),V.value[0].data.length?(d(),b(_,{key:0,type:"bar",height:ye.value,options:Oe.value,series:V.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Pt,[t[21]||(t[21]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"میزان فروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),e("ul",Tt,[e("li",null,[e("span",At,[h(g(He))]),t[17]||(t[17]=e("span",{class:"metric-list__label"},"تعداد سفارش (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrder)),1)]),e("li",null,[e("span",Bt,[h(g(A))]),t[18]||(t[18]=e("span",{class:"metric-list__label"},"مجموع وزن (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrderMonth))+" گرم",1)]),e("li",null,[e("span",Rt,[h(g(D))]),t[19]||(t[19]=e("span",{class:"metric-list__label"},"میانگین هر سفارش",-1)),e("b",null,o(E.value)+" گرم",1)]),e("li",null,[e("span",jt,[h(g(Ge))]),t[20]||(t[20]=e("span",{class:"metric-list__label"},"مجموع بدهی طلای مشتریان",-1)),e("b",null,o($.value)+" گرم",1)])])])]),e("section",Ht,[e("div",It,[t[22]||(t[22]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"عملکرد کارشناسان فروش"),e("p",{class:"panel__sub"},"بر اساس گرم فروخته‌شده")])],-1)),(q=l.reagent)!=null&&q.length?(d(),y("ol",Dt,[(d(!0),y(L,null,te(l.reagent,(i,f)=>(d(),y("li",{key:i.id??f},[e("span",{class:ee(["rank-list__pos",{"is-top":f<3}])},o(f+1),3),e("div",Ft,[e("div",Gt,[e("span",$t,o(i.name),1),e("b",null,o(m(i.grams_sell))+" گرم",1)]),e("div",Et,[e("span",{style:T({width:`${we(i)}%`})},null,4)]),e("span",Wt,o(m(i.order_count))+" سفارش",1)])]))),128))])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Ut,[t[23]||(t[23]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"محصولات پرفروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته، بر اساس وزن")])],-1)),(J=Y.value[0])!=null&&J.data.length?(d(),b(_,{key:0,type:"bar",height:re.value,options:xe.value,series:Y.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])]),e("section",Vt,[e("div",Yt,[t[24]||(t[24]=e("div",null,[e("h3",{class:"panel__title"},"سفارشات هفته جاری"),e("p",{class:"panel__sub"},"مرتب‌شده بر اساس وزن")],-1)),e("span",Xt,o(m(((Q=l.lastOrder)==null?void 0:Q.length)??0))+" سفارش",1)]),g(a).isMobile?(d(),b(ze,{key:0,class:"order-list","data-source":l.lastOrder,pagination:((Z=l.lastOrder)==null?void 0:Z.length)>10?{pageSize:10,size:"small",align:"center"}:!1,"row-key":"id"},{renderItem:S(({item:i})=>[h(Ce,{class:"order-item"},{default:S(()=>[e("div",qt,[e("span",Jt,o(i.name),1),h(X,{color:G(i.statusColor),class:"order-item__tag"},{default:S(()=>[v(o(i.sts_str),1)]),_:2},1032,["color"])]),e("div",Qt,o(i.customer),1),e("div",Zt,[e("span",null,o(i.w)+" گرم",1),e("span",null,o(g(M)(i.caj)),1)])]),_:2},1024)]),_:1},8,["data-source","pagination"])):(d(),b(Me,{key:1,class:"dash-table",size:"middle","data-source":l.lastOrder,columns:de,pagination:{pageSize:10},scroll:{x:"max-content"},"row-key":"id"},{bodyCell:S(({column:i,record:f})=>[i.dataIndex==="sts_str"?(d(),b(X,{key:0,color:G(f.statusColor)},{default:S(()=>[v(o(f.sts_str),1)]),_:2},1032,["color"])):i.dataIndex==="caj"?(d(),y(L,{key:1},[v(o(g(M)(f.caj)),1)],64)):i.dataIndex==="w"?(d(),y(L,{key:2},[v(o(f.w)+" گرم",1)],64)):P("",!0)]),_:1},8,["data-source"]))])])]}),_:1},8,["spinning"])}}}),os=Ie(es,[["__scopeId","data-v-00f0eac8"]]);export{os as default}; diff --git a/apps/admin-panel/dist/assets/DateInput-CSLG7sxn.js b/apps/admin-panel/dist/assets/DateInput-D9Jh1loF.js similarity index 89% rename from apps/admin-panel/dist/assets/DateInput-CSLG7sxn.js rename to apps/admin-panel/dist/assets/DateInput-D9Jh1loF.js index b54d01c..1d2de11 100644 --- a/apps/admin-panel/dist/assets/DateInput-CSLG7sxn.js +++ b/apps/admin-panel/dist/assets/DateInput-D9Jh1loF.js @@ -1 +1 @@ -import{m}from"./index-BAamWbCu.js";import{d as _,n as V,o as r,a as Y,w as h,c as D,b,t as j,i as M,m as i,s as x,r as d,_ as y}from"./index-DajPj7Ec.js";const k={key:0,class:"hint"},C=_({__name:"DateInput",props:{label:{},modelValue:{},placeholder:{default:"مثال: ۱۴۰۳/۰۵/۱۲"}},emits:["update:modelValue"],setup(o,{emit:p}){const n=o,c=p,t=i(void 0),a=i(""),v=x(()=>{if(t.value!==void 0)return t.value;if(!n.modelValue)return"";const e=m(n.modelValue);return e.isValid()?e.format("jYYYY/jMM/jDD"):""});V(()=>n.modelValue,()=>{t.value=void 0});function f(e){if(t.value=e,!e){a.value="",c("update:modelValue",void 0);return}const u=e.replace(/[۰-۹]/g,s=>String("۰۱۲۳۴۵۶۷۸۹".indexOf(s))),l=m(u,"jYYYY/jMM/jDD");l.isValid()?(a.value="",c("update:modelValue",l.format("YYYY-MM-DD"))):a.value="تاریخ معتبر نیست"}return(e,u)=>{const l=d("a-input"),s=d("a-form-item");return r(),Y(s,{label:o.label},{default:h(()=>[D(l,{value:v.value,placeholder:o.placeholder,"allow-clear":"","onUpdate:value":f},null,8,["value","placeholder"]),a.value?(r(),b("small",k,j(a.value),1)):M("",!0)]),_:1},8,["label"])}}}),I=y(C,[["__scopeId","data-v-3863c3bc"]]);export{I as D}; +import{m}from"./index-CKaD48iT.js";import{d as _,n as V,o as r,a as Y,w as h,c as D,b,t as j,i as M,m as i,s as x,r as d,_ as y}from"./index-eLNLLYwC.js";const k={key:0,class:"hint"},C=_({__name:"DateInput",props:{label:{},modelValue:{},placeholder:{default:"مثال: ۱۴۰۳/۰۵/۱۲"}},emits:["update:modelValue"],setup(o,{emit:p}){const n=o,c=p,t=i(void 0),a=i(""),v=x(()=>{if(t.value!==void 0)return t.value;if(!n.modelValue)return"";const e=m(n.modelValue);return e.isValid()?e.format("jYYYY/jMM/jDD"):""});V(()=>n.modelValue,()=>{t.value=void 0});function f(e){if(t.value=e,!e){a.value="",c("update:modelValue",void 0);return}const u=e.replace(/[۰-۹]/g,s=>String("۰۱۲۳۴۵۶۷۸۹".indexOf(s))),l=m(u,"jYYYY/jMM/jDD");l.isValid()?(a.value="",c("update:modelValue",l.format("YYYY-MM-DD"))):a.value="تاریخ معتبر نیست"}return(e,u)=>{const l=d("a-input"),s=d("a-form-item");return r(),Y(s,{label:o.label},{default:h(()=>[D(l,{value:v.value,placeholder:o.placeholder,"allow-clear":"","onUpdate:value":f},null,8,["value","placeholder"]),a.value?(r(),b("small",k,j(a.value),1)):M("",!0)]),_:1},8,["label"])}}}),I=y(C,[["__scopeId","data-v-3863c3bc"]]);export{I as D}; diff --git a/apps/admin-panel/dist/assets/Edit-CNTQOlgk.js b/apps/admin-panel/dist/assets/Edit-CNTQOlgk.js new file mode 100644 index 0000000..60fb5f8 --- /dev/null +++ b/apps/admin-panel/dist/assets/Edit-CNTQOlgk.js @@ -0,0 +1 @@ +import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js";import{d as t,a as e,o as r}from"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";const i=t({__name:"Edit",setup(a){return(_,m)=>(r(),e(o))}});export{i as default}; diff --git a/apps/admin-panel/dist/assets/Edit-kPt-2bSX.js b/apps/admin-panel/dist/assets/Edit-kPt-2bSX.js deleted file mode 100644 index 2e06bef..0000000 --- a/apps/admin-panel/dist/assets/Edit-kPt-2bSX.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js";import{d as t,a as e,o as r}from"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";const i=t({__name:"Edit",setup(a){return(_,m)=>(r(),e(o))}});export{i as default}; diff --git a/apps/admin-panel/dist/assets/EditBranches-BgZpg5Qg.js b/apps/admin-panel/dist/assets/EditBranches-BgZpg5Qg.js new file mode 100644 index 0000000..431470f --- /dev/null +++ b/apps/admin-panel/dist/assets/EditBranches-BgZpg5Qg.js @@ -0,0 +1 @@ +import{_ as e}from"./AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js";import{d as o,a,o as r}from"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const p=o({__name:"EditBranches",setup(t){return(n,s)=>(r(),a(e))}});export{p as default}; diff --git a/apps/admin-panel/dist/assets/EditBranches-DD2D-1SM.js b/apps/admin-panel/dist/assets/EditBranches-DD2D-1SM.js deleted file mode 100644 index 5bd3c1e..0000000 --- a/apps/admin-panel/dist/assets/EditBranches-DD2D-1SM.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e}from"./AddBranches.vue_vue_type_script_setup_true_lang-C5lsu342.js";import{d as o,a,o as r}from"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";const p=o({__name:"EditBranches",setup(t){return(n,s)=>(r(),a(e))}});export{p as default}; diff --git a/apps/admin-panel/dist/assets/EditBulkCustomer-C_e-C8L8.js b/apps/admin-panel/dist/assets/EditBulkCustomer-C_e-C8L8.js new file mode 100644 index 0000000..b526471 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditBulkCustomer-C_e-C8L8.js @@ -0,0 +1 @@ +import{_ as o}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js";import{d as r,a as t,o as m}from"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./DateInput-D9Jh1loF.js";import"./index-CKaD48iT.js";import"./UserOutlined-B4M5rNrX.js";import"./ShopOutlined-DIjF3I3z.js";import"./EnvironmentOutlined-BKbou10z.js";import"./PercentageOutlined-DyprS4lh.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";const C=r({__name:"EditBulkCustomer",setup(p){return(i,a)=>(m(),t(o,{class:"page-card"}))}});export{C as default}; diff --git a/apps/admin-panel/dist/assets/EditBulkCustomer-w9LEjkC1.js b/apps/admin-panel/dist/assets/EditBulkCustomer-w9LEjkC1.js deleted file mode 100644 index d8691cd..0000000 --- a/apps/admin-panel/dist/assets/EditBulkCustomer-w9LEjkC1.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js";import{d as r,a as t,o as m}from"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./DateInput-CSLG7sxn.js";import"./index-BAamWbCu.js";import"./UserOutlined-CzruAWCH.js";import"./ShopOutlined-MoIbCAG4.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./PercentageOutlined-D8KYbn5o.js";import"./SafetyCertificateOutlined-DSk-s9OX.js";const C=r({__name:"EditBulkCustomer",setup(p){return(i,a)=>(m(),t(o,{class:"page-card"}))}});export{C as default}; diff --git a/apps/admin-panel/dist/assets/EditInvoice-CKOrEPF-.js b/apps/admin-panel/dist/assets/EditInvoice-CKOrEPF-.js deleted file mode 100644 index 1cf9974..0000000 --- a/apps/admin-panel/dist/assets/EditInvoice-CKOrEPF-.js +++ /dev/null @@ -1 +0,0 @@ -import o from"./AddInvoice-iZuqzIMz.js";import{d as t,a as r,o as e}from"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./model-CR-NjhTP.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";const u=t({__name:"EditInvoice",setup(p){return(i,m)=>(e(),r(o))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditInvoice-oFQdQ5sU.js b/apps/admin-panel/dist/assets/EditInvoice-oFQdQ5sU.js new file mode 100644 index 0000000..ea71381 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditInvoice-oFQdQ5sU.js @@ -0,0 +1 @@ +import o from"./AddInvoice-DwmImnAo.js";import{d as t,a as r,o as e}from"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./model-btNVLLyF.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";const u=t({__name:"EditInvoice",setup(p){return(i,m)=>(e(),r(o))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditProduct-BKzZP7ji.js b/apps/admin-panel/dist/assets/EditProduct-BKzZP7ji.js new file mode 100644 index 0000000..56c5892 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditProduct-BKzZP7ji.js @@ -0,0 +1 @@ +import o from"./AddProduct-DqeCa5en.js";import{d as t,b as e,c as r,o as c}from"./index-eLNLLYwC.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./PictureOutlined-BQUWPT2c.js";const u=t({__name:"EditProduct",setup(a){return(m,n)=>(c(),e("div",null,[r(o)]))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditProduct-miBXIVTw.js b/apps/admin-panel/dist/assets/EditProduct-miBXIVTw.js deleted file mode 100644 index 387257b..0000000 --- a/apps/admin-panel/dist/assets/EditProduct-miBXIVTw.js +++ /dev/null @@ -1 +0,0 @@ -import e from"./AddProduct-CqaK3I6Q.js";import{d as o,b as t,c as r,o as c}from"./index-DajPj7Ec.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./AppstoreOutlined-BPqrCmxh.js";const _=o({__name:"EditProduct",setup(a){return(n,d)=>(c(),t("div",null,[r(e)]))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/EditReagent-Ba5R7-Av.js b/apps/admin-panel/dist/assets/EditReagent-Ba5R7-Av.js deleted file mode 100644 index 4ee47e5..0000000 --- a/apps/admin-panel/dist/assets/EditReagent-Ba5R7-Av.js +++ /dev/null @@ -1 +0,0 @@ -import{R as t}from"./ReagentCustomer-BAV0MXtJ.js";import{d as o,a as r,o as e}from"./index-DajPj7Ec.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./UserOutlined-CzruAWCH.js";import"./ShopOutlined-MoIbCAG4.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./CameraOutlined-B6nXMt0y.js";import"./PercentageOutlined-D8KYbn5o.js";const g=o({__name:"EditReagent",setup(a){return(p,m)=>(e(),r(t,{class:"page-card"}))}});export{g as default}; diff --git a/apps/admin-panel/dist/assets/EditReagent-CwG5Obtx.js b/apps/admin-panel/dist/assets/EditReagent-CwG5Obtx.js new file mode 100644 index 0000000..d2c11e5 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditReagent-CwG5Obtx.js @@ -0,0 +1 @@ +import{R as t}from"./ReagentCustomer-BXqRAucN.js";import{d as o,a as r,o as e}from"./index-eLNLLYwC.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import"./UserOutlined-B4M5rNrX.js";import"./ShopOutlined-DIjF3I3z.js";import"./EnvironmentOutlined-BKbou10z.js";import"./CameraOutlined-CFYC5ScW.js";import"./PercentageOutlined-DyprS4lh.js";const g=o({__name:"EditReagent",setup(a){return(p,m)=>(e(),r(t,{class:"page-card"}))}});export{g as default}; diff --git a/apps/admin-panel/dist/assets/EditSingleCustomer-Bn4VcGk8.js b/apps/admin-panel/dist/assets/EditSingleCustomer-Bn4VcGk8.js new file mode 100644 index 0000000..bdfd2a3 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditSingleCustomer-Bn4VcGk8.js @@ -0,0 +1 @@ +import{S as o}from"./singleCustomer-gqRtFTnm.js";import{d as r,a as e,o as t}from"./index-eLNLLYwC.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./DateInput-D9Jh1loF.js";import"./index-CKaD48iT.js";import"./UserOutlined-B4M5rNrX.js";const u=r({__name:"EditSingleCustomer",setup(a){return(m,p)=>(t(),e(o,{class:"page-card"}))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditSingleCustomer-CTn0uVfI.js b/apps/admin-panel/dist/assets/EditSingleCustomer-CTn0uVfI.js deleted file mode 100644 index 5e7e51b..0000000 --- a/apps/admin-panel/dist/assets/EditSingleCustomer-CTn0uVfI.js +++ /dev/null @@ -1 +0,0 @@ -import{S as o}from"./singleCustomer-3o4eCG9y.js";import{d as r,a as e,o as t}from"./index-DajPj7Ec.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./DateInput-CSLG7sxn.js";import"./index-BAamWbCu.js";import"./UserOutlined-CzruAWCH.js";const u=r({__name:"EditSingleCustomer",setup(a){return(m,p)=>(t(),e(o,{class:"page-card"}))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditWorkshop-BC8_AOnI.js b/apps/admin-panel/dist/assets/EditWorkshop-BC8_AOnI.js new file mode 100644 index 0000000..e1672f3 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditWorkshop-BC8_AOnI.js @@ -0,0 +1 @@ +import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js";import{d as e,a as r,o as t}from"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const m=e({__name:"EditWorkshop",setup(a){return(s,_)=>(t(),r(o))}});export{m as default}; diff --git a/apps/admin-panel/dist/assets/EditWorkshop-CoYdSxko.js b/apps/admin-panel/dist/assets/EditWorkshop-CoYdSxko.js deleted file mode 100644 index 95ffbf3..0000000 --- a/apps/admin-panel/dist/assets/EditWorkshop-CoYdSxko.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js";import{d as e,a as r,o as t}from"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";const m=e({__name:"EditWorkshop",setup(a){return(s,_)=>(t(),r(o))}});export{m as default}; diff --git a/apps/admin-panel/dist/assets/EnvironmentOutlined-DzgF3_xx.js b/apps/admin-panel/dist/assets/EnvironmentOutlined-BKbou10z.js similarity index 96% rename from apps/admin-panel/dist/assets/EnvironmentOutlined-DzgF3_xx.js rename to apps/admin-panel/dist/assets/EnvironmentOutlined-BKbou10z.js index 87a3f35..2f26a5f 100644 --- a/apps/admin-panel/dist/assets/EnvironmentOutlined-DzgF3_xx.js +++ b/apps/admin-panel/dist/assets/EnvironmentOutlined-BKbou10z.js @@ -1 +1 @@ -import{c as o,I as u}from"./index-DajPj7Ec.js";var l={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 289.1a362.49 362.49 0 00-79.9-115.7 370.83 370.83 0 00-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 00169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0022.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1zm0-617.2c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8C612.4 381 624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z"}}]},name:"environment",theme:"outlined"};function c(n){for(var e=1;e[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-82a95474"]]);export{x as default}; +import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-eLNLLYwC.js";const p={},d={class:"full-page-msg"};function i(r,t){const a=s("a-button"),n=s("a-result");return u(),c("div",d,[e(n,{status:"404",title:"صفحه مورد نظر یافت نشد","sub-title":"آدرسی که وارد کرده‌اید وجود ندارد."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-82a95474"]]);export{x as default}; diff --git a/apps/admin-panel/dist/assets/Error500-2YJNeuLX.js b/apps/admin-panel/dist/assets/Error500-jeDtZpef.js similarity index 89% rename from apps/admin-panel/dist/assets/Error500-2YJNeuLX.js rename to apps/admin-panel/dist/assets/Error500-jeDtZpef.js index d94d09b..b497055 100644 --- a/apps/admin-panel/dist/assets/Error500-2YJNeuLX.js +++ b/apps/admin-panel/dist/assets/Error500-jeDtZpef.js @@ -1 +1 @@ -import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-DajPj7Ec.js";const p={},d={class:"full-page-msg"};function i(r,t){const a=s("a-button"),n=s("a-result");return u(),c("div",d,[e(n,{status:"500",title:"خطای سرور","sub-title":"مشکلی در سرور رخ داده است. لطفاً بعداً تلاش کنید."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-1080291a"]]);export{x as default}; +import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-eLNLLYwC.js";const p={},d={class:"full-page-msg"};function i(r,t){const a=s("a-button"),n=s("a-result");return u(),c("div",d,[e(n,{status:"500",title:"خطای سرور","sub-title":"مشکلی در سرور رخ داده است. لطفاً بعداً تلاش کنید."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-1080291a"]]);export{x as default}; diff --git a/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-rDFQ96E5.js b/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-B2i1tZYn.js similarity index 85% rename from apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-rDFQ96E5.js rename to apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-B2i1tZYn.js index 341db8a..bcf0d7a 100644 --- a/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-rDFQ96E5.js +++ b/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-B2i1tZYn.js @@ -1 +1 @@ -import{d as E,a as i,w as l,r as x,o as s,c as d,aj as P,p as w,h as u,E as y,W as B,$ as L,a7 as S,m as v,y as A,G as $,l as I}from"./index-DajPj7Ec.js";import{X as N}from"./model-CR-NjhTP.js";import{_ as V}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";const X={class:"flex gap-2"},T=E({__name:"FacilityList",props:{title:{},model:{},editPath:{},activePath:{},addRid:{},addLabel:{}},setup(a){const k=a,h=I(),m=v(null),c=v(!1),f=v(void 0);function _(){f.value=void 0,c.value=!0}function b(e){f.value=e,c.value=!0}function g(e){c.value=e}function O(){var e;(e=m.value)==null||e.fetch()}function R(e){h.push(`${k.editPath}/${e}`)}async function C(e){var o,n,r;try{await A.get(`${k.activePath}/${e}`),$.success("تغییرات ثبت شد"),(o=m.value)==null||o.fetch()}catch(t){$.error(((r=(n=t==null?void 0:t.response)==null?void 0:n.data)==null?void 0:r.message)??"خطا در تغییر وضعیت")}}return(e,o)=>{const n=x("a-tooltip"),r=x("a-card");return s(),i(r,{title:a.title,class:"page-card"},{default:l(()=>[d(N,{ref_key:"tbl",ref:m,model:a.model,"mobile-cards":""},P({actions:l(({record:t})=>[w("div",X,[a.addRid?(s(),i(n,{key:0,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>b(t.id)},null,8,["onClick"])]),_:2},1024)):(s(),i(n,{key:1,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>R(t.id)},null,8,["onClick"])]),_:2},1024)),d(n,{title:"وضعیت"},{default:l(()=>[t.is_active?(s(),i(u(B),{key:0,class:"cursor-pointer mx-1 text-success",onClick:p=>C(t.id)},null,8,["onClick"])):(s(),i(u(L),{key:1,class:"cursor-pointer mx-1 text-danger",onClick:p=>C(t.id)},null,8,["onClick"]))]),_:2},1024)])]),_:2},[a.addRid?{name:"add",fn:l(()=>[d(V,{rid:a.addRid,"add-label":a.addLabel,onAdd:o[0]||(o[0]=t=>_())},null,8,["rid","add-label"])]),key:"0"}:void 0]),1032,["model"]),S(e.$slots,"form",{open:c.value,editingId:f.value,onUpdateOpen:g,onSuccess:O})]),_:3},8,["title"])}}});export{T as _}; +import{d as E,a as i,w as l,r as x,o as s,c as d,ak as P,p as w,h as u,E as y,W as B,$ as L,a8 as S,m as v,y as A,G as $,l as I}from"./index-eLNLLYwC.js";import{X as N}from"./model-btNVLLyF.js";import{_ as V}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";const X={class:"flex gap-2"},U=E({__name:"FacilityList",props:{title:{},model:{},editPath:{},activePath:{},addRid:{},addLabel:{}},setup(a){const k=a,h=I(),m=v(null),c=v(!1),f=v(void 0);function _(){f.value=void 0,c.value=!0}function b(e){f.value=e,c.value=!0}function g(e){c.value=e}function O(){var e;(e=m.value)==null||e.fetch()}function R(e){h.push(`${k.editPath}/${e}`)}async function C(e){var o,n,r;try{await A.get(`${k.activePath}/${e}`),$.success("تغییرات ثبت شد"),(o=m.value)==null||o.fetch()}catch(t){$.error(((r=(n=t==null?void 0:t.response)==null?void 0:n.data)==null?void 0:r.message)??"خطا در تغییر وضعیت")}}return(e,o)=>{const n=x("a-tooltip"),r=x("a-card");return s(),i(r,{title:a.title,class:"page-card"},{default:l(()=>[d(N,{ref_key:"tbl",ref:m,model:a.model,"mobile-cards":""},P({actions:l(({record:t})=>[w("div",X,[a.addRid?(s(),i(n,{key:0,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>b(t.id)},null,8,["onClick"])]),_:2},1024)):(s(),i(n,{key:1,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>R(t.id)},null,8,["onClick"])]),_:2},1024)),d(n,{title:"وضعیت"},{default:l(()=>[t.is_active?(s(),i(u(B),{key:0,class:"cursor-pointer mx-1 text-success",onClick:p=>C(t.id)},null,8,["onClick"])):(s(),i(u(L),{key:1,class:"cursor-pointer mx-1 text-danger",onClick:p=>C(t.id)},null,8,["onClick"]))]),_:2},1024)])]),_:2},[a.addRid?{name:"add",fn:l(()=>[d(V,{rid:a.addRid,"add-label":a.addLabel,onAdd:o[0]||(o[0]=t=>_())},null,8,["rid","add-label"])]),key:"0"}:void 0]),1032,["model"]),S(e.$slots,"form",{open:c.value,editingId:f.value,onUpdateOpen:g,onSuccess:O})]),_:3},8,["title"])}}});export{U as _}; diff --git a/apps/admin-panel/dist/assets/FullPage-DpKiI4Qs.js b/apps/admin-panel/dist/assets/FullPage-DMlJXjfZ.js similarity index 70% rename from apps/admin-panel/dist/assets/FullPage-DpKiI4Qs.js rename to apps/admin-panel/dist/assets/FullPage-DMlJXjfZ.js index 5e49f6a..df26edc 100644 --- a/apps/admin-panel/dist/assets/FullPage-DpKiI4Qs.js +++ b/apps/admin-panel/dist/assets/FullPage-DMlJXjfZ.js @@ -1 +1 @@ -import{_ as o,b as t,c,r,o as s}from"./index-DajPj7Ec.js";const n={},a={class:"layout--full-page"};function _(l,u){const e=r("router-view");return s(),t("div",a,[c(e)])}const i=o(n,[["render",_]]);export{i as default}; +import{_ as o,b as t,c,r,o as s}from"./index-eLNLLYwC.js";const n={},a={class:"layout--full-page"};function _(l,u){const e=r("router-view");return s(),t("div",a,[c(e)])}const i=o(n,[["render",_]]);export{i as default}; diff --git a/apps/admin-panel/dist/assets/IamCallback-DFjtEuae.js b/apps/admin-panel/dist/assets/IamCallback-CDfS1Tyd.js similarity index 85% rename from apps/admin-panel/dist/assets/IamCallback-DFjtEuae.js rename to apps/admin-panel/dist/assets/IamCallback-CDfS1Tyd.js index 742d291..d51c75a 100644 --- a/apps/admin-panel/dist/assets/IamCallback-DFjtEuae.js +++ b/apps/admin-panel/dist/assets/IamCallback-CDfS1Tyd.js @@ -1 +1 @@ -import{d as r,x as c,y as n,b as i,l as m,o as d}from"./index-DajPj7Ec.js";import{u as _}from"./auth-l1fvj2RU.js";const l={style:{"min-height":"100vh",display:"grid","place-items":"center"}},h=r({__name:"IamCallback",setup(p){const t=m(),o=_();return c(async()=>{const e=new URLSearchParams(window.location.search);if(sessionStorage.removeItem("gb_admin_iam_sso_checked"),e.get("error")||!e.get("code")||!e.get("state")){sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login");return}try{const{data:s}=await n.post("admin/auth/sso/callback",{code:e.get("code"),state:e.get("state")}),a={...s};delete a.roles,delete a.ut,o.inject(a),await t.replace("/dashboard/ecommerce")}catch{sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login")}}),(e,s)=>(d(),i("div",l,"در حال ورود..."))}});export{h as default}; +import{d as r,x as c,y as n,b as i,l as m,o as d}from"./index-eLNLLYwC.js";import{u as _}from"./auth-Cmkre2IW.js";const l={style:{"min-height":"100vh",display:"grid","place-items":"center"}},h=r({__name:"IamCallback",setup(p){const t=m(),o=_();return c(async()=>{const e=new URLSearchParams(window.location.search);if(sessionStorage.removeItem("gb_admin_iam_sso_checked"),e.get("error")||!e.get("code")||!e.get("state")){sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login");return}try{const{data:s}=await n.post("admin/auth/sso/callback",{code:e.get("code"),state:e.get("state")}),a={...s};delete a.roles,delete a.ut,o.inject(a),await t.replace("/dashboard/ecommerce")}catch{sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login")}}),(e,s)=>(d(),i("div",l,"در حال ورود..."))}});export{h as default}; diff --git a/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js b/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js similarity index 96% rename from apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js rename to apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js index 0c2ea69..f7d7ae6 100644 --- a/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js +++ b/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js @@ -1 +1 @@ -import{d as B,n as P,o as u,b as r,c as m,w as h,a as N,h as b,P as D,p as y,t as I,i as R,m as i,s as S,y as U,G as q,r as f}from"./index-DajPj7Ec.js";const z={class:"image-upload"},E={key:0},F={key:1},G={style:{"margin-top":"8px"}},L=["src"],$=B({__name:"ImageUploadInput",props:{modelValue:{default:null},purpose:{default:void 0},placeholder:{default:"بارگذاری"}},emits:["update:modelValue","ok"],setup(g,{emit:w}){const s=g,p=w,c=i(!1),d=i(!1),v=i(""),o=i([]);P(()=>s.modelValue,e=>{var a;e?((a=o.value[0])==null?void 0:a.url)!==e&&(o.value=[{uid:e,name:e.split("/").pop()??"file",status:"done",url:e}]):o.value=[]},{immediate:!0});const V=S(()=>s.placeholder);async function k({file:e}){var l,n;const a=new FormData;a.append("file",e),s.purpose&&a.append("purpose",s.purpose),c.value=!0;try{const{data:t}=await U.post("file/create",a);p("update:modelValue",t.url),p("ok",t)}catch(t){const _=((n=(l=t==null?void 0:t.response)==null?void 0:l.data)==null?void 0:n.message)??"بارگذاری فایل ناموفق بود";q.error(_)}finally{c.value=!1}}function x(){return p("update:modelValue",null),!0}function C(e){v.value=e.url,d.value=!0}return(e,a)=>{const l=f("a-spin"),n=f("a-upload"),t=f("a-modal");return u(),r("div",z,[m(n,{"file-list":o.value,"list-type":"picture-card","max-count":1,accept:"image/*","custom-request":k,onRemove:x,onPreview:C},{default:h(()=>[o.value.length===0?(u(),r("div",E,[c.value?(u(),N(l,{key:0,size:"small"})):(u(),r("div",F,[m(b(D)),y("div",G,I(V.value),1)]))])):R("",!0)]),_:1},8,["file-list"]),m(t,{open:d.value,footer:null,onCancel:a[0]||(a[0]=_=>d.value=!1)},{default:h(()=>[y("img",{src:v.value,style:{width:"100%"},alt:""},null,8,L)]),_:1},8,["open"])])}}});export{$ as _}; +import{d as B,n as P,o as u,b as r,c as m,w as h,a as N,h as b,P as D,p as y,t as I,i as R,m as i,s as S,y as U,G as q,r as f}from"./index-eLNLLYwC.js";const z={class:"image-upload"},E={key:0},F={key:1},G={style:{"margin-top":"8px"}},L=["src"],$=B({__name:"ImageUploadInput",props:{modelValue:{default:null},purpose:{default:void 0},placeholder:{default:"بارگذاری"}},emits:["update:modelValue","ok"],setup(g,{emit:w}){const s=g,p=w,c=i(!1),d=i(!1),v=i(""),o=i([]);P(()=>s.modelValue,e=>{var a;e?((a=o.value[0])==null?void 0:a.url)!==e&&(o.value=[{uid:e,name:e.split("/").pop()??"file",status:"done",url:e}]):o.value=[]},{immediate:!0});const V=S(()=>s.placeholder);async function k({file:e}){var l,n;const a=new FormData;a.append("file",e),s.purpose&&a.append("purpose",s.purpose),c.value=!0;try{const{data:t}=await U.post("file/create",a);p("update:modelValue",t.url),p("ok",t)}catch(t){const _=((n=(l=t==null?void 0:t.response)==null?void 0:l.data)==null?void 0:n.message)??"بارگذاری فایل ناموفق بود";q.error(_)}finally{c.value=!1}}function x(){return p("update:modelValue",null),!0}function C(e){v.value=e.url,d.value=!0}return(e,a)=>{const l=f("a-spin"),n=f("a-upload"),t=f("a-modal");return u(),r("div",z,[m(n,{"file-list":o.value,"list-type":"picture-card","max-count":1,accept:"image/*","custom-request":k,onRemove:x,onPreview:C},{default:h(()=>[o.value.length===0?(u(),r("div",E,[c.value?(u(),N(l,{key:0,size:"small"})):(u(),r("div",F,[m(b(D)),y("div",G,I(V.value),1)]))])):R("",!0)]),_:1},8,["file-list"]),m(t,{open:d.value,footer:null,onCancel:a[0]||(a[0]=_=>d.value=!1)},{default:h(()=>[y("img",{src:v.value,style:{width:"100%"},alt:""},null,8,L)]),_:1},8,["open"])])}}});export{$ as _}; diff --git a/apps/admin-panel/dist/assets/List-Be1uA64N.js b/apps/admin-panel/dist/assets/List-CMDP8SDT.js similarity index 79% rename from apps/admin-panel/dist/assets/List-Be1uA64N.js rename to apps/admin-panel/dist/assets/List-CMDP8SDT.js index 9ef9063..2859a61 100644 --- a/apps/admin-panel/dist/assets/List-Be1uA64N.js +++ b/apps/admin-panel/dist/assets/List-CMDP8SDT.js @@ -1 +1 @@ -import{a as $,b as s,X as B}from"./model-CR-NjhTP.js";import{_ as E}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import{_ as D}from"./Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js";import{d as X,u as M,b as O,c as i,w as o,r as u,o as c,h as m,a as f,E as T,i as b,D as V,p as w,m as _}from"./index-DajPj7Ec.js";import{u as A}from"./useDeleteHandler-CdwhuWqX.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";function I(){const t=new $("admin/categories/list","لیست دسته بندی");return t.add(new s("id","شماره").filterNumber()),t.add(new s("image","تصویر").noSort().renderSlot("image")),t.add(new s("type_str","نوع نمایش")),t.add(new s("title","عنوان دسته").filterNumber()),t.add(new s("parent.title","پدر دسته").filterNumber()),t.add(new s("opt","عملیات").noSort().renderSlot("opt")),t}const P={id:"page-user-list"},U=["src"],j="/img/no-items.png",W=X({__name:"List",setup(t){const k=M(),g=n=>!!k.hasPermission(n),y=I(),p=_(null),r=_(!1),l=_(void 0),{remove:x}=A({onSuccess:()=>{var n;return(n=p.value)==null?void 0:n.fetch()},successMessage:"دسته حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف دسته"});function C(){l.value=void 0,r.value=!0}function S(n){l.value=n,r.value=!0}return(n,a)=>{const v=u("a-tooltip"),h=u("a-popconfirm"),N=u("a-card");return c(),O("div",P,[i(N,{title:"لیست دسته بندی ها",class:"page-card"},{default:o(()=>[i(B,{ref_key:"tbl",ref:p,model:m(y),"mobile-cards":""},{add:o(()=>[i(E,{rid:"collection.create","add-label":"افزودن دسته",onAdd:C})]),image:o(({text:e})=>[w("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:e&&e.image?e.image:j},null,8,U)]),opt:o(({record:e})=>[g("collection.list.edit")?(c(),f(v,{key:0,title:"ویرایش"},{default:o(()=>[i(m(T),{class:"cursor-pointer mx-1 text-primary",onClick:d=>S(e.id)},null,8,["onClick"])]),_:2},1024)):b("",!0),g("collection.list.remove")?(c(),f(v,{key:1,title:"حذف"},{default:o(()=>[i(h,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:d=>m(x)(`category/${e.id}`)},{title:o(()=>[...a[2]||(a[2]=[w("p",null,"آیا مطمئن به حذف دسته مورد نظر هستید ؟",-1)])]),default:o(()=>[i(m(V),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),(c(),f(D,{key:l.value??"new",open:r.value,id:l.value,"onUpdate:open":a[0]||(a[0]=e=>r.value=e),onSuccess:a[1]||(a[1]=e=>{var d;return(d=p.value)==null?void 0:d.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{W as default}; +import{a as $,b as s,X as B}from"./model-btNVLLyF.js";import{_ as E}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import{_ as D}from"./Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js";import{d as X,u as M,b as O,c as i,w as o,r as u,o as c,h as m,a as f,E as T,i as b,D as V,p as w,m as _}from"./index-eLNLLYwC.js";import{u as A}from"./useDeleteHandler-BHXHWuUG.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";function I(){const t=new $("admin/categories/list","لیست دسته بندی");return t.add(new s("id","شماره").filterNumber()),t.add(new s("image","تصویر").noSort().renderSlot("image")),t.add(new s("type_str","نوع نمایش")),t.add(new s("title","عنوان دسته").filterNumber()),t.add(new s("parent.title","پدر دسته").filterNumber()),t.add(new s("opt","عملیات").noSort().renderSlot("opt")),t}const P={id:"page-user-list"},U=["src"],j="/img/no-items.png",W=X({__name:"List",setup(t){const k=M(),g=n=>!!k.hasPermission(n),y=I(),p=_(null),r=_(!1),l=_(void 0),{remove:x}=A({onSuccess:()=>{var n;return(n=p.value)==null?void 0:n.fetch()},successMessage:"دسته حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف دسته"});function C(){l.value=void 0,r.value=!0}function S(n){l.value=n,r.value=!0}return(n,a)=>{const v=u("a-tooltip"),h=u("a-popconfirm"),N=u("a-card");return c(),O("div",P,[i(N,{title:"لیست دسته بندی ها",class:"page-card"},{default:o(()=>[i(B,{ref_key:"tbl",ref:p,model:m(y),"mobile-cards":""},{add:o(()=>[i(E,{rid:"collection.create","add-label":"افزودن دسته",onAdd:C})]),image:o(({text:e})=>[w("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:e&&e.image?e.image:j},null,8,U)]),opt:o(({record:e})=>[g("collection.list.edit")?(c(),f(v,{key:0,title:"ویرایش"},{default:o(()=>[i(m(T),{class:"cursor-pointer mx-1 text-primary",onClick:d=>S(e.id)},null,8,["onClick"])]),_:2},1024)):b("",!0),g("collection.list.remove")?(c(),f(v,{key:1,title:"حذف"},{default:o(()=>[i(h,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:d=>m(x)(`category/${e.id}`)},{title:o(()=>[...a[2]||(a[2]=[w("p",null,"آیا مطمئن به حذف دسته مورد نظر هستید ؟",-1)])]),default:o(()=>[i(m(V),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),(c(),f(D,{key:l.value??"new",open:r.value,id:l.value,"onUpdate:open":a[0]||(a[0]=e=>r.value=e),onSuccess:a[1]||(a[1]=e=>{var d;return(d=p.value)==null?void 0:d.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{W as default}; diff --git a/apps/admin-panel/dist/assets/List-Cql7jPx_.js b/apps/admin-panel/dist/assets/List-Cql7jPx_.js new file mode 100644 index 0000000..d77e9ba --- /dev/null +++ b/apps/admin-panel/dist/assets/List-Cql7jPx_.js @@ -0,0 +1 @@ +import{u as q,d as ee,b as v,c,w as s,s as E,r as R,o as n,h as U,H as te,t as k,i as h,p as B,a as T,f as w,F as D,m as f,y as S,G as o,X as ae,_ as re}from"./index-eLNLLYwC.js";import{a as ie,b as m,X as se}from"./model-btNVLLyF.js";import{_ as $}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js";import{O as ne,a as oe}from"./OrderStatusTimeline-Dm95hywe.js";import{a as le}from"./filters-BMytoA2k.js";import"./SettingOutlined-DibNCEeh.js";import"./icons-DaMkWfMK.js";import"./UnorderedListOutlined-cPIiOEaQ.js";import"./PercentageOutlined-DyprS4lh.js";import"./UserAddOutlined-GWNEdhY8.js";import"./CreditCardOutlined-CcvN7g1Z.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./TeamOutlined-Bx4ezhPp.js";import"./UserOutlined-B4M5rNrX.js";import"./CameraOutlined-CFYC5ScW.js";import"./PictureOutlined-BQUWPT2c.js";import"./index-CKaD48iT.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";function de(){const l=new ie("admin/orders/list","لیست سفارش های تک فروشی");l.add(new m("id","شماره").filterNumber()),l.add(new m("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),l.add(new m("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),l.add(new m("total_price","جمع کل سفارش").renderSlot("total_price").filterText()),l.add(new m("items","تعداد آیتم ها").renderSlot("items_len").noSort()),l.add(new m("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),l.add(new m("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),l.add(new m("user","ثبت کننده").renderSlot("user").noSort());const I=q();return I.roles&&I.roles.includes("order.tamin.state")&&(l.add(new m("sts_str","وضعیت").renderSlot("sts").noSort()),l.add(new m("branch.name","نام شعبه").filterText().noSort())),l.add(new m("opt","عملیات").noSort().renderSlot("opt")),l}const ue={id:"page-user-list"},ce={class:"flex"},me={key:0},ve={key:0},fe={key:1},pe={key:0},ye=["onClick"],we={key:1},ge={class:"flex justify-between flex-wrap gap-2"},_e={class:"flex gap-2 flex-wrap"},be=ee({__name:"List",setup(l){const I=q(),g=a=>!!I.hasPermission(a),A=de(),_=f(null),r=f(void 0),N=f(""),x=f(!1),b=f(!1),p=f(!1),O=f(!1),V=f(""),L=f(1),X=E(()=>ae()),P=E(()=>g("order.list.view.edit"));async function F(a){a.branch_id||(r.value=await C(a.id),b.value=!0)}async function C(a){const{data:e}=await S.get(`admin/orders/${a}`);return e}async function K(a){var e,i;try{await S.post("single/order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note}),b.value=!1,o.info("ویرایش موفق آمیز"),(i=_.value)==null||i.fetch()}catch{o.error("خطا در ویرایش")}}async function M(a){var e,i;try{await S.post("single/order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note,remove:!0}),b.value=!1,o.info("ویرایش موفق آمیز"),(i=_.value)==null||i.fetch()}catch{o.error("خطا در ویرایش")}}function j(){x.value=!1,p.value=!1}function G(){if(N.value)try{r.value=JSON.parse(N.value)}catch{}p.value=!1}function J(a){var e;if((e=r.value)!=null&&e.items){if(r.value.items.length<=1){o.warning("حداقل یک آیتم باید در سفارش بماند");return}r.value.items.splice(a,1)}}function H(a){const e=a.variantId.trim();if(!e){o.warning("یک تنوع انتخاب کنید");return}r.value&&(r.value.items.push({productVariantId:e,title:a.title??"آیتم جدید",variant_title:a.variantTitle??e,qty:a.qty||1,grams:a.grams??0,flatRialCharge:a.flatRialCharge??0,wagePercent:a.wagePercent,rash:a.grams??0,image:a.image??null}),V.value="",L.value=1)}async function Q(){var e,i,d,u;if(!((e=r.value)!=null&&e.id))return;const a=(r.value.items??[]).filter(t=>t.productVariantId).map(t=>({productVariantId:t.productVariantId,quantity:Number(t.qty)||1,grams:Number(t.grams)||void 0,flatRialCharge:Number(t.flatRialCharge)||0,rashWeightGrams:t.rash!=null?Number(t.rash):void 0,wagePercent:t.wagePercent!=null?Number(t.wagePercent):void 0,discountPercent:t.discountPercent!=null?Number(t.discountPercent):void 0}));if(!a.length){o.error("حداقل یک آیتم لازم است");return}O.value=!0;try{await S.post("admin/orders/edit/propose",{orderId:r.value.id,items:a}),o.success("پیشنهاد ویرایش ثبت شد؛ پیامک برای مشتری ارسال می‌شود"),p.value=!1,r.value=await C(r.value.id),N.value=JSON.stringify(r.value),(i=_.value)==null||i.fetch()}catch(t){o.error(((u=(d=t==null?void 0:t.response)==null?void 0:d.data)==null?void 0:u.message)??"خطا در ثبت ویرایش")}finally{O.value=!1}}async function W(){var a,e,i,d;if((a=r.value)!=null&&a.id)try{await S.post("admin/orders/edit/force-apply",{orderId:r.value.id}),o.success("ویرایش به‌صورت اجباری اعمال شد"),r.value=await C(r.value.id),(e=_.value)==null||e.fetch()}catch(u){o.error(((d=(i=u==null?void 0:u.response)==null?void 0:i.data)==null?void 0:d.message)??"خطا در اعمال")}}async function Y(){var a,e,i,d;if((a=r.value)!=null&&a.id)try{await S.post("admin/orders/edit/discard",{orderId:r.value.id}),o.success("پیشنهاد ویرایش لغو شد"),r.value=await C(r.value.id),(e=_.value)==null||e.fetch()}catch(u){o.error(((d=(i=u==null?void 0:u.response)==null?void 0:i.data)==null?void 0:d.message)??"خطا در لغو")}}async function z(a){r.value=await C(a.id),N.value=JSON.stringify(r.value),p.value=!1,x.value=!0}async function Z(a){o.warning("خروجی PDF هنوز در بک‌اند جدید پیاده‌سازی نشده است")}return(a,e)=>{const i=R("a-button"),d=R("a-modal"),u=R("a-card");return n(),v("div",ue,[c(u,{title:X.value?"لیست سفارش":"لیست سفارش های تک فروشی",class:"page-card"},{default:s(()=>[c(se,{ref_key:"tbl",ref:_,model:U(A),"mobile-cards":""},{opt:s(({record:t})=>[B("div",ce,[g("order.list.view")?(n(),T($,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:y=>z(t)},null,8,["onClick"])):h("",!0),g("order.list.pdf")?(n(),T($,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"FileIcon",title:"دانلود pdf",onClick:y=>Z(t.id)},null,8,["onClick"])):h("",!0)])]),items_len:s(({text:t})=>[t?(n(),v("div",me,k(t.length),1)):h("",!0)]),user:s(({text:t,record:y})=>[t?(n(),v("div",ve,k(t.name),1)):(n(),v("div",fe,k(y.customer.fname+" "+y.customer.lname),1))]),total_price:s(({text:t})=>[t?(n(),v("div",pe,k(U(le)(t)),1)):h("",!0)]),sts:s(({text:t,record:y})=>[g("order.list.sts")?(n(),v("a",{key:0,href:"",onClick:te(ke=>F(y),["prevent"])},k(t),9,ye)):(n(),v("span",we,k(t),1))]),_:1},8,["model"]),c(d,{open:b.value,"onUpdate:open":e[1]||(e[1]=t=>b.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:s(()=>[c(i,{onClick:e[0]||(e[0]=t=>b.value=!1)},{default:s(()=>[...e[6]||(e[6]=[w("بستن",-1)])]),_:1})]),default:s(()=>[r.value?(n(),T(ne,{key:0,activity:r.value.activity||[],"can-submit":g("order.list.sts.submit"),"can-remove":g("order.list.sts.remove"),onSubmit:K,onRemove:M},null,8,["activity","can-submit","can-remove"])):h("",!0)]),_:1},8,["open"]),c(d,{open:x.value,"onUpdate:open":e[5]||(e[5]=t=>x.value=t),title:"مشاهده سفارش",width:p.value&&P.value?1120:760,"wrap-class-name":"detail-modal order-detail-modal","body-style":{maxHeight:"78vh",overflowY:"auto"}},{footer:s(()=>{var t;return[B("div",ge,[c(i,{onClick:j},{default:s(()=>[...e[7]||(e[7]=[w("بستن",-1)])]),_:1}),B("div",_e,[((t=r.value)==null?void 0:t.revisionStatus)==="AWAITING_CUSTOMER"&&P.value?(n(),v(D,{key:0},[c(i,{onClick:Y},{default:s(()=>[...e[8]||(e[8]=[w("لغو پیشنهاد",-1)])]),_:1}),c(i,{type:"primary",danger:"",onClick:W},{default:s(()=>[...e[9]||(e[9]=[w("اعمال اجباری",-1)])]),_:1})],64)):P.value?(n(),v(D,{key:1},[p.value?(n(),v(D,{key:1},[c(i,{onClick:G},{default:s(()=>[...e[11]||(e[11]=[w("انصراف",-1)])]),_:1}),c(i,{type:"primary",danger:"",loading:O.value,onClick:Q},{default:s(()=>[...e[12]||(e[12]=[w(" ارسال برای تأیید مشتری ",-1)])]),_:1},8,["loading"])],64)):(n(),T(i,{key:0,type:"primary",onClick:e[4]||(e[4]=y=>p.value=!0)},{default:s(()=>[...e[10]||(e[10]=[w("شروع ویرایش",-1)])]),_:1}))],64)):h("",!0)])])]}),default:s(()=>[c(oe,{order:r.value,"edit-mode":p.value&&P.value,"add-variant-id":V.value,"onUpdate:addVariantId":e[2]||(e[2]=t=>V.value=t),"add-qty":L.value,"onUpdate:addQty":e[3]||(e[3]=t=>L.value=t),onRemoveLine:J,onAddLine:H},null,8,["order","edit-mode","add-variant-id","add-qty"])]),_:1},8,["open","width"])]),_:1},8,["title"])])}}}),Ae=re(be,[["__scopeId","data-v-b4230ec1"]]);export{Ae as default}; diff --git a/apps/admin-panel/dist/assets/List-DYRF6PAj.css b/apps/admin-panel/dist/assets/List-DYRF6PAj.css deleted file mode 100644 index 0b26677..0000000 --- a/apps/admin-panel/dist/assets/List-DYRF6PAj.css +++ /dev/null @@ -1 +0,0 @@ -.flex-col[data-v-d7104f94]{flex-direction:column}.flex-1[data-v-d7104f94]{flex:1}.justify-between[data-v-d7104f94]{justify-content:space-between}.mr-3[data-v-d7104f94]{margin-left:.75rem} diff --git a/apps/admin-panel/dist/assets/List-DZ2UtgZK.js b/apps/admin-panel/dist/assets/List-DZ2UtgZK.js deleted file mode 100644 index 9ca40dd..0000000 --- a/apps/admin-panel/dist/assets/List-DZ2UtgZK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as q,d as oe,b as i,c as l,w as t,s as ae,r as c,o as a,h as F,H as ne,t as s,i as m,p as b,a as f,F as K,e as P,f as d,m as U,y as N,G as h,X as le,_ as se}from"./index-DajPj7Ec.js";import{a as re,b as p,X as ie}from"./model-CR-NjhTP.js";import{_ as V}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js";import{a as de,j as ue}from"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./icons-DiNnR1E8.js";import"./UnorderedListOutlined-B6W9NsW_.js";import"./PercentageOutlined-D8KYbn5o.js";import"./UserAddOutlined-tCWSfp_Y.js";import"./CreditCardOutlined-H5cAFLTI.js";import"./AppstoreOutlined-BPqrCmxh.js";import"./TeamOutlined-DPoMD9pK.js";import"./UserOutlined-CzruAWCH.js";import"./CameraOutlined-B6nXMt0y.js";import"./index-BAamWbCu.js";function ce(){const u=new re("admin/orders/list","لیست سفارش های تک فروشی");u.add(new p("id","شماره").filterNumber()),u.add(new p("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),u.add(new p("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),u.add(new p("total_price","جمع کل سفارش").renderSlot("total_price").filterText()),u.add(new p("items","تعداد آیتم ها").renderSlot("items_len").noSort()),u.add(new p("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),u.add(new p("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),u.add(new p("user","ثبت کننده").renderSlot("user").noSort());const $=q();return $.roles&&$.roles.includes("order.tamin.state")&&(u.add(new p("sts_str","وضعیت").renderSlot("sts").noSort()),u.add(new p("branch.name","نام شعبه").filterText().noSort())),u.add(new p("opt","عملیات").noSort().renderSlot("opt")),u}const _e={id:"page-user-list"},fe={class:"flex"},me={key:0},pe={key:0},ve={key:1},ye={key:0},ke=["onClick"],we={key:1},be={class:"flex flex-col"},ge={key:0},he={class:"flex"},Se={class:"flex-1"},Ce={key:1,class:"flex items-center"},xe={key:2},Ue={key:0},$e={class:"flex justify-between"},je=oe({__name:"List",setup(u){const $=q(),k=n=>!!$.hasPermission(n),M=ce(),j=U(null),r=U(void 0),S=U(!1),C=U(!1),x=U(!1),z=ae(()=>le()),T=n=>n?ue(n):"";function A(n){return n.proceed?"green":"gray"}async function O(n){n.branch_id||(r.value=await B(n.id),C.value=!0)}async function B(n){const{data:o}=await N.get(`admin/orders/${n}`);return o}async function R(n){var o,v;try{await N.post("single/order-sts/edit",{orderId:(o=r.value)==null?void 0:o.id,status:n.status,note:n.note}),C.value=!1,h.info("ویرایش موفق آمیز"),(v=j.value)==null||v.fetch()}catch{h.error("خطا در ویرایش")}}async function E(n){var o,v;try{await N.post("single/order-sts/edit",{orderId:(o=r.value)==null?void 0:o.id,status:n.status,note:n.note,remove:!0}),C.value=!1,h.info("ویرایش موفق آمیز"),(v=j.value)==null||v.fetch()}catch{h.error("خطا در ویرایش")}}async function G(){var n;try{x.value=!x.value,S.value=!S.value,h.info("ویرایش موفق آمیز"),(n=j.value)==null||n.fetch()}catch{h.error("خطا در ویرایش")}}async function H(n){r.value=await B(n.id),S.value=!0}async function J(n){h.warning("خروجی PDF هنوز در بک‌اند جدید پیاده‌سازی نشده است")}return(n,o)=>{const v=c("a-tag"),g=c("a-button"),Q=c("a-popconfirm"),W=c("a-input"),Y=c("a-timeline-item"),Z=c("a-timeline"),D=c("a-modal"),y=c("a-descriptions-item"),L=c("a-descriptions"),I=c("a-input-number"),ee=c("a-divider"),X=c("a-card"),te=c("a-empty");return a(),i("div",_e,[l(X,{title:z.value?"لیست سفارش":"لیست سفارش های تک فروشی",class:"page-card"},{default:t(()=>[l(ie,{ref_key:"tbl",ref:j,model:F(M),"mobile-cards":""},{opt:t(({record:e})=>[b("div",fe,[k("order.list.view")?(a(),f(V,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:_=>H(e)},null,8,["onClick"])):m("",!0),k("order.list.pdf")?(a(),f(V,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"FileIcon",title:"دانلود pdf",onClick:_=>J(e.id)},null,8,["onClick"])):m("",!0)])]),items_len:t(({text:e})=>[e?(a(),i("div",me,s(e.length),1)):m("",!0)]),user:t(({text:e,record:_})=>[e?(a(),i("div",pe,s(e.name),1)):(a(),i("div",ve,s(_.customer.fname+" "+_.customer.lname),1))]),total_price:t(({text:e})=>[e?(a(),i("div",ye,s(F(de)(e)),1)):m("",!0)]),sts:t(({text:e,record:_})=>[k("order.list.sts")?(a(),i("a",{key:0,href:"",onClick:ne(w=>O(_),["prevent"])},s(e),9,ke)):(a(),i("span",we,s(e),1))]),_:1},8,["model"]),l(D,{open:C.value,"onUpdate:open":o[1]||(o[1]=e=>C.value=e),title:"وضعیت سفارش","wrap-class-name":"detail-modal"},{footer:t(()=>[l(g,{onClick:o[0]||(o[0]=e=>C.value=!1)},{default:t(()=>[...o[8]||(o[8]=[d("باشه",-1)])]),_:1})]),default:t(()=>[r.value?(a(),f(Z,{key:0},{default:t(()=>[(a(!0),i(K,null,P(r.value.activity,(e,_)=>(a(),f(Y,{key:_,color:A(e)},{default:t(()=>[b("div",be,[b("div",null,s(e.title),1),e.proceed?(a(),i("div",ge,[b("div",he,[b("div",Se,[l(v,null,{default:t(()=>[d(s(T(e.uaj)),1)]),_:2},1024)]),_>0&&k("order.list.sts.remove")?(a(),f(Q,{key:0,"ok-text":"بله","cancel-text":"بی خیال",onConfirm:w=>E(e)},{title:t(()=>[...o[5]||(o[5]=[b("p",null,"آیا مطمئن به حذف وضعیت مورد نظر هستید ؟",-1)])]),default:t(()=>[l(g,{size:"small",danger:""},{default:t(()=>[...o[6]||(o[6]=[d("حذف وضعیت",-1)])]),_:1})]),_:1},8,["onConfirm"])):m("",!0)])])):m("",!0),!e.proceed&&k("order.list.sts.submit")?(a(),i("div",Ce,[l(W,{value:e.note,"onUpdate:value":w=>e.note=w,placeholder:"یادداشت"},null,8,["value","onUpdate:value"]),l(g,{type:"text",size:"small",onClick:w=>R(e)},{default:t(()=>[...o[7]||(o[7]=[d("ثبت وضعیت",-1)])]),_:1},8,["onClick"])])):m("",!0),e.proceed?(a(),i("div",xe,s(e.note),1)):m("",!0)])]),_:2},1032,["color"]))),128))]),_:1})):m("",!0)]),_:1},8,["open"]),l(D,{open:S.value,"onUpdate:open":o[4]||(o[4]=e=>S.value=e),title:"مشاهده سفارش",width:"80%","wrap-class-name":"detail-modal"},{footer:t(()=>[b("div",$e,[l(g,{onClick:o[2]||(o[2]=e=>S.value=!1)},{default:t(()=>[...o[9]||(o[9]=[d("باشه",-1)])]),_:1}),x.value&&k("order.list.view.edit")?(a(),f(g,{key:0,danger:"",onClick:o[3]||(o[3]=e=>G())},{default:t(()=>[...o[10]||(o[10]=[d(" ویرایش سفارش ",-1)])]),_:1})):m("",!0)])]),default:t(()=>[r.value?(a(),i("div",Ue,[l(L,null,{default:t(()=>[l(y,{label:"مشتری"},{default:t(()=>[d(s(r.value.customer.fname)+" "+s(r.value.customer.lname),1)]),_:1}),l(y,{label:"تلفن همراه"},{default:t(()=>[d(s(r.value.customer.phone),1)]),_:1}),l(y,{label:"تاریخ ثبت"},{default:t(()=>[d(s(T(r.value.caj)),1)]),_:1}),l(y,{label:"وضعیت"},{default:t(()=>[d(s(r.value.sts_str),1)]),_:1})]),_:1}),l(X,{title:"آیتم های سفارش"},{default:t(()=>[(a(!0),i(K,null,P(r.value.items,(e,_)=>(a(),i("div",{key:_},[l(L,null,{default:t(()=>[l(y,{label:"نام محصول"},{default:t(()=>[l(v,{color:"blue"},{default:t(()=>[d(s(e.title),1)]),_:2},1024)]),_:2},1024),l(y,{label:"عنوان تنوع"},{default:t(()=>[d(s(e.variant_title),1)]),_:2},1024),l(y,{label:"وزن نهایی"},{default:t(()=>[x.value&&k("order.list.view.edit")?(a(),f(I,{key:0,value:e.grams,"onUpdate:value":w=>e.grams=w,class:"w-full mt-0"},null,8,["value","onUpdate:value"])):(a(),f(v,{key:1,color:"red"},{default:t(()=>[d(s(e.grams),1)]),_:2},1024))]),_:2},1024),l(y,{label:"تعداد"},{default:t(()=>[x.value&&k("order.list.view.edit")?(a(),f(I,{key:0,value:e.qty,"onUpdate:value":w=>e.qty=w},null,8,["value","onUpdate:value"])):(a(),f(v,{key:1,color:"orange"},{default:t(()=>[d(s(e.qty),1)]),_:2},1024))]),_:2},1024),l(y,{label:"توضیحات"},{default:t(()=>[b("div",null,s(e.note),1)]),_:2},1024)]),_:2},1024),_(o(),n(m,{title:"لیست شعب",model:_(r),"edit-path":"/branch/edit","active-path":"branch/active","add-rid":"branch.create","add-label":"افزودن شعبه"},{form:f(({open:d,editingId:a,onUpdateOpen:i,onSuccess:s})=>[(o(),n(c,{key:a??"new",open:d,id:a,"onUpdate:open":i,onSuccess:s},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{N as default}; +import{_ as m}from"./FacilityList.vue_vue_type_script_setup_true_lang-B2i1tZYn.js";import{_ as c}from"./AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js";import{a as p,b as t}from"./model-btNVLLyF.js";import{d as l,a as n,w as f,h as _,o}from"./index-eLNLLYwC.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";function u(){const e=new p("admin/branches/list","لیست شعب");return e.add(new t("name","نام").filterText()),e.add(new t("address","آدرس").filterText()),e.add(new t("phone","شماره تلفن").filterNumber()),e.add(new t("user.name","مدیر شعبه").filterNumber().noSort()),e.add(new t("op","عملیات").noSort().renderSlot("actions")),e}const N=l({__name:"ListBranches",setup(e){const r=u();return(h,b)=>(o(),n(m,{title:"لیست شعب",model:_(r),"edit-path":"/branch/edit","active-path":"branch/active","add-rid":"branch.create","add-label":"افزودن شعبه"},{form:f(({open:d,editingId:a,onUpdateOpen:i,onSuccess:s})=>[(o(),n(c,{key:a??"new",open:d,id:a,"onUpdate:open":i,onSuccess:s},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{N as default}; diff --git a/apps/admin-panel/dist/assets/ListInvoice-BUUcrdEN.js b/apps/admin-panel/dist/assets/ListInvoice-g-UG6V0q.js similarity index 88% rename from apps/admin-panel/dist/assets/ListInvoice-BUUcrdEN.js rename to apps/admin-panel/dist/assets/ListInvoice-g-UG6V0q.js index 444261e..7e1133e 100644 --- a/apps/admin-panel/dist/assets/ListInvoice-BUUcrdEN.js +++ b/apps/admin-panel/dist/assets/ListInvoice-g-UG6V0q.js @@ -1 +1 @@ -import{a as M,b as d,X as V}from"./model-CR-NjhTP.js";import{_ as h}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import z from"./AddInvoice-iZuqzIMz.js";import{j as K}from"./filters-gmIfX3-G.js";import{u as U}from"./useDeleteHandler-CdwhuWqX.js";import{d as H,b as g,c as e,w as t,r as s,o as x,h as p,p as y,Q,E as R,D as q,f as r,t as u,a as C,m as _,y as F,_ as G}from"./index-DajPj7Ec.js";import"./SettingOutlined-BBdK6RkP.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./index-BAamWbCu.js";function J(){const n=new M("admin/invoices/list","لیست فاکتورها");return n.add(new d("id","ردیف").filterNumber()),n.add(new d("name","نام مشتری").filterKey("branch.name").filterText()),n.add(new d("sum_weight","جمع کل سفارش").filterNumber().noSort()),n.add(new d("count_item","تعداد آیتم ها").filterNumber().noSort()),n.add(new d("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),n.add(new d("allocator_user.name","ثبت کننده").renderSlot("user").noSort()),n.add(new d("note","توضیحات").filterText().noSort()),n.add(new d("op","عملیات").noSort().renderSlot("actions")),n}const P={id:"page-user-list"},W={class:"flex gap-2"},Y={key:0},Z=H({__name:"ListInvoice",setup(n){const S=J(),w=_(null),f=_(!1),l=_(void 0),v=_(!1),b=_(void 0);function I(){b.value=void 0,v.value=!0}function $(c){b.value=c,v.value=!0}const D=[{title:"کد محصول",dataIndex:"product_code"},{title:"نام محصول",dataIndex:"title"},{title:"وزن",dataIndex:"grams"}];async function E(c){const{data:o}=await F.get(`branch/product/${c.id}`);l.value=o,f.value=!0}const{remove:N}=U({onSuccess:()=>{var c;return(c=w.value)==null?void 0:c.fetch()},successMessage:"فاکتور حذف شد",fallbackErrorMessage:"خطا در حذف فاکتور"});return(c,o)=>{const k=s("a-tooltip"),T=s("a-popconfirm"),m=s("a-descriptions-item"),j=s("a-descriptions"),A=s("a-table"),B=s("a-empty"),O=s("a-button"),X=s("a-modal"),L=s("a-card");return x(),g("div",P,[e(L,{title:"لیست فاکتورها",class:"page-card"},{default:t(()=>[e(V,{ref_key:"tbl",ref:w,model:p(S),"mobile-cards":""},{add:t(()=>[e(h,{rid:"invoice.create","add-label":"افزودن فاکتور",onAdd:I})]),user:t(({record:a})=>{var i;return[r(u(((i=a.allocator_user)==null?void 0:i.name)??"-"),1)]}),actions:t(({record:a})=>[y("div",W,[e(k,{title:"مشاهده"},{default:t(()=>[e(p(Q),{class:"cursor-pointer mx-1 text-success",onClick:i=>E(a)},null,8,["onClick"])]),_:2},1024),e(k,{title:"ویرایش"},{default:t(()=>[e(p(R),{class:"cursor-pointer mx-1 text-primary",onClick:i=>$(a.id)},null,8,["onClick"])]),_:2},1024),e(k,{title:"حذف"},{default:t(()=>[e(T,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>p(N)(`branch/product/${a.id}`)},{title:t(()=>[...o[4]||(o[4]=[y("p",null,"آیا مطمئن به حذف فاکتور مورد نظر هستید ؟",-1)])]),default:t(()=>[e(p(q),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)])]),_:1},8,["model"]),e(X,{open:f.value,"onUpdate:open":o[1]||(o[1]=a=>f.value=a),title:"مشاهده فاکتور",width:"70%","wrap-class-name":"detail-modal"},{footer:t(()=>[e(O,{onClick:o[0]||(o[0]=a=>f.value=!1)},{default:t(()=>[...o[5]||(o[5]=[r("بستن",-1)])]),_:1})]),default:t(()=>[l.value?(x(),g("div",Y,[e(j,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:t(()=>[e(m,{label:"شعبه"},{default:t(()=>[r(u(l.value.name),1)]),_:1}),e(m,{label:"ثبت کننده"},{default:t(()=>{var a;return[r(u(((a=l.value.allocator_user)==null?void 0:a.name)??"-"),1)]}),_:1}),e(m,{label:"تاریخ ثبت"},{default:t(()=>[r(u(p(K)(l.value.caj)),1)]),_:1}),e(m,{label:"تعداد آیتم"},{default:t(()=>[r(u(l.value.count_item),1)]),_:1}),e(m,{label:"جمع وزن"},{default:t(()=>[r(u(l.value.sum_weight),1)]),_:1}),e(m,{label:"توضیحات"},{default:t(()=>[r(u(l.value.note??"-"),1)]),_:1})]),_:1}),e(A,{class:"mt-4",size:"small","data-source":l.value.products,columns:D,pagination:!1,"row-key":"id"},null,8,["data-source"])])):(x(),C(B,{key:1}))]),_:1},8,["open"]),(x(),C(z,{key:b.value??"new",open:v.value,id:b.value,"onUpdate:open":o[2]||(o[2]=a=>v.value=a),onSuccess:o[3]||(o[3]=a=>{var i;return(i=w.value)==null?void 0:i.fetch()})},null,8,["open","id"]))]),_:1})])}}}),re=G(Z,[["__scopeId","data-v-7869d72f"]]);export{re as default}; +import{a as M,b as d,X as V}from"./model-btNVLLyF.js";import{_ as h}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import z from"./AddInvoice-DwmImnAo.js";import{j as K}from"./filters-BMytoA2k.js";import{u as U}from"./useDeleteHandler-BHXHWuUG.js";import{d as H,b as g,c as e,w as t,r as s,o as x,h as p,p as y,Q,E as R,D as q,f as r,t as u,a as C,m as _,y as F,_ as G}from"./index-eLNLLYwC.js";import"./SettingOutlined-DibNCEeh.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./index-CKaD48iT.js";function J(){const n=new M("admin/invoices/list","لیست فاکتورها");return n.add(new d("id","ردیف").filterNumber()),n.add(new d("name","نام مشتری").filterKey("branch.name").filterText()),n.add(new d("sum_weight","جمع کل سفارش").filterNumber().noSort()),n.add(new d("count_item","تعداد آیتم ها").filterNumber().noSort()),n.add(new d("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),n.add(new d("allocator_user.name","ثبت کننده").renderSlot("user").noSort()),n.add(new d("note","توضیحات").filterText().noSort()),n.add(new d("op","عملیات").noSort().renderSlot("actions")),n}const P={id:"page-user-list"},W={class:"flex gap-2"},Y={key:0},Z=H({__name:"ListInvoice",setup(n){const S=J(),w=_(null),f=_(!1),l=_(void 0),v=_(!1),b=_(void 0);function I(){b.value=void 0,v.value=!0}function $(c){b.value=c,v.value=!0}const D=[{title:"کد محصول",dataIndex:"product_code"},{title:"نام محصول",dataIndex:"title"},{title:"وزن",dataIndex:"grams"}];async function E(c){const{data:o}=await F.get(`branch/product/${c.id}`);l.value=o,f.value=!0}const{remove:N}=U({onSuccess:()=>{var c;return(c=w.value)==null?void 0:c.fetch()},successMessage:"فاکتور حذف شد",fallbackErrorMessage:"خطا در حذف فاکتور"});return(c,o)=>{const k=s("a-tooltip"),T=s("a-popconfirm"),m=s("a-descriptions-item"),j=s("a-descriptions"),A=s("a-table"),B=s("a-empty"),O=s("a-button"),X=s("a-modal"),L=s("a-card");return x(),g("div",P,[e(L,{title:"لیست فاکتورها",class:"page-card"},{default:t(()=>[e(V,{ref_key:"tbl",ref:w,model:p(S),"mobile-cards":""},{add:t(()=>[e(h,{rid:"invoice.create","add-label":"افزودن فاکتور",onAdd:I})]),user:t(({record:a})=>{var i;return[r(u(((i=a.allocator_user)==null?void 0:i.name)??"-"),1)]}),actions:t(({record:a})=>[y("div",W,[e(k,{title:"مشاهده"},{default:t(()=>[e(p(Q),{class:"cursor-pointer mx-1 text-success",onClick:i=>E(a)},null,8,["onClick"])]),_:2},1024),e(k,{title:"ویرایش"},{default:t(()=>[e(p(R),{class:"cursor-pointer mx-1 text-primary",onClick:i=>$(a.id)},null,8,["onClick"])]),_:2},1024),e(k,{title:"حذف"},{default:t(()=>[e(T,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>p(N)(`branch/product/${a.id}`)},{title:t(()=>[...o[4]||(o[4]=[y("p",null,"آیا مطمئن به حذف فاکتور مورد نظر هستید ؟",-1)])]),default:t(()=>[e(p(q),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)])]),_:1},8,["model"]),e(X,{open:f.value,"onUpdate:open":o[1]||(o[1]=a=>f.value=a),title:"مشاهده فاکتور",width:"70%","wrap-class-name":"detail-modal"},{footer:t(()=>[e(O,{onClick:o[0]||(o[0]=a=>f.value=!1)},{default:t(()=>[...o[5]||(o[5]=[r("بستن",-1)])]),_:1})]),default:t(()=>[l.value?(x(),g("div",Y,[e(j,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:t(()=>[e(m,{label:"شعبه"},{default:t(()=>[r(u(l.value.name),1)]),_:1}),e(m,{label:"ثبت کننده"},{default:t(()=>{var a;return[r(u(((a=l.value.allocator_user)==null?void 0:a.name)??"-"),1)]}),_:1}),e(m,{label:"تاریخ ثبت"},{default:t(()=>[r(u(p(K)(l.value.caj)),1)]),_:1}),e(m,{label:"تعداد آیتم"},{default:t(()=>[r(u(l.value.count_item),1)]),_:1}),e(m,{label:"جمع وزن"},{default:t(()=>[r(u(l.value.sum_weight),1)]),_:1}),e(m,{label:"توضیحات"},{default:t(()=>[r(u(l.value.note??"-"),1)]),_:1})]),_:1}),e(A,{class:"mt-4",size:"small","data-source":l.value.products,columns:D,pagination:!1,"row-key":"id"},null,8,["data-source"])])):(x(),C(B,{key:1}))]),_:1},8,["open"]),(x(),C(z,{key:b.value??"new",open:v.value,id:b.value,"onUpdate:open":o[2]||(o[2]=a=>v.value=a),onSuccess:o[3]||(o[3]=a=>{var i;return(i=w.value)==null?void 0:i.fetch()})},null,8,["open","id"]))]),_:1})])}}}),re=G(Z,[["__scopeId","data-v-7869d72f"]]);export{re as default}; diff --git a/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js b/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js similarity index 87% rename from apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js rename to apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js index dc257de..0881573 100644 --- a/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js +++ b/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js @@ -1 +1 @@ -import{d,u as i,o as u,a as m,w as s,f as c,t as l,c as f,h as p,P as C,i as P,r as b}from"./index-DajPj7Ec.js";const _=d({__name:"ListPageHeader",props:{rid:{default:void 0},addLabel:{default:"افزودن"}},emits:["add"],setup(e){const o=i(),n=t=>!!o.hasPermission(t);return(t,a)=>{const r=b("a-button");return!e.rid||n(e.rid)?(u(),m(r,{key:0,type:"primary",onClick:a[0]||(a[0]=k=>t.$emit("add"))},{icon:s(()=>[f(p(C))]),default:s(()=>[c(" "+l(e.addLabel),1)]),_:1})):P("",!0)}}});export{_}; +import{d,u as i,o as u,a as m,w as s,f as c,t as l,c as f,h as p,P as C,i as P,r as b}from"./index-eLNLLYwC.js";const _=d({__name:"ListPageHeader",props:{rid:{default:void 0},addLabel:{default:"افزودن"}},emits:["add"],setup(e){const o=i(),n=t=>!!o.hasPermission(t);return(t,a)=>{const r=b("a-button");return!e.rid||n(e.rid)?(u(),m(r,{key:0,type:"primary",onClick:a[0]||(a[0]=k=>t.$emit("add"))},{icon:s(()=>[f(p(C))]),default:s(()=>[c(" "+l(e.addLabel),1)]),_:1})):P("",!0)}}});export{_}; diff --git a/apps/admin-panel/dist/assets/ListUser-B5HisvUF.js b/apps/admin-panel/dist/assets/ListUser-xB3fMA3W.js similarity index 84% rename from apps/admin-panel/dist/assets/ListUser-B5HisvUF.js rename to apps/admin-panel/dist/assets/ListUser-xB3fMA3W.js index 8425c05..8e26c1e 100644 --- a/apps/admin-panel/dist/assets/ListUser-B5HisvUF.js +++ b/apps/admin-panel/dist/assets/ListUser-xB3fMA3W.js @@ -1 +1 @@ -import{a as D,b as a,X as E}from"./model-CR-NjhTP.js";import{_ as U}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import $ from"./UserCreate-B9hxrLOO.js";import{d as M,u as V,x as X,y as h,b as O,c as r,w as n,m as c,r as _,o as m,h as p,a as v,E as A,i as y,D as K,p as L,f as P,t as H}from"./index-DajPj7Ec.js";import{u as I}from"./useDeleteHandler-CdwhuWqX.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";function j(){const o=new D("admin/users/list","لیست مدیران");return o.add(new a("id","کد مدیر")),o.add(new a("fname","نام").filterKey("fullName").filterText()),o.add(new a("lname","نام خانوادگی").filterKey("fullName").filterText()),o.add(new a("mobile","موبایل").filterText()),o.add(new a("ut","نوع کاربر").filterNumber().renderSlot("ut")),o.add(new a("op","عملیات").noSort().renderSlot("op")),o}const q={id:"page-user-list"},ee=M({__name:"ListUser",setup(o){const k=V(),x=e=>!!k.hasPermission(e),w=j(),f=c(null),b=c([]),l=c(!1),i=c(void 0);function g(e){var t;return e==null?"-":((t=b.value.find(d=>d.id===Number(e)))==null?void 0:t.title)??String(e)}function C(){i.value=void 0,l.value=!0}function T(e){i.value=e.id,l.value=!0}const{remove:N}=I({onSuccess:()=>{var e;return(e=f.value)==null?void 0:e.fetch()},successMessage:"کاربر حذف شد",fallbackErrorMessage:"خطا در حذف کاربر"});return X(async()=>{try{const{data:e}=await h.get("const/__list__ut");b.value=e}catch(e){console.log(e)}}),(e,t)=>{const d=_("a-tooltip"),S=_("a-popconfirm"),B=_("a-card");return m(),O("div",q,[r(B,{title:"لیست مدیران",class:"page-card"},{default:n(()=>[r(E,{ref_key:"tbl",ref:f,model:p(w),"mobile-cards":""},{add:n(()=>[r(U,{rid:"user.list.create","add-label":"افزودن کاربر",onAdd:C})]),ut:n(({text:s})=>[P(H(g(s)),1)]),op:n(({record:s})=>[x("user.list.edit")?(m(),v(d,{key:0,title:"ویرایش"},{default:n(()=>[r(p(A),{class:"cursor-pointer mx-1 text-primary",onClick:u=>T(s)},null,8,["onClick"])]),_:2},1024)):y("",!0),x("user.list.remove")?(m(),v(d,{key:1,title:"حذف"},{default:n(()=>[r(S,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:u=>p(N)(`users/${s.id}`)},{title:n(()=>[...t[2]||(t[2]=[L("p",null,"آیا مطمئن به حذف کاربر مورد نظر هستید ؟",-1)])]),default:n(()=>[r(p(K),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):y("",!0)]),_:1},8,["model"]),(m(),v($,{key:i.value??"new",open:l.value,id:i.value,"onUpdate:open":t[0]||(t[0]=s=>l.value=s),onSuccess:t[1]||(t[1]=s=>{var u;return(u=f.value)==null?void 0:u.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{ee as default}; +import{a as D,b as a,X as E}from"./model-btNVLLyF.js";import{_ as U}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import $ from"./UserCreate-8S3eAopa.js";import{d as M,u as V,x as X,y as h,b as O,c as r,w as n,m as c,r as _,o as m,h as p,a as v,E as A,i as y,D as K,p as L,f as P,t as H}from"./index-eLNLLYwC.js";import{u as I}from"./useDeleteHandler-BHXHWuUG.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";function j(){const o=new D("admin/users/list","لیست مدیران");return o.add(new a("id","کد مدیر")),o.add(new a("fname","نام").filterKey("fullName").filterText()),o.add(new a("lname","نام خانوادگی").filterKey("fullName").filterText()),o.add(new a("mobile","موبایل").filterText()),o.add(new a("ut","نوع کاربر").filterNumber().renderSlot("ut")),o.add(new a("op","عملیات").noSort().renderSlot("op")),o}const q={id:"page-user-list"},ee=M({__name:"ListUser",setup(o){const k=V(),x=e=>!!k.hasPermission(e),w=j(),f=c(null),b=c([]),l=c(!1),i=c(void 0);function g(e){var t;return e==null?"-":((t=b.value.find(d=>d.id===Number(e)))==null?void 0:t.title)??String(e)}function C(){i.value=void 0,l.value=!0}function T(e){i.value=e.id,l.value=!0}const{remove:N}=I({onSuccess:()=>{var e;return(e=f.value)==null?void 0:e.fetch()},successMessage:"کاربر حذف شد",fallbackErrorMessage:"خطا در حذف کاربر"});return X(async()=>{try{const{data:e}=await h.get("const/__list__ut");b.value=e}catch(e){console.log(e)}}),(e,t)=>{const d=_("a-tooltip"),S=_("a-popconfirm"),B=_("a-card");return m(),O("div",q,[r(B,{title:"لیست مدیران",class:"page-card"},{default:n(()=>[r(E,{ref_key:"tbl",ref:f,model:p(w),"mobile-cards":""},{add:n(()=>[r(U,{rid:"user.list.create","add-label":"افزودن کاربر",onAdd:C})]),ut:n(({text:s})=>[P(H(g(s)),1)]),op:n(({record:s})=>[x("user.list.edit")?(m(),v(d,{key:0,title:"ویرایش"},{default:n(()=>[r(p(A),{class:"cursor-pointer mx-1 text-primary",onClick:u=>T(s)},null,8,["onClick"])]),_:2},1024)):y("",!0),x("user.list.remove")?(m(),v(d,{key:1,title:"حذف"},{default:n(()=>[r(S,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:u=>p(N)(`users/${s.id}`)},{title:n(()=>[...t[2]||(t[2]=[L("p",null,"آیا مطمئن به حذف کاربر مورد نظر هستید ؟",-1)])]),default:n(()=>[r(p(K),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):y("",!0)]),_:1},8,["model"]),(m(),v($,{key:i.value??"new",open:l.value,id:i.value,"onUpdate:open":t[0]||(t[0]=s=>l.value=s),onSuccess:t[1]||(t[1]=s=>{var u;return(u=f.value)==null?void 0:u.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{ee as default}; diff --git a/apps/admin-panel/dist/assets/ListWorkshop-Co07pp0l.js b/apps/admin-panel/dist/assets/ListWorkshop-eILF1R4A.js similarity index 65% rename from apps/admin-panel/dist/assets/ListWorkshop-Co07pp0l.js rename to apps/admin-panel/dist/assets/ListWorkshop-eILF1R4A.js index 22f57b8..11fa411 100644 --- a/apps/admin-panel/dist/assets/ListWorkshop-Co07pp0l.js +++ b/apps/admin-panel/dist/assets/ListWorkshop-eILF1R4A.js @@ -1 +1 @@ -import{_ as d}from"./FacilityList.vue_vue_type_script_setup_true_lang-rDFQ96E5.js";import{_ as m}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js";import{a as c,b as e}from"./model-CR-NjhTP.js";import{d as l,a as r,w as f,h as _,o as a}from"./index-DajPj7Ec.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";function h(){const o=new c("admin/workshops/list","لیست کارگاه ها");return o.add(new e("name","نام").filterText()),o.add(new e("address","آدرس").filterText()),o.add(new e("phone","شماره تلفن").filterNumber()),o.add(new e("op","عملیات").noSort().renderSlot("actions")),o}const U=l({__name:"ListWorkshop",setup(o){const n=h();return(w,u)=>(a(),r(d,{title:"لیست کارگاه ها",model:_(n),"edit-path":"/workshop/edit","active-path":"workshop/active","add-rid":"workshop.create","add-label":"افزودن کارگاه"},{form:f(({open:s,editingId:t,onUpdateOpen:i,onSuccess:p})=>[(a(),r(m,{key:t??"new",open:s,id:t,"onUpdate:open":i,onSuccess:p},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{U as default}; +import{_ as d}from"./FacilityList.vue_vue_type_script_setup_true_lang-B2i1tZYn.js";import{_ as m}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js";import{a as c,b as e}from"./model-btNVLLyF.js";import{d as l,a as r,w as f,h as _,o as a}from"./index-eLNLLYwC.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";function h(){const o=new c("admin/workshops/list","لیست کارگاه ها");return o.add(new e("name","نام").filterText()),o.add(new e("address","آدرس").filterText()),o.add(new e("phone","شماره تلفن").filterNumber()),o.add(new e("op","عملیات").noSort().renderSlot("actions")),o}const U=l({__name:"ListWorkshop",setup(o){const n=h();return(w,u)=>(a(),r(d,{title:"لیست کارگاه ها",model:_(n),"edit-path":"/workshop/edit","active-path":"workshop/active","add-rid":"workshop.create","add-label":"افزودن کارگاه"},{form:f(({open:s,editingId:t,onUpdateOpen:i,onSuccess:p})=>[(a(),r(m,{key:t??"new",open:s,id:t,"onUpdate:open":i,onSuccess:p},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/LockOutlined-XBpx1rxs.js b/apps/admin-panel/dist/assets/LockOutlined-BQjJg0kk.js similarity index 94% rename from apps/admin-panel/dist/assets/LockOutlined-XBpx1rxs.js rename to apps/admin-panel/dist/assets/LockOutlined-BQjJg0kk.js index 3f8d06e..5c463cb 100644 --- a/apps/admin-panel/dist/assets/LockOutlined-XBpx1rxs.js +++ b/apps/admin-panel/dist/assets/LockOutlined-BQjJg0kk.js @@ -1 +1 @@ -import{c as i,I as l}from"./index-DajPj7Ec.js";var u={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z"}}]},name:"lock",theme:"outlined"};function a(r){for(var t=1;tP.value?l.value?l.value.length<8?"مقدار ورودی صحیح نیست":"":"وارد کردن موبایل الزامی است":""),m=O(()=>L.value?n.value?n.value.length<5?"مقدار ورودی صحیح نیست":"":"وارد کردن رمز عبور الزامی است":""),C=O(()=>!g.value&&!m.value&&l.value!==""&&n.value!=="");async function h(){if(!(!C.value||p.value)){p.value=!0;try{await o.login({phone:l.value,password:n.value}),await a.push("/dashboard/ecommerce")}catch(c){console.log(c),q.error("خطا در ورود")}finally{p.value=!1}}}return(c,e)=>{const y=f("a-input"),M=f("a-form-item"),z=f("a-input-password"),A=f("a-button"),D=f("a-form");return x(),$("div",ne,[e[14]||(e[14]=j('',2)),t("div",re,[(x(),$(T,null,F(14,d=>t("i",{key:d,style:U(k(d))},null,4)),64))]),t("main",ie,[t("section",de,[t("div",ce,[e[4]||(e[4]=t("div",{class:"logo-chip"},[t("img",{src:E,alt:""})],-1)),t("span",ue,B(i(_).nameEn),1)]),e[8]||(e[8]=j('

مدیریت هوشمند کسب‌وکار طلا

سفارش‌ها، مشتریان، محصولات و حسابداری؛ همه در یک پنل.

999.9
',3)),t("ul",pe,[t("li",null,[r(i(w)),e[5]||(e[5]=b(" گزارش لحظه‌ای",-1))]),t("li",null,[r(i(Z)),e[6]||(e[6]=b(" مدیریت مشتریان",-1))]),t("li",null,[r(i(K)),e[7]||(e[7]=b(" پیگیری سفارش",-1))])])]),t("section",fe,[t("div",ve,[t("div",be,[t("div",ge,[t("img",{src:E,alt:i(_).nameEn},null,8,me)]),e[9]||(e[9]=t("span",{class:"eyebrow"},[t("span",{class:"dot"}),b("پنل مدیریت")],-1))]),e[12]||(e[12]=t("h1",{class:"title"},"ورود به محیط مدیریت",-1)),e[13]||(e[13]=t("p",{class:"subtitle"},"لطفا شماره تلفن همراه خود به همراه رمز عبور وارد کنید.",-1)),r(D,{layout:"vertical",class:"login-form",onSubmit:I(h,["prevent"])},{default:u(()=>[r(M,{label:"موبایل","validate-status":g.value?"error":"",help:g.value},{default:u(()=>[r(y,{value:l.value,"onUpdate:value":e[0]||(e[0]=d=>l.value=d),autocomplete:"off",inputmode:"numeric",placeholder:"09xxxxxxxxx",class:"ltr-input",onBlur:e[1]||(e[1]=d=>P.value=!0)},{prefix:u(()=>[r(i(S),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(M,{label:"رمز عبور","validate-status":m.value?"error":"",help:m.value},{default:u(()=>[r(z,{value:n.value,"onUpdate:value":e[2]||(e[2]=d=>n.value=d),placeholder:"••••••",class:"ltr-input",onBlur:e[3]||(e[3]=d=>L.value=!0),onPressEnter:h},{prefix:u(()=>[r(i(te),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(A,{type:"primary",block:"",class:"submit-btn",disabled:!C.value,loading:p.value,onClick:h},{default:u(()=>[e[10]||(e[10]=t("span",null,"ورود",-1)),p.value?W("",!0):(x(),J(i(R),{key:0,class:"btn-arrow"}))]),_:1},8,["disabled","loading"])]),_:1}),t("p",he,[r(i(ee)),e[11]||(e[11]=t("span",null,"اتصال شما رمزنگاری شده و امن است",-1))])])])]),t("footer",ye,"© "+B(i(_).nameEn),1)])}}}),Ce=X(_e,[["__scopeId","data-v-1eb36c3e"]]);export{Ce as default}; +import{c as r,I as N,d as H,b as $,am as j,p as t,F as T,e as F,t as B,h as i,j as _,f as b,w as u,H as I,r as f,o as x,A as U,a as J,an as R,i as W,m as v,s as O,G as q,l as Q,_ as X}from"./index-eLNLLYwC.js";import{_ as E}from"./brand-icon-COpT6LnI.js";import{u as Y}from"./auth-Cmkre2IW.js";import{T as Z,S as K}from"./TeamOutlined-Bx4ezhPp.js";import{S as ee}from"./SafetyCertificateOutlined-Du6lFDs_.js";import{L as te}from"./LockOutlined-BQjJg0kk.js";var ae={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 00-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 00-11.3 0L266.3 586.7a8.03 8.03 0 000 11.3l39.5 39.7z"}}]},name:"line-chart",theme:"outlined"};function G(s){for(var a=1;aP.value?l.value?l.value.length<8?"مقدار ورودی صحیح نیست":"":"وارد کردن موبایل الزامی است":""),m=O(()=>L.value?n.value?n.value.length<5?"مقدار ورودی صحیح نیست":"":"وارد کردن رمز عبور الزامی است":""),C=O(()=>!g.value&&!m.value&&l.value!==""&&n.value!=="");async function h(){if(!(!C.value||p.value)){p.value=!0;try{await o.login({phone:l.value,password:n.value}),await a.push("/dashboard/ecommerce")}catch(c){console.log(c),q.error("خطا در ورود")}finally{p.value=!1}}}return(c,e)=>{const y=f("a-input"),M=f("a-form-item"),z=f("a-input-password"),A=f("a-button"),D=f("a-form");return x(),$("div",ne,[e[14]||(e[14]=j('',2)),t("div",re,[(x(),$(T,null,F(14,d=>t("i",{key:d,style:U(k(d))},null,4)),64))]),t("main",ie,[t("section",de,[t("div",ce,[e[4]||(e[4]=t("div",{class:"logo-chip"},[t("img",{src:E,alt:""})],-1)),t("span",ue,B(i(_).nameEn),1)]),e[8]||(e[8]=j('

مدیریت هوشمند کسب‌وکار طلا

سفارش‌ها، مشتریان، محصولات و حسابداری؛ همه در یک پنل.

999.9
',3)),t("ul",pe,[t("li",null,[r(i(w)),e[5]||(e[5]=b(" گزارش لحظه‌ای",-1))]),t("li",null,[r(i(Z)),e[6]||(e[6]=b(" مدیریت مشتریان",-1))]),t("li",null,[r(i(K)),e[7]||(e[7]=b(" پیگیری سفارش",-1))])])]),t("section",fe,[t("div",ve,[t("div",be,[t("div",ge,[t("img",{src:E,alt:i(_).nameEn},null,8,me)]),e[9]||(e[9]=t("span",{class:"eyebrow"},[t("span",{class:"dot"}),b("پنل مدیریت")],-1))]),e[12]||(e[12]=t("h1",{class:"title"},"ورود به محیط مدیریت",-1)),e[13]||(e[13]=t("p",{class:"subtitle"},"لطفا شماره تلفن همراه خود به همراه رمز عبور وارد کنید.",-1)),r(D,{layout:"vertical",class:"login-form",onSubmit:I(h,["prevent"])},{default:u(()=>[r(M,{label:"موبایل","validate-status":g.value?"error":"",help:g.value},{default:u(()=>[r(y,{value:l.value,"onUpdate:value":e[0]||(e[0]=d=>l.value=d),autocomplete:"off",inputmode:"numeric",placeholder:"09xxxxxxxxx",class:"ltr-input",onBlur:e[1]||(e[1]=d=>P.value=!0)},{prefix:u(()=>[r(i(S),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(M,{label:"رمز عبور","validate-status":m.value?"error":"",help:m.value},{default:u(()=>[r(z,{value:n.value,"onUpdate:value":e[2]||(e[2]=d=>n.value=d),placeholder:"••••••",class:"ltr-input",onBlur:e[3]||(e[3]=d=>L.value=!0),onPressEnter:h},{prefix:u(()=>[r(i(te),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(A,{type:"primary",block:"",class:"submit-btn",disabled:!C.value,loading:p.value,onClick:h},{default:u(()=>[e[10]||(e[10]=t("span",null,"ورود",-1)),p.value?W("",!0):(x(),J(i(R),{key:0,class:"btn-arrow"}))]),_:1},8,["disabled","loading"])]),_:1}),t("p",he,[r(i(ee)),e[11]||(e[11]=t("span",null,"اتصال شما رمزنگاری شده و امن است",-1))])])])]),t("footer",ye,"© "+B(i(_).nameEn),1)])}}}),Ce=X(_e,[["__scopeId","data-v-1eb36c3e"]]);export{Ce as default}; diff --git a/apps/admin-panel/dist/assets/Main-B6XfJkyt.js b/apps/admin-panel/dist/assets/Main-D1tnU8tP.js similarity index 97% rename from apps/admin-panel/dist/assets/Main-B6XfJkyt.js rename to apps/admin-panel/dist/assets/Main-D1tnU8tP.js index 8433aa3..6575bb2 100644 --- a/apps/admin-panel/dist/assets/Main-B6XfJkyt.js +++ b/apps/admin-panel/dist/assets/Main-D1tnU8tP.js @@ -1 +1 @@ -import{c as m,I as K,d as U,u as D,r as d,o as a,a as p,w as i,b as A,e as T,F as B,f as N,t as S,g as J,h,i as x,j as re,k as R,l as te,m as H,n as V,p as _,q as se,s as P,_ as E,v as oe}from"./index-DajPj7Ec.js";import{_ as ie}from"./brand-icon-COpT6LnI.js";import{r as Q}from"./icons-DiNnR1E8.js";import{u as ae}from"./auth-l1fvj2RU.js";import{U as le}from"./UserOutlined-CzruAWCH.js";import{S as ue}from"./SafetyCertificateOutlined-DSk-s9OX.js";import"./SettingOutlined-BBdK6RkP.js";import"./UnorderedListOutlined-B6W9NsW_.js";import"./PercentageOutlined-D8KYbn5o.js";import"./UserAddOutlined-tCWSfp_Y.js";import"./CreditCardOutlined-H5cAFLTI.js";import"./AppstoreOutlined-BPqrCmxh.js";import"./TeamOutlined-DPoMD9pK.js";import"./CameraOutlined-B6nXMt0y.js";var ce={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 01-112.7 75.9A352.8 352.8 0 01512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 01-112.7-75.9 353.28 353.28 0 01-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 000-12.6z"}}]},name:"logout",theme:"outlined"};function X(n){for(var t=1;t{const M=d("NavMenuNode",!0),w=d("a-sub-menu"),f=d("a-menu-item");return n.node.submenu?(a(),p(w,{key:n.menuKey,"popup-class-name":"nav-popup"},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),title:i(()=>[N(S(n.node.i18n||n.node.name),1)]),default:i(()=>[(a(!0),A(B,null,T(s(n.node.submenu),(O,L)=>(a(),p(M,{key:O.url||`${n.menuKey}-${L}`,node:O,"menu-key":O.url||`${n.menuKey}-${L}`},null,8,["node","menu-key"]))),128))]),_:1})):(a(),p(f,{key:n.menuKey},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),default:i(()=>[N(" "+S(n.node.i18n||n.node.name),1)]),_:1}))}}}),be={key:0,class:"nav-brand"},ye={class:"nav-title"},he=U({__name:"VerticalNavMenu",props:{title:{default:re.name},collapsed:{type:Boolean,default:!1}},setup(n){const t=R(),e=te(),s=D();function o(r){return r.superAdminOnly&&!s.isSuperAdmin?!1:r.permissionId?!!s.hasPermission(r.permissionId):!0}function I(r){return(r??[]).filter(o)}function M(r){return r.header?I(r.items).length>0:r.submenu?I(r.submenu).length>0:!0}const w=P(()=>ve().filter(r=>o(r)&&M(r))),f=(r,l)=>`sub-${r.name??""}-${l}`;function O(r,l,b){for(let y=0;yt.path,r=>{v.value=[r];const l=L(r);for(const b of l)u.value.includes(b)||(u.value=[...u.value,b])});function j({key:r}){const l=String(r);l.startsWith("/")&&l!==t.path&&e.push(l)}return(r,l)=>{const b=d("a-menu-item-group"),y=d("a-menu"),g=d("a-layout-sider");return a(),p(g,{collapsed:n.collapsed,trigger:null,collapsible:"",width:"260",class:"vertical-nav-menu",theme:"light"},{default:i(()=>[_("div",{class:se(["nav-header",{"is-collapsed":n.collapsed}])},[l[2]||(l[2]=_("span",{class:"nav-logo"},[_("img",{src:ie,alt:""})],-1)),n.collapsed?x("",!0):(a(),A("span",be,[_("span",ye,S(n.title),1),l[1]||(l[1]=_("span",{class:"nav-subtitle"},"پنل مدیریت",-1))]))],2),m(y,{class:"nav-menu",mode:"inline",theme:"light","inline-collapsed":n.collapsed,"selected-keys":v.value,"open-keys":u.value,"onUpdate:openKeys":l[0]||(l[0]=c=>u.value=c),onClick:j},{default:i(()=>[(a(!0),A(B,null,T(w.value,(c,k)=>(a(),A(B,{key:c.url||c.header||k},[c.header?(a(),p(b,{key:0,title:c.i18n||c.header},{default:i(()=>[(a(!0),A(B,null,T(I(c.items),($,z)=>(a(),p(ee,{key:$.url||`${k}-${z}`,node:$,"menu-key":$.url||f($,z)},null,8,["node","menu-key"]))),128))]),_:2},1032,["title"])):(a(),p(ee,{key:1,node:c,"menu-key":c.url||f(c,k)},null,8,["node","menu-key"]))],64))),128))]),_:1},8,["inline-collapsed","selected-keys","open-keys"])]),_:1},8,["collapsed"])}}}),ne=E(he,[["__scopeId","data-v-f8bc07d5"]]),Ie={class:"nav-left"},Oe={class:"page-title"},ke={key:1},we={class:"nav-right"},Se={class:"user-chip"},Me={class:"user-name"},Le={class:"user-card"},$e={class:"user-card__head"},Ce={class:"user-card__id"},Ne={class:"user-card__name"},Pe={class:"user-card__mobile"},Ae=U({__name:"TheNavbar",props:{collapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(n){const t=R(),e=te(),s=ae(),o=D(),I=P(()=>{var v;return((v=t.meta)==null?void 0:v.pageTitle)??""}),M=P(()=>{var v;return(v=t.meta)==null?void 0:v.breadcrumb}),w=P(()=>{var v,u;return((v=s.user)==null?void 0:v.name)??((u=s.user)==null?void 0:u.fullName)??"کاربر"}),f=P(()=>w.value.trim().charAt(0)||"ک"),O=P(()=>!!o.hasPermission("user.permission"));async function L(){await s.logout()||e.push("/auth/login")}return(v,u)=>{const j=d("a-button"),r=d("router-link"),l=d("a-breadcrumb-item"),b=d("a-breadcrumb"),y=d("a-avatar"),g=d("a-divider"),c=d("a-menu-item"),k=d("a-menu"),$=d("a-dropdown"),z=d("a-layout-header");return a(),p(z,{class:"the-navbar"},{default:i(()=>[_("div",Ie,[m(j,{type:"text",onClick:u[0]||(u[0]=C=>v.$emit("toggle-sidebar"))},{default:i(()=>[n.collapsed?(a(),p(h(q),{key:0})):(a(),p(h(W),{key:1}))]),_:1}),_("span",Oe,S(I.value),1),M.value?(a(),p(b,{key:0,class:"breadcrumb"},{default:i(()=>[(a(!0),A(B,null,T(M.value,(C,F)=>(a(),p(l,{key:F},{default:i(()=>[C.url&&!C.active?(a(),p(r,{key:0,to:C.url},{default:i(()=>[N(S(C.title),1)]),_:2},1032,["to"])):(a(),A("span",ke,S(C.title),1))]),_:2},1024))),128))]),_:1})):x("",!0)]),_("div",we,[m($,{trigger:"click",placement:"bottomRight","overlay-class-name":"user-dropdown-overlay"},{overlay:i(()=>{var C;return[_("div",Le,[_("div",$e,[m(y,{size:"large",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("div",Ce,[_("span",Ne,S(w.value),1),_("span",Pe,S((C=h(s).user)==null?void 0:C.mobile),1)])]),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"my-data",onClick:u[1]||(u[1]=F=>h(e).push("/my-data"))},{default:i(()=>[m(h(le)),u[3]||(u[3]=N(" اطلاعات من ",-1))]),_:1}),O.value?(a(),p(c,{key:"permission",onClick:u[2]||(u[2]=F=>h(e).push("/permission"))},{default:i(()=>[m(h(ue)),u[4]||(u[4]=N(" دسترسی ها ",-1))]),_:1})):x("",!0)]),_:1}),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"logout",onClick:L},{default:i(()=>[m(h(G)),u[5]||(u[5]=N(" خروج ",-1))]),_:1})]),_:1})])]}),default:i(()=>[_("span",Se,[m(y,{size:"small",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("span",Me,S(w.value),1)])]),_:1})])]),_:1})}}}),je=E(Ae,[["__scopeId","data-v-5cc2d870"]]),Be={class:"content-wrapper"},xe={class:"content-area__content"},ze=U({__name:"Main",setup(n){const t=R(),e=oe(),s=P(()=>e.sidebarCollapsed);function o(){e.isSmallScreen?e.setMobileNavOpen(!e.mobileNavOpen):e.setSidebarCollapsed(!s.value)}const I=P(()=>{var f;return!!((f=t.meta)!=null&&f.no_scroll)}),M=H(void 0);function w(f){M.value=f}return V(()=>t.path,()=>{M.value=void 0,e.setMobileNavOpen(!1)}),V(()=>e.isSmallScreen,f=>{f||e.setMobileNavOpen(!1)}),(f,O)=>{const L=d("a-drawer"),v=d("router-view"),u=d("a-layout-content"),j=d("a-layout");return a(),p(j,{class:se(["layout--main",{"no-scroll":I.value}])},{default:i(()=>[h(e).isSmallScreen?(a(),p(L,{key:1,open:h(e).mobileNavOpen,placement:"right",width:260,closable:!1,"root-class-name":"mobile-nav-drawer",onClose:O[0]||(O[0]=r=>h(e).setMobileNavOpen(!1))},{default:i(()=>[m(ne)]),_:1},8,["open"])):(a(),p(ne,{key:0,collapsed:s.value,"show-toggle":"",onToggle:o},null,8,["collapsed"])),m(j,null,{default:i(()=>[m(je,{collapsed:h(e).isSmallScreen?!h(e).mobileNavOpen:s.value,onToggleSidebar:o},null,8,["collapsed"]),m(u,{id:"content-area"},{default:i(()=>[_("div",Be,[_("div",xe,[m(v,{onChangeRouteTitle:w})])])]),_:1})]),_:1})]),_:1},8,["class"])}}}),Xe=E(ze,[["__scopeId","data-v-c1ea4b9d"]]);export{Xe as default}; +import{c as m,I as K,d as U,u as D,r as d,o as a,a as p,w as i,b as A,e as T,F as B,f as N,t as S,g as J,h,i as x,j as re,k as R,l as te,m as H,n as V,p as _,q as se,s as P,_ as E,v as oe}from"./index-eLNLLYwC.js";import{_ as ie}from"./brand-icon-COpT6LnI.js";import{r as Q}from"./icons-DaMkWfMK.js";import{u as ae}from"./auth-Cmkre2IW.js";import{U as le}from"./UserOutlined-B4M5rNrX.js";import{S as ue}from"./SafetyCertificateOutlined-Du6lFDs_.js";import"./SettingOutlined-DibNCEeh.js";import"./UnorderedListOutlined-cPIiOEaQ.js";import"./PercentageOutlined-DyprS4lh.js";import"./UserAddOutlined-GWNEdhY8.js";import"./CreditCardOutlined-CcvN7g1Z.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./TeamOutlined-Bx4ezhPp.js";import"./CameraOutlined-CFYC5ScW.js";var ce={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 01-112.7 75.9A352.8 352.8 0 01512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 01-112.7-75.9 353.28 353.28 0 01-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 000-12.6z"}}]},name:"logout",theme:"outlined"};function X(n){for(var t=1;t{const M=d("NavMenuNode",!0),w=d("a-sub-menu"),f=d("a-menu-item");return n.node.submenu?(a(),p(w,{key:n.menuKey,"popup-class-name":"nav-popup"},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),title:i(()=>[N(S(n.node.i18n||n.node.name),1)]),default:i(()=>[(a(!0),A(B,null,T(s(n.node.submenu),(O,L)=>(a(),p(M,{key:O.url||`${n.menuKey}-${L}`,node:O,"menu-key":O.url||`${n.menuKey}-${L}`},null,8,["node","menu-key"]))),128))]),_:1})):(a(),p(f,{key:n.menuKey},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),default:i(()=>[N(" "+S(n.node.i18n||n.node.name),1)]),_:1}))}}}),be={key:0,class:"nav-brand"},ye={class:"nav-title"},he=U({__name:"VerticalNavMenu",props:{title:{default:re.name},collapsed:{type:Boolean,default:!1}},setup(n){const t=R(),e=te(),s=D();function o(r){return r.superAdminOnly&&!s.isSuperAdmin?!1:r.permissionId?!!s.hasPermission(r.permissionId):!0}function I(r){return(r??[]).filter(o)}function M(r){return r.header?I(r.items).length>0:r.submenu?I(r.submenu).length>0:!0}const w=P(()=>ve().filter(r=>o(r)&&M(r))),f=(r,l)=>`sub-${r.name??""}-${l}`;function O(r,l,b){for(let y=0;yt.path,r=>{v.value=[r];const l=L(r);for(const b of l)u.value.includes(b)||(u.value=[...u.value,b])});function j({key:r}){const l=String(r);l.startsWith("/")&&l!==t.path&&e.push(l)}return(r,l)=>{const b=d("a-menu-item-group"),y=d("a-menu"),g=d("a-layout-sider");return a(),p(g,{collapsed:n.collapsed,trigger:null,collapsible:"",width:"260",class:"vertical-nav-menu",theme:"light"},{default:i(()=>[_("div",{class:se(["nav-header",{"is-collapsed":n.collapsed}])},[l[2]||(l[2]=_("span",{class:"nav-logo"},[_("img",{src:ie,alt:""})],-1)),n.collapsed?x("",!0):(a(),A("span",be,[_("span",ye,S(n.title),1),l[1]||(l[1]=_("span",{class:"nav-subtitle"},"پنل مدیریت",-1))]))],2),m(y,{class:"nav-menu",mode:"inline",theme:"light","inline-collapsed":n.collapsed,"selected-keys":v.value,"open-keys":u.value,"onUpdate:openKeys":l[0]||(l[0]=c=>u.value=c),onClick:j},{default:i(()=>[(a(!0),A(B,null,T(w.value,(c,k)=>(a(),A(B,{key:c.url||c.header||k},[c.header?(a(),p(b,{key:0,title:c.i18n||c.header},{default:i(()=>[(a(!0),A(B,null,T(I(c.items),($,z)=>(a(),p(ee,{key:$.url||`${k}-${z}`,node:$,"menu-key":$.url||f($,z)},null,8,["node","menu-key"]))),128))]),_:2},1032,["title"])):(a(),p(ee,{key:1,node:c,"menu-key":c.url||f(c,k)},null,8,["node","menu-key"]))],64))),128))]),_:1},8,["inline-collapsed","selected-keys","open-keys"])]),_:1},8,["collapsed"])}}}),ne=E(he,[["__scopeId","data-v-f8bc07d5"]]),Ie={class:"nav-left"},Oe={class:"page-title"},ke={key:1},we={class:"nav-right"},Se={class:"user-chip"},Me={class:"user-name"},Le={class:"user-card"},$e={class:"user-card__head"},Ce={class:"user-card__id"},Ne={class:"user-card__name"},Pe={class:"user-card__mobile"},Ae=U({__name:"TheNavbar",props:{collapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(n){const t=R(),e=te(),s=ae(),o=D(),I=P(()=>{var v;return((v=t.meta)==null?void 0:v.pageTitle)??""}),M=P(()=>{var v;return(v=t.meta)==null?void 0:v.breadcrumb}),w=P(()=>{var v,u;return((v=s.user)==null?void 0:v.name)??((u=s.user)==null?void 0:u.fullName)??"کاربر"}),f=P(()=>w.value.trim().charAt(0)||"ک"),O=P(()=>!!o.hasPermission("user.permission"));async function L(){await s.logout()||e.push("/auth/login")}return(v,u)=>{const j=d("a-button"),r=d("router-link"),l=d("a-breadcrumb-item"),b=d("a-breadcrumb"),y=d("a-avatar"),g=d("a-divider"),c=d("a-menu-item"),k=d("a-menu"),$=d("a-dropdown"),z=d("a-layout-header");return a(),p(z,{class:"the-navbar"},{default:i(()=>[_("div",Ie,[m(j,{type:"text",onClick:u[0]||(u[0]=C=>v.$emit("toggle-sidebar"))},{default:i(()=>[n.collapsed?(a(),p(h(q),{key:0})):(a(),p(h(W),{key:1}))]),_:1}),_("span",Oe,S(I.value),1),M.value?(a(),p(b,{key:0,class:"breadcrumb"},{default:i(()=>[(a(!0),A(B,null,T(M.value,(C,F)=>(a(),p(l,{key:F},{default:i(()=>[C.url&&!C.active?(a(),p(r,{key:0,to:C.url},{default:i(()=>[N(S(C.title),1)]),_:2},1032,["to"])):(a(),A("span",ke,S(C.title),1))]),_:2},1024))),128))]),_:1})):x("",!0)]),_("div",we,[m($,{trigger:"click",placement:"bottomRight","overlay-class-name":"user-dropdown-overlay"},{overlay:i(()=>{var C;return[_("div",Le,[_("div",$e,[m(y,{size:"large",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("div",Ce,[_("span",Ne,S(w.value),1),_("span",Pe,S((C=h(s).user)==null?void 0:C.mobile),1)])]),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"my-data",onClick:u[1]||(u[1]=F=>h(e).push("/my-data"))},{default:i(()=>[m(h(le)),u[3]||(u[3]=N(" اطلاعات من ",-1))]),_:1}),O.value?(a(),p(c,{key:"permission",onClick:u[2]||(u[2]=F=>h(e).push("/permission"))},{default:i(()=>[m(h(ue)),u[4]||(u[4]=N(" دسترسی ها ",-1))]),_:1})):x("",!0)]),_:1}),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"logout",onClick:L},{default:i(()=>[m(h(G)),u[5]||(u[5]=N(" خروج ",-1))]),_:1})]),_:1})])]}),default:i(()=>[_("span",Se,[m(y,{size:"small",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("span",Me,S(w.value),1)])]),_:1})])]),_:1})}}}),je=E(Ae,[["__scopeId","data-v-5cc2d870"]]),Be={class:"content-wrapper"},xe={class:"content-area__content"},ze=U({__name:"Main",setup(n){const t=R(),e=oe(),s=P(()=>e.sidebarCollapsed);function o(){e.isSmallScreen?e.setMobileNavOpen(!e.mobileNavOpen):e.setSidebarCollapsed(!s.value)}const I=P(()=>{var f;return!!((f=t.meta)!=null&&f.no_scroll)}),M=H(void 0);function w(f){M.value=f}return V(()=>t.path,()=>{M.value=void 0,e.setMobileNavOpen(!1)}),V(()=>e.isSmallScreen,f=>{f||e.setMobileNavOpen(!1)}),(f,O)=>{const L=d("a-drawer"),v=d("router-view"),u=d("a-layout-content"),j=d("a-layout");return a(),p(j,{class:se(["layout--main",{"no-scroll":I.value}])},{default:i(()=>[h(e).isSmallScreen?(a(),p(L,{key:1,open:h(e).mobileNavOpen,placement:"right",width:260,closable:!1,"root-class-name":"mobile-nav-drawer",onClose:O[0]||(O[0]=r=>h(e).setMobileNavOpen(!1))},{default:i(()=>[m(ne)]),_:1},8,["open"])):(a(),p(ne,{key:0,collapsed:s.value,"show-toggle":"",onToggle:o},null,8,["collapsed"])),m(j,null,{default:i(()=>[m(je,{collapsed:h(e).isSmallScreen?!h(e).mobileNavOpen:s.value,onToggleSidebar:o},null,8,["collapsed"]),m(u,{id:"content-area"},{default:i(()=>[_("div",Be,[_("div",xe,[m(v,{onChangeRouteTitle:w})])])]),_:1})]),_:1})]),_:1},8,["class"])}}}),Xe=E(ze,[["__scopeId","data-v-c1ea4b9d"]]);export{Xe as default}; diff --git a/apps/admin-panel/dist/assets/Maintenance-CRfOTU6G.js b/apps/admin-panel/dist/assets/Maintenance-Df5I5LOi.js similarity index 88% rename from apps/admin-panel/dist/assets/Maintenance-CRfOTU6G.js rename to apps/admin-panel/dist/assets/Maintenance-Df5I5LOi.js index b5cb6bc..3aaa837 100644 --- a/apps/admin-panel/dist/assets/Maintenance-CRfOTU6G.js +++ b/apps/admin-panel/dist/assets/Maintenance-Df5I5LOi.js @@ -1 +1 @@ -import{_ as c,b as _,c as e,w as o,f as l,r as s,o as u}from"./index-DajPj7Ec.js";const i={},p={class:"full-page-msg"};function d(n,t){const a=s("a-button"),r=s("a-result");return u(),_("div",p,[e(r,{status:"info",title:"در دست تعمیر","sub-title":"این بخش موقتاً در دسترس نیست."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=c(i,[["render",d],["__scopeId","data-v-4e6c833c"]]);export{x as default}; +import{_ as c,b as _,c as e,w as o,f as l,r as s,o as u}from"./index-eLNLLYwC.js";const i={},p={class:"full-page-msg"};function d(n,t){const a=s("a-button"),r=s("a-result");return u(),_("div",p,[e(r,{status:"info",title:"در دست تعمیر","sub-title":"این بخش موقتاً در دسترس نیست."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=c(i,[["render",d],["__scopeId","data-v-4e6c833c"]]);export{x as default}; diff --git a/apps/admin-panel/dist/assets/MakeOrder-aTjo9HZz.js b/apps/admin-panel/dist/assets/MakeOrder-umVSia6q.js similarity index 90% rename from apps/admin-panel/dist/assets/MakeOrder-aTjo9HZz.js rename to apps/admin-panel/dist/assets/MakeOrder-umVSia6q.js index e3824c5..d8a80fa 100644 --- a/apps/admin-panel/dist/assets/MakeOrder-aTjo9HZz.js +++ b/apps/admin-panel/dist/assets/MakeOrder-umVSia6q.js @@ -1 +1 @@ -import{u as V,d as q,b as p,c as n,w as l,r as m,o as s,h as J,H as Q,t as c,p as w,a as _,i as v,f,F as Y,e as Z,m as h,s as N,y as U,G as B,_ as ee}from"./index-DajPj7Ec.js";import{a as te,b as d,X as oe}from"./model-CR-NjhTP.js";import{_ as D}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js";import{j as ae}from"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./icons-DiNnR1E8.js";import"./UnorderedListOutlined-B6W9NsW_.js";import"./PercentageOutlined-D8KYbn5o.js";import"./UserAddOutlined-tCWSfp_Y.js";import"./CreditCardOutlined-H5cAFLTI.js";import"./AppstoreOutlined-BPqrCmxh.js";import"./TeamOutlined-DPoMD9pK.js";import"./UserOutlined-CzruAWCH.js";import"./CameraOutlined-B6nXMt0y.js";import"./index-BAamWbCu.js";function le(){const T=V(),r=new te("admin/pre-orders/list","سفارش های ساختنی");return r.add(new d("customer.id","شماره").filterKey("id").filterNumber()),r.add(new d("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),r.add(new d("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),r.add(new d("color","رنگ محصول").filterKey("colorName").filterText()),r.add(new d("size","سایز محصول").filterKey("sizeSpec").filterText()),r.add(new d("color_mina","رنگ مینا").filterKey("minaColor").filterText()),r.add(new d("color_stone","رنگ سنگ").filterKey("stoneColor").filterText()),r.add(new d("sum","تعداد").filterText()),r.add(new d("time_creat_fa","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),r.add(new d("time_update_fa","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),r.add(new d("customer.name","ثبت کننده").renderSlot("name").noSort()),T.roles&&T.roles.includes("order.tamin.state")&&r.add(new d("sts_str_fa","وضعیت").renderSlot("sts").noSort()),r.add(new d("opt","عملیات").noSort().renderSlot("opt")),r}const se={id:"page-user-list"},ne={class:"flex"},re=["onClick"],ie={key:1},de={key:0},ue={class:"flex"},ce={class:"flex gap-8 make-detail"},me=["src"],_e={class:"flex"},ve={key:0},pe={key:0},fe={key:0},ke=q({__name:"MakeOrder",setup(T){const r=V(),k=a=>!!r.hasPermission(a),X=le(),K=h(null),t=h(void 0),C=h(!1),i=h(!1),I=h([]),j=a=>a?ae(a):"",L=N(()=>i.value?"CheckIcon":"EditIcon"),z=N(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.name)??"-"}),A=N(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.mobile)??"-"});async function E(){try{const{data:a}=await U.post("workshop/table",{page:1,limit:100});I.value=(a.rows??[]).map(e=>({id:e.id,name:e.name}))}catch(a){console.log(a)}}async function M(a){const{data:e}=await U.get(`admin/pre-orders/${a.id}`);t.value=e,C.value=!0,E()}async function F(){var a,e,u,b,x,y,O;if(!i.value){i.value=!0;return}try{await U.put(`custom-order/${(a=t.value)==null?void 0:a.id}`,{color:(e=t.value)==null?void 0:e.color,color_mina:(u=t.value)==null?void 0:u.color_mina,color_stone:(b=t.value)==null?void 0:b.color_stone}),i.value=!1,B.info("ویرایش موفق آمیز"),(x=K.value)==null||x.fetch()}catch(g){B.error(((O=(y=g==null?void 0:g.response)==null?void 0:y.data)==null?void 0:O.message)??"خطا در ویرایش")}}function P(){var a;(a=K.value)==null||a.fetch(),i.value=!1}return(a,e)=>{const u=m("a-descriptions-item"),b=m("a-descriptions"),x=m("a-empty"),y=m("a-input"),O=m("a-tag"),g=m("a-input-number"),W=m("a-select-option"),G=m("a-select"),$=m("a-card"),H=m("a-button"),R=m("a-modal");return s(),p("div",se,[n($,{title:"سفارش های ساختنی",class:"page-card"},{default:l(()=>[n(oe,{ref_key:"tbl",ref:K,model:J(X),"mobile-cards":""},{name:l(({record:o})=>{var S;return[f(c((S=o.customer)==null?void 0:S.name),1)]}),opt:l(({record:o})=>[w("div",ne,[k("order.makeOrder.view")?(s(),_(D,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:S=>M(o)},null,8,["onClick"])):v("",!0)])]),sts:l(({record:o})=>[k("order.makeOrder.state")?(s(),p("a",{key:0,href:"",onClick:Q(S=>M(o),["prevent"])},c(o.sts_str_fa),9,re)):(s(),p("span",ie,c(o.sts_str_fa),1))]),_:1},8,["model"]),n(R,{open:C.value,"onUpdate:open":e[6]||(e[6]=o=>C.value=o),title:"مشاهده سفارش",width:"80%","wrap-class-name":"detail-modal",onCancel:P},{footer:l(()=>[n(H,{onClick:e[5]||(e[5]=o=>C.value=!1)},{default:l(()=>[...e[8]||(e[8]=[f("باشه",-1)])]),_:1})]),default:l(()=>[t.value?(s(),p("div",de,[n(b,null,{default:l(()=>[n(u,{label:"مشتری"},{default:l(()=>[f(c(z.value),1)]),_:1}),n(u,{label:"تلفن همراه"},{default:l(()=>[f(c(A.value),1)]),_:1}),n(u,{label:"تاریخ ثبت"},{default:l(()=>[f(c(j(t.value.time_creat_fa)||"-"),1)]),_:1}),n(u,{label:"وضعیت"},{default:l(()=>[f(c(t.value.sts_str_fa||"-"),1)]),_:1})]),_:1}),n($,null,{title:l(()=>[w("div",ue,[e[7]||(e[7]=w("div",{class:"flex-1"},"آیتم های سفارش",-1)),w("div",null,[k("order.makeOrder.view.edit")?(s(),_(D,{key:0,"icon-class":"w-5 h-5 text-success",title:"ویرایش",icon:L.value,onClick:F},null,8,["icon"])):v("",!0)])])]),default:l(()=>[w("div",ce,[w("div",null,[t.value.designImageUrl?(s(),p("img",{key:0,src:t.value.designImageUrl,width:"90px",height:"90px",style:{"object-fit":"scale-down"}},null,8,me)):(s(),_(x,{key:1,image:void 0,description:"بدون تصویر"}))]),w("div",_e,[n(b,null,{default:l(()=>[n(u,{label:"رنگ محصول"},{default:l(()=>[i.value?v("",!0):(s(),p("div",ve,c(t.value.color||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color,"onUpdate:value":e[0]||(e[0]=o=>t.value.color=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ مینا"},{default:l(()=>[i.value?v("",!0):(s(),p("div",pe,c(t.value.color_mina||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_mina,"onUpdate:value":e[1]||(e[1]=o=>t.value.color_mina=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ سنگ"},{default:l(()=>[i.value?v("",!0):(s(),p("div",fe,c(t.value.color_stone||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_stone,"onUpdate:value":e[2]||(e[2]=o=>t.value.color_stone=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"تعداد"},{default:l(()=>[i.value?v("",!0):(s(),_(O,{key:0,color:"orange"},{default:l(()=>[f(c(t.value.sum||0),1)]),_:1})),i.value&&k("order.makeOrder.view.edit")?(s(),_(g,{key:1,value:t.value.sum,"onUpdate:value":e[3]||(e[3]=o=>t.value.sum=o),class:"w-full"},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"انتخاب کارگاه"},{default:l(()=>[n(G,{value:t.value.workshop_id,"onUpdate:value":e[4]||(e[4]=o=>t.value.workshop_id=o),placeholder:"لطفا یک کارگاه را انتخاب کنید",style:{"min-width":"200px"}},{default:l(()=>[(s(!0),p(Y,null,Z(I.value,o=>(s(),_(W,{key:o.id,value:o.id},{default:l(()=>[f(c(o.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})])])]),_:1})])):(s(),_(x,{key:1}))]),_:1},8,["open"])]),_:1})])}}}),$e=ee(ke,[["__scopeId","data-v-4a9a9c66"]]);export{$e as default}; +import{u as V,d as q,b as p,c as n,w as l,r as m,o as s,h as J,H as Q,t as c,p as w,a as _,i as v,f,F as Y,e as Z,m as h,s as N,y as U,G as B,_ as ee}from"./index-eLNLLYwC.js";import{a as te,b as d,X as oe}from"./model-btNVLLyF.js";import{_ as D}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js";import{j as ae}from"./filters-BMytoA2k.js";import"./SettingOutlined-DibNCEeh.js";import"./icons-DaMkWfMK.js";import"./UnorderedListOutlined-cPIiOEaQ.js";import"./PercentageOutlined-DyprS4lh.js";import"./UserAddOutlined-GWNEdhY8.js";import"./CreditCardOutlined-CcvN7g1Z.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./TeamOutlined-Bx4ezhPp.js";import"./UserOutlined-B4M5rNrX.js";import"./CameraOutlined-CFYC5ScW.js";import"./index-CKaD48iT.js";function le(){const T=V(),r=new te("admin/pre-orders/list","سفارش های ساختنی");return r.add(new d("customer.id","شماره").filterKey("id").filterNumber()),r.add(new d("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),r.add(new d("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),r.add(new d("color","رنگ محصول").filterKey("colorName").filterText()),r.add(new d("size","سایز محصول").filterKey("sizeSpec").filterText()),r.add(new d("color_mina","رنگ مینا").filterKey("minaColor").filterText()),r.add(new d("color_stone","رنگ سنگ").filterKey("stoneColor").filterText()),r.add(new d("sum","تعداد").filterText()),r.add(new d("time_creat_fa","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),r.add(new d("time_update_fa","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),r.add(new d("customer.name","ثبت کننده").renderSlot("name").noSort()),T.roles&&T.roles.includes("order.tamin.state")&&r.add(new d("sts_str_fa","وضعیت").renderSlot("sts").noSort()),r.add(new d("opt","عملیات").noSort().renderSlot("opt")),r}const se={id:"page-user-list"},ne={class:"flex"},re=["onClick"],ie={key:1},de={key:0},ue={class:"flex"},ce={class:"flex gap-8 make-detail"},me=["src"],_e={class:"flex"},ve={key:0},pe={key:0},fe={key:0},ke=q({__name:"MakeOrder",setup(T){const r=V(),k=a=>!!r.hasPermission(a),X=le(),K=h(null),t=h(void 0),C=h(!1),i=h(!1),I=h([]),j=a=>a?ae(a):"",L=N(()=>i.value?"CheckIcon":"EditIcon"),z=N(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.name)??"-"}),A=N(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.mobile)??"-"});async function E(){try{const{data:a}=await U.post("workshop/table",{page:1,limit:100});I.value=(a.rows??[]).map(e=>({id:e.id,name:e.name}))}catch(a){console.log(a)}}async function M(a){const{data:e}=await U.get(`admin/pre-orders/${a.id}`);t.value=e,C.value=!0,E()}async function F(){var a,e,u,b,x,y,O;if(!i.value){i.value=!0;return}try{await U.put(`custom-order/${(a=t.value)==null?void 0:a.id}`,{color:(e=t.value)==null?void 0:e.color,color_mina:(u=t.value)==null?void 0:u.color_mina,color_stone:(b=t.value)==null?void 0:b.color_stone}),i.value=!1,B.info("ویرایش موفق آمیز"),(x=K.value)==null||x.fetch()}catch(g){B.error(((O=(y=g==null?void 0:g.response)==null?void 0:y.data)==null?void 0:O.message)??"خطا در ویرایش")}}function P(){var a;(a=K.value)==null||a.fetch(),i.value=!1}return(a,e)=>{const u=m("a-descriptions-item"),b=m("a-descriptions"),x=m("a-empty"),y=m("a-input"),O=m("a-tag"),g=m("a-input-number"),W=m("a-select-option"),G=m("a-select"),$=m("a-card"),H=m("a-button"),R=m("a-modal");return s(),p("div",se,[n($,{title:"سفارش های ساختنی",class:"page-card"},{default:l(()=>[n(oe,{ref_key:"tbl",ref:K,model:J(X),"mobile-cards":""},{name:l(({record:o})=>{var S;return[f(c((S=o.customer)==null?void 0:S.name),1)]}),opt:l(({record:o})=>[w("div",ne,[k("order.makeOrder.view")?(s(),_(D,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:S=>M(o)},null,8,["onClick"])):v("",!0)])]),sts:l(({record:o})=>[k("order.makeOrder.state")?(s(),p("a",{key:0,href:"",onClick:Q(S=>M(o),["prevent"])},c(o.sts_str_fa),9,re)):(s(),p("span",ie,c(o.sts_str_fa),1))]),_:1},8,["model"]),n(R,{open:C.value,"onUpdate:open":e[6]||(e[6]=o=>C.value=o),title:"مشاهده سفارش",width:"80%","wrap-class-name":"detail-modal",onCancel:P},{footer:l(()=>[n(H,{onClick:e[5]||(e[5]=o=>C.value=!1)},{default:l(()=>[...e[8]||(e[8]=[f("باشه",-1)])]),_:1})]),default:l(()=>[t.value?(s(),p("div",de,[n(b,null,{default:l(()=>[n(u,{label:"مشتری"},{default:l(()=>[f(c(z.value),1)]),_:1}),n(u,{label:"تلفن همراه"},{default:l(()=>[f(c(A.value),1)]),_:1}),n(u,{label:"تاریخ ثبت"},{default:l(()=>[f(c(j(t.value.time_creat_fa)||"-"),1)]),_:1}),n(u,{label:"وضعیت"},{default:l(()=>[f(c(t.value.sts_str_fa||"-"),1)]),_:1})]),_:1}),n($,null,{title:l(()=>[w("div",ue,[e[7]||(e[7]=w("div",{class:"flex-1"},"آیتم های سفارش",-1)),w("div",null,[k("order.makeOrder.view.edit")?(s(),_(D,{key:0,"icon-class":"w-5 h-5 text-success",title:"ویرایش",icon:L.value,onClick:F},null,8,["icon"])):v("",!0)])])]),default:l(()=>[w("div",ce,[w("div",null,[t.value.designImageUrl?(s(),p("img",{key:0,src:t.value.designImageUrl,width:"90px",height:"90px",style:{"object-fit":"scale-down"}},null,8,me)):(s(),_(x,{key:1,image:void 0,description:"بدون تصویر"}))]),w("div",_e,[n(b,null,{default:l(()=>[n(u,{label:"رنگ محصول"},{default:l(()=>[i.value?v("",!0):(s(),p("div",ve,c(t.value.color||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color,"onUpdate:value":e[0]||(e[0]=o=>t.value.color=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ مینا"},{default:l(()=>[i.value?v("",!0):(s(),p("div",pe,c(t.value.color_mina||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_mina,"onUpdate:value":e[1]||(e[1]=o=>t.value.color_mina=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ سنگ"},{default:l(()=>[i.value?v("",!0):(s(),p("div",fe,c(t.value.color_stone||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_stone,"onUpdate:value":e[2]||(e[2]=o=>t.value.color_stone=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"تعداد"},{default:l(()=>[i.value?v("",!0):(s(),_(O,{key:0,color:"orange"},{default:l(()=>[f(c(t.value.sum||0),1)]),_:1})),i.value&&k("order.makeOrder.view.edit")?(s(),_(g,{key:1,value:t.value.sum,"onUpdate:value":e[3]||(e[3]=o=>t.value.sum=o),class:"w-full"},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"انتخاب کارگاه"},{default:l(()=>[n(G,{value:t.value.workshop_id,"onUpdate:value":e[4]||(e[4]=o=>t.value.workshop_id=o),placeholder:"لطفا یک کارگاه را انتخاب کنید",style:{"min-width":"200px"}},{default:l(()=>[(s(!0),p(Y,null,Z(I.value,o=>(s(),_(W,{key:o.id,value:o.id},{default:l(()=>[f(c(o.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})])])]),_:1})])):(s(),_(x,{key:1}))]),_:1},8,["open"])]),_:1})])}}}),$e=ee(ke,[["__scopeId","data-v-4a9a9c66"]]);export{$e as default}; diff --git a/apps/admin-panel/dist/assets/NotAuthorized-kSbkBInP.js b/apps/admin-panel/dist/assets/NotAuthorized-Cl9-8nb6.js similarity index 89% rename from apps/admin-panel/dist/assets/NotAuthorized-kSbkBInP.js rename to apps/admin-panel/dist/assets/NotAuthorized-Cl9-8nb6.js index 49e68d4..4462b2e 100644 --- a/apps/admin-panel/dist/assets/NotAuthorized-kSbkBInP.js +++ b/apps/admin-panel/dist/assets/NotAuthorized-Cl9-8nb6.js @@ -1 +1 @@ -import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-DajPj7Ec.js";const p={},d={class:"full-page-msg"};function i(n,t){const r=s("a-button"),a=s("a-result");return u(),c("div",d,[e(a,{status:"403",title:"دسترسی غیرمجاز","sub-title":"شما دسترسی لازم برای مشاهده این صفحه را ندارید."},{extra:o(()=>[e(r,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const b=_(p,[["render",i],["__scopeId","data-v-8b21c139"]]);export{b as default}; +import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-eLNLLYwC.js";const p={},d={class:"full-page-msg"};function i(n,t){const r=s("a-button"),a=s("a-result");return u(),c("div",d,[e(a,{status:"403",title:"دسترسی غیرمجاز","sub-title":"شما دسترسی لازم برای مشاهده این صفحه را ندارید."},{extra:o(()=>[e(r,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const b=_(p,[["render",i],["__scopeId","data-v-8b21c139"]]);export{b as default}; diff --git a/apps/admin-panel/dist/assets/OmdeArchivedList-DXe8fsa2.js b/apps/admin-panel/dist/assets/OmdeArchivedList-DXe8fsa2.js deleted file mode 100644 index 3fcfcf0..0000000 --- a/apps/admin-panel/dist/assets/OmdeArchivedList-DXe8fsa2.js +++ /dev/null @@ -1 +0,0 @@ -import{b as i,O as m,a as e}from"./OmdeCustomerList-c6FcwBcS.js";import{d as p,a as s,h as t,o as a}from"./index-DajPj7Ec.js";import"./index-BAamWbCu.js";import"./model-CR-NjhTP.js";import"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./DateInput-CSLG7sxn.js";import"./UserOutlined-CzruAWCH.js";import"./ShopOutlined-MoIbCAG4.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./PercentageOutlined-D8KYbn5o.js";import"./SafetyCertificateOutlined-DSk-s9OX.js";import"./UnorderedListOutlined-B6W9NsW_.js";const U=p({__name:"OmdeArchivedList",setup(d){const o=m.archived.title,r=i("archived");return(l,c)=>(a(),s(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OmdeArchivedList-RTBSSPqv.js b/apps/admin-panel/dist/assets/OmdeArchivedList-RTBSSPqv.js new file mode 100644 index 0000000..d2d9664 --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeArchivedList-RTBSSPqv.js @@ -0,0 +1 @@ +import{b as i,O as m,a as e}from"./OmdeCustomerList-CytNKR8R.js";import{d as p,a as s,h as t,o as a}from"./index-eLNLLYwC.js";import"./index-CKaD48iT.js";import"./model-btNVLLyF.js";import"./filters-BMytoA2k.js";import"./SettingOutlined-DibNCEeh.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./DateInput-D9Jh1loF.js";import"./UserOutlined-B4M5rNrX.js";import"./ShopOutlined-DIjF3I3z.js";import"./EnvironmentOutlined-BKbou10z.js";import"./PercentageOutlined-DyprS4lh.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";import"./UnorderedListOutlined-cPIiOEaQ.js";const U=p({__name:"OmdeArchivedList",setup(d){const o=m.archived.title,r=i("archived");return(l,c)=>(a(),s(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OmdeCustomerList-CytNKR8R.js b/apps/admin-panel/dist/assets/OmdeCustomerList-CytNKR8R.js new file mode 100644 index 0000000..51cd014 --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeCustomerList-CytNKR8R.js @@ -0,0 +1 @@ +import{m as ke}from"./index-CKaD48iT.js";import{c as a,I as Se,u as J,d as be,x as Oe,y as $,z as $e,b,ak as q,w as o,r as C,o as d,f as A,t as v,p as l,i as w,h as y,Z as Te,a as p,E as je,Q as Ie,S as De,q as T,g as N,W as H,e as Ne,m as j,al as Be,G as x,l as Ee,_ as Ae}from"./index-eLNLLYwC.js";import{a as He,b as r,X as Me}from"./model-btNVLLyF.js";import{_ as Le}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import{_ as Ve}from"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js";import{_ as Pe}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js";import{S as ze}from"./SettingOutlined-DibNCEeh.js";import{U as Re,S as M}from"./UnorderedListOutlined-cPIiOEaQ.js";var Ue={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-download",theme:"outlined"};function G(c){for(var u=1;u_.key==="acc_remain"))return;const f=c.cols.findIndex(_=>_.key==="rial_remain");for(const _ of c.cols)_.key==="remain"&&(_.title="بدهی داخل اپ (گرم)"),_.key==="rial_remain"&&(_.title="بدهی داخل اپ (ریال)");c.cols.splice(f+1,0,new r("acc_remain",`مانده‌ی ${u} (گرم)`).filterNumber().renderSlot("acc_gold"),new r("acc_rial_remain",`مانده‌ی ${u} (ریال)`).filterNumber().renderSlot("acc_rial"))}const Qe={id:"page-user-list"},qe={key:0,class:"list-count"},Ge={class:"text-danger"},Je={key:0},We={key:1},Ze={key:0,class:"acc-none"},Ke={class:"flex"},et={class:"cursor-pointer flex items-center"},tt={class:"flex gap-2"},nt={class:"flex gap-2"},st={class:"flex gap-2"},ot={class:"flex gap-2"},it={class:"flex gap-2"},at={class:"flex gap-2"},lt={key:0,class:"text-danger text-xs"},rt={class:"flex gap-2"},ct={class:"flex gap-2"},ut={class:"flex gap-2"},dt=be({__name:"OmdeCustomerList",props:{title:{},model:{},showAddButton:{type:Boolean,default:!1},accountingSync:{type:Boolean,default:!1}},setup(c){const u=c,f=Ee(),_=J(),s=e=>!!_.hasPermission(e),h=j(null),I=j(!1),D=j(void 0),S=j(void 0);function W(e){const n=e;S.value={count:n&&n.count?n.count:void 0,total:n&&n.total?n.total:void 0}}const Z=[{slot:"acc_gold",field:"acc_remain",places:3},{slot:"acc_rial",field:"acc_rial_remain",places:0}],K=e=>Number(e)>0?"acc-debt":Number(e)<0?"acc-credit":"";function ee(e,n){const m=Number(e);return m?`${Math.abs(m).toLocaleString("fa-IR",{maximumFractionDigits:n})} ${m>0?"بدهکار":"بستانکار"}`:"۰"}const te=e=>ke(e).format("jYYYY/jMM/jDD HH:mm");Oe(async()=>{try{const{data:e}=await $.get("admin/accounting-status");e!=null&&e.connected&&e.provider&&Ye($e(u.model),e.provider)}catch{}});function ne(e,n){const m=String(e.key);return m==="5"||m==="6"||m==="7"||m==="8"||m==="9"}function se(e){switch(e.sts_verify_step_one){case 1:return"در انتظار تایید ورود مشتری";case 2:return"رد ورود مشتری";case 3:return"تایید ورود مشتری"}}function V(e){switch(e.sts_verify_step_one){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function oe(e){switch(e.sts_verify_step_two){case 1:return"در انتظار فعال سازی";case 2:return"غیر فعال سازی";case 3:return"فعال سازی"}}function P(e){switch(e.sts_verify_step_two){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function z(e){return e==="HelpCircleIcon"?Be:e==="CheckIcon"?H:M}function R(e){return e==="HelpCircleIcon"?"text-primary":e==="CheckIcon"?"text-success":"text-danger"}async function B(e,n){var m;try{await $.post("major/verify",e),x.info("تغییرات ثبت شد "),(m=h.value)==null||m.fetch()}catch{x.error(n)}}const U=e=>B({customer_id:e,sts_verify_step_one:2},"خطا در تغییر وضعیت اولیه مشتری"),F=e=>Q(e,"sts_verify_step_one"),X=e=>B({customer_id:e,sts_verify_step_two:2},"خطا در تغییر وضعیت سفارش مشتری"),Y=e=>Q(e,"sts_verify_step_two"),k=j({open:!1,saving:!1,id:"",step:"sts_verify_step_one",reason:""});function Q(e,n){k.value={open:!0,saving:!1,id:e,step:n,reason:""}}async function ie(){const e=k.value;e.saving=!0,await B({customer_id:e.id,[e.step]:3,reason:e.reason.trim()||null},e.step==="sts_verify_step_one"?"خطا در تغییر وضعیت اولیه مشتری":"خطا در تغییر وضعیت سفارش مشتری"),e.saving=!1,e.open=!1}function ae(e){return e.sts_verify_step_one===1?U(e.id):e.sts_verify_step_one===2?F(e.id):U(e.id)}function le(e){if(e.sts_verify_step_one===1)return F(e.id)}function re(e){return e.sts_verify_step_two===1?X(e.id):e.sts_verify_step_two===2?Y(e.id):X(e.id)}function ce(e){if(e.sts_verify_step_two===1)return Y(e.id)}async function ue(e){var n;try{await $.post("customer/toggle-active",{id:e.id}),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در تغییر وضعیت")}}async function de(e){var n;try{await $.post("customer/toggle-sts",{id:e.id,sts:e.sts}),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در تغییر وضعیت")}}async function fe(e){var n;try{await $.get(`major/archive/${e}`),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در بایگانی")}}function _e(e){u.showAddButton?(D.value=e,I.value=!0):f.push(`/bulkCustomer/edit/${e}`)}function me(){D.value=void 0,I.value=!0}function pe(e){f.push(`/bulkCustomer/view/${e}`)}function ve(e){f.push(`/bulkCustomer/view/${e.id}?tab=orders`)}function ye(e){f.push(`/bulkCustomer/view/${e.id}?tab=documents`)}return(e,n)=>{const m=C("a-tag"),E=C("a-tooltip"),g=C("a-menu-item"),O=C("a-popconfirm"),we=C("a-menu"),ge=C("a-dropdown"),Ce=C("a-textarea"),xe=C("a-modal"),he=C("a-card");return d(),b("div",Qe,[a(he,{title:c.title,class:"page-card"},q({default:o(()=>[S.value&&S.value.count&&S.value.total?(d(),b("div",qe,[A(v(S.value.total)+" رکورد یافت شد - ",1),l("span",Ge,v(S.value.count)+" رکورد غیر فعال",1)])):w("",!0),a(Me,{ref_key:"tbl",ref:h,model:c.model,"mobile-cards":"",onQuery:W},q({city:o(({record:t})=>[t.city&&t.city.title?(d(),b("div",Je,v(t.city.title),1)):(d(),b("div",We,"-"))]),sts:o(({record:t})=>[a(m,{color:t.sts===1?"green":"red"},{default:o(()=>[A(v(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[a(m,{color:t.active===1?"green":"red"},{default:o(()=>[A(v(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[l("div",Ke,[a(ge,null,{overlay:o(()=>[a(we,{onClick:i=>ne(i,t.id)},{default:o(()=>[s("persons.list.client.omde.edit")?(d(),p(g,{key:"1",onClick:i=>_e(t.id)},{default:o(()=>[l("div",tt,[a(y(je),{class:"cursor-pointer w-5 ml-1"}),n[5]||(n[5]=l("div",null,"ویرایش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view")?(d(),p(g,{key:"2",onClick:i=>pe(t.id)},{default:o(()=>[l("div",nt,[a(y(Ie),{class:"cursor-pointer w-5 ml-1"}),n[6]||(n[6]=l("div",null,"مشاهده اطلاعات",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.orders")?(d(),p(g,{key:"3",onClick:i=>ve(t)},{default:o(()=>[l("div",st,[a(y(Re),{class:"cursor-pointer w-5 ml-1"}),n[7]||(n[7]=l("div",null,"مشاهده سفارش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.documents")?(d(),p(g,{key:"4",onClick:i=>ye(t)},{default:o(()=>[l("div",ot,[a(y(De),{class:"cursor-pointer w-5 ml-1"}),n[8]||(n[8]=l("div",null,"سند های مالی",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{key:"7"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>fe(t.id)},{default:o(()=>[l("div",it,[a(y(L),{class:"cursor-pointer w-5 ml-1"}),n[9]||(n[9]=l("div",null,"بایگانی کردن",-1))])]),_:1},8,["onConfirm"])]),_:2},1024)):w("",!0),a(g,{key:"8"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_one===1?"تایید":"بله","cancel-text":t.sts_verify_step_one===1?"رد":"خیر",title:t.sts_verify_step_one===1?"وضعیت تایید اولیه مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت مشتری اطمینان دارید؟",onConfirm:i=>ae(t),onCancel:i=>le(t)},{default:o(()=>[l("div",at,[(d(),p(N(z(V(t))),{class:T(["cursor-pointer w-5 ml-1",R(V(t))])},null,8,["class"])),l("div",null,[l("div",null,v(se(t)),1),t.verificationStep==="REJECTED"?(d(),b("div",lt," رد شده"+v(t.verification_rejection_reason?`: ${t.verification_rejection_reason}`:""),1)):w("",!0)])])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1024),a(g,{disabled:t.sts_verify_step_one!==2,key:"9"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_two===1?"تایید":"بله","cancel-text":t.sts_verify_step_two===1?"رد":"خیر",title:t.sts_verify_step_two===1?"وضعیت تایید سفارش مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت سفارش مشتری اطمینان دارید؟",onConfirm:i=>re(t),onCancel:i=>ce(t)},{default:o(()=>[l("div",rt,[(d(),p(N(z(P(t))),{class:T(["cursor-pointer w-5 ml-1",R(P(t))])},null,8,["class"])),l("div",null,v(oe(t)),1)])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1032,["disabled"]),s("persons.list.client.omde.able.order")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"5"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>de(t)},{default:o(()=>[l("div",ct,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.sts===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.sts===1?"معلق کردن سفارش":"فعال کردن سفارش"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"6"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>ue(t)},{default:o(()=>[l("div",ut,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.active===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.active===1?"معلق کردن حساب کاربری":" فعال کردن حساب کاربری"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0)]),_:2},1032,["onClick"])]),default:o(()=>[l("div",et,[a(y(Te)),a(y(ze),{class:"cursor-pointer w-5 ml-1"})])]),_:2},1024)])]),_:2},[c.showAddButton?{name:"add",fn:o(()=>[a(Le,{rid:"persons.create.client","add-label":"افزودن مشتری عمده",onAdd:me})]),key:"0"}:void 0,Ne(Z,t=>({name:t.slot,fn:o(({record:i})=>[i[t.field]===null||i[t.field]===void 0?(d(),b("span",Ze,"—")):(d(),p(E,{key:1,title:i.acc_at?`به‌روزرسانی: ${te(i.acc_at)}`:void 0},{default:o(()=>[l("span",{class:T(K(i[t.field]))},v(ee(i[t.field],t.places)),3)]),_:2},1032,["title"]))])}))]),1032,["model"]),a(xe,{open:k.value.open,title:"رد مدارک مشتری","ok-text":"ثبت رد","cancel-text":"انصراف","ok-button-props":{danger:!0},"confirm-loading":k.value.saving,onOk:ie,onCancel:n[2]||(n[2]=t=>k.value.open=!1)},{default:o(()=>[n[10]||(n[10]=l("p",null,"دلیل رد (اختیاری) — در پرونده‌ی مشتری ثبت می‌شود.",-1)),a(Ce,{value:k.value.reason,"onUpdate:value":n[1]||(n[1]=t=>k.value.reason=t),rows:3,maxlength:500,placeholder:"مثلاً: تصویر کارت ملی خوانا نیست"},null,8,["value"])]),_:1},8,["open","confirm-loading"]),c.showAddButton?(d(),p(Pe,{key:D.value??"new","as-modal":"",open:I.value,id:D.value,"onUpdate:open":n[3]||(n[3]=t=>I.value=t),onSuccess:n[4]||(n[4]=t=>{var i;return(i=h.value)==null?void 0:i.fetch()})},null,8,["open","id"])):w("",!0)]),_:2},[c.accountingSync?{name:"extra",fn:o(()=>[a(Ve,{endpoint:"admin/customers-omde/accounting-sync",onDone:n[0]||(n[0]=t=>{var i;return(i=h.value)==null?void 0:i.fetch()})})]),key:"0"}:void 0]),1032,["title"])])}}}),xt=Ae(dt,[["__scopeId","data-v-287c42bd"]]);export{Xe as O,xt as a,Ct as b}; diff --git a/apps/admin-panel/dist/assets/OmdeCustomerList-c6FcwBcS.js b/apps/admin-panel/dist/assets/OmdeCustomerList-c6FcwBcS.js deleted file mode 100644 index aa417e2..0000000 --- a/apps/admin-panel/dist/assets/OmdeCustomerList-c6FcwBcS.js +++ /dev/null @@ -1 +0,0 @@ -import{m as ke}from"./index-BAamWbCu.js";import{c as a,I as Se,u as J,d as be,x as Oe,y as $,z as $e,b,aj as q,w as o,r as C,o as d,f as A,t as v,p as l,i as w,h as y,Z as Te,a as p,E as je,Q as Ie,S as De,q as T,g as N,W as H,e as Ne,m as j,ak as Be,G as h,l as Ee,_ as Ae}from"./index-DajPj7Ec.js";import{a as He,b as r,X as Me}from"./model-CR-NjhTP.js";import{_ as Le}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import{_ as Ve}from"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js";import{_ as Pe}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js";import{S as ze}from"./SettingOutlined-BBdK6RkP.js";import{U as Re,S as M}from"./UnorderedListOutlined-B6W9NsW_.js";var Ue={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-download",theme:"outlined"};function G(c){for(var u=1;u_.key==="acc_remain"))return;const f=c.cols.findIndex(_=>_.key==="rial_remain");for(const _ of c.cols)_.key==="remain"&&(_.title="بدهی داخل اپ (گرم)"),_.key==="rial_remain"&&(_.title="بدهی داخل اپ (ریال)");c.cols.splice(f+1,0,new r("acc_remain",`مانده‌ی ${u} (گرم)`).filterNumber().renderSlot("acc_gold"),new r("acc_rial_remain",`مانده‌ی ${u} (ریال)`).filterNumber().renderSlot("acc_rial"))}const Qe={id:"page-user-list"},qe={key:0,class:"list-count"},Ge={class:"text-danger"},Je={key:0},We={key:1},Ze={key:0,class:"acc-none"},Ke={class:"flex"},et={class:"cursor-pointer flex items-center"},tt={class:"flex gap-2"},nt={class:"flex gap-2"},st={class:"flex gap-2"},ot={class:"flex gap-2"},it={class:"flex gap-2"},at={class:"flex gap-2"},lt={key:0,class:"text-danger text-xs"},rt={class:"flex gap-2"},ct={class:"flex gap-2"},ut={class:"flex gap-2"},dt=be({__name:"OmdeCustomerList",props:{title:{},model:{},showAddButton:{type:Boolean,default:!1},accountingSync:{type:Boolean,default:!1}},setup(c){const u=c,f=Ee(),_=J(),s=e=>!!_.hasPermission(e),x=j(null),I=j(!1),D=j(void 0),S=j(void 0);function W(e){const n=e;S.value={count:n&&n.count?n.count:void 0,total:n&&n.total?n.total:void 0}}const Z=[{slot:"acc_gold",field:"acc_remain",places:3},{slot:"acc_rial",field:"acc_rial_remain",places:0}],K=e=>Number(e)>0?"acc-debt":Number(e)<0?"acc-credit":"";function ee(e,n){const m=Number(e);return m?`${Math.abs(m).toLocaleString("fa-IR",{maximumFractionDigits:n})} ${m>0?"بدهکار":"بستانکار"}`:"۰"}const te=e=>ke(e).format("jYYYY/jMM/jDD HH:mm");Oe(async()=>{try{const{data:e}=await $.get("admin/accounting-status");e!=null&&e.connected&&e.provider&&Ye($e(u.model),e.provider)}catch{}});function ne(e,n){const m=String(e.key);return m==="5"||m==="6"||m==="7"||m==="8"||m==="9"}function se(e){switch(e.sts_verify_step_one){case 1:return"در انتظار تایید ورود مشتری";case 2:return"رد ورود مشتری";case 3:return"تایید ورود مشتری"}}function V(e){switch(e.sts_verify_step_one){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function oe(e){switch(e.sts_verify_step_two){case 1:return"در انتظار فعال سازی";case 2:return"غیر فعال سازی";case 3:return"فعال سازی"}}function P(e){switch(e.sts_verify_step_two){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function z(e){return e==="HelpCircleIcon"?Be:e==="CheckIcon"?H:M}function R(e){return e==="HelpCircleIcon"?"text-primary":e==="CheckIcon"?"text-success":"text-danger"}async function B(e,n){var m;try{await $.post("major/verify",e),h.info("تغییرات ثبت شد "),(m=x.value)==null||m.fetch()}catch{h.error(n)}}const U=e=>B({customer_id:e,sts_verify_step_one:2},"خطا در تغییر وضعیت اولیه مشتری"),F=e=>Q(e,"sts_verify_step_one"),X=e=>B({customer_id:e,sts_verify_step_two:2},"خطا در تغییر وضعیت سفارش مشتری"),Y=e=>Q(e,"sts_verify_step_two"),k=j({open:!1,saving:!1,id:"",step:"sts_verify_step_one",reason:""});function Q(e,n){k.value={open:!0,saving:!1,id:e,step:n,reason:""}}async function ie(){const e=k.value;e.saving=!0,await B({customer_id:e.id,[e.step]:3,reason:e.reason.trim()||null},e.step==="sts_verify_step_one"?"خطا در تغییر وضعیت اولیه مشتری":"خطا در تغییر وضعیت سفارش مشتری"),e.saving=!1,e.open=!1}function ae(e){return e.sts_verify_step_one===1?U(e.id):e.sts_verify_step_one===2?F(e.id):U(e.id)}function le(e){if(e.sts_verify_step_one===1)return F(e.id)}function re(e){return e.sts_verify_step_two===1?X(e.id):e.sts_verify_step_two===2?Y(e.id):X(e.id)}function ce(e){if(e.sts_verify_step_two===1)return Y(e.id)}async function ue(e){var n;try{await $.post("customer/toggle-active",{id:e.id}),h.info("تغییرات ثبت شد "),await((n=x.value)==null?void 0:n.fetch())}catch{h.error("خطا در تغییر وضعیت")}}async function de(e){var n;try{await $.post("customer/toggle-sts",{id:e.id,sts:e.sts}),h.info("تغییرات ثبت شد "),await((n=x.value)==null?void 0:n.fetch())}catch{h.error("خطا در تغییر وضعیت")}}async function fe(e){var n;try{await $.get(`major/archive/${e}`),h.info("تغییرات ثبت شد "),await((n=x.value)==null?void 0:n.fetch())}catch{h.error("خطا در بایگانی")}}function _e(e){u.showAddButton?(D.value=e,I.value=!0):f.push(`/bulkCustomer/edit/${e}`)}function me(){D.value=void 0,I.value=!0}function pe(e){f.push(`/bulkCustomer/view/${e}`)}function ve(e){f.push(`/bulkCustomer/view/${e.id}?tab=orders`)}function ye(e){f.push(`/bulkCustomer/view/${e.id}?tab=documents`)}return(e,n)=>{const m=C("a-tag"),E=C("a-tooltip"),g=C("a-menu-item"),O=C("a-popconfirm"),we=C("a-menu"),ge=C("a-dropdown"),Ce=C("a-textarea"),he=C("a-modal"),xe=C("a-card");return d(),b("div",Qe,[a(xe,{title:c.title,class:"page-card"},q({default:o(()=>[S.value&&S.value.count&&S.value.total?(d(),b("div",qe,[A(v(S.value.total)+" رکورد یافت شد - ",1),l("span",Ge,v(S.value.count)+" رکورد غیر فعال",1)])):w("",!0),a(Me,{ref_key:"tbl",ref:x,model:c.model,"mobile-cards":"",onQuery:W},q({city:o(({record:t})=>[t.city&&t.city.title?(d(),b("div",Je,v(t.city.title),1)):(d(),b("div",We,"-"))]),sts:o(({record:t})=>[a(m,{color:t.sts===1?"green":"red"},{default:o(()=>[A(v(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[a(m,{color:t.active===1?"green":"red"},{default:o(()=>[A(v(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[l("div",Ke,[a(ge,null,{overlay:o(()=>[a(we,{onClick:i=>ne(i,t.id)},{default:o(()=>[s("persons.list.client.omde.edit")?(d(),p(g,{key:"1",onClick:i=>_e(t.id)},{default:o(()=>[l("div",tt,[a(y(je),{class:"cursor-pointer w-5 ml-1"}),n[5]||(n[5]=l("div",null,"ویرایش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view")?(d(),p(g,{key:"2",onClick:i=>pe(t.id)},{default:o(()=>[l("div",nt,[a(y(Ie),{class:"cursor-pointer w-5 ml-1"}),n[6]||(n[6]=l("div",null,"مشاهده اطلاعات",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.orders")?(d(),p(g,{key:"3",onClick:i=>ve(t)},{default:o(()=>[l("div",st,[a(y(Re),{class:"cursor-pointer w-5 ml-1"}),n[7]||(n[7]=l("div",null,"مشاهده سفارش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.documents")?(d(),p(g,{key:"4",onClick:i=>ye(t)},{default:o(()=>[l("div",ot,[a(y(De),{class:"cursor-pointer w-5 ml-1"}),n[8]||(n[8]=l("div",null,"سند های مالی",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{key:"7"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>fe(t.id)},{default:o(()=>[l("div",it,[a(y(L),{class:"cursor-pointer w-5 ml-1"}),n[9]||(n[9]=l("div",null,"بایگانی کردن",-1))])]),_:1},8,["onConfirm"])]),_:2},1024)):w("",!0),a(g,{key:"8"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_one===1?"تایید":"بله","cancel-text":t.sts_verify_step_one===1?"رد":"خیر",title:t.sts_verify_step_one===1?"وضعیت تایید اولیه مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت مشتری اطمینان دارید؟",onConfirm:i=>ae(t),onCancel:i=>le(t)},{default:o(()=>[l("div",at,[(d(),p(N(z(V(t))),{class:T(["cursor-pointer w-5 ml-1",R(V(t))])},null,8,["class"])),l("div",null,[l("div",null,v(se(t)),1),t.verificationStep==="REJECTED"?(d(),b("div",lt," رد شده"+v(t.verification_rejection_reason?`: ${t.verification_rejection_reason}`:""),1)):w("",!0)])])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1024),a(g,{disabled:t.sts_verify_step_one!==2,key:"9"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_two===1?"تایید":"بله","cancel-text":t.sts_verify_step_two===1?"رد":"خیر",title:t.sts_verify_step_two===1?"وضعیت تایید سفارش مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت سفارش مشتری اطمینان دارید؟",onConfirm:i=>re(t),onCancel:i=>ce(t)},{default:o(()=>[l("div",rt,[(d(),p(N(z(P(t))),{class:T(["cursor-pointer w-5 ml-1",R(P(t))])},null,8,["class"])),l("div",null,v(oe(t)),1)])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1032,["disabled"]),s("persons.list.client.omde.able.order")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"5"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>de(t)},{default:o(()=>[l("div",ct,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.sts===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.sts===1?"معلق کردن سفارش":"فعال کردن سفارش"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"6"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>ue(t)},{default:o(()=>[l("div",ut,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.active===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.active===1?"معلق کردن حساب کاربری":" فعال کردن حساب کاربری"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0)]),_:2},1032,["onClick"])]),default:o(()=>[l("div",et,[a(y(Te)),a(y(ze),{class:"cursor-pointer w-5 ml-1"})])]),_:2},1024)])]),_:2},[c.showAddButton?{name:"add",fn:o(()=>[a(Le,{rid:"persons.create.client","add-label":"افزودن مشتری عمده",onAdd:me})]),key:"0"}:void 0,Ne(Z,t=>({name:t.slot,fn:o(({record:i})=>[i[t.field]===null||i[t.field]===void 0?(d(),b("span",Ze,"—")):(d(),p(E,{key:1,title:i.acc_at?`به‌روزرسانی: ${te(i.acc_at)}`:void 0},{default:o(()=>[l("span",{class:T(K(i[t.field]))},v(ee(i[t.field],t.places)),3)]),_:2},1032,["title"]))])}))]),1032,["model"]),a(he,{open:k.value.open,title:"رد مدارک مشتری","ok-text":"ثبت رد","cancel-text":"انصراف","ok-button-props":{danger:!0},"confirm-loading":k.value.saving,onOk:ie,onCancel:n[2]||(n[2]=t=>k.value.open=!1)},{default:o(()=>[n[10]||(n[10]=l("p",null,"دلیل رد (اختیاری) — در پرونده‌ی مشتری ثبت می‌شود.",-1)),a(Ce,{value:k.value.reason,"onUpdate:value":n[1]||(n[1]=t=>k.value.reason=t),rows:3,maxlength:500,placeholder:"مثلاً: تصویر کارت ملی خوانا نیست"},null,8,["value"])]),_:1},8,["open","confirm-loading"]),c.showAddButton?(d(),p(Pe,{key:D.value??"new","as-modal":"",open:I.value,id:D.value,"onUpdate:open":n[3]||(n[3]=t=>I.value=t),onSuccess:n[4]||(n[4]=t=>{var i;return(i=x.value)==null?void 0:i.fetch()})},null,8,["open","id"])):w("",!0)]),_:2},[c.accountingSync?{name:"extra",fn:o(()=>[a(Ve,{endpoint:"admin/customers-omde/accounting-sync",onDone:n[0]||(n[0]=t=>{var i;return(i=x.value)==null?void 0:i.fetch()})})]),key:"0"}:void 0]),1032,["title"])])}}}),ht=Ae(dt,[["__scopeId","data-v-287c42bd"]]);export{Xe as O,ht as a,Ct as b}; diff --git a/apps/admin-panel/dist/assets/OmdeList-CEBt8LxW.js b/apps/admin-panel/dist/assets/OmdeList-CEBt8LxW.js deleted file mode 100644 index 1469fbc..0000000 --- a/apps/admin-panel/dist/assets/OmdeList-CEBt8LxW.js +++ /dev/null @@ -1 +0,0 @@ -import{b as i,O as r,a as e}from"./OmdeCustomerList-c6FcwBcS.js";import{d as p,a as s,h as t,o as a}from"./index-DajPj7Ec.js";import"./index-BAamWbCu.js";import"./model-CR-NjhTP.js";import"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./DateInput-CSLG7sxn.js";import"./UserOutlined-CzruAWCH.js";import"./ShopOutlined-MoIbCAG4.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./PercentageOutlined-D8KYbn5o.js";import"./SafetyCertificateOutlined-DSk-s9OX.js";import"./UnorderedListOutlined-B6W9NsW_.js";const U=p({__name:"OmdeList",setup(n){const o=r.omde.title,m=i("omde");return(l,c)=>(a(),s(e,{title:t(o),model:t(m),"accounting-sync":""},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OmdeList-CF36um8c.css b/apps/admin-panel/dist/assets/OmdeList-CF36um8c.css deleted file mode 100644 index 599e7fd..0000000 --- a/apps/admin-panel/dist/assets/OmdeList-CF36um8c.css +++ /dev/null @@ -1 +0,0 @@ -.flex-col[data-v-e8d94314]{flex-direction:column}.flex-1[data-v-e8d94314]{flex:1}.mr-3[data-v-e8d94314]{margin-left:.75rem} diff --git a/apps/admin-panel/dist/assets/OmdeList-D6Hbka2-.css b/apps/admin-panel/dist/assets/OmdeList-D6Hbka2-.css new file mode 100644 index 0000000..de8dad1 --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeList-D6Hbka2-.css @@ -0,0 +1 @@ +.flex-col[data-v-6331c401]{flex-direction:column}.flex-1[data-v-6331c401]{flex:1}.justify-between[data-v-6331c401]{justify-content:space-between}.mr-3[data-v-6331c401]{margin-left:.75rem} diff --git a/apps/admin-panel/dist/assets/OmdeList-D7WY5ylW.js b/apps/admin-panel/dist/assets/OmdeList-D7WY5ylW.js new file mode 100644 index 0000000..565089a --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeList-D7WY5ylW.js @@ -0,0 +1 @@ +import{u as A,d as z,b as v,c as m,w as o,r as R,o as u,h as Z,f as y,t as S,H as ee,i as C,p as E,a as O,F as $,m as f,s as te,G as d,y as g,_ as ae}from"./index-eLNLLYwC.js";import{a as re,b as c,X as ie}from"./model-btNVLLyF.js";import{_ as q}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js";import{O as se,a as oe}from"./OrderStatusTimeline-Dm95hywe.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./icons-DaMkWfMK.js";import"./UnorderedListOutlined-cPIiOEaQ.js";import"./PercentageOutlined-DyprS4lh.js";import"./UserAddOutlined-GWNEdhY8.js";import"./CreditCardOutlined-CcvN7g1Z.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./TeamOutlined-Bx4ezhPp.js";import"./UserOutlined-B4M5rNrX.js";import"./CameraOutlined-CFYC5ScW.js";import"./PictureOutlined-BQUWPT2c.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";function ne(){const k=A();Object.keys(k.cityFilters).length<1&&k.getCities();const n=new re("admin/orders/wholesale/list","لیست سفارش های عمده");return n.add(new c("id","شماره").filterNumber()),n.add(new c("customer.name","مشتری").filterKey("customer.fullName").filterText()),n.add(new c("customer.mobile","موبایل").filterText().hidden().noSort()),n.add(new c("input","جمع کل سفارش").filterKey("totalGoldWeightGrams").filterText()),n.add(new c("discount","جمع کل تخفیف (درصد)").filterText()),n.add(new c("customer.city_id","شهر").hidden().renderSlot("city")),n.add(new c("items","تعداد آیتم ها").renderSlot("items_len").noSort()),n.add(new c("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),n.add(new c("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),k.roles&&k.roles.includes("order.omde.state")&&n.add(new c("sts","وضعیت").renderSlot("sts_str").noSort().filterKey("status").filterSelect({0:"معلق",1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی ",5:"تحویل مسئول فروش",6:"تحویل مشتری "})),n.add(new c("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),n.add(new c("opt","عملیات").noSort().renderSlot("opt")),n}const le={id:"page-user-list"},de={key:0},ue={key:1},ce={class:"flex"},me={key:0},ve=["onClick"],fe={key:1},pe={class:"flex justify-between flex-wrap gap-2"},ye={class:"flex gap-2 flex-wrap"},we=z({__name:"OmdeList",setup(k){const n=A(),_=a=>!!n.hasPermission(a),B=ne(),w=f(null),r=f(void 0),x=f(""),I=f(!1),h=f(!1),p=f(!1),T=f(!1),P=f(""),V=f(1),N=te(()=>_("order.omde.view.edit"));function D(a){return n.cityFilters[a]??"-"}async function b(a){const{data:e}=await g.get(`admin/orders/${a}`);return e}async function U(a){r.value=await b(a.id),x.value=JSON.stringify(r.value),p.value=!1,I.value=!0}function G(){I.value=!1,p.value=!1}function K(){if(x.value)try{r.value=JSON.parse(x.value)}catch{}p.value=!1}function j(a){var e;if((e=r.value)!=null&&e.items){if(r.value.items.length<=1){d.warning("حداقل یک آیتم باید در سفارش بماند");return}r.value.items.splice(a,1)}}function F(a){const e=a.variantId.trim();if(!e){d.warning("یک تنوع انتخاب کنید");return}r.value&&(r.value.items.push({productVariantId:e,title:a.title??"آیتم جدید",variant_title:a.variantTitle??e,qty:a.qty||1,grams:a.grams??0,flatRialCharge:a.flatRialCharge??0,wagePercent:a.wagePercent,rash:a.grams??0,image:a.image??null}),P.value="",V.value=1)}async function M(){var e,i,s,l;if(!((e=r.value)!=null&&e.id))return;const a=(r.value.items??[]).filter(t=>t.productVariantId).map(t=>({productVariantId:t.productVariantId,quantity:Number(t.qty)||1,grams:Number(t.grams)||void 0,flatRialCharge:Number(t.flatRialCharge)||0,rashWeightGrams:t.rash!=null?Number(t.rash):void 0,wagePercent:t.wagePercent!=null?Number(t.wagePercent):void 0,discountPercent:t.discountPercent!=null?Number(t.discountPercent):void 0}));if(!a.length){d.error("حداقل یک آیتم لازم است");return}T.value=!0;try{await g.post("admin/orders/edit/propose",{orderId:r.value.id,items:a}),d.success("پیشنهاد ویرایش ثبت شد؛ پیامک برای مشتری ارسال می‌شود"),p.value=!1,r.value=await b(r.value.id),x.value=JSON.stringify(r.value),(i=w.value)==null||i.fetch()}catch(t){d.error(((l=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:l.message)??"خطا در ثبت ویرایش")}finally{T.value=!1}}async function X(){var a,e,i,s;if((a=r.value)!=null&&a.id)try{await g.post("admin/orders/edit/force-apply",{orderId:r.value.id}),d.success("ویرایش به‌صورت اجباری اعمال شد"),r.value=await b(r.value.id),(e=w.value)==null||e.fetch()}catch(l){d.error(((s=(i=l==null?void 0:l.response)==null?void 0:i.data)==null?void 0:s.message)??"خطا در اعمال")}}async function J(){var a,e,i,s;if((a=r.value)!=null&&a.id)try{await g.post("admin/orders/edit/discard",{orderId:r.value.id}),d.success("پیشنهاد ویرایش لغو شد"),r.value=await b(r.value.id),(e=w.value)==null||e.fetch()}catch(l){d.error(((s=(i=l==null?void 0:l.response)==null?void 0:i.data)==null?void 0:s.message)??"خطا در لغو")}}async function W(a){r.value=await b(a.id),h.value=!0}async function H(a){var e,i;try{await g.post("order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note}),h.value=!1,d.info("ویرایش موفق آمیز"),(i=w.value)==null||i.fetch()}catch{d.error("خطا در ویرایش")}}async function Q(a){var e,i,s,l;try{await g.post("order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,remove:!0}),h.value=!1,d.info("ویرایش موفق آمیز"),(i=w.value)==null||i.fetch()}catch(t){d.error(((l=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:l.message)??"خطا در ویرایش")}}function Y(a){g.post("delete-order",{id:a.id}).then(()=>{var e;d.info("سفارش با موفقیت حذف گردید"),(e=w.value)==null||e.fetch()}).catch(e=>{var i,s;console.log(e),d.error(((s=(i=e==null?void 0:e.response)==null?void 0:i.data)==null?void 0:s.message)??"خطا در حذف")})}return(a,e)=>{const i=R("a-button"),s=R("a-modal"),l=R("a-card");return u(),v("div",le,[m(l,{title:"لیست سفارش های عمده",class:"page-card"},{default:o(()=>[m(ie,{ref_key:"tbl",ref:w,model:Z(B),"mobile-cards":""},{city:o(({text:t})=>[t?(u(),v("div",de,S(D(t)),1)):(u(),v("div",ue,"-"))]),opt:o(({record:t})=>[E("div",ce,[_("order.omde.view")?(u(),O(q,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:L=>U(t)},null,8,["onClick"])):C("",!0),_("order.omde.remove")?(u(),O(q,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon",title:"حذف","pop-title":"آیا مطمئن به حدف رکورد مورد نظر هستید؟",onClick:L=>Y(t)},null,8,["onClick"])):C("",!0)])]),items_len:o(({text:t})=>[t?(u(),v("div",me,S(t.length),1)):C("",!0)]),sts_str:o(({record:t})=>[_("order.omde.state")?(u(),v("a",{key:0,href:"",onClick:ee(L=>W(t),["prevent"])},S(t.sts_str),9,ve)):(u(),v("span",fe,S(t.sts_str),1))]),confirmed_str:o(({record:t})=>[y(S(t.confirmed_str),1)]),_:1},8,["model"]),m(s,{open:h.value,"onUpdate:open":e[1]||(e[1]=t=>h.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:o(()=>[m(i,{onClick:e[0]||(e[0]=t=>h.value=!1)},{default:o(()=>[...e[6]||(e[6]=[y("بستن",-1)])]),_:1})]),default:o(()=>[r.value?(u(),O(se,{key:0,activity:r.value.activity||[],"can-submit":_("order.omde.state.submit"),"can-remove":_("order.omde.state.remove"),onSubmit:H,onRemove:Q},null,8,["activity","can-submit","can-remove"])):C("",!0)]),_:1},8,["open"]),m(s,{open:I.value,"onUpdate:open":e[5]||(e[5]=t=>I.value=t),title:"مشاهده سفارش",width:p.value&&N.value?1120:760,"wrap-class-name":"detail-modal order-detail-modal","body-style":{maxHeight:"78vh",overflowY:"auto"}},{footer:o(()=>{var t;return[E("div",pe,[m(i,{onClick:G},{default:o(()=>[...e[7]||(e[7]=[y("بستن",-1)])]),_:1}),E("div",ye,[((t=r.value)==null?void 0:t.revisionStatus)==="AWAITING_CUSTOMER"&&N.value?(u(),v($,{key:0},[m(i,{onClick:J},{default:o(()=>[...e[8]||(e[8]=[y("لغو پیشنهاد",-1)])]),_:1}),m(i,{type:"primary",danger:"",onClick:X},{default:o(()=>[...e[9]||(e[9]=[y("اعمال اجباری",-1)])]),_:1})],64)):N.value?(u(),v($,{key:1},[p.value?(u(),v($,{key:1},[m(i,{onClick:K},{default:o(()=>[...e[11]||(e[11]=[y("انصراف",-1)])]),_:1}),m(i,{type:"primary",danger:"",loading:T.value,onClick:M},{default:o(()=>[...e[12]||(e[12]=[y(" ارسال برای تأیید مشتری ",-1)])]),_:1},8,["loading"])],64)):(u(),O(i,{key:0,type:"primary",onClick:e[4]||(e[4]=L=>p.value=!0)},{default:o(()=>[...e[10]||(e[10]=[y("شروع ویرایش",-1)])]),_:1}))],64)):C("",!0)])])]}),default:o(()=>[m(oe,{order:r.value,"edit-mode":p.value&&N.value,"add-variant-id":P.value,"onUpdate:addVariantId":e[2]||(e[2]=t=>P.value=t),"add-qty":V.value,"onUpdate:addQty":e[3]||(e[3]=t=>V.value=t),onRemoveLine:j,onAddLine:F},null,8,["order","edit-mode","add-variant-id","add-qty"])]),_:1},8,["open","width"])]),_:1})])}}}),qe=ae(we,[["__scopeId","data-v-6331c401"]]);export{qe as default}; diff --git a/apps/admin-panel/dist/assets/OmdeList-DH-oJpv0.js b/apps/admin-panel/dist/assets/OmdeList-DH-oJpv0.js deleted file mode 100644 index d30b473..0000000 --- a/apps/admin-panel/dist/assets/OmdeList-DH-oJpv0.js +++ /dev/null @@ -1 +0,0 @@ -import{u as X,d as Y,b as c,c as s,w as o,r as m,o as n,h as Z,f as d,t as l,H as ee,i as p,p as b,a as k,F as U,e as F,m as j,y as L,G as h,_ as te}from"./index-DajPj7Ec.js";import{a as oe,b as _,X as se}from"./model-CR-NjhTP.js";import{_ as V}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js";import{j as ae}from"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./icons-DiNnR1E8.js";import"./UnorderedListOutlined-B6W9NsW_.js";import"./PercentageOutlined-D8KYbn5o.js";import"./UserAddOutlined-tCWSfp_Y.js";import"./CreditCardOutlined-H5cAFLTI.js";import"./AppstoreOutlined-BPqrCmxh.js";import"./TeamOutlined-DPoMD9pK.js";import"./UserOutlined-CzruAWCH.js";import"./CameraOutlined-B6nXMt0y.js";import"./index-BAamWbCu.js";function ne(){const g=X();Object.keys(g.cityFilters).length<1&&g.getCities();const r=new oe("admin/orders/wholesale/list","لیست سفارش های عمده");return r.add(new _("id","شماره").filterNumber()),r.add(new _("customer.name","مشتری").filterKey("customer.fullName").filterText()),r.add(new _("customer.mobile","موبایل").filterText().hidden().noSort()),r.add(new _("input","جمع کل سفارش").filterKey("totalGoldWeightGrams").filterText()),r.add(new _("discount","جمع کل تخفیف (درصد)").filterText()),r.add(new _("customer.city_id","شهر").hidden().renderSlot("city")),r.add(new _("items","تعداد آیتم ها").renderSlot("items_len").noSort()),r.add(new _("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),r.add(new _("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),g.roles&&g.roles.includes("order.omde.state")&&r.add(new _("sts","وضعیت").renderSlot("sts_str").noSort().filterKey("status").filterSelect({0:"معلق",1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی ",5:"تحویل مسئول فروش",6:"تحویل مشتری "})),r.add(new _("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),r.add(new _("opt","عملیات").noSort().renderSlot("opt")),r}const le={id:"page-user-list"},re={key:0},ie={key:1},de={class:"flex"},ue={key:0},ce=["onClick"],me={key:1},_e={class:"flex flex-col"},fe={key:0},pe={class:"flex"},ve={class:"flex-1"},ye={key:1,class:"flex items-center"},ke={key:2},we={key:0},be=Y({__name:"OmdeList",setup(g){const r=X(),S=a=>!!r.hasPermission(a),G=ne(),x=j(null),i=j(void 0),$=j(!1),w=j(!1),O=a=>a?ae(a):"";function z(a){return r.cityFilters[a]??"-"}function A(a){return a.proceed?"green":"gray"}async function B(a){const{data:t}=await L.get(`admin/orders/${a}`);return t}async function M(a){i.value=await B(a.id),$.value=!0}async function P(a){i.value=await B(a.id),w.value=!0}async function q(a){var t,u;try{await L.post("order-sts/edit",{orderId:(t=i.value)==null?void 0:t.id,status:a.status,note:a.note}),w.value=!1,h.info("ویرایش موفق آمیز"),(u=x.value)==null||u.fetch()}catch{h.error("خطا در ویرایش")}}async function E(a){var t,u,f,T;try{await L.post("order-sts/edit",{orderId:(t=i.value)==null?void 0:t.id,status:a.status,remove:!0}),w.value=!1,h.info("ویرایش موفق آمیز"),(u=x.value)==null||u.fetch()}catch(C){h.error(((T=(f=C==null?void 0:C.response)==null?void 0:f.data)==null?void 0:T.message)??"خطا در ویرایش")}}function H(a){L.post("delete-order",{id:a.id}).then(()=>{var t;h.info("سفارش با موفقیت حذف گردید"),(t=x.value)==null||t.fetch()}).catch(t=>{var u,f;console.log(t),h.error(((f=(u=t==null?void 0:t.response)==null?void 0:u.data)==null?void 0:f.message)??"خطا در حذف")})}return(a,t)=>{const u=m("a-tag"),f=m("a-button"),T=m("a-popconfirm"),C=m("a-input"),R=m("a-timeline-item"),W=m("a-timeline"),D=m("a-modal"),v=m("a-descriptions-item"),I=m("a-descriptions"),J=m("a-divider"),K=m("a-card"),Q=m("a-empty");return n(),c("div",le,[s(K,{title:"لیست سفارش های عمده",class:"page-card"},{default:o(()=>[s(se,{ref_key:"tbl",ref:x,model:Z(G),"mobile-cards":""},{city:o(({text:e})=>[e?(n(),c("div",re,l(z(e)),1)):(n(),c("div",ie,"-"))]),opt:o(({record:e})=>[b("div",de,[S("order.omde.view")?(n(),k(V,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:y=>M(e)},null,8,["onClick"])):p("",!0),S("order.omde.remove")?(n(),k(V,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon",title:"حذف","pop-title":"آیا مطمئن به حدف رکورد مورد نظر هستید؟",onClick:y=>H(e)},null,8,["onClick"])):p("",!0)])]),items_len:o(({text:e})=>[e?(n(),c("div",ue,l(e.length),1)):p("",!0)]),sts_str:o(({record:e})=>[S("order.omde.state")?(n(),c("a",{key:0,href:"",onClick:ee(y=>P(e),["prevent"])},l(e.sts_str),9,ce)):(n(),c("span",me,l(e.sts_str),1))]),confirmed_str:o(({record:e})=>[d(l(e.confirmed_str),1)]),_:1},8,["model"]),s(D,{open:w.value,"onUpdate:open":t[1]||(t[1]=e=>w.value=e),title:"وضعیت سفارش","wrap-class-name":"detail-modal"},{footer:o(()=>[s(f,{onClick:t[0]||(t[0]=e=>w.value=!1)},{default:o(()=>[...t[7]||(t[7]=[d("باشه",-1)])]),_:1})]),default:o(()=>[i.value?(n(),k(W,{key:0},{default:o(()=>[(n(!0),c(U,null,F(i.value.activity,(e,y)=>(n(),k(R,{key:y,color:A(e)},{default:o(()=>[b("div",_e,[b("div",null,l(e.title),1),e.proceed?(n(),c("div",fe,[b("div",pe,[b("div",ve,[s(u,null,{default:o(()=>[d(l(O(e.uaj)),1)]),_:2},1024)]),y>0&&S("order.omde.state.remove")?(n(),k(T,{key:0,"ok-text":"بله","cancel-text":"بی خیال",onConfirm:N=>E(e)},{title:o(()=>[...t[4]||(t[4]=[b("p",null,"آیا مطمئن به حذف وضعیت مورد نظر هستید ؟",-1)])]),default:o(()=>[s(f,{size:"small",danger:""},{default:o(()=>[...t[5]||(t[5]=[d("حذف وضعیت",-1)])]),_:1})]),_:1},8,["onConfirm"])):p("",!0)])])):p("",!0),!e.proceed&&S("order.omde.state.submit")?(n(),c("div",ye,[s(C,{value:e.note,"onUpdate:value":N=>e.note=N,placeholder:"یادداشت"},null,8,["value","onUpdate:value"]),s(f,{type:"text",size:"small",onClick:N=>q(e)},{default:o(()=>[...t[6]||(t[6]=[d("ثبت وضعیت",-1)])]),_:1},8,["onClick"])])):p("",!0),e.proceed?(n(),c("div",ke,l(e.note),1)):p("",!0)])]),_:2},1032,["color"]))),128))]),_:1})):p("",!0)]),_:1},8,["open"]),s(D,{open:$.value,"onUpdate:open":t[3]||(t[3]=e=>$.value=e),title:"مشاهده سفارش",width:"80%","wrap-class-name":"detail-modal"},{footer:o(()=>[s(f,{onClick:t[2]||(t[2]=e=>$.value=!1)},{default:o(()=>[...t[8]||(t[8]=[d("باشه",-1)])]),_:1})]),default:o(()=>[i.value?(n(),c("div",we,[s(I,null,{default:o(()=>[s(v,{label:"مشتری"},{default:o(()=>[d(l(i.value.customer.fname)+" "+l(i.value.customer.lname),1)]),_:1}),s(v,{label:"تلفن همراه"},{default:o(()=>[d(l(i.value.customer.phone),1)]),_:1}),s(v,{label:"تاریخ ثبت"},{default:o(()=>[d(l(O(i.value.caj)),1)]),_:1}),s(v,{label:"وضعیت"},{default:o(()=>[d(l(i.value.sts_str),1)]),_:1})]),_:1}),s(K,{title:"آیتم های سفارش"},{default:o(()=>[(n(!0),c(U,null,F(i.value.items,(e,y)=>(n(),c("div",{key:y},[s(I,null,{default:o(()=>[s(v,{label:"نام محصول"},{default:o(()=>[s(u,{color:"blue"},{default:o(()=>[d(l(e.title),1)]),_:2},1024)]),_:2},1024),s(v,{label:"عنوان تنوع"},{default:o(()=>[d(l(e.variant_title),1)]),_:2},1024),s(v,{label:"وزن نهایی"},{default:o(()=>[s(u,{color:"red"},{default:o(()=>[d(l(e.grams),1)]),_:2},1024)]),_:2},1024),s(v,{label:"تعداد"},{default:o(()=>[s(u,{color:"orange"},{default:o(()=>[d(l(e.qty),1)]),_:2},1024)]),_:2},1024)]),_:2},1024),y(a(),s(e,{title:t(o),model:t(m),"accounting-sync":""},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OmdeNonVerifiedList-BiBG9jCs.js b/apps/admin-panel/dist/assets/OmdeNonVerifiedList-BiBG9jCs.js new file mode 100644 index 0000000..1cdc156 --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeNonVerifiedList-BiBG9jCs.js @@ -0,0 +1 @@ +import{b as r,O as e,a as m}from"./OmdeCustomerList-CytNKR8R.js";import{d as p,a as n,h as t,o as s}from"./index-eLNLLYwC.js";import"./index-CKaD48iT.js";import"./model-btNVLLyF.js";import"./filters-BMytoA2k.js";import"./SettingOutlined-DibNCEeh.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./DateInput-D9Jh1loF.js";import"./UserOutlined-B4M5rNrX.js";import"./ShopOutlined-DIjF3I3z.js";import"./EnvironmentOutlined-BKbou10z.js";import"./PercentageOutlined-DyprS4lh.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";import"./UnorderedListOutlined-cPIiOEaQ.js";const U=p({__name:"OmdeNonVerifiedList",setup(a){const o=e.nonVerified.title,i=r("nonVerified");return(d,l)=>(s(),n(m,{title:t(o),model:t(i)},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OmdeNonVerifiedList-Chk-ZLmx.js b/apps/admin-panel/dist/assets/OmdeNonVerifiedList-Chk-ZLmx.js deleted file mode 100644 index 77cfad3..0000000 --- a/apps/admin-panel/dist/assets/OmdeNonVerifiedList-Chk-ZLmx.js +++ /dev/null @@ -1 +0,0 @@ -import{b as r,O as e,a as m}from"./OmdeCustomerList-c6FcwBcS.js";import{d as p,a as n,h as t,o as s}from"./index-DajPj7Ec.js";import"./index-BAamWbCu.js";import"./model-CR-NjhTP.js";import"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./DateInput-CSLG7sxn.js";import"./UserOutlined-CzruAWCH.js";import"./ShopOutlined-MoIbCAG4.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./PercentageOutlined-D8KYbn5o.js";import"./SafetyCertificateOutlined-DSk-s9OX.js";import"./UnorderedListOutlined-B6W9NsW_.js";const U=p({__name:"OmdeNonVerifiedList",setup(a){const o=e.nonVerified.title,i=r("nonVerified");return(d,l)=>(s(),n(m,{title:t(o),model:t(i)},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OrderStatusTimeline-Dm95hywe.js b/apps/admin-panel/dist/assets/OrderStatusTimeline-Dm95hywe.js new file mode 100644 index 0000000..4985ce3 --- /dev/null +++ b/apps/admin-panel/dist/assets/OrderStatusTimeline-Dm95hywe.js @@ -0,0 +1 @@ +import{c as p,I as K,d as yt,m as R,n as F,o,b as l,q as T,a as P,i as f,p as a,t as v,w as g,f as b,F as z,e as H,s as w,G as q,r as C,h as D,z as At,y as ut,_ as gt,a0 as Nt,B as It,A as Y,g as _t,D as $t}from"./index-eLNLLYwC.js";import{j as Rt,a as Tt}from"./filters-BMytoA2k.js";import{P as vt}from"./PictureOutlined-BQUWPT2c.js";import{m as wt}from"./index-CKaD48iT.js";import{G as Lt,I as Bt}from"./icons-DaMkWfMK.js";import{S as Ft}from"./SafetyCertificateOutlined-Du6lFDs_.js";var Vt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1080 0 40 40 0 10-80 0zm239-167.6L935.3 372a8 8 0 00-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 00-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 00-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 003-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"car",theme:"outlined"};function mt(n){for(var i=1;i{var t;return(((t=y.value)==null?void 0:t.variants_all)??[]).filter(m=>m.is_active!==!1)}),J=w(()=>E.value.trim()||d.value?"محصولی پیدا نشد":"برای شروع، محصول را جستجو کنید یا یک دسته انتخاب کنید");function G(e){const t=parseFloat(String(e));return Number.isFinite(t)?t%1===0?String(t):t.toFixed(3):String(e??"—")}function u(e){var t,m,$;return((t=e.thumb)==null?void 0:t.full)||(($=(m=e.images)==null?void 0:m[0])==null?void 0:$.url)||null}async function M(){try{const{data:e}=await ut.get("product/categories"),t=Array.isArray(e)?e:Array.isArray(e==null?void 0:e.rows)?e.rows:[];B.value=t.map(m=>({id:String(m.id),title:String(m.title??"").trim()})).filter(m=>m.id&&m.title)}catch(e){console.log(e),B.value=[]}}async function N(e=E.value){A.value=!0;try{const t=[{field:"isActive",op:"=",value:!0}];d.value&&t.push({field:"categoryId",op:"=",value:d.value});const{data:m}=await ut.post("products",{page:1,limit:24,search:String(e??"").trim()||void 0,filters:t});O.value=Array.isArray(m==null?void 0:m.rows)?m.rows:[]}catch(t){console.log(t),q.error("دریافت لیست محصولات ممکن نشد")}finally{A.value=!1}}function bt(e){E.value=e,N(e)}function at(e){d.value!==e&&(d.value=e,X(),N())}function kt(e){y.value=e,c.value="";const t=(e.variants_all??[]).find(m=>m.is_active!==!1);t&&(c.value=String(t.id))}function X(){y.value=null,c.value=""}function st(e,t){return String(e.id||e.productVariantId||t)}function nt(e){k[e]=!0}F(()=>{var e;return(e=r.order)==null?void 0:e.id},()=>{for(const e of Object.keys(k))delete k[e]}),F(()=>r.addVariantId,e=>{e!==void 0&&(c.value=e)}),F(()=>r.addQty,e=>{e!==void 0&&(L.value=e)}),F(c,e=>_("update:addVariantId",e)),F(L,e=>_("update:addQty",Number(e)||1)),F(E,e=>{h&&clearTimeout(h),h=setTimeout(()=>{N(e)},320)}),F(()=>r.editMode,e=>{e?(M(),N("")):(X(),O.value=[],E.value="",d.value=null,B.value=[])});const ot=w(()=>{var m;const e=(m=r.order)==null?void 0:m.customer;return e&&(`${e.fname??""} ${e.lname??""}`.trim()||e.fullName)||"—"}),Ct=w(()=>{const e=ot.value.split(/\s+/).filter(Boolean);return!e.length||e[0]==="—"?"؟":e.slice(0,2).map(t=>t[0]).join("")});function Ot(e){return e?Rt(e):"—"}function lt(e){const t=parseFloat(String(e));return Number.isFinite(t)?t%1===0?String(t):t.toFixed(2):String(e??"—")}function Et(){var $;const e=String(c.value??"").trim();if(!e){q.warning("یک تنوع انتخاب کنید");return}if(!y.value){q.warning("اول یک محصول انتخاب کنید");return}const t=U.value.find(V=>String(V.id)===e),m=(($=t==null?void 0:t.image)==null?void 0:$.url)||u(y.value);_("add-line",{variantId:e,qty:Number(L.value)||1,title:y.value.title??"محصول",variantTitle:(t==null?void 0:t.title)??e,grams:(t==null?void 0:t.grams)!=null?Number(t.grams):0,wagePercent:(t==null?void 0:t.percentage_pay)!=null?Number(t.percentage_pay):void 0,flatRialCharge:(t==null?void 0:t.rial_pay)!=null?Number(t.rial_pay):0,image:m??null}),q.success("آیتم به سفارش اضافه شد")}return(e,t)=>{var rt,it,ct;const m=C("a-alert"),$=C("a-tag"),V=C("a-input-number"),j=C("a-form-item"),Z=C("a-button"),Q=C("a-empty"),St=C("a-input-search"),Dt=C("a-spin");return n.order?(o(),l("div",{key:0,class:T(["od",{"od--edit":n.editMode}])},[n.order.revisionStatus==="AWAITING_CUSTOMER"?(o(),P(m,{key:0,type:"warning","show-icon":"",class:"od__alert",message:n.order.confirmed_str||"در انتظار تأیید مشتری",description:"تا تأیید مشتری (یا اعمال/لغو توسط شما) ارقام فعلی سفارش تغییر نمی‌کند. پیامک برای مشتری ارسال شده است."},null,8,["message"])):f("",!0),a("section",Ht,[a("div",Gt,[a("div",Qt,v(Ct.value),1),a("div",qt,[a("h3",Yt,v(ot.value),1),(rt=n.order.customer)!=null&&rt.phone?(o(),l("a",{key:0,class:"od__phone",href:`tel:${n.order.customer.phone}`},v(n.order.customer.phone),9,Wt)):f("",!0)])]),a("div",Jt,[a("div",Xt,[t[3]||(t[3]=a("span",{class:"od__metaLabel"},"تاریخ ثبت",-1)),a("span",Zt,v(Ot(n.order.caj)),1)]),a("div",Kt,[t[4]||(t[4]=a("span",{class:"od__metaLabel"},"وضعیت",-1)),p($,{color:"blue"},{default:g(()=>[b(v(n.order.sts_str),1)]),_:1})]),n.order.orderNumber?(o(),l("div",te,[t[5]||(t[5]=a("span",{class:"od__metaLabel"},"شماره سفارش",-1)),a("span",ee,v(n.order.orderNumber),1)])):f("",!0)])]),a("div",ae,[a("section",se,[a("header",ne,[t[6]||(t[6]=a("h4",{class:"od__itemsTitle"},"آیتم‌های سفارش",-1)),a("span",oe,v(((it=n.order.items)==null?void 0:it.length)||0)+" قلم",1)]),(ct=n.order.items)!=null&&ct.length?(o(),l("ul",le,[(o(!0),l(z,null,H(n.order.items,(s,I)=>(o(),l("li",{key:s.id||I,class:"od__row"},[a("div",re,[s.image&&!k[st(s,I)]?(o(),l("img",{key:0,src:s.image,alt:s.title||"",onError:S=>nt(st(s,I))},null,40,ie)):(o(),l("div",ce,[p(D(vt))]))]),a("div",de,[a("div",ue,[a("h5",_e,v(s.title||"محصول"),1),s.variant_title?(o(),l("span",ve,v(s.variant_title),1)):f("",!0)]),n.editMode?(o(),l("div",ge,[p(j,{label:"وزن (گرم)",class:"od__field"},{default:g(()=>[p(V,{value:s.grams,"onUpdate:value":S=>s.grams=S,min:0,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(j,{label:"تعداد",class:"od__field"},{default:g(()=>[p(V,{value:s.qty,"onUpdate:value":S=>s.qty=S,min:1,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(j,{label:"اجرت ریالی",class:"od__field"},{default:g(()=>[p(V,{value:s.flatRialCharge,"onUpdate:value":S=>s.flatRialCharge=S,min:0,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(Z,{size:"small",danger:"",class:"od__remove",onClick:S=>_("remove-line",I)},{default:g(()=>[...t[10]||(t[10]=[b(" حذف آیتم ",-1)])]),_:1},8,["onClick"])])):(o(),l("div",me,[a("span",pe,[a("b",null,v(s.qty),1),t[7]||(t[7]=b(" عدد ",-1))]),a("span",fe,[a("b",null,v(G(s.grams)),1),t[8]||(t[8]=b(" گرم ",-1))]),s.wagePercent!=null?(o(),l("span",he,[a("b",null,v(lt(s.wagePercent)),1),t[9]||(t[9]=b(" ٪ اجرت ",-1))])):f("",!0),Number(s.flatRialCharge)>0?(o(),l("span",ye,[a("b",null,v(D(Tt)(s.flatRialCharge)),1)])):f("",!0)]))])]))),128))])):(o(),P(Q,{key:1,description:"آیتمی در این سفارش نیست"}))]),n.editMode?(o(),l("aside",be,[a("header",ke,[t[11]||(t[11]=a("div",null,[a("h4",{class:"od__pickerTitle"},"افزودن به سفارش"),a("p",{class:"od__pickerHint"},"اول محصول را پیدا کنید، بعد تنوع را انتخاب کنید")],-1)),a("ol",Ce,[a("li",{class:T({"is-active":!y.value,"is-done":!!y.value})},"۱ محصول",2),a("li",{class:T({"is-active":!!y.value})},"۲ تنوع",2)])]),p(j,{label:"جستجوی محصول",class:"od__field"},{default:g(()=>[p(St,{value:E.value,"onUpdate:value":t[0]||(t[0]=s=>E.value=s),"allow-clear":"",placeholder:"نام یا کد محصول…",loading:A.value,"enter-button":"جستجو",onSearch:bt},null,8,["value","loading"])]),_:1}),B.value.length?(o(),l("div",Oe,[a("button",{type:"button",class:T(["od__catChip",{"is-active":!d.value}]),role:"tab","aria-selected":!d.value,onClick:t[1]||(t[1]=s=>at(null))}," همه ",10,Ee),(o(!0),l(z,null,H(B.value,s=>(o(),l("button",{key:s.id,type:"button",class:T(["od__catChip",{"is-active":d.value===s.id}]),role:"tab","aria-selected":d.value===s.id,onClick:I=>at(s.id)},v(s.title),11,Se))),128))])):f("",!0),p(Dt,{spinning:A.value},{default:g(()=>[O.value.length?(o(),l("div",De,[(o(!0),l(z,null,H(O.value,s=>{var I,S,dt;return o(),l("button",{key:s.id,type:"button",class:T(["od__productCard",{"is-selected":((I=y.value)==null?void 0:I.id)===s.id}]),role:"option","aria-selected":((S=y.value)==null?void 0:S.id)===s.id,onClick:Pt=>kt(s)},[a("div",Ae,[u(s)&&!k[`p-${s.id}`]?(o(),l("img",{key:0,src:u(s),alt:s.title,onError:Pt=>nt(`p-${s.id}`)},null,40,Ne)):(o(),l("div",Ie,[p(D(vt))]))]),a("div",$e,[a("span",Re,v(s.title),1),a("span",Te,[b(v(s.variants_count??((dt=s.variants_all)==null?void 0:dt.length)??0)+" تنوع ",1),s.product_code?(o(),l(z,{key:0},[b(" · "+v(s.product_code),1)],64)):f("",!0)])])],10,Pe)}),128))])):A.value?f("",!0):(o(),P(Q,{key:1,class:"od__pickerEmpty",description:J.value},null,8,["description"]))]),_:1},8,["spinning"]),y.value?(o(),l("div",we,[a("div",Le,[a("h5",Be,"تنوع‌های «"+v(y.value.title)+"»",1),p(Z,{type:"link",size:"small",onClick:X},{default:g(()=>[...t[12]||(t[12]=[b("عوض کردن محصول",-1)])]),_:1})]),U.value.length?(o(),l("div",Fe,[(o(!0),l(z,null,H(U.value,s=>(o(),l("button",{key:s.id,type:"button",class:T(["od__variantCard",{"is-selected":c.value===String(s.id)}]),role:"option","aria-selected":c.value===String(s.id),onClick:I=>c.value=String(s.id)},[a("div",ze,[a("span",Ue,v(s.title||"تنوع"),1),c.value===String(s.id)?(o(),P($,{key:0,color:"blue"},{default:g(()=>[...t[13]||(t[13]=[b("انتخاب‌شده",-1)])]),_:1})):f("",!0)]),a("div",Me,[a("span",null,[a("b",null,v(G(s.grams)),1),t[14]||(t[14]=b(" گرم",-1))]),s.percentage_pay!=null?(o(),l("span",je,[a("b",null,v(lt(s.percentage_pay)),1),t[15]||(t[15]=b("٪ اجرت",-1))])):f("",!0),s.sku?(o(),l("span",xe,v(s.sku),1)):f("",!0)])],10,Ve))),128))])):(o(),P(Q,{key:1,description:"این محصول تنوع فعالی ندارد"})),a("div",He,[p(j,{label:"تعداد",class:"od__field od__addQty"},{default:g(()=>[p(V,{value:L.value,"onUpdate:value":t[2]||(t[2]=s=>L.value=s),min:1,class:"w-full"},null,8,["value"])]),_:1}),p(Z,{type:"primary",class:"od__addBtn",disabled:!c.value,onClick:Et},{default:g(()=>[...t[16]||(t[16]=[b(" افزودن به سفارش ",-1)])]),_:1},8,["disabled"])])])):f("",!0)])):f("",!0)])],2)):(o(),P(Q,{key:1}))}}}),ya=gt(Ge,[["__scopeId","data-v-4545ac5a"]]),Qe={SUSPENDED:"معلق",PLACED:"ثبت سفارش",ADMIN_APPROVED:"تایید مدیر",SOURCING:"در حال تامین",PREPARING:"آماده‌سازی",DELIVERED_TO_AGENT:"تحویل نماینده",DELIVERED_TO_CUSTOMER:"تحویل مشتری",CANCELLED:"لغو شده"},qe={SUSPENDED:{font:"#A16207",background:"#A162071F"},PLACED:{font:"#3B82F6",background:"#3B82F61F"},ADMIN_APPROVED:{font:"#6366F1",background:"#6366F11F"},SOURCING:{font:"#EAB308",background:"#EAB3081F"},PREPARING:{font:"#F97316",background:"#F973161F"},DELIVERED_TO_AGENT:{font:"#06B6D4",background:"#06B6D41F"},DELIVERED_TO_CUSTOMER:{font:"#22C55E",background:"#22C55E1F"},CANCELLED:{font:"#DC2626",background:"#DC26261F"}},Ye={SUSPENDED:et,PLACED:W,ADMIN_APPROVED:Ft,SOURCING:Bt,PREPARING:Lt,DELIVERED_TO_AGENT:tt,DELIVERED_TO_CUSTOMER:It,CANCELLED:Nt},We={font:"#64748B",background:"#64748B1F"};function x(n){return qe[n]??We}function Je(n){return Qe[n]??n}function ht(n){return Ye[n]??W}const Xe={key:0,class:"ost"},Ze={class:"ost__banner"},Ke={class:"ost__rail"},ta={class:"ost__axis","aria-hidden":"true"},ea={class:"ost__main"},aa={class:"ost__row"},sa={class:"ost__copy"},na={class:"ost__status"},oa={key:0,class:"ost__note"},la={class:"ost__meta"},ra={key:0,class:"ost__when",dir:"ltr"},ia={key:1,class:"ost__when is-wait"},ca={key:2,class:"ost__when is-wait"},da={key:0,class:"ost__submit"},ua=yt({__name:"OrderStatusTimeline",props:{activity:{},canSubmit:{type:Boolean},canRemove:{type:Boolean}},emits:["submit","remove"],setup(n,{emit:i}){const r=n,_=i,c=w(()=>r.activity??[]),L=w(()=>{let d=-1;return c.value.forEach((h,k)=>{h.proceed&&(d=k)}),d}),A=w(()=>c.value.map((d,h)=>{let k="pending";return d.proceed&&(k=h===L.value?"current":"done"),{...d,state:k}})),O=w(()=>A.value.find(d=>d.state==="current")??null);function E(d){return Je(d.status)||d.title||d.status}function y(d){return wt(d).format("jYYYY/jMM/jDD - HH:mm")}function B(d){if(d.state==="pending")return;const h=x(d.status);return{color:h.font,borderColor:h.font}}return(d,h)=>{const k=C("a-button"),U=C("a-popconfirm"),J=C("a-input"),G=C("a-empty");return c.value.length?(o(),l("div",Xe,[a("header",Ze,[h[0]||(h[0]=a("span",{class:"ost__chip"},"وضعیت",-1)),h[1]||(h[1]=a("span",{class:"ost__dash","aria-hidden":"true"},null,-1)),O.value?(o(),l("span",{key:0,class:"ost__badge",style:Y({background:D(x)(O.value.status).background,color:D(x)(O.value.status).font})},[(o(),P(_t(D(ht)(O.value.status)))),b(" "+v(E(O.value)),1)],4)):f("",!0)]),a("ol",Ke,[(o(!0),l(z,null,H(A.value,(u,M)=>(o(),l("li",{key:u.status||M,class:T(["ost__node",[`is-${u.state}`]])},[a("div",ta,[u.state==="current"?(o(),l("span",{key:0,class:"ost__halo",style:Y({color:D(x)(u.status).font})},null,4)):f("",!0),a("span",{class:"ost__marker",style:Y(B(u))},[(o(),P(_t(D(ht)(u.status))))],4),M0?(o(),P(U,{key:3,"ok-text":"بله","cancel-text":"بی‌خیال",placement:"topLeft",onConfirm:N=>_("remove",u)},{title:g(()=>[...h[2]||(h[2]=[a("p",null,"آیا مطمئن به حذف وضعیت مورد نظر هستید ؟",-1)])]),default:g(()=>[p(k,{danger:"",ghost:"",size:"small",class:"ost__iconBtn","aria-label":"حذف وضعیت"},{icon:g(()=>[p(D($t))]),_:1})]),_:1},8,["onConfirm"])):f("",!0)])]),!u.proceed&&n.canSubmit?(o(),l("div",da,[p(J,{value:u.note,"onUpdate:value":N=>u.note=N,size:"small",placeholder:"یادداشت","allow-clear":"",onPressEnter:N=>_("submit",u)},null,8,["value","onUpdate:value","onPressEnter"]),p(k,{size:"small",type:"primary",onClick:N=>_("submit",u)},{default:g(()=>[...h[3]||(h[3]=[b("ثبت وضعیت",-1)])]),_:1},8,["onClick"])])):f("",!0)])],2))),128))])])):(o(),P(G,{key:1,description:"مسیری برای این سفارش ثبت نشده است."}))}}}),ga=gt(ua,[["__scopeId","data-v-73d1808b"]]);export{ga as O,ya as a}; diff --git a/apps/admin-panel/dist/assets/OrderStatusTimeline-nDDfaXIt.css b/apps/admin-panel/dist/assets/OrderStatusTimeline-nDDfaXIt.css new file mode 100644 index 0000000..3143279 --- /dev/null +++ b/apps/admin-panel/dist/assets/OrderStatusTimeline-nDDfaXIt.css @@ -0,0 +1 @@ +.od__alert[data-v-4545ac5a]{margin-bottom:16px}.od__summary[data-v-4545ac5a]{display:flex;flex-wrap:wrap;gap:16px 24px;align-items:flex-start;justify-content:space-between;padding:14px 16px;border:1px solid #f0f0f0;border-radius:12px;background:#fafafa;margin-bottom:18px}.od__who[data-v-4545ac5a]{display:flex;align-items:center;gap:12px;min-width:0}.od__avatar[data-v-4545ac5a]{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;font-size:14px;font-weight:700;color:#1d39c4;background:#f0f5ff;border:1px solid #d6e4ff}.od__whoText[data-v-4545ac5a]{min-width:0}.od__name[data-v-4545ac5a]{margin:0;font-size:15px;font-weight:700;color:#000000e0;line-height:1.4}.od__phone[data-v-4545ac5a]{display:inline-block;margin-top:2px;font-size:13px;color:#0000008c;direction:ltr;unicode-bidi:plaintext}.od__meta[data-v-4545ac5a]{display:flex;flex-wrap:wrap;gap:12px 20px}.od__metaItem[data-v-4545ac5a]{display:flex;flex-direction:column;gap:4px}.od__metaLabel[data-v-4545ac5a]{font-size:11px;font-weight:600;color:#00000073}.od__metaValue[data-v-4545ac5a]{font-size:13px;font-weight:600;color:#000000e0}.od__mono[data-v-4545ac5a]{font-variant-numeric:tabular-nums;letter-spacing:.02em}.od__workspace[data-v-4545ac5a]{display:block}.od--edit .od__workspace[data-v-4545ac5a]{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:16px;align-items:start}.od__itemsHead[data-v-4545ac5a]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.od__itemsTitle[data-v-4545ac5a]{margin:0;font-size:14px;font-weight:700}.od__itemsCount[data-v-4545ac5a]{font-size:12px;font-weight:600;color:#00000073}.od__list[data-v-4545ac5a]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;max-height:min(58vh,560px);overflow:auto;padding-inline-end:4px}.od__row[data-v-4545ac5a]{display:flex;gap:12px;padding:12px;border:1px solid #f0f0f0;border-radius:12px;background:#fff}.od__art[data-v-4545ac5a]{width:72px;height:72px;flex:none;border-radius:10px;overflow:hidden;background:#f5f5f5;border:1px solid #f0f0f0}.od__art img[data-v-4545ac5a],.od__productThumb img[data-v-4545ac5a]{width:100%;height:100%;object-fit:cover;display:block}.od__artEmpty[data-v-4545ac5a]{width:100%;height:100%;display:grid;place-items:center;color:#00000040;font-size:22px}.od__body[data-v-4545ac5a]{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.od__titles[data-v-4545ac5a]{min-width:0}.od__product[data-v-4545ac5a]{margin:0;font-size:13.5px;font-weight:700;color:#000000e0;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.od__variant[data-v-4545ac5a]{display:block;margin-top:2px;font-size:12px;color:#00000073}.od__chips[data-v-4545ac5a]{display:flex;flex-wrap:wrap;gap:6px}.od__chip[data-v-4545ac5a]{display:inline-flex;align-items:baseline;gap:4px;padding:3px 9px;border-radius:999px;font-size:11px;color:#0000008c;background:#f5f5f5;border:1px solid #f0f0f0}.od__chip b[data-v-4545ac5a]{font-weight:700;color:#000000e0;font-variant-numeric:tabular-nums}.od__chip--accent[data-v-4545ac5a]{color:#531dab;background:#f9f0ff;border-color:#efdbff}.od__chip--accent b[data-v-4545ac5a]{color:#531dab}.od__edit[data-v-4545ac5a]{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px 12px;align-items:end}.od__field[data-v-4545ac5a]{margin-bottom:0}.od__remove[data-v-4545ac5a]{justify-self:start}.od__picker[data-v-4545ac5a]{position:sticky;top:0;border:1px solid #e6ebf5;border-radius:14px;background:linear-gradient(180deg,#f7f9fc,#fff 48px);padding:14px;box-shadow:0 8px 24px -18px #141e3c59;max-height:min(70vh,680px);overflow:auto}.od__pickerHead[data-v-4545ac5a]{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.od__pickerTitle[data-v-4545ac5a]{margin:0;font-size:14px;font-weight:800;color:#000000e0}.od__pickerHint[data-v-4545ac5a]{margin:4px 0 0;font-size:12px;line-height:1.6;color:#00000073}.od__steps[data-v-4545ac5a]{list-style:none;margin:0;padding:0;display:flex;gap:8px}.od__steps li[data-v-4545ac5a]{flex:1;text-align:center;padding:6px 8px;border-radius:999px;font-size:11px;font-weight:700;color:#00000059;background:#eef1f6}.od__steps li.is-active[data-v-4545ac5a]{color:#1d39c4;background:#e6f0ff}.od__steps li.is-done[data-v-4545ac5a]{color:#389e0d;background:#f6ffed}.od__catChips[data-v-4545ac5a]{display:flex;gap:6px;margin:10px 0 2px;padding-bottom:2px;overflow-x:auto;scrollbar-width:thin}.od__catChip[data-v-4545ac5a]{flex:none;padding:5px 12px;border-radius:999px;border:1px solid #e6ebf5;background:#fff;font-size:12px;font-weight:600;color:#000000a6;cursor:pointer;white-space:nowrap;transition:border-color .15s ease,background .15s ease,color .15s ease}.od__catChip[data-v-4545ac5a]:hover{border-color:#91caff;color:#1d39c4}.od__catChip.is-active[data-v-4545ac5a]{border-color:#1677ff;background:#e6f4ff;color:#0958d9}.od__products[data-v-4545ac5a]{display:flex;flex-direction:column;gap:8px;margin-top:10px;max-height:220px;overflow:auto}.od__productCard[data-v-4545ac5a]{display:flex;gap:10px;align-items:center;width:100%;padding:8px;border-radius:12px;border:1px solid #eef0f4;background:#fff;cursor:pointer;text-align:right;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.od__productCard[data-v-4545ac5a]:hover{border-color:#91caff;background:#fafcff}.od__productCard.is-selected[data-v-4545ac5a]{border-color:#1677ff;background:#f0f5ff;box-shadow:0 0 0 1px #1677ff33}.od__productThumb[data-v-4545ac5a]{width:48px;height:48px;flex:none;border-radius:10px;overflow:hidden;background:#f5f5f5;border:1px solid #f0f0f0}.od__productMeta[data-v-4545ac5a]{min-width:0;display:flex;flex-direction:column;gap:2px}.od__productName[data-v-4545ac5a]{font-size:12.5px;font-weight:700;color:#000000e0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.od__productSub[data-v-4545ac5a]{font-size:11px;color:#00000073}.od__pickerEmpty[data-v-4545ac5a]{margin:12px 0 4px}.od__variantsBlock[data-v-4545ac5a]{margin-top:14px;padding-top:12px;border-top:1px dashed #e6ebf5}.od__variantsHead[data-v-4545ac5a]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.od__variantsTitle[data-v-4545ac5a]{margin:0;font-size:12.5px;font-weight:800;color:#000000bf}.od__variants[data-v-4545ac5a]{display:flex;flex-direction:column;gap:8px}.od__variantCard[data-v-4545ac5a]{width:100%;padding:10px 12px;border-radius:12px;border:1px solid #eef0f4;background:#fff;cursor:pointer;text-align:right;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.od__variantCard[data-v-4545ac5a]:hover{border-color:#91caff}.od__variantCard.is-selected[data-v-4545ac5a]{border-color:#1677ff;background:#f0f5ff;box-shadow:0 0 0 1px #1677ff2e}.od__variantTop[data-v-4545ac5a]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.od__variantName[data-v-4545ac5a]{font-size:13px;font-weight:700;color:#000000e0}.od__variantFacts[data-v-4545ac5a]{display:flex;flex-wrap:wrap;gap:8px 12px;font-size:11.5px;color:#00000080}.od__variantFacts b[data-v-4545ac5a]{font-weight:700;color:#000000c7;font-variant-numeric:tabular-nums}.od__addBar[data-v-4545ac5a]{display:grid;grid-template-columns:100px 1fr;gap:10px;align-items:end;margin-top:12px}.od__addBtn[data-v-4545ac5a]{height:36px}@media (max-width: 900px){.od--edit .od__workspace[data-v-4545ac5a]{grid-template-columns:1fr}.od__picker[data-v-4545ac5a]{position:static;max-height:none}.od__list[data-v-4545ac5a]{max-height:none}}@media (max-width: 575px){.od__summary[data-v-4545ac5a]{padding:12px}.od__art[data-v-4545ac5a]{width:56px;height:56px}.od__row[data-v-4545ac5a]{padding:10px}.od__addBar[data-v-4545ac5a]{grid-template-columns:1fr}}.ost__banner[data-v-73d1808b]{display:flex;align-items:center;gap:10px;margin-bottom:16px}.ost__chip[data-v-73d1808b]{flex:0 0 auto;padding:6px 12px;border-radius:999px;border:1px solid #f0f0f0;background:#fff;box-shadow:0 1px 2px #14161a0a;font-size:11px;font-weight:600;color:#0000008c}.ost__dash[data-v-73d1808b]{flex:1 1 auto;height:0;border-top:1.5px dashed #e5e7eb;min-width:16px}.ost__badge[data-v-73d1808b]{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.ost__badge[data-v-73d1808b] .anticon{font-size:13px}.ost__rail[data-v-73d1808b]{list-style:none;margin:0;padding:0 2px}.ost__node[data-v-73d1808b]{display:flex;gap:12px;align-items:stretch;min-height:52px}.ost__axis[data-v-73d1808b]{flex:0 0 40px;width:40px;display:flex;flex-direction:column;align-items:center;position:relative}.ost__halo[data-v-73d1808b]{position:absolute;top:0;left:50%;width:40px;height:40px;margin-left:-20px;border-radius:50%;pointer-events:none;z-index:0}.ost__halo[data-v-73d1808b]:before{content:"";position:absolute;top:-14px;right:-14px;bottom:-14px;left:-14px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,currentColor 32%,transparent) 0%,color-mix(in srgb,currentColor 12%,transparent) 38%,transparent 70%);filter:blur(1.5px);opacity:0;animation:ostHalo-73d1808b 4.8s ease-in-out infinite}@keyframes ostHalo-73d1808b{0%,to{opacity:0}50%{opacity:.7}}@media (prefers-reduced-motion: reduce){.ost__halo[data-v-73d1808b]:before{animation:none;opacity:.35}}.ost__marker[data-v-73d1808b]{flex:0 0 40px;width:40px;height:40px;border-radius:50%;border:1.5px solid currentColor;background:#fff;display:grid;place-items:center;position:relative;z-index:1;font-size:16px}.ost__node.is-pending .ost__marker[data-v-73d1808b]{color:#9ca3af;border-color:#9ca3af;border-style:dashed}.ost__stem[data-v-73d1808b]{flex:1 1 auto;width:1.5px;margin:4px 0;background:#e5e7eb;min-height:12px}.ost__node.is-pending .ost__stem[data-v-73d1808b]{width:2px;background-image:repeating-linear-gradient(180deg,#e5e7eb 0 4px,transparent 4px 8px);background-color:transparent}.ost__main[data-v-73d1808b]{flex:1;min-width:0;padding-top:8px;padding-bottom:12px}.ost__node:last-child .ost__main[data-v-73d1808b]{padding-bottom:2px}.ost__row[data-v-73d1808b]{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:32px}.ost__copy[data-v-73d1808b]{min-width:0;flex:1}.ost__status[data-v-73d1808b]{font-size:13px;font-weight:700;color:#000000e0;line-height:1.35}.ost__note[data-v-73d1808b]{margin:2px 0 0;font-size:11px;color:#0006;line-height:1.35}.ost__meta[data-v-73d1808b]{flex:0 0 auto;display:flex;align-items:center;gap:6px}.ost__when[data-v-73d1808b]{font-size:11px;font-weight:500;color:#00000073;font-variant-numeric:tabular-nums;white-space:nowrap;direction:ltr;unicode-bidi:isolate}.ost__when.is-wait[data-v-73d1808b]{opacity:.85}.ost__node.is-pending .ost__status[data-v-73d1808b],.ost__node.is-pending .ost__when[data-v-73d1808b]{color:#00000059}.ost__iconBtn[data-v-73d1808b]{width:28px;height:28px;padding:0;display:inline-grid;place-items:center;border-radius:8px}.ost__submit[data-v-73d1808b]{display:flex;align-items:center;gap:8px;margin-top:8px}.ost__submit .ant-input[data-v-73d1808b]{flex:1;min-width:0} diff --git a/apps/admin-panel/dist/assets/PercentageOutlined-D8KYbn5o.js b/apps/admin-panel/dist/assets/PercentageOutlined-DyprS4lh.js similarity index 94% rename from apps/admin-panel/dist/assets/PercentageOutlined-D8KYbn5o.js rename to apps/admin-panel/dist/assets/PercentageOutlined-DyprS4lh.js index 1e5bcbf..fe90db3 100644 --- a/apps/admin-panel/dist/assets/PercentageOutlined-D8KYbn5o.js +++ b/apps/admin-panel/dist/assets/PercentageOutlined-DyprS4lh.js @@ -1 +1 @@ -import{c as l,I as u}from"./index-DajPj7Ec.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M855.7 210.8l-42.4-42.4a8.03 8.03 0 00-11.3 0L168.3 801.9a8.03 8.03 0 000 11.3l42.4 42.4c3.1 3.1 8.2 3.1 11.3 0L855.6 222c3.2-3 3.2-8.1.1-11.2zM304 448c79.4 0 144-64.6 144-144s-64.6-144-144-144-144 64.6-144 144 64.6 144 144 144zm0-216c39.7 0 72 32.3 72 72s-32.3 72-72 72-72-32.3-72-72 32.3-72 72-72zm416 344c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144-64.6-144-144-144zm0 216c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z"}}]},name:"percentage",theme:"outlined"};function c(r){for(var e=1;e!!f.hasPermission(t),n=c(U),k=c(""),u=c([]),V=c(!0),I=c([]),s=ee({}),a=D(()=>n.value===P),F=D(()=>{var e;let t=I.value;return p("user.permission.create")||(t=t.filter(i=>String(i.id)!==P)),((e=x.user)==null?void 0:e.ut)!==N&&(t=t.filter(i=>i.id!==N)),t});function A(t){return t.filter(e=>!T.has(e.key)).map(e=>e.children?{...e,children:A(e.children)}:e)}const L=D(()=>{var e;const t=((e=x.user)==null?void 0:e.ut)===N?B:B.filter(i=>i.key!=="custom");return f.isSuperAdmin?t:A(t)}),h=c([]);function w(t){if(f.isSuperAdmin){u.value=t,h.value=[];return}u.value=t.filter(e=>!T.has(e)),h.value=t.filter(e=>T.has(e))}async function C(){try{const{data:t}=await v.get("const/__list__ut");I.value=t}catch(t){console.log(t)}}async function g(t){if(!t){w([]);return}if(t===P){w([]);return}try{const{data:e}=await v.get(`roles/${t}`);w(e)}catch{S.error("خطا در دریافت اطلاعات")}}async function M(){var t,e;if(Object.keys(s).forEach(i=>delete s[i]),!n.value){s.ut="لطفاسطح دسترسی را انتخاب کنید";return}if(a.value&&!k.value){s.user="لطفا نام سطح دسترسی را وارد کنید";return}try{let i=n.value;if(a.value){const{data:_}=await v.post("const",{key:"__list__ut",val:k.value});i=String(_.id)}await v.post("roles/create",{ut:i,roles:[...new Set([...u.value,...h.value])]}),await C(),a.value&&(n.value=i,k.value="",await g(i)),S.success("عملیات با موفقیت انجام شد")}catch(i){S.error(((e=(t=i==null?void 0:i.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات")}}return W(async()=>{await C(),n.value=U,await g(U)}),(t,e)=>{const i=o("a-select-option"),_=o("a-select"),b=o("a-form-item"),Y=o("a-input"),H=o("a-tree"),R=o("a-button"),j=o("a-card"),z=o("a-form");return d(),m(z,{layout:"vertical",onSubmit:$(M,["prevent"])},{default:r(()=>[y(j,{id:"rid",title:"دسترسی ها",class:"page-card"},{default:r(()=>[q("div",le,[y(b,{label:"سطح کاربر","validate-status":s.ut?"error":"",help:s.ut},{default:r(()=>[y(_,{value:n.value,"onUpdate:value":e[0]||(e[0]=l=>n.value=l),"allow-clear":"",onChange:g},{default:r(()=>[(d(!0),J(Z,null,Q(F.value,l=>(d(),m(i,{key:l.id,value:String(l.id)},{default:r(()=>[E(X(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),a.value&&p("user.permission.create")?(d(),m(b,{key:0,label:"نام سطح دسترسی","validate-status":s.user?"error":"",help:s.user},{default:r(()=>[y(Y,{value:k.value,"onUpdate:value":e[1]||(e[1]=l=>k.value=l),"allow-clear":""},null,8,["value"])]),_:1},8,["validate-status","help"])):O("",!0),y(b,{label:"نقش ها",class:"tree-item"},{default:r(()=>[y(H,{"checked-keys":u.value,"onUpdate:checkedKeys":e[2]||(e[2]=l=>u.value=l),"check-strictly":!1,checkable:"",style:{width:"100%"},"tree-data":L.value,"field-names":{title:"title",key:"key",children:"children"},"auto-expand-parent":V.value},null,8,["checked-keys","tree-data","auto-expand-parent"])]),_:1})]),!a.value&&p("user.permission.edit")?(d(),m(R,{key:0,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[3]||(e[3]=[E(" ثبت تغییرات ",-1)])]),_:1})):O("",!0),a.value&&p("user.permission.create")?(d(),m(R,{key:1,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[4]||(e[4]=[E(" افزودن ",-1)])]),_:1})):O("",!0)]),_:1})]),_:1})}}}),ae=te(re,[["__scopeId","data-v-e837c6b0"]]);export{ae as default}; +import{d as G,u as K,x as W,a as m,w as r,H as $,m as c,y as v,G as S,r as o,o as d,c as y,p as q,b as J,e as Q,f as E,t as X,F as Z,i as O,z as ee,s as D,_ as te}from"./index-eLNLLYwC.js";import{u as ie}from"./auth-Cmkre2IW.js";const B=[{title:"پیشخوان",key:"dashboard.view"},{title:"اشخاص",key:"persons",children:[{title:"اضافه کردن شخص",key:"persons.create",children:[{title:"افزودن کارشناس فروش",key:"persons.create.seller"},{title:"افزودن مشتری عمده",key:"persons.create.client"},{title:"افزودن مشتری تک",key:"persons.create.single"}]},{title:"لیست کارشناسان فروش",key:"persons.list.sellers",children:[{title:"ویرایش اطلاعات کارشناس فروش",key:"persons.list.sellers.edit"},{title:"مشاهده سفارشات کارشناس فروش",key:"persons.list.sellers.view.orders"},{title:"مشاهده اسناد مالی کارشناس فروش",key:"persons.list.sellers.view.documents"},{title:"توقف سفارش کارشناس فروش",key:"persons.list.sellers.unable.order"},{title:"فعال سازی سفارش کارشناس فروش",key:"persons.list.sellers.able.order"},{title:"فعال سازی حساب کاربری کارشناس فروش",key:"persons.list.sellers.able"},{title:"غیر فعال سازی حساب کاربری کارشناس فروش",key:"persons.list.sellers.unable"}]},{title:"لیست مشتریان عمده",key:"persons.list.client.omde",children:[{title:"مشاهده اطلاعات مشتریان عمده",key:"persons.list.client.omde.view"},{title:"ویرایش اطلاعات مشتری عمده",key:"persons.list.client.omde.edit"},{title:"مشاهده سفارشات مشتری عمده",key:"persons.list.client.omde.view.orders"},{title:"مشاهده اسناد مالی مشتری عمده",key:"persons.list.client.omde.view.documents"},{title:"توقف سفارش مشتری عمده",key:"persons.list.client.omde.unable.order"},{title:"فعال سازی سفارش مشتری عمده",key:"persons.list.client.omde.able.order"},{title:"فعال سازی مشتری عمده",key:"persons.list.client.omde.able"},{title:"غیر فعال سازی مشتری عمده",key:"persons.list.client.omde.unable"}]},{title:"لیست مشتریان تک",key:"persons.list.client.single",children:[{title:"مشاهده اطلاعات مشتریان تک",key:"persons.list.client.single.view"},{title:"ویرایش اطلاعات مشتری تک",key:"persons.list.client.single.edit"},{title:"مشاهده اطلاعات مشتری تک",key:"persons.list.client.single.view"}]}]},{title:"شعب",key:"branch",children:[{title:"افزودن شعب",key:"branch.create"},{title:" لیست شعب",key:"branch.list"}]},{title:"کارگاه",key:"workshop",children:[{title:"افزودن کارگاه",key:"workshop.create"},{title:" لیست کارگاه ها",key:"workshop.list"}]},{title:"محصولات",key:"product",children:[{title:"افزودن محصول",key:"product.create"},{title:"لیست محصولات",key:"product.list",children:[{title:"مشاهده لیست محصولات",key:"product.list.view"},{title:"ویرایش اطلاعات محصول",key:"product.list.edit"},{title:"مشاهده اطلاعات جامع محصول",key:"product.list.view"},{title:"تنوع های محصول",key:"product.list.variants",children:[{title:"مشاهده تنوع های محصول",key:"product.list.variants.view"},{title:"ویرایش تنوع محصول",key:"product.list.variants.edit"},{title:"حذف تنوع محصول",key:"product.list.variants.remove"},{title:"افزودن تنوع محصول",key:"product.list.variants.add"}]},{title:"حذف محصول",key:"product.list.remove"},{title:"تغییر دسته ای",key:"product.list.group.edit"}]},{title:"تغییر درصد محصولات",key:"product.percent"}]},{title:"سفارشات",key:"order",children:[{title:"لیست سفارشات",key:"order.list",children:[{title:"مشاهده لیست سفارشات",key:"order.list.view"},{title:"وضعیت سفارش",key:"order.list.sts",children:[{title:"مشاهده وضعیت سفارش",key:"order.list.sts.view"},{title:"حذف وضعیت",key:"order.list.sts.remove"},{title:"ثبت وضعیت",key:"order.list.sts.submit"}]},{title:"مشاهده سفارش",key:"order.list.view"},{title:"ویرایش سفارش",key:"order.list.view.edit"},{title:"دریافت pdf",key:"order.list.pdf"}]},{title:"سفارشات عمده",key:"order.omde",children:[{title:"وضعیت سفارش",key:"order.omde.state",children:[{title:"مشاهده وضعیت سفارش",key:"order.omde.state.view"},{title:"ثبت وضعیت سفارش",key:"order.omde.state.submit"},{title:"حذف وضعیت سفارش",key:"order.omde.state.remove"}]},{title:"مشاهده سفارش",key:"order.omde.view"},{title:"ویرایش سفارش",key:"order.omde.view.edit"},{title:"حذف آیتم از سفارش",key:"order.omde.view.remove"},{title:"حذف سفارش",key:"order.omde.remove"},{title:"دریافت pdf سفارش",key:"order.omde.get"}]},{title:"سفارشات ساختنی",key:"order.makeOrder",children:[{title:"وضعیت سفارش",key:"order.makeOrder.state",children:[{title:"مشاهده وضعیت سفارش",key:"order.makeOrder.state.view"},{title:"ثبت وضعیت سفارش",key:"order.makeOrder.state.submit"},{title:"حذف وضعیت سفارش",key:"order.makeOrder.state.remove"}]},{title:"مشاهده سفارش",key:"order.makeOrder.view"},{title:"ویرایش سفارش",key:"order.makeOrder.view.edit"},{title:"حذف آیتم از سفارش",key:"order.makeOrder.view.remove"},{title:"حذف سفارش",key:"order.makeOrder.remove"},{title:"دریافت pdf سفارش",key:"order.makeOrder.get"}]},{title:"لیست تامین",key:"order.tamin",children:[{title:"مشاهده لیست تامین",key:"order.tamin.view"},{title:"وضعیت سفارش",key:"order.tamin.state",children:[{title:"مشاهده وضعیت سفارش",key:"order.tamin.state.view"},{title:"ثبت وضعیت سفارش",key:"order.tamin.state.submit"},{title:"حذف وضعیت سفارش",key:"order.tamin.state.remove"}]},{title:"مشاهده سفارش",key:"order.tamin.view"},{title:"ویرایش سفارش",key:"order.tamin.view.edit"}]},{title:"ثبت سفارش تک",key:"order.create"}]},{title:"مدیران",key:"user",children:[{title:"افزودن مدیر",key:"user.create"},{title:"لیست مدیران",key:"user.list",children:[{title:"مشاهده لیست مدیران",key:"user.list.view"},{title:"ویرایش مدیر",key:"user.list.edit"},{title:"حذف مدیر",key:"user.list.remove"},{title:"افزودن مدیر",key:"user.list.create"}]},{title:"دسترسی ها",key:"user.permission",children:[{title:"ویرایش دسترسی",key:"user.permission.edit"},{title:"افزودن دسترسی",key:"user.permission.create"}]}]},{title:"دسته بندی ها",key:"collection",children:[{title:"افزودن دسته بندی",key:"collection.create"},{title:" لیست دسته بندی ها",key:"collection.list",children:[{title:"مشاهده لیست دسته بندی ها",key:"collection.list.view"},{title:"ویرایش دسته",key:"collection.list.edit"},{title:"حذف دسته",key:"collection.list.remove"}]}]},{title:"اسناد مالی",key:"document",children:[{title:" لیست اسناد مالی",key:"document.list",children:[{title:"مشاهده لیست اسناد مالی",key:"document.list.view"},{title:"ویرایش سند مالی",key:"document.list.edit"},{title:"حذف سند مالی",key:"document.list.remove"},{title:"رد کردن سند مالی",key:"document.list.deny"},{title:"تأیید کردن سند مالی",key:"document.list.confirm"},{title:"دریافت pdf سند مالی",key:"document.list.get"}]},{title:"وارد کردن سند مالی مشتری",key:"document.create"}]},{title:"استثناعات تخفیف",key:"offersIgnore"},{title:"تخفیفات",key:"offers",children:[{title:" لیست تخفیفات",key:"offers.list",children:[{title:"مشاهده لیست تخفیفات",key:"offers.list.view"},{title:"ویرایش تخفیف عمده",key:"offers.list.edit"},{title:"ویرایش تخفیف تک",key:"offers.list.tak.edit"},{title:"حذف تخفیف عمده",key:"offers.list.remove"},{title:"حذف تخفیف تک",key:"offers.list.tak.remove"}]},{title:"تعریف تخفیف عمده",key:"offers.create"},{title:"تعریف تخفیف تک",key:"offers.create.tak"},{title:"تخفیف اتوماتیک",key:"offers.autopromotion"}]},{title:"فاکتور انتقال",key:"invoice",children:[{title:"افزودن فاکتور",key:"invoice.create"},{title:" لیست فاکتورها",key:"invoice.list"}]},{title:"گزارشات",key:"report",children:[{title:"گزارش تجمیعی سفارشات و اسناد مالی",key:"report.order.item"},{title:"گزارش محصولات",key:"report.product"}]},{title:"شهرها",key:"cities",children:[{title:"افزودن شهر",key:"cities.create"},{title:"لیست شهرها",key:"cities.list",children:[{title:"مشاهده لیست شهرها",key:"cities.list.view"},{title:"حذف شهر",key:"cities.list.remove"},{title:"مشاهده شهر",key:"cities.list.view"},{title:"ویرایش شهر",key:"cities.list.view.edit"}]}]},{title:"دیدگاه ها",key:"comment",children:[{title:"مشاهده لیست دیدگاه ها",key:"comment.view.all"},{title:"تغییر وضعیت دیدگاه",key:"comment.state"},{title:"مشاهده دیدگاه",key:"comment.view"},{title:"ویرایش دیدگاه",key:"comment.view.edit"},{title:"حذف دیدگاه",key:"comment.remove"}]},{title:"پیامک",key:"sms",children:[{title:"ارسال پیامک",key:"sms.create",children:[{title:"ارسال برای یک شماره تلفن",key:"sms.create.single"},{title:"ارسال برای همه کاربران",key:"sms.create.all"},{title:"ارسال برای کارشناسان فروش",key:"sms.create.reagent"},{title:"ارسال برای مشتریان عمده",key:"sms.create.omde"},{title:"ارسال برای چند شماره تلفن",key:"sms.create.multiple"}]},{title:"لیست پیامک های ارسال شده",key:"sms.list"}]},{title:"کیف پول",key:"wallet",children:[{title:"لیست کیف پول های شارژ شده",key:"wallet.list"},{title:"شارژ کیف پول",key:"wallet.charge"},{title:"تغییر درصد شارژ کیف پول",key:"wallet.percent"}]},{title:"نوتیفیکیشن",key:"notify",children:[{title:"ارسال نوتیفیکیشن",key:"notify.create",children:[{title:"ارسال برای کارشناسان فروش",key:"notify.create.multiple.reagent"},{title:"ارسال برای یک مشتری",key:"notify.create.single.customer"},{title:"ارسال برای مشتریان عمده",key:"notify.create.multiple.omde"},{title:"ارسال برای همه مشتریان",key:"notify.create.multiple.customer"},{title:"ارسال برای یک مدیر",key:"notify.create.single.admin"},{title:"ارسال برای همه مدیران",key:"notify.create.multiple.admin"}]},{title:"لیست نوتیفیکیشن های دریافتی",key:"notify.me"}]},{title:"پیکربندی",key:"config",children:[{title:"مدیریت ثابت ها",key:"config.statics",children:[{title:"برند ها",key:"config.statics.brand",children:[{title:"افزودن برند",key:"config.statics.brand.create"},{title:"ویرایش برند",key:"config.statics.brand.edit"},{title:"حذف برند",key:"config.statics.brand.remove"}]},{title:"برچسب ها",key:"config.statics.tags",children:[{title:"افزودن برچسب",key:"config.statics.tags.create"},{title:"ویرایش برچسب",key:"config.statics.tags.edit"},{title:"حذف برچسب",key:"config.statics.tags.remove"}]},{title:"اسلایدر موبایل",key:"custom.config.statics.slider"}]},{title:"مدیریت کیف پول",key:"config.wallet"},{title:"گزارش",key:"config.report"},{title:"اتصال حسابداری",key:"config.accounting"},{title:"اجرت",key:"config.wage"}]},{title:"آمار",key:"statics"},{title:"خبرنامه",key:"newsletters.newsletters"},{title:"سفارشی",key:"custom",children:[{title:"برچسب بنر اول سایت",key:"custom.config.statics.tags.banner.ids"}]}],T=new Set(["persons.create.single","persons.list.client.single","persons.list.client.single.view","persons.list.client.single.edit","branch","branch.create","branch.list","workshop","workshop.create","workshop.list","order.create","order.list","order.list.view","order.list.sts","order.list.sts.view","order.list.sts.remove","order.list.sts.submit","order.list.view.edit","order.list.pdf","offers.create.tak","offers.list.tak.edit","offers.list.tak.remove","config.wallet"]),le={class:"grid-2"},P="84",U="85",N=104,re=G({__name:"Permission",setup(se){const f=K(),x=ie(),p=t=>!!f.hasPermission(t),n=c(U),k=c(""),u=c([]),V=c(!0),I=c([]),s=ee({}),a=D(()=>n.value===P),F=D(()=>{var e;let t=I.value;return p("user.permission.create")||(t=t.filter(i=>String(i.id)!==P)),((e=x.user)==null?void 0:e.ut)!==N&&(t=t.filter(i=>i.id!==N)),t});function A(t){return t.filter(e=>!T.has(e.key)).map(e=>e.children?{...e,children:A(e.children)}:e)}const L=D(()=>{var e;const t=((e=x.user)==null?void 0:e.ut)===N?B:B.filter(i=>i.key!=="custom");return f.isSuperAdmin?t:A(t)}),h=c([]);function w(t){if(f.isSuperAdmin){u.value=t,h.value=[];return}u.value=t.filter(e=>!T.has(e)),h.value=t.filter(e=>T.has(e))}async function C(){try{const{data:t}=await v.get("const/__list__ut");I.value=t}catch(t){console.log(t)}}async function g(t){if(!t){w([]);return}if(t===P){w([]);return}try{const{data:e}=await v.get(`roles/${t}`);w(e)}catch{S.error("خطا در دریافت اطلاعات")}}async function M(){var t,e;if(Object.keys(s).forEach(i=>delete s[i]),!n.value){s.ut="لطفاسطح دسترسی را انتخاب کنید";return}if(a.value&&!k.value){s.user="لطفا نام سطح دسترسی را وارد کنید";return}try{let i=n.value;if(a.value){const{data:_}=await v.post("const",{key:"__list__ut",val:k.value});i=String(_.id)}await v.post("roles/create",{ut:i,roles:[...new Set([...u.value,...h.value])]}),await C(),a.value&&(n.value=i,k.value="",await g(i)),S.success("عملیات با موفقیت انجام شد")}catch(i){S.error(((e=(t=i==null?void 0:i.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات")}}return W(async()=>{await C(),n.value=U,await g(U)}),(t,e)=>{const i=o("a-select-option"),_=o("a-select"),b=o("a-form-item"),Y=o("a-input"),H=o("a-tree"),R=o("a-button"),j=o("a-card"),z=o("a-form");return d(),m(z,{layout:"vertical",onSubmit:$(M,["prevent"])},{default:r(()=>[y(j,{id:"rid",title:"دسترسی ها",class:"page-card"},{default:r(()=>[q("div",le,[y(b,{label:"سطح کاربر","validate-status":s.ut?"error":"",help:s.ut},{default:r(()=>[y(_,{value:n.value,"onUpdate:value":e[0]||(e[0]=l=>n.value=l),"allow-clear":"",onChange:g},{default:r(()=>[(d(!0),J(Z,null,Q(F.value,l=>(d(),m(i,{key:l.id,value:String(l.id)},{default:r(()=>[E(X(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),a.value&&p("user.permission.create")?(d(),m(b,{key:0,label:"نام سطح دسترسی","validate-status":s.user?"error":"",help:s.user},{default:r(()=>[y(Y,{value:k.value,"onUpdate:value":e[1]||(e[1]=l=>k.value=l),"allow-clear":""},null,8,["value"])]),_:1},8,["validate-status","help"])):O("",!0),y(b,{label:"نقش ها",class:"tree-item"},{default:r(()=>[y(H,{"checked-keys":u.value,"onUpdate:checkedKeys":e[2]||(e[2]=l=>u.value=l),"check-strictly":!1,checkable:"",style:{width:"100%"},"tree-data":L.value,"field-names":{title:"title",key:"key",children:"children"},"auto-expand-parent":V.value},null,8,["checked-keys","tree-data","auto-expand-parent"])]),_:1})]),!a.value&&p("user.permission.edit")?(d(),m(R,{key:0,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[3]||(e[3]=[E(" ثبت تغییرات ",-1)])]),_:1})):O("",!0),a.value&&p("user.permission.create")?(d(),m(R,{key:1,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[4]||(e[4]=[E(" افزودن ",-1)])]),_:1})):O("",!0)]),_:1})]),_:1})}}}),ae=te(re,[["__scopeId","data-v-e837c6b0"]]);export{ae as default}; diff --git a/apps/admin-panel/dist/assets/PictureOutlined-BQUWPT2c.js b/apps/admin-panel/dist/assets/PictureOutlined-BQUWPT2c.js new file mode 100644 index 0000000..0cb7419 --- /dev/null +++ b/apps/admin-panel/dist/assets/PictureOutlined-BQUWPT2c.js @@ -0,0 +1 @@ +import{c as u,I as l}from"./index-eLNLLYwC.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z"}}]},name:"picture",theme:"outlined"};function a(r){for(var t=1;t!!b.hasPermission(s),$=tt(b.isSuperAdmin),x=y(null),w=y([]),B=F(()=>Q()),k=y(!1),i=y(void 0),D=[{title:"عنوان",dataIndex:"title"},{title:"وزن",dataIndex:"grams"},{title:"اجرت درصدی",dataIndex:"percentage_pay"},{title:"تعداد",dataIndex:"qty"}];async function N(s){const{data:e}=await G.get(`admin/products/${s.id}`);i.value=e,k.value=!0}const{remove:V}=et({onSuccess:()=>{var s;return(s=x.value)==null?void 0:s.fetch()},successMessage:"محصول حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف محصول"});function E(s){return V(`delete/product/${s}`,{method:"post"})}const P=s=>{var e,f;return Number(((e=s.accounting_stock)==null?void 0:e.weight)??((f=s.accounting_stock)==null?void 0:f.count)??0)};function S(s){I.push(`/apps/product/edit/${s}`)}return(s,e)=>{const f=c("a-tag"),h=c("a-tooltip"),M=c("a-popconfirm"),p=c("a-descriptions-item"),O=c("a-descriptions"),z=c("a-table"),L=c("a-empty"),R=c("a-button"),T=c("a-modal"),U=c("a-card");return a(),_("div",ot,[l(U,{title:"لیست محصولات",class:"page-card"},{extra:o(()=>[v("product.list")?(a(),d(Z,{key:0,endpoint:"admin/products/accounting-sync",onDone:e[0]||(e[0]=t=>{var n;return(n=x.value)==null?void 0:n.fetch()})})):m("",!0)]),default:o(()=>[C("h6",at,"تعداد "+r(w.value.length)+" محصول انتخاب شده است.",1),l(Y,{ref_key:"tblProducts",ref:x,modelValue:w.value,"onUpdate:modelValue":e[1]||(e[1]=t=>w.value=t),model:g($),"has-selection":!0,"mobile-cards":""},{image:o(({record:t})=>[t.ProductImage&&t.ProductImage.length?(a(),_("img",{key:0,src:t.ProductImage[0].image,class:"product-thumb",alt:""},null,8,st)):(a(),_("span",nt,"-"))]),show_type:o(({record:t})=>[u(r(t.show_type_str),1)]),accounting:o(({record:t})=>[t.accounting_stock?(a(),_("div",lt,[e[4]||(e[4]=u(" موجودی: ",-1)),C("span",{class:j(P(t)<=0?"text-danger":"")},r(t.accounting_stock.weight!=null?`${Number(t.accounting_stock.weight)} گرم`:`${Number(t.accounting_stock.count)} عدد`),3)])):m("",!0),!t.ProductImage||!t.ProductImage.length?(a(),d(f,{key:1,color:"orange"},{default:o(()=>[...e[5]||(e[5]=[u("بدون تصویر — در اپ پنهان",-1)])]),_:1})):t.accounting_stock&&P(t)<=0?(a(),d(f,{key:2,color:"red"},{default:o(()=>[...e[6]||(e[6]=[u("ناموجود در حسابداری",-1)])]),_:1})):m("",!0)]),op:o(({record:t})=>[B.value?m("",!0):(a(),_("div",it,[v("product.list.edit")?(a(),d(h,{key:0,title:"ویرایش"},{default:o(()=>[l(g(A),{class:"cursor-pointer mx-1 text-primary",onClick:n=>S(t.id)},null,8,["onClick"])]),_:2},1024)):m("",!0),v("product.list.view")?(a(),d(h,{key:1,title:"اطلاعات جامع"},{default:o(()=>[l(g(H),{class:"cursor-pointer mx-1 text-warning",onClick:n=>N(t)},null,8,["onClick"])]),_:2},1024)):m("",!0),v("product.list.remove")?(a(),d(h,{key:2,title:"حذف"},{default:o(()=>[l(M,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:n=>E(t.id)},{title:o(()=>[...e[7]||(e[7]=[C("p",null,"آیا مطمئن به حذف محصول مورد نظر هستید ؟",-1)])]),default:o(()=>[l(g(J),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):m("",!0)]))]),_:1},8,["modelValue","model"]),l(T,{open:k.value,"onUpdate:open":e[3]||(e[3]=t=>k.value=t),title:"اطلاعات جامع محصول",width:"70%","wrap-class-name":"detail-modal"},{footer:o(()=>[l(R,{onClick:e[2]||(e[2]=t=>k.value=!1)},{default:o(()=>[...e[8]||(e[8]=[u("بستن",-1)])]),_:1})]),default:o(()=>{var t;return[i.value?(a(),_("div",ut,[l(O,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:o(()=>[l(p,{label:"نام محصول"},{default:o(()=>[u(r(i.value.title),1)]),_:1}),l(p,{label:"کد محصول"},{default:o(()=>[u(r(i.value.product_code||"-"),1)]),_:1}),l(p,{label:"برند"},{default:o(()=>{var n;return[u(r(((n=i.value.brand)==null?void 0:n.title)||"-"),1)]}),_:1}),l(p,{label:"دسته بندی"},{default:o(()=>{var n;return[u(r(((n=i.value.category)==null?void 0:n.title)||"-"),1)]}),_:1}),g(b).isSuperAdmin?(a(),d(p,{key:0,label:"نوع نمایش"},{default:o(()=>[u(r(i.value.show_type_str),1)]),_:1})):m("",!0),l(p,{label:"تعداد تنوع"},{default:o(()=>{var n;return[u(r(((n=i.value.variants_all)==null?void 0:n.length)??i.value.variants_count??0),1)]}),_:1})]),_:1}),(t=i.value.variants_all)!=null&&t.length?(a(),d(z,{key:0,class:"mt-4",size:"small","data-source":i.value.variants_all,columns:D,pagination:!1,"row-key":"id"},null,8,["data-source"])):m("",!0)])):(a(),d(L,{key:1}))]}),_:1},8,["open"])]),_:1})])}}}),yt=W(ct,[["__scopeId","data-v-034e8438"]]);export{yt as default}; diff --git a/apps/admin-panel/dist/assets/ProductList-DlDr1CI8.js b/apps/admin-panel/dist/assets/ProductList-DlDr1CI8.js new file mode 100644 index 0000000..f25fd6b --- /dev/null +++ b/apps/admin-panel/dist/assets/ProductList-DlDr1CI8.js @@ -0,0 +1 @@ +import{d as F,u as H,b as c,c as n,w as e,r as m,o,p as P,t as r,h as v,a as d,E as J,i as _,J as j,D as G,f as i,q as K,F as $,e as B,m as b,s as Q,y as W,l as Y,X as Z,_ as tt}from"./index-eLNLLYwC.js";import{X as et}from"./model-btNVLLyF.js";import{_ as at}from"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js";import{b as ot}from"./productListModel-DskQX-jW.js";import{u as st}from"./useDeleteHandler-BHXHWuUG.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";const nt={id:"page-user-list"},lt={class:"selected-count"},ut=["src"],it={key:1},ct={key:0,class:"product-tags"},rt={key:1,class:"text-muted"},dt={key:0,class:"acc-stock"},mt={key:0,class:"w-48 flex"},_t={key:0},pt={key:1},ft=F({__name:"ProductList",setup(gt){const D=Y(),x=H(),k=l=>!!x.hasPermission(l),N=ot(x.isSuperAdmin),h=b(null),w=b([]),V=Q(()=>Z()),y=b(!1),u=b(void 0),E=[{title:"عنوان",dataIndex:"title"},{title:"وزن",dataIndex:"grams"},{title:"اجرت درصدی",dataIndex:"percentage_pay"},{title:"تعداد",dataIndex:"qty"}];async function S(l){const{data:a}=await W.get(`admin/products/${l.id}`);u.value=a,y.value=!0}const{remove:L}=st({onSuccess:()=>{var l;return(l=h.value)==null?void 0:l.fetch()},successMessage:"محصول حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف محصول"});function M(l){return L(`delete/product/${l}`,{method:"post"})}const I=l=>{var a,p;return Number(((a=l.accounting_stock)==null?void 0:a.weight)??((p=l.accounting_stock)==null?void 0:p.count)??0)};function O(l){D.push(`/apps/product/edit/${l}`)}return(l,a)=>{const p=m("a-tag"),C=m("a-tooltip"),z=m("a-popconfirm"),f=m("a-descriptions-item"),R=m("a-descriptions"),T=m("a-table"),U=m("a-empty"),X=m("a-button"),q=m("a-modal"),A=m("a-card");return o(),c("div",nt,[n(A,{title:"لیست محصولات",class:"page-card"},{extra:e(()=>[k("product.list")?(o(),d(at,{key:0,endpoint:"admin/products/accounting-sync",onDone:a[0]||(a[0]=t=>{var s;return(s=h.value)==null?void 0:s.fetch()})})):_("",!0)]),default:e(()=>[P("h6",lt,"تعداد "+r(w.value.length)+" محصول انتخاب شده است.",1),n(et,{ref_key:"tblProducts",ref:h,modelValue:w.value,"onUpdate:modelValue":a[1]||(a[1]=t=>w.value=t),model:v(N),"has-selection":!0,"mobile-cards":""},{image:e(({record:t})=>[t.ProductImage&&t.ProductImage.length?(o(),c("img",{key:0,src:t.ProductImage[0].image,class:"product-thumb",alt:""},null,8,ut)):(o(),c("span",it,"-"))]),tags:e(({record:t})=>{var s;return[(s=t.tags)!=null&&s.length?(o(),c("div",ct,[(o(!0),c($,null,B(t.tags,g=>(o(),d(p,{key:g},{default:e(()=>[i(r(g),1)]),_:2},1024))),128))])):(o(),c("span",rt,"—"))]}),show_type:e(({record:t})=>[i(r(t.show_type_str),1)]),accounting:e(({record:t})=>[t.accounting_stock?(o(),c("div",dt,[a[4]||(a[4]=i(" موجودی: ",-1)),P("span",{class:K(I(t)<=0?"text-danger":"")},r(t.accounting_stock.weight!=null?`${Number(t.accounting_stock.weight)} گرم`:`${Number(t.accounting_stock.count)} عدد`),3)])):_("",!0),!t.ProductImage||!t.ProductImage.length?(o(),d(p,{key:1,color:"orange"},{default:e(()=>[...a[5]||(a[5]=[i("بدون تصویر — در اپ پنهان",-1)])]),_:1})):t.accounting_stock&&I(t)<=0?(o(),d(p,{key:2,color:"red"},{default:e(()=>[...a[6]||(a[6]=[i("ناموجود در حسابداری",-1)])]),_:1})):_("",!0)]),op:e(({record:t})=>[V.value?_("",!0):(o(),c("div",mt,[k("product.list.edit")?(o(),d(C,{key:0,title:"ویرایش"},{default:e(()=>[n(v(J),{class:"cursor-pointer mx-1 text-primary",onClick:s=>O(t.id)},null,8,["onClick"])]),_:2},1024)):_("",!0),k("product.list.view")?(o(),d(C,{key:1,title:"اطلاعات جامع"},{default:e(()=>[n(v(j),{class:"cursor-pointer mx-1 text-warning",onClick:s=>S(t)},null,8,["onClick"])]),_:2},1024)):_("",!0),k("product.list.remove")?(o(),d(C,{key:2,title:"حذف"},{default:e(()=>[n(z,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:s=>M(t.id)},{title:e(()=>[...a[7]||(a[7]=[P("p",null,"آیا مطمئن به حذف محصول مورد نظر هستید ؟",-1)])]),default:e(()=>[n(v(G),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):_("",!0)]))]),_:1},8,["modelValue","model"]),n(q,{open:y.value,"onUpdate:open":a[3]||(a[3]=t=>y.value=t),title:"اطلاعات جامع محصول",width:"70%","wrap-class-name":"detail-modal"},{footer:e(()=>[n(X,{onClick:a[2]||(a[2]=t=>y.value=!1)},{default:e(()=>[...a[8]||(a[8]=[i("بستن",-1)])]),_:1})]),default:e(()=>{var t;return[u.value?(o(),c("div",_t,[n(R,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:e(()=>[n(f,{label:"نام محصول"},{default:e(()=>[i(r(u.value.title),1)]),_:1}),n(f,{label:"کد محصول"},{default:e(()=>[i(r(u.value.product_code||"-"),1)]),_:1}),n(f,{label:"برند"},{default:e(()=>{var s;return[i(r(((s=u.value.brand)==null?void 0:s.title)||"-"),1)]}),_:1}),n(f,{label:"دسته بندی"},{default:e(()=>{var s;return[i(r(((s=u.value.category)==null?void 0:s.title)||"-"),1)]}),_:1}),n(f,{label:"برچسب‌ها"},{default:e(()=>{var s;return[(s=u.value.tags)!=null&&s.length?(o(!0),c($,{key:0},B(u.value.tags,g=>(o(),d(p,{key:g},{default:e(()=>[i(r(g),1)]),_:2},1024))),128)):(o(),c("span",pt,"-"))]}),_:1}),v(x).isSuperAdmin?(o(),d(f,{key:0,label:"نوع نمایش"},{default:e(()=>[i(r(u.value.show_type_str),1)]),_:1})):_("",!0),n(f,{label:"تعداد تنوع"},{default:e(()=>{var s;return[i(r(((s=u.value.variants_all)==null?void 0:s.length)??u.value.variants_count??0),1)]}),_:1})]),_:1}),(t=u.value.variants_all)!=null&&t.length?(o(),d(T,{key:0,class:"mt-4",size:"small","data-source":u.value.variants_all,columns:E,pagination:!1,"row-key":"id"},null,8,["data-source"])):_("",!0)])):(o(),d(U,{key:1}))]}),_:1},8,["open"])]),_:1})])}}}),Pt=tt(ft,[["__scopeId","data-v-78418fa2"]]);export{Pt as default}; diff --git a/apps/admin-panel/dist/assets/PromotionForm-ii0sb4Z5.js b/apps/admin-panel/dist/assets/PromotionForm-CAyJlwhb.js similarity index 98% rename from apps/admin-panel/dist/assets/PromotionForm-ii0sb4Z5.js rename to apps/admin-panel/dist/assets/PromotionForm-CAyJlwhb.js index 452f3a4..100e62f 100644 --- a/apps/admin-panel/dist/assets/PromotionForm-ii0sb4Z5.js +++ b/apps/admin-panel/dist/assets/PromotionForm-CAyJlwhb.js @@ -1 +1 @@ -import{d as h,x as ee,y as U,a as s,h as O,w as a,k as te,m as C,z as q,G,r as v,o as d,p as H,c as o,f as r,i as m,b as y,e as b,F as w,H as le,l as ae,t as g,_ as oe}from"./index-DajPj7Ec.js";import{_ as ue}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";const de={class:"grid-4 grid-4--tight"},ne={class:"grid-4 grid-4--tight"},ie=h({__name:"PromotionForm",props:{title:{default:"تعریف تخفیف"},allowCustomerScope:{type:Boolean,default:!0},open:{type:Boolean},id:{}},emits:["update:open","success"],setup(_,{emit:I}){const M=_,P=I,B=M.open!==void 0,A=te(),J=ae(),k=B?M.id:A.params.id,Y=C(!1),D=C([]),R=C([]),N=C([]),j=C([]),l=q({type:1,title:"",description:"",discount_percent:void 0,use_only:1,is_active:!0,start:void 0,end:void 0,product_id:void 0,category_id:void 0,customer_id:void 0,brand_id:void 0}),p=q({});function V(){l.product_id=void 0,l.category_id=void 0,l.customer_id=void 0,l.brand_id=void 0}function c(u,e){var n,f;return String(((f=(n=e==null?void 0:e.children)==null?void 0:n[0])==null?void 0:f.children)??"").toLowerCase().includes(u.toLowerCase())}function K(){return Object.keys(p).forEach(u=>delete p[u]),l.title||(p.title="لطفا مقدار را وارد کنید"),(l.discount_percent===void 0||l.discount_percent===null)&&(p.discount_percent="لطفا مقدار را وارد کنید"),Object.keys(p).length===0}async function F(){var u,e;if(K())try{Y.value=!0,k?await U.put(`product/variant/promotion/${k}`,l):await U.post("product/variant/promotion",l),G.info("اطلاعات با موفقیت به ثبت رسید."),B?(P("success"),P("update:open",!1)):J.push("/major/promotion/list")}catch(n){G.error(((e=(u=n==null?void 0:n.response)==null?void 0:u.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{Y.value=!1}}return ee(async()=>{try{const[u,e,n]=await Promise.all([U.post("products",{page:1,limit:500}),U.post("category",{page:1,limit:500}),U.get("brand")]);D.value=u.data.rows??[],R.value=e.data.rows??[],j.value=n.data??[]}catch(u){console.log(u)}if(M.allowCustomerScope)try{const{data:u}=await U.get("query/customer");N.value=u}catch(u){console.log(u)}if(k)try{const{data:u}=await U.get(`admin/promotions/${k}`);Object.assign(l,{type:u.type??1,title:u.title??"",description:u.description??"",discount_percent:u.discount_percent!==null?Number(u.discount_percent):void 0,use_only:u.use_only??1,is_active:u.is_active??!0,start:u.start?String(u.start).slice(0,10):void 0,end:u.end?String(u.end).slice(0,10):void 0,product_id:u.product_id??void 0,category_id:u.category_id??void 0,customer_id:u.customer_id??void 0,brand_id:u.brand_id??void 0})}catch(u){console.log(u)}}),(u,e)=>{const n=v("a-select-option"),f=v("a-select"),i=v("a-form-item"),$=v("a-input"),z=v("a-input-number"),S=v("a-date-picker"),x=v("a-radio"),L=v("a-radio-group"),E=v("a-switch"),T=v("a-textarea"),Q=v("a-button"),W=v("a-card"),X=v("a-form"),Z=v("a-spin");return B?(d(),s(ue,{key:0,open:!!_.open,id:O(k),"add-title":_.title,"edit-title":_.title,loading:Y.value,submitting:Y.value,width:"lg","onUpdate:open":e[12]||(e[12]=t=>u.$emit("update:open",t)),onSubmit:F},{default:a(()=>[H("div",de,[o(i,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(n,{value:1},{default:a(()=>[...e[25]||(e[25]=[r("محصولات",-1)])]),_:1}),o(n,{value:2},{default:a(()=>[...e[26]||(e[26]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(n,{key:0,value:3},{default:a(()=>[...e[27]||(e[27]=[r("مشتری",-1)])]),_:1})):m("",!0),o(n,{value:4},{default:a(()=>[...e[28]||(e[28]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(i,{label:"عنوان","validate-status":p.title?"error":"",help:p.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(i,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[2]||(e[2]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(i,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[3]||(e[3]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(i,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[4]||(e[4]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(i,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[5]||(e[5]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(i,{label:"درصد تخفیف","validate-status":p.discount_percent?"error":"",help:p.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[6]||(e[6]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(i,{label:"تاریخ شروع"},{default:a(()=>[o(S,{value:l.start,"onUpdate:value":e[7]||(e[7]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"تاریخ پایان"},{default:a(()=>[o(S,{value:l.end,"onUpdate:value":e[8]||(e[8]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[9]||(e[9]=t=>l.use_only=t)},{default:a(()=>[o(x,{value:1},{default:a(()=>[...e[29]||(e[29]=[r(" فقط یکبار",-1)])]),_:1}),o(x,{value:2},{default:a(()=>[...e[30]||(e[30]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(i,{label:"وضعیت تخفیف"},{default:a(()=>[o(E,{checked:l.is_active,"onUpdate:checked":e[10]||(e[10]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(i,{label:"توضیحات"},{default:a(()=>[o(T,{value:l.description,"onUpdate:value":e[11]||(e[11]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1})]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(d(),s(Z,{key:1,spinning:Y.value},{default:a(()=>[o(X,{layout:"vertical",onSubmit:le(F,["prevent"])},{default:a(()=>[o(W,{title:_.title,class:"mb-base page-card"},{default:a(()=>[H("div",ne,[o(i,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[13]||(e[13]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(n,{value:1},{default:a(()=>[...e[31]||(e[31]=[r("محصولات",-1)])]),_:1}),o(n,{value:2},{default:a(()=>[...e[32]||(e[32]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(n,{key:0,value:3},{default:a(()=>[...e[33]||(e[33]=[r("مشتری",-1)])]),_:1})):m("",!0),o(n,{value:4},{default:a(()=>[...e[34]||(e[34]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(i,{label:"عنوان","validate-status":p.title?"error":"",help:p.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[14]||(e[14]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(i,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[15]||(e[15]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(i,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[16]||(e[16]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(i,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(i,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[18]||(e[18]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(i,{label:"درصد تخفیف","validate-status":p.discount_percent?"error":"",help:p.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[19]||(e[19]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(i,{label:"تاریخ شروع"},{default:a(()=>[o(S,{value:l.start,"onUpdate:value":e[20]||(e[20]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"تاریخ پایان"},{default:a(()=>[o(S,{value:l.end,"onUpdate:value":e[21]||(e[21]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[22]||(e[22]=t=>l.use_only=t)},{default:a(()=>[o(x,{value:1},{default:a(()=>[...e[35]||(e[35]=[r(" فقط یکبار",-1)])]),_:1}),o(x,{value:2},{default:a(()=>[...e[36]||(e[36]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(i,{label:"وضعیت تخفیف"},{default:a(()=>[o(E,{checked:l.is_active,"onUpdate:checked":e[23]||(e[23]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(i,{label:"توضیحات"},{default:a(()=>[o(T,{value:l.description,"onUpdate:value":e[24]||(e[24]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),o(Q,{type:"primary",class:"form-submit",onClick:F},{default:a(()=>[...e[37]||(e[37]=[r("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),ve=oe(ie,[["__scopeId","data-v-ff6809ef"]]);export{ve as P}; +import{d as h,x as ee,y as U,a as s,h as O,w as a,k as te,m as C,z as q,G,r as v,o as d,p as H,c as o,f as r,i as m,b as y,e as b,F as w,H as le,l as ae,t as g,_ as oe}from"./index-eLNLLYwC.js";import{_ as ue}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const de={class:"grid-4 grid-4--tight"},ne={class:"grid-4 grid-4--tight"},ie=h({__name:"PromotionForm",props:{title:{default:"تعریف تخفیف"},allowCustomerScope:{type:Boolean,default:!0},open:{type:Boolean},id:{}},emits:["update:open","success"],setup(_,{emit:I}){const M=_,P=I,B=M.open!==void 0,A=te(),J=ae(),k=B?M.id:A.params.id,Y=C(!1),D=C([]),R=C([]),N=C([]),j=C([]),l=q({type:1,title:"",description:"",discount_percent:void 0,use_only:1,is_active:!0,start:void 0,end:void 0,product_id:void 0,category_id:void 0,customer_id:void 0,brand_id:void 0}),p=q({});function V(){l.product_id=void 0,l.category_id=void 0,l.customer_id=void 0,l.brand_id=void 0}function c(u,e){var n,f;return String(((f=(n=e==null?void 0:e.children)==null?void 0:n[0])==null?void 0:f.children)??"").toLowerCase().includes(u.toLowerCase())}function K(){return Object.keys(p).forEach(u=>delete p[u]),l.title||(p.title="لطفا مقدار را وارد کنید"),(l.discount_percent===void 0||l.discount_percent===null)&&(p.discount_percent="لطفا مقدار را وارد کنید"),Object.keys(p).length===0}async function F(){var u,e;if(K())try{Y.value=!0,k?await U.put(`product/variant/promotion/${k}`,l):await U.post("product/variant/promotion",l),G.info("اطلاعات با موفقیت به ثبت رسید."),B?(P("success"),P("update:open",!1)):J.push("/major/promotion/list")}catch(n){G.error(((e=(u=n==null?void 0:n.response)==null?void 0:u.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{Y.value=!1}}return ee(async()=>{try{const[u,e,n]=await Promise.all([U.post("products",{page:1,limit:500}),U.post("category",{page:1,limit:500}),U.get("brand")]);D.value=u.data.rows??[],R.value=e.data.rows??[],j.value=n.data??[]}catch(u){console.log(u)}if(M.allowCustomerScope)try{const{data:u}=await U.get("query/customer");N.value=u}catch(u){console.log(u)}if(k)try{const{data:u}=await U.get(`admin/promotions/${k}`);Object.assign(l,{type:u.type??1,title:u.title??"",description:u.description??"",discount_percent:u.discount_percent!==null?Number(u.discount_percent):void 0,use_only:u.use_only??1,is_active:u.is_active??!0,start:u.start?String(u.start).slice(0,10):void 0,end:u.end?String(u.end).slice(0,10):void 0,product_id:u.product_id??void 0,category_id:u.category_id??void 0,customer_id:u.customer_id??void 0,brand_id:u.brand_id??void 0})}catch(u){console.log(u)}}),(u,e)=>{const n=v("a-select-option"),f=v("a-select"),i=v("a-form-item"),$=v("a-input"),z=v("a-input-number"),S=v("a-date-picker"),x=v("a-radio"),L=v("a-radio-group"),E=v("a-switch"),T=v("a-textarea"),Q=v("a-button"),W=v("a-card"),X=v("a-form"),Z=v("a-spin");return B?(d(),s(ue,{key:0,open:!!_.open,id:O(k),"add-title":_.title,"edit-title":_.title,loading:Y.value,submitting:Y.value,width:"lg","onUpdate:open":e[12]||(e[12]=t=>u.$emit("update:open",t)),onSubmit:F},{default:a(()=>[H("div",de,[o(i,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(n,{value:1},{default:a(()=>[...e[25]||(e[25]=[r("محصولات",-1)])]),_:1}),o(n,{value:2},{default:a(()=>[...e[26]||(e[26]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(n,{key:0,value:3},{default:a(()=>[...e[27]||(e[27]=[r("مشتری",-1)])]),_:1})):m("",!0),o(n,{value:4},{default:a(()=>[...e[28]||(e[28]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(i,{label:"عنوان","validate-status":p.title?"error":"",help:p.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(i,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[2]||(e[2]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(i,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[3]||(e[3]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(i,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[4]||(e[4]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(i,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[5]||(e[5]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(i,{label:"درصد تخفیف","validate-status":p.discount_percent?"error":"",help:p.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[6]||(e[6]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(i,{label:"تاریخ شروع"},{default:a(()=>[o(S,{value:l.start,"onUpdate:value":e[7]||(e[7]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"تاریخ پایان"},{default:a(()=>[o(S,{value:l.end,"onUpdate:value":e[8]||(e[8]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[9]||(e[9]=t=>l.use_only=t)},{default:a(()=>[o(x,{value:1},{default:a(()=>[...e[29]||(e[29]=[r(" فقط یکبار",-1)])]),_:1}),o(x,{value:2},{default:a(()=>[...e[30]||(e[30]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(i,{label:"وضعیت تخفیف"},{default:a(()=>[o(E,{checked:l.is_active,"onUpdate:checked":e[10]||(e[10]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(i,{label:"توضیحات"},{default:a(()=>[o(T,{value:l.description,"onUpdate:value":e[11]||(e[11]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1})]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(d(),s(Z,{key:1,spinning:Y.value},{default:a(()=>[o(X,{layout:"vertical",onSubmit:le(F,["prevent"])},{default:a(()=>[o(W,{title:_.title,class:"mb-base page-card"},{default:a(()=>[H("div",ne,[o(i,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[13]||(e[13]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(n,{value:1},{default:a(()=>[...e[31]||(e[31]=[r("محصولات",-1)])]),_:1}),o(n,{value:2},{default:a(()=>[...e[32]||(e[32]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(n,{key:0,value:3},{default:a(()=>[...e[33]||(e[33]=[r("مشتری",-1)])]),_:1})):m("",!0),o(n,{value:4},{default:a(()=>[...e[34]||(e[34]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(i,{label:"عنوان","validate-status":p.title?"error":"",help:p.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[14]||(e[14]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(i,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[15]||(e[15]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(i,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[16]||(e[16]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(i,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(i,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[18]||(e[18]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(i,{label:"درصد تخفیف","validate-status":p.discount_percent?"error":"",help:p.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[19]||(e[19]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(i,{label:"تاریخ شروع"},{default:a(()=>[o(S,{value:l.start,"onUpdate:value":e[20]||(e[20]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"تاریخ پایان"},{default:a(()=>[o(S,{value:l.end,"onUpdate:value":e[21]||(e[21]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[22]||(e[22]=t=>l.use_only=t)},{default:a(()=>[o(x,{value:1},{default:a(()=>[...e[35]||(e[35]=[r(" فقط یکبار",-1)])]),_:1}),o(x,{value:2},{default:a(()=>[...e[36]||(e[36]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(i,{label:"وضعیت تخفیف"},{default:a(()=>[o(E,{checked:l.is_active,"onUpdate:checked":e[23]||(e[23]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(i,{label:"توضیحات"},{default:a(()=>[o(T,{value:l.description,"onUpdate:value":e[24]||(e[24]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),o(Q,{type:"primary",class:"form-submit",onClick:F},{default:a(()=>[...e[37]||(e[37]=[r("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),ve=oe(ie,[["__scopeId","data-v-ff6809ef"]]);export{ve as P}; diff --git a/apps/admin-panel/dist/assets/ReagentCustomer-BAV0MXtJ.js b/apps/admin-panel/dist/assets/ReagentCustomer-BXqRAucN.js similarity index 94% rename from apps/admin-panel/dist/assets/ReagentCustomer-BAV0MXtJ.js rename to apps/admin-panel/dist/assets/ReagentCustomer-BXqRAucN.js index 10db1a3..0fe2c72 100644 --- a/apps/admin-panel/dist/assets/ReagentCustomer-BAV0MXtJ.js +++ b/apps/admin-panel/dist/assets/ReagentCustomer-BXqRAucN.js @@ -1 +1 @@ -import{d as j,x as q,y as g,a as I,w as i,k as J,m as R,z as O,r as _,o as A,c as l,p as t,h as m,V as B,f as U,W as P,H as F,l as M,G as S,_ as T}from"./index-DajPj7Ec.js";import{_ as D}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import{_ as G}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import{U as H}from"./UserOutlined-CzruAWCH.js";import{S as L}from"./ShopOutlined-MoIbCAG4.js";import{E as Q}from"./EnvironmentOutlined-DzgF3_xx.js";import{C as W}from"./CameraOutlined-B6nXMt0y.js";import{P as X}from"./PercentageOutlined-D8KYbn5o.js";const K={class:"pf-layout"},Y={class:"pf-main"},Z={class:"pf-section"},ee={class:"pf-section__head"},ae={class:"pf-section__icon"},se={class:"pf-grid-2"},te={class:"pf-section"},le={class:"pf-section__head"},ne={class:"pf-section__icon"},oe={class:"pf-grid-3"},ie={class:"pf-section"},de={class:"pf-section__head"},re={class:"pf-section__icon"},ue={class:"pf-side"},pe={class:"pf-section"},me={class:"pf-section__head"},_e={class:"pf-section__icon"},ce={class:"avatar-slot"},fe={class:"pf-section"},ve={class:"pf-section__head"},ge={class:"pf-section__icon"},be={class:"pf-actions"},we={class:"pf-actions__hint"},h="لطفا مقدار را وارد کنید",ye=j({__name:"ReagentCustomer",setup(he){const E=J(),C=M(),p=E.params.id,b=R(!1),a=O({fname:"",lname:"",password:"",mobile:"",mcode:"",store_name:"",pasazh_name:"",address:"",percent:void 0,ncode:"",phone:"",city_id:void 0,gram_level:void 0,image_id:"",image_url:null}),x=R([]),d=O({}),N=O({});function $(r=[]){const e={};for(const[s,n]of Object.entries(a))r.includes(s)||JSON.stringify(n)!==JSON.stringify(N[s])&&(e[s]=n);return e}function z(r){a.image_id=r.id??""}async function V(r){var s;if(a.city_id=r,!r)return;let e=(s=x.value.find(n=>n.id===r))==null?void 0:s.percent;if(!e)try{const{data:n}=await g.get(`cities/get-percent-aux/${r}`);e=n}catch(n){console.log(n);return}a.percent=e==null?void 0:Number(e)}async function k(){var r,e,s,n,w,y;if(Object.keys(d).forEach(u=>delete d[u]),a.fname||(d.fname=h),a.lname||(d.lname=h),a.mobile||(d.mobile=h),!p&&!a.password&&(d.password=h),!Object.keys(d).length)try{b.value=!0;const{image_url:u,...c}=a,f=p?$(["image_url","password"]):c;p&&a.password&&(f.password=a.password);const v={...f,role:"SALES_EXPERT"};(!p||"fname"in f||"lname"in f)&&(v.name=`${a.fname} ${a.lname}`.trim()),p?await g.put(`users/${p}`,v):await g.post("users",v),S.info("اطلاعات با موفقیت به ثبت رسید."),C.go(-1)}catch(u){const c=(n=(s=(e=(r=u==null?void 0:u.response)==null?void 0:r.data)==null?void 0:e.errors)==null?void 0:s.mobile)==null?void 0:n[0];S.error(c??((y=(w=u==null?void 0:u.response)==null?void 0:w.data)==null?void 0:y.message)??"خطا در ثبت اطلاعات.")}finally{b.value=!1}}return q(async()=>{var r,e;try{const{data:s}=await g.post("cities/list",{page:1,limit:500});x.value=(s.rows??[]).map(n=>({id:n.id,title:n.title??n.name,parent:n.parent??null,percent:n.percent===null||n.percent===void 0?null:Number(n.percent)}))}catch(s){console.log(s)}if(p)try{const{data:s}=await g.get(`admin/users/${p}`);Object.assign(a,{fname:s.fname??"",lname:s.lname??"",mobile:s.mobile??"",address:s.address??"",percent:s.percent===null?void 0:Number(s.percent),ncode:s.ncode??"",phone:s.phone??"",city_id:s.city_id??void 0,gram_level:s.gram_level===null||s.gram_level===void 0?void 0:Number(s.gram_level),image_id:((r=s.image)==null?void 0:r.id)??"",image_url:((e=s.image)==null?void 0:e.image)??null,store_name:s.store_name??"",pasazh_name:s.pasazh_name??"",mcode:s.mcode??""}),Object.assign(N,JSON.parse(JSON.stringify(a)))}catch(s){console.log(s)}}),(r,e)=>{const s=_("a-input"),n=_("a-form-item"),w=_("a-input-password"),y=_("a-textarea"),u=_("a-input-number"),c=_("a-button"),f=_("a-form"),v=_("a-spin");return A(),I(v,{spinning:b.value},{default:i(()=>[l(f,{layout:"vertical",class:"pf-form",onSubmit:F(k,["prevent"])},{default:i(()=>[t("div",K,[t("div",Y,[t("section",Z,[t("div",ee,[t("span",ae,[l(m(H))]),e[15]||(e[15]=t("div",null,[t("h3",null,"اطلاعات پایه"),t("p",null,"مشخصات هویتی و اطلاعات ورود کارشناس")],-1))]),t("div",se,[l(n,{label:"نام ",required:"","validate-status":d.fname?"error":"",help:d.fname},{default:i(()=>[l(s,{value:a.fname,"onUpdate:value":e[0]||(e[0]=o=>a.fname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"نام خانوادگی",required:"","validate-status":d.lname?"error":"",help:d.lname},{default:i(()=>[l(s,{value:a.lname,"onUpdate:value":e[1]||(e[1]=o=>a.lname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"کد ملی"},{default:i(()=>[l(s,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=o=>a.ncode=o),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),l(n,{label:"تلفن"},{default:i(()=>[l(s,{value:a.phone,"onUpdate:value":e[3]||(e[3]=o=>a.phone=o),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1}),l(n,{label:"شماره تلفن همراه",required:"","validate-status":d.mobile?"error":"",help:d.mobile,class:"mb-0"},{default:i(()=>[l(s,{value:a.mobile,"onUpdate:value":e[4]||(e[4]=o=>a.mobile=o),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"رمز عبور",required:!m(p),"validate-status":d.password?"error":"",help:d.password,class:"mb-0"},{default:i(()=>[l(w,{value:a.password,"onUpdate:value":e[5]||(e[5]=o=>a.password=o)},null,8,["value"])]),_:1},8,["required","validate-status","help"])])]),t("section",te,[t("div",le,[t("span",ne,[l(m(L))]),e[16]||(e[16]=t("div",null,[t("h3",null,"اطلاعات تجاری"),t("p",null,"کد و مشخصات فروشگاه")],-1))]),t("div",oe,[l(n,{label:"کد مشتری",class:"mb-0"},{default:i(()=>[l(s,{value:a.mcode,"onUpdate:value":e[6]||(e[6]=o=>a.mcode=o)},null,8,["value"])]),_:1}),l(n,{label:"نام مغازه",class:"mb-0"},{default:i(()=>[l(s,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=o=>a.store_name=o)},null,8,["value"])]),_:1}),l(n,{label:"نام پاساژ",class:"mb-0"},{default:i(()=>[l(s,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=o=>a.pasazh_name=o)},null,8,["value"])]),_:1})])]),t("section",ie,[t("div",de,[t("span",re,[l(m(Q))]),e[17]||(e[17]=t("div",null,[t("h3",null,"آدرس"),t("p",null,"انتخاب شهر، درصد کمیسیون را بر اساس همان شهر پر می‌کند")],-1))]),l(n,{label:"شهر"},{default:i(()=>[l(D,{value:a.city_id,cities:x.value,placeholder:"شهر را انتخاب نمایید",onChange:V},null,8,["value","cities"])]),_:1}),l(n,{label:"آدرس",class:"mb-0"},{default:i(()=>[l(y,{value:a.address,"onUpdate:value":e[9]||(e[9]=o=>a.address=o),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),t("aside",ue,[t("section",pe,[t("div",me,[t("span",_e,[l(m(W))]),e[18]||(e[18]=t("div",null,[t("h3",null,"عکس پروفایل"),t("p",null,"تصویر نمایش داده‌شده برای کارشناس")],-1))]),t("div",ce,[l(G,{modelValue:a.image_url,"onUpdate:modelValue":[e[10]||(e[10]=o=>a.image_url=o),e[11]||(e[11]=o=>{o||(a.image_id="")})],purpose:"reagent.avatar",placeholder:"عکس",onOk:z},null,8,["modelValue"])])]),t("section",fe,[t("div",ve,[t("span",ge,[l(m(X))]),e[19]||(e[19]=t("div",null,[t("h3",null,"کمیسیون و اعتبار"),t("p",null,"درصد کمیسیون و سقف اعتبار")],-1))]),l(n,{label:"درصد کمیسیون"},{default:i(()=>[l(u,{value:a.percent,"onUpdate:value":e[12]||(e[12]=o=>a.percent=o),class:"w-full",step:.1,"addon-after":"٪"},null,8,["value"])]),_:1}),l(n,{label:"سقف اعتبار",class:"mb-0"},{default:i(()=>[l(u,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=o=>a.gram_level=o),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})])])]),t("div",be,[t("span",we,[l(m(B)),e[20]||(e[20]=U(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),l(c,{onClick:e[14]||(e[14]=o=>m(C).go(-1))},{default:i(()=>[...e[21]||(e[21]=[U("انصراف",-1)])]),_:1}),l(c,{type:"primary",class:"form-submit",loading:b.value,onClick:k},{icon:i(()=>[l(m(P))]),default:i(()=>[e[22]||(e[22]=U(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),Ee=T(ye,[["__scopeId","data-v-78564364"]]);export{Ee as R}; +import{d as j,x as q,y as g,a as I,w as i,k as J,m as R,z as O,r as _,o as A,c as l,p as t,h as m,V as B,f as U,W as P,H as F,l as M,G as S,_ as T}from"./index-eLNLLYwC.js";import{_ as D}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import{_ as G}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import{U as H}from"./UserOutlined-B4M5rNrX.js";import{S as L}from"./ShopOutlined-DIjF3I3z.js";import{E as Q}from"./EnvironmentOutlined-BKbou10z.js";import{C as W}from"./CameraOutlined-CFYC5ScW.js";import{P as X}from"./PercentageOutlined-DyprS4lh.js";const K={class:"pf-layout"},Y={class:"pf-main"},Z={class:"pf-section"},ee={class:"pf-section__head"},ae={class:"pf-section__icon"},se={class:"pf-grid-2"},te={class:"pf-section"},le={class:"pf-section__head"},ne={class:"pf-section__icon"},oe={class:"pf-grid-3"},ie={class:"pf-section"},de={class:"pf-section__head"},re={class:"pf-section__icon"},ue={class:"pf-side"},pe={class:"pf-section"},me={class:"pf-section__head"},_e={class:"pf-section__icon"},ce={class:"avatar-slot"},fe={class:"pf-section"},ve={class:"pf-section__head"},ge={class:"pf-section__icon"},be={class:"pf-actions"},we={class:"pf-actions__hint"},h="لطفا مقدار را وارد کنید",ye=j({__name:"ReagentCustomer",setup(he){const E=J(),C=M(),p=E.params.id,b=R(!1),a=O({fname:"",lname:"",password:"",mobile:"",mcode:"",store_name:"",pasazh_name:"",address:"",percent:void 0,ncode:"",phone:"",city_id:void 0,gram_level:void 0,image_id:"",image_url:null}),x=R([]),d=O({}),N=O({});function $(r=[]){const e={};for(const[s,n]of Object.entries(a))r.includes(s)||JSON.stringify(n)!==JSON.stringify(N[s])&&(e[s]=n);return e}function z(r){a.image_id=r.id??""}async function V(r){var s;if(a.city_id=r,!r)return;let e=(s=x.value.find(n=>n.id===r))==null?void 0:s.percent;if(!e)try{const{data:n}=await g.get(`cities/get-percent-aux/${r}`);e=n}catch(n){console.log(n);return}a.percent=e==null?void 0:Number(e)}async function k(){var r,e,s,n,w,y;if(Object.keys(d).forEach(u=>delete d[u]),a.fname||(d.fname=h),a.lname||(d.lname=h),a.mobile||(d.mobile=h),!p&&!a.password&&(d.password=h),!Object.keys(d).length)try{b.value=!0;const{image_url:u,...c}=a,f=p?$(["image_url","password"]):c;p&&a.password&&(f.password=a.password);const v={...f,role:"SALES_EXPERT"};(!p||"fname"in f||"lname"in f)&&(v.name=`${a.fname} ${a.lname}`.trim()),p?await g.put(`users/${p}`,v):await g.post("users",v),S.info("اطلاعات با موفقیت به ثبت رسید."),C.go(-1)}catch(u){const c=(n=(s=(e=(r=u==null?void 0:u.response)==null?void 0:r.data)==null?void 0:e.errors)==null?void 0:s.mobile)==null?void 0:n[0];S.error(c??((y=(w=u==null?void 0:u.response)==null?void 0:w.data)==null?void 0:y.message)??"خطا در ثبت اطلاعات.")}finally{b.value=!1}}return q(async()=>{var r,e;try{const{data:s}=await g.post("cities/list",{page:1,limit:500});x.value=(s.rows??[]).map(n=>({id:n.id,title:n.title??n.name,parent:n.parent??null,percent:n.percent===null||n.percent===void 0?null:Number(n.percent)}))}catch(s){console.log(s)}if(p)try{const{data:s}=await g.get(`admin/users/${p}`);Object.assign(a,{fname:s.fname??"",lname:s.lname??"",mobile:s.mobile??"",address:s.address??"",percent:s.percent===null?void 0:Number(s.percent),ncode:s.ncode??"",phone:s.phone??"",city_id:s.city_id??void 0,gram_level:s.gram_level===null||s.gram_level===void 0?void 0:Number(s.gram_level),image_id:((r=s.image)==null?void 0:r.id)??"",image_url:((e=s.image)==null?void 0:e.image)??null,store_name:s.store_name??"",pasazh_name:s.pasazh_name??"",mcode:s.mcode??""}),Object.assign(N,JSON.parse(JSON.stringify(a)))}catch(s){console.log(s)}}),(r,e)=>{const s=_("a-input"),n=_("a-form-item"),w=_("a-input-password"),y=_("a-textarea"),u=_("a-input-number"),c=_("a-button"),f=_("a-form"),v=_("a-spin");return A(),I(v,{spinning:b.value},{default:i(()=>[l(f,{layout:"vertical",class:"pf-form",onSubmit:F(k,["prevent"])},{default:i(()=>[t("div",K,[t("div",Y,[t("section",Z,[t("div",ee,[t("span",ae,[l(m(H))]),e[15]||(e[15]=t("div",null,[t("h3",null,"اطلاعات پایه"),t("p",null,"مشخصات هویتی و اطلاعات ورود کارشناس")],-1))]),t("div",se,[l(n,{label:"نام ",required:"","validate-status":d.fname?"error":"",help:d.fname},{default:i(()=>[l(s,{value:a.fname,"onUpdate:value":e[0]||(e[0]=o=>a.fname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"نام خانوادگی",required:"","validate-status":d.lname?"error":"",help:d.lname},{default:i(()=>[l(s,{value:a.lname,"onUpdate:value":e[1]||(e[1]=o=>a.lname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"کد ملی"},{default:i(()=>[l(s,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=o=>a.ncode=o),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),l(n,{label:"تلفن"},{default:i(()=>[l(s,{value:a.phone,"onUpdate:value":e[3]||(e[3]=o=>a.phone=o),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1}),l(n,{label:"شماره تلفن همراه",required:"","validate-status":d.mobile?"error":"",help:d.mobile,class:"mb-0"},{default:i(()=>[l(s,{value:a.mobile,"onUpdate:value":e[4]||(e[4]=o=>a.mobile=o),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"رمز عبور",required:!m(p),"validate-status":d.password?"error":"",help:d.password,class:"mb-0"},{default:i(()=>[l(w,{value:a.password,"onUpdate:value":e[5]||(e[5]=o=>a.password=o)},null,8,["value"])]),_:1},8,["required","validate-status","help"])])]),t("section",te,[t("div",le,[t("span",ne,[l(m(L))]),e[16]||(e[16]=t("div",null,[t("h3",null,"اطلاعات تجاری"),t("p",null,"کد و مشخصات فروشگاه")],-1))]),t("div",oe,[l(n,{label:"کد مشتری",class:"mb-0"},{default:i(()=>[l(s,{value:a.mcode,"onUpdate:value":e[6]||(e[6]=o=>a.mcode=o)},null,8,["value"])]),_:1}),l(n,{label:"نام مغازه",class:"mb-0"},{default:i(()=>[l(s,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=o=>a.store_name=o)},null,8,["value"])]),_:1}),l(n,{label:"نام پاساژ",class:"mb-0"},{default:i(()=>[l(s,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=o=>a.pasazh_name=o)},null,8,["value"])]),_:1})])]),t("section",ie,[t("div",de,[t("span",re,[l(m(Q))]),e[17]||(e[17]=t("div",null,[t("h3",null,"آدرس"),t("p",null,"انتخاب شهر، درصد کمیسیون را بر اساس همان شهر پر می‌کند")],-1))]),l(n,{label:"شهر"},{default:i(()=>[l(D,{value:a.city_id,cities:x.value,placeholder:"شهر را انتخاب نمایید",onChange:V},null,8,["value","cities"])]),_:1}),l(n,{label:"آدرس",class:"mb-0"},{default:i(()=>[l(y,{value:a.address,"onUpdate:value":e[9]||(e[9]=o=>a.address=o),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),t("aside",ue,[t("section",pe,[t("div",me,[t("span",_e,[l(m(W))]),e[18]||(e[18]=t("div",null,[t("h3",null,"عکس پروفایل"),t("p",null,"تصویر نمایش داده‌شده برای کارشناس")],-1))]),t("div",ce,[l(G,{modelValue:a.image_url,"onUpdate:modelValue":[e[10]||(e[10]=o=>a.image_url=o),e[11]||(e[11]=o=>{o||(a.image_id="")})],purpose:"reagent.avatar",placeholder:"عکس",onOk:z},null,8,["modelValue"])])]),t("section",fe,[t("div",ve,[t("span",ge,[l(m(X))]),e[19]||(e[19]=t("div",null,[t("h3",null,"کمیسیون و اعتبار"),t("p",null,"درصد کمیسیون و سقف اعتبار")],-1))]),l(n,{label:"درصد کمیسیون"},{default:i(()=>[l(u,{value:a.percent,"onUpdate:value":e[12]||(e[12]=o=>a.percent=o),class:"w-full",step:.1,"addon-after":"٪"},null,8,["value"])]),_:1}),l(n,{label:"سقف اعتبار",class:"mb-0"},{default:i(()=>[l(u,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=o=>a.gram_level=o),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})])])]),t("div",be,[t("span",we,[l(m(B)),e[20]||(e[20]=U(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),l(c,{onClick:e[14]||(e[14]=o=>m(C).go(-1))},{default:i(()=>[...e[21]||(e[21]=[U("انصراف",-1)])]),_:1}),l(c,{type:"primary",class:"form-submit",loading:b.value,onClick:k},{icon:i(()=>[l(m(P))]),default:i(()=>[e[22]||(e[22]=U(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),Ee=T(ye,[["__scopeId","data-v-78564364"]]);export{Ee as R}; diff --git a/apps/admin-panel/dist/assets/ReagentList-Bm3uQYje.js b/apps/admin-panel/dist/assets/ReagentList-Bm3uQYje.js new file mode 100644 index 0000000..55cc55c --- /dev/null +++ b/apps/admin-panel/dist/assets/ReagentList-Bm3uQYje.js @@ -0,0 +1 @@ +import{u as g,d as B,b as _,c as d,w as o,r as v,o as n,h as V,p as X,a as r,i as l,f as k,t as w,m as E,l as I,y as j,G as b}from"./index-eLNLLYwC.js";import{a as A,b as s,X as D}from"./model-btNVLLyF.js";import{_ as m}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js";import{_ as R}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./icons-DaMkWfMK.js";import"./UnorderedListOutlined-cPIiOEaQ.js";import"./PercentageOutlined-DyprS4lh.js";import"./UserAddOutlined-GWNEdhY8.js";import"./CreditCardOutlined-CcvN7g1Z.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./TeamOutlined-Bx4ezhPp.js";import"./UserOutlined-B4M5rNrX.js";import"./CameraOutlined-CFYC5ScW.js";function F(){const c=g();Object.keys(c.cityFilters).length<1&&c.getCities();const e=new A("admin/customers-omde/reagent/list","لیست کارشناسان فروش");return e.add(new s("id","کد").filterNumber()),e.add(new s("lname","نام خانوادگی").filterText().hidden()),e.add(new s("name","نام و نام خانوادگی").filterText()),e.add(new s("name","نام").filterText().hidden()),e.add(new s("mobile","موبایل").filterText().noSort()),e.add(new s("city_id","شهر").hidden().renderSlot("city").filterKey("city_id").filterSelect(c.cityFilters)),e.add(new s("gram_level","سطح اعتبار").filterNumber().noSort()),e.add(new s("percent","درصد").filterNumber().noSort()),e.add(new s("remain","بدهی گرمی").filterNumber().noSort()),e.add(new s("rial_remain","بدهی ریالی").filterNumber().noSort()),e.add(new s("grams_sell","میزان فروش").filterNumber().noSort()),e.add(new s("caj","تاریخ ثبت").filterDate().noSort()),e.add(new s("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new s("sts_str","وضعیت ثبت سفارش").renderSlot("sts").noSort()),e.add(new s("active","وضعیت حساب کاربری").renderSlot("active").noSort().filterSelect({1:"فعال","-1":"غیر فعال"})),e.add(new s("opt","عملیات").noSort().renderSlot("opt")),e}const L={id:"page-user-list"},P={key:0},G={key:1},K={class:"flex"},ne=B({__name:"ReagentList",setup(c){const e=I(),S=g(),a=i=>!!S.hasPermission(i),x=F(),y=E(null);async function h(i){var u;try{await j.put(`users/${i.id}`,{is_active:i.active!==1}),b.info("تغییرات ثبت شد "),await((u=y.value)==null?void 0:u.fetch())}catch{b.error("خطا در تغییر وضعیت")}}function C(){e.push("/reagent/add")}function N(i){e.push(`/reagent/edit/${i}`)}function $(i){e.push(`/reagent/view/${i}`)}return(i,u)=>{const p=v("a-tag"),T=v("a-card");return n(),_("div",L,[d(T,{title:"لیست کارشناسان فروش",class:"page-card"},{default:o(()=>[d(D,{ref_key:"tbl",ref:y,model:V(x),"mobile-cards":""},{add:o(()=>[a("persons.create.seller")?(n(),r(R,{key:0,rid:"persons.create.seller","add-label":"افزودن کارشناس فروش",onAdd:C})):l("",!0)]),city:o(({record:t})=>[t.city&&t.city.title?(n(),_("div",P,w(t.city.title),1)):(n(),_("div",G,"-"))]),sts:o(({record:t})=>[d(p,{color:t.sts===1?"green":"red"},{default:o(()=>[k(w(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[d(p,{color:t.active===1?"green":"red"},{default:o(()=>[k(w(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[X("div",K,[a("persons.list.sellers.edit")?(n(),r(m,{key:0,"icon-class":"w-5 h-5 text-primary",class:"ml-3",icon:"EditIcon",title:"ویرایش",onClick:f=>N(t.id)},null,8,["onClick"])):l("",!0),a("persons.list.sellers.view")?(n(),r(m,{key:1,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"EyeIcon",title:"مشاهده اطلاعات",onClick:f=>$(t.id)},null,8,["onClick"])):l("",!0),t.active==1&&a("persons.list.sellers.unable")?(n(),r(m,{key:2,"icon-class":"w-5 h-5 text-danger",class:"ml-3",icon:"XIcon",title:"غیر فعال کردن حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>h(t)},null,8,["onClick"])):l("",!0),t.active!==1&&a("persons.list.sellers.able")?(n(),r(m,{key:3,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"CheckIcon",title:"فعال سازی حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>h(t)},null,8,["onClick"])):l("",!0)])]),_:1},8,["model"])]),_:1})])}}});export{ne as default}; diff --git a/apps/admin-panel/dist/assets/ReagentList-CtR1WkfW.js b/apps/admin-panel/dist/assets/ReagentList-CtR1WkfW.js deleted file mode 100644 index c4eae06..0000000 --- a/apps/admin-panel/dist/assets/ReagentList-CtR1WkfW.js +++ /dev/null @@ -1 +0,0 @@ -import{u as g,d as B,b as _,c as d,w as o,r as v,o as n,h as V,p as X,a as r,i as l,f as k,t as w,m as E,l as I,y as j,G as b}from"./index-DajPj7Ec.js";import{a as A,b as s,X as D}from"./model-CR-NjhTP.js";import{_ as m}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js";import{_ as R}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";import"./icons-DiNnR1E8.js";import"./UnorderedListOutlined-B6W9NsW_.js";import"./PercentageOutlined-D8KYbn5o.js";import"./UserAddOutlined-tCWSfp_Y.js";import"./CreditCardOutlined-H5cAFLTI.js";import"./AppstoreOutlined-BPqrCmxh.js";import"./TeamOutlined-DPoMD9pK.js";import"./UserOutlined-CzruAWCH.js";import"./CameraOutlined-B6nXMt0y.js";function F(){const c=g();Object.keys(c.cityFilters).length<1&&c.getCities();const e=new A("admin/customers-omde/reagent/list","لیست کارشناسان فروش");return e.add(new s("id","کد").filterNumber()),e.add(new s("lname","نام خانوادگی").filterText().hidden()),e.add(new s("name","نام و نام خانوادگی").filterText()),e.add(new s("name","نام").filterText().hidden()),e.add(new s("mobile","موبایل").filterText().hidden().noSort()),e.add(new s("city_id","شهر").hidden().renderSlot("city").filterKey("city_id").filterSelect(c.cityFilters)),e.add(new s("gram_level","سطح اعتبار").filterNumber().noSort()),e.add(new s("percent","درصد").filterNumber().noSort()),e.add(new s("remain","بدهی گرمی").filterNumber().noSort()),e.add(new s("rial_remain","بدهی ریالی").filterNumber().noSort()),e.add(new s("grams_sell","میزان فروش").filterNumber().noSort()),e.add(new s("caj","تاریخ ثبت").filterDate().noSort()),e.add(new s("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new s("sts_str","وضعیت ثبت سفارش").renderSlot("sts").noSort()),e.add(new s("active","وضعیت حساب کاربری").renderSlot("active").noSort().filterSelect({1:"فعال","-1":"غیر فعال"})),e.add(new s("opt","عملیات").noSort().renderSlot("opt")),e}const L={id:"page-user-list"},P={key:0},G={key:1},K={class:"flex"},ne=B({__name:"ReagentList",setup(c){const e=I(),S=g(),a=i=>!!S.hasPermission(i),x=F(),h=E(null);async function y(i){var u;try{await j.put(`users/${i.id}`,{is_active:i.active!==1}),b.info("تغییرات ثبت شد "),await((u=h.value)==null?void 0:u.fetch())}catch{b.error("خطا در تغییر وضعیت")}}function C(){e.push("/reagent/add")}function N(i){e.push(`/reagent/edit/${i}`)}function $(i){e.push(`/reagent/view/${i}`)}return(i,u)=>{const p=v("a-tag"),T=v("a-card");return n(),_("div",L,[d(T,{title:"لیست کارشناسان فروش",class:"page-card"},{default:o(()=>[d(D,{ref_key:"tbl",ref:h,model:V(x),"mobile-cards":""},{add:o(()=>[a("persons.create.seller")?(n(),r(R,{key:0,rid:"persons.create.seller","add-label":"افزودن کارشناس فروش",onAdd:C})):l("",!0)]),city:o(({record:t})=>[t.city&&t.city.title?(n(),_("div",P,w(t.city.title),1)):(n(),_("div",G,"-"))]),sts:o(({record:t})=>[d(p,{color:t.sts===1?"green":"red"},{default:o(()=>[k(w(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[d(p,{color:t.active===1?"green":"red"},{default:o(()=>[k(w(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[X("div",K,[a("persons.list.sellers.edit")?(n(),r(m,{key:0,"icon-class":"w-5 h-5 text-primary",class:"ml-3",icon:"EditIcon",title:"ویرایش",onClick:f=>N(t.id)},null,8,["onClick"])):l("",!0),a("persons.list.sellers.view")?(n(),r(m,{key:1,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"EyeIcon",title:"مشاهده اطلاعات",onClick:f=>$(t.id)},null,8,["onClick"])):l("",!0),t.active==1&&a("persons.list.sellers.unable")?(n(),r(m,{key:2,"icon-class":"w-5 h-5 text-danger",class:"ml-3",icon:"XIcon",title:"غیر فعال کردن حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>y(t)},null,8,["onClick"])):l("",!0),t.active!==1&&a("persons.list.sellers.able")?(n(),r(m,{key:3,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"CheckIcon",title:"فعال سازی حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>y(t)},null,8,["onClick"])):l("",!0)])]),_:1},8,["model"])]),_:1})])}}});export{ne as default}; diff --git a/apps/admin-panel/dist/assets/SafetyCertificateOutlined-DSk-s9OX.js b/apps/admin-panel/dist/assets/SafetyCertificateOutlined-Du6lFDs_.js similarity index 95% rename from apps/admin-panel/dist/assets/SafetyCertificateOutlined-DSk-s9OX.js rename to apps/admin-panel/dist/assets/SafetyCertificateOutlined-Du6lFDs_.js index 4cc3829..37bd755 100644 --- a/apps/admin-panel/dist/assets/SafetyCertificateOutlined-DSk-s9OX.js +++ b/apps/admin-panel/dist/assets/SafetyCertificateOutlined-Du6lFDs_.js @@ -1 +1 @@ -import{c as f,I as l}from"./index-DajPj7Ec.js";var u={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0026 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"}}]},name:"safety-certificate",theme:"outlined"};function c(r){for(var t=1;t(a(),s(m,{title:t(o),model:t(e)},null,8,["title","model"]))}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/ShopkeeperList-pfD0i838.js b/apps/admin-panel/dist/assets/ShopkeeperList-pfD0i838.js deleted file mode 100644 index f93fe6a..0000000 --- a/apps/admin-panel/dist/assets/ShopkeeperList-pfD0i838.js +++ /dev/null @@ -1 +0,0 @@ -import{b as r,O as p,a as m}from"./OmdeCustomerList-c6FcwBcS.js";import{d as i,a as s,h as t,o as a}from"./index-DajPj7Ec.js";import"./index-BAamWbCu.js";import"./model-CR-NjhTP.js";import"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./DateInput-CSLG7sxn.js";import"./UserOutlined-CzruAWCH.js";import"./ShopOutlined-MoIbCAG4.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./PercentageOutlined-D8KYbn5o.js";import"./SafetyCertificateOutlined-DSk-s9OX.js";import"./UnorderedListOutlined-B6W9NsW_.js";const j=i({__name:"ShopkeeperList",setup(l){const o=p.shopkeeper.title,e=r("shopkeeper");return(n,c)=>(a(),s(m,{title:t(o),model:t(e)},null,8,["title","model"]))}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/SingleCustomer-BP-Jvfsy.js b/apps/admin-panel/dist/assets/SingleCustomer-Ds30MZZu.js similarity index 92% rename from apps/admin-panel/dist/assets/SingleCustomer-BP-Jvfsy.js rename to apps/admin-panel/dist/assets/SingleCustomer-Ds30MZZu.js index b3a166e..24fba8e 100644 --- a/apps/admin-panel/dist/assets/SingleCustomer-BP-Jvfsy.js +++ b/apps/admin-panel/dist/assets/SingleCustomer-Ds30MZZu.js @@ -1 +1 @@ -import{d as G,u as L,a as m,w as t,s as M,r as l,o as p,c as o,h as f,E as Q,i as w,Q as R,p as W,f as j,m as d,G as b,y as q,l as z,X as A,_ as D}from"./index-DajPj7Ec.js";import{a as H,b as u,X as J}from"./model-CR-NjhTP.js";import{C as Y}from"./CreditCardOutlined-H5cAFLTI.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";function Z(){const a=new H("admin/customers-omde/single/list","لیست مشتریان تک");return a.add(new u("id","کد").filterNumber()),a.add(new u("fname","نام").filterKey("fullName").filterText()),a.add(new u("lname","نام خانوادگی").filterKey("fullName").filterText().noSort()),a.add(new u("phone","تلفن تماس").filterKey("mobile").filterText().noSort()),a.add(new u("email","ایمیل").filterText().noSort()),a.add(new u("branch.name","نام شعبه").filterText().noSort()),a.add(new u("op","عملیات").noSort().renderSlot("op")),a}const ee={class:"charge-grid"},te=G({__name:"SingleCustomer",setup(a){const _=z(),y=L(),v=e=>!!y.hasPermission(e),k=Z(),S=d(null),h=M(()=>A()),c=d(!1),g=d(!1),r=d(void 0),C=d(void 0);function T(e){C.value=e,r.value=void 0,c.value=!0}function N(){r.value=void 0,c.value=!1}async function V(){var e,n;if(!C.value||!r.value){b.error("لطفا مقدار را وارد کنید");return}try{g.value=!0,await q.post("wallet/charge",{customer_id:C.value,value:r.value}),b.info("عملیات با موفقیت انجام شد"),c.value=!1,r.value=void 0,await _.push("/wallet")}catch(s){console.log(s),b.error(((n=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:n.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}function B(e){_.push(`/singleCustomer/edit/${e}`)}function X(e){_.push(`/singleCustomer/view/${e}`)}return(e,n)=>{const s=l("a-tooltip"),$=l("a-input-number"),E=l("a-form-item"),K=l("a-button"),O=l("a-popconfirm"),U=l("a-form"),I=l("a-spin"),P=l("a-modal"),F=l("a-card");return p(),m(F,{title:h.value?"لیست مشتریان":"لیست مشتریان تک فروشی",class:"page-card"},{default:t(()=>[o(J,{ref_key:"tbl",ref:S,model:f(k),"mobile-cards":""},{op:t(({record:i})=>[o(s,{title:"ویرایش"},{default:t(()=>[o(f(Q),{class:"cursor-pointer mx-1 text-primary",onClick:x=>B(i.id)},null,8,["onClick"])]),_:2},1024),v("wallet.charge")&&!h.value?(p(),m(s,{key:0,title:"شارژ کیف پول"},{default:t(()=>[o(f(Y),{class:"cursor-pointer mx-1",style:{color:"#d48806"},onClick:x=>T(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0),v("wallet.charge")?(p(),m(s,{key:1,title:"مشاهده اطلاعات"},{default:t(()=>[o(f(R),{class:"cursor-pointer mx-1 text-success",onClick:x=>X(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0)]),_:1},8,["model"]),v("wallet.charge")?(p(),m(P,{key:0,open:c.value,"onUpdate:open":n[1]||(n[1]=i=>c.value=i),footer:null,title:"شارژ کیف پول"},{default:t(()=>[o(I,{spinning:g.value},{default:t(()=>[o(U,{layout:"vertical"},{default:t(()=>[W("div",ee,[o(E,{label:"میزان شارژ"},{default:t(()=>[o($,{value:r.value,"onUpdate:value":n[0]||(n[0]=i=>r.value=i),class:"w-full"},null,8,["value"])]),_:1}),o(O,{style:{"margin-bottom":"24px"},title:"آیا از شارژ کیف پول مطمعن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:V,onCancel:N},{default:t(()=>[o(K,{type:"primary"},{default:t(()=>[...n[2]||(n[2]=[j("ثبت",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])]),_:1},8,["open"])):w("",!0)]),_:1},8,["title"])}}}),ie=D(te,[["__scopeId","data-v-9bf82b76"]]);export{ie as default}; +import{d as G,u as L,a as m,w as t,s as M,r as l,o as p,c as o,h as f,E as Q,i as w,Q as R,p as W,f as j,m as d,G as b,y as q,l as z,X as A,_ as D}from"./index-eLNLLYwC.js";import{a as H,b as u,X as J}from"./model-btNVLLyF.js";import{C as Y}from"./CreditCardOutlined-CcvN7g1Z.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";function Z(){const a=new H("admin/customers-omde/single/list","لیست مشتریان تک");return a.add(new u("id","کد").filterNumber()),a.add(new u("fname","نام").filterKey("fullName").filterText()),a.add(new u("lname","نام خانوادگی").filterKey("fullName").filterText().noSort()),a.add(new u("phone","تلفن تماس").filterKey("mobile").filterText().noSort()),a.add(new u("email","ایمیل").filterText().noSort()),a.add(new u("branch.name","نام شعبه").filterText().noSort()),a.add(new u("op","عملیات").noSort().renderSlot("op")),a}const ee={class:"charge-grid"},te=G({__name:"SingleCustomer",setup(a){const _=z(),y=L(),v=e=>!!y.hasPermission(e),k=Z(),S=d(null),h=M(()=>A()),c=d(!1),g=d(!1),r=d(void 0),C=d(void 0);function T(e){C.value=e,r.value=void 0,c.value=!0}function N(){r.value=void 0,c.value=!1}async function V(){var e,n;if(!C.value||!r.value){b.error("لطفا مقدار را وارد کنید");return}try{g.value=!0,await q.post("wallet/charge",{customer_id:C.value,value:r.value}),b.info("عملیات با موفقیت انجام شد"),c.value=!1,r.value=void 0,await _.push("/wallet")}catch(s){console.log(s),b.error(((n=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:n.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}function B(e){_.push(`/singleCustomer/edit/${e}`)}function X(e){_.push(`/singleCustomer/view/${e}`)}return(e,n)=>{const s=l("a-tooltip"),$=l("a-input-number"),E=l("a-form-item"),K=l("a-button"),O=l("a-popconfirm"),U=l("a-form"),I=l("a-spin"),P=l("a-modal"),F=l("a-card");return p(),m(F,{title:h.value?"لیست مشتریان":"لیست مشتریان تک فروشی",class:"page-card"},{default:t(()=>[o(J,{ref_key:"tbl",ref:S,model:f(k),"mobile-cards":""},{op:t(({record:i})=>[o(s,{title:"ویرایش"},{default:t(()=>[o(f(Q),{class:"cursor-pointer mx-1 text-primary",onClick:x=>B(i.id)},null,8,["onClick"])]),_:2},1024),v("wallet.charge")&&!h.value?(p(),m(s,{key:0,title:"شارژ کیف پول"},{default:t(()=>[o(f(Y),{class:"cursor-pointer mx-1",style:{color:"#d48806"},onClick:x=>T(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0),v("wallet.charge")?(p(),m(s,{key:1,title:"مشاهده اطلاعات"},{default:t(()=>[o(f(R),{class:"cursor-pointer mx-1 text-success",onClick:x=>X(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0)]),_:1},8,["model"]),v("wallet.charge")?(p(),m(P,{key:0,open:c.value,"onUpdate:open":n[1]||(n[1]=i=>c.value=i),footer:null,title:"شارژ کیف پول"},{default:t(()=>[o(I,{spinning:g.value},{default:t(()=>[o(U,{layout:"vertical"},{default:t(()=>[W("div",ee,[o(E,{label:"میزان شارژ"},{default:t(()=>[o($,{value:r.value,"onUpdate:value":n[0]||(n[0]=i=>r.value=i),class:"w-full"},null,8,["value"])]),_:1}),o(O,{style:{"margin-bottom":"24px"},title:"آیا از شارژ کیف پول مطمعن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:V,onCancel:N},{default:t(()=>[o(K,{type:"primary"},{default:t(()=>[...n[2]||(n[2]=[j("ثبت",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])]),_:1},8,["open"])):w("",!0)]),_:1},8,["title"])}}}),ie=D(te,[["__scopeId","data-v-9bf82b76"]]);export{ie as default}; diff --git a/apps/admin-panel/dist/assets/TaminList-BDxHKzcP.js b/apps/admin-panel/dist/assets/TaminList-BDxHKzcP.js new file mode 100644 index 0000000..c1d0026 --- /dev/null +++ b/apps/admin-panel/dist/assets/TaminList-BDxHKzcP.js @@ -0,0 +1 @@ +import{u as B,d as I,b as v,c as l,w as s,r as k,o as u,h as O,f as h,t as _,H as V,i as x,p as X,a as C,m as w,y as T,G as y,_ as U}from"./index-eLNLLYwC.js";import{a as j,b as r,X as A}from"./model-btNVLLyF.js";import{_ as M}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js";import{O as P,a as R}from"./OrderStatusTimeline-Dm95hywe.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./icons-DaMkWfMK.js";import"./UnorderedListOutlined-cPIiOEaQ.js";import"./PercentageOutlined-DyprS4lh.js";import"./UserAddOutlined-GWNEdhY8.js";import"./CreditCardOutlined-CcvN7g1Z.js";import"./AppstoreOutlined-D5DMeuPl.js";import"./TeamOutlined-Bx4ezhPp.js";import"./UserOutlined-B4M5rNrX.js";import"./CameraOutlined-CFYC5ScW.js";import"./PictureOutlined-BQUWPT2c.js";import"./SafetyCertificateOutlined-Du6lFDs_.js";function W(){const S=B(),o=new j("admin/orders/tamin/list","لیست سفارش های عمده");return o.add(new r("id","شماره").filterNumber()),o.add(new r("customer.name","مشتری").filterKey("customer.fullName").filterText()),o.add(new r("customer.mobile","موبایل").filterText().hidden().noSort()),o.add(new r("input","ورودی").filterKey("totalGoldWeightGrams").filterText()),o.add(new r("wage","اجرت").filterKey("wageWeightGrams").filterText().noSort()),o.add(new r("items","تعداد آیتم ها").renderSlot("items_len").noSort()),o.add(new r("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),o.add(new r("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),S.roles&&S.roles.includes("order.tamin.state")&&o.add(new r("sts","وضعیت").renderSlot("sts_str").noSort().filterSelect()),o.add(new r("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),o.add(new r("opt","عملیات").noSort().renderSlot("opt")),o}const E={id:"page-user-list"},H={class:"flex"},q={key:0},z=["onClick"],F={key:1},J=I({__name:"TaminList",setup(S){const o=B(),c=a=>!!o.hasPermission(a),N=W(),b=w(null),i=w(void 0),f=w(!1),d=w(!1);async function g(a){const{data:e}=await T.get(`admin/orders/${a}`);return e}async function $(a){i.value=await g(a.id),f.value=!0}async function D(a){i.value=await g(a.id),d.value=!0}async function K(a){var e,n;try{await T.post("order-sts/edit",{orderId:(e=i.value)==null?void 0:e.id,status:a.status,note:a.note}),d.value=!1,y.info("ویرایش موفق آمیز"),(n=b.value)==null||n.fetch()}catch{y.error("خطا در ویرایش")}}async function L(a){var e,n,m,p;try{await T.post("order-sts/edit",{orderId:(e=i.value)==null?void 0:e.id,status:a.status,remove:!0}),d.value=!1,y.info("ویرایش موفق آمیز"),(n=b.value)==null||n.fetch()}catch(t){y.error(((p=(m=t==null?void 0:t.response)==null?void 0:m.data)==null?void 0:p.message)??"خطا در ویرایش")}}return(a,e)=>{const n=k("a-button"),m=k("a-modal"),p=k("a-card");return u(),v("div",E,[l(p,{title:"لیست سفارش های عمده",class:"page-card"},{default:s(()=>[l(A,{ref_key:"tbl",ref:b,model:O(N),"mobile-cards":""},{opt:s(({record:t})=>[X("div",H,[c("order.tamin.view")?(u(),C(M,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:G=>$(t)},null,8,["onClick"])):x("",!0)])]),items_len:s(({text:t})=>[t?(u(),v("div",q,_(t.length),1)):x("",!0)]),sts_str:s(({record:t})=>[c("order.tamin.state")?(u(),v("a",{key:0,href:"",onClick:V(G=>D(t),["prevent"])},_(t.sts_str),9,z)):(u(),v("span",F,_(t.sts_str),1))]),confirmed_str:s(({record:t})=>[h(_(t.confirmed_str),1)]),_:1},8,["model"]),l(m,{open:d.value,"onUpdate:open":e[1]||(e[1]=t=>d.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:s(()=>[l(n,{onClick:e[0]||(e[0]=t=>d.value=!1)},{default:s(()=>[...e[4]||(e[4]=[h("بستن",-1)])]),_:1})]),default:s(()=>[i.value?(u(),C(P,{key:0,activity:i.value.activity||[],"can-submit":c("order.tamin.state.submit"),"can-remove":c("order.tamin.state.remove"),onSubmit:K,onRemove:L},null,8,["activity","can-submit","can-remove"])):x("",!0)]),_:1},8,["open"]),l(m,{open:f.value,"onUpdate:open":e[3]||(e[3]=t=>f.value=t),title:"مشاهده سفارش",width:"720px","wrap-class-name":"detail-modal"},{footer:s(()=>[l(n,{onClick:e[2]||(e[2]=t=>f.value=!1)},{default:s(()=>[...e[5]||(e[5]=[h("باشه",-1)])]),_:1})]),default:s(()=>[l(R,{order:i.value},null,8,["order"])]),_:1},8,["open"])]),_:1})])}}}),ve=U(J,[["__scopeId","data-v-8a3f7aba"]]);export{ve as default}; diff --git a/apps/admin-panel/dist/assets/TaminList-CDSG2cQ_.css b/apps/admin-panel/dist/assets/TaminList-CDSG2cQ_.css new file mode 100644 index 0000000..6718bf6 --- /dev/null +++ b/apps/admin-panel/dist/assets/TaminList-CDSG2cQ_.css @@ -0,0 +1 @@ +.flex-col[data-v-8a3f7aba]{flex-direction:column}.flex-1[data-v-8a3f7aba]{flex:1}.mr-3[data-v-8a3f7aba]{margin-left:.75rem} diff --git a/apps/admin-panel/dist/assets/TaminList-Cta7c5dR.js b/apps/admin-panel/dist/assets/TaminList-Cta7c5dR.js deleted file mode 100644 index 54be7fa..0000000 --- a/apps/admin-panel/dist/assets/TaminList-Cta7c5dR.js +++ /dev/null @@ -1 +0,0 @@ -import{u as X,d as R,b as c,c as a,w as t,r as u,o as s,h as J,f as d,t as l,H as Q,i as v,p as k,a as b,F as I,e as V,m as C,y as N,G as T,_ as Y}from"./index-DajPj7Ec.js";import{a as Z,b as m,X as ee}from"./model-CR-NjhTP.js";import{_ as te}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js";import{j as oe}from"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./icons-DiNnR1E8.js";import"./UnorderedListOutlined-B6W9NsW_.js";import"./PercentageOutlined-D8KYbn5o.js";import"./UserAddOutlined-tCWSfp_Y.js";import"./CreditCardOutlined-H5cAFLTI.js";import"./AppstoreOutlined-BPqrCmxh.js";import"./TeamOutlined-DPoMD9pK.js";import"./UserOutlined-CzruAWCH.js";import"./CameraOutlined-B6nXMt0y.js";import"./index-BAamWbCu.js";function ae(){const $=X(),r=new Z("admin/orders/tamin/list","لیست سفارش های عمده");return r.add(new m("id","شماره").filterNumber()),r.add(new m("customer.name","مشتری").filterKey("customer.fullName").filterText()),r.add(new m("customer.mobile","موبایل").filterText().hidden().noSort()),r.add(new m("input","ورودی").filterKey("totalGoldWeightGrams").filterText()),r.add(new m("wage","اجرت").filterKey("wageWeightGrams").filterText().noSort()),r.add(new m("items","تعداد آیتم ها").renderSlot("items_len").noSort()),r.add(new m("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),r.add(new m("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),$.roles&&$.roles.includes("order.tamin.state")&&r.add(new m("sts","وضعیت").renderSlot("sts_str").noSort().filterSelect()),r.add(new m("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),r.add(new m("opt","عملیات").noSort().renderSlot("opt")),r}const ne={id:"page-user-list"},se={class:"flex"},le={key:0},re=["onClick"],ie={key:1},de={class:"flex flex-col"},ue={key:0},ce={class:"flex"},me={class:"flex-1"},_e={key:1,class:"flex items-center"},fe={key:2},pe={key:0},ve=R({__name:"TaminList",setup($){const r=X(),g=n=>!!r.hasPermission(n),z=ae(),j=C(null),i=C(void 0),x=C(!1),w=C(!1),B=n=>n?oe(n):"";function A(n){return n.proceed?"green":"gray"}async function D(n){const{data:o}=await N.get(`admin/orders/${n}`);return o}async function F(n){i.value=await D(n.id),x.value=!0}async function M(n){i.value=await D(n.id),w.value=!0}async function P(n){var o,_;try{await N.post("order-sts/edit",{orderId:(o=i.value)==null?void 0:o.id,status:n.status,note:n.note}),w.value=!1,T.info("ویرایش موفق آمیز"),(_=j.value)==null||_.fetch()}catch{T.error("خطا در ویرایش")}}async function W(n){var o,_,f,h;try{await N.post("order-sts/edit",{orderId:(o=i.value)==null?void 0:o.id,status:n.status,remove:!0}),w.value=!1,T.info("ویرایش موفق آمیز"),(_=j.value)==null||_.fetch()}catch(S){T.error(((h=(f=S==null?void 0:S.response)==null?void 0:f.data)==null?void 0:h.message)??"خطا در ویرایش")}}return(n,o)=>{const _=u("a-tag"),f=u("a-button"),h=u("a-popconfirm"),S=u("a-input"),q=u("a-timeline-item"),E=u("a-timeline"),K=u("a-modal"),p=u("a-descriptions-item"),U=u("a-descriptions"),H=u("a-divider"),G=u("a-card"),O=u("a-empty");return s(),c("div",ne,[a(G,{title:"لیست سفارش های عمده",class:"page-card"},{default:t(()=>[a(ee,{ref_key:"tbl",ref:j,model:J(z),"mobile-cards":""},{opt:t(({record:e})=>[k("div",se,[g("order.tamin.view")?(s(),b(te,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:y=>F(e)},null,8,["onClick"])):v("",!0)])]),items_len:t(({text:e})=>[e?(s(),c("div",le,l(e.length),1)):v("",!0)]),sts_str:t(({record:e})=>[g("order.tamin.state")?(s(),c("a",{key:0,href:"",onClick:Q(y=>M(e),["prevent"])},l(e.sts_str),9,re)):(s(),c("span",ie,l(e.sts_str),1))]),confirmed_str:t(({record:e})=>[d(l(e.confirmed_str),1)]),_:1},8,["model"]),a(K,{open:w.value,"onUpdate:open":o[1]||(o[1]=e=>w.value=e),title:"وضعیت سفارش","wrap-class-name":"detail-modal"},{footer:t(()=>[a(f,{onClick:o[0]||(o[0]=e=>w.value=!1)},{default:t(()=>[...o[7]||(o[7]=[d("باشه",-1)])]),_:1})]),default:t(()=>[i.value?(s(),b(E,{key:0},{default:t(()=>[(s(!0),c(I,null,V(i.value.activity,(e,y)=>(s(),b(q,{key:y,color:A(e)},{default:t(()=>[k("div",de,[k("div",null,l(e.title),1),e.proceed?(s(),c("div",ue,[k("div",ce,[k("div",me,[a(_,null,{default:t(()=>[d(l(B(e.uaj)),1)]),_:2},1024)]),y>0&&g("order.tamin.state.remove")?(s(),b(h,{key:0,"ok-text":"بله","cancel-text":"بی خیال",onConfirm:L=>W(e)},{title:t(()=>[...o[4]||(o[4]=[k("p",null,"آیا مطمئن به حذف وضعیت مورد نظر هستید ؟",-1)])]),default:t(()=>[a(f,{size:"small",danger:""},{default:t(()=>[...o[5]||(o[5]=[d("حذف وضعیت",-1)])]),_:1})]),_:1},8,["onConfirm"])):v("",!0)])])):v("",!0),!e.proceed&&g("order.tamin.state.submit")?(s(),c("div",_e,[a(S,{value:e.note,"onUpdate:value":L=>e.note=L,placeholder:"یادداشت"},null,8,["value","onUpdate:value"]),a(f,{type:"text",size:"small",onClick:L=>P(e)},{default:t(()=>[...o[6]||(o[6]=[d("ثبت وضعیت",-1)])]),_:1},8,["onClick"])])):v("",!0),e.proceed?(s(),c("div",fe,l(e.note),1)):v("",!0)])]),_:2},1032,["color"]))),128))]),_:1})):v("",!0)]),_:1},8,["open"]),a(K,{open:x.value,"onUpdate:open":o[3]||(o[3]=e=>x.value=e),title:"مشاهده سفارش",width:"80%","wrap-class-name":"detail-modal"},{footer:t(()=>[a(f,{onClick:o[2]||(o[2]=e=>x.value=!1)},{default:t(()=>[...o[8]||(o[8]=[d("باشه",-1)])]),_:1})]),default:t(()=>[i.value?(s(),c("div",pe,[a(U,null,{default:t(()=>[a(p,{label:"مشتری"},{default:t(()=>[d(l(i.value.customer.fname)+" "+l(i.value.customer.lname),1)]),_:1}),a(p,{label:"تلفن همراه"},{default:t(()=>[d(l(i.value.customer.phone),1)]),_:1}),a(p,{label:"تاریخ ثبت"},{default:t(()=>[d(l(B(i.value.caj)),1)]),_:1}),a(p,{label:"وضعیت"},{default:t(()=>[d(l(i.value.sts_str),1)]),_:1})]),_:1}),a(G,{title:"آیتم های سفارش"},{default:t(()=>[(s(!0),c(I,null,V(i.value.items,(e,y)=>(s(),c("div",{key:y},[a(U,null,{default:t(()=>[a(p,{label:"نام محصول"},{default:t(()=>[a(_,{color:"blue"},{default:t(()=>[d(l(e.title),1)]),_:2},1024)]),_:2},1024),a(p,{label:"عنوان تنوع"},{default:t(()=>[d(l(e.variant_title),1)]),_:2},1024),a(p,{label:"وزن نهایی"},{default:t(()=>[a(_,{color:"red"},{default:t(()=>[d(l(e.grams),1)]),_:2},1024)]),_:2},1024),a(p,{label:"تعداد"},{default:t(()=>[a(_,{color:"orange"},{default:t(()=>[d(l(e.qty),1)]),_:2},1024)]),_:2},1024)]),_:2},1024),yC(p.icon)??k);function c(){u("click")}return(B,T)=>{const d=r("a-popconfirm"),f=r("a-tooltip");return t(),l("div",null,[_(f,{title:o.title},{default:s(()=>[o.popTitle?(t(),e(d,{key:0,"ok-text":"بله","cancel-text":"خیر",title:o.popTitle,onConfirm:c},{default:s(()=>[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass])},null,8,["class"]))]),_:1},8,["title"])):(t(),l("div",h,[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass]),onClick:c},null,8,["class"]))]))]),_:1},8,["title"])])}}});export{b as _}; +import{r as C}from"./icons-DaMkWfMK.js";import{U as k}from"./UnorderedListOutlined-cPIiOEaQ.js";import{d as v,o as t,b as l,c as _,w as s,a as e,g as i,q as a,s as x,r}from"./index-eLNLLYwC.js";const h={key:1},b=v({__name:"TooltipBtn",props:{title:{},popTitle:{},icon:{},iconClass:{default:"w-5 h-5"}},emits:["click"],setup(o,{emit:m}){const p=o,u=m,n=x(()=>C(p.icon)??k);function c(){u("click")}return(B,T)=>{const d=r("a-popconfirm"),f=r("a-tooltip");return t(),l("div",null,[_(f,{title:o.title},{default:s(()=>[o.popTitle?(t(),e(d,{key:0,"ok-text":"بله","cancel-text":"خیر",title:o.popTitle,onConfirm:c},{default:s(()=>[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass])},null,8,["class"]))]),_:1},8,["title"])):(t(),l("div",h,[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass]),onClick:c},null,8,["class"]))]))]),_:1},8,["title"])])}}});export{b as _}; diff --git a/apps/admin-panel/dist/assets/UnorderedListOutlined-B6W9NsW_.js b/apps/admin-panel/dist/assets/UnorderedListOutlined-cPIiOEaQ.js similarity index 97% rename from apps/admin-panel/dist/assets/UnorderedListOutlined-B6W9NsW_.js rename to apps/admin-panel/dist/assets/UnorderedListOutlined-cPIiOEaQ.js index 83e9ce2..1396abb 100644 --- a/apps/admin-panel/dist/assets/UnorderedListOutlined-B6W9NsW_.js +++ b/apps/admin-panel/dist/assets/UnorderedListOutlined-cPIiOEaQ.js @@ -1 +1 @@ -import{c as o,I as u}from"./index-DajPj7Ec.js";var s={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z"}}]},name:"stop",theme:"outlined"};function c(r){for(var t=1;tdelete l[n]),e.fname||(l.fname=f),e.lname||(l.lname=f),e.mobile||(l.mobile=f),(e.ut===void 0||e.ut===null)&&(l.ut=f),!d&&!e.role&&(l.role=f),!d&&!e.password&&(l.password=f),e.password&&e.password!==e.password_confirmation&&(l.password_confirmation="رمز عبور و تأیید آن یکسان نیستند"),Object.keys(l).length===0}async function S(){var n,t;if(z())try{_.value=!0;const u={name:`${e.fname} ${e.lname}`.trim(),mobile:e.mobile,ut:e.ut};(!d||e.role!==void 0)&&(u.role=e.role),e.password&&(u.password=e.password),d?await c.put(`users/${d}`,u):await c.post("users",u),D.info("اطلاعات با موفقیت به ثبت رسید."),x?(O("success"),O("update:open",!1)):T.push("/user/list")}catch(u){D.error(((t=(n=u==null?void 0:u.response)==null?void 0:n.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}return q(async()=>{try{const[{data:n},{data:t}]=await Promise.all([c.get("const/__list__ut"),c.get("admin/users/role-options")]);B.value=n,$.value=t}catch(n){console.log(n)}if(d)try{const{data:n}=await c.get(`admin/users/${d}`),t=String(n.name??"").trim().split(" ");Object.assign(e,{fname:t[0]??"",lname:t.slice(1).join(" "),mobile:n.mobile??"",ut:n.ut??void 0,role:n.role??void 0,password:"",password_confirmation:""})}catch(n){console.log(n)}}),(n,t)=>{const u=p("a-input"),r=p("a-form-item"),w=p("a-select-option"),y=p("a-select"),g=p("a-input-password"),G=p("a-button"),H=p("a-card"),L=p("a-form"),P=p("a-spin");return x?(i(),v(X,{key:0,open:!!E.open,id:U(d),"add-title":"افزودن مدیر","edit-title":"ویرایش مدیر",loading:_.value,submitting:_.value,"onUpdate:open":t[7]||(t[7]=a=>n.$emit("update:open",a)),onSubmit:S},{default:s(()=>[V("div",Y,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[0]||(t[0]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[1]||(t[1]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[2]||(t[2]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[3]||(t[3]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[4]||(t[4]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[5]||(t[5]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[6]||(t[6]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",Z,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0)]),_:1},8,["open","id","loading","submitting"])):(i(),v(P,{key:1,spinning:_.value},{default:s(()=>[o(L,{layout:"vertical",onSubmit:J(S,["prevent"])},{default:s(()=>[o(H,{title:U(d)?"ویرایش مدیر":"افزودن مدیر",class:"mb-base page-card"},{default:s(()=>[V("div",ee,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[8]||(t[8]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[9]||(t[9]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[10]||(t[10]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[11]||(t[11]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[12]||(t[12]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[13]||(t[13]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[14]||(t[14]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",ae,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0),o(G,{type:"primary",class:"form-submit",onClick:S},{default:s(()=>[...t[15]||(t[15]=[b("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),se=W(te,[["__scopeId","data-v-5e70913d"]]);export{se as default}; +import{d as Q,x as q,y as c,a as v,w as s,h as U,k as A,m as j,z as R,r as p,o as i,p as V,c as o,b as m,e as h,f as b,t as k,F as C,i as M,H as J,G as D,l as K,_ as W}from"./index-eLNLLYwC.js";import{_ as X}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const Y={class:"grid-3"},Z={key:0,class:"hint"},ee={class:"grid-3"},ae={key:0,class:"hint"},f="لطفا مقدار را وارد کنید",te=Q({__name:"UserCreate",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(E,{emit:F}){const N=E,O=F,x=N.open!==void 0,I=A(),T=K(),d=x?N.id:I.params.id,_=j(!1),B=j([]),$=j([]),e=R({fname:"",lname:"",mobile:"",ut:void 0,role:void 0,password:"",password_confirmation:""}),l=R({});function z(){return Object.keys(l).forEach(n=>delete l[n]),e.fname||(l.fname=f),e.lname||(l.lname=f),e.mobile||(l.mobile=f),(e.ut===void 0||e.ut===null)&&(l.ut=f),!d&&!e.role&&(l.role=f),!d&&!e.password&&(l.password=f),e.password&&e.password!==e.password_confirmation&&(l.password_confirmation="رمز عبور و تأیید آن یکسان نیستند"),Object.keys(l).length===0}async function S(){var n,t;if(z())try{_.value=!0;const u={name:`${e.fname} ${e.lname}`.trim(),mobile:e.mobile,ut:e.ut};(!d||e.role!==void 0)&&(u.role=e.role),e.password&&(u.password=e.password),d?await c.put(`users/${d}`,u):await c.post("users",u),D.info("اطلاعات با موفقیت به ثبت رسید."),x?(O("success"),O("update:open",!1)):T.push("/user/list")}catch(u){D.error(((t=(n=u==null?void 0:u.response)==null?void 0:n.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}return q(async()=>{try{const[{data:n},{data:t}]=await Promise.all([c.get("const/__list__ut"),c.get("admin/users/role-options")]);B.value=n,$.value=t}catch(n){console.log(n)}if(d)try{const{data:n}=await c.get(`admin/users/${d}`),t=String(n.name??"").trim().split(" ");Object.assign(e,{fname:t[0]??"",lname:t.slice(1).join(" "),mobile:n.mobile??"",ut:n.ut??void 0,role:n.role??void 0,password:"",password_confirmation:""})}catch(n){console.log(n)}}),(n,t)=>{const u=p("a-input"),r=p("a-form-item"),w=p("a-select-option"),y=p("a-select"),g=p("a-input-password"),G=p("a-button"),H=p("a-card"),L=p("a-form"),P=p("a-spin");return x?(i(),v(X,{key:0,open:!!E.open,id:U(d),"add-title":"افزودن مدیر","edit-title":"ویرایش مدیر",loading:_.value,submitting:_.value,"onUpdate:open":t[7]||(t[7]=a=>n.$emit("update:open",a)),onSubmit:S},{default:s(()=>[V("div",Y,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[0]||(t[0]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[1]||(t[1]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[2]||(t[2]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[3]||(t[3]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[4]||(t[4]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[5]||(t[5]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[6]||(t[6]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",Z,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0)]),_:1},8,["open","id","loading","submitting"])):(i(),v(P,{key:1,spinning:_.value},{default:s(()=>[o(L,{layout:"vertical",onSubmit:J(S,["prevent"])},{default:s(()=>[o(H,{title:U(d)?"ویرایش مدیر":"افزودن مدیر",class:"mb-base page-card"},{default:s(()=>[V("div",ee,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[8]||(t[8]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[9]||(t[9]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[10]||(t[10]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[11]||(t[11]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[12]||(t[12]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[13]||(t[13]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[14]||(t[14]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",ae,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0),o(G,{type:"primary",class:"form-submit",onClick:S},{default:s(()=>[...t[15]||(t[15]=[b("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),se=W(te,[["__scopeId","data-v-5e70913d"]]);export{se as default}; diff --git a/apps/admin-panel/dist/assets/UserEdit-DgpzTP1E.js b/apps/admin-panel/dist/assets/UserEdit-DgpzTP1E.js new file mode 100644 index 0000000..f2e77b7 --- /dev/null +++ b/apps/admin-panel/dist/assets/UserEdit-DgpzTP1E.js @@ -0,0 +1 @@ +import e from"./UserCreate-8S3eAopa.js";import{d as r,a as o,o as t}from"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const _=r({__name:"UserEdit",setup(a){return(s,n)=>(t(),o(e))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/UserEdit-DvU5z6vT.js b/apps/admin-panel/dist/assets/UserEdit-DvU5z6vT.js deleted file mode 100644 index b6a01de..0000000 --- a/apps/admin-panel/dist/assets/UserEdit-DvU5z6vT.js +++ /dev/null @@ -1 +0,0 @@ -import e from"./UserCreate-B9hxrLOO.js";import{d as r,a as o,o as t}from"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";const _=r({__name:"UserEdit",setup(a){return(s,n)=>(t(),o(e))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/UserOutlined-CzruAWCH.js b/apps/admin-panel/dist/assets/UserOutlined-B4M5rNrX.js similarity index 95% rename from apps/admin-panel/dist/assets/UserOutlined-CzruAWCH.js rename to apps/admin-panel/dist/assets/UserOutlined-B4M5rNrX.js index 1e26906..41e5518 100644 --- a/apps/admin-panel/dist/assets/UserOutlined-CzruAWCH.js +++ b/apps/admin-panel/dist/assets/UserOutlined-B4M5rNrX.js @@ -1 +1 @@ -import{c as u,I as l}from"./index-DajPj7Ec.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"}}]},name:"user",theme:"outlined"};function c(r){for(var e=1;e(r(),o(t,{title:"مشاهده اطلاعات مشتری عمده","show-activity":!0,"show-wallet":!1,"edit-route":"bulkCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/ViewOmdeCustomer-eFH3i6bz.js b/apps/admin-panel/dist/assets/ViewOmdeCustomer-eFH3i6bz.js deleted file mode 100644 index 8c03947..0000000 --- a/apps/admin-panel/dist/assets/ViewOmdeCustomer-eFH3i6bz.js +++ /dev/null @@ -1 +0,0 @@ -import{C as t}from"./CustomerDetail-DzOk8IG6.js";import{d as e,a as o,o as r}from"./index-DajPj7Ec.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./UserOutlined-CzruAWCH.js";const _=e({__name:"ViewOmdeCustomer",setup(a){return(i,m)=>(r(),o(t,{title:"مشاهده اطلاعات مشتری عمده","show-activity":!0,"show-wallet":!1,"edit-route":"bulkCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/ViewSingleCustomer-B2QupTSx.js b/apps/admin-panel/dist/assets/ViewSingleCustomer-B2QupTSx.js new file mode 100644 index 0000000..afb0fd3 --- /dev/null +++ b/apps/admin-panel/dist/assets/ViewSingleCustomer-B2QupTSx.js @@ -0,0 +1 @@ +import{C as t}from"./CustomerDetail-BxNzOtlQ.js";import{d as e,a as o,o as r}from"./index-eLNLLYwC.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./EnvironmentOutlined-BKbou10z.js";import"./UserOutlined-B4M5rNrX.js";const _=e({__name:"ViewSingleCustomer",setup(i){return(s,a)=>(r(),o(t,{title:"مشاهده اطلاعات مشتری","show-wallet":!0,"show-activity":!1,"edit-route":"singleCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/ViewSingleCustomer-BsTNdacv.js b/apps/admin-panel/dist/assets/ViewSingleCustomer-BsTNdacv.js deleted file mode 100644 index 0d1c447..0000000 --- a/apps/admin-panel/dist/assets/ViewSingleCustomer-BsTNdacv.js +++ /dev/null @@ -1 +0,0 @@ -import{C as t}from"./CustomerDetail-DzOk8IG6.js";import{d as e,a as o,o as r}from"./index-DajPj7Ec.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./EnvironmentOutlined-DzgF3_xx.js";import"./UserOutlined-CzruAWCH.js";const _=e({__name:"ViewSingleCustomer",setup(i){return(s,a)=>(r(),o(t,{title:"مشاهده اطلاعات مشتری","show-wallet":!0,"show-activity":!1,"edit-route":"singleCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/accounting-SNbebogb.js b/apps/admin-panel/dist/assets/accounting-Dbj920fC.js similarity index 99% rename from apps/admin-panel/dist/assets/accounting-SNbebogb.js rename to apps/admin-panel/dist/assets/accounting-Dbj920fC.js index 399668e..03cf1e3 100644 --- a/apps/admin-panel/dist/assets/accounting-SNbebogb.js +++ b/apps/admin-panel/dist/assets/accounting-Dbj920fC.js @@ -1 +1 @@ -import{m as Je}from"./index-BAamWbCu.js";import{c as a,I as Ut,d as mt,n as Qe,o,b as c,p as n,a as x,g as Nt,f as u,t as v,w as l,i as _,F as D,e as Oe,q as Le,h as U,J as ht,s as M,z as ne,m as h,y as j,G as B,r as f,K as vt,L as Tt,_ as pt,u as $t,x as Dt,j as T}from"./index-DajPj7Ec.js";import{L as It}from"./LockOutlined-XBpx1rxs.js";import{S as qe}from"./SafetyCertificateOutlined-DSk-s9OX.js";var Mt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"}}]},name:"minus-circle",theme:"filled"};function ct(C){for(var A=1;Ap.form.provider==="none"?null:p.form.provider),Z=M(()=>{var r;return((r=p.overview)==null?void 0:r.config)??null}),Y=r=>{var t;return(t=Z.value)==null?void 0:t[r]},oe=M(()=>{var r;return!!(i.value&&((r=Y(i.value))!=null&&r.tokenSet))}),O=M(()=>!!i.value&&/^https:\/\//i.test(p.form[i.value].baseUrl||"")),m=(r,t)=>{var g,y,N,I,ae;return JSON.stringify(t==="none"?{provider:t}:{provider:t,baseUrl:((g=r[t])==null?void 0:g.baseUrl)??"",caCert:((y=r[t])==null?void 0:y.caCert)??"",timeoutMs:(N=r[t])==null?void 0:N.timeoutMs,dbName:t==="tahesab"?(I=r.tahesab)==null?void 0:I.dbName:void 0,balanceOwesWhen:t==="zarrin"?(ae=r.zarrin)==null?void 0:ae.balanceOwesWhen:void 0})},X=M(()=>{var r;return Z.value?p.form.provider!==Z.value.provider?!0:i.value?m(p.form,i.value)!==m(Z.value,i.value)||!!((r=p.tokens[i.value])!=null&&r.trim()):!1:!1}),$e=M(()=>!!Z.value&&Z.value.provider!=="none"&&Z.value.provider!==p.form.provider),be=r=>r?Je(r).format("jYYYY/jMM/jDD ساعت HH:mm"):"",G=M(()=>{const r=p.overview;if(!r)return{tone:"off",icon:Pe,title:"…",text:"",rows:[]};const t=r.config;if(t.provider==="none")return{tone:"off",icon:Pe,title:"اتصال خاموش است",text:"هیچ اطلاعاتی با نرم‌افزار حسابداری رد و بدل نمی‌شود."};const g=W[t.provider];if(r.inactiveReason)return{tone:"bad",icon:vt,title:`اتصال به ${g} کار نمی‌کند`,text:r.inactiveReason};const y=r.realtime;if(y!=null&&y.lastError)return{tone:"bad",icon:vt,title:`${g}: ارتباط برقرار نیست`,text:y.lastError};const I=[{label:"آدرس",value:t[t.provider].baseUrl,ltr:!0}];return t.provider==="tahesab"&&I.push({label:"دیتابیس",value:t.tahesab.dbName,ltr:!0}),y!=null&&y.lastOkAt&&I.push({label:"آخرین ارتباط موفق",value:be(y.lastOkAt)}),{tone:"ok",icon:Tt,title:`متصل به ${g}`,text:"",rows:I}}),ee=ne({tahesab:!1,zarrin:!1});function ce(){i.value&&(p.tokens[i.value]="",ee[i.value]=!1)}Qe(()=>p.overview,()=>{ee.tahesab=!1,ee.zarrin=!1,S.value=null});const _e=M({get:()=>i.value?Math.round((p.form[i.value].timeoutMs??2e4)/1e3):20,set:r=>{i.value&&(p.form[i.value].timeoutMs=Math.max(3,Math.min(120,Number(r)||20))*1e3)}}),H=h(!1),S=h(null),ye=r=>{var t;return((t=r.match(/CN=([^\n,]+)/))==null?void 0:t[1])??r.replace(/\n/g,", ")},ie=r=>r?Je(new Date(r)).format("jYYYY/jMM/jDD"):"—",re=M(()=>{var r;return!!i.value&&(p.form[i.value].caCert||"")!==(((r=Y(i.value))==null?void 0:r.caCert)||"")}),q=M(()=>{var r;return i.value?re.value?S.value&&S.value.pem===p.form[i.value].caCert?S.value:null:((r=Y(i.value))==null?void 0:r.caInfo)??null:null});async function ue(){var r,t;if(i.value){H.value=!0;try{const{data:g}=await j.post("admin/accounting/certificate",{baseUrl:p.form[i.value].baseUrl});S.value=g,p.form[i.value].caCert&&g.pem.trim()===p.form[i.value].caCert.trim()?B.success("گواهی سرور همان گواهی تأییدشده است"):p.form[i.value].caCert&&(p.form[i.value].caCert="")}catch(g){B.error(((t=(r=g==null?void 0:g.response)==null?void 0:r.data)==null?void 0:t.message)??"گواهی دریافت نشد")}finally{H.value=!1}}}function te(){!i.value||!S.value||(p.form[i.value].caCert=S.value.pem)}const ke=h(!1),z=h(null),De=h(""),Ie=()=>i.value?JSON.stringify([p.form.provider,p.form[i.value],p.tokens[i.value]]):"",Me=M(()=>!!z.value&&De.value!==Ie()),We=M(()=>{var r;return!!i.value&&!!p.form[i.value].baseUrl&&(oe.value||!!((r=p.tokens[i.value])!=null&&r.trim()))});Qe(i,()=>z.value=null);async function de(){var t,g;if(!i.value)return;const r=i.value;ke.value=!0;try{const y={baseUrl:p.form[r].baseUrl,timeoutMs:p.form[r].timeoutMs,caCert:p.form[r].caCert,token:p.tokens[r]||void 0};r==="tahesab"?y.dbName=p.form.tahesab.dbName:y.balanceOwesWhen=p.form.zarrin.balanceOwesWhen,De.value=Ie();const{data:N}=await j.post("admin/accounting/test",{provider:r,connection:y});z.value=N}catch(y){const N=(g=(t=y==null?void 0:y.response)==null?void 0:t.data)==null?void 0:g.message;z.value={ok:!1,error:Array.isArray(N)?N.join("، "):N??"خطا در تست اتصال"}}finally{ke.value=!1}}const Fe={version:{label:"نسخه",ltr:!0},dbType:{label:"نوع دیتابیس",ltr:!0},dbName:{label:"دیتابیس",ltr:!0},customerGroups:{label:"گروه‌های حساب"},message:{label:"پیام سرور"}},J=M(()=>{var g,y;const r=((g=z.value)==null?void 0:g.info)??{},t=Object.entries(Fe).filter(([N])=>r[N]!==void 0&&r[N]!==null&&r[N]!=="").map(([N,I])=>({label:I.label,value:String(r[N]),ltr:I.ltr}));return t.push({label:"زمان پاسخ",value:`${(((y=z.value)==null?void 0:y.ms)??0).toLocaleString("fa-IR")} میلی‌ثانیه`,ltr:!1}),t}),Se=M(()=>{var r,t;return i.value==="tahesab"&&!!((t=(r=z.value)==null?void 0:r.info)!=null&&t.dbName)&&String(z.value.info.dbName).toLowerCase()!==String(p.form.tahesab.dbName||"").toLowerCase()});return(r,t)=>{var Ne,je,le;const g=f("a-tag"),y=f("a-alert"),N=f("a-input"),I=f("a-form-item"),ae=f("a-select-option"),xe=f("a-select"),L=f("a-button"),Ue=f("a-popconfirm"),F=f("a-space"),Re=f("a-input-password"),Q=f("a-form"),ze=f("a-input-number"),me=f("a-collapse-panel"),ge=f("a-collapse"),Ke=f("a-textarea");return o(),c("div",zt,[n("div",{class:Le(["status",`status--${G.value.tone}`])},[(o(),x(Nt(G.value.icon),{class:"status__icon"})),n("div",jt,[n("div",At,[u(v(G.value.title)+" ",1),X.value?(o(),x(g,{key:0,color:"orange",class:"status__tag"},{default:l(()=>[...t[11]||(t[11]=[u("تغییرات ذخیره نشده",-1)])]),_:1})):_("",!0)]),G.value.text?(o(),c("div",Gt,v(G.value.text),1)):_("",!0),(Ne=G.value.rows)!=null&&Ne.length?(o(),c("dl",Lt,[(o(!0),c(D,null,Oe(G.value.rows,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,Pt)],64))),128))])):_("",!0)])],2),n("section",Bt,[t[13]||(t[13]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۱"),u("نرم‌افزار حسابداری")],-1)),n("div",Wt,[(o(),c(D,null,Oe(Be,b=>n("button",{key:b.value,type:"button",role:"radio","aria-checked":C.form.provider===b.value,class:Le(["choice",{"choice--on":C.form.provider===b.value}]),onClick:Ce=>C.form.provider=b.value},[t[12]||(t[12]=n("span",{class:"choice__dot"},null,-1)),n("span",Kt,v(b.label),1),n("span",Vt,v(b.desc),1)],10,Ft)),64))]),$e.value?(o(),x(y,{key:0,class:"mt",type:"info","show-icon":"",message:"با ذخیره، نرم‌افزار عوض می‌شود",description:"کارهای در صف نرم‌افزار قبلی متوقف می‌مانند (پاک نمی‌شوند) و لینک‌های هر نرم‌افزار جدا نگه داشته می‌شوند؛ برگشت بی‌خطر است."})):_("",!0)]),i.value?(o(),c(D,{key:0},[n("section",Yt,[n("h3",Ht,[t[14]||(t[14]=n("span",{class:"step__no"},"۲",-1)),u("اطلاعات اتصال به "+v(W[i.value]),1)]),a(Q,{layout:"vertical",class:"grid"},{default:l(()=>[a(I,{label:"آدرس وب‌سرویس",required:""},{default:l(()=>[a(N,{value:C.form[i.value].baseUrl,"onUpdate:value":t[0]||(t[0]=b=>C.form[i.value].baseUrl=b),dir:"ltr",class:"ltr",placeholder:i.value==="tahesab"?"https://192.168.1.10:8081":"http://192.168.1.10:8000/ZarrinService/accounting"},null,8,["value","placeholder"]),n("div",qt,"آدرسی که وب‌سرویس "+v(W[i.value])+" روی آن در دسترس است، با پورت.",1)]),_:1}),i.value==="tahesab"?(o(),x(I,{key:0,label:"نام دیتابیس (DBname)",required:""},{default:l(()=>[a(N,{value:C.form.tahesab.dbName,"onUpdate:value":t[1]||(t[1]=b=>C.form.tahesab.dbName=b),dir:"ltr",class:"ltr",placeholder:"TahesabDB"},null,8,["value"]),t[15]||(t[15]=n("div",{class:"help"},"نام دقیق دیتابیس همین شرکت. یک سرور ممکن است چند دیتابیس داشته باشد؛ بعد از تست، نام را در نتیجه چک کنید.",-1))]),_:1})):(o(),x(I,{key:1,label:"علامت مانده‌ی بدهکار"},{default:l(()=>[a(xe,{value:C.form.zarrin.balanceOwesWhen,"onUpdate:value":t[2]||(t[2]=b=>C.form.zarrin.balanceOwesWhen=b)},{default:l(()=>[a(ae,{value:"negative"},{default:l(()=>[...t[16]||(t[16]=[u("منفی یعنی بدهکار",-1)])]),_:1}),a(ae,{value:"positive"},{default:l(()=>[...t[17]||(t[17]=[u("مثبت یعنی بدهکار",-1)])]),_:1})]),_:1},8,["value"]),t[18]||(t[18]=n("div",{class:"help"},"در زرین منفی یعنی بدهکار (روی نصب واقعی بررسی شد)؛ تغییرش ندهید مگر نصب شما خلاف این باشد.",-1))]),_:1})),a(I,{label:"توکن وب‌سرویس",required:"",class:"grid__full"},{default:l(()=>{var b;return[oe.value&&!ee[i.value]?(o(),c("div",Jt,[a(U(It),{class:"token__icon"}),(b=Y(i.value))!=null&&b.tokenReadable?(o(),c("span",Qt,"توکن ذخیره شده است و نمایش داده نمی‌شود.")):(o(),c("span",Zt,"توکن ذخیره‌شده قابل‌خواندن نیست؛ دوباره وارد کنید.")),a(F,{class:"token__actions"},{default:l(()=>[a(L,{size:"small",onClick:t[3]||(t[3]=Ce=>ee[i.value]=!0)},{default:l(()=>[...t[19]||(t[19]=[u("تغییر توکن",-1)])]),_:1}),a(Ue,{title:"توکن حذف شود؟ تا توکن جدید وارد نشود اتصال کار نمی‌کند.","ok-text":"حذف","cancel-text":"انصراف",onConfirm:t[4]||(t[4]=Ce=>V("clearToken",i.value))},{default:l(()=>[a(L,{size:"small",danger:""},{default:l(()=>[...t[20]||(t[20]=[u("حذف",-1)])]),_:1})]),_:1})]),_:1})])):(o(),c(D,{key:1},[a(Re,{value:C.tokens[i.value],"onUpdate:value":t[5]||(t[5]=Ce=>C.tokens[i.value]=Ce),dir:"ltr",class:"ltr",autocomplete:"new-password",placeholder:"توکن را اینجا وارد کنید"},null,8,["value"]),n("div",Xt,[t[21]||(t[21]=u(" بعد از ذخیره، توکن رمز می‌شود و دیگر نمایش داده نمی‌شود. ",-1)),oe.value?(o(),c("a",{key:0,class:"link",onClick:ce},"انصراف و نگه‌داشتن توکن فعلی")):_("",!0)])],64))]}),_:1})]),_:1}),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"adv",header:"تنظیمات پیشرفته"},{default:l(()=>[a(Q,{layout:"vertical"},{default:l(()=>[a(I,{label:"حداکثر زمان انتظار برای پاسخ"},{default:l(()=>[a(ze,{value:_e.value,"onUpdate:value":t[6]||(t[6]=b=>_e.value=b),min:3,max:120,"addon-after":"ثانیه"},null,8,["value"]),t[22]||(t[22]=n("div",{class:"help"},"اگر سرور حسابداری کند است بیشترش کنید. پیش‌فرض ۲۰ ثانیه.",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),O.value?(o(),c("section",ea,[t[41]||(t[41]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۳"),u("گواهی امنیتی سرور")],-1)),n("p",ta," اتصال همیشه رمزنگاری‌شده و بررسی‌شده است. نصب‌های معمول "+v(W[i.value])+" گواهی خودساخته دارند؛ در این حالت یک بار گواهی سرور را بررسی و تأیید کنید. ",1),C.form[i.value].caCert?(o(),c("div",aa,[a(U(qe),{class:"cert__icon"}),n("div",la,[n("div",sa,[t[25]||(t[25]=u(" گواهی سرور تأیید شده است ",-1)),re.value?(o(),x(g,{key:0,color:"orange"},{default:l(()=>[...t[23]||(t[23]=[u("ذخیره نشده",-1)])]),_:1})):_("",!0),(je=q.value)!=null&&je.expired?(o(),x(g,{key:1,color:"red"},{default:l(()=>[...t[24]||(t[24]=[u("منقضی شده",-1)])]),_:1})):_("",!0)]),q.value?(o(),c("dl",na,[t[26]||(t[26]=n("dt",null,"صادرشده برای",-1)),n("dd",oa,v(ye(q.value.subject)),1),t[27]||(t[27]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(q.value.validTo)),1),t[28]||(t[28]=n("dt",null,"اثرانگشت",-1)),n("dd",ia,v(q.value.fingerprint256),1)])):(o(),c("div",ra,"مشخصات گواهی بعد از ذخیره نمایش داده می‌شود."))]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{size:"small",loading:H.value,onClick:ue},{default:l(()=>[...t[29]||(t[29]=[u("بررسی دوباره",-1)])]),_:1},8,["loading"]),a(L,{size:"small",danger:"",onClick:t[7]||(t[7]=b=>C.form[i.value].caCert="")},{default:l(()=>[...t[30]||(t[30]=[u("برداشتن",-1)])]),_:1})]),_:1})])):S.value&&!S.value.trustedBySystem?(o(),c("div",ua,[a(U(ht),{class:"cert__icon"}),n("div",da,[t[34]||(t[34]=n("div",{class:"cert__title"},"این گواهی را تأیید می‌کنید؟",-1)),t[35]||(t[35]=n("div",{class:"help"},"اثرانگشت زیر را با گواهی نصب‌شده روی سرور حسابداری مقایسه کنید. اگر یکی است تأیید کنید.",-1)),n("dl",va,[t[31]||(t[31]=n("dt",null,"صادرشده برای",-1)),n("dd",ca,v(ye(S.value.subject)),1),t[32]||(t[32]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(S.value.validTo)),1),t[33]||(t[33]=n("dt",null,"اثرانگشت",-1)),n("dd",ma,v(S.value.fingerprint256),1)]),S.value.expired?(o(),x(y,{key:0,type:"error","show-icon":"",message:"این گواهی منقضی شده است.",class:"mt"})):_("",!0)]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{type:"primary",size:"small",onClick:te},{default:l(()=>[...t[36]||(t[36]=[u("تأیید گواهی",-1)])]),_:1}),a(L,{size:"small",onClick:t[8]||(t[8]=b=>S.value=null)},{default:l(()=>[...t[37]||(t[37]=[u("انصراف",-1)])]),_:1})]),_:1})])):(le=S.value)!=null&&le.trustedBySystem?(o(),c("div",pa,[a(U(qe),{class:"cert__icon"}),t[38]||(t[38]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی سرور معتبر است"),n("div",{class:"help"},"این سرور گواهی معتبر عمومی دارد؛ کاری لازم نیست.")],-1))])):(o(),c("div",fa,[a(U(qe),{class:"cert__icon cert__icon--muted"}),t[40]||(t[40]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی‌ای تأیید نشده"),n("div",{class:"help"},"اگر «تست اتصال» خطای گواهی داد، اینجا گواهی سرور را بررسی کنید.")],-1)),a(L,{loading:H.value,disabled:!C.form[i.value].baseUrl,onClick:ue},{default:l(()=>[...t[39]||(t[39]=[u("بررسی گواهی سرور",-1)])]),_:1},8,["loading","disabled"])])),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"pem",header:"وارد کردن دستی گواهی (PEM)"},{default:l(()=>[a(Ke,{value:C.form[i.value].caCert,"onUpdate:value":t[9]||(t[9]=b=>C.form[i.value].caCert=b),dir:"ltr",class:"ltr mono",rows:5,placeholder:"-----BEGIN CERTIFICATE-----"},null,8,["value"])]),_:1})]),_:1})])):_("",!0)],64)):_("",!0),i.value&&z.value?(o(),c("section",ba,[z.value.ok?(o(),x(y,{key:0,type:"success","show-icon":"",message:`اتصال به ${W[i.value]} برقرار است`},{description:l(()=>[n("dl",_a,[(o(!0),c(D,null,Oe(J.value,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,ya)],64))),128))]),Se.value?(o(),c("div",ka,[t[42]||(t[42]=u(" دیتابیسی که وصل شد ",-1)),n("bdi",ga,v(z.value.info.dbName),1),t[43]||(t[43]=u(" است، نه ",-1)),n("bdi",Ca,v(C.form.tahesab.dbName),1),t[44]||(t[44]=u(". نام دیتابیس را چک کنید. ",-1))])):_("",!0),Me.value?(o(),c("div",wa,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1},8,["message"])):(o(),x(y,{key:1,type:"error","show-icon":"",message:"اتصال برقرار نشد"},{description:l(()=>[n("div",null,v(z.value.error),1),Me.value?(o(),c("div",Ea,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1}))])):_("",!0),n("div",Oa,[n("span",Sa,[X.value?(o(),c(D,{key:0},[u("تغییرات هنوز ذخیره نشده‌اند.")],64)):i.value?(o(),c(D,{key:1},[u("«تست اتصال» مقادیر همین فرم را امتحان می‌کند، حتی پیش از ذخیره.")],64)):_("",!0)]),a(F,null,{default:l(()=>[i.value?(o(),x(L,{key:0,loading:ke.value,disabled:!We.value,onClick:de},{default:l(()=>[...t[45]||(t[45]=[u("تست اتصال",-1)])]),_:1},8,["loading","disabled"])):_("",!0),a(L,{type:"primary",loading:C.saving,disabled:!X.value,onClick:t[10]||(t[10]=b=>V("save"))},{default:l(()=>[...t[46]||(t[46]=[u("ذخیره",-1)])]),_:1},8,["loading","disabled"])]),_:1})])])}}}),Ua=pt(xa,[["__scopeId","data-v-a7739f0b"]]),Na={key:0},ha={key:0},Ta={key:1},$a={key:2,class:"warn"},Da={key:2},Ia={key:0,class:"hint"},Ma={key:0,class:"warn"},Ra={key:1},za={class:"grid-2 mt-4"},ja={class:"hint mb-4"},Aa={key:0},Ga={class:"grid-2"},La={class:"grid-2"},Pa={key:1,class:"hint mb-4"},Ba={key:2,class:"hint mb-4"},Wa={key:0,class:"hint"},Fa={key:4,class:"warn small"},Ka={class:"grid-2"},Va={dir:"ltr"},Ya={dir:"ltr"},Ha={class:"hint"},qa=mt({__name:"accounting",setup(C){const A=$t(),p=s=>!!A.hasPermission(s),V={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},W={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"default"},Be={CUSTOMER_PUSH:"ارسال مشتری",PRODUCT_PUSH:"ساخت کارساخته",ORDER_DOCUMENT:"سند سفارش",ORDER_DOCUMENT_DELETE:"حذف سند سفارش"},i={CUSTOMER_NO_MOBILE:"حساب بدون موبایل",CUSTOMER_DUPLICATE_MOBILE:"موبایل تکراری",CUSTOMER_LINK_CONFLICT:"تداخل لینک",PRODUCT_DUPLICATE_TITLE:"عنوان تکراری محصول",PRODUCT_CODE_TAKEN:"کد محصول تکراری"},Z={LINKED:"جفت با موبایل/نام",IMPORTED:"وارد شده از حسابداری",PUSHED:`ساخته شده از ${T.name}`,MANUAL:"دستی"},Y=h(!1),oe=h("connection"),O=h(null),m=ne({provider:"none",tahesab:{baseUrl:"",dbName:"TahesabDB",timeoutMs:2e4,caCert:""},zarrin:{baseUrl:"",balanceOwesWhen:"negative",timeoutMs:2e4,caCert:""},features:{customers:!1,balances:!1,report:!1,products:!1,documents:!1},intervals:{customersMinutes:60,balancesMinutes:10,productsMinutes:30},mapping:{karat:750},report:{windowDays:365},documents:{triggerStatus:"DELIVERED_TO_AGENT"}}),X=ne({tahesab:"",zarrin:""}),$e=h("none"),be=M(()=>$e.value!=="none"),G=ne({customerGroups:[],karSakhteGroups:[],karSakhteTypes:[]}),ee=h([]),ce=h([]),_e=h(!1),H=s=>s?`${s.id}|${s.name}`:void 0,S=s=>{if(!s)return null;const e=s.indexOf("|");return{id:s.slice(0,e),name:s.slice(e+1)}},ye=(s,e)=>{const k=[...s];for(const w of e)w&&!k.some(K=>K.id===w.id&&K.name===w.name)&&k.push(w);return k.map(w=>({value:H(w),label:w.id?`${w.name} (${w.id})`:w.name}))},ie=h([]),re=h(),q=h(),ue=h(),te=ne({}),ke=M(()=>ye(G.customerGroups,[...ie.value.map(S),S(re.value)])),z=M(()=>ye(G.karSakhteGroups,[S(q.value),...Object.values(te).map(S)])),De=M(()=>ye(G.karSakhteTypes,[S(ue.value)])),Ie=[{value:"PLACED",label:"ثبت سفارش"},{value:"ADMIN_APPROVED",label:"تأیید مدیر"},{value:"SOURCING",label:"در حال تأمین"},{value:"PREPARING",label:"در حال آماده‌سازی"},{value:"DELIVERED_TO_AGENT",label:"تحویل مسئول فروش"},{value:"DELIVERED_TO_CUSTOMER",label:"تحویل مشتری"}],Me=[{key:"customers",label:"سینک مشتریان (ورود/لینک با موبایل، ساخت پس از احراز هویت)",interval:"customersMinutes",job:"customers"},{key:"balances",label:"سینک مانده (نمایش به مشتری)",interval:"balancesMinutes",job:"balances"},{key:"report",label:"گزارش مشتری از حسابداری",interval:null,job:null},{key:"products",label:"کارساخته ↔ محصول و قفل ناموجود",interval:"productsMinutes",job:"products"},{key:"documents",label:"ثبت سند سفارش (موقت)",interval:null,job:"outbox"}],We=[{title:"قابلیت",dataIndex:"label",key:"label"},{title:"فعال",key:"on",width:80},{title:"بازه",key:"interval",width:170},{title:"وضعیت",key:"state"},{title:"",key:"run",width:110}],de=s=>{var e,k,w;return(w=(k=(e=O.value)==null?void 0:e.state)==null?void 0:k.jobs)==null?void 0:w[s]},Fe=s=>Object.entries(s).map(([e,k])=>`${e}: ${k}`).join("، "),J=ne({rows:[],total:0,page:1,limit:25}),Se=h(),r=[{title:"زمان",key:"createdAt",width:150},{title:"نوع",key:"kind",width:120},{title:"مورد",key:"entity"},{title:"وضعیت",key:"status",width:140},{title:"خطا",key:"error"},{title:"",key:"actions",width:190}],t=M(()=>{var k;const s=((k=O.value)==null?void 0:k.outbox)??{},e=(s.FAILED??0)+(s.NEEDS_REVIEW??0);return e?` (${e})`:""}),g=ne({rows:[],total:0,page:1,limit:25}),y=ne({rows:[],total:0,page:1,limit:25}),N=h("CUSTOMER"),I=h(""),ae=ne({rows:[],scope:null}),xe=h(""),L=h(""),Ue=h(!1),F=s=>s?Je(s).format("jYYYY/jMM/jDD HH:mm"):"—",Re=s=>s==null?"—":JSON.stringify(s,null,2),Q=(s,e)=>{var w,K;const k=(K=(w=s==null?void 0:s.response)==null?void 0:w.data)==null?void 0:K.message;return Array.isArray(k)?k.join("، "):k??e};function ze(s){var e;m.provider=s.provider,$e.value=s.provider;for(const k of["tahesab","zarrin"])m[k].baseUrl=s[k].baseUrl,m[k].timeoutMs=s[k].timeoutMs,m[k].caCert=s[k].caCert??"";m.tahesab.dbName=s.tahesab.dbName,m.zarrin.balanceOwesWhen=s.zarrin.balanceOwesWhen,Object.assign(m.features,s.features),Object.assign(m.intervals,s.intervals),m.mapping.karat=s.mapping.karat,m.report.windowDays=s.report.windowDays,m.documents.triggerStatus=((e=s.documents)==null?void 0:e.triggerStatus)??"DELIVERED_TO_AGENT",ie.value=(s.mapping.importCustomerGroups??[]).map(H),re.value=H(s.mapping.newCustomerGroup),q.value=H(s.mapping.newKarSakhteGroup),ue.value=H(s.mapping.newKarSakhteType);for(const k of Object.keys(te))delete te[k];for(const k of s.mapping.categoryGroups??[])te[k.categoryId]=H(k.group)}async function me(){try{Y.value=!0;const{data:s}=await j.get("admin/accounting");O.value=s,ze(s.config)}catch(s){B.error(Q(s,"خطا در دریافت تنظیمات"))}finally{Y.value=!1}}async function ge(){const s={provider:m.provider,tahesab:{baseUrl:m.tahesab.baseUrl,dbName:m.tahesab.dbName,timeoutMs:m.tahesab.timeoutMs,caCert:m.tahesab.caCert},zarrin:{baseUrl:m.zarrin.baseUrl,balanceOwesWhen:m.zarrin.balanceOwesWhen,timeoutMs:m.zarrin.timeoutMs,caCert:m.zarrin.caCert},features:m.features,intervals:m.intervals,report:m.report,documents:m.documents,mapping:{karat:m.mapping.karat,importCustomerGroups:ie.value.map(S).filter(Boolean),newCustomerGroup:S(re.value),newKarSakhteGroup:S(q.value),newKarSakhteType:S(ue.value),categoryGroups:Object.entries(te).filter(([,e])=>!!e).map(([e,k])=>({categoryId:e,group:S(k)}))}};for(const e of["tahesab","zarrin"])X[e].trim()&&(s[e].token=X[e].trim());try{Y.value=!0;const{data:e}=await j.put("admin/accounting/config",s);O.value=e,ze(e.config),X.tahesab="",X.zarrin="",B.success("تنظیمات ذخیره شد")}catch(e){B.error(Q(e,"خطا در ذخیره"))}finally{Y.value=!1}}async function Ke(s){try{const{data:e}=await j.put("admin/accounting/config",{[s]:{token:null}});O.value=e,B.success("توکن حذف شد")}catch(e){B.error(Q(e,"خطا"))}}async function Ne(){_e.value=!0,ce.value=[];try{const{data:s}=await j.get("admin/accounting/options",{params:{provider:m.provider}});G.customerGroups=s.customerGroups.items,G.karSakhteGroups=s.karSakhteGroups.items,G.karSakhteTypes=s.karSakhteTypes.items,ee.value=s.categories;for(const e of[s.customerGroups,s.karSakhteGroups,s.karSakhteTypes])e.ok||ce.value.push(e.error)}catch(s){ce.value=[Q(s,"تنظیمات اتصال را اول ذخیره کنید")]}finally{_e.value=!1}}async function je(s){try{const{data:e}=await j.post(`admin/accounting/run/${s}`);e.started?B.success("همگام‌سازی شروع شد؛ نتیجه چند لحظه بعد در همین صفحه دیده می‌شود"):B.warning(e.message),setTimeout(me,4e3)}catch(e){B.error(Q(e,"خطا"))}}async function le(s=1){const{data:e}=await j.get("admin/accounting/outbox",{params:{page:s,status:Se.value}});Object.assign(J,e)}async function b(s){try{await j.post(`admin/accounting/outbox/${s}/retry`),B.success("دوباره در صف قرار گرفت"),le(J.page)}catch(e){B.error(Q(e,"خطا"))}}async function Ce(s){await j.post(`admin/accounting/outbox/${s}/resolve`,{}),le(J.page)}async function Ve(s=1){const{data:e}=await j.get("admin/accounting/issues",{params:{page:s}});Object.assign(g,e)}async function ft(s){await j.post(`admin/accounting/issues/${s}/resolve`),Ve(g.page),me()}async function he(s=1){const{data:e}=await j.get("admin/accounting/links",{params:{page:s,entityType:N.value,q:I.value||void 0}});Object.assign(y,e)}async function bt(s){await j.delete(`admin/accounting/links/${s}`),he(y.page)}async function _t(){Ue.value=!0;try{const{data:s}=await j.get("admin/accounting/movement",{params:{from:xe.value||void 0,to:L.value||void 0}});Object.assign(ae,s)}catch(s){B.error(Q(s,"خطا در دریافت گردش"))}finally{Ue.value=!1}}return Qe(oe,s=>{s==="outbox"&&le(1),s==="issues"&&Ve(1),s==="links"&&he(1),s==="mapping"&&m.provider!=="none"&&ee.value.length===0&&Ne()}),Dt(me),(s,e)=>{const k=f("a-tag"),w=f("a-button"),K=f("a-space"),ve=f("a-alert"),pe=f("a-tab-pane"),yt=f("a-switch"),Ye=f("a-input-number"),Ze=f("a-select-option"),fe=f("a-select"),we=f("a-table"),Ee=f("a-form-item"),kt=f("a-collapse-panel"),gt=f("a-collapse"),Xe=f("a-divider"),$=f("a-table-column"),Ct=f("a-form"),He=f("a-popconfirm"),et=f("a-radio-button"),wt=f("a-radio-group"),Et=f("a-input-search"),tt=f("a-input"),Ot=f("a-tabs"),St=f("a-spin"),xt=f("a-card");return o(),c("div",null,[p("config.accounting")?(o(),x(xt,{key:0,title:"اتصال به نرم‌افزار حسابداری",class:"page-card table-scroll"},{extra:l(()=>[a(K,null,{default:l(()=>{var Te;return[(Te=O.value)!=null&&Te.busy?(o(),x(k,{key:0,color:"processing"},{default:l(()=>[...e[17]||(e[17]=[u("همگام‌سازی در حال اجرا",-1)])]),_:1})):_("",!0),a(w,{size:"small",onClick:me},{default:l(()=>[...e[18]||(e[18]=[u("تازه‌سازی",-1)])]),_:1})]}),_:1})]),default:l(()=>{var Te,at,lt,st,nt,ot,it,rt;return[O.value&&O.value.config.secretKeySource!=="ACCOUNTING_SECRET_KEY"?(o(),x(ve,{key:0,type:"warning","show-icon":"",class:"mb-4",message:"متغیر ACCOUNTING_SECRET_KEY روی سرور تنظیم نشده است",description:"توکن با کلیدی مشتق از JWT_SECRET رمز می‌شود؛ اگر JWT_SECRET عوض شود باید توکن را دوباره وارد کنید."})):_("",!0),(Te=O.value)!=null&&Te.inactiveReason&&O.value.config.provider!=="none"&&oe.value!=="connection"?(o(),x(ve,{key:1,type:"error","show-icon":"",class:"mb-4",message:"همگام‌سازی انجام نمی‌شود",description:O.value.inactiveReason},null,8,["description"])):be.value&&!((nt=(st=(lt=(at=O.value)==null?void 0:at.config)==null?void 0:lt.mapping)==null?void 0:st.importCustomerGroups)!=null&&nt.length)&&((rt=(it=(ot=O.value)==null?void 0:ot.config)==null?void 0:it.features)!=null&&rt.customers)?(o(),x(ve,{key:2,type:"warning","show-icon":"",class:"mb-4",message:"سینک مشتری اجرا نمی‌شود",description:"هیچ گروه مشتری برای ورود انتخاب نشده است؛ در تب «نگاشت» گروه‌هایی را که واقعاً مشتری هستند انتخاب و ذخیره کنید."})):_("",!0),a(St,{spinning:Y.value},{default:l(()=>[a(Ot,{"active-key":oe.value,"onUpdate:activeKey":e[16]||(e[16]=Ae=>oe.value=Ae)},{default:l(()=>{var Ae;return[a(pe,{key:"connection",tab:"اتصال"},{default:l(()=>[a(Ua,{overview:O.value,form:m,tokens:X,saving:Y.value,onSave:ge,onClearToken:Ke},null,8,["overview","form","tokens","saving"])]),_:1}),a(pe,{key:"features",tab:"قابلیت‌ها و زمان‌بندی"},{default:l(()=>{var d,E,Ge,ut;return[m.provider==="zarrin"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"درایور زرین روی نصب واقعی تست نشده است",description:"طبق تصمیم مالک، پیش از استفاده‌ی واقعی یک دوره‌ی آزمایشی با اسناد موقت لازم است (علامت مانده و فیلد هزینه‌ی سنگ را بررسی کنید)."})):_("",!0),be.value&&((E=(d=O.value)==null?void 0:d.config)!=null&&E.provider)&&(m.features.balances||m.features.products)?(o(),x(ve,{key:1,type:(ut=(Ge=O.value)==null?void 0:Ge.realtime)!=null&&ut.lastError?"warning":"success","show-icon":"",class:"mb-4",message:"همگام‌سازی لحظه‌ای"},{description:l(()=>{var se,R,P,dt;return[(R=(se=O.value)==null?void 0:se.realtime)!=null&&R.lastOkAt?(o(),c("div",Na,[u(" تغییرات حسابداری چند ثانیه یک‌بار بررسی می‌شود؛ آخرین بررسی: "+v(F(O.value.realtime.lastOkAt))+". ",1),O.value.realtime.lastChangeAt?(o(),c("span",ha,"آخرین تغییر دریافت‌شده: "+v(F(O.value.realtime.lastChangeAt))+".",1)):_("",!0)])):(o(),c("div",Ta,"هنوز بررسی انجام نشده است (چند ثانیه بعد از روشن‌شدن شروع می‌شود).")),(dt=(P=O.value)==null?void 0:P.realtime)!=null&&dt.lastError?(o(),c("div",$a,"خطای آخرین بررسی: "+v(O.value.realtime.lastError),1)):_("",!0),e[19]||(e[19]=n("div",{class:"hint"}," سفارش و ویرایش مشتری بلافاصله ارسال می‌شود و موجودی هنگام ثبت سفارش مستقیم از حسابداری خوانده می‌شود؛ اگر حسابداری آن لحظه پاسخ ندهد، آخرین موجودی معلوم ملاک است. بازه‌های «دقیقه»ی زیر فقط شبکه‌ی اطمینان‌اند (مشتری جدید، ویرایش یا حذف در حسابداری). ",-1))]}),_:1},8,["type"])):_("",!0),a(we,{"data-source":Me,columns:We,pagination:!1,"row-key":"key",size:"middle"},{bodyCell:l(({column:se,record:R})=>[se.key==="on"?(o(),x(yt,{key:0,checked:m.features[R.key],"onUpdate:checked":P=>m.features[R.key]=P},null,8,["checked","onUpdate:checked"])):se.key==="interval"?(o(),c(D,{key:1},[R.interval?(o(),x(Ye,{key:0,value:m.intervals[R.interval],"onUpdate:value":P=>m.intervals[R.interval]=P,min:1,max:1440,"addon-after":"دقیقه"},null,8,["value","onUpdate:value"])):R.key==="documents"?(o(),x(fe,{key:1,value:m.documents.triggerStatus,"onUpdate:value":e[0]||(e[0]=P=>m.documents.triggerStatus=P),style:{"min-width":"220px"},title:"سند (موقت / پیش‌فاکتور) وقتی سفارش به این وضعیت برسد ثبت می‌شود"},{default:l(()=>[(o(),c(D,null,Oe(Ie,P=>a(Ze,{key:P.value,value:P.value},{default:l(()=>[u("ثبت در: "+v(P.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])):(o(),c("span",Da,"—"))],64)):se.key==="state"?(o(),c(D,{key:2},[R.job&&de(R.job)?(o(),c("div",Ia,[u(" آخرین اجرا: "+v(F(de(R.job).lastRunAt))+" ",1),de(R.job).lastError?(o(),c("span",Ma," — خطا: "+v(de(R.job).lastError),1)):de(R.job).summary?(o(),c("span",Ra," — "+v(Fe(de(R.job).summary)),1)):_("",!0)])):_("",!0)],64)):se.key==="run"?(o(),c(D,{key:3},[R.job?(o(),x(w,{key:0,size:"small",disabled:!be.value,onClick:P=>je(R.job)},{default:l(()=>[...e[20]||(e[20]=[u("سینک الان",-1)])]),_:1},8,["disabled","onClick"])):_("",!0)],64)):_("",!0)]),_:1}),n("div",za,[a(Ee,{label:"بازه‌ی گزارش مشتری (روز)"},{default:l(()=>[a(Ye,{value:m.report.windowDays,"onUpdate:value":e[1]||(e[1]=se=>m.report.windowDays=se),min:7,max:3650,class:"w-full"},null,8,["value"])]),_:1})]),n("div",ja," اسناد سفارش همیشه «موقت» ثبت می‌شوند و تا حسابدار نهایی نکند روی مانده‌ی حسابداری اثر ندارند. سقف اعتبار سفارش همچنان با دفتر داخلی "+v(U(T).name)+" چک می‌شود. ",1),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[21]||(e[21]=[u("ذخیره",-1)])]),_:1})]}),_:1}),a(pe,{key:"mapping",tab:"نگاشت"},{default:l(()=>[a(gt,{ghost:"",class:"mb-4"},{default:l(()=>[a(kt,{key:"guide",header:"راهنمای این تب: نگاشت چیست و چطور پر می‌شود؟"},{default:l(()=>[n("p",null,[u(" در این صفحه «"+v(U(T).name)+"» یعنی همین سامانه: ",1),e[22]||(e[22]=n("b",null,"اپ مشتری",-1)),e[23]||(e[23]=u(" (جایی که مشتری ثبت‌نام، احراز هویت و سفارش می‌کند و مانده‌اش را می‌بیند) و ",-1)),e[24]||(e[24]=n("b",null,"پنل مدیریت",-1)),e[25]||(e[25]=u(" (همین پنل، جایی که محصول و دسته‌بندی تعریف می‌شود). «حسابداری» یعنی نرم‌افزار حسابداری مغازه (ته‌حساب یا زرین). ",-1))]),n("p",null,v(U(T).name)+" و حسابداری هر کدام گروه‌بندی خودشان را دارند. این تب می‌گوید هر چیز در "+v(U(T).name)+" با کدام گروه در حسابداری متناظر است؛ خودِ مشتری‌ها و محصول‌ها اینجا وصل نمی‌شوند (آن‌ها در تب «لینک‌ها» دیده می‌شوند). ",1),n("ol",null,[e[29]||(e[29]=n("li",null,"تنظیمات تب «اتصال» را ذخیره کنید، بعد «دریافت گروه‌ها از حسابداری» را بزنید تا فهرست‌ها از حسابداری پر شوند.",-1)),n("li",null,[n("b",null,"گروه‌های حسابی که مشتری "+v(U(T).name)+" حساب می‌شوند:",1),e[26]||(e[26]=u(" در حسابداری صندوق، کارمند و سرمایه‌گذار هم «حساب» هستند. فقط گروه‌هایی را انتخاب کنید که واقعاً مشتری‌اند؛ سینک مشتری فقط حساب‌های این گروه‌ها را با شماره موبایل به کاربران اپ مشتری وصل می‌کند. اگر خالی بماند سینک مشتری اجرا نمی‌شود. ",-1))]),e[30]||(e[30]=n("li",null,[n("b",null,"گروه مشتری جدید:"),u(" وقتی کاربری در اپ مشتری احراز هویت شود و در حسابداری حساب نداشته باشد، حسابش در این گروه ساخته می‌شود. اگر تعیین نشود، ساخت حساب در «لاگ ارسال» با وضعیت «نیاز به بررسی» می‌ماند. ")],-1)),n("li",null,[e[27]||(e[27]=n("b",null,"عیار پایه:",-1)),u(" عیار وزن‌هایی که در "+v(U(T).name)+" ثبت می‌شود (وزن محصول‌ها و سفارش‌ها؛ معمولاً ۷۵۰ = ۱۸ عیار). در سند سفارش، وزن با همین عیار به حسابداری می‌رود؛ در ته‌حساب اجرت هم روی آن اعمال می‌شود (مثلاً ۷۵۰ با اجرت ۱۰٪ می‌شود ۸۲۵). ",1)]),m.provider==="zarrin"?(o(),c("li",Aa,[e[28]||(e[28]=n("b",null,"کارساخته (فقط زرین):",-1)),u(" وقتی در پنل مدیریت "+v(U(T).name)+" محصول جدیدی تعریف شود، برایش یک «کارساخته» در زرین ساخته می‌شود. «نوع» تعیین می‌کند گرمی است یا تعدادی، و «گروه ساخته» جای آن در زرین است. در جدول پایین برای هر دسته‌بندی محصولِ "+v(U(T).name)+" می‌توانید گروه جدا بدهید؛ دسته‌ای که «پیش‌فرض» بماند در «گروه ساخته‌ی پیش‌فرض» می‌رود. اگر نوع یا گروه خالی باشد، ساخت کارساخته در «لاگ ارسال» منتظر بررسی می‌ماند. ",1)])):_("",!0)]),e[31]||(e[31]=n("p",{class:"hint"}," تغییر این تنظیمات فقط روی موارد بعدی اثر دارد؛ حساب‌ها و کارساخته‌هایی که قبلاً ساخته شده‌اند جابه‌جا نمی‌شوند. در آخر «ذخیره» را بزنید. ",-1))]),_:1})]),_:1}),a(K,{class:"mb-4"},{default:l(()=>[a(w,{disabled:m.provider==="none",loading:_e.value,onClick:Ne},{default:l(()=>[...e[32]||(e[32]=[u("دریافت گروه‌ها از حسابداری",-1)])]),_:1},8,["disabled","loading"]),(o(!0),c(D,null,Oe(ce.value,d=>(o(),c("span",{key:d,class:"warn"},v(d),1))),128))]),_:1}),a(Ct,{layout:"vertical"},{default:l(()=>[a(Xe,{orientation:"right"},{default:l(()=>[...e[33]||(e[33]=[u("حساب مشتری‌ها",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`این بخش تعیین می‌کند کدام حساب‌های حسابداری به کاربران اپ مشتری ${U(T).name} وصل شوند`},{description:l(()=>[n("div",null," هر حسابی که در گروه‌های انتخاب‌شده باشد و موبایلش با یک کاربر اپ مشتری "+v(U(T).name)+" یکی باشد، به آن کاربر وصل می‌شود و مانده‌اش در اپ مشتری نمایش داده می‌شود. صندوق، کارمند و سرمایه‌گذار را انتخاب نکنید. ",1),e[34]||(e[34]=n("div",null," مثال: «بنکدار» و «مغازه‌دار» را در فیلد اول انتخاب کنید و در فیلد دوم «مغازه‌دار» را بگذارید. در این حالت کسی که در اپ مشتری ثبت‌نام و احراز هویت کند و در حسابداری حساب نداشته باشد، در گروه «مغازه‌دار» برایش حساب ساخته می‌شود. ",-1))]),_:1},8,["message"]),n("div",Ga,[a(Ee,{label:`گروه‌های حسابی که مشتری ${U(T).name} حساب می‌شوند`,extra:"فقط گروه‌هایی که مشتری‌اند؛ خالی = سینک مشتری اجرا نمی‌شود"},{default:l(()=>[a(fe,{value:ie.value,"onUpdate:value":e[2]||(e[2]=d=>ie.value=d),mode:"multiple",options:ke.value,"allow-clear":"",placeholder:"هیچ گروهی انتخاب نشده"},null,8,["value","options"])]),_:1},8,["label"]),a(Ee,{label:"گروه حسابداریِ مشتری تازه‌ی اپ مشتری",extra:"کاربری که در اپ مشتری احراز هویت شده و در حسابداری حساب ندارد، در این گروه برایش حساب ساخته می‌شود"},{default:l(()=>[a(fe,{value:re.value,"onUpdate:value":e[3]||(e[3]=d=>re.value=d),options:ke.value,"allow-clear":""},null,8,["value","options"])]),_:1}),a(Ee,{label:`عیار پایه‌ی وزن‌های ${U(T).name}`,extra:`عیار وزن محصول‌ها و سفارش‌ها در ${U(T).name}؛ ۷۵۰ یعنی ۱۸ عیار`},{default:l(()=>[a(Ye,{value:m.mapping.karat,"onUpdate:value":e[4]||(e[4]=d=>m.mapping.karat=d),min:1,max:1e3,class:"w-full"},null,8,["value"])]),_:1},8,["label","extra"])]),m.provider==="zarrin"?(o(),c(D,{key:0},[a(Xe,{orientation:"right"},{default:l(()=>[...e[35]||(e[35]=[u("کارساخته (زرین)",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`هر محصولی که در پنل مدیریت ${U(T).name} (بخش محصولات) تعریف می‌کنید، در زرین یک «کارساخته» می‌شود`},{description:l(()=>[e[36]||(e[36]=n("div",null,[u(" زرین برای ساختن کارساخته دو چیز لازم دارد: "),n("b",null,"نوع"),u(" (گرمی یا تعدادی) و "),n("b",null,"گروه ساخته"),u(" (کارساخته در کدام پوشه‌ی زرین قرار بگیرد). این بخش این دو را به‌جای شما انتخاب می‌کند تا لازم نباشد برای هر محصول جداگانه در زرین کاری انجام دهید. ")],-1)),n("div",null," ستون «دسته‌بندی محصول در "+v(U(T).name)+"» همان دسته‌بندی‌هایی است که در پنل مدیریت برای محصولات تعریف کرده‌اید. مثال: اگر روبه‌روی «انگشتر» گروه «انگشتر» زرین را بگذارید، هر محصول تازه در دسته‌ی انگشتر "+v(U(T).name)+"، در گروه انگشترِ زرین ساخته می‌شود. دسته‌هایی که «پیش‌فرض» بمانند در «گروه ساخته‌ی پیش‌فرض» می‌روند. ",1),n("div",null," اگر نوع یا گروه خالی باشد، محصول در "+v(U(T).name)+" ساخته می‌شود ولی ساخت کارساخته در «لاگ ارسال» منتظر می‌ماند تا آن را تعیین کنید و «تلاش دوباره» بزنید. محصول‌هایی که از قبل به کارساخته وصل شده‌اند تغییری نمی‌کنند. ",1)]),_:1},8,["message"]),n("div",La,[a(Ee,{label:"نوع کارساخته‌ی جدید (گرمی/تعدادی…)",extra:`برای محصول تازه‌ای که در پنل مدیریت ${U(T).name} تعریف می‌شود`},{default:l(()=>[a(fe,{value:ue.value,"onUpdate:value":e[5]||(e[5]=d=>ue.value=d),options:De.value,"allow-clear":""},null,8,["value","options"])]),_:1},8,["extra"]),a(Ee,{label:"گروه ساخته‌ی پیش‌فرض",extra:"برای دسته‌هایی که در جدول زیر «پیش‌فرض» مانده‌اند"},{default:l(()=>[a(fe,{value:q.value,"onUpdate:value":e[6]||(e[6]=d=>q.value=d),options:z.value,"allow-clear":""},null,8,["value","options"])]),_:1})]),a(we,{"data-source":ee.value,pagination:!1,"row-key":"id",size:"small",class:"mb-4"},{default:l(()=>[a($,{title:`دسته‌بندی محصول در ${U(T).name}`,"data-index":"title"},null,8,["title"]),a($,{title:"گروه ساخته در زرین"},{default:l(({record:d})=>[a(fe,{value:te[d.id],"onUpdate:value":E=>te[d.id]=E,options:z.value,"allow-clear":"",class:"w-full",placeholder:"پیش‌فرض"},null,8,["value","onUpdate:value","options"])]),_:1})]),_:1},8,["data-source"])],64)):m.provider==="tahesab"?(o(),c("div",Pa," ته‌حساب در API خود ساخت کارساخته ندارد: نام کار با اولین سند سفارش در ته‌حساب ساخته می‌شود و از آن به بعد به محصول لینک می‌شود. ")):_("",!0),ce.value.length?(o(),c("div",Ba," اگر فهرستی خالی است، یعنی دریافت آن از حسابداری خطا داده (پیام قرمز بالای صفحه). اتصال را بررسی کنید و دوباره «دریافت گروه‌ها» را بزنید. ")):_("",!0),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[37]||(e[37]=[u("ذخیره",-1)])]),_:1})]),_:1})]),_:1}),a(pe,{key:"outbox",tab:`لاگ ارسال${t.value}`},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(fe,{value:Se.value,"onUpdate:value":e[7]||(e[7]=d=>Se.value=d),style:{width:"180px"},"allow-clear":"",placeholder:"همه‌ی وضعیت‌ها",onChange:e[8]||(e[8]=d=>le(1))},{default:l(()=>[(o(),c(D,null,Oe(V,(d,E)=>a(Ze,{key:E,value:E},{default:l(()=>[u(v(d),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"]),a(w,{onClick:e[9]||(e[9]=d=>le(J.page))},{default:l(()=>[...e[38]||(e[38]=[u("تازه‌سازی",-1)])]),_:1})]),_:1}),a(we,{"data-source":J.rows,columns:r,"row-key":"id",size:"small",pagination:{current:J.page,pageSize:J.limit,total:J.total,onChange:le}},{bodyCell:l(({column:d,record:E})=>[d.key==="createdAt"?(o(),c(D,{key:0},[u(v(F(E.createdAt)),1)],64)):d.key==="kind"?(o(),c(D,{key:1},[u(v(Be[E.kind]??E.kind),1)],64)):d.key==="entity"?(o(),c(D,{key:2},[u(v(E.entityLabel??E.entityId),1)],64)):d.key==="status"?(o(),c(D,{key:3},[a(k,{color:W[E.status]},{default:l(()=>[u(v(V[E.status]??E.status),1)]),_:2},1032,["color"]),E.provider!==m.provider?(o(),c("span",Wa," ("+v(E.provider)+")",1)):_("",!0)],64)):d.key==="error"?(o(),c("span",Fa,v(E.lastError),1)):d.key==="actions"?(o(),x(K,{key:5},{default:l(()=>[["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:0,title:"پیش از تلاش دوباره، مطمئن شوید سند در حسابداری ثبت نشده است. ادامه؟",onConfirm:Ge=>b(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[39]||(e[39]=[u("تلاش دوباره",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0),["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:1,title:"این ردیف «حل‌شده» علامت بخورد (دستی در حسابداری رسیدگی شده)؟",onConfirm:Ge=>Ce(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[40]||(e[40]=[u("حل‌شده",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0)]),_:2},1024)):_("",!0)]),expandedRowRender:l(({record:d})=>[n("div",Ka,[n("div",null,[e[41]||(e[41]=n("b",null,"درخواست",-1)),n("pre",Va,v(Re(d.lastRequest)),1)]),n("div",null,[e[42]||(e[42]=n("b",null,"پاسخ",-1)),n("pre",Ya,v(Re(d.lastResponse)),1)])]),n("div",Ha,"کد مرجع: "+v(d.externalRef??"—")+" | تلاش: "+v(d.attempts)+" | تلاش بعدی: "+v(F(d.nextAttemptAt)),1)]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"issues",tab:`مغایرت‌ها${(Ae=O.value)!=null&&Ae.openIssues?` (${O.value.openIssues})`:""}`},{default:l(()=>[a(we,{"data-source":g.rows,"row-key":"id",size:"small",pagination:{current:g.page,pageSize:g.limit,total:g.total,onChange:Ve}},{default:l(()=>[a($,{title:"تاریخ"},{default:l(({record:d})=>[u(v(F(d.updatedAt)),1)]),_:1}),a($,{title:"نرم‌افزار","data-index":"provider"}),a($,{title:"نوع"},{default:l(({record:d})=>[u(v(i[d.kind]??d.kind),1)]),_:1}),a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"شرح","data-index":"message"}),a($,{title:""},{default:l(({record:d})=>[a(w,{size:"small",onClick:E=>ft(d.id)},{default:l(()=>[...e[43]||(e[43]=[u("رسیدگی شد",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"links",tab:"لینک‌ها"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(wt,{value:N.value,"onUpdate:value":e[10]||(e[10]=d=>N.value=d),onChange:e[11]||(e[11]=d=>he(1))},{default:l(()=>[a(et,{value:"CUSTOMER"},{default:l(()=>[...e[44]||(e[44]=[u("مشتری",-1)])]),_:1}),a(et,{value:"PRODUCT"},{default:l(()=>[...e[45]||(e[45]=[u("کارساخته",-1)])]),_:1})]),_:1},8,["value"]),a(Et,{value:I.value,"onUpdate:value":e[12]||(e[12]=d=>I.value=d),placeholder:"کد یا نام در حسابداری",style:{width:"240px"},onSearch:e[13]||(e[13]=d=>he(1))},null,8,["value"])]),_:1}),a(we,{"data-source":y.rows,"row-key":"id",size:"small",pagination:{current:y.page,pageSize:y.limit,total:y.total,onChange:he}},{default:l(()=>[a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"نام در حسابداری","data-index":"externalName"}),a($,{title:`شناسه در ${U(T).name}`,"data-index":"entityId"},null,8,["title"]),a($,{title:"منشأ"},{default:l(({record:d})=>[u(v(Z[d.origin]??d.origin),1)]),_:1}),a($,{title:"آخرین سینک"},{default:l(({record:d})=>[u(v(F(d.syncedAt)),1)]),_:1}),a($,{title:""},{default:l(({record:d})=>[a(He,{title:"لینک حذف شود؟ در سینک بعدی دوباره با موبایل/نام جفت می‌شود.",onConfirm:E=>bt(d.id)},{default:l(()=>[a(w,{size:"small",danger:""},{default:l(()=>[...e[46]||(e[46]=[u("حذف لینک",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1}),a(pe,{key:"movement",tab:"گردش کارساخته"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(tt,{value:xe.value,"onUpdate:value":e[14]||(e[14]=d=>xe.value=d),dir:"ltr",placeholder:"از ۱۴۰۵/۰۷/۰۱",style:{width:"150px"}},null,8,["value"]),a(tt,{value:L.value,"onUpdate:value":e[15]||(e[15]=d=>L.value=d),dir:"ltr",placeholder:"تا ۱۴۰۵/۰۷/۳۰",style:{width:"150px"}},null,8,["value"]),a(w,{disabled:!be.value,loading:Ue.value,onClick:_t},{default:l(()=>[...e[47]||(e[47]=[u("نمایش",-1)])]),_:1},8,["disabled","loading"])]),_:1}),ae.scope==="recent-documents"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"ته‌حساب گزارش گردش همه‌ی حساب‌ها را ندارد؛ این فهرست از آخرین ۱۰۰۰ سند ثبت‌شده ساخته شده است."})):_("",!0),a(we,{"data-source":ae.rows,"row-key":(d,E)=>E,size:"small"},{default:l(()=>[a($,{title:"تاریخ","data-index":"date"}),a($,{title:"کارساخته","data-index":"itemName"}),a($,{title:"شرح","data-index":"description"}),a($,{title:"وزن","data-index":"weight"}),a($,{title:"تعداد","data-index":"count"}),a($,{title:"مبلغ","data-index":"amount"})]),_:1},8,["data-source","row-key"])]),_:1})]}),_:1},8,["active-key"])]),_:1},8,["spinning"])]}),_:1})):_("",!0)])}}}),el=pt(qa,[["__scopeId","data-v-cc33ab94"]]);export{el as default}; +import{m as Je}from"./index-CKaD48iT.js";import{c as a,I as Ut,d as mt,n as Qe,o,b as c,p as n,a as x,g as Nt,f as u,t as v,w as l,i as _,F as D,e as Oe,q as Le,h as U,J as ht,s as M,z as ne,m as h,y as j,G as B,r as f,K as vt,L as Tt,_ as pt,u as $t,x as Dt,j as T}from"./index-eLNLLYwC.js";import{L as It}from"./LockOutlined-BQjJg0kk.js";import{S as qe}from"./SafetyCertificateOutlined-Du6lFDs_.js";var Mt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"}}]},name:"minus-circle",theme:"filled"};function ct(C){for(var A=1;Ap.form.provider==="none"?null:p.form.provider),Z=M(()=>{var r;return((r=p.overview)==null?void 0:r.config)??null}),Y=r=>{var t;return(t=Z.value)==null?void 0:t[r]},oe=M(()=>{var r;return!!(i.value&&((r=Y(i.value))!=null&&r.tokenSet))}),O=M(()=>!!i.value&&/^https:\/\//i.test(p.form[i.value].baseUrl||"")),m=(r,t)=>{var g,y,N,I,ae;return JSON.stringify(t==="none"?{provider:t}:{provider:t,baseUrl:((g=r[t])==null?void 0:g.baseUrl)??"",caCert:((y=r[t])==null?void 0:y.caCert)??"",timeoutMs:(N=r[t])==null?void 0:N.timeoutMs,dbName:t==="tahesab"?(I=r.tahesab)==null?void 0:I.dbName:void 0,balanceOwesWhen:t==="zarrin"?(ae=r.zarrin)==null?void 0:ae.balanceOwesWhen:void 0})},X=M(()=>{var r;return Z.value?p.form.provider!==Z.value.provider?!0:i.value?m(p.form,i.value)!==m(Z.value,i.value)||!!((r=p.tokens[i.value])!=null&&r.trim()):!1:!1}),$e=M(()=>!!Z.value&&Z.value.provider!=="none"&&Z.value.provider!==p.form.provider),be=r=>r?Je(r).format("jYYYY/jMM/jDD ساعت HH:mm"):"",G=M(()=>{const r=p.overview;if(!r)return{tone:"off",icon:Pe,title:"…",text:"",rows:[]};const t=r.config;if(t.provider==="none")return{tone:"off",icon:Pe,title:"اتصال خاموش است",text:"هیچ اطلاعاتی با نرم‌افزار حسابداری رد و بدل نمی‌شود."};const g=W[t.provider];if(r.inactiveReason)return{tone:"bad",icon:vt,title:`اتصال به ${g} کار نمی‌کند`,text:r.inactiveReason};const y=r.realtime;if(y!=null&&y.lastError)return{tone:"bad",icon:vt,title:`${g}: ارتباط برقرار نیست`,text:y.lastError};const I=[{label:"آدرس",value:t[t.provider].baseUrl,ltr:!0}];return t.provider==="tahesab"&&I.push({label:"دیتابیس",value:t.tahesab.dbName,ltr:!0}),y!=null&&y.lastOkAt&&I.push({label:"آخرین ارتباط موفق",value:be(y.lastOkAt)}),{tone:"ok",icon:Tt,title:`متصل به ${g}`,text:"",rows:I}}),ee=ne({tahesab:!1,zarrin:!1});function ce(){i.value&&(p.tokens[i.value]="",ee[i.value]=!1)}Qe(()=>p.overview,()=>{ee.tahesab=!1,ee.zarrin=!1,S.value=null});const _e=M({get:()=>i.value?Math.round((p.form[i.value].timeoutMs??2e4)/1e3):20,set:r=>{i.value&&(p.form[i.value].timeoutMs=Math.max(3,Math.min(120,Number(r)||20))*1e3)}}),H=h(!1),S=h(null),ye=r=>{var t;return((t=r.match(/CN=([^\n,]+)/))==null?void 0:t[1])??r.replace(/\n/g,", ")},ie=r=>r?Je(new Date(r)).format("jYYYY/jMM/jDD"):"—",re=M(()=>{var r;return!!i.value&&(p.form[i.value].caCert||"")!==(((r=Y(i.value))==null?void 0:r.caCert)||"")}),q=M(()=>{var r;return i.value?re.value?S.value&&S.value.pem===p.form[i.value].caCert?S.value:null:((r=Y(i.value))==null?void 0:r.caInfo)??null:null});async function ue(){var r,t;if(i.value){H.value=!0;try{const{data:g}=await j.post("admin/accounting/certificate",{baseUrl:p.form[i.value].baseUrl});S.value=g,p.form[i.value].caCert&&g.pem.trim()===p.form[i.value].caCert.trim()?B.success("گواهی سرور همان گواهی تأییدشده است"):p.form[i.value].caCert&&(p.form[i.value].caCert="")}catch(g){B.error(((t=(r=g==null?void 0:g.response)==null?void 0:r.data)==null?void 0:t.message)??"گواهی دریافت نشد")}finally{H.value=!1}}}function te(){!i.value||!S.value||(p.form[i.value].caCert=S.value.pem)}const ke=h(!1),z=h(null),De=h(""),Ie=()=>i.value?JSON.stringify([p.form.provider,p.form[i.value],p.tokens[i.value]]):"",Me=M(()=>!!z.value&&De.value!==Ie()),We=M(()=>{var r;return!!i.value&&!!p.form[i.value].baseUrl&&(oe.value||!!((r=p.tokens[i.value])!=null&&r.trim()))});Qe(i,()=>z.value=null);async function de(){var t,g;if(!i.value)return;const r=i.value;ke.value=!0;try{const y={baseUrl:p.form[r].baseUrl,timeoutMs:p.form[r].timeoutMs,caCert:p.form[r].caCert,token:p.tokens[r]||void 0};r==="tahesab"?y.dbName=p.form.tahesab.dbName:y.balanceOwesWhen=p.form.zarrin.balanceOwesWhen,De.value=Ie();const{data:N}=await j.post("admin/accounting/test",{provider:r,connection:y});z.value=N}catch(y){const N=(g=(t=y==null?void 0:y.response)==null?void 0:t.data)==null?void 0:g.message;z.value={ok:!1,error:Array.isArray(N)?N.join("، "):N??"خطا در تست اتصال"}}finally{ke.value=!1}}const Fe={version:{label:"نسخه",ltr:!0},dbType:{label:"نوع دیتابیس",ltr:!0},dbName:{label:"دیتابیس",ltr:!0},customerGroups:{label:"گروه‌های حساب"},message:{label:"پیام سرور"}},J=M(()=>{var g,y;const r=((g=z.value)==null?void 0:g.info)??{},t=Object.entries(Fe).filter(([N])=>r[N]!==void 0&&r[N]!==null&&r[N]!=="").map(([N,I])=>({label:I.label,value:String(r[N]),ltr:I.ltr}));return t.push({label:"زمان پاسخ",value:`${(((y=z.value)==null?void 0:y.ms)??0).toLocaleString("fa-IR")} میلی‌ثانیه`,ltr:!1}),t}),Se=M(()=>{var r,t;return i.value==="tahesab"&&!!((t=(r=z.value)==null?void 0:r.info)!=null&&t.dbName)&&String(z.value.info.dbName).toLowerCase()!==String(p.form.tahesab.dbName||"").toLowerCase()});return(r,t)=>{var Ne,je,le;const g=f("a-tag"),y=f("a-alert"),N=f("a-input"),I=f("a-form-item"),ae=f("a-select-option"),xe=f("a-select"),L=f("a-button"),Ue=f("a-popconfirm"),F=f("a-space"),Re=f("a-input-password"),Q=f("a-form"),ze=f("a-input-number"),me=f("a-collapse-panel"),ge=f("a-collapse"),Ke=f("a-textarea");return o(),c("div",zt,[n("div",{class:Le(["status",`status--${G.value.tone}`])},[(o(),x(Nt(G.value.icon),{class:"status__icon"})),n("div",jt,[n("div",At,[u(v(G.value.title)+" ",1),X.value?(o(),x(g,{key:0,color:"orange",class:"status__tag"},{default:l(()=>[...t[11]||(t[11]=[u("تغییرات ذخیره نشده",-1)])]),_:1})):_("",!0)]),G.value.text?(o(),c("div",Gt,v(G.value.text),1)):_("",!0),(Ne=G.value.rows)!=null&&Ne.length?(o(),c("dl",Lt,[(o(!0),c(D,null,Oe(G.value.rows,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,Pt)],64))),128))])):_("",!0)])],2),n("section",Bt,[t[13]||(t[13]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۱"),u("نرم‌افزار حسابداری")],-1)),n("div",Wt,[(o(),c(D,null,Oe(Be,b=>n("button",{key:b.value,type:"button",role:"radio","aria-checked":C.form.provider===b.value,class:Le(["choice",{"choice--on":C.form.provider===b.value}]),onClick:Ce=>C.form.provider=b.value},[t[12]||(t[12]=n("span",{class:"choice__dot"},null,-1)),n("span",Kt,v(b.label),1),n("span",Vt,v(b.desc),1)],10,Ft)),64))]),$e.value?(o(),x(y,{key:0,class:"mt",type:"info","show-icon":"",message:"با ذخیره، نرم‌افزار عوض می‌شود",description:"کارهای در صف نرم‌افزار قبلی متوقف می‌مانند (پاک نمی‌شوند) و لینک‌های هر نرم‌افزار جدا نگه داشته می‌شوند؛ برگشت بی‌خطر است."})):_("",!0)]),i.value?(o(),c(D,{key:0},[n("section",Yt,[n("h3",Ht,[t[14]||(t[14]=n("span",{class:"step__no"},"۲",-1)),u("اطلاعات اتصال به "+v(W[i.value]),1)]),a(Q,{layout:"vertical",class:"grid"},{default:l(()=>[a(I,{label:"آدرس وب‌سرویس",required:""},{default:l(()=>[a(N,{value:C.form[i.value].baseUrl,"onUpdate:value":t[0]||(t[0]=b=>C.form[i.value].baseUrl=b),dir:"ltr",class:"ltr",placeholder:i.value==="tahesab"?"https://192.168.1.10:8081":"http://192.168.1.10:8000/ZarrinService/accounting"},null,8,["value","placeholder"]),n("div",qt,"آدرسی که وب‌سرویس "+v(W[i.value])+" روی آن در دسترس است، با پورت.",1)]),_:1}),i.value==="tahesab"?(o(),x(I,{key:0,label:"نام دیتابیس (DBname)",required:""},{default:l(()=>[a(N,{value:C.form.tahesab.dbName,"onUpdate:value":t[1]||(t[1]=b=>C.form.tahesab.dbName=b),dir:"ltr",class:"ltr",placeholder:"TahesabDB"},null,8,["value"]),t[15]||(t[15]=n("div",{class:"help"},"نام دقیق دیتابیس همین شرکت. یک سرور ممکن است چند دیتابیس داشته باشد؛ بعد از تست، نام را در نتیجه چک کنید.",-1))]),_:1})):(o(),x(I,{key:1,label:"علامت مانده‌ی بدهکار"},{default:l(()=>[a(xe,{value:C.form.zarrin.balanceOwesWhen,"onUpdate:value":t[2]||(t[2]=b=>C.form.zarrin.balanceOwesWhen=b)},{default:l(()=>[a(ae,{value:"negative"},{default:l(()=>[...t[16]||(t[16]=[u("منفی یعنی بدهکار",-1)])]),_:1}),a(ae,{value:"positive"},{default:l(()=>[...t[17]||(t[17]=[u("مثبت یعنی بدهکار",-1)])]),_:1})]),_:1},8,["value"]),t[18]||(t[18]=n("div",{class:"help"},"در زرین منفی یعنی بدهکار (روی نصب واقعی بررسی شد)؛ تغییرش ندهید مگر نصب شما خلاف این باشد.",-1))]),_:1})),a(I,{label:"توکن وب‌سرویس",required:"",class:"grid__full"},{default:l(()=>{var b;return[oe.value&&!ee[i.value]?(o(),c("div",Jt,[a(U(It),{class:"token__icon"}),(b=Y(i.value))!=null&&b.tokenReadable?(o(),c("span",Qt,"توکن ذخیره شده است و نمایش داده نمی‌شود.")):(o(),c("span",Zt,"توکن ذخیره‌شده قابل‌خواندن نیست؛ دوباره وارد کنید.")),a(F,{class:"token__actions"},{default:l(()=>[a(L,{size:"small",onClick:t[3]||(t[3]=Ce=>ee[i.value]=!0)},{default:l(()=>[...t[19]||(t[19]=[u("تغییر توکن",-1)])]),_:1}),a(Ue,{title:"توکن حذف شود؟ تا توکن جدید وارد نشود اتصال کار نمی‌کند.","ok-text":"حذف","cancel-text":"انصراف",onConfirm:t[4]||(t[4]=Ce=>V("clearToken",i.value))},{default:l(()=>[a(L,{size:"small",danger:""},{default:l(()=>[...t[20]||(t[20]=[u("حذف",-1)])]),_:1})]),_:1})]),_:1})])):(o(),c(D,{key:1},[a(Re,{value:C.tokens[i.value],"onUpdate:value":t[5]||(t[5]=Ce=>C.tokens[i.value]=Ce),dir:"ltr",class:"ltr",autocomplete:"new-password",placeholder:"توکن را اینجا وارد کنید"},null,8,["value"]),n("div",Xt,[t[21]||(t[21]=u(" بعد از ذخیره، توکن رمز می‌شود و دیگر نمایش داده نمی‌شود. ",-1)),oe.value?(o(),c("a",{key:0,class:"link",onClick:ce},"انصراف و نگه‌داشتن توکن فعلی")):_("",!0)])],64))]}),_:1})]),_:1}),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"adv",header:"تنظیمات پیشرفته"},{default:l(()=>[a(Q,{layout:"vertical"},{default:l(()=>[a(I,{label:"حداکثر زمان انتظار برای پاسخ"},{default:l(()=>[a(ze,{value:_e.value,"onUpdate:value":t[6]||(t[6]=b=>_e.value=b),min:3,max:120,"addon-after":"ثانیه"},null,8,["value"]),t[22]||(t[22]=n("div",{class:"help"},"اگر سرور حسابداری کند است بیشترش کنید. پیش‌فرض ۲۰ ثانیه.",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),O.value?(o(),c("section",ea,[t[41]||(t[41]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۳"),u("گواهی امنیتی سرور")],-1)),n("p",ta," اتصال همیشه رمزنگاری‌شده و بررسی‌شده است. نصب‌های معمول "+v(W[i.value])+" گواهی خودساخته دارند؛ در این حالت یک بار گواهی سرور را بررسی و تأیید کنید. ",1),C.form[i.value].caCert?(o(),c("div",aa,[a(U(qe),{class:"cert__icon"}),n("div",la,[n("div",sa,[t[25]||(t[25]=u(" گواهی سرور تأیید شده است ",-1)),re.value?(o(),x(g,{key:0,color:"orange"},{default:l(()=>[...t[23]||(t[23]=[u("ذخیره نشده",-1)])]),_:1})):_("",!0),(je=q.value)!=null&&je.expired?(o(),x(g,{key:1,color:"red"},{default:l(()=>[...t[24]||(t[24]=[u("منقضی شده",-1)])]),_:1})):_("",!0)]),q.value?(o(),c("dl",na,[t[26]||(t[26]=n("dt",null,"صادرشده برای",-1)),n("dd",oa,v(ye(q.value.subject)),1),t[27]||(t[27]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(q.value.validTo)),1),t[28]||(t[28]=n("dt",null,"اثرانگشت",-1)),n("dd",ia,v(q.value.fingerprint256),1)])):(o(),c("div",ra,"مشخصات گواهی بعد از ذخیره نمایش داده می‌شود."))]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{size:"small",loading:H.value,onClick:ue},{default:l(()=>[...t[29]||(t[29]=[u("بررسی دوباره",-1)])]),_:1},8,["loading"]),a(L,{size:"small",danger:"",onClick:t[7]||(t[7]=b=>C.form[i.value].caCert="")},{default:l(()=>[...t[30]||(t[30]=[u("برداشتن",-1)])]),_:1})]),_:1})])):S.value&&!S.value.trustedBySystem?(o(),c("div",ua,[a(U(ht),{class:"cert__icon"}),n("div",da,[t[34]||(t[34]=n("div",{class:"cert__title"},"این گواهی را تأیید می‌کنید؟",-1)),t[35]||(t[35]=n("div",{class:"help"},"اثرانگشت زیر را با گواهی نصب‌شده روی سرور حسابداری مقایسه کنید. اگر یکی است تأیید کنید.",-1)),n("dl",va,[t[31]||(t[31]=n("dt",null,"صادرشده برای",-1)),n("dd",ca,v(ye(S.value.subject)),1),t[32]||(t[32]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(S.value.validTo)),1),t[33]||(t[33]=n("dt",null,"اثرانگشت",-1)),n("dd",ma,v(S.value.fingerprint256),1)]),S.value.expired?(o(),x(y,{key:0,type:"error","show-icon":"",message:"این گواهی منقضی شده است.",class:"mt"})):_("",!0)]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{type:"primary",size:"small",onClick:te},{default:l(()=>[...t[36]||(t[36]=[u("تأیید گواهی",-1)])]),_:1}),a(L,{size:"small",onClick:t[8]||(t[8]=b=>S.value=null)},{default:l(()=>[...t[37]||(t[37]=[u("انصراف",-1)])]),_:1})]),_:1})])):(le=S.value)!=null&&le.trustedBySystem?(o(),c("div",pa,[a(U(qe),{class:"cert__icon"}),t[38]||(t[38]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی سرور معتبر است"),n("div",{class:"help"},"این سرور گواهی معتبر عمومی دارد؛ کاری لازم نیست.")],-1))])):(o(),c("div",fa,[a(U(qe),{class:"cert__icon cert__icon--muted"}),t[40]||(t[40]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی‌ای تأیید نشده"),n("div",{class:"help"},"اگر «تست اتصال» خطای گواهی داد، اینجا گواهی سرور را بررسی کنید.")],-1)),a(L,{loading:H.value,disabled:!C.form[i.value].baseUrl,onClick:ue},{default:l(()=>[...t[39]||(t[39]=[u("بررسی گواهی سرور",-1)])]),_:1},8,["loading","disabled"])])),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"pem",header:"وارد کردن دستی گواهی (PEM)"},{default:l(()=>[a(Ke,{value:C.form[i.value].caCert,"onUpdate:value":t[9]||(t[9]=b=>C.form[i.value].caCert=b),dir:"ltr",class:"ltr mono",rows:5,placeholder:"-----BEGIN CERTIFICATE-----"},null,8,["value"])]),_:1})]),_:1})])):_("",!0)],64)):_("",!0),i.value&&z.value?(o(),c("section",ba,[z.value.ok?(o(),x(y,{key:0,type:"success","show-icon":"",message:`اتصال به ${W[i.value]} برقرار است`},{description:l(()=>[n("dl",_a,[(o(!0),c(D,null,Oe(J.value,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,ya)],64))),128))]),Se.value?(o(),c("div",ka,[t[42]||(t[42]=u(" دیتابیسی که وصل شد ",-1)),n("bdi",ga,v(z.value.info.dbName),1),t[43]||(t[43]=u(" است، نه ",-1)),n("bdi",Ca,v(C.form.tahesab.dbName),1),t[44]||(t[44]=u(". نام دیتابیس را چک کنید. ",-1))])):_("",!0),Me.value?(o(),c("div",wa,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1},8,["message"])):(o(),x(y,{key:1,type:"error","show-icon":"",message:"اتصال برقرار نشد"},{description:l(()=>[n("div",null,v(z.value.error),1),Me.value?(o(),c("div",Ea,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1}))])):_("",!0),n("div",Oa,[n("span",Sa,[X.value?(o(),c(D,{key:0},[u("تغییرات هنوز ذخیره نشده‌اند.")],64)):i.value?(o(),c(D,{key:1},[u("«تست اتصال» مقادیر همین فرم را امتحان می‌کند، حتی پیش از ذخیره.")],64)):_("",!0)]),a(F,null,{default:l(()=>[i.value?(o(),x(L,{key:0,loading:ke.value,disabled:!We.value,onClick:de},{default:l(()=>[...t[45]||(t[45]=[u("تست اتصال",-1)])]),_:1},8,["loading","disabled"])):_("",!0),a(L,{type:"primary",loading:C.saving,disabled:!X.value,onClick:t[10]||(t[10]=b=>V("save"))},{default:l(()=>[...t[46]||(t[46]=[u("ذخیره",-1)])]),_:1},8,["loading","disabled"])]),_:1})])])}}}),Ua=pt(xa,[["__scopeId","data-v-a7739f0b"]]),Na={key:0},ha={key:0},Ta={key:1},$a={key:2,class:"warn"},Da={key:2},Ia={key:0,class:"hint"},Ma={key:0,class:"warn"},Ra={key:1},za={class:"grid-2 mt-4"},ja={class:"hint mb-4"},Aa={key:0},Ga={class:"grid-2"},La={class:"grid-2"},Pa={key:1,class:"hint mb-4"},Ba={key:2,class:"hint mb-4"},Wa={key:0,class:"hint"},Fa={key:4,class:"warn small"},Ka={class:"grid-2"},Va={dir:"ltr"},Ya={dir:"ltr"},Ha={class:"hint"},qa=mt({__name:"accounting",setup(C){const A=$t(),p=s=>!!A.hasPermission(s),V={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},W={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"default"},Be={CUSTOMER_PUSH:"ارسال مشتری",PRODUCT_PUSH:"ساخت کارساخته",ORDER_DOCUMENT:"سند سفارش",ORDER_DOCUMENT_DELETE:"حذف سند سفارش"},i={CUSTOMER_NO_MOBILE:"حساب بدون موبایل",CUSTOMER_DUPLICATE_MOBILE:"موبایل تکراری",CUSTOMER_LINK_CONFLICT:"تداخل لینک",PRODUCT_DUPLICATE_TITLE:"عنوان تکراری محصول",PRODUCT_CODE_TAKEN:"کد محصول تکراری"},Z={LINKED:"جفت با موبایل/نام",IMPORTED:"وارد شده از حسابداری",PUSHED:`ساخته شده از ${T.name}`,MANUAL:"دستی"},Y=h(!1),oe=h("connection"),O=h(null),m=ne({provider:"none",tahesab:{baseUrl:"",dbName:"TahesabDB",timeoutMs:2e4,caCert:""},zarrin:{baseUrl:"",balanceOwesWhen:"negative",timeoutMs:2e4,caCert:""},features:{customers:!1,balances:!1,report:!1,products:!1,documents:!1},intervals:{customersMinutes:60,balancesMinutes:10,productsMinutes:30},mapping:{karat:750},report:{windowDays:365},documents:{triggerStatus:"DELIVERED_TO_AGENT"}}),X=ne({tahesab:"",zarrin:""}),$e=h("none"),be=M(()=>$e.value!=="none"),G=ne({customerGroups:[],karSakhteGroups:[],karSakhteTypes:[]}),ee=h([]),ce=h([]),_e=h(!1),H=s=>s?`${s.id}|${s.name}`:void 0,S=s=>{if(!s)return null;const e=s.indexOf("|");return{id:s.slice(0,e),name:s.slice(e+1)}},ye=(s,e)=>{const k=[...s];for(const w of e)w&&!k.some(K=>K.id===w.id&&K.name===w.name)&&k.push(w);return k.map(w=>({value:H(w),label:w.id?`${w.name} (${w.id})`:w.name}))},ie=h([]),re=h(),q=h(),ue=h(),te=ne({}),ke=M(()=>ye(G.customerGroups,[...ie.value.map(S),S(re.value)])),z=M(()=>ye(G.karSakhteGroups,[S(q.value),...Object.values(te).map(S)])),De=M(()=>ye(G.karSakhteTypes,[S(ue.value)])),Ie=[{value:"PLACED",label:"ثبت سفارش"},{value:"ADMIN_APPROVED",label:"تأیید مدیر"},{value:"SOURCING",label:"در حال تأمین"},{value:"PREPARING",label:"در حال آماده‌سازی"},{value:"DELIVERED_TO_AGENT",label:"تحویل مسئول فروش"},{value:"DELIVERED_TO_CUSTOMER",label:"تحویل مشتری"}],Me=[{key:"customers",label:"سینک مشتریان (ورود/لینک با موبایل، ساخت پس از احراز هویت)",interval:"customersMinutes",job:"customers"},{key:"balances",label:"سینک مانده (نمایش به مشتری)",interval:"balancesMinutes",job:"balances"},{key:"report",label:"گزارش مشتری از حسابداری",interval:null,job:null},{key:"products",label:"کارساخته ↔ محصول و قفل ناموجود",interval:"productsMinutes",job:"products"},{key:"documents",label:"ثبت سند سفارش (موقت)",interval:null,job:"outbox"}],We=[{title:"قابلیت",dataIndex:"label",key:"label"},{title:"فعال",key:"on",width:80},{title:"بازه",key:"interval",width:170},{title:"وضعیت",key:"state"},{title:"",key:"run",width:110}],de=s=>{var e,k,w;return(w=(k=(e=O.value)==null?void 0:e.state)==null?void 0:k.jobs)==null?void 0:w[s]},Fe=s=>Object.entries(s).map(([e,k])=>`${e}: ${k}`).join("، "),J=ne({rows:[],total:0,page:1,limit:25}),Se=h(),r=[{title:"زمان",key:"createdAt",width:150},{title:"نوع",key:"kind",width:120},{title:"مورد",key:"entity"},{title:"وضعیت",key:"status",width:140},{title:"خطا",key:"error"},{title:"",key:"actions",width:190}],t=M(()=>{var k;const s=((k=O.value)==null?void 0:k.outbox)??{},e=(s.FAILED??0)+(s.NEEDS_REVIEW??0);return e?` (${e})`:""}),g=ne({rows:[],total:0,page:1,limit:25}),y=ne({rows:[],total:0,page:1,limit:25}),N=h("CUSTOMER"),I=h(""),ae=ne({rows:[],scope:null}),xe=h(""),L=h(""),Ue=h(!1),F=s=>s?Je(s).format("jYYYY/jMM/jDD HH:mm"):"—",Re=s=>s==null?"—":JSON.stringify(s,null,2),Q=(s,e)=>{var w,K;const k=(K=(w=s==null?void 0:s.response)==null?void 0:w.data)==null?void 0:K.message;return Array.isArray(k)?k.join("، "):k??e};function ze(s){var e;m.provider=s.provider,$e.value=s.provider;for(const k of["tahesab","zarrin"])m[k].baseUrl=s[k].baseUrl,m[k].timeoutMs=s[k].timeoutMs,m[k].caCert=s[k].caCert??"";m.tahesab.dbName=s.tahesab.dbName,m.zarrin.balanceOwesWhen=s.zarrin.balanceOwesWhen,Object.assign(m.features,s.features),Object.assign(m.intervals,s.intervals),m.mapping.karat=s.mapping.karat,m.report.windowDays=s.report.windowDays,m.documents.triggerStatus=((e=s.documents)==null?void 0:e.triggerStatus)??"DELIVERED_TO_AGENT",ie.value=(s.mapping.importCustomerGroups??[]).map(H),re.value=H(s.mapping.newCustomerGroup),q.value=H(s.mapping.newKarSakhteGroup),ue.value=H(s.mapping.newKarSakhteType);for(const k of Object.keys(te))delete te[k];for(const k of s.mapping.categoryGroups??[])te[k.categoryId]=H(k.group)}async function me(){try{Y.value=!0;const{data:s}=await j.get("admin/accounting");O.value=s,ze(s.config)}catch(s){B.error(Q(s,"خطا در دریافت تنظیمات"))}finally{Y.value=!1}}async function ge(){const s={provider:m.provider,tahesab:{baseUrl:m.tahesab.baseUrl,dbName:m.tahesab.dbName,timeoutMs:m.tahesab.timeoutMs,caCert:m.tahesab.caCert},zarrin:{baseUrl:m.zarrin.baseUrl,balanceOwesWhen:m.zarrin.balanceOwesWhen,timeoutMs:m.zarrin.timeoutMs,caCert:m.zarrin.caCert},features:m.features,intervals:m.intervals,report:m.report,documents:m.documents,mapping:{karat:m.mapping.karat,importCustomerGroups:ie.value.map(S).filter(Boolean),newCustomerGroup:S(re.value),newKarSakhteGroup:S(q.value),newKarSakhteType:S(ue.value),categoryGroups:Object.entries(te).filter(([,e])=>!!e).map(([e,k])=>({categoryId:e,group:S(k)}))}};for(const e of["tahesab","zarrin"])X[e].trim()&&(s[e].token=X[e].trim());try{Y.value=!0;const{data:e}=await j.put("admin/accounting/config",s);O.value=e,ze(e.config),X.tahesab="",X.zarrin="",B.success("تنظیمات ذخیره شد")}catch(e){B.error(Q(e,"خطا در ذخیره"))}finally{Y.value=!1}}async function Ke(s){try{const{data:e}=await j.put("admin/accounting/config",{[s]:{token:null}});O.value=e,B.success("توکن حذف شد")}catch(e){B.error(Q(e,"خطا"))}}async function Ne(){_e.value=!0,ce.value=[];try{const{data:s}=await j.get("admin/accounting/options",{params:{provider:m.provider}});G.customerGroups=s.customerGroups.items,G.karSakhteGroups=s.karSakhteGroups.items,G.karSakhteTypes=s.karSakhteTypes.items,ee.value=s.categories;for(const e of[s.customerGroups,s.karSakhteGroups,s.karSakhteTypes])e.ok||ce.value.push(e.error)}catch(s){ce.value=[Q(s,"تنظیمات اتصال را اول ذخیره کنید")]}finally{_e.value=!1}}async function je(s){try{const{data:e}=await j.post(`admin/accounting/run/${s}`);e.started?B.success("همگام‌سازی شروع شد؛ نتیجه چند لحظه بعد در همین صفحه دیده می‌شود"):B.warning(e.message),setTimeout(me,4e3)}catch(e){B.error(Q(e,"خطا"))}}async function le(s=1){const{data:e}=await j.get("admin/accounting/outbox",{params:{page:s,status:Se.value}});Object.assign(J,e)}async function b(s){try{await j.post(`admin/accounting/outbox/${s}/retry`),B.success("دوباره در صف قرار گرفت"),le(J.page)}catch(e){B.error(Q(e,"خطا"))}}async function Ce(s){await j.post(`admin/accounting/outbox/${s}/resolve`,{}),le(J.page)}async function Ve(s=1){const{data:e}=await j.get("admin/accounting/issues",{params:{page:s}});Object.assign(g,e)}async function ft(s){await j.post(`admin/accounting/issues/${s}/resolve`),Ve(g.page),me()}async function he(s=1){const{data:e}=await j.get("admin/accounting/links",{params:{page:s,entityType:N.value,q:I.value||void 0}});Object.assign(y,e)}async function bt(s){await j.delete(`admin/accounting/links/${s}`),he(y.page)}async function _t(){Ue.value=!0;try{const{data:s}=await j.get("admin/accounting/movement",{params:{from:xe.value||void 0,to:L.value||void 0}});Object.assign(ae,s)}catch(s){B.error(Q(s,"خطا در دریافت گردش"))}finally{Ue.value=!1}}return Qe(oe,s=>{s==="outbox"&&le(1),s==="issues"&&Ve(1),s==="links"&&he(1),s==="mapping"&&m.provider!=="none"&&ee.value.length===0&&Ne()}),Dt(me),(s,e)=>{const k=f("a-tag"),w=f("a-button"),K=f("a-space"),ve=f("a-alert"),pe=f("a-tab-pane"),yt=f("a-switch"),Ye=f("a-input-number"),Ze=f("a-select-option"),fe=f("a-select"),we=f("a-table"),Ee=f("a-form-item"),kt=f("a-collapse-panel"),gt=f("a-collapse"),Xe=f("a-divider"),$=f("a-table-column"),Ct=f("a-form"),He=f("a-popconfirm"),et=f("a-radio-button"),wt=f("a-radio-group"),Et=f("a-input-search"),tt=f("a-input"),Ot=f("a-tabs"),St=f("a-spin"),xt=f("a-card");return o(),c("div",null,[p("config.accounting")?(o(),x(xt,{key:0,title:"اتصال به نرم‌افزار حسابداری",class:"page-card table-scroll"},{extra:l(()=>[a(K,null,{default:l(()=>{var Te;return[(Te=O.value)!=null&&Te.busy?(o(),x(k,{key:0,color:"processing"},{default:l(()=>[...e[17]||(e[17]=[u("همگام‌سازی در حال اجرا",-1)])]),_:1})):_("",!0),a(w,{size:"small",onClick:me},{default:l(()=>[...e[18]||(e[18]=[u("تازه‌سازی",-1)])]),_:1})]}),_:1})]),default:l(()=>{var Te,at,lt,st,nt,ot,it,rt;return[O.value&&O.value.config.secretKeySource!=="ACCOUNTING_SECRET_KEY"?(o(),x(ve,{key:0,type:"warning","show-icon":"",class:"mb-4",message:"متغیر ACCOUNTING_SECRET_KEY روی سرور تنظیم نشده است",description:"توکن با کلیدی مشتق از JWT_SECRET رمز می‌شود؛ اگر JWT_SECRET عوض شود باید توکن را دوباره وارد کنید."})):_("",!0),(Te=O.value)!=null&&Te.inactiveReason&&O.value.config.provider!=="none"&&oe.value!=="connection"?(o(),x(ve,{key:1,type:"error","show-icon":"",class:"mb-4",message:"همگام‌سازی انجام نمی‌شود",description:O.value.inactiveReason},null,8,["description"])):be.value&&!((nt=(st=(lt=(at=O.value)==null?void 0:at.config)==null?void 0:lt.mapping)==null?void 0:st.importCustomerGroups)!=null&&nt.length)&&((rt=(it=(ot=O.value)==null?void 0:ot.config)==null?void 0:it.features)!=null&&rt.customers)?(o(),x(ve,{key:2,type:"warning","show-icon":"",class:"mb-4",message:"سینک مشتری اجرا نمی‌شود",description:"هیچ گروه مشتری برای ورود انتخاب نشده است؛ در تب «نگاشت» گروه‌هایی را که واقعاً مشتری هستند انتخاب و ذخیره کنید."})):_("",!0),a(St,{spinning:Y.value},{default:l(()=>[a(Ot,{"active-key":oe.value,"onUpdate:activeKey":e[16]||(e[16]=Ae=>oe.value=Ae)},{default:l(()=>{var Ae;return[a(pe,{key:"connection",tab:"اتصال"},{default:l(()=>[a(Ua,{overview:O.value,form:m,tokens:X,saving:Y.value,onSave:ge,onClearToken:Ke},null,8,["overview","form","tokens","saving"])]),_:1}),a(pe,{key:"features",tab:"قابلیت‌ها و زمان‌بندی"},{default:l(()=>{var d,E,Ge,ut;return[m.provider==="zarrin"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"درایور زرین روی نصب واقعی تست نشده است",description:"طبق تصمیم مالک، پیش از استفاده‌ی واقعی یک دوره‌ی آزمایشی با اسناد موقت لازم است (علامت مانده و فیلد هزینه‌ی سنگ را بررسی کنید)."})):_("",!0),be.value&&((E=(d=O.value)==null?void 0:d.config)!=null&&E.provider)&&(m.features.balances||m.features.products)?(o(),x(ve,{key:1,type:(ut=(Ge=O.value)==null?void 0:Ge.realtime)!=null&&ut.lastError?"warning":"success","show-icon":"",class:"mb-4",message:"همگام‌سازی لحظه‌ای"},{description:l(()=>{var se,R,P,dt;return[(R=(se=O.value)==null?void 0:se.realtime)!=null&&R.lastOkAt?(o(),c("div",Na,[u(" تغییرات حسابداری چند ثانیه یک‌بار بررسی می‌شود؛ آخرین بررسی: "+v(F(O.value.realtime.lastOkAt))+". ",1),O.value.realtime.lastChangeAt?(o(),c("span",ha,"آخرین تغییر دریافت‌شده: "+v(F(O.value.realtime.lastChangeAt))+".",1)):_("",!0)])):(o(),c("div",Ta,"هنوز بررسی انجام نشده است (چند ثانیه بعد از روشن‌شدن شروع می‌شود).")),(dt=(P=O.value)==null?void 0:P.realtime)!=null&&dt.lastError?(o(),c("div",$a,"خطای آخرین بررسی: "+v(O.value.realtime.lastError),1)):_("",!0),e[19]||(e[19]=n("div",{class:"hint"}," سفارش و ویرایش مشتری بلافاصله ارسال می‌شود و موجودی هنگام ثبت سفارش مستقیم از حسابداری خوانده می‌شود؛ اگر حسابداری آن لحظه پاسخ ندهد، آخرین موجودی معلوم ملاک است. بازه‌های «دقیقه»ی زیر فقط شبکه‌ی اطمینان‌اند (مشتری جدید، ویرایش یا حذف در حسابداری). ",-1))]}),_:1},8,["type"])):_("",!0),a(we,{"data-source":Me,columns:We,pagination:!1,"row-key":"key",size:"middle"},{bodyCell:l(({column:se,record:R})=>[se.key==="on"?(o(),x(yt,{key:0,checked:m.features[R.key],"onUpdate:checked":P=>m.features[R.key]=P},null,8,["checked","onUpdate:checked"])):se.key==="interval"?(o(),c(D,{key:1},[R.interval?(o(),x(Ye,{key:0,value:m.intervals[R.interval],"onUpdate:value":P=>m.intervals[R.interval]=P,min:1,max:1440,"addon-after":"دقیقه"},null,8,["value","onUpdate:value"])):R.key==="documents"?(o(),x(fe,{key:1,value:m.documents.triggerStatus,"onUpdate:value":e[0]||(e[0]=P=>m.documents.triggerStatus=P),style:{"min-width":"220px"},title:"سند (موقت / پیش‌فاکتور) وقتی سفارش به این وضعیت برسد ثبت می‌شود"},{default:l(()=>[(o(),c(D,null,Oe(Ie,P=>a(Ze,{key:P.value,value:P.value},{default:l(()=>[u("ثبت در: "+v(P.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])):(o(),c("span",Da,"—"))],64)):se.key==="state"?(o(),c(D,{key:2},[R.job&&de(R.job)?(o(),c("div",Ia,[u(" آخرین اجرا: "+v(F(de(R.job).lastRunAt))+" ",1),de(R.job).lastError?(o(),c("span",Ma," — خطا: "+v(de(R.job).lastError),1)):de(R.job).summary?(o(),c("span",Ra," — "+v(Fe(de(R.job).summary)),1)):_("",!0)])):_("",!0)],64)):se.key==="run"?(o(),c(D,{key:3},[R.job?(o(),x(w,{key:0,size:"small",disabled:!be.value,onClick:P=>je(R.job)},{default:l(()=>[...e[20]||(e[20]=[u("سینک الان",-1)])]),_:1},8,["disabled","onClick"])):_("",!0)],64)):_("",!0)]),_:1}),n("div",za,[a(Ee,{label:"بازه‌ی گزارش مشتری (روز)"},{default:l(()=>[a(Ye,{value:m.report.windowDays,"onUpdate:value":e[1]||(e[1]=se=>m.report.windowDays=se),min:7,max:3650,class:"w-full"},null,8,["value"])]),_:1})]),n("div",ja," اسناد سفارش همیشه «موقت» ثبت می‌شوند و تا حسابدار نهایی نکند روی مانده‌ی حسابداری اثر ندارند. سقف اعتبار سفارش همچنان با دفتر داخلی "+v(U(T).name)+" چک می‌شود. ",1),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[21]||(e[21]=[u("ذخیره",-1)])]),_:1})]}),_:1}),a(pe,{key:"mapping",tab:"نگاشت"},{default:l(()=>[a(gt,{ghost:"",class:"mb-4"},{default:l(()=>[a(kt,{key:"guide",header:"راهنمای این تب: نگاشت چیست و چطور پر می‌شود؟"},{default:l(()=>[n("p",null,[u(" در این صفحه «"+v(U(T).name)+"» یعنی همین سامانه: ",1),e[22]||(e[22]=n("b",null,"اپ مشتری",-1)),e[23]||(e[23]=u(" (جایی که مشتری ثبت‌نام، احراز هویت و سفارش می‌کند و مانده‌اش را می‌بیند) و ",-1)),e[24]||(e[24]=n("b",null,"پنل مدیریت",-1)),e[25]||(e[25]=u(" (همین پنل، جایی که محصول و دسته‌بندی تعریف می‌شود). «حسابداری» یعنی نرم‌افزار حسابداری مغازه (ته‌حساب یا زرین). ",-1))]),n("p",null,v(U(T).name)+" و حسابداری هر کدام گروه‌بندی خودشان را دارند. این تب می‌گوید هر چیز در "+v(U(T).name)+" با کدام گروه در حسابداری متناظر است؛ خودِ مشتری‌ها و محصول‌ها اینجا وصل نمی‌شوند (آن‌ها در تب «لینک‌ها» دیده می‌شوند). ",1),n("ol",null,[e[29]||(e[29]=n("li",null,"تنظیمات تب «اتصال» را ذخیره کنید، بعد «دریافت گروه‌ها از حسابداری» را بزنید تا فهرست‌ها از حسابداری پر شوند.",-1)),n("li",null,[n("b",null,"گروه‌های حسابی که مشتری "+v(U(T).name)+" حساب می‌شوند:",1),e[26]||(e[26]=u(" در حسابداری صندوق، کارمند و سرمایه‌گذار هم «حساب» هستند. فقط گروه‌هایی را انتخاب کنید که واقعاً مشتری‌اند؛ سینک مشتری فقط حساب‌های این گروه‌ها را با شماره موبایل به کاربران اپ مشتری وصل می‌کند. اگر خالی بماند سینک مشتری اجرا نمی‌شود. ",-1))]),e[30]||(e[30]=n("li",null,[n("b",null,"گروه مشتری جدید:"),u(" وقتی کاربری در اپ مشتری احراز هویت شود و در حسابداری حساب نداشته باشد، حسابش در این گروه ساخته می‌شود. اگر تعیین نشود، ساخت حساب در «لاگ ارسال» با وضعیت «نیاز به بررسی» می‌ماند. ")],-1)),n("li",null,[e[27]||(e[27]=n("b",null,"عیار پایه:",-1)),u(" عیار وزن‌هایی که در "+v(U(T).name)+" ثبت می‌شود (وزن محصول‌ها و سفارش‌ها؛ معمولاً ۷۵۰ = ۱۸ عیار). در سند سفارش، وزن با همین عیار به حسابداری می‌رود؛ در ته‌حساب اجرت هم روی آن اعمال می‌شود (مثلاً ۷۵۰ با اجرت ۱۰٪ می‌شود ۸۲۵). ",1)]),m.provider==="zarrin"?(o(),c("li",Aa,[e[28]||(e[28]=n("b",null,"کارساخته (فقط زرین):",-1)),u(" وقتی در پنل مدیریت "+v(U(T).name)+" محصول جدیدی تعریف شود، برایش یک «کارساخته» در زرین ساخته می‌شود. «نوع» تعیین می‌کند گرمی است یا تعدادی، و «گروه ساخته» جای آن در زرین است. در جدول پایین برای هر دسته‌بندی محصولِ "+v(U(T).name)+" می‌توانید گروه جدا بدهید؛ دسته‌ای که «پیش‌فرض» بماند در «گروه ساخته‌ی پیش‌فرض» می‌رود. اگر نوع یا گروه خالی باشد، ساخت کارساخته در «لاگ ارسال» منتظر بررسی می‌ماند. ",1)])):_("",!0)]),e[31]||(e[31]=n("p",{class:"hint"}," تغییر این تنظیمات فقط روی موارد بعدی اثر دارد؛ حساب‌ها و کارساخته‌هایی که قبلاً ساخته شده‌اند جابه‌جا نمی‌شوند. در آخر «ذخیره» را بزنید. ",-1))]),_:1})]),_:1}),a(K,{class:"mb-4"},{default:l(()=>[a(w,{disabled:m.provider==="none",loading:_e.value,onClick:Ne},{default:l(()=>[...e[32]||(e[32]=[u("دریافت گروه‌ها از حسابداری",-1)])]),_:1},8,["disabled","loading"]),(o(!0),c(D,null,Oe(ce.value,d=>(o(),c("span",{key:d,class:"warn"},v(d),1))),128))]),_:1}),a(Ct,{layout:"vertical"},{default:l(()=>[a(Xe,{orientation:"right"},{default:l(()=>[...e[33]||(e[33]=[u("حساب مشتری‌ها",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`این بخش تعیین می‌کند کدام حساب‌های حسابداری به کاربران اپ مشتری ${U(T).name} وصل شوند`},{description:l(()=>[n("div",null," هر حسابی که در گروه‌های انتخاب‌شده باشد و موبایلش با یک کاربر اپ مشتری "+v(U(T).name)+" یکی باشد، به آن کاربر وصل می‌شود و مانده‌اش در اپ مشتری نمایش داده می‌شود. صندوق، کارمند و سرمایه‌گذار را انتخاب نکنید. ",1),e[34]||(e[34]=n("div",null," مثال: «بنکدار» و «مغازه‌دار» را در فیلد اول انتخاب کنید و در فیلد دوم «مغازه‌دار» را بگذارید. در این حالت کسی که در اپ مشتری ثبت‌نام و احراز هویت کند و در حسابداری حساب نداشته باشد، در گروه «مغازه‌دار» برایش حساب ساخته می‌شود. ",-1))]),_:1},8,["message"]),n("div",Ga,[a(Ee,{label:`گروه‌های حسابی که مشتری ${U(T).name} حساب می‌شوند`,extra:"فقط گروه‌هایی که مشتری‌اند؛ خالی = سینک مشتری اجرا نمی‌شود"},{default:l(()=>[a(fe,{value:ie.value,"onUpdate:value":e[2]||(e[2]=d=>ie.value=d),mode:"multiple",options:ke.value,"allow-clear":"",placeholder:"هیچ گروهی انتخاب نشده"},null,8,["value","options"])]),_:1},8,["label"]),a(Ee,{label:"گروه حسابداریِ مشتری تازه‌ی اپ مشتری",extra:"کاربری که در اپ مشتری احراز هویت شده و در حسابداری حساب ندارد، در این گروه برایش حساب ساخته می‌شود"},{default:l(()=>[a(fe,{value:re.value,"onUpdate:value":e[3]||(e[3]=d=>re.value=d),options:ke.value,"allow-clear":""},null,8,["value","options"])]),_:1}),a(Ee,{label:`عیار پایه‌ی وزن‌های ${U(T).name}`,extra:`عیار وزن محصول‌ها و سفارش‌ها در ${U(T).name}؛ ۷۵۰ یعنی ۱۸ عیار`},{default:l(()=>[a(Ye,{value:m.mapping.karat,"onUpdate:value":e[4]||(e[4]=d=>m.mapping.karat=d),min:1,max:1e3,class:"w-full"},null,8,["value"])]),_:1},8,["label","extra"])]),m.provider==="zarrin"?(o(),c(D,{key:0},[a(Xe,{orientation:"right"},{default:l(()=>[...e[35]||(e[35]=[u("کارساخته (زرین)",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`هر محصولی که در پنل مدیریت ${U(T).name} (بخش محصولات) تعریف می‌کنید، در زرین یک «کارساخته» می‌شود`},{description:l(()=>[e[36]||(e[36]=n("div",null,[u(" زرین برای ساختن کارساخته دو چیز لازم دارد: "),n("b",null,"نوع"),u(" (گرمی یا تعدادی) و "),n("b",null,"گروه ساخته"),u(" (کارساخته در کدام پوشه‌ی زرین قرار بگیرد). این بخش این دو را به‌جای شما انتخاب می‌کند تا لازم نباشد برای هر محصول جداگانه در زرین کاری انجام دهید. ")],-1)),n("div",null," ستون «دسته‌بندی محصول در "+v(U(T).name)+"» همان دسته‌بندی‌هایی است که در پنل مدیریت برای محصولات تعریف کرده‌اید. مثال: اگر روبه‌روی «انگشتر» گروه «انگشتر» زرین را بگذارید، هر محصول تازه در دسته‌ی انگشتر "+v(U(T).name)+"، در گروه انگشترِ زرین ساخته می‌شود. دسته‌هایی که «پیش‌فرض» بمانند در «گروه ساخته‌ی پیش‌فرض» می‌روند. ",1),n("div",null," اگر نوع یا گروه خالی باشد، محصول در "+v(U(T).name)+" ساخته می‌شود ولی ساخت کارساخته در «لاگ ارسال» منتظر می‌ماند تا آن را تعیین کنید و «تلاش دوباره» بزنید. محصول‌هایی که از قبل به کارساخته وصل شده‌اند تغییری نمی‌کنند. ",1)]),_:1},8,["message"]),n("div",La,[a(Ee,{label:"نوع کارساخته‌ی جدید (گرمی/تعدادی…)",extra:`برای محصول تازه‌ای که در پنل مدیریت ${U(T).name} تعریف می‌شود`},{default:l(()=>[a(fe,{value:ue.value,"onUpdate:value":e[5]||(e[5]=d=>ue.value=d),options:De.value,"allow-clear":""},null,8,["value","options"])]),_:1},8,["extra"]),a(Ee,{label:"گروه ساخته‌ی پیش‌فرض",extra:"برای دسته‌هایی که در جدول زیر «پیش‌فرض» مانده‌اند"},{default:l(()=>[a(fe,{value:q.value,"onUpdate:value":e[6]||(e[6]=d=>q.value=d),options:z.value,"allow-clear":""},null,8,["value","options"])]),_:1})]),a(we,{"data-source":ee.value,pagination:!1,"row-key":"id",size:"small",class:"mb-4"},{default:l(()=>[a($,{title:`دسته‌بندی محصول در ${U(T).name}`,"data-index":"title"},null,8,["title"]),a($,{title:"گروه ساخته در زرین"},{default:l(({record:d})=>[a(fe,{value:te[d.id],"onUpdate:value":E=>te[d.id]=E,options:z.value,"allow-clear":"",class:"w-full",placeholder:"پیش‌فرض"},null,8,["value","onUpdate:value","options"])]),_:1})]),_:1},8,["data-source"])],64)):m.provider==="tahesab"?(o(),c("div",Pa," ته‌حساب در API خود ساخت کارساخته ندارد: نام کار با اولین سند سفارش در ته‌حساب ساخته می‌شود و از آن به بعد به محصول لینک می‌شود. ")):_("",!0),ce.value.length?(o(),c("div",Ba," اگر فهرستی خالی است، یعنی دریافت آن از حسابداری خطا داده (پیام قرمز بالای صفحه). اتصال را بررسی کنید و دوباره «دریافت گروه‌ها» را بزنید. ")):_("",!0),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[37]||(e[37]=[u("ذخیره",-1)])]),_:1})]),_:1})]),_:1}),a(pe,{key:"outbox",tab:`لاگ ارسال${t.value}`},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(fe,{value:Se.value,"onUpdate:value":e[7]||(e[7]=d=>Se.value=d),style:{width:"180px"},"allow-clear":"",placeholder:"همه‌ی وضعیت‌ها",onChange:e[8]||(e[8]=d=>le(1))},{default:l(()=>[(o(),c(D,null,Oe(V,(d,E)=>a(Ze,{key:E,value:E},{default:l(()=>[u(v(d),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"]),a(w,{onClick:e[9]||(e[9]=d=>le(J.page))},{default:l(()=>[...e[38]||(e[38]=[u("تازه‌سازی",-1)])]),_:1})]),_:1}),a(we,{"data-source":J.rows,columns:r,"row-key":"id",size:"small",pagination:{current:J.page,pageSize:J.limit,total:J.total,onChange:le}},{bodyCell:l(({column:d,record:E})=>[d.key==="createdAt"?(o(),c(D,{key:0},[u(v(F(E.createdAt)),1)],64)):d.key==="kind"?(o(),c(D,{key:1},[u(v(Be[E.kind]??E.kind),1)],64)):d.key==="entity"?(o(),c(D,{key:2},[u(v(E.entityLabel??E.entityId),1)],64)):d.key==="status"?(o(),c(D,{key:3},[a(k,{color:W[E.status]},{default:l(()=>[u(v(V[E.status]??E.status),1)]),_:2},1032,["color"]),E.provider!==m.provider?(o(),c("span",Wa," ("+v(E.provider)+")",1)):_("",!0)],64)):d.key==="error"?(o(),c("span",Fa,v(E.lastError),1)):d.key==="actions"?(o(),x(K,{key:5},{default:l(()=>[["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:0,title:"پیش از تلاش دوباره، مطمئن شوید سند در حسابداری ثبت نشده است. ادامه؟",onConfirm:Ge=>b(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[39]||(e[39]=[u("تلاش دوباره",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0),["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:1,title:"این ردیف «حل‌شده» علامت بخورد (دستی در حسابداری رسیدگی شده)؟",onConfirm:Ge=>Ce(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[40]||(e[40]=[u("حل‌شده",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0)]),_:2},1024)):_("",!0)]),expandedRowRender:l(({record:d})=>[n("div",Ka,[n("div",null,[e[41]||(e[41]=n("b",null,"درخواست",-1)),n("pre",Va,v(Re(d.lastRequest)),1)]),n("div",null,[e[42]||(e[42]=n("b",null,"پاسخ",-1)),n("pre",Ya,v(Re(d.lastResponse)),1)])]),n("div",Ha,"کد مرجع: "+v(d.externalRef??"—")+" | تلاش: "+v(d.attempts)+" | تلاش بعدی: "+v(F(d.nextAttemptAt)),1)]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"issues",tab:`مغایرت‌ها${(Ae=O.value)!=null&&Ae.openIssues?` (${O.value.openIssues})`:""}`},{default:l(()=>[a(we,{"data-source":g.rows,"row-key":"id",size:"small",pagination:{current:g.page,pageSize:g.limit,total:g.total,onChange:Ve}},{default:l(()=>[a($,{title:"تاریخ"},{default:l(({record:d})=>[u(v(F(d.updatedAt)),1)]),_:1}),a($,{title:"نرم‌افزار","data-index":"provider"}),a($,{title:"نوع"},{default:l(({record:d})=>[u(v(i[d.kind]??d.kind),1)]),_:1}),a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"شرح","data-index":"message"}),a($,{title:""},{default:l(({record:d})=>[a(w,{size:"small",onClick:E=>ft(d.id)},{default:l(()=>[...e[43]||(e[43]=[u("رسیدگی شد",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"links",tab:"لینک‌ها"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(wt,{value:N.value,"onUpdate:value":e[10]||(e[10]=d=>N.value=d),onChange:e[11]||(e[11]=d=>he(1))},{default:l(()=>[a(et,{value:"CUSTOMER"},{default:l(()=>[...e[44]||(e[44]=[u("مشتری",-1)])]),_:1}),a(et,{value:"PRODUCT"},{default:l(()=>[...e[45]||(e[45]=[u("کارساخته",-1)])]),_:1})]),_:1},8,["value"]),a(Et,{value:I.value,"onUpdate:value":e[12]||(e[12]=d=>I.value=d),placeholder:"کد یا نام در حسابداری",style:{width:"240px"},onSearch:e[13]||(e[13]=d=>he(1))},null,8,["value"])]),_:1}),a(we,{"data-source":y.rows,"row-key":"id",size:"small",pagination:{current:y.page,pageSize:y.limit,total:y.total,onChange:he}},{default:l(()=>[a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"نام در حسابداری","data-index":"externalName"}),a($,{title:`شناسه در ${U(T).name}`,"data-index":"entityId"},null,8,["title"]),a($,{title:"منشأ"},{default:l(({record:d})=>[u(v(Z[d.origin]??d.origin),1)]),_:1}),a($,{title:"آخرین سینک"},{default:l(({record:d})=>[u(v(F(d.syncedAt)),1)]),_:1}),a($,{title:""},{default:l(({record:d})=>[a(He,{title:"لینک حذف شود؟ در سینک بعدی دوباره با موبایل/نام جفت می‌شود.",onConfirm:E=>bt(d.id)},{default:l(()=>[a(w,{size:"small",danger:""},{default:l(()=>[...e[46]||(e[46]=[u("حذف لینک",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1}),a(pe,{key:"movement",tab:"گردش کارساخته"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(tt,{value:xe.value,"onUpdate:value":e[14]||(e[14]=d=>xe.value=d),dir:"ltr",placeholder:"از ۱۴۰۵/۰۷/۰۱",style:{width:"150px"}},null,8,["value"]),a(tt,{value:L.value,"onUpdate:value":e[15]||(e[15]=d=>L.value=d),dir:"ltr",placeholder:"تا ۱۴۰۵/۰۷/۳۰",style:{width:"150px"}},null,8,["value"]),a(w,{disabled:!be.value,loading:Ue.value,onClick:_t},{default:l(()=>[...e[47]||(e[47]=[u("نمایش",-1)])]),_:1},8,["disabled","loading"])]),_:1}),ae.scope==="recent-documents"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"ته‌حساب گزارش گردش همه‌ی حساب‌ها را ندارد؛ این فهرست از آخرین ۱۰۰۰ سند ثبت‌شده ساخته شده است."})):_("",!0),a(we,{"data-source":ae.rows,"row-key":(d,E)=>E,size:"small"},{default:l(()=>[a($,{title:"تاریخ","data-index":"date"}),a($,{title:"کارساخته","data-index":"itemName"}),a($,{title:"شرح","data-index":"description"}),a($,{title:"وزن","data-index":"weight"}),a($,{title:"تعداد","data-index":"count"}),a($,{title:"مبلغ","data-index":"amount"})]),_:1},8,["data-source","row-key"])]),_:1})]}),_:1},8,["active-key"])]),_:1},8,["spinning"])]}),_:1})):_("",!0)])}}}),el=pt(qa,[["__scopeId","data-v-cc33ab94"]]);export{el as default}; diff --git a/apps/admin-panel/dist/assets/addFinDoc-Copg65eX.js b/apps/admin-panel/dist/assets/addFinDoc-Copg65eX.js new file mode 100644 index 0000000..4e9ff83 --- /dev/null +++ b/apps/admin-panel/dist/assets/addFinDoc-Copg65eX.js @@ -0,0 +1 @@ +import{_ as o}from"./addFinDoc.vue_vue_type_script_setup_true_lang-BeApu2ja.js";import"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/addFinDoc-Crm0ebUu.js b/apps/admin-panel/dist/assets/addFinDoc-Crm0ebUu.js deleted file mode 100644 index c566cea..0000000 --- a/apps/admin-panel/dist/assets/addFinDoc-Crm0ebUu.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./addFinDoc.vue_vue_type_script_setup_true_lang-Bhb3Mras.js";import"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-Bhb3Mras.js b/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-BeApu2ja.js similarity index 98% rename from apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-Bhb3Mras.js rename to apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-BeApu2ja.js index 9092123..b6b489a 100644 --- a/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-Bhb3Mras.js +++ b/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-BeApu2ja.js @@ -1 +1 @@ -import{d as J,x as K,y as U,a as g,w as u,h as Q,k as X,m as M,z as E,r as p,o as r,p as G,c as a,f as v,b as m,e as L,F as O,i as f,H as Y,s as V,G as j,l as Z,t as z}from"./index-DajPj7Ec.js";import{_ as h}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";const ee={class:"grid-3"},le={key:0,class:"grid-3"},ae={key:1,class:"grid-3"},te={key:2,class:"grid-3"},ue={key:3,class:"grid-3"},ne={class:"grid-3"},oe={key:0,class:"grid-3"},se={key:1,class:"grid-3"},re={key:2,class:"grid-3"},ie={key:3,class:"grid-3"},de=4.331802,me=J({__name:"addFinDoc",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(x,{emit:A}){const R=x,$=A,k=R.open!==void 0,D=X(),H=Z(),y=k?R.id:D.params.id,w=M(!1),c=M([]),l=E({type:2,customer_id:void 0,value:void 0,original_value:void 0,ayar:void 0,lab:"",ang:"",to:"",price:void 0,price_per_gram:void 0,account_name:"",bank_name:"",note:""}),_=E({}),C=V(()=>{const o=Number(l.original_value??0),e=Number(l.ayar??0);return!o||!e?"":(o*e/750).toFixed(4)}),F=V(()=>{const o=Number(l.price??0),e=Number(l.price_per_gram??0);return!o||!e?"":(o/(e/de)).toFixed(4)});function S(o,e){var s,b;return String(((b=(s=e==null?void 0:e.children)==null?void 0:s[0])==null?void 0:b.children)??"").toLowerCase().includes(o.toLowerCase())}function W(){return Object.keys(_).forEach(o=>delete _[o]),l.customer_id||(_.customer_id="مقدار را وارد نمایید"),Object.keys(_).length===0}async function N(){var o,e;if(W())try{w.value=!0,y?await U.put(`cash/${y}`,l):await U.post("cash",l),j.info("اطلاعات با موفقیت به ثبت رسید."),k?($("success"),$("update:open",!1)):H.push("/finical/list")}catch(s){j.error(((e=(o=s==null?void 0:s.response)==null?void 0:o.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{w.value=!1}}return K(async()=>{var o;try{const{data:e}=await U.get("query/customer");c.value=e}catch(e){console.log(e)}if(y)try{const{data:e}=await U.get(`cash/${y}`);Object.assign(l,{type:e.type??2,customer_id:(o=e.customer)==null?void 0:o.id,value:e.value!==null?Number(e.value):void 0,original_value:e.original_value!==null?Number(e.original_value):void 0,ayar:e.ayar??void 0,lab:e.lab??"",ang:e.ang??"",to:e.to??"",price:e.price!==null?Number(e.price):void 0,price_per_gram:e.price_per_gram!==null?Number(e.price_per_gram):void 0,account_name:e.account_name??"",bank_name:e.bank_name??"",note:e.note??""})}catch(e){console.log(e)}}),(o,e)=>{const s=p("a-select-option"),b=p("a-select"),n=p("a-form-item"),i=p("a-input-number"),d=p("a-input"),B=p("a-textarea"),q=p("a-button"),P=p("a-card"),T=p("a-form"),I=p("a-spin");return k?(r(),g(h,{key:0,open:!!x.open,id:Q(y),"add-title":"ثبت سند مالی","edit-title":"ویرایش سند مالی",loading:w.value,submitting:w.value,width:"lg","onUpdate:open":e[15]||(e[15]=t=>o.$emit("update:open",t)),onSubmit:N},{default:u(()=>[G("div",ee,[a(n,{label:"نوع سند"},{default:u(()=>[a(b,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t)},{default:u(()=>[a(s,{value:2},{default:u(()=>[...e[31]||(e[31]=[v("حواله",-1)])]),_:1}),a(s,{value:1},{default:u(()=>[...e[32]||(e[32]=[v("آب شده",-1)])]),_:1}),a(s,{value:4},{default:u(()=>[...e[33]||(e[33]=[v("پولی",-1)])]),_:1}),a(s,{value:3},{default:u(()=>[...e[34]||(e[34]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(b,{value:l.customer_id,"onUpdate:value":e[1]||(e[1]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":S,placeholder:"انتخاب کنید"},{default:u(()=>[(r(!0),m(O,null,L(c.value,t=>(r(),g(s,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(r(),m("div",le,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.original_value,"onUpdate:value":e[2]||(e[2]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(i,{value:l.ayar,"onUpdate:value":e[3]||(e[3]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[4]||(e[4]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[5]||(e[5]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(r(),m("div",ae,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[6]||(e[6]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[7]||(e[7]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(r(),m("div",te,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[8]||(e[8]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[9]||(e[9]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[10]||(e[10]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[11]||(e[11]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(r(),m("div",ue,[a(n,{label:"میزان پول"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[12]||(e[12]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(i,{value:l.price_per_gram,"onUpdate:value":e[13]||(e[13]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(r(),g(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(B,{value:l.note,"onUpdate:value":e[14]||(e[14]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(r(),g(I,{key:1,spinning:w.value},{default:u(()=>[a(T,{layout:"vertical",onSubmit:Y(N,["prevent"])},{default:u(()=>[a(P,{title:"ثبت سند مالی",class:"mb-base page-card"},{default:u(()=>[G("div",ne,[a(n,{label:"نوع سند"},{default:u(()=>[a(b,{value:l.type,"onUpdate:value":e[16]||(e[16]=t=>l.type=t)},{default:u(()=>[a(s,{value:2},{default:u(()=>[...e[35]||(e[35]=[v("حواله",-1)])]),_:1}),a(s,{value:1},{default:u(()=>[...e[36]||(e[36]=[v("آب شده",-1)])]),_:1}),a(s,{value:4},{default:u(()=>[...e[37]||(e[37]=[v("پولی",-1)])]),_:1}),a(s,{value:3},{default:u(()=>[...e[38]||(e[38]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(b,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":S,placeholder:"انتخاب کنید"},{default:u(()=>[(r(!0),m(O,null,L(c.value,t=>(r(),g(s,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(r(),m("div",oe,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.original_value,"onUpdate:value":e[18]||(e[18]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(i,{value:l.ayar,"onUpdate:value":e[19]||(e[19]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[20]||(e[20]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[21]||(e[21]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(r(),m("div",se,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[22]||(e[22]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[23]||(e[23]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(r(),m("div",re,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[24]||(e[24]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[25]||(e[25]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[26]||(e[26]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[27]||(e[27]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(r(),m("div",ie,[a(n,{label:"میزان پول"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[28]||(e[28]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(i,{value:l.price_per_gram,"onUpdate:value":e[29]||(e[29]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(r(),g(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(B,{value:l.note,"onUpdate:value":e[30]||(e[30]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),a(q,{type:"primary",class:"form-submit",onClick:N},{default:u(()=>[...e[39]||(e[39]=[v("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{me as _}; +import{d as J,x as K,y as U,a as g,w as u,h as Q,k as X,m as M,z as E,r as p,o as r,p as G,c as a,f as v,b as m,e as L,F as O,i as f,H as Y,s as V,G as j,l as Z,t as z}from"./index-eLNLLYwC.js";import{_ as h}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";const ee={class:"grid-3"},le={key:0,class:"grid-3"},ae={key:1,class:"grid-3"},te={key:2,class:"grid-3"},ue={key:3,class:"grid-3"},ne={class:"grid-3"},oe={key:0,class:"grid-3"},se={key:1,class:"grid-3"},re={key:2,class:"grid-3"},ie={key:3,class:"grid-3"},de=4.331802,me=J({__name:"addFinDoc",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(x,{emit:A}){const R=x,$=A,k=R.open!==void 0,D=X(),H=Z(),y=k?R.id:D.params.id,w=M(!1),c=M([]),l=E({type:2,customer_id:void 0,value:void 0,original_value:void 0,ayar:void 0,lab:"",ang:"",to:"",price:void 0,price_per_gram:void 0,account_name:"",bank_name:"",note:""}),_=E({}),C=V(()=>{const o=Number(l.original_value??0),e=Number(l.ayar??0);return!o||!e?"":(o*e/750).toFixed(4)}),F=V(()=>{const o=Number(l.price??0),e=Number(l.price_per_gram??0);return!o||!e?"":(o/(e/de)).toFixed(4)});function S(o,e){var s,b;return String(((b=(s=e==null?void 0:e.children)==null?void 0:s[0])==null?void 0:b.children)??"").toLowerCase().includes(o.toLowerCase())}function W(){return Object.keys(_).forEach(o=>delete _[o]),l.customer_id||(_.customer_id="مقدار را وارد نمایید"),Object.keys(_).length===0}async function N(){var o,e;if(W())try{w.value=!0,y?await U.put(`cash/${y}`,l):await U.post("cash",l),j.info("اطلاعات با موفقیت به ثبت رسید."),k?($("success"),$("update:open",!1)):H.push("/finical/list")}catch(s){j.error(((e=(o=s==null?void 0:s.response)==null?void 0:o.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{w.value=!1}}return K(async()=>{var o;try{const{data:e}=await U.get("query/customer");c.value=e}catch(e){console.log(e)}if(y)try{const{data:e}=await U.get(`cash/${y}`);Object.assign(l,{type:e.type??2,customer_id:(o=e.customer)==null?void 0:o.id,value:e.value!==null?Number(e.value):void 0,original_value:e.original_value!==null?Number(e.original_value):void 0,ayar:e.ayar??void 0,lab:e.lab??"",ang:e.ang??"",to:e.to??"",price:e.price!==null?Number(e.price):void 0,price_per_gram:e.price_per_gram!==null?Number(e.price_per_gram):void 0,account_name:e.account_name??"",bank_name:e.bank_name??"",note:e.note??""})}catch(e){console.log(e)}}),(o,e)=>{const s=p("a-select-option"),b=p("a-select"),n=p("a-form-item"),i=p("a-input-number"),d=p("a-input"),B=p("a-textarea"),q=p("a-button"),P=p("a-card"),T=p("a-form"),I=p("a-spin");return k?(r(),g(h,{key:0,open:!!x.open,id:Q(y),"add-title":"ثبت سند مالی","edit-title":"ویرایش سند مالی",loading:w.value,submitting:w.value,width:"lg","onUpdate:open":e[15]||(e[15]=t=>o.$emit("update:open",t)),onSubmit:N},{default:u(()=>[G("div",ee,[a(n,{label:"نوع سند"},{default:u(()=>[a(b,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t)},{default:u(()=>[a(s,{value:2},{default:u(()=>[...e[31]||(e[31]=[v("حواله",-1)])]),_:1}),a(s,{value:1},{default:u(()=>[...e[32]||(e[32]=[v("آب شده",-1)])]),_:1}),a(s,{value:4},{default:u(()=>[...e[33]||(e[33]=[v("پولی",-1)])]),_:1}),a(s,{value:3},{default:u(()=>[...e[34]||(e[34]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(b,{value:l.customer_id,"onUpdate:value":e[1]||(e[1]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":S,placeholder:"انتخاب کنید"},{default:u(()=>[(r(!0),m(O,null,L(c.value,t=>(r(),g(s,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(r(),m("div",le,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.original_value,"onUpdate:value":e[2]||(e[2]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(i,{value:l.ayar,"onUpdate:value":e[3]||(e[3]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[4]||(e[4]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[5]||(e[5]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(r(),m("div",ae,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[6]||(e[6]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[7]||(e[7]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(r(),m("div",te,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[8]||(e[8]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[9]||(e[9]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[10]||(e[10]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[11]||(e[11]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(r(),m("div",ue,[a(n,{label:"میزان پول"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[12]||(e[12]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(i,{value:l.price_per_gram,"onUpdate:value":e[13]||(e[13]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(r(),g(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(B,{value:l.note,"onUpdate:value":e[14]||(e[14]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(r(),g(I,{key:1,spinning:w.value},{default:u(()=>[a(T,{layout:"vertical",onSubmit:Y(N,["prevent"])},{default:u(()=>[a(P,{title:"ثبت سند مالی",class:"mb-base page-card"},{default:u(()=>[G("div",ne,[a(n,{label:"نوع سند"},{default:u(()=>[a(b,{value:l.type,"onUpdate:value":e[16]||(e[16]=t=>l.type=t)},{default:u(()=>[a(s,{value:2},{default:u(()=>[...e[35]||(e[35]=[v("حواله",-1)])]),_:1}),a(s,{value:1},{default:u(()=>[...e[36]||(e[36]=[v("آب شده",-1)])]),_:1}),a(s,{value:4},{default:u(()=>[...e[37]||(e[37]=[v("پولی",-1)])]),_:1}),a(s,{value:3},{default:u(()=>[...e[38]||(e[38]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(b,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":S,placeholder:"انتخاب کنید"},{default:u(()=>[(r(!0),m(O,null,L(c.value,t=>(r(),g(s,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(r(),m("div",oe,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.original_value,"onUpdate:value":e[18]||(e[18]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(i,{value:l.ayar,"onUpdate:value":e[19]||(e[19]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[20]||(e[20]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[21]||(e[21]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(r(),m("div",se,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[22]||(e[22]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[23]||(e[23]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(r(),m("div",re,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[24]||(e[24]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[25]||(e[25]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[26]||(e[26]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[27]||(e[27]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(r(),m("div",ie,[a(n,{label:"میزان پول"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[28]||(e[28]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(i,{value:l.price_per_gram,"onUpdate:value":e[29]||(e[29]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(r(),g(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(B,{value:l.note,"onUpdate:value":e[30]||(e[30]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),a(q,{type:"primary",class:"form-submit",onClick:N},{default:u(()=>[...e[39]||(e[39]=[v("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{me as _}; diff --git a/apps/admin-panel/dist/assets/auth-l1fvj2RU.js b/apps/admin-panel/dist/assets/auth-Cmkre2IW.js similarity index 88% rename from apps/admin-panel/dist/assets/auth-l1fvj2RU.js rename to apps/admin-panel/dist/assets/auth-Cmkre2IW.js index 0e568f8..a17058d 100644 --- a/apps/admin-panel/dist/assets/auth-l1fvj2RU.js +++ b/apps/admin-panel/dist/assets/auth-Cmkre2IW.js @@ -1 +1 @@ -import{Y as u,y as l,a0 as c,a1 as s,a2 as a,u as n}from"./index-DajPj7Ec.js";const g=u("auth",{state:()=>({userPermission:[]}),getters:{token:()=>localStorage.getItem(s),user:()=>{const e=localStorage.getItem(a);if(!e)return null;try{return JSON.parse(e)}catch{return null}},isLoggedIn(){return!!this.token}},actions:{async login(e){const{data:t}=await l.post("admin-login",e),o=n();o.getRoles((t.roles??[]).map(i=>i.rid)),o.setSuperAdmin(t.is_super_admin);const r={...t};return delete r.roles,delete r.ut,this.inject(r),t.iamBootstrapUrl&&window.location.assign(t.iamBootstrapUrl),r},inject(e){localStorage.setItem(s,e.api_token),localStorage.setItem("login","true"),localStorage.setItem(a,JSON.stringify(e))},async logout(){let e=null;try{const{data:o}=await l.get("admin/auth/sso/logout-url",{params:{return_url:c("auth/login")}});e=(o==null?void 0:o.logout_url)??null}catch{e=null}localStorage.removeItem(s),localStorage.removeItem(a),localStorage.removeItem("login"),sessionStorage.removeItem("gb_admin_iam_sso_checked");const t=n();return t.deleteRoles(),t.deleteUserInfo(),e?(window.location.assign(e),!0):!1}}});export{g as u}; +import{Y as u,y as l,a1 as c,a2 as s,a3 as a,u as n}from"./index-eLNLLYwC.js";const g=u("auth",{state:()=>({userPermission:[]}),getters:{token:()=>localStorage.getItem(s),user:()=>{const e=localStorage.getItem(a);if(!e)return null;try{return JSON.parse(e)}catch{return null}},isLoggedIn(){return!!this.token}},actions:{async login(e){const{data:t}=await l.post("admin-login",e),o=n();o.getRoles((t.roles??[]).map(i=>i.rid)),o.setSuperAdmin(t.is_super_admin);const r={...t};return delete r.roles,delete r.ut,this.inject(r),t.iamBootstrapUrl&&window.location.assign(t.iamBootstrapUrl),r},inject(e){localStorage.setItem(s,e.api_token),localStorage.setItem("login","true"),localStorage.setItem(a,JSON.stringify(e))},async logout(){let e=null;try{const{data:o}=await l.get("admin/auth/sso/logout-url",{params:{return_url:c("auth/login")}});e=(o==null?void 0:o.logout_url)??null}catch{e=null}localStorage.removeItem(s),localStorage.removeItem(a),localStorage.removeItem("login"),sessionStorage.removeItem("gb_admin_iam_sso_checked");const t=n();return t.deleteRoles(),t.deleteUserInfo(),e?(window.location.assign(e),!0):!1}}});export{g as u}; diff --git a/apps/admin-panel/dist/assets/autopromotion-cv1k7IXP.js b/apps/admin-panel/dist/assets/autopromotion-DXzzvH9j.js similarity index 97% rename from apps/admin-panel/dist/assets/autopromotion-cv1k7IXP.js rename to apps/admin-panel/dist/assets/autopromotion-DXzzvH9j.js index 42ed307..af7dc13 100644 --- a/apps/admin-panel/dist/assets/autopromotion-cv1k7IXP.js +++ b/apps/admin-panel/dist/assets/autopromotion-DXzzvH9j.js @@ -1 +1 @@ -import{d as k,x,y as _,a as B,w as r,H as C,m,z as f,r as n,o as N,c as s,p as V,f as z,G as v}from"./index-DajPj7Ec.js";const M={class:"grid-3"},j=k({__name:"autopromotion",setup(S){const u=m(!1),l=m(!1),c=f({discount_percent:void 0}),i=f({});async function p(){var t,e;if(Object.keys(i).forEach(a=>delete i[a]),c.discount_percent===void 0||c.discount_percent===null){i.discount_percent="وارد کردن درصد تخفیف اتوماتیک الزامی است";return}try{u.value=!0,await _.post("autopromotion",{state:l.value,discount_percent:c.discount_percent}),v.success("اطلاعات با موفقیت به ثبت رسید.")}catch(a){v.error(((e=(t=a==null?void 0:a.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{u.value=!1}}return x(async()=>{try{const{data:t}=await _.get("autopromotion");l.value=!!t.state,c.discount_percent=t.discount_percent??void 0}catch(t){console.log(t)}}),(t,e)=>{const a=n("a-switch"),d=n("a-form-item"),b=n("a-input-number"),y=n("a-card"),h=n("a-spin"),g=n("a-button"),w=n("a-form");return N(),B(w,{layout:"vertical",class:"page-card",onSubmit:C(p,["prevent"])},{default:r(()=>[s(h,{spinning:u.value},{default:r(()=>[s(y,{title:"تخفیف اتوماتیک یکبار مصرف ویژه مشتریان جدید",class:"mb-base"},{default:r(()=>[V("div",M,[s(d,{label:"وضعیت تخفیف اتوماتیک"},{default:r(()=>[s(a,{checked:l.value,"onUpdate:checked":e[0]||(e[0]=o=>l.value=o),size:"default"},null,8,["checked"])]),_:1}),s(d,{label:"درصد تخفیف اتوماتیک روی محصولات","validate-status":i.discount_percent?"error":"",help:i.discount_percent},{default:r(()=>[s(b,{value:c.discount_percent,"onUpdate:value":e[1]||(e[1]=o=>c.discount_percent=o),dir:"ltr",min:0,max:100,formatter:o=>`${o}%`,parser:o=>o.replace("%",""),style:{width:"100%"}},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])])]),_:1})]),_:1},8,["spinning"]),s(g,{type:"primary",class:"mr-4 form-submit",onClick:p},{default:r(()=>[...e[2]||(e[2]=[z("ثبت اطلاعات",-1)])]),_:1})]),_:1})}}});export{j as default}; +import{d as k,x,y as _,a as B,w as r,H as C,m,z as f,r as n,o as N,c as s,p as V,f as z,G as v}from"./index-eLNLLYwC.js";const M={class:"grid-3"},j=k({__name:"autopromotion",setup(S){const u=m(!1),l=m(!1),c=f({discount_percent:void 0}),i=f({});async function p(){var t,e;if(Object.keys(i).forEach(a=>delete i[a]),c.discount_percent===void 0||c.discount_percent===null){i.discount_percent="وارد کردن درصد تخفیف اتوماتیک الزامی است";return}try{u.value=!0,await _.post("autopromotion",{state:l.value,discount_percent:c.discount_percent}),v.success("اطلاعات با موفقیت به ثبت رسید.")}catch(a){v.error(((e=(t=a==null?void 0:a.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{u.value=!1}}return x(async()=>{try{const{data:t}=await _.get("autopromotion");l.value=!!t.state,c.discount_percent=t.discount_percent??void 0}catch(t){console.log(t)}}),(t,e)=>{const a=n("a-switch"),d=n("a-form-item"),b=n("a-input-number"),y=n("a-card"),h=n("a-spin"),g=n("a-button"),w=n("a-form");return N(),B(w,{layout:"vertical",class:"page-card",onSubmit:C(p,["prevent"])},{default:r(()=>[s(h,{spinning:u.value},{default:r(()=>[s(y,{title:"تخفیف اتوماتیک یکبار مصرف ویژه مشتریان جدید",class:"mb-base"},{default:r(()=>[V("div",M,[s(d,{label:"وضعیت تخفیف اتوماتیک"},{default:r(()=>[s(a,{checked:l.value,"onUpdate:checked":e[0]||(e[0]=o=>l.value=o),size:"default"},null,8,["checked"])]),_:1}),s(d,{label:"درصد تخفیف اتوماتیک روی محصولات","validate-status":i.discount_percent?"error":"",help:i.discount_percent},{default:r(()=>[s(b,{value:c.discount_percent,"onUpdate:value":e[1]||(e[1]=o=>c.discount_percent=o),dir:"ltr",min:0,max:100,formatter:o=>`${o}%`,parser:o=>o.replace("%",""),style:{width:"100%"}},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])])]),_:1})]),_:1},8,["spinning"]),s(g,{type:"primary",class:"mr-4 form-submit",onClick:p},{default:r(()=>[...e[2]||(e[2]=[z("ثبت اطلاعات",-1)])]),_:1})]),_:1})}}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js b/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js similarity index 96% rename from apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js rename to apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js index ffb4bda..f4ee435 100644 --- a/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js +++ b/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js @@ -1 +1 @@ -import{d as le,u as ae,x as te,y,a as U,h as f,w as n,H as ne,k as se,m as B,z as R,G as A,r as p,o as v,c as t,p as o,b as O,e as k,F as S,V as oe,f as b,W as ie,l as ue,s as de,t as C}from"./index-DajPj7Ec.js";import{_ as re}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import{_ as w}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js";import{_ as G}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import{D as H}from"./DateInput-CSLG7sxn.js";import{U as pe}from"./UserOutlined-CzruAWCH.js";import{S as me}from"./ShopOutlined-MoIbCAG4.js";import{E as ve}from"./EnvironmentOutlined-DzgF3_xx.js";import{P as fe}from"./PercentageOutlined-D8KYbn5o.js";import{S as _e}from"./SafetyCertificateOutlined-DSk-s9OX.js";const ce={class:"grid-4"},be={class:"grid-4"},ge={class:"grid-2"},ye={class:"grid-3"},Ue={class:"pf-layout"},we={class:"pf-main"},he={class:"pf-section"},Ve={class:"pf-section__head"},xe={class:"pf-section__icon"},Oe={class:"pf-grid-2"},ke={class:"pf-section"},Se={class:"pf-section__head"},Ce={class:"pf-section__icon"},Ne={class:"pf-grid-2"},ze={class:"pf-section"},$e={class:"pf-section__head"},Be={class:"pf-section__icon"},Re={class:"pf-side"},je={class:"pf-section"},qe={class:"pf-section__head"},Ee={class:"pf-section__icon"},Ie={class:"pf-section"},Me={class:"pf-section__head"},Je={class:"pf-section__icon"},Te={class:"pf-uploads"},De={class:"pf-actions"},Fe={class:"pf-actions__hint"},Ze=le({__name:"bulkCustomer",props:{open:{type:Boolean},id:{},asModal:{type:Boolean}},emits:["update:open","success"],setup(j,{emit:W}){const q=j,E=W,N=q.asModal===!0,K=se(),I=ue(),Q=ae(),_=N?q.id:K.params.id,g=B(!1),V=B([]),z=B([]),a=R({fname:"",lname:"",ncode:"",password:"",mobile:"",store_name:"",phone:"",pasazh_name:"",city_id:void 0,mcode:"",birth_date:"",address:"",type:void 0,reagent_id:void 0,percent:3,gram_level:void 0,national_id_image:"",business_license:"",shop_image:""}),M=[{id:2,title:"مغازه دار اپلیکیشن"},{id:3,title:"مغازه دار حضوری"},{id:4,title:"بنکدار"}],J=de(()=>Q.isSuperAdmin?M:M.filter(d=>d.id===2||d.id===Number(a.type)));function T(d,e){var i,s;return String(((s=(i=e==null?void 0:e.children)==null?void 0:i[0])==null?void 0:s.children)??"").includes(d)}const u=R({}),D=R({});function X(){const d={};for(const[e,i]of Object.entries(a))JSON.stringify(i)!==JSON.stringify(D[e])&&(d[e]=i);return d}async function F(d){var i;if(!d)return;let e=(i=V.value.find(s=>s.id===d))==null?void 0:i.percent;if(!Number(e))try{const{data:s}=await y.get(`cities/get-percent-aux/${d}`);e=s}catch(s){console.log(s);return}a.percent=e==null?void 0:Number(e)}function Y(){return Object.keys(u).forEach(d=>delete u[d]),a.fname||(u.fname="لطفا مقدار را وارد کنید"),a.lname||(u.lname="لطفا مقدار را وارد کنید"),a.mobile||(u.mobile="لطفا مقدار را وارد کنید"),(a.percent===void 0||a.percent===null||a.percent==="")&&(u.percent="لطفا مقدار را وارد کنید"),Object.keys(u).length===0}async function $(){var d,e,i,s,h,c;if(Y())try{g.value=!0;const r=_?X():{...a},m={...r,id:_??null,national_code:a.ncode};(!_||"fname"in r||"lname"in r)&&(m.name=`${a.fname} ${a.lname}`.trim()),_?await y.put(`customer/${_}`,m):await y.post("customer/create",m),A.info("اطلاعات با موفقیت به ثبت رسید."),N?(E("success"),E("update:open",!1)):I.go(-1)}catch(r){const m=(s=(i=(e=(d=r==null?void 0:r.response)==null?void 0:d.data)==null?void 0:e.errors)==null?void 0:i.mobile)==null?void 0:s[0];A.error(m??((c=(h=r==null?void 0:r.response)==null?void 0:h.data)==null?void 0:c.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}return te(async()=>{var d;try{const{data:e}=await y.get("query/reagent");z.value=e}catch(e){console.log(e)}try{const{data:e}=await y.post("cities/list");V.value=e.rows??[]}catch(e){console.log(e)}if(_)try{const{data:e}=await y.get(`customer/${_}`);Object.assign(a,{fname:e.fname??"",lname:e.lname??"",ncode:e.national_code??"",mobile:e.mobile??"",city_id:e.city_id??void 0,address:e.address??"",percent:e.percent===null||e.percent===void 0?void 0:Number(e.percent),gram_level:e.gram_level??void 0,reagent_id:((d=e.reagent)==null?void 0:d.id)??void 0,store_name:e.store_name??"",pasazh_name:e.pasazh_name??"",mcode:e.mcode??"",birth_date:e.birth_date??"",phone:e.phone??"",type:e.type??void 0,national_id_image:e.national_id_image??"",business_license:e.business_license??"",shop_image:e.shop_image??""}),Object.assign(D,JSON.parse(JSON.stringify(a)))}catch(e){console.log(e)}}),(d,e)=>{const i=p("a-input"),s=p("a-form-item"),h=p("a-input-password"),c=p("a-card"),r=p("a-select-option"),m=p("a-select"),x=p("a-input-number"),L=p("a-textarea"),P=p("a-button"),Z=p("a-spin"),ee=p("a-form");return N?(v(),U(re,{key:0,open:!!j.open,id:f(_),"add-title":"افزودن مشتری عمده","edit-title":"ویرایش مشتری عمده",loading:g.value,submitting:g.value,width:"lg","onUpdate:open":e[19]||(e[19]=l=>d.$emit("update:open",l)),onSubmit:$},{default:n(()=>[t(c,{title:"اطلاعات پایه",class:"mb-base"},{default:n(()=>[o("div",ce,[t(s,{label:"نام","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[0]||(e[0]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[1]||(e[1]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=l=>a.ncode=l)},null,8,["value"])]),_:1}),t(s,{label:"شماره تلفن همراه","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[3]||(e[3]=l=>a.mobile=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[4]||(e[4]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[5]||(e[5]=l=>a.phone=l)},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تجاری",class:"mb-base"},{default:n(()=>[o("div",be,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[6]||(e[6]=l=>a.type=l),"show-search":"","filter-option":T,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(J.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"نام مغازه"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[9]||(e[9]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[10]||(e[10]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[11]||(e[11]=l=>a.reagent_id=l),"allow-clear":"",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[12]||(e[12]=l=>a.percent=l),class:"w-full"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار (برحسب گرم)"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=l=>a.gram_level=l),class:"w-full"},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تکمیلی",class:"mb-base"},{default:n(()=>[o("div",ge,[t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[14]||(e[14]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[15]||(e[15]=l=>a.address=l),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"مدارک",class:"mb-base"},{default:n(()=>[o("div",ye,[t(s,{label:"عکس کارت ملی"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[16]||(e[16]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس جواز کسب"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[17]||(e[17]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس سردر مغازه"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[18]||(e[18]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(v(),U(ee,{key:1,layout:"vertical",model:a,class:"pf-form",onSubmit:ne($,["prevent"])},{default:n(()=>[t(Z,{spinning:g.value},{default:n(()=>[o("div",Ue,[o("div",we,[o("section",he,[o("div",Ve,[o("span",xe,[t(f(pe))]),e[40]||(e[40]=o("div",null,[o("h3",null,"اطلاعات پایه"),o("p",null,"مشخصات هویتی و اطلاعات ورود مشتری")],-1))]),o("div",Oe,[t(s,{label:"نام",required:"","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[20]||(e[20]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی",required:"","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[21]||(e[21]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[22]||(e[22]=l=>a.ncode=l),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[23]||(e[23]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"شماره تلفن همراه",required:"","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[24]||(e[24]=l=>a.mobile=l),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[25]||(e[25]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت",class:"mb-0"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[26]||(e[26]=l=>a.phone=l),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1})])]),o("section",ke,[o("div",Se,[o("span",Ce,[t(f(me))]),e[41]||(e[41]=o("div",null,[o("h3",null,"اطلاعات تجاری"),o("p",null,"نوع کاربری و مشخصات فروشگاه")],-1))]),o("div",Ne,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[27]||(e[27]=l=>a.type=l),"show-search":"",placeholder:"انتخاب کنید","filter-option":T,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(J.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[28]||(e[28]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(s,{label:"نام مغازه",class:"mb-0"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[29]||(e[29]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ",class:"mb-0"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[30]||(e[30]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1})])]),o("section",ze,[o("div",$e,[o("span",Be,[t(f(ve))]),e[42]||(e[42]=o("div",null,[o("h3",null,"آدرس"),o("p",null,"انتخاب شهر، درصد را بر اساس همان شهر پر می‌کند")],-1))]),t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[31]||(e[31]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس",class:"mb-0"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[32]||(e[32]=l=>a.address=l),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),o("aside",Re,[o("section",je,[o("div",qe,[o("span",Ee,[t(f(fe))]),e[43]||(e[43]=o("div",null,[o("h3",null,"کارشناس و اعتبار"),o("p",null,"کارشناس فروش، درصد و سقف اعتبار")],-1))]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[33]||(e[33]=l=>a.reagent_id=l),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id,label:l.name},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد",required:"","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[34]||(e[34]=l=>a.percent=l),class:"w-full","addon-after":"٪"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار",class:"mb-0"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[35]||(e[35]=l=>a.gram_level=l),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})]),o("section",Ie,[o("div",Me,[o("span",Je,[t(f(_e))]),e[44]||(e[44]=o("div",null,[o("h3",null,"مدارک"),o("p",null,"تصویر مدارک هویتی و فروشگاه")],-1))]),o("div",Te,[t(s,{label:"کارت ملی",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[36]||(e[36]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"جواز کسب",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[37]||(e[37]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"سردر مغازه",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[38]||(e[38]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])])])]),o("div",De,[o("span",Fe,[t(f(oe)),e[45]||(e[45]=b(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),t(P,{onClick:e[39]||(e[39]=l=>f(I).go(-1))},{default:n(()=>[...e[46]||(e[46]=[b("انصراف",-1)])]),_:1}),t(P,{type:"primary",class:"form-submit",loading:g.value,onClick:$},{icon:n(()=>[t(f(ie))]),default:n(()=>[e[47]||(e[47]=b(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1},8,["spinning"])]),_:1},8,["model"]))}}});export{Ze as _}; +import{d as le,u as ae,x as te,y,a as U,h as f,w as n,H as ne,k as se,m as B,z as R,G as A,r as p,o as v,c as t,p as o,b as O,e as k,F as S,V as oe,f as b,W as ie,l as ue,s as de,t as C}from"./index-eLNLLYwC.js";import{_ as re}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import{_ as w}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js";import{_ as G}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import{D as H}from"./DateInput-D9Jh1loF.js";import{U as pe}from"./UserOutlined-B4M5rNrX.js";import{S as me}from"./ShopOutlined-DIjF3I3z.js";import{E as ve}from"./EnvironmentOutlined-BKbou10z.js";import{P as fe}from"./PercentageOutlined-DyprS4lh.js";import{S as _e}from"./SafetyCertificateOutlined-Du6lFDs_.js";const ce={class:"grid-4"},be={class:"grid-4"},ge={class:"grid-2"},ye={class:"grid-3"},Ue={class:"pf-layout"},we={class:"pf-main"},he={class:"pf-section"},Ve={class:"pf-section__head"},xe={class:"pf-section__icon"},Oe={class:"pf-grid-2"},ke={class:"pf-section"},Se={class:"pf-section__head"},Ce={class:"pf-section__icon"},Ne={class:"pf-grid-2"},ze={class:"pf-section"},$e={class:"pf-section__head"},Be={class:"pf-section__icon"},Re={class:"pf-side"},je={class:"pf-section"},qe={class:"pf-section__head"},Ee={class:"pf-section__icon"},Ie={class:"pf-section"},Me={class:"pf-section__head"},Je={class:"pf-section__icon"},Te={class:"pf-uploads"},De={class:"pf-actions"},Fe={class:"pf-actions__hint"},Ze=le({__name:"bulkCustomer",props:{open:{type:Boolean},id:{},asModal:{type:Boolean}},emits:["update:open","success"],setup(j,{emit:W}){const q=j,E=W,N=q.asModal===!0,K=se(),I=ue(),Q=ae(),_=N?q.id:K.params.id,g=B(!1),V=B([]),z=B([]),a=R({fname:"",lname:"",ncode:"",password:"",mobile:"",store_name:"",phone:"",pasazh_name:"",city_id:void 0,mcode:"",birth_date:"",address:"",type:void 0,reagent_id:void 0,percent:3,gram_level:void 0,national_id_image:"",business_license:"",shop_image:""}),M=[{id:2,title:"مغازه دار اپلیکیشن"},{id:3,title:"مغازه دار حضوری"},{id:4,title:"بنکدار"}],J=de(()=>Q.isSuperAdmin?M:M.filter(d=>d.id===2||d.id===Number(a.type)));function T(d,e){var i,s;return String(((s=(i=e==null?void 0:e.children)==null?void 0:i[0])==null?void 0:s.children)??"").includes(d)}const u=R({}),D=R({});function X(){const d={};for(const[e,i]of Object.entries(a))JSON.stringify(i)!==JSON.stringify(D[e])&&(d[e]=i);return d}async function F(d){var i;if(!d)return;let e=(i=V.value.find(s=>s.id===d))==null?void 0:i.percent;if(!Number(e))try{const{data:s}=await y.get(`cities/get-percent-aux/${d}`);e=s}catch(s){console.log(s);return}a.percent=e==null?void 0:Number(e)}function Y(){return Object.keys(u).forEach(d=>delete u[d]),a.fname||(u.fname="لطفا مقدار را وارد کنید"),a.lname||(u.lname="لطفا مقدار را وارد کنید"),a.mobile||(u.mobile="لطفا مقدار را وارد کنید"),(a.percent===void 0||a.percent===null||a.percent==="")&&(u.percent="لطفا مقدار را وارد کنید"),Object.keys(u).length===0}async function $(){var d,e,i,s,h,c;if(Y())try{g.value=!0;const r=_?X():{...a},m={...r,id:_??null,national_code:a.ncode};(!_||"fname"in r||"lname"in r)&&(m.name=`${a.fname} ${a.lname}`.trim()),_?await y.put(`customer/${_}`,m):await y.post("customer/create",m),A.info("اطلاعات با موفقیت به ثبت رسید."),N?(E("success"),E("update:open",!1)):I.go(-1)}catch(r){const m=(s=(i=(e=(d=r==null?void 0:r.response)==null?void 0:d.data)==null?void 0:e.errors)==null?void 0:i.mobile)==null?void 0:s[0];A.error(m??((c=(h=r==null?void 0:r.response)==null?void 0:h.data)==null?void 0:c.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}return te(async()=>{var d;try{const{data:e}=await y.get("query/reagent");z.value=e}catch(e){console.log(e)}try{const{data:e}=await y.post("cities/list");V.value=e.rows??[]}catch(e){console.log(e)}if(_)try{const{data:e}=await y.get(`customer/${_}`);Object.assign(a,{fname:e.fname??"",lname:e.lname??"",ncode:e.national_code??"",mobile:e.mobile??"",city_id:e.city_id??void 0,address:e.address??"",percent:e.percent===null||e.percent===void 0?void 0:Number(e.percent),gram_level:e.gram_level??void 0,reagent_id:((d=e.reagent)==null?void 0:d.id)??void 0,store_name:e.store_name??"",pasazh_name:e.pasazh_name??"",mcode:e.mcode??"",birth_date:e.birth_date??"",phone:e.phone??"",type:e.type??void 0,national_id_image:e.national_id_image??"",business_license:e.business_license??"",shop_image:e.shop_image??""}),Object.assign(D,JSON.parse(JSON.stringify(a)))}catch(e){console.log(e)}}),(d,e)=>{const i=p("a-input"),s=p("a-form-item"),h=p("a-input-password"),c=p("a-card"),r=p("a-select-option"),m=p("a-select"),x=p("a-input-number"),L=p("a-textarea"),P=p("a-button"),Z=p("a-spin"),ee=p("a-form");return N?(v(),U(re,{key:0,open:!!j.open,id:f(_),"add-title":"افزودن مشتری عمده","edit-title":"ویرایش مشتری عمده",loading:g.value,submitting:g.value,width:"lg","onUpdate:open":e[19]||(e[19]=l=>d.$emit("update:open",l)),onSubmit:$},{default:n(()=>[t(c,{title:"اطلاعات پایه",class:"mb-base"},{default:n(()=>[o("div",ce,[t(s,{label:"نام","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[0]||(e[0]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[1]||(e[1]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=l=>a.ncode=l)},null,8,["value"])]),_:1}),t(s,{label:"شماره تلفن همراه","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[3]||(e[3]=l=>a.mobile=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[4]||(e[4]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[5]||(e[5]=l=>a.phone=l)},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تجاری",class:"mb-base"},{default:n(()=>[o("div",be,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[6]||(e[6]=l=>a.type=l),"show-search":"","filter-option":T,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(J.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"نام مغازه"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[9]||(e[9]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[10]||(e[10]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[11]||(e[11]=l=>a.reagent_id=l),"allow-clear":"",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[12]||(e[12]=l=>a.percent=l),class:"w-full"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار (برحسب گرم)"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=l=>a.gram_level=l),class:"w-full"},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تکمیلی",class:"mb-base"},{default:n(()=>[o("div",ge,[t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[14]||(e[14]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[15]||(e[15]=l=>a.address=l),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"مدارک",class:"mb-base"},{default:n(()=>[o("div",ye,[t(s,{label:"عکس کارت ملی"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[16]||(e[16]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس جواز کسب"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[17]||(e[17]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس سردر مغازه"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[18]||(e[18]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(v(),U(ee,{key:1,layout:"vertical",model:a,class:"pf-form",onSubmit:ne($,["prevent"])},{default:n(()=>[t(Z,{spinning:g.value},{default:n(()=>[o("div",Ue,[o("div",we,[o("section",he,[o("div",Ve,[o("span",xe,[t(f(pe))]),e[40]||(e[40]=o("div",null,[o("h3",null,"اطلاعات پایه"),o("p",null,"مشخصات هویتی و اطلاعات ورود مشتری")],-1))]),o("div",Oe,[t(s,{label:"نام",required:"","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[20]||(e[20]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی",required:"","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[21]||(e[21]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[22]||(e[22]=l=>a.ncode=l),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[23]||(e[23]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"شماره تلفن همراه",required:"","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[24]||(e[24]=l=>a.mobile=l),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[25]||(e[25]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت",class:"mb-0"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[26]||(e[26]=l=>a.phone=l),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1})])]),o("section",ke,[o("div",Se,[o("span",Ce,[t(f(me))]),e[41]||(e[41]=o("div",null,[o("h3",null,"اطلاعات تجاری"),o("p",null,"نوع کاربری و مشخصات فروشگاه")],-1))]),o("div",Ne,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[27]||(e[27]=l=>a.type=l),"show-search":"",placeholder:"انتخاب کنید","filter-option":T,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(J.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[28]||(e[28]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(s,{label:"نام مغازه",class:"mb-0"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[29]||(e[29]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ",class:"mb-0"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[30]||(e[30]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1})])]),o("section",ze,[o("div",$e,[o("span",Be,[t(f(ve))]),e[42]||(e[42]=o("div",null,[o("h3",null,"آدرس"),o("p",null,"انتخاب شهر، درصد را بر اساس همان شهر پر می‌کند")],-1))]),t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[31]||(e[31]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس",class:"mb-0"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[32]||(e[32]=l=>a.address=l),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),o("aside",Re,[o("section",je,[o("div",qe,[o("span",Ee,[t(f(fe))]),e[43]||(e[43]=o("div",null,[o("h3",null,"کارشناس و اعتبار"),o("p",null,"کارشناس فروش، درصد و سقف اعتبار")],-1))]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[33]||(e[33]=l=>a.reagent_id=l),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id,label:l.name},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد",required:"","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[34]||(e[34]=l=>a.percent=l),class:"w-full","addon-after":"٪"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار",class:"mb-0"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[35]||(e[35]=l=>a.gram_level=l),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})]),o("section",Ie,[o("div",Me,[o("span",Je,[t(f(_e))]),e[44]||(e[44]=o("div",null,[o("h3",null,"مدارک"),o("p",null,"تصویر مدارک هویتی و فروشگاه")],-1))]),o("div",Te,[t(s,{label:"کارت ملی",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[36]||(e[36]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"جواز کسب",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[37]||(e[37]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"سردر مغازه",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[38]||(e[38]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])])])]),o("div",De,[o("span",Fe,[t(f(oe)),e[45]||(e[45]=b(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),t(P,{onClick:e[39]||(e[39]=l=>f(I).go(-1))},{default:n(()=>[...e[46]||(e[46]=[b("انصراف",-1)])]),_:1}),t(P,{type:"primary",class:"form-submit",loading:g.value,onClick:$},{icon:n(()=>[t(f(ie))]),default:n(()=>[e[47]||(e[47]=b(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1},8,["spinning"])]),_:1},8,["model"]))}}});export{Ze as _}; diff --git a/apps/admin-panel/dist/assets/cityList-ZcdYYFeM.js b/apps/admin-panel/dist/assets/cityList-DX9LVS_S.js similarity index 86% rename from apps/admin-panel/dist/assets/cityList-ZcdYYFeM.js rename to apps/admin-panel/dist/assets/cityList-DX9LVS_S.js index 79f8743..306c8e4 100644 --- a/apps/admin-panel/dist/assets/cityList-ZcdYYFeM.js +++ b/apps/admin-panel/dist/assets/cityList-DX9LVS_S.js @@ -1 +1 @@ -import{a as z,b as c,X as A}from"./model-CR-NjhTP.js";import{_ as G}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import{_ as H}from"./createCity.vue_vue_type_script_setup_true_lang-JXoB9ElE.js";import{d as K,u as R,b as j,c as a,w as o,r as s,o as k,h as x,a as U,E as q,i as N,D as F,p as I,f as S,t as C,m as d,z as J,y as T,G as B}from"./index-DajPj7Ec.js";import{u as Q}from"./useDeleteHandler-CdwhuWqX.js";import{_ as W}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";function Y(){const r=new z("admin/misc/cities/list","لیست شهر ها");return r.add(new c("title","نام شهر").filterKey("name").filterText()),r.add(new c("parent_title","والد").renderSlot("parent_title").noSort()),r.add(new c("percent","درصد مشتری عمده").renderSlot("percent").noSort()),r.add(new c("percent_aux","درصد کارشناس فروش").renderSlot("percent_aux").noSort()),r.add(new c("opt","عملیات").noSort().renderSlot("opt")),r}const Z={id:"page-user-list"},pe=K({__name:"cityList",setup(r){const D=R(),$=n=>!!D.hasPermission(n),E=Y(),m=d(null),b=d(!1),_=d(!1),y=d(void 0),l=J({title:"",parent:void 0,percent:null,percent_aux:null}),g=d([]);async function O(n){y.value=n,l.title=n.title??"",l.parent=n.parent??void 0,l.percent=n.percent===null||n.percent===void 0?null:Number(n.percent),l.percent_aux=n.percent_aux===null||n.percent_aux===void 0?null:Number(n.percent_aux);try{const{data:e}=await T.post("cities/list");g.value=e.rows??[]}catch(e){console.log(e)}_.value=!0}async function V(){var n,e,p,f;try{await T.put(`cities/${(n=y.value)==null?void 0:n.id}`,{title:l.title,parent:l.parent??null,percent:l.percent,percent_aux:l.percent_aux}),B.success("تغییرات ثبت شد"),_.value=!1,(e=m.value)==null||e.fetch()}catch(u){B.error(((f=(p=u==null?void 0:u.response)==null?void 0:p.data)==null?void 0:f.message)??"خطا در ثبت تغییرات")}}const{remove:X}=Q({onSuccess:()=>{var n;return(n=m.value)==null?void 0:n.fetch()},successMessage:"شهر حذف شد",fallbackErrorMessage:"خطا در حذف شهر"});return(n,e)=>{const p=s("a-tooltip"),f=s("a-popconfirm"),u=s("a-input"),v=s("a-form-item"),w=s("a-input-number"),M=s("a-form"),L=s("a-modal"),P=s("a-card");return k(),j("div",Z,[a(P,{title:"لیست شهر ها",class:"page-card"},{default:o(()=>[a(A,{ref_key:"citiesTable",ref:m,model:x(E),"mobile-cards":""},{add:o(()=>[a(G,{rid:"cities.create","add-label":"افزودن شهر",onAdd:e[0]||(e[0]=t=>b.value=!0)})]),parent_title:o(({text:t})=>[S(C(t??"—"),1)]),percent:o(({text:t})=>[S(C(t??"-"),1)]),percent_aux:o(({text:t})=>[S(C(t??"-"),1)]),opt:o(({record:t})=>[$("cities.list.view.edit")?(k(),U(p,{key:0,title:"ویرایش"},{default:o(()=>[a(x(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>O(t)},null,8,["onClick"])]),_:2},1024)):N("",!0),$("cities.list.remove")?(k(),U(p,{key:1,title:"حذف"},{default:o(()=>[a(f,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>x(X)(`cities/${t.id}`)},{title:o(()=>[...e[8]||(e[8]=[I("p",null,"آیا مطمئن به حذف شهر مورد نظر هستید ؟",-1)])]),default:o(()=>[a(x(F),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):N("",!0)]),_:1},8,["model"]),a(L,{open:_.value,"onUpdate:open":e[5]||(e[5]=t=>_.value=t),title:"ویرایش شهر",onOk:V},{default:o(()=>[a(M,{layout:"vertical"},{default:o(()=>[a(v,{label:"نام شهر"},{default:o(()=>[a(u,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1}),a(v,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:o(()=>{var t;return[a(W,{value:l.parent,"onUpdate:value":e[2]||(e[2]=i=>l.parent=i),cities:g.value,"parent-picker":"","exclude-id":(t=y.value)==null?void 0:t.id,placeholder:"والد را انتخاب کنید"},null,8,["value","cities","exclude-id"])]}),_:1}),a(v,{label:"درصد مشتری عمده"},{default:o(()=>[a(w,{value:l.percent,"onUpdate:value":e[3]||(e[3]=t=>l.percent=t),class:"w-full",step:.1},null,8,["value"])]),_:1}),a(v,{label:"درصد کارشناس فروش"},{default:o(()=>[a(w,{value:l.percent_aux,"onUpdate:value":e[4]||(e[4]=t=>l.percent_aux=t),class:"w-full",step:.1},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open"]),a(H,{open:b.value,"onUpdate:open":e[6]||(e[6]=t=>b.value=t),onSuccess:e[7]||(e[7]=t=>{var i;return(i=m.value)==null?void 0:i.fetch()})},null,8,["open"])]),_:1})])}}});export{pe as default}; +import{a as z,b as c,X as A}from"./model-btNVLLyF.js";import{_ as G}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import{_ as H}from"./createCity.vue_vue_type_script_setup_true_lang-DsfElQum.js";import{d as K,u as R,b as j,c as a,w as o,r as s,o as k,h as x,a as U,E as q,i as N,D as F,p as I,f as S,t as C,m as d,z as J,y as T,G as B}from"./index-eLNLLYwC.js";import{u as Q}from"./useDeleteHandler-BHXHWuUG.js";import{_ as W}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";function Y(){const r=new z("admin/misc/cities/list","لیست شهر ها");return r.add(new c("title","نام شهر").filterKey("name").filterText()),r.add(new c("parent_title","والد").renderSlot("parent_title").noSort()),r.add(new c("percent","درصد مشتری عمده").renderSlot("percent").noSort()),r.add(new c("percent_aux","درصد کارشناس فروش").renderSlot("percent_aux").noSort()),r.add(new c("opt","عملیات").noSort().renderSlot("opt")),r}const Z={id:"page-user-list"},pe=K({__name:"cityList",setup(r){const D=R(),$=n=>!!D.hasPermission(n),E=Y(),m=d(null),b=d(!1),_=d(!1),y=d(void 0),l=J({title:"",parent:void 0,percent:null,percent_aux:null}),g=d([]);async function O(n){y.value=n,l.title=n.title??"",l.parent=n.parent??void 0,l.percent=n.percent===null||n.percent===void 0?null:Number(n.percent),l.percent_aux=n.percent_aux===null||n.percent_aux===void 0?null:Number(n.percent_aux);try{const{data:e}=await T.post("cities/list");g.value=e.rows??[]}catch(e){console.log(e)}_.value=!0}async function V(){var n,e,p,f;try{await T.put(`cities/${(n=y.value)==null?void 0:n.id}`,{title:l.title,parent:l.parent??null,percent:l.percent,percent_aux:l.percent_aux}),B.success("تغییرات ثبت شد"),_.value=!1,(e=m.value)==null||e.fetch()}catch(u){B.error(((f=(p=u==null?void 0:u.response)==null?void 0:p.data)==null?void 0:f.message)??"خطا در ثبت تغییرات")}}const{remove:X}=Q({onSuccess:()=>{var n;return(n=m.value)==null?void 0:n.fetch()},successMessage:"شهر حذف شد",fallbackErrorMessage:"خطا در حذف شهر"});return(n,e)=>{const p=s("a-tooltip"),f=s("a-popconfirm"),u=s("a-input"),v=s("a-form-item"),w=s("a-input-number"),M=s("a-form"),L=s("a-modal"),P=s("a-card");return k(),j("div",Z,[a(P,{title:"لیست شهر ها",class:"page-card"},{default:o(()=>[a(A,{ref_key:"citiesTable",ref:m,model:x(E),"mobile-cards":""},{add:o(()=>[a(G,{rid:"cities.create","add-label":"افزودن شهر",onAdd:e[0]||(e[0]=t=>b.value=!0)})]),parent_title:o(({text:t})=>[S(C(t??"—"),1)]),percent:o(({text:t})=>[S(C(t??"-"),1)]),percent_aux:o(({text:t})=>[S(C(t??"-"),1)]),opt:o(({record:t})=>[$("cities.list.view.edit")?(k(),U(p,{key:0,title:"ویرایش"},{default:o(()=>[a(x(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>O(t)},null,8,["onClick"])]),_:2},1024)):N("",!0),$("cities.list.remove")?(k(),U(p,{key:1,title:"حذف"},{default:o(()=>[a(f,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>x(X)(`cities/${t.id}`)},{title:o(()=>[...e[8]||(e[8]=[I("p",null,"آیا مطمئن به حذف شهر مورد نظر هستید ؟",-1)])]),default:o(()=>[a(x(F),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):N("",!0)]),_:1},8,["model"]),a(L,{open:_.value,"onUpdate:open":e[5]||(e[5]=t=>_.value=t),title:"ویرایش شهر",onOk:V},{default:o(()=>[a(M,{layout:"vertical"},{default:o(()=>[a(v,{label:"نام شهر"},{default:o(()=>[a(u,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1}),a(v,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:o(()=>{var t;return[a(W,{value:l.parent,"onUpdate:value":e[2]||(e[2]=i=>l.parent=i),cities:g.value,"parent-picker":"","exclude-id":(t=y.value)==null?void 0:t.id,placeholder:"والد را انتخاب کنید"},null,8,["value","cities","exclude-id"])]}),_:1}),a(v,{label:"درصد مشتری عمده"},{default:o(()=>[a(w,{value:l.percent,"onUpdate:value":e[3]||(e[3]=t=>l.percent=t),class:"w-full",step:.1},null,8,["value"])]),_:1}),a(v,{label:"درصد کارشناس فروش"},{default:o(()=>[a(w,{value:l.percent_aux,"onUpdate:value":e[4]||(e[4]=t=>l.percent_aux=t),class:"w-full",step:.1},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open"]),a(H,{open:b.value,"onUpdate:open":e[6]||(e[6]=t=>b.value=t),onSuccess:e[7]||(e[7]=t=>{var i;return(i=m.value)==null?void 0:i.fetch()})},null,8,["open"])]),_:1})])}}});export{pe as default}; diff --git a/apps/admin-panel/dist/assets/create-DqSLe1hW.js b/apps/admin-panel/dist/assets/create-BIvFVhDo.js similarity index 97% rename from apps/admin-panel/dist/assets/create-DqSLe1hW.js rename to apps/admin-panel/dist/assets/create-BIvFVhDo.js index 1da1d65..bda9c60 100644 --- a/apps/admin-panel/dist/assets/create-DqSLe1hW.js +++ b/apps/admin-panel/dist/assets/create-BIvFVhDo.js @@ -1 +1 @@ -import{Y as he,y as P,d as be,v as xe,u as we,x as ke,a as U,w as i,i as Q,m as V,r as p,o as d,c as s,h as I,f as b,Z as Ie,b as x,e as B,F as C,p as z,$ as Ce,t as w,E as qe,W as Se,H as Ue,z as j,s as F,G as E,l as Ne,_ as Oe}from"./index-DajPj7Ec.js";import{X as ze}from"./model-CR-NjhTP.js";import{b as Pe}from"./productListModel-C4fzek7T.js";import{u as $e}from"./auth-l1fvj2RU.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";const H="admin_cart_items",Ve=he("cart",{state:()=>({items:[]}),actions:{addToCart(l){const y=this.items.findIndex(_=>_.pid==l.pid&&_.vid==l.vid),v=l.product.variants_all.filter(_=>_.id===l.vid)[0];v&&!(!v.is_pre_order&&v.qty===0)&&(y==-1?this.items.push(l):(this.items[y].product=l.product,this.items[y].qty=l.qty))},setItems(l){this.items=l,localStorage.setItem(H,JSON.stringify(l))},add(l){this.addToCart(l),this.setItems(this.items)},remove(l){const y=this.items.findIndex(v=>v.pid==l.pid&&v.vid==l.vid);y>-1&&this.items.splice(y,1),this.setItems(this.items)},updateItemQuantity(l){this.items[l.index].qty=l.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},async init(){try{const l=JSON.parse(localStorage.getItem(H)??"[]")||[],y=l.map(_=>_.product.id);if(y.length===0){this.setItems([]);return}const{data:v}=await P.post("product/variant",{products_id:y});if(v){const _=[];for(const N of l){const u=v.find(L=>L.id==N.product.id);u&&(!u.variants_all[0].is_pre_order&&u.variants_all[0].qty===0||_.push({vid:N.vid,pid:u.id,product:u,qty:N.qty,promotion_id:u.promotion&&u.promotion.id?u.promotion.id:null}))}this.setItems(_)}}catch(l){console.log("error in cart",l)}}}}),Be=["src"],Ee={key:1,class:"flex items-center"},Le=["src"],Re={key:4,class:"flex"},Te={style:{width:"max-content"}},Me={class:"grid-5"},Qe={class:"totals"},K="/img/no-items.png",je=be({__name:"create",setup(l){const y=Ne(),v=xe(),_=we(),N=$e(),u=Ve(),L=t=>!!_.hasPermission(t),Y=Pe(_.isSuperAdmin),Z=V(null),O=V(!1),W=V([]),A=V({}),ee={1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی",5:"ارسال",6:"تحویل مشتری"},n=j({customer_id:void 0,sts:void 0,type:void 0,note:"",shipping_address:{reciver_fname:"",reciver_lname:"",province:"",city:"",zipcode:"",reciver_phone:"",reciver_fixed_phone:"",address:""}}),f=j({}),te=F(()=>{var t;return(t=N.user)==null?void 0:t.id}),h=F(()=>u.items),ae=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:90},{title:"محصول",dataIndex:"product"},{title:"اجرت",dataIndex:"wage",align:"center"},{title:"تعداد",dataIndex:"qty",align:"center",width:140},{title:"وزن",dataIndex:"weight",align:"center",width:90},{title:"مجموع",dataIndex:"total",align:"center"}],c=j({});function k(t){return t.product.variants_all.find(e=>e.id===t.vid)??{}}function se(t){var e,o,m;return((e=t==null?void 0:t.thumb)==null?void 0:e.full)??((m=(o=t==null?void 0:t.ProductImage)==null?void 0:o[0])==null?void 0:m.image)??K}const ie=F(()=>{let t=0;for(const e of h.value)t+=Number(k(e).grams??0);return t});function ne(t){return Number(k(t).grams??0)*t.qty}function oe(t){const e=h.value[t];if(!e)return 1/0;const o=Number(k(e).qty??0);return o>0?o:1/0}function le(t,e){u.updateItemQuantity({index:t,quantity:Number(e)})}function re(t,e){de(t,String(e.key))}function de(t,e){u.add({vid:e,pid:t.id,product:t,qty:1,promotion_id:t.promotion&&t.promotion.id?t.promotion.id:null}),E.info("اضافه شد")}function ue(t){const e=k(t);c.id=e.id,c.grams=Number(e.grams??0)}async function pe(){var t,e;if(!(!c.id||!c.grams))try{O.value=!0;const o=h.value.find(m=>m.vid===c.id);await P.post("add/variant",{product_id:o==null?void 0:o.pid,title:`${c.grams} گرم`,grams:c.grams}),await u.init(),c.id=void 0,c.grams=void 0}catch(o){E.error(((e=(t=o==null?void 0:o.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت وزن")}finally{O.value=!1}}function me(t,e){var o,m;return String(((m=(o=e==null?void 0:e.children)==null?void 0:o[0])==null?void 0:m.children)??"").toLowerCase().includes(t.toLowerCase())}function ce(){return Object.keys(f).forEach(t=>delete f[t]),n.customer_id||(f.customer_id="مقدار را وارد نمایید"),n.sts===void 0&&(f.sts="مقدار را وارد نمایید"),n.type===void 0&&(f.type="مقدار را وارد نمایید"),Object.keys(f).length===0}async function D(){var t,e;if(ce())try{O.value=!0;const o=h.value.map(m=>{const R=k(m);return{vid:m.vid,qty:m.qty,percent:R.percentage_pay,promotion_id:m.promotion_id}});await P.post("order",{...n,reagent_id:te.value,app:"app",order_items:o}),E.info("عملیات با موفقیت انجام شد"),u.clear(),y.push("/order/list")}catch(o){console.log(o),E.error(((e=(t=o==null?void 0:o.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{O.value=!1}}return ke(async()=>{try{const[t,e]=await Promise.all([P.get("order/type"),P.post("single-customer",{page:1,limit:500})]);A.value=t.data,W.value=e.data.rows??[]}catch(t){console.log(t)}await u.init()}),(t,e)=>{const o=p("a-button"),m=p("a-menu-item"),R=p("a-menu"),ve=p("a-dropdown"),G=p("a-input-number"),_e=p("a-table"),T=p("a-select-option"),M=p("a-select"),g=p("a-form-item"),q=p("a-input"),J=p("a-textarea"),fe=p("a-tag"),ge=p("a-form"),X=p("a-card"),ye=p("a-spin");return L("order.create")?(d(),U(ye,{key:0,spinning:O.value},{default:i(()=>[s(X,{title:"لیست محصولات",class:"page-card"},{default:i(()=>[s(ze,{ref_key:"tblProducts",ref:Z,model:I(Y),"mobile-cards":""},{image:i(({record:a})=>[z("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:K},null,8,Be)]),op:i(({record:a})=>[s(ve,null,{overlay:i(()=>[s(R,{onClick:r=>re(a,r)},{default:i(()=>[(d(!0),x(C,null,B(a.variants_all,r=>(d(),U(m,{key:r.id},{default:i(()=>[b(" افزودن تنوع "+w(r.title),1)]),_:2},1024))),128))]),_:2},1032,["onClick"])]),default:i(()=>[s(o,{style:{"margin-left":"8px"}},{default:i(()=>[e[13]||(e[13]=b(" افزودن ",-1)),s(I(Ie))]),_:1})]),_:2},1024)]),_:1},8,["model"]),h.value.length>0?(d(),U(X,{key:0,title:"ثبت سفارش",class:"mt-5"},{default:i(()=>[s(_e,{columns:ae,"data-source":h.value,bordered:"",pagination:!1,"row-key":"vid",size:I(v).isMobile?"small":"middle",scroll:I(v).isSmallScreen?{x:"max-content"}:void 0},{bodyCell:i(({column:a,record:r,index:$})=>[a.dataIndex==="delete"?(d(),U(I(Ce),{key:0,class:"cursor-pointer",onClick:S=>I(u).remove(r)},null,8,["onClick"])):a.dataIndex==="product"?(d(),x("div",Ee,[z("img",{src:se(r.product),width:"50px"},null,8,Le),b(" "+w(r.product.title),1)])):a.dataIndex==="wage"?(d(),x(C,{key:2},[b(w(k(r).percentage_pay)+"٪ ",1)],64)):a.dataIndex==="qty"?(d(),U(G,{key:3,value:h.value[$].qty,"onUpdate:value":S=>h.value[$].qty=S,min:1,max:oe($),onChange:S=>le($,S)},null,8,["value","onUpdate:value","max","onChange"])):a.dataIndex==="weight"?(d(),x("div",Re,[!c.grams||c.id!==k(r).id?(d(),x(C,{key:0},[z("span",Te,w(k(r).title),1),s(I(qe),{class:"cursor-pointer ml-2 text-primary",onClick:S=>ue(r)},null,8,["onClick"])],64)):(d(),x(C,{key:1},[s(G,{value:c.grams,"onUpdate:value":e[0]||(e[0]=S=>c.grams=S)},null,8,["value"]),s(I(Se),{class:"cursor-pointer ml-2 text-success",onClick:pe})],64))])):a.dataIndex==="total"?(d(),x(C,{key:5},[b(w(ne(r))+" گرم ",1)],64)):Q("",!0)]),_:1},8,["data-source","size","scroll"]),s(ge,{layout:"vertical",class:"mt-4",onSubmit:Ue(D,["prevent"])},{default:i(()=>[z("div",Me,[s(g,{label:"مشتری","validate-status":f.customer_id?"error":"",help:f.customer_id},{default:i(()=>[s(M,{value:n.customer_id,"onUpdate:value":e[1]||(e[1]=a=>n.customer_id=a),"show-search":"","option-filter-prop":"children","filter-option":me},{default:i(()=>[(d(!0),x(C,null,B(W.value,a=>(d(),U(T,{key:a.id,value:a.id},{default:i(()=>[b(w(`${a.id}-${a.fname} ${a.lname}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"وضعیت تحویل","validate-status":f.sts?"error":"",help:f.sts},{default:i(()=>[s(M,{value:n.sts,"onUpdate:value":e[2]||(e[2]=a=>n.sts=a)},{default:i(()=>[(d(),x(C,null,B(ee,(a,r)=>s(T,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"نوع فروش","validate-status":f.type?"error":"",help:f.type},{default:i(()=>[s(M,{value:n.type,"onUpdate:value":e[3]||(e[3]=a=>n.type=a)},{default:i(()=>[(d(!0),x(C,null,B(A.value,(a,r)=>(d(),U(T,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"نام دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fname,"onUpdate:value":e[4]||(e[4]=a=>n.shipping_address.reciver_fname=a)},null,8,["value"])]),_:1}),s(g,{label:"نام خانوادگی دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_lname,"onUpdate:value":e[5]||(e[5]=a=>n.shipping_address.reciver_lname=a)},null,8,["value"])]),_:1}),s(g,{label:"استان"},{default:i(()=>[s(q,{value:n.shipping_address.province,"onUpdate:value":e[6]||(e[6]=a=>n.shipping_address.province=a)},null,8,["value"])]),_:1}),s(g,{label:"شهر"},{default:i(()=>[s(q,{value:n.shipping_address.city,"onUpdate:value":e[7]||(e[7]=a=>n.shipping_address.city=a)},null,8,["value"])]),_:1}),s(g,{label:"کد پستی"},{default:i(()=>[s(q,{value:n.shipping_address.zipcode,"onUpdate:value":e[8]||(e[8]=a=>n.shipping_address.zipcode=a)},null,8,["value"])]),_:1}),s(g,{label:"تلفن همراه"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_phone,"onUpdate:value":e[9]||(e[9]=a=>n.shipping_address.reciver_phone=a)},null,8,["value"])]),_:1}),s(g,{label:"تلفن ثابت"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fixed_phone,"onUpdate:value":e[10]||(e[10]=a=>n.shipping_address.reciver_fixed_phone=a)},null,8,["value"])]),_:1})]),s(g,{label:"توضیحات"},{default:i(()=>[s(J,{value:n.note,"onUpdate:value":e[11]||(e[11]=a=>n.note=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),s(g,{label:"آدرس"},{default:i(()=>[s(J,{value:n.shipping_address.address,"onUpdate:value":e[12]||(e[12]=a=>n.shipping_address.address=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),z("div",Qe,[s(fe,{color:"blue"},{default:i(()=>[b("مجموع وزن: "+w(ie.value)+" گرم",1)]),_:1})]),s(o,{type:"primary",class:"mt-4 form-submit",disabled:!h.value||h.value.length<1,onClick:D},{default:i(()=>[...e[14]||(e[14]=[b(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):Q("",!0)]),_:1})]),_:1},8,["spinning"])):Q("",!0)}}}),He=Oe(je,[["__scopeId","data-v-3a053343"]]);export{He as default}; +import{Y as he,y as P,d as be,v as xe,u as we,x as ke,a as U,w as i,i as Q,m as V,r as p,o as d,c as s,h as I,f as b,Z as Ie,b as x,e as B,F as C,p as z,$ as Ce,t as w,E as qe,W as Se,H as Ue,z as j,s as F,G as E,l as Ne,_ as Oe}from"./index-eLNLLYwC.js";import{X as ze}from"./model-btNVLLyF.js";import{b as Pe}from"./productListModel-DskQX-jW.js";import{u as $e}from"./auth-Cmkre2IW.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";const H="admin_cart_items",Ve=he("cart",{state:()=>({items:[]}),actions:{addToCart(l){const y=this.items.findIndex(_=>_.pid==l.pid&&_.vid==l.vid),v=l.product.variants_all.filter(_=>_.id===l.vid)[0];v&&!(!v.is_pre_order&&v.qty===0)&&(y==-1?this.items.push(l):(this.items[y].product=l.product,this.items[y].qty=l.qty))},setItems(l){this.items=l,localStorage.setItem(H,JSON.stringify(l))},add(l){this.addToCart(l),this.setItems(this.items)},remove(l){const y=this.items.findIndex(v=>v.pid==l.pid&&v.vid==l.vid);y>-1&&this.items.splice(y,1),this.setItems(this.items)},updateItemQuantity(l){this.items[l.index].qty=l.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},async init(){try{const l=JSON.parse(localStorage.getItem(H)??"[]")||[],y=l.map(_=>_.product.id);if(y.length===0){this.setItems([]);return}const{data:v}=await P.post("product/variant",{products_id:y});if(v){const _=[];for(const N of l){const u=v.find(L=>L.id==N.product.id);u&&(!u.variants_all[0].is_pre_order&&u.variants_all[0].qty===0||_.push({vid:N.vid,pid:u.id,product:u,qty:N.qty,promotion_id:u.promotion&&u.promotion.id?u.promotion.id:null}))}this.setItems(_)}}catch(l){console.log("error in cart",l)}}}}),Be=["src"],Ee={key:1,class:"flex items-center"},Le=["src"],Re={key:4,class:"flex"},Te={style:{width:"max-content"}},Me={class:"grid-5"},Qe={class:"totals"},K="/img/no-items.png",je=be({__name:"create",setup(l){const y=Ne(),v=xe(),_=we(),N=$e(),u=Ve(),L=t=>!!_.hasPermission(t),Y=Pe(_.isSuperAdmin),Z=V(null),O=V(!1),W=V([]),A=V({}),ee={1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی",5:"ارسال",6:"تحویل مشتری"},n=j({customer_id:void 0,sts:void 0,type:void 0,note:"",shipping_address:{reciver_fname:"",reciver_lname:"",province:"",city:"",zipcode:"",reciver_phone:"",reciver_fixed_phone:"",address:""}}),f=j({}),te=F(()=>{var t;return(t=N.user)==null?void 0:t.id}),h=F(()=>u.items),ae=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:90},{title:"محصول",dataIndex:"product"},{title:"اجرت",dataIndex:"wage",align:"center"},{title:"تعداد",dataIndex:"qty",align:"center",width:140},{title:"وزن",dataIndex:"weight",align:"center",width:90},{title:"مجموع",dataIndex:"total",align:"center"}],c=j({});function k(t){return t.product.variants_all.find(e=>e.id===t.vid)??{}}function se(t){var e,o,m;return((e=t==null?void 0:t.thumb)==null?void 0:e.full)??((m=(o=t==null?void 0:t.ProductImage)==null?void 0:o[0])==null?void 0:m.image)??K}const ie=F(()=>{let t=0;for(const e of h.value)t+=Number(k(e).grams??0);return t});function ne(t){return Number(k(t).grams??0)*t.qty}function oe(t){const e=h.value[t];if(!e)return 1/0;const o=Number(k(e).qty??0);return o>0?o:1/0}function le(t,e){u.updateItemQuantity({index:t,quantity:Number(e)})}function re(t,e){de(t,String(e.key))}function de(t,e){u.add({vid:e,pid:t.id,product:t,qty:1,promotion_id:t.promotion&&t.promotion.id?t.promotion.id:null}),E.info("اضافه شد")}function ue(t){const e=k(t);c.id=e.id,c.grams=Number(e.grams??0)}async function pe(){var t,e;if(!(!c.id||!c.grams))try{O.value=!0;const o=h.value.find(m=>m.vid===c.id);await P.post("add/variant",{product_id:o==null?void 0:o.pid,title:`${c.grams} گرم`,grams:c.grams}),await u.init(),c.id=void 0,c.grams=void 0}catch(o){E.error(((e=(t=o==null?void 0:o.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت وزن")}finally{O.value=!1}}function me(t,e){var o,m;return String(((m=(o=e==null?void 0:e.children)==null?void 0:o[0])==null?void 0:m.children)??"").toLowerCase().includes(t.toLowerCase())}function ce(){return Object.keys(f).forEach(t=>delete f[t]),n.customer_id||(f.customer_id="مقدار را وارد نمایید"),n.sts===void 0&&(f.sts="مقدار را وارد نمایید"),n.type===void 0&&(f.type="مقدار را وارد نمایید"),Object.keys(f).length===0}async function D(){var t,e;if(ce())try{O.value=!0;const o=h.value.map(m=>{const R=k(m);return{vid:m.vid,qty:m.qty,percent:R.percentage_pay,promotion_id:m.promotion_id}});await P.post("order",{...n,reagent_id:te.value,app:"app",order_items:o}),E.info("عملیات با موفقیت انجام شد"),u.clear(),y.push("/order/list")}catch(o){console.log(o),E.error(((e=(t=o==null?void 0:o.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{O.value=!1}}return ke(async()=>{try{const[t,e]=await Promise.all([P.get("order/type"),P.post("single-customer",{page:1,limit:500})]);A.value=t.data,W.value=e.data.rows??[]}catch(t){console.log(t)}await u.init()}),(t,e)=>{const o=p("a-button"),m=p("a-menu-item"),R=p("a-menu"),ve=p("a-dropdown"),G=p("a-input-number"),_e=p("a-table"),T=p("a-select-option"),M=p("a-select"),g=p("a-form-item"),q=p("a-input"),J=p("a-textarea"),fe=p("a-tag"),ge=p("a-form"),X=p("a-card"),ye=p("a-spin");return L("order.create")?(d(),U(ye,{key:0,spinning:O.value},{default:i(()=>[s(X,{title:"لیست محصولات",class:"page-card"},{default:i(()=>[s(ze,{ref_key:"tblProducts",ref:Z,model:I(Y),"mobile-cards":""},{image:i(({record:a})=>[z("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:K},null,8,Be)]),op:i(({record:a})=>[s(ve,null,{overlay:i(()=>[s(R,{onClick:r=>re(a,r)},{default:i(()=>[(d(!0),x(C,null,B(a.variants_all,r=>(d(),U(m,{key:r.id},{default:i(()=>[b(" افزودن تنوع "+w(r.title),1)]),_:2},1024))),128))]),_:2},1032,["onClick"])]),default:i(()=>[s(o,{style:{"margin-left":"8px"}},{default:i(()=>[e[13]||(e[13]=b(" افزودن ",-1)),s(I(Ie))]),_:1})]),_:2},1024)]),_:1},8,["model"]),h.value.length>0?(d(),U(X,{key:0,title:"ثبت سفارش",class:"mt-5"},{default:i(()=>[s(_e,{columns:ae,"data-source":h.value,bordered:"",pagination:!1,"row-key":"vid",size:I(v).isMobile?"small":"middle",scroll:I(v).isSmallScreen?{x:"max-content"}:void 0},{bodyCell:i(({column:a,record:r,index:$})=>[a.dataIndex==="delete"?(d(),U(I(Ce),{key:0,class:"cursor-pointer",onClick:S=>I(u).remove(r)},null,8,["onClick"])):a.dataIndex==="product"?(d(),x("div",Ee,[z("img",{src:se(r.product),width:"50px"},null,8,Le),b(" "+w(r.product.title),1)])):a.dataIndex==="wage"?(d(),x(C,{key:2},[b(w(k(r).percentage_pay)+"٪ ",1)],64)):a.dataIndex==="qty"?(d(),U(G,{key:3,value:h.value[$].qty,"onUpdate:value":S=>h.value[$].qty=S,min:1,max:oe($),onChange:S=>le($,S)},null,8,["value","onUpdate:value","max","onChange"])):a.dataIndex==="weight"?(d(),x("div",Re,[!c.grams||c.id!==k(r).id?(d(),x(C,{key:0},[z("span",Te,w(k(r).title),1),s(I(qe),{class:"cursor-pointer ml-2 text-primary",onClick:S=>ue(r)},null,8,["onClick"])],64)):(d(),x(C,{key:1},[s(G,{value:c.grams,"onUpdate:value":e[0]||(e[0]=S=>c.grams=S)},null,8,["value"]),s(I(Se),{class:"cursor-pointer ml-2 text-success",onClick:pe})],64))])):a.dataIndex==="total"?(d(),x(C,{key:5},[b(w(ne(r))+" گرم ",1)],64)):Q("",!0)]),_:1},8,["data-source","size","scroll"]),s(ge,{layout:"vertical",class:"mt-4",onSubmit:Ue(D,["prevent"])},{default:i(()=>[z("div",Me,[s(g,{label:"مشتری","validate-status":f.customer_id?"error":"",help:f.customer_id},{default:i(()=>[s(M,{value:n.customer_id,"onUpdate:value":e[1]||(e[1]=a=>n.customer_id=a),"show-search":"","option-filter-prop":"children","filter-option":me},{default:i(()=>[(d(!0),x(C,null,B(W.value,a=>(d(),U(T,{key:a.id,value:a.id},{default:i(()=>[b(w(`${a.id}-${a.fname} ${a.lname}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"وضعیت تحویل","validate-status":f.sts?"error":"",help:f.sts},{default:i(()=>[s(M,{value:n.sts,"onUpdate:value":e[2]||(e[2]=a=>n.sts=a)},{default:i(()=>[(d(),x(C,null,B(ee,(a,r)=>s(T,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"نوع فروش","validate-status":f.type?"error":"",help:f.type},{default:i(()=>[s(M,{value:n.type,"onUpdate:value":e[3]||(e[3]=a=>n.type=a)},{default:i(()=>[(d(!0),x(C,null,B(A.value,(a,r)=>(d(),U(T,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"نام دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fname,"onUpdate:value":e[4]||(e[4]=a=>n.shipping_address.reciver_fname=a)},null,8,["value"])]),_:1}),s(g,{label:"نام خانوادگی دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_lname,"onUpdate:value":e[5]||(e[5]=a=>n.shipping_address.reciver_lname=a)},null,8,["value"])]),_:1}),s(g,{label:"استان"},{default:i(()=>[s(q,{value:n.shipping_address.province,"onUpdate:value":e[6]||(e[6]=a=>n.shipping_address.province=a)},null,8,["value"])]),_:1}),s(g,{label:"شهر"},{default:i(()=>[s(q,{value:n.shipping_address.city,"onUpdate:value":e[7]||(e[7]=a=>n.shipping_address.city=a)},null,8,["value"])]),_:1}),s(g,{label:"کد پستی"},{default:i(()=>[s(q,{value:n.shipping_address.zipcode,"onUpdate:value":e[8]||(e[8]=a=>n.shipping_address.zipcode=a)},null,8,["value"])]),_:1}),s(g,{label:"تلفن همراه"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_phone,"onUpdate:value":e[9]||(e[9]=a=>n.shipping_address.reciver_phone=a)},null,8,["value"])]),_:1}),s(g,{label:"تلفن ثابت"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fixed_phone,"onUpdate:value":e[10]||(e[10]=a=>n.shipping_address.reciver_fixed_phone=a)},null,8,["value"])]),_:1})]),s(g,{label:"توضیحات"},{default:i(()=>[s(J,{value:n.note,"onUpdate:value":e[11]||(e[11]=a=>n.note=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),s(g,{label:"آدرس"},{default:i(()=>[s(J,{value:n.shipping_address.address,"onUpdate:value":e[12]||(e[12]=a=>n.shipping_address.address=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),z("div",Qe,[s(fe,{color:"blue"},{default:i(()=>[b("مجموع وزن: "+w(ie.value)+" گرم",1)]),_:1})]),s(o,{type:"primary",class:"mt-4 form-submit",disabled:!h.value||h.value.length<1,onClick:D},{default:i(()=>[...e[14]||(e[14]=[b(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):Q("",!0)]),_:1})]),_:1},8,["spinning"])):Q("",!0)}}}),He=Oe(je,[["__scopeId","data-v-3a053343"]]);export{He as default}; diff --git a/apps/admin-panel/dist/assets/create-BcV0LZ6B.js b/apps/admin-panel/dist/assets/create-Coyb76zV.js similarity index 95% rename from apps/admin-panel/dist/assets/create-BcV0LZ6B.js rename to apps/admin-panel/dist/assets/create-Coyb76zV.js index 27c67ad..59547f3 100644 --- a/apps/admin-panel/dist/assets/create-BcV0LZ6B.js +++ b/apps/admin-panel/dist/assets/create-Coyb76zV.js @@ -1 +1 @@ -import{d as z,u as K,a,w as t,m as x,r as u,o as l,c as d,H as M,p as O,f,i as p,h as P,z as A,y as D,G as B,_ as E}from"./index-DajPj7Ec.js";import{a as G,b as _,X as H}from"./model-CR-NjhTP.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";function I(){const r=new G("admin/misc/sms/list","لیست پیامک ها");return r.add(new _("id","شماره")),r.add(new _("text","متن پیامک").filterKey("body").filterText()),r.add(new _("mobile","گیرندگان").noSort()),r.add(new _("sent_count","تعداد").noSort()),r.add(new _("sender","ارسال کننده").noSort()),r.add(new _("caj","تاریخ").filterKey("createdAt").filterDate().noSort()),r}const $={class:"grid-2"},q=z({__name:"create",setup(r){const N=K(),c=y=>!!N.hasPermission(y),R=I(),g=x(null),k=x(!1),s=x(-1),m=x(""),b=x(""),o=A({});async function S(){var y,e,i;if(Object.keys(o).forEach(n=>delete o[n]),b.value||(o.text="متن پیامک الزامی است"),(s.value===-1||s.value===9)&&!m.value&&(o.mobile="شماره موبایل الزامی است"),!Object.keys(o).length)try{k.value=!0;const{data:n}=await D.post("sms",{type:s.value,mobile:m.value,text:b.value});B.success(`پیامک برای ${n.sentCount} شماره ثبت شد`),b.value="",m.value="",(y=g.value)==null||y.fetch()}catch(n){B.error(((i=(e=n==null?void 0:n.response)==null?void 0:e.data)==null?void 0:i.message)??"خطا در ارسال پیامک")}finally{k.value=!1}}return(y,e)=>{const i=u("a-select-option"),n=u("a-select"),w=u("a-form-item"),C=u("a-textarea"),T=u("a-input"),V=u("a-button"),X=u("a-form"),U=u("a-card"),j=u("a-spin");return l(),a(j,{spinning:k.value,class:"page-card"},{default:t(()=>[d(U,{title:"ارسال پیامک"},{default:t(()=>[d(X,{layout:"vertical",onSubmit:M(S,["prevent"])},{default:t(()=>[O("div",$,[d(w,{label:"ارسال برای"},{default:t(()=>[d(n,{value:s.value,"onUpdate:value":e[0]||(e[0]=v=>s.value=v)},{default:t(()=>[c("sms.create.single")?(l(),a(i,{key:0,value:-1},{default:t(()=>[...e[4]||(e[4]=[f(" شماره موبایل ",-1)])]),_:1})):p("",!0),c("sms.create.all")?(l(),a(i,{key:1,value:0},{default:t(()=>[...e[5]||(e[5]=[f(" همه مشتریان ",-1)])]),_:1})):p("",!0),c("sms.create.reagent")?(l(),a(i,{key:2,value:1},{default:t(()=>[...e[6]||(e[6]=[f(" کارشناسان فروش ",-1)])]),_:1})):p("",!0),c("sms.create.omde")?(l(),a(i,{key:3,value:2},{default:t(()=>[...e[7]||(e[7]=[f(" مشتریان عمده ",-1)])]),_:1})):p("",!0),c("sms.create.multiple")?(l(),a(i,{key:4,value:9},{default:t(()=>[...e[8]||(e[8]=[f(" شماره های موبایل ",-1)])]),_:1})):p("",!0)]),_:1},8,["value"])]),_:1}),s.value===-1||s.value===9?(l(),a(w,{key:0,label:s.value===9?"شماره های موبایل":"شماره موبایل","validate-status":o.mobile?"error":"",help:o.mobile},{default:t(()=>[s.value===9?(l(),a(C,{key:0,value:m.value,"onUpdate:value":e[1]||(e[1]=v=>m.value=v),"auto-size":{minRows:2,maxRows:6},placeholder:"هر شماره در یک خط"},null,8,["value"])):(l(),a(T,{key:1,value:m.value,"onUpdate:value":e[2]||(e[2]=v=>m.value=v)},null,8,["value"]))]),_:1},8,["label","validate-status","help"])):p("",!0)]),d(w,{label:"متن پیامک","validate-status":o.text?"error":"",help:o.text},{default:t(()=>[d(C,{value:b.value,"onUpdate:value":e[3]||(e[3]=v=>b.value=v),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),d(V,{type:"primary",class:"form-submit",onClick:S},{default:t(()=>[...e[9]||(e[9]=[f("ارسال",-1)])]),_:1})]),_:1})]),_:1}),c("sms.list")?(l(),a(U,{key:0,title:"لیست پیامک ها",class:"mt-4"},{default:t(()=>[d(H,{ref_key:"tbl",ref:g,model:P(R),"mobile-cards":""},null,8,["model"])]),_:1})):p("",!0)]),_:1},8,["spinning"])}}}),Y=E(q,[["__scopeId","data-v-11fdeec9"]]);export{Y as default}; +import{d as z,u as K,a,w as t,m as x,r as u,o as l,c as d,H as M,p as O,f,i as p,h as P,z as A,y as D,G as B,_ as E}from"./index-eLNLLYwC.js";import{a as G,b as _,X as H}from"./model-btNVLLyF.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";function I(){const r=new G("admin/misc/sms/list","لیست پیامک ها");return r.add(new _("id","شماره")),r.add(new _("text","متن پیامک").filterKey("body").filterText()),r.add(new _("mobile","گیرندگان").noSort()),r.add(new _("sent_count","تعداد").noSort()),r.add(new _("sender","ارسال کننده").noSort()),r.add(new _("caj","تاریخ").filterKey("createdAt").filterDate().noSort()),r}const $={class:"grid-2"},q=z({__name:"create",setup(r){const N=K(),c=y=>!!N.hasPermission(y),R=I(),g=x(null),k=x(!1),s=x(-1),m=x(""),b=x(""),o=A({});async function S(){var y,e,i;if(Object.keys(o).forEach(n=>delete o[n]),b.value||(o.text="متن پیامک الزامی است"),(s.value===-1||s.value===9)&&!m.value&&(o.mobile="شماره موبایل الزامی است"),!Object.keys(o).length)try{k.value=!0;const{data:n}=await D.post("sms",{type:s.value,mobile:m.value,text:b.value});B.success(`پیامک برای ${n.sentCount} شماره ثبت شد`),b.value="",m.value="",(y=g.value)==null||y.fetch()}catch(n){B.error(((i=(e=n==null?void 0:n.response)==null?void 0:e.data)==null?void 0:i.message)??"خطا در ارسال پیامک")}finally{k.value=!1}}return(y,e)=>{const i=u("a-select-option"),n=u("a-select"),w=u("a-form-item"),C=u("a-textarea"),T=u("a-input"),V=u("a-button"),X=u("a-form"),U=u("a-card"),j=u("a-spin");return l(),a(j,{spinning:k.value,class:"page-card"},{default:t(()=>[d(U,{title:"ارسال پیامک"},{default:t(()=>[d(X,{layout:"vertical",onSubmit:M(S,["prevent"])},{default:t(()=>[O("div",$,[d(w,{label:"ارسال برای"},{default:t(()=>[d(n,{value:s.value,"onUpdate:value":e[0]||(e[0]=v=>s.value=v)},{default:t(()=>[c("sms.create.single")?(l(),a(i,{key:0,value:-1},{default:t(()=>[...e[4]||(e[4]=[f(" شماره موبایل ",-1)])]),_:1})):p("",!0),c("sms.create.all")?(l(),a(i,{key:1,value:0},{default:t(()=>[...e[5]||(e[5]=[f(" همه مشتریان ",-1)])]),_:1})):p("",!0),c("sms.create.reagent")?(l(),a(i,{key:2,value:1},{default:t(()=>[...e[6]||(e[6]=[f(" کارشناسان فروش ",-1)])]),_:1})):p("",!0),c("sms.create.omde")?(l(),a(i,{key:3,value:2},{default:t(()=>[...e[7]||(e[7]=[f(" مشتریان عمده ",-1)])]),_:1})):p("",!0),c("sms.create.multiple")?(l(),a(i,{key:4,value:9},{default:t(()=>[...e[8]||(e[8]=[f(" شماره های موبایل ",-1)])]),_:1})):p("",!0)]),_:1},8,["value"])]),_:1}),s.value===-1||s.value===9?(l(),a(w,{key:0,label:s.value===9?"شماره های موبایل":"شماره موبایل","validate-status":o.mobile?"error":"",help:o.mobile},{default:t(()=>[s.value===9?(l(),a(C,{key:0,value:m.value,"onUpdate:value":e[1]||(e[1]=v=>m.value=v),"auto-size":{minRows:2,maxRows:6},placeholder:"هر شماره در یک خط"},null,8,["value"])):(l(),a(T,{key:1,value:m.value,"onUpdate:value":e[2]||(e[2]=v=>m.value=v)},null,8,["value"]))]),_:1},8,["label","validate-status","help"])):p("",!0)]),d(w,{label:"متن پیامک","validate-status":o.text?"error":"",help:o.text},{default:t(()=>[d(C,{value:b.value,"onUpdate:value":e[3]||(e[3]=v=>b.value=v),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),d(V,{type:"primary",class:"form-submit",onClick:S},{default:t(()=>[...e[9]||(e[9]=[f("ارسال",-1)])]),_:1})]),_:1})]),_:1}),c("sms.list")?(l(),a(U,{key:0,title:"لیست پیامک ها",class:"mt-4"},{default:t(()=>[d(H,{ref_key:"tbl",ref:g,model:P(R),"mobile-cards":""},null,8,["model"])]),_:1})):p("",!0)]),_:1},8,["spinning"])}}}),Y=E(q,[["__scopeId","data-v-11fdeec9"]]);export{Y as default}; diff --git a/apps/admin-panel/dist/assets/create-BLo5130R.js b/apps/admin-panel/dist/assets/create-ucx1HuF8.js similarity index 96% rename from apps/admin-panel/dist/assets/create-BLo5130R.js rename to apps/admin-panel/dist/assets/create-ucx1HuF8.js index 3658078..6a5340c 100644 --- a/apps/admin-panel/dist/assets/create-BLo5130R.js +++ b/apps/admin-panel/dist/assets/create-ucx1HuF8.js @@ -1 +1 @@ -import{d as k,a as C,w as o,m as B,r as l,o as N,c as e,H as U,p as V,f as r,z as m,y as j,G as c}from"./index-DajPj7Ec.js";const z={class:"grid-2"},S=k({__name:"create",setup(O){const u=B(!1),a=m({title:"",text:"",type:0}),n=m({});async function f(){var p,t;if(Object.keys(n).forEach(s=>delete n[s]),a.title||(n.title="عنوان الزامی است"),a.text||(n.text="متن پیام الزامی است"),!Object.keys(n).length)try{u.value=!0;const{data:s}=await j.post("notify",a);c.success("نوتیفیکیشن ارسال شد"),a.title="",a.text=""}catch(s){c.error(((t=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:t.message)??"خطا در ارسال")}finally{u.value=!1}}return(p,t)=>{const s=l("a-input"),d=l("a-form-item"),_=l("a-select-option"),v=l("a-select"),x=l("a-textarea"),y=l("a-button"),b=l("a-form"),g=l("a-card"),w=l("a-spin");return N(),C(w,{spinning:u.value},{default:o(()=>[e(g,{title:"ارسال نوتیفیکیشن",class:"page-card"},{default:o(()=>[e(b,{layout:"vertical",onSubmit:U(f,["prevent"])},{default:o(()=>[V("div",z,[e(d,{label:"عنوان","validate-status":n.title?"error":"",help:n.title},{default:o(()=>[e(s,{value:a.title,"onUpdate:value":t[0]||(t[0]=i=>a.title=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),e(d,{label:"نوع کاربر"},{default:o(()=>[e(v,{value:a.type,"onUpdate:value":t[1]||(t[1]=i=>a.type=i)},{default:o(()=>[e(_,{value:0},{default:o(()=>[...t[3]||(t[3]=[r("همه مشتریان",-1)])]),_:1}),e(_,{value:2},{default:o(()=>[...t[4]||(t[4]=[r("مشتریان عمده",-1)])]),_:1}),e(_,{value:1},{default:o(()=>[...t[5]||(t[5]=[r("کارشناسان فروش",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),e(d,{label:"متن پیام","validate-status":n.text?"error":"",help:n.text},{default:o(()=>[e(x,{value:a.text,"onUpdate:value":t[2]||(t[2]=i=>a.text=i),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),e(y,{type:"primary",class:"form-submit",onClick:f},{default:o(()=>[...t[6]||(t[6]=[r("ارسال",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])}}});export{S as default}; +import{d as k,a as C,w as o,m as B,r as l,o as N,c as e,H as U,p as V,f as r,z as m,y as j,G as c}from"./index-eLNLLYwC.js";const z={class:"grid-2"},S=k({__name:"create",setup(O){const u=B(!1),a=m({title:"",text:"",type:0}),n=m({});async function f(){var p,t;if(Object.keys(n).forEach(s=>delete n[s]),a.title||(n.title="عنوان الزامی است"),a.text||(n.text="متن پیام الزامی است"),!Object.keys(n).length)try{u.value=!0;const{data:s}=await j.post("notify",a);c.success("نوتیفیکیشن ارسال شد"),a.title="",a.text=""}catch(s){c.error(((t=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:t.message)??"خطا در ارسال")}finally{u.value=!1}}return(p,t)=>{const s=l("a-input"),d=l("a-form-item"),_=l("a-select-option"),v=l("a-select"),x=l("a-textarea"),y=l("a-button"),b=l("a-form"),g=l("a-card"),w=l("a-spin");return N(),C(w,{spinning:u.value},{default:o(()=>[e(g,{title:"ارسال نوتیفیکیشن",class:"page-card"},{default:o(()=>[e(b,{layout:"vertical",onSubmit:U(f,["prevent"])},{default:o(()=>[V("div",z,[e(d,{label:"عنوان","validate-status":n.title?"error":"",help:n.title},{default:o(()=>[e(s,{value:a.title,"onUpdate:value":t[0]||(t[0]=i=>a.title=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),e(d,{label:"نوع کاربر"},{default:o(()=>[e(v,{value:a.type,"onUpdate:value":t[1]||(t[1]=i=>a.type=i)},{default:o(()=>[e(_,{value:0},{default:o(()=>[...t[3]||(t[3]=[r("همه مشتریان",-1)])]),_:1}),e(_,{value:2},{default:o(()=>[...t[4]||(t[4]=[r("مشتریان عمده",-1)])]),_:1}),e(_,{value:1},{default:o(()=>[...t[5]||(t[5]=[r("کارشناسان فروش",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),e(d,{label:"متن پیام","validate-status":n.text?"error":"",help:n.text},{default:o(()=>[e(x,{value:a.text,"onUpdate:value":t[2]||(t[2]=i=>a.text=i),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),e(y,{type:"primary",class:"form-submit",onClick:f},{default:o(()=>[...t[6]||(t[6]=[r("ارسال",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])}}});export{S as default}; diff --git a/apps/admin-panel/dist/assets/createCity-CbhYJB0l.js b/apps/admin-panel/dist/assets/createCity-CbhYJB0l.js deleted file mode 100644 index 7b45885..0000000 --- a/apps/admin-panel/dist/assets/createCity-CbhYJB0l.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./createCity.vue_vue_type_script_setup_true_lang-JXoB9ElE.js";import"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/createCity-pjdKbfGT.js b/apps/admin-panel/dist/assets/createCity-pjdKbfGT.js new file mode 100644 index 0000000..3aacdf3 --- /dev/null +++ b/apps/admin-panel/dist/assets/createCity-pjdKbfGT.js @@ -0,0 +1 @@ +import{_ as o}from"./createCity.vue_vue_type_script_setup_true_lang-DsfElQum.js";import"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-JXoB9ElE.js b/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-DsfElQum.js similarity index 95% rename from apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-JXoB9ElE.js rename to apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-DsfElQum.js index 7fc47a7..42f3dc0 100644 --- a/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-JXoB9ElE.js +++ b/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-DsfElQum.js @@ -1 +1 @@ -import{d as R,n as z,x as E,a as y,w as n,m as g,y as w,r as p,o as k,p as U,c as a,f as G,H,z as C,G as B,l as T,k as h}from"./index-DajPj7Ec.js";import{_ as q}from"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";const A={class:"grid-2"},D={class:"grid-2"},K=R({__name:"createCity",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(c,{emit:N}){const _=c,b=N,m=_.open!==void 0;h();const S=T(),r=g(!1),t=C({title:"",parent:void 0,percent:null,percent_aux:null}),f=g([]);async function x(){try{const{data:s}=await w.post("cities/list");f.value=s.rows??[]}catch(s){console.log(s)}}m?z(()=>_.open,s=>s&&x(),{immediate:!0}):E(x);const u=C({});async function v(){var s,e;if(Object.keys(u).forEach(o=>delete u[o]),!t.title){u.title="لطفا مقدار را وارد کنید";return}try{r.value=!0,await w.post("cities",{...t,parent:t.parent??null}),B.info("اطلاعات با موفقیت به ثبت رسید."),m?(Object.assign(t,{title:"",percent:null,percent_aux:null}),b("success"),b("update:open",!1)):S.push("/city/list")}catch(o){B.error(((e=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{r.value=!1}}return(s,e)=>{const o=p("a-input"),i=p("a-form-item"),d=p("a-input-number"),V=p("a-button"),$=p("a-card"),j=p("a-form"),O=p("a-spin");return m?(k(),y(q,{key:0,open:!!c.open,id:c.id,"add-title":"افزودن شهر","edit-title":"افزودن شهر",loading:r.value,submitting:r.value,width:"sm","onUpdate:open":e[4]||(e[4]=l=>s.$emit("update:open",l)),onSubmit:v},{default:n(()=>[U("div",A,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[0]||(e[0]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[1]||(e[1]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[2]||(e[2]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[3]||(e[3]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})])]),_:1},8,["open","id","loading","submitting"])):(k(),y(O,{key:1,spinning:r.value},{default:n(()=>[a(j,{layout:"vertical",onSubmit:H(v,["prevent"])},{default:n(()=>[a($,{title:"افزودن شهر",class:"page-card"},{default:n(()=>[U("div",D,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[5]||(e[5]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[6]||(e[6]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[7]||(e[7]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[8]||(e[8]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})]),a(V,{type:"primary",class:"form-submit",onClick:v},{default:n(()=>[...e[9]||(e[9]=[G("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{K as _}; +import{d as R,n as z,x as E,a as y,w as n,m as g,y as w,r as p,o as k,p as U,c as a,f as G,H,z as C,G as B,l as T,k as h}from"./index-eLNLLYwC.js";import{_ as q}from"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";const A={class:"grid-2"},D={class:"grid-2"},K=R({__name:"createCity",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(c,{emit:N}){const _=c,b=N,m=_.open!==void 0;h();const S=T(),r=g(!1),t=C({title:"",parent:void 0,percent:null,percent_aux:null}),f=g([]);async function x(){try{const{data:s}=await w.post("cities/list");f.value=s.rows??[]}catch(s){console.log(s)}}m?z(()=>_.open,s=>s&&x(),{immediate:!0}):E(x);const u=C({});async function v(){var s,e;if(Object.keys(u).forEach(o=>delete u[o]),!t.title){u.title="لطفا مقدار را وارد کنید";return}try{r.value=!0,await w.post("cities",{...t,parent:t.parent??null}),B.info("اطلاعات با موفقیت به ثبت رسید."),m?(Object.assign(t,{title:"",percent:null,percent_aux:null}),b("success"),b("update:open",!1)):S.push("/city/list")}catch(o){B.error(((e=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{r.value=!1}}return(s,e)=>{const o=p("a-input"),i=p("a-form-item"),d=p("a-input-number"),V=p("a-button"),$=p("a-card"),j=p("a-form"),O=p("a-spin");return m?(k(),y(q,{key:0,open:!!c.open,id:c.id,"add-title":"افزودن شهر","edit-title":"افزودن شهر",loading:r.value,submitting:r.value,width:"sm","onUpdate:open":e[4]||(e[4]=l=>s.$emit("update:open",l)),onSubmit:v},{default:n(()=>[U("div",A,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[0]||(e[0]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[1]||(e[1]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[2]||(e[2]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[3]||(e[3]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})])]),_:1},8,["open","id","loading","submitting"])):(k(),y(O,{key:1,spinning:r.value},{default:n(()=>[a(j,{layout:"vertical",onSubmit:H(v,["prevent"])},{default:n(()=>[a($,{title:"افزودن شهر",class:"page-card"},{default:n(()=>[U("div",D,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[5]||(e[5]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[6]||(e[6]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[7]||(e[7]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[8]||(e[8]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})]),a(V,{type:"primary",class:"form-submit",onClick:v},{default:n(()=>[...e[9]||(e[9]=[G("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{K as _}; diff --git a/apps/admin-panel/dist/assets/filters-gmIfX3-G.js b/apps/admin-panel/dist/assets/filters-BMytoA2k.js similarity index 86% rename from apps/admin-panel/dist/assets/filters-gmIfX3-G.js rename to apps/admin-panel/dist/assets/filters-BMytoA2k.js index aa03867..2370e9e 100644 --- a/apps/admin-panel/dist/assets/filters-gmIfX3-G.js +++ b/apps/admin-panel/dist/assets/filters-BMytoA2k.js @@ -1 +1 @@ -import{m as t}from"./index-BAamWbCu.js";function e(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")+" تومان "}function i(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function f(r){return r&&t(r).format("jYYYY/jMM/jDD")}function o(r){return typeof r!="string"||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(r)?r:t(r).format("jYYYY/jM/jD-HH:mm")}function u(r){return r&&t(r).format("jYYYY/jMM/jDD - hh:mm:ss")}export{e as a,u as b,o as g,f as j,i as p}; +import{m as t}from"./index-CKaD48iT.js";function e(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")+" تومان "}function i(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function f(r){return r&&t(r).format("jYYYY/jMM/jDD")}function o(r){return typeof r!="string"||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(r)?r:t(r).format("jYYYY/jM/jD-HH:mm")}function u(r){return r&&t(r).format("jYYYY/jMM/jDD - hh:mm:ss")}export{e as a,u as b,o as g,f as j,i as p}; diff --git a/apps/admin-panel/dist/assets/icons-DiNnR1E8.js b/apps/admin-panel/dist/assets/icons-DaMkWfMK.js similarity index 95% rename from apps/admin-panel/dist/assets/icons-DiNnR1E8.js rename to apps/admin-panel/dist/assets/icons-DaMkWfMK.js index d36ca4d..823a65a 100644 --- a/apps/admin-panel/dist/assets/icons-DiNnR1E8.js +++ b/apps/admin-panel/dist/assets/icons-DaMkWfMK.js @@ -1 +1 @@ -import{c,I as l,S as j,$ as z,P as H,Q as B,W as w,E as $,D as M,a3 as C}from"./index-DajPj7Ec.js";import{S as x}from"./SettingOutlined-BBdK6RkP.js";import{S as _,U as A}from"./UnorderedListOutlined-B6W9NsW_.js";import{P as D}from"./PercentageOutlined-D8KYbn5o.js";import{D as E,U as L}from"./UserAddOutlined-tCWSfp_Y.js";import{C as N}from"./CreditCardOutlined-H5cAFLTI.js";import{A as U}from"./AppstoreOutlined-BPqrCmxh.js";import{S as G,T}from"./TeamOutlined-DPoMD9pK.js";import{U as F}from"./UserOutlined-CzruAWCH.js";import{C as q}from"./CameraOutlined-B6nXMt0y.js";var Q={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z"}}]},name:"bar-chart",theme:"outlined"};function p(r){for(var e=1;e>>0,s;for(s=0;s0)for(r=0;r>>0,s;for(s=0;s0)for(r=0;r=0;return(i?r?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+s}var pt=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Ve=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Yt={},pe={};function M(e,t,r,s){var a=s;typeof s=="string"&&(a=function(){return this[s]()}),e&&(pe[e]=a),t&&(pe[t[0]]=function(){return B(a.apply(this,arguments),t[1],t[2])}),r&&(pe[r]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)})}function ps(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Ys(e){var t=e.match(pt),r,s;for(r=0,s=t.length;r=0&&Ve.test(e);)e=e.replace(Ve,s),Ve.lastIndex=0,r-=1;return e}var ws={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function gs(e){var t=this._longDateFormat[e],r=this._longDateFormat[e.toUpperCase()];return t||!r?t:(this._longDateFormat[e]=r.match(pt).map(function(s){return s==="MMMM"||s==="MM"||s==="DD"||s==="dddd"?s.slice(1):s}).join(""),this._longDateFormat[e])}var ks="Invalid date";function Ss(){return this._invalidDate}var vs="%d",Os=/\d{1,2}/;function Ts(e){return this._ordinal.replace("%d",e)}var js={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function bs(e,t,r,s){var a=this._relativeTime[r];return q(a)?a(e,t,r,s):a.replace(/%d/i,e)}function xs(e,t){var r=this._relativeTime[e>0?"future":"past"];return q(r)?r(t):r.replace(/%s/i,t)}var ar={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function V(e){return typeof e=="string"?ar[e]||ar[e.toLowerCase()]:void 0}function wt(e){var t={},r,s;for(s in e)c(e,s)&&(r=V(s),r&&(t[r]=e[s]));return t}var Ps={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function Ls(e){var t=[],r;for(r in e)c(e,r)&&t.push({unit:r,priority:Ps[r]});return t.sort(function(s,a){return s.priority-a.priority}),t}var nr=/\d/,H=/\d\d/,ir=/\d{3}/,gt=/\d{4}/,ze=/[+-]?\d{6}/,j=/\d\d?/,or=/\d\d\d\d?/,lr=/\d\d\d\d\d\d?/,Ze=/\d{1,3}/,kt=/\d{1,4}/,$e=/[+-]?\d{1,6}/,Ye=/\d+/,Je=/[+-]?\d+/,Ns=/Z|[+-]\d\d:?\d\d/gi,qe=/Z|[+-]\d\d(?::?\d\d)?/gi,Fs=/[+-]?\d+(\.\d{1,3})?/,be=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,we=/^[1-9]\d?/,St=/^([1-9]\d|\d)/,Be;Be={};function y(e,t,r){Be[e]=q(t)?t:function(s,a){return s&&r?r:t}}function Ws(e,t){return c(Be,e)?Be[e](t._strict,t._locale):new RegExp(Rs(e))}function Rs(e){return K(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,r,s,a,i){return r||s||a||i}))}function K(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function G(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var t=+e,r=0;return t!==0&&isFinite(t)&&(r=G(t)),r}var vt={};function O(e,t){var r,s=t,a;for(typeof e=="string"&&(e=[e]),C(t)&&(s=function(i,d){d[t]=g(i)}),a=e.length,r=0;r68?1900:2e3)};var ur=ge("FullYear",!0);function Hs(){return Qe(this.year())}function ge(e,t){return function(r){return r!=null?(dr(this,e,r),l.updateOffset(this,t),this):Le(this,e)}}function Le(e,t){if(!e.isValid())return NaN;var r=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?r.getUTCMilliseconds():r.getMilliseconds();case"Seconds":return s?r.getUTCSeconds():r.getSeconds();case"Minutes":return s?r.getUTCMinutes():r.getMinutes();case"Hours":return s?r.getUTCHours():r.getHours();case"Date":return s?r.getUTCDate():r.getDate();case"Day":return s?r.getUTCDay():r.getDay();case"Month":return s?r.getUTCMonth():r.getMonth();case"FullYear":return s?r.getUTCFullYear():r.getFullYear();default:return NaN}}function dr(e,t,r){var s,a,i,d,m;if(!(!e.isValid()||isNaN(r))){switch(s=e._d,a=e._isUTC,t){case"Milliseconds":return void(a?s.setUTCMilliseconds(r):s.setMilliseconds(r));case"Seconds":return void(a?s.setUTCSeconds(r):s.setSeconds(r));case"Minutes":return void(a?s.setUTCMinutes(r):s.setMinutes(r));case"Hours":return void(a?s.setUTCHours(r):s.setHours(r));case"Date":return void(a?s.setUTCDate(r):s.setDate(r));case"FullYear":break;default:return}i=r,d=e.month(),m=e.date(),m=m===29&&d===1&&!Qe(i)?28:m,a?s.setUTCFullYear(i,d,m):s.setFullYear(i,d,m)}}function As(e){return e=V(e),q(this[e])?this[e]():this}function Es(e,t){if(typeof e=="object"){e=wt(e);var r=Ls(e),s,a=r.length;for(s=0;s=0?(m=new Date(e+400,t,r,s,a,i,d),isFinite(m.getFullYear())&&m.setFullYear(e)):m=new Date(e,t,r,s,a,i,d),m}function Ne(e){var t,r;return e<100&&e>=0?(r=Array.prototype.slice.call(arguments),r[0]=e+400,t=new Date(Date.UTC.apply(null,r)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Xe(e,t,r){var s=7+t-r,a=(7+Ne(e,0,s).getUTCDay()-t)%7;return-a+s-1}function yr(e,t,r,s,a){var i=(7+r-s)%7,d=Xe(e,s,a),m=1+7*(t-1)+i+d,D,k;return m<=0?(D=e-1,k=Pe(D)+m):m>Pe(e)?(D=e+1,k=m-Pe(e)):(D=e,k=m),{year:D,dayOfYear:k}}function Fe(e,t,r){var s=Xe(e.year(),t,r),a=Math.floor((e.dayOfYear()-s-1)/7)+1,i,d;return a<1?(d=e.year()-1,i=a+re(d,t,r)):a>re(e.year(),t,r)?(i=a-re(e.year(),t,r),d=e.year()+1):(d=e.year(),i=a),{week:i,year:d}}function re(e,t,r){var s=Xe(e,t,r),a=Xe(e+1,t,r);return(Pe(e)-s+a)/7}M("w",["ww",2],"wo","week"),M("W",["WW",2],"Wo","isoWeek"),y("w",j,we),y("ww",j,H),y("W",j,we),y("WW",j,H),xe(["w","ww","W","WW"],function(e,t,r,s){t[s.substr(0,1)]=g(e)});function ta(e){return Fe(e,this._week.dow,this._week.doy).week}var ra={dow:0,doy:6};function sa(){return this._week.dow}function aa(){return this._week.doy}function na(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function ia(e){var t=Fe(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}M("d",0,"do","day"),M("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),M("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),M("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),M("e",0,0,"weekday"),M("E",0,0,"isoWeekday"),y("d",j),y("e",j),y("E",j),y("dd",function(e,t){return t.weekdaysMinRegex(e)}),y("ddd",function(e,t){return t.weekdaysShortRegex(e)}),y("dddd",function(e,t){return t.weekdaysRegex(e)}),xe(["dd","ddd","dddd"],function(e,t,r,s){var a=r._locale.weekdaysParse(e,s,r._strict);a!=null?t.d=a:w(r).invalidWeekday=e}),xe(["d","e","E"],function(e,t,r,s){t[s]=g(e)});function oa(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function la(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Tt(e,t){return e.slice(t,7).concat(e.slice(0,t))}var ua="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Mr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),da="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),fa=be,ha=be,ca=be;function _a(e,t){var r=_(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?Tt(r,this._week.dow):e?r[e.day()]:r}function ma(e){return e===!0?Tt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function ya(e){return e===!0?Tt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Ma(e,t,r){var s,a,i,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)i=J([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(i,"").toLocaleLowerCase();return r?t==="dddd"?(a=N.call(this._weekdaysParse,d),a!==-1?a:null):t==="ddd"?(a=N.call(this._shortWeekdaysParse,d),a!==-1?a:null):(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null):t==="dddd"?(a=N.call(this._weekdaysParse,d),a!==-1||(a=N.call(this._shortWeekdaysParse,d),a!==-1)?a:(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null)):t==="ddd"?(a=N.call(this._shortWeekdaysParse,d),a!==-1||(a=N.call(this._weekdaysParse,d),a!==-1)?a:(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null)):(a=N.call(this._minWeekdaysParse,d),a!==-1||(a=N.call(this._weekdaysParse,d),a!==-1)?a:(a=N.call(this._shortWeekdaysParse,d),a!==-1?a:null))}function Da(e,t,r){var s,a,i;if(this._weekdaysParseExact)return Ma.call(this,e,t,r);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(a=J([2e3,1]).day(s),r&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),r&&t==="dddd"&&this._fullWeekdaysParse[s].test(e))return s;if(r&&t==="ddd"&&this._shortWeekdaysParse[s].test(e))return s;if(r&&t==="dd"&&this._minWeekdaysParse[s].test(e))return s;if(!r&&this._weekdaysParse[s].test(e))return s}}function pa(e){if(!this.isValid())return e!=null?this:NaN;var t=Le(this,"Day");return e!=null?(e=oa(e,this.localeData()),this.add(e-t,"d")):t}function Ya(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function wa(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=la(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function ga(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||jt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=fa),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function ka(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||jt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ha),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Sa(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||jt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ca),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function jt(){function e(U,oe){return oe.length-U.length}var t=[],r=[],s=[],a=[],i,d,m,D,k;for(i=0;i<7;i++)d=J([2e3,1]).day(i),m=K(this.weekdaysMin(d,"")),D=K(this.weekdaysShort(d,"")),k=K(this.weekdays(d,"")),t.push(m),r.push(D),s.push(k),a.push(m),a.push(D),a.push(k);t.sort(e),r.sort(e),s.sort(e),a.sort(e),this._weekdaysRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function bt(){return this.hours()%12||12}function va(){return this.hours()||24}M("H",["HH",2],0,"hour"),M("h",["hh",2],0,bt),M("k",["kk",2],0,va),M("hmm",0,0,function(){return""+bt.apply(this)+B(this.minutes(),2)}),M("hmmss",0,0,function(){return""+bt.apply(this)+B(this.minutes(),2)+B(this.seconds(),2)}),M("Hmm",0,0,function(){return""+this.hours()+B(this.minutes(),2)}),M("Hmmss",0,0,function(){return""+this.hours()+B(this.minutes(),2)+B(this.seconds(),2)});function Dr(e,t){M(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}Dr("a",!0),Dr("A",!1);function pr(e,t){return t._meridiemParse}y("a",pr),y("A",pr),y("H",j,St),y("h",j,we),y("k",j,we),y("HH",j,H),y("hh",j,H),y("kk",j,H),y("hmm",or),y("hmmss",lr),y("Hmm",or),y("Hmmss",lr),O(["H","HH"],W),O(["k","kk"],function(e,t,r){var s=g(e);t[W]=s===24?0:s}),O(["a","A"],function(e,t,r){r._isPm=r._locale.isPM(e),r._meridiem=e}),O(["h","hh"],function(e,t,r){t[W]=g(e),w(r).bigHour=!0}),O("hmm",function(e,t,r){var s=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s)),w(r).bigHour=!0}),O("hmmss",function(e,t,r){var s=e.length-4,a=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s,2)),t[te]=g(e.substr(a)),w(r).bigHour=!0}),O("Hmm",function(e,t,r){var s=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s))}),O("Hmmss",function(e,t,r){var s=e.length-4,a=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s,2)),t[te]=g(e.substr(a))});function Oa(e){return(e+"").toLowerCase().charAt(0)==="p"}var Ta=/[ap]\.?m?\.?/i,ja=ge("Hours",!0);function ba(e,t,r){return e>11?r?"pm":"PM":r?"am":"AM"}var Yr={calendar:Ms,longDateFormat:ws,invalidDate:ks,ordinal:vs,dayOfMonthOrdinalParse:Os,relativeTime:js,months:Gs,monthsShort:fr,week:ra,weekdays:ua,weekdaysMin:da,weekdaysShort:Mr,meridiemParse:Ta},P={},We={},Re;function xa(e,t){var r,s=Math.min(e.length,t.length);for(r=0;r0;){if(a=Ke(i.slice(0,r).join("-")),a)return a;if(s&&s.length>=r&&xa(i,s)>=r-1)break;r--}t++}return Re}function La(e){return!!(e&&e.match("^[^/\\\\]*$"))}function Ke(e){var t=null,r;if(P[e]===void 0&&n&&n.exports&&La(e))try{t=Re._abbr,r=Do,r("./locale/"+e),de(t)}catch{P[e]=null}return P[e]}function de(e,t){var r;return e&&(F(t)?r=se(e):r=xt(e,t),r?Re=r:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Re._abbr}function xt(e,t){if(t!==null){var r,s=Yr;if(t.abbr=e,P[e]!=null)rr("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=P[e]._config;else if(t.parentLocale!=null)if(P[t.parentLocale]!=null)s=P[t.parentLocale]._config;else if(r=Ke(t.parentLocale),r!=null)s=r._config;else return We[t.parentLocale]||(We[t.parentLocale]=[]),We[t.parentLocale].push({name:e,config:t}),null;return P[e]=new Mt(yt(s,t)),We[e]&&We[e].forEach(function(a){xt(a.name,a.config)}),de(e),P[e]}else return delete P[e],null}function Na(e,t){if(t!=null){var r,s,a=Yr;P[e]!=null&&P[e].parentLocale!=null?P[e].set(yt(P[e]._config,t)):(s=Ke(e),s!=null&&(a=s._config),t=yt(a,t),s==null&&(t.abbr=e),r=new Mt(t),r.parentLocale=P[e],P[e]=r),de(e)}else P[e]!=null&&(P[e].parentLocale!=null?(P[e]=P[e].parentLocale,e===de()&&de(e)):P[e]!=null&&delete P[e]);return P[e]}function se(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Re;if(!_(e)){if(t=Ke(e),t)return t;e=[e]}return Pa(e)}function Fa(){return Dt(P)}function Pt(e){var t,r=e._a;return r&&w(e).overflow===-2&&(t=r[ee]<0||r[ee]>11?ee:r[Q]<1||r[Q]>Ot(r[R],r[ee])?Q:r[W]<0||r[W]>24||r[W]===24&&(r[Z]!==0||r[te]!==0||r[ye]!==0)?W:r[Z]<0||r[Z]>59?Z:r[te]<0||r[te]>59?te:r[ye]<0||r[ye]>999?ye:-1,w(e)._overflowDayOfYear&&(tQ)&&(t=Q),w(e)._overflowWeeks&&t===-1&&(t=Us),w(e)._overflowWeekday&&t===-1&&(t=Is),w(e).overflow=t),e}var Wa=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ra=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ca=/Z|[+-]\d\d(?::?\d\d)?/,et=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Lt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ua=/^\/?Date\((-?\d+)/i,Ia=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Ha={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function gr(e){var t,r,s=e._i,a=Wa.exec(s)||Ra.exec(s),i,d,m,D,k=et.length,U=Lt.length;if(a){for(w(e).iso=!0,t=0,r=k;tPe(d)||e._dayOfYear===0)&&(w(e)._overflowDayOfYear=!0),r=Ne(d,0,e._dayOfYear),e._a[ee]=r.getUTCMonth(),e._a[Q]=r.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=s[t]=a[t];for(;t<7;t++)e._a[t]=s[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[W]===24&&e._a[Z]===0&&e._a[te]===0&&e._a[ye]===0&&(e._nextDay=!0,e._a[W]=0),e._d=(e._useUTC?Ne:ea).apply(null,s),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[W]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==i&&(w(e).weekdayMismatch=!0)}}function Ja(e){var t,r,s,a,i,d,m,D,k;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(i=1,d=4,r=ke(t.GG,e._a[R],Fe(b(),1,4).year),s=ke(t.W,1),a=ke(t.E,1),(a<1||a>7)&&(D=!0)):(i=e._locale._week.dow,d=e._locale._week.doy,k=Fe(b(),i,d),r=ke(t.gg,e._a[R],k.year),s=ke(t.w,k.week),t.d!=null?(a=t.d,(a<0||a>6)&&(D=!0)):t.e!=null?(a=t.e+i,(t.e<0||t.e>6)&&(D=!0)):a=i),s<1||s>re(r,i,d)?w(e)._overflowWeeks=!0:D!=null?w(e)._overflowWeekday=!0:(m=yr(r,s,a,i,d),e._a[R]=m.year,e._dayOfYear=m.dayOfYear)}l.ISO_8601=function(){},l.RFC_2822=function(){};function Ft(e){if(e._f===l.ISO_8601){gr(e);return}if(e._f===l.RFC_2822){kr(e);return}e._a=[],w(e).empty=!0;var t=""+e._i,r,s,a,i,d,m=t.length,D=0,k,U;for(a=sr(e._f,e._locale).match(pt)||[],U=a.length,r=0;r0&&w(e).unusedInput.push(d),t=t.slice(t.indexOf(s)+s.length),D+=s.length),pe[i]?(s?w(e).empty=!1:w(e).unusedTokens.push(i),Cs(i,s,e)):e._strict&&!s&&w(e).unusedTokens.push(i);w(e).charsLeftOver=m-D,t.length>0&&w(e).unusedInput.push(t),e._a[W]<=12&&w(e).bigHour===!0&&e._a[W]>0&&(w(e).bigHour=void 0),w(e).parsedDateParts=e._a.slice(0),w(e).meridiem=e._meridiem,e._a[W]=qa(e._locale,e._a[W],e._meridiem),k=w(e).era,k!==null&&(e._a[R]=e._locale.erasConvertYear(k,e._a[R])),Nt(e),Pt(e)}function qa(e,t,r){var s;return r==null?t:e.meridiemHour!=null?e.meridiemHour(t,r):(e.isPM!=null&&(s=e.isPM(r),s&&t<12&&(t+=12),!s&&t===12&&(t=0)),t)}function Ba(e){var t,r,s,a,i,d,m=!1,D=e._f.length;if(D===0){w(e).invalidFormat=!0,e._d=new Date(NaN);return}for(a=0;athis?this:e:Ee()});function Or(e,t){var r,s;if(t.length===1&&_(t[0])&&(t=t[0]),!t.length)return b();for(r=t[0],s=1;sthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Dn(){if(!F(this._isDSTShifted))return this._isDSTShifted;var e={},t;return mt(e,this),e=Sr(e),e._a?(t=e._isUTC?J(e._a):b(e._a),this._isDSTShifted=this.isValid()&&un(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function pn(){return this.isValid()?!this._isUTC:!1}function Yn(){return this.isValid()?this._isUTC:!1}function jr(){return this.isValid()?this._isUTC&&this._offset===0:!1}var wn=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,gn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function $(e,t){var r=e,s=null,a,i,d;return rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:C(e)||!isNaN(+e)?(r={},t?r[t]=+e:r.milliseconds=+e):(s=wn.exec(e))?(a=s[1]==="-"?-1:1,r={y:0,d:g(s[Q])*a,h:g(s[W])*a,m:g(s[Z])*a,s:g(s[te])*a,ms:g(Wt(s[ye]*1e3))*a}):(s=gn.exec(e))?(a=s[1]==="-"?-1:1,r={y:Me(s[2],a),M:Me(s[3],a),w:Me(s[4],a),d:Me(s[5],a),h:Me(s[6],a),m:Me(s[7],a),s:Me(s[8],a)}):r==null?r={}:typeof r=="object"&&("from"in r||"to"in r)&&(d=kn(b(r.from),b(r.to)),r={},r.ms=d.milliseconds,r.M=d.months),i=new tt(r),rt(e)&&c(e,"_locale")&&(i._locale=e._locale),rt(e)&&c(e,"_isValid")&&(i._isValid=e._isValid),i}$.fn=tt.prototype,$.invalid=ln;function Me(e,t){var r=e&&parseFloat(e.replace(",","."));return(isNaN(r)?0:r)*t}function br(e,t){var r={};return r.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(r.months,"M").isAfter(t)&&--r.months,r.milliseconds=+t-+e.clone().add(r.months,"M"),r}function kn(e,t){var r;return e.isValid()&&t.isValid()?(t=Ct(t,e),e.isBefore(t)?r=br(e,t):(r=br(t,e),r.milliseconds=-r.milliseconds,r.months=-r.months),r):{milliseconds:0,months:0}}function xr(e,t){return function(r,s){var a,i;return s!==null&&!isNaN(+s)&&(rr(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=r,r=s,s=i),a=$(r,s),Pr(this,a,e),this}}function Pr(e,t,r,s){var a=t._milliseconds,i=Wt(t._days),d=Wt(t._months);e.isValid()&&(s=s??!0,d&&cr(e,Le(e,"Month")+d*r),i&&dr(e,"Date",Le(e,"Date")+i*r),a&&e._d.setTime(e._d.valueOf()+a*r),s&&l.updateOffset(e,i||d))}var Sn=xr(1,"add"),vn=xr(-1,"subtract");function Lr(e){return typeof e=="string"||e instanceof String}function On(e){return z(e)||I(e)||Lr(e)||C(e)||jn(e)||Tn(e)||e===null||e===void 0}function Tn(e){var t=p(e)&&!T(e),r=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a,i,d=s.length;for(a=0;ar.valueOf():r.valueOf()9999?Ge(r,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):q(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ge(r,"Z")):Ge(r,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function En(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",r,s,a,i;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),r="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a="-MM-DD[T]HH:mm:ss.SSS",i=t+'[")]',this.format(r+s+a+i)}function Vn(e){e||(e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat);var t=Ge(this,e);return this.localeData().postformat(t)}function Gn(e,t){return this.isValid()&&(z(e)&&e.isValid()||b(e).isValid())?$({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function zn(e){return this.from(b(),e)}function Zn(e,t){return this.isValid()&&(z(e)&&e.isValid()||b(e).isValid())?$({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function $n(e){return this.to(b(),e)}function Nr(e){var t;return e===void 0?this._locale._abbr:(t=se(e),t!=null&&(this._locale=t),this)}var Fr=E("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function Wr(){return this._locale}var at=1e3,Se=60*at,nt=60*Se,Rr=(365*400+97)*24*nt;function ve(e,t){return(e%t+t)%t}function Cr(e,t,r){return e<100&&e>=0?new Date(e+400,t,r)-Rr:new Date(e,t,r).valueOf()}function Ur(e,t,r){return e<100&&e>=0?Date.UTC(e+400,t,r)-Rr:Date.UTC(e,t,r)}function Jn(e){var t,r;if(e=V(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(r=this._isUTC?Ur:Cr,e){case"year":t=r(this.year(),0,1);break;case"quarter":t=r(this.year(),this.month()-this.month()%3,1);break;case"month":t=r(this.year(),this.month(),1);break;case"week":t=r(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=r(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=r(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=ve(t+(this._isUTC?0:this.utcOffset()*Se),nt);break;case"minute":t=this._d.valueOf(),t-=ve(t,Se);break;case"second":t=this._d.valueOf(),t-=ve(t,at);break}return this._d.setTime(t),l.updateOffset(this,!0),this}function qn(e){var t,r;if(e=V(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(r=this._isUTC?Ur:Cr,e){case"year":t=r(this.year()+1,0,1)-1;break;case"quarter":t=r(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=r(this.year(),this.month()+1,1)-1;break;case"week":t=r(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=r(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=r(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=nt-ve(t+(this._isUTC?0:this.utcOffset()*Se),nt)-1;break;case"minute":t=this._d.valueOf(),t+=Se-ve(t,Se)-1;break;case"second":t=this._d.valueOf(),t+=at-ve(t,at)-1;break}return this._d.setTime(t),l.updateOffset(this,!0),this}function Bn(){return this._d.valueOf()-(this._offset||0)*6e4}function Qn(){return Math.floor(this.valueOf()/1e3)}function Xn(){return new Date(this.valueOf())}function Kn(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function ei(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function ti(){return this.isValid()?this.toISOString():null}function ri(){return ct(this)}function si(){return ue({},w(this))}function ai(){return w(this).overflow}function ni(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}M("N",0,0,"eraAbbr"),M("NN",0,0,"eraAbbr"),M("NNN",0,0,"eraAbbr"),M("NNNN",0,0,"eraName"),M("NNNNN",0,0,"eraNarrow"),M("y",["y",1],"yo","eraYear"),M("y",["yy",2],0,"eraYear"),M("y",["yyy",3],0,"eraYear"),M("y",["yyyy",4],0,"eraYear"),y("N",It),y("NN",It),y("NNN",It),y("NNNN",yi),y("NNNNN",Mi),O(["N","NN","NNN","NNNN","NNNNN"],function(e,t,r,s){var a=r._locale.erasParse(e,s,r._strict);a?w(r).era=a:w(r).invalidEra=e}),y("y",Ye),y("yy",Ye),y("yyy",Ye),y("yyyy",Ye),y("yo",Di),O(["y","yy","yyy","yyyy"],R),O(["yo"],function(e,t,r,s){var a;r._locale._eraYearOrdinalRegex&&(a=e.match(r._locale._eraYearOrdinalRegex)),r._locale.eraYearOrdinalParse?t[R]=r._locale.eraYearOrdinalParse(e,a):t[R]=parseInt(e,10)});function ii(e,t){var r,s,a,i=this._eras||se("en")._eras;for(r=0,s=i.length;r=0)return i[s]}function li(e,t){var r=e.since<=e.until?1:-1;return t===void 0?l(e.since).year():l(e.since).year()+(t-e.offset)*r}function ui(){var e,t,r,s=this.localeData().eras();for(e=0,t=s.length;ei&&(t=i),vi.call(this,e,t,r,s,a))}function vi(e,t,r,s,a){var i=yr(e,t,r,s,a),d=Ne(i.year,0,i.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}M("Q",0,"Qo","quarter"),y("Q",nr),O("Q",function(e,t){t[ee]=(g(e)-1)*3});function Oi(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}M("D",["DD",2],"Do","date"),y("D",j,we),y("DD",j,H),y("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),O(["D","DD"],Q),O("Do",function(e,t){t[Q]=g(e.match(j)[0])});var Hr=ge("Date",!0);M("DDD",["DDDD",3],"DDDo","dayOfYear"),y("DDD",Ze),y("DDDD",ir),O(["DDD","DDDD"],function(e,t,r){r._dayOfYear=g(e)});function Ti(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}M("m",["mm",2],0,"minute"),y("m",j,St),y("mm",j,H),O(["m","mm"],Z);var ji=ge("Minutes",!1);M("s",["ss",2],0,"second"),y("s",j,St),y("ss",j,H),O(["s","ss"],te);var bi=ge("Seconds",!1);M("S",0,0,function(){return~~(this.millisecond()/100)}),M(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),M(0,["SSS",3],0,"millisecond"),M(0,["SSSS",4],0,function(){return this.millisecond()*10}),M(0,["SSSSS",5],0,function(){return this.millisecond()*100}),M(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),M(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),M(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),M(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),y("S",Ze,nr),y("SS",Ze,H),y("SSS",Ze,ir);var fe,Ar;for(fe="SSSS";fe.length<=9;fe+="S")y(fe,Ye);function xi(e,t){t[ye]=g(("0."+e)*1e3)}for(fe="S";fe.length<=9;fe+="S")O(fe,xi);Ar=ge("Milliseconds",!1),M("z",0,0,"zoneAbbr"),M("zz",0,0,"zoneName");function Pi(){return this._isUTC?"UTC":""}function Li(){return this._isUTC?"Coordinated Universal Time":""}var f=je.prototype;f.add=Sn,f.calendar=Pn,f.clone=Ln,f.diff=In,f.endOf=qn,f.format=Vn,f.from=Gn,f.fromNow=zn,f.to=Zn,f.toNow=$n,f.get=As,f.invalidAt=ai,f.isAfter=Nn,f.isBefore=Fn,f.isBetween=Wn,f.isSame=Rn,f.isSameOrAfter=Cn,f.isSameOrBefore=Un,f.isValid=ri,f.lang=Fr,f.locale=Nr,f.localeData=Wr,f.max=tn,f.min=en,f.parsingFlags=si,f.set=Es,f.startOf=Jn,f.subtract=vn,f.toArray=Kn,f.toObject=ei,f.toDate=Xn,f.toISOString=An,f.inspect=En,typeof Symbol<"u"&&Symbol.for!=null&&(f[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),f.toJSON=ti,f.toString=Hn,f.unix=Qn,f.valueOf=Bn,f.creationData=ni,f.eraName=ui,f.eraNarrow=di,f.eraAbbr=fi,f.eraYear=hi,f.year=ur,f.isLeapYear=Hs,f.weekYear=pi,f.isoWeekYear=Yi,f.quarter=f.quarters=Oi,f.month=_r,f.daysInMonth=Qs,f.week=f.weeks=na,f.isoWeek=f.isoWeeks=ia,f.weeksInYear=ki,f.weeksInWeekYear=Si,f.isoWeeksInYear=wi,f.isoWeeksInISOWeekYear=gi,f.date=Hr,f.day=f.days=pa,f.weekday=Ya,f.isoWeekday=wa,f.dayOfYear=Ti,f.hour=f.hours=ja,f.minute=f.minutes=ji,f.second=f.seconds=bi,f.millisecond=f.milliseconds=Ar,f.utcOffset=fn,f.utc=cn,f.local=_n,f.parseZone=mn,f.hasAlignedHourOffset=yn,f.isDST=Mn,f.isLocal=pn,f.isUtcOffset=Yn,f.isUtc=jr,f.isUTC=jr,f.zoneAbbr=Pi,f.zoneName=Li,f.dates=E("dates accessor is deprecated. Use date instead.",Hr),f.months=E("months accessor is deprecated. Use month instead",_r),f.years=E("years accessor is deprecated. Use year instead",ur),f.zone=E("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",hn),f.isDSTShifted=E("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Dn);function Ni(e){return b(e*1e3)}function Fi(){return b.apply(null,arguments).parseZone()}function Er(e){return e}var v=Mt.prototype;v.calendar=Ds,v.longDateFormat=gs,v.invalidDate=Ss,v.ordinal=Ts,v.preparse=Er,v.postformat=Er,v.relativeTime=bs,v.pastFuture=xs,v.set=ys,v.eras=ii,v.erasParse=oi,v.erasConvertYear=li,v.erasAbbrRegex=_i,v.erasNameRegex=ci,v.erasNarrowRegex=mi,v.months=$s,v.monthsShort=Js,v.monthsParse=Bs,v.monthsRegex=Ks,v.monthsShortRegex=Xs,v.week=ta,v.firstDayOfYear=aa,v.firstDayOfWeek=sa,v.weekdays=_a,v.weekdaysMin=ya,v.weekdaysShort=ma,v.weekdaysParse=Da,v.weekdaysRegex=ga,v.weekdaysShortRegex=ka,v.weekdaysMinRegex=Sa,v.isPM=Oa,v.meridiem=ba;function ot(e,t,r,s){var a=se(),i=J().set(s,t);return a[r](i,e)}function Vr(e,t,r){if(C(e)&&(t=e,e=void 0),e=e||"",t!=null)return ot(e,t,r,"month");var s,a=[];for(s=0;s<12;s++)a[s]=ot(e,s,r,"month");return a}function At(e,t,r,s){typeof e=="boolean"?(C(t)&&(r=t,t=void 0),t=t||""):(t=e,r=t,e=!1,C(t)&&(r=t,t=void 0),t=t||"");var a=se(),i=e?a._week.dow:0,d,m=[];if(r!=null)return ot(t,(r+i)%7,s,"day");for(d=0;d<7;d++)m[d]=ot(t,(d+i)%7,s,"day");return m}function Wi(e,t){return Vr(e,t,"months")}function Ri(e,t){return Vr(e,t,"monthsShort")}function Ci(e,t,r){return At(e,t,r,"weekdays")}function Ui(e,t,r){return At(e,t,r,"weekdaysShort")}function Ii(e,t,r){return At(e,t,r,"weekdaysMin")}de("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,r=g(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+r}}),l.lang=E("moment.lang is deprecated. Use moment.locale instead.",de),l.langData=E("moment.langData is deprecated. Use moment.localeData instead.",se);var ae=Math.abs;function Hi(){var e=this._data;return this._milliseconds=ae(this._milliseconds),this._days=ae(this._days),this._months=ae(this._months),e.milliseconds=ae(e.milliseconds),e.seconds=ae(e.seconds),e.minutes=ae(e.minutes),e.hours=ae(e.hours),e.months=ae(e.months),e.years=ae(e.years),this}function Gr(e,t,r,s){var a=$(t,r);return e._milliseconds+=s*a._milliseconds,e._days+=s*a._days,e._months+=s*a._months,e._bubble()}function Ai(e,t){return Gr(this,e,t,1)}function Ei(e,t){return Gr(this,e,t,-1)}function zr(e){return e<0?Math.floor(e):Math.ceil(e)}function Vi(){var e=this._milliseconds,t=this._days,r=this._months,s=this._data,a,i,d,m,D;return e>=0&&t>=0&&r>=0||e<=0&&t<=0&&r<=0||(e+=zr(Et(r)+t)*864e5,t=0,r=0),s.milliseconds=e%1e3,a=G(e/1e3),s.seconds=a%60,i=G(a/60),s.minutes=i%60,d=G(i/60),s.hours=d%24,t+=G(d/24),D=G(Zr(t)),r+=D,t-=zr(Et(D)),m=G(r/12),r%=12,s.days=t,s.months=r,s.years=m,this}function Zr(e){return e*4800/146097}function Et(e){return e*146097/4800}function Gi(e){if(!this.isValid())return NaN;var t,r,s=this._milliseconds;if(e=V(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+s/864e5,r=this._months+Zr(t),e){case"month":return r;case"quarter":return r/3;case"year":return r/12}else switch(t=this._days+Math.round(Et(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return t*24+s/36e5;case"minute":return t*1440+s/6e4;case"second":return t*86400+s/1e3;case"millisecond":return Math.floor(t*864e5)+s;default:throw new Error("Unknown unit "+e)}}function ne(e){return function(){return this.as(e)}}var $r=ne("ms"),zi=ne("s"),Zi=ne("m"),$i=ne("h"),Ji=ne("d"),qi=ne("w"),Bi=ne("M"),Qi=ne("Q"),Xi=ne("y"),Ki=$r;function eo(){return $(this)}function to(e){return e=V(e),this.isValid()?this[e+"s"]():NaN}function De(e){return function(){return this.isValid()?this._data[e]:NaN}}var ro=De("milliseconds"),so=De("seconds"),ao=De("minutes"),no=De("hours"),io=De("days"),oo=De("months"),lo=De("years");function uo(){return G(this.days()/7)}var ie=Math.round,Oe={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function fo(e,t,r,s,a){return a.relativeTime(t||1,!!r,e,s)}function ho(e,t,r,s){var a=$(e).abs(),i=ie(a.as("s")),d=ie(a.as("m")),m=ie(a.as("h")),D=ie(a.as("d")),k=ie(a.as("M")),U=ie(a.as("w")),oe=ie(a.as("y")),he=i<=r.ss&&["s",i]||i0,he[4]=s,fo.apply(null,he)}function co(e){return e===void 0?ie:typeof e=="function"?(ie=e,!0):!1}function _o(e,t){return Oe[e]===void 0?!1:t===void 0?Oe[e]:(Oe[e]=t,e==="s"&&(Oe.ss=t-1),!0)}function mo(e,t){if(!this.isValid())return this.localeData().invalidDate();var r=!1,s=Oe,a,i;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(r=e),typeof t=="object"&&(s=Object.assign({},Oe,t),t.s!=null&&t.ss==null&&(s.ss=t.s-1)),a=this.localeData(),i=ho(this,!r,s,a),r&&(i=a.pastFuture(+this,i)),a.postformat(i)}var Vt=Math.abs;function Te(e){return(e>0)-(e<0)||+e}function lt(){if(!this.isValid())return this.localeData().invalidDate();var e=Vt(this._milliseconds)/1e3,t=Vt(this._days),r=Vt(this._months),s,a,i,d,m=this.asSeconds(),D,k,U,oe;return m?(s=G(e/60),a=G(s/60),e%=60,s%=60,i=G(r/12),r%=12,d=e?e.toFixed(3).replace(/\.?0+$/,""):"",D=m<0?"-":"",k=Te(this._months)!==Te(m)?"-":"",U=Te(this._days)!==Te(m)?"-":"",oe=Te(this._milliseconds)!==Te(m)?"-":"",D+"P"+(i?k+i+"Y":"")+(r?k+r+"M":"")+(t?U+t+"D":"")+(a||s||e?"T":"")+(a?oe+a+"H":"")+(s?oe+s+"M":"")+(e?oe+d+"S":"")):"P0D"}var S=tt.prototype;S.isValid=on,S.abs=Hi,S.add=Ai,S.subtract=Ei,S.as=Gi,S.asMilliseconds=$r,S.asSeconds=zi,S.asMinutes=Zi,S.asHours=$i,S.asDays=Ji,S.asWeeks=qi,S.asMonths=Bi,S.asQuarters=Qi,S.asYears=Xi,S.valueOf=Ki,S._bubble=Vi,S.clone=eo,S.get=to,S.milliseconds=ro,S.seconds=so,S.minutes=ao,S.hours=no,S.days=io,S.weeks=uo,S.months=oo,S.years=lo,S.humanize=mo,S.toISOString=lt,S.toString=lt,S.toJSON=lt,S.locale=Nr,S.localeData=Wr,S.toIsoString=E("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",lt),S.lang=Fr,M("X",0,0,"unix"),M("x",0,0,"valueOf"),y("x",Je),y("X",Fs),O("X",function(e,t,r){r._d=new Date(parseFloat(e)*1e3)}),O("x",function(e,t,r){r._d=new Date(g(e))});//! moment.js diff --git a/apps/admin-panel/dist/assets/index-DdFLWjO6.js b/apps/admin-panel/dist/assets/index-DrgFPRTa.js similarity index 89% rename from apps/admin-panel/dist/assets/index-DdFLWjO6.js rename to apps/admin-panel/dist/assets/index-DrgFPRTa.js index e20d871..d2de565 100644 --- a/apps/admin-panel/dist/assets/index-DdFLWjO6.js +++ b/apps/admin-panel/dist/assets/index-DrgFPRTa.js @@ -1 +1 @@ -import{b as V}from"./filters-gmIfX3-G.js";import{d as S,x as z,y as f,a as v,w as t,m as i,r as o,o as d,c as l,p as F,b as g,e as T,f as y,t as m,F as x,h as D,i as E}from"./index-DajPj7Ec.js";import"./index-BAamWbCu.js";const L={class:"grid-2"},q=S({__name:"index",setup(M){const u=i(!1),p=i([]),s=i(void 0),_=i([]),h=[{title:"عملیات",dataIndex:"action"},{title:"جزئیات",dataIndex:"detail"},{title:"تاریخ",dataIndex:"caj"}];function b(e,n){var c,r;return String(((r=(c=n==null?void 0:n.children)==null?void 0:c[0])==null?void 0:r.children)??"").includes(e)}async function w(){if(!s.value){_.value=[];return}try{u.value=!0;const{data:e}=await f.get(`log/ago/${s.value}`);_.value=e}catch(e){console.log(e)}finally{u.value=!1}}return z(async()=>{try{const{data:e}=await f.get("log/list/customer");p.value=e}catch(e){console.log(e)}}),(e,n)=>{const c=o("a-select-option"),r=o("a-select"),k=o("a-form-item"),C=o("a-form"),j=o("a-table"),B=o("a-card"),I=o("a-spin");return d(),v(I,{spinning:u.value},{default:t(()=>[l(B,{title:"آمار",class:"page-card table-scroll"},{default:t(()=>[l(C,{layout:"vertical"},{default:t(()=>[F("div",L,[l(k,{label:"مشتری"},{default:t(()=>[l(r,{value:s.value,"onUpdate:value":n[0]||(n[0]=a=>s.value=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":b,onChange:w},{default:t(()=>[(d(!0),g(x,null,T(p.value,a=>(d(),v(c,{key:a.id,value:a.id},{default:t(()=>[y(m(a.name)+" - "+m(a.mobile),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})])]),_:1}),l(j,{"data-source":_.value,columns:h,pagination:{pageSize:20},size:"small","row-key":"id"},{bodyCell:t(({column:a,record:N})=>[a.dataIndex==="caj"?(d(),g(x,{key:0},[y(m(D(V)(N.caj)),1)],64)):E("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])}}});export{q as default}; +import{b as V}from"./filters-BMytoA2k.js";import{d as S,x as z,y as f,a as v,w as t,m as i,r as o,o as d,c as l,p as F,b as g,e as T,f as y,t as m,F as x,h as D,i as E}from"./index-eLNLLYwC.js";import"./index-CKaD48iT.js";const L={class:"grid-2"},q=S({__name:"index",setup(M){const u=i(!1),p=i([]),s=i(void 0),_=i([]),h=[{title:"عملیات",dataIndex:"action"},{title:"جزئیات",dataIndex:"detail"},{title:"تاریخ",dataIndex:"caj"}];function b(e,n){var c,r;return String(((r=(c=n==null?void 0:n.children)==null?void 0:c[0])==null?void 0:r.children)??"").includes(e)}async function w(){if(!s.value){_.value=[];return}try{u.value=!0;const{data:e}=await f.get(`log/ago/${s.value}`);_.value=e}catch(e){console.log(e)}finally{u.value=!1}}return z(async()=>{try{const{data:e}=await f.get("log/list/customer");p.value=e}catch(e){console.log(e)}}),(e,n)=>{const c=o("a-select-option"),r=o("a-select"),k=o("a-form-item"),C=o("a-form"),j=o("a-table"),B=o("a-card"),I=o("a-spin");return d(),v(I,{spinning:u.value},{default:t(()=>[l(B,{title:"آمار",class:"page-card table-scroll"},{default:t(()=>[l(C,{layout:"vertical"},{default:t(()=>[F("div",L,[l(k,{label:"مشتری"},{default:t(()=>[l(r,{value:s.value,"onUpdate:value":n[0]||(n[0]=a=>s.value=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":b,onChange:w},{default:t(()=>[(d(!0),g(x,null,T(p.value,a=>(d(),v(c,{key:a.id,value:a.id},{default:t(()=>[y(m(a.name)+" - "+m(a.mobile),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})])]),_:1}),l(j,{"data-source":_.value,columns:h,pagination:{pageSize:20},size:"small","row-key":"id"},{bodyCell:t(({column:a,record:N})=>[a.dataIndex==="caj"?(d(),g(x,{key:0},[y(m(D(V)(N.caj)),1)],64)):E("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])}}});export{q as default}; diff --git a/apps/admin-panel/dist/assets/index-DajPj7Ec.js b/apps/admin-panel/dist/assets/index-eLNLLYwC.js similarity index 98% rename from apps/admin-panel/dist/assets/index-DajPj7Ec.js rename to apps/admin-panel/dist/assets/index-eLNLLYwC.js index 203ffc2..1383a12 100644 --- a/apps/admin-panel/dist/assets/index-DajPj7Ec.js +++ b/apps/admin-panel/dist/assets/index-eLNLLYwC.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-Cb_e8hUK.js","assets/filters-gmIfX3-G.js","assets/index-BAamWbCu.js","assets/UserAddOutlined-tCWSfp_Y.js","assets/CreditCardOutlined-H5cAFLTI.js","assets/Dashboard-DDxYNHoh.css","assets/myData-DsOyJhsC.js","assets/auth-l1fvj2RU.js","assets/Const-CvgkKjTn.js","assets/useDeleteHandler-CdwhuWqX.js","assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-BZdAohKm.js","assets/Const-Cg3w2iOi.css","assets/wallet-BYMX27q1.js","assets/wallet-C3HGxzJR.css","assets/accounting-SNbebogb.js","assets/LockOutlined-XBpx1rxs.js","assets/SafetyCertificateOutlined-DSk-s9OX.js","assets/accounting-C1WiWzRh.css","assets/wage-B6j_dXIJ.js","assets/wage-BeeFFahC.css","assets/report-OEDYaCDs.js","assets/report-Baq2jRIT.css","assets/AddProduct-CqaK3I6Q.js","assets/AppstoreOutlined-BPqrCmxh.js","assets/AddProduct-B3HJWpgQ.css","assets/EditProduct-miBXIVTw.js","assets/ProductList-DKYFsy5A.js","assets/model-CR-NjhTP.js","assets/SettingOutlined-BBdK6RkP.js","assets/model-BYVpc9QD.css","assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BeHungwO.js","assets/productListModel-C4fzek7T.js","assets/ProductList-D6w5abTS.css","assets/Add-o90TOQ6U.js","assets/Add.vue_vue_type_script_setup_true_lang-Bwcjeajd.js","assets/BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js","assets/BaseFormModal-Dd4CwqJh.css","assets/Edit-kPt-2bSX.js","assets/List-Be1uA64N.js","assets/ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js","assets/addFinDoc-Crm0ebUu.js","assets/addFinDoc.vue_vue_type_script_setup_true_lang-Bhb3Mras.js","assets/List-DZ2UtgZK.js","assets/TooltipBtn.vue_vue_type_script_setup_true_lang-OELVu1w_.js","assets/icons-DiNnR1E8.js","assets/UnorderedListOutlined-B6W9NsW_.js","assets/PercentageOutlined-D8KYbn5o.js","assets/TeamOutlined-DPoMD9pK.js","assets/UserOutlined-CzruAWCH.js","assets/CameraOutlined-B6nXMt0y.js","assets/List-DYRF6PAj.css","assets/OmdeList-DH-oJpv0.js","assets/OmdeList-CF36um8c.css","assets/MakeOrder-aTjo9HZz.js","assets/MakeOrder-CURJu9sW.css","assets/create-DqSLe1hW.js","assets/create-ChEWb1ne.css","assets/TaminList-Cta7c5dR.js","assets/TaminList-V-O9JF64.css","assets/promotion_list-CJB17R4H.js","assets/promotion_add_edit.vue_vue_type_script_setup_true_lang--2Wiku7A.js","assets/PromotionForm-ii0sb4Z5.js","assets/PromotionForm-BbHzArCn.css","assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DFzOW-j9.js","assets/promotion_list-DWgKEjg6.css","assets/promotion_add_edit-CqCju9pR.js","assets/promotion_tak_add_edit-Bza5oS11.js","assets/offersIgnore-add-edit-DE72s5pO.js","assets/offersIgnore-add-edit-C3EKEL14.css","assets/Comments-CGkM8YQW.js","assets/brand-icon-COpT6LnI.js","assets/Comments-q2I8jWwp.css","assets/create-BcV0LZ6B.js","assets/create-CxWgJ0bc.css","assets/user-CB1sVp_3.js","assets/user-B-bC_c-g.css","assets/wallet-61JBaLmV.js","assets/EditReagent-Ba5R7-Av.js","assets/ReagentCustomer-BAV0MXtJ.js","assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js","assets/ShopOutlined-MoIbCAG4.js","assets/EnvironmentOutlined-DzgF3_xx.js","assets/ReagentCustomer-BJbNfaGF.css","assets/AgentDetail-sO_PGm1D.js","assets/AgentDetail-BKCHh-yo.css","assets/EditBulkCustomer-w9LEjkC1.js","assets/bulkCustomer.vue_vue_type_script_setup_true_lang-CNXz1wB0.js","assets/DateInput-CSLG7sxn.js","assets/DateInput-BFphsjxa.css","assets/ViewOmdeCustomer-eFH3i6bz.js","assets/CustomerDetail-DzOk8IG6.js","assets/CustomerDetail-DGAY9nkY.css","assets/EditSingleCustomer-CTn0uVfI.js","assets/singleCustomer-3o4eCG9y.js","assets/singleCustomer-D73A_q4T.css","assets/ViewSingleCustomer-BsTNdacv.js","assets/OmdeList-CEBt8LxW.js","assets/OmdeCustomerList-c6FcwBcS.js","assets/OmdeCustomerList-qppHqBFQ.css","assets/OmdeNonVerifiedList-Chk-ZLmx.js","assets/BankerList-BPuo9i5M.js","assets/ShopkeeperList-pfD0i838.js","assets/OmdeArchivedList-DXe8fsa2.js","assets/ReagentList-CtR1WkfW.js","assets/AddCustomer-C93P9Nl8.js","assets/AddCustomer-B8yzj_hO.css","assets/SingleCustomer-BP-Jvfsy.js","assets/SingleCustomer-DXPJhDMT.css","assets/order_item-BCXFMT8w.js","assets/order_item-L-QxFgjw.css","assets/product-CdHCOmwK.js","assets/product-ft0Taq8s.css","assets/list-D63BjZ2R.js","assets/ListUser-B5HisvUF.js","assets/UserCreate-B9hxrLOO.js","assets/UserCreate-kr2EAKPI.css","assets/UserEdit-DvU5z6vT.js","assets/Permission-BDWBYh7-.js","assets/Permission-PeCa09B2.css","assets/createCity-CbhYJB0l.js","assets/createCity.vue_vue_type_script_setup_true_lang-JXoB9ElE.js","assets/cityList-ZcdYYFeM.js","assets/index-DdFLWjO6.js","assets/newsletters-Cw3--aFT.js","assets/newsletters-BbmfL6_F.css","assets/AddBranches-DbKQr4RL.js","assets/AddBranches.vue_vue_type_script_setup_true_lang-C5lsu342.js","assets/EditBranches-DD2D-1SM.js","assets/ListBranches-DKS9egre.js","assets/FacilityList.vue_vue_type_script_setup_true_lang-rDFQ96E5.js","assets/AddWorkshop-Cq08meS9.js","assets/AddWorkshop.vue_vue_type_script_setup_true_lang-DrS2agIb.js","assets/EditWorkshop-CoYdSxko.js","assets/ListWorkshop-Co07pp0l.js","assets/AddInvoice-iZuqzIMz.js","assets/AddInvoice-DbwyBxeJ.css","assets/EditInvoice-CKOrEPF-.js","assets/ListInvoice-BUUcrdEN.js","assets/ListInvoice-CARcAUSN.css","assets/Login-B0DXknhX.js","assets/Login-DLvlSeqG.css","assets/reg-CTnxnWvP.js","assets/reg-ClbWC7bS.css","assets/Main-B6XfJkyt.js","assets/Main-CVJwoMQ9.css","assets/IamCallback-DFjtEuae.js","assets/Error404-CrARqFTT.js","assets/Error404-CQyPUoKe.css","assets/Error500-2YJNeuLX.js","assets/Error500-Cne_2YUW.css","assets/NotAuthorized-kSbkBInP.js","assets/NotAuthorized-B2SbXtX1.css","assets/Maintenance-CRfOTU6G.js","assets/Maintenance-Duz6NlUR.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-Dty7lg2F.js","assets/filters-BMytoA2k.js","assets/index-CKaD48iT.js","assets/UserAddOutlined-GWNEdhY8.js","assets/CreditCardOutlined-CcvN7g1Z.js","assets/Dashboard-DDxYNHoh.css","assets/myData-CDJUmBNX.js","assets/auth-Cmkre2IW.js","assets/Const-CiWiRUCV.js","assets/useDeleteHandler-BHXHWuUG.js","assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-D89_uh6g.js","assets/Const-Cg3w2iOi.css","assets/wallet-D0sHW9q3.js","assets/wallet-C3HGxzJR.css","assets/accounting-Dbj920fC.js","assets/LockOutlined-BQjJg0kk.js","assets/SafetyCertificateOutlined-Du6lFDs_.js","assets/accounting-C1WiWzRh.css","assets/wage-DTUfXfWe.js","assets/wage-BeeFFahC.css","assets/report-e-YemU3S.js","assets/report-Baq2jRIT.css","assets/AddProduct-DqeCa5en.js","assets/AppstoreOutlined-D5DMeuPl.js","assets/PictureOutlined-BQUWPT2c.js","assets/AddProduct-Bl-1Lqf-.css","assets/EditProduct-BKzZP7ji.js","assets/ProductList-DlDr1CI8.js","assets/model-btNVLLyF.js","assets/SettingOutlined-DibNCEeh.js","assets/model-BYVpc9QD.css","assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-aFInWcLz.js","assets/productListModel-DskQX-jW.js","assets/ProductList-D4ZJWLMm.css","assets/Add-CyAPNN08.js","assets/Add.vue_vue_type_script_setup_true_lang-Bc-uQ6iU.js","assets/BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js","assets/BaseFormModal-Dd4CwqJh.css","assets/Edit-CNTQOlgk.js","assets/List-CMDP8SDT.js","assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js","assets/addFinDoc-Copg65eX.js","assets/addFinDoc.vue_vue_type_script_setup_true_lang-BeApu2ja.js","assets/List-Cql7jPx_.js","assets/TooltipBtn.vue_vue_type_script_setup_true_lang-CHnLAped.js","assets/icons-DaMkWfMK.js","assets/UnorderedListOutlined-cPIiOEaQ.js","assets/PercentageOutlined-DyprS4lh.js","assets/TeamOutlined-Bx4ezhPp.js","assets/UserOutlined-B4M5rNrX.js","assets/CameraOutlined-CFYC5ScW.js","assets/OrderStatusTimeline-Dm95hywe.js","assets/OrderStatusTimeline-nDDfaXIt.css","assets/List-vIzaRldC.css","assets/OmdeList-D7WY5ylW.js","assets/OmdeList-D6Hbka2-.css","assets/MakeOrder-umVSia6q.js","assets/MakeOrder-CURJu9sW.css","assets/create-BIvFVhDo.js","assets/create-ChEWb1ne.css","assets/TaminList-BDxHKzcP.js","assets/TaminList-CDSG2cQ_.css","assets/promotion_list-C6ai2IKH.js","assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Byvx5z5L.js","assets/PromotionForm-CAyJlwhb.js","assets/PromotionForm-BbHzArCn.css","assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-JRmgfs03.js","assets/promotion_list-DWgKEjg6.css","assets/promotion_add_edit-CkCABaCG.js","assets/promotion_tak_add_edit-0aN9XPzw.js","assets/offersIgnore-add-edit-B39Jv3mn.js","assets/offersIgnore-add-edit-C3EKEL14.css","assets/Comments-BRX5fmch.js","assets/brand-icon-COpT6LnI.js","assets/Comments-q2I8jWwp.css","assets/create-Coyb76zV.js","assets/create-CxWgJ0bc.css","assets/user-B7WvnXNF.js","assets/user-B-bC_c-g.css","assets/wallet-DNF2ihBn.js","assets/EditReagent-CwG5Obtx.js","assets/ReagentCustomer-BXqRAucN.js","assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js","assets/ShopOutlined-DIjF3I3z.js","assets/EnvironmentOutlined-BKbou10z.js","assets/ReagentCustomer-BJbNfaGF.css","assets/AgentDetail-DRGOkkVC.js","assets/AgentDetail-BKCHh-yo.css","assets/EditBulkCustomer-C_e-C8L8.js","assets/bulkCustomer.vue_vue_type_script_setup_true_lang-_PHXAFqm.js","assets/DateInput-D9Jh1loF.js","assets/DateInput-BFphsjxa.css","assets/ViewOmdeCustomer-D3i36iTG.js","assets/CustomerDetail-BxNzOtlQ.js","assets/CustomerDetail-DGAY9nkY.css","assets/EditSingleCustomer-Bn4VcGk8.js","assets/singleCustomer-gqRtFTnm.js","assets/singleCustomer-D73A_q4T.css","assets/ViewSingleCustomer-B2QupTSx.js","assets/OmdeList-DQ1AeZVa.js","assets/OmdeCustomerList-CytNKR8R.js","assets/OmdeCustomerList-qppHqBFQ.css","assets/OmdeNonVerifiedList-BiBG9jCs.js","assets/BankerList-CuVGBn-P.js","assets/ShopkeeperList-DAWnyPJb.js","assets/OmdeArchivedList-RTBSSPqv.js","assets/ReagentList-Bm3uQYje.js","assets/AddCustomer-DXt3pmSf.js","assets/AddCustomer-B8yzj_hO.css","assets/SingleCustomer-Ds30MZZu.js","assets/SingleCustomer-DXPJhDMT.css","assets/order_item-BLR_vTQ1.js","assets/order_item-L-QxFgjw.css","assets/product-Pyi69LQn.js","assets/product-ft0Taq8s.css","assets/list-DNHKXSxl.js","assets/ListUser-xB3fMA3W.js","assets/UserCreate-8S3eAopa.js","assets/UserCreate-kr2EAKPI.css","assets/UserEdit-DgpzTP1E.js","assets/Permission-CenARUCd.js","assets/Permission-PeCa09B2.css","assets/createCity-pjdKbfGT.js","assets/createCity.vue_vue_type_script_setup_true_lang-DsfElQum.js","assets/cityList-DX9LVS_S.js","assets/index-DrgFPRTa.js","assets/newsletters-CkmueuCH.js","assets/newsletters-BbmfL6_F.css","assets/AddBranches-DU7wFOIC.js","assets/AddBranches.vue_vue_type_script_setup_true_lang-D-h0CMKK.js","assets/EditBranches-BgZpg5Qg.js","assets/ListBranches-HIAgbHcy.js","assets/FacilityList.vue_vue_type_script_setup_true_lang-B2i1tZYn.js","assets/AddWorkshop-DkrmcSHY.js","assets/AddWorkshop.vue_vue_type_script_setup_true_lang-qc3OG2kG.js","assets/EditWorkshop-BC8_AOnI.js","assets/ListWorkshop-eILF1R4A.js","assets/AddInvoice-DwmImnAo.js","assets/AddInvoice-DbwyBxeJ.css","assets/EditInvoice-oFQdQ5sU.js","assets/ListInvoice-g-UG6V0q.js","assets/ListInvoice-CARcAUSN.css","assets/Login-uO1nRvXv.js","assets/Login-DLvlSeqG.css","assets/reg-CqiFjlXn.js","assets/reg-ClbWC7bS.css","assets/Main-D1tnU8tP.js","assets/Main-CVJwoMQ9.css","assets/IamCallback-CDfS1Tyd.js","assets/Error404-RiMPFrr5.js","assets/Error404-CQyPUoKe.css","assets/Error500-jeDtZpef.js","assets/Error500-Cne_2YUW.css","assets/NotAuthorized-Cl9-8nb6.js","assets/NotAuthorized-B2SbXtX1.css","assets/Maintenance-Df5I5LOi.js","assets/Maintenance-Duz6NlUR.css"])))=>i.map(i=>d[i]); (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/** * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -2466,7 +2466,7 @@ rect.legend-mouseover-inactive, `;class $N{constructor(e,n){this.w=e,this.ctx=n,this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=e.globals.minX,this.maxX=e.globals.maxX,this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elMeasure=null,this.elZoomReset=null,this.elMenuIcon=null,this.elMenu=null,this.elMenuItems=[],this.t=null,this._drawnForZoom=null}resetControlAllowed(){const e=this.w.config.chart;if(!e.zoom||!e.zoom.enabled)return!1;const n=e.zoom.resetControl===void 0?"auto":e.zoom.resetControl;return n!=="auto"?!!n:!(e.toolbar&&e.toolbar.show&&e.toolbar.tools&&e.toolbar.tools.reset)}resetControlDue(){return!!this.w.interact.zoomed&&this.resetControlAllowed()}createToolbar(e={}){var n,i,o;const r=this.w,a=!!e.resetOnly,s=()=>We.createElementNS("http://www.w3.org/1999/xhtml","div"),l=()=>{const h=We.createElementNS("http://www.w3.org/1999/xhtml","button");return h.setAttribute("type","button"),h},c=s();if(c.setAttribute("class","apexcharts-toolbar"),c.style.top=r.config.chart.toolbar.offsetY+"px",c.style.right=-r.config.chart.toolbar.offsetX+3+"px",r.dom.elWrap.appendChild(c),this.elZoom=l(),this.elZoomIn=l(),this.elZoomOut=l(),this.elPan=l(),this.elSelection=l(),this.elMeasure=l(),this.elZoomReset=l(),this.elMenuIcon=l(),this.elMenu=s(),this.elCustomIcons=[],this.t=r.config.chart.toolbar.tools,this._drawnForZoom=null,a?(this.t={zoom:!1,zoomin:!1,zoomout:!1,selection:!1,pan:!1,measure:!1,download:!1,customIcons:[],reset:!0},this._drawnForZoom="wrap"):!this.t.reset&&this.resetControlDue()&&(this.t=vt(Ye({},this.t),{reset:!0}),this._drawnForZoom="control"),Array.isArray(this.t.customIcons))for(let h=0;h{const m=h.toLowerCase();this.t[m]&&r.config.chart.zoom.enabled&&u.push({el:p,icon:typeof this.t[m]=="string"?this.t[m]:g,title:this.localeValues[h],class:`apexcharts-${m}-icon`})};d("zoomIn",this.elZoomIn,c1e),d("zoomOut",this.elZoomOut,u1e);const f=h=>{this.t[h]&&r.config.chart[h].enabled&&u.push({el:h==="zoom"?this.elZoom:this.elSelection,icon:typeof this.t[h]=="string"?this.t[h]:h==="zoom"?s1e:d1e,title:this.localeValues[h==="zoom"?"selectionZoom":"selection"],class:`apexcharts-${h}-icon`})};f("zoom"),f("selection"),this.t.pan&&r.config.chart.zoom.enabled&&u.push({el:this.elPan,icon:typeof this.t.pan=="string"?this.t.pan:a1e,title:this.localeValues.pan,class:"apexcharts-pan-icon"}),this.t.measure&&r.config.chart.measure&&r.config.chart.measure.enabled&&u.push({el:this.elMeasure,icon:typeof this.t.measure=="string"?this.t.measure:f1e,title:this.localeValues.measure||"Measure",class:"apexcharts-measure-icon"}),d("reset",this.elZoomReset,l1e),this.t.download&&u.push({el:this.elMenuIcon,icon:typeof this.t.download=="string"?this.t.download:h1e,title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(let h=0;h{h.index&&Ee.moveIndexInArray(u,p,h.index)});for(let h=0;h{d.classList.contains("exportSVG")?d.addEventListener("click",this.handleDownload.bind(this,"svg")):d.classList.contains("exportPNG")?d.addEventListener("click",this.handleDownload.bind(this,"png")):d.classList.contains("exportCSV")&&d.addEventListener("click",this.handleDownload.bind(this,"csv"))});for(let d=0;d{d.addEventListener("keydown",f=>{if(f.key==="Enter"||f.key===" "){f.preventDefault();const h=d.className;d.click(),requestAnimationFrame(()=>{const p=this.w.dom.baseEl;if(!p)return;const g=h.split(" ").find(v=>v.startsWith("apexcharts-"));if(!g)return;const m=p.querySelector(`.${g}`);m&&m.focus()})}})}),(c=this.elMenuIcon)==null||c.addEventListener("keydown",d=>{var f;(d.key==="ArrowDown"||d.key==="ArrowUp")&&(d.preventDefault(),(f=this.elMenu)!=null&&f.classList.contains("apexcharts-menu-open")||this.toggleMenu(),window.setTimeout(()=>{const h=d.key==="ArrowDown"?0:this.elMenuItems.length-1;this.elMenuItems[h]&&this.elMenuItems[h].focus()},20))}),this.elMenuItems.forEach((d,f)=>{d.addEventListener("keydown",h=>{var p;h.key==="ArrowDown"?(h.preventDefault(),(this.elMenuItems[f+1]||this.elMenuItems[0]).focus()):h.key==="ArrowUp"?(h.preventDefault(),(this.elMenuItems[f-1]||this.elMenuItems[this.elMenuItems.length-1]).focus()):h.key==="Escape"||h.key==="Tab"?(this._closeMenu(),(p=this.elMenuIcon)==null||p.focus(),h.key==="Tab"||h.preventDefault()):(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),d.click())})})}toggleZoomSelection(e){this.ctx.getSyncedCharts().forEach(i=>{const o=i.ctx.toolbar,r=e==="selection"?"selectionEnabled":"zoomEnabled",a=!!i.w.globals[r];o.toggleOtherControls();const s=e==="selection"?o.elSelection:o.elZoom;a||(i.w.globals[r]=!0,s.classList.add(o.selectedClass)),s.setAttribute("aria-pressed",String(!!i.w.globals[r]))})}toggleMeasure(){var e,n,i,o;const r=this.w,a=!r.interact.measureEnabled;this.toggleOtherControls(),a&&(r.interact.measureEnabled=!0,(e=this.elMeasure)==null||e.classList.add(this.selectedClass),(i=(n=this.ctx.measure)==null?void 0:n.startMeasure)==null||i.call(n)),(o=this.elMeasure)==null||o.setAttribute("aria-pressed",String(r.interact.measureEnabled))}getToolbarIconsReference(){const e=this.w;this.elZoom||(this.elZoom=e.dom.baseEl.querySelector(".apexcharts-zoom-icon")),this.elPan||(this.elPan=e.dom.baseEl.querySelector(".apexcharts-pan-icon")),this.elSelection||(this.elSelection=e.dom.baseEl.querySelector(".apexcharts-selection-icon")),this.elMeasure||(this.elMeasure=e.dom.baseEl.querySelector(".apexcharts-measure-icon"))}enableZoomPanFromToolbar(e){this.toggleOtherControls(),e==="pan"?this.w.interact.panEnabled=!0:this.w.interact.zoomEnabled=!0;const n=e==="pan"?this.elPan:this.elZoom,i=e==="pan"?this.elZoom:this.elPan;n&&n.classList.add(this.selectedClass),i&&i.classList.remove(this.selectedClass)}togglePanning(){this.ctx.getSyncedCharts().forEach(n=>{const i=n.ctx.toolbar,o=!!n.w.interact.panEnabled;i.toggleOtherControls(),o||(n.w.interact.panEnabled=!0,i.elPan.classList.add(i.selectedClass)),i.elPan.setAttribute("aria-pressed",String(!!n.w.interact.panEnabled))})}toggleOtherControls(){var e,n,i;const o=this.w;o.interact.panEnabled=!1,o.interact.zoomEnabled=!1,o.interact.selectionEnabled=!1,o.interact.measureEnabled&&(o.interact.measureEnabled=!1,(n=(e=this.ctx.measure)==null?void 0:e.stopMeasure)==null||n.call(e),(i=this.elMeasure)==null||i.setAttribute("aria-pressed","false")),this.getToolbarIconsReference(),[this.elPan,this.elSelection,this.elZoom,this.elMeasure].forEach(a=>{a&&a.classList.remove(this.selectedClass)})}_currentXRange(){const e=this.w;return e.axisFlags.isRangeBar?{minX:e.globals.minY,maxX:e.globals.maxY}:{minX:e.globals.minX,maxX:e.globals.maxX}}handleZoomIn(){const e=this.w,{minX:n,maxX:i}=this._currentXRange();this.minX=n,this.maxX=i;const o=(n+i)/2,r=(n+o)/2,a=(i+o)/2,s=this._getNewMinXMaxX(r,a);e.interact.disableZoomIn||this.zoomUpdateOptions(s.minX,s.maxX)}handleZoomOut(){const e=this.w,{minX:n,maxX:i}=this._currentXRange();if(this.minX=n,this.maxX=i,e.config.xaxis.type==="datetime"&&new Date(n).getUTCFullYear()<1e3)return;const o=(n+i)/2,r=n-(o-n),a=i-(o-i),s=this._getNewMinXMaxX(r,a);e.interact.disableZoomOut||this.zoomUpdateOptions(s.minX,s.maxX)}_getNewMinXMaxX(e,n){const i=this.w.config.xaxis.convertedCatToNumeric;return{minX:i?Math.floor(e):e,maxX:i?Math.floor(n):n}}zoomUpdateOptions(e,n){const i=this.w;if(e===void 0&&n===void 0){this.handleZoomReset();return}if(i.config.xaxis.convertedCatToNumeric&&(e<1&&(e=1,n=i.globals.dataPoints),n-e<2))return;let o={min:e,max:n};const r=this.getBeforeZoomRange(o,void 0);r&&(o=r.xaxis);const a={xaxis:o};if(!i.globals.initialConfig)return;const s=Ee.clone(i.globals.initialConfig.yaxis);i.config.chart.group||(a.yaxis=s),this.w.interact.zoomed=!0,this.ctx.updateHelpers._updateOptions(a,!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(o,s)}zoomCallback(e,n){typeof this.ev.zoomed=="function"&&(this.ev.zoomed(this.ctx,{xaxis:e,yaxis:n}),this.ctx.events.fireEvent("zoomed",{xaxis:e,yaxis:n}))}getBeforeZoomRange(e,n){let i=null;return typeof this.ev.beforeZoom=="function"&&(i=this.ev.beforeZoom(this,{xaxis:e,yaxis:n})),i}toggleMenu(){window.setTimeout(()=>{var e,n,i;(e=this.elMenu)!=null&&e.classList.contains("apexcharts-menu-open")?this._closeMenu():((n=this.elMenu)==null||n.classList.add("apexcharts-menu-open"),(i=this.elMenuIcon)==null||i.setAttribute("aria-expanded","true"))},0)}_closeMenu(){var e,n;(e=this.elMenu)==null||e.classList.remove("apexcharts-menu-open"),(n=this.elMenuIcon)==null||n.setAttribute("aria-expanded","false")}handleDownload(e){const n=this.w,i=new xN(this.w,this.ctx);switch(e){case"svg":i.exportToSVG();break;case"png":i.exportToPng();break;case"csv":i.exportToCSV({series:n.config.series,columnDelimiter:n.config.chart.toolbar.export.csv.columnDelimiter});break}}clearZoomAffordance(){const e=this._drawnForZoom;if(this._drawnForZoom=null,!e||!this.elZoomReset)return;const n=this.elZoomReset.parentNode,i=e==="wrap"?n:this.elZoomReset;i&&i.parentNode&&i.parentNode.removeChild(i)}handleZoomReset(){this.ctx.getSyncedCharts().forEach(n=>{var i;const o=n.w;if(!o.interact.zoomed)return;if(o.globals.lastXAxis.min=o.globals.initialConfig.xaxis.min,o.globals.lastXAxis.max=o.globals.initialConfig.xaxis.max,n.updateHelpers.revertDefaultAxisMinMax(),typeof o.config.chart.events.beforeResetZoom=="function"){const a=o.config.chart.events.beforeResetZoom(n,o);a&&n.updateHelpers.revertDefaultAxisMinMax(a)}typeof o.config.chart.events.zoomed=="function"&&n.ctx.toolbar.zoomCallback({min:o.config.xaxis.min,max:o.config.xaxis.max});const r=n.ctx.series.emptyCollapsedSeries(Ee.clone(o.globals.initialSeries));n.updateHelpers._updateSeries(r,o.config.chart.animations.dynamicAnimation.enabled),o.interact.zoomed=!1,(i=n.ctx.toolbar)==null||i.clearZoomAffordance()})}destroy(){this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elMeasure=null,this.elZoomReset=null,this.elMenuIcon=null}}class so{static xRatio(e){const n=e.layout.gridWidth||1;return(e.globals.maxX-e.globals.minX)/n}static dataXToPx(e,n){return(n-e.globals.minX)/so.xRatio(e)}static pxToDataX(e,n){return e.globals.minX+n*so.xRatio(e)}static screenXToPlotPx(e,n){const i=e.dom.baseEl,o=i&&i.querySelector(".apexcharts-svg");if(!o)return n-e.layout.translateX;const r=o.getBoundingClientRect(),a=e.globals.svgWidth?r.width/e.globals.svgWidth:1;return(n-r.left)/(a||1)-e.layout.translateX}}const p1e=240,g1e=.05,m1e=.92,v1e=.02,b1e=16.6667,ph=15,BE=0;class y1e extends $N{constructor(e,n){super(e,n),this.w=e,this.ctx=n,this.dragged=!1,this.graphics=new Be(this.w),this.eventList=["mousedown","mouseleave","mousemove","touchstart","touchmove","mouseup","touchend"],this.clientX=0,this.clientY=0,this.startX=0,this.endX=0,this.dragX=0,this.startY=0,this.endY=0,this.dragY=0,this.moveDirection="none"}init({xyRatios:e}){const n=this.w,i=this;this.xyRatios=e,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.constraints=new yN(0,0,n.layout.gridWidth,n.layout.gridHeight),this.zoomRect.node.classList.add("apexcharts-zoom-rect"),this.selectionRect.node.classList.add("apexcharts-selection-rect"),n.dom.Paper.add(this.zoomRect),n.dom.Paper.add(this.selectionRect),n.config.chart.selection.type==="x"?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:n.layout.gridWidth,maxY:n.layout.gridHeight}).on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")):n.config.chart.selection.type==="y"?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:n.layout.gridWidth}).on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")):this.slDraggableRect=this.selectionRect.draggable().on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")),this.preselectedSelection(),this.hoverArea=n.dom.baseEl.querySelector(`${n.globals.chartClass} .apexcharts-svg`),this.hoverArea&&(this.hoverArea.classList.add("apexcharts-zoomable"),this.eventList.forEach(o=>{var r;(r=this.hoverArea)==null||r.addEventListener(o,i.svgMouseEvents.bind(i,e),{capture:!1,passive:!0})}),this._wheelZoomEnabled()&&this.hoverArea.addEventListener("wheel",i.mouseWheelEvent.bind(i),{capture:!1,passive:!1}),this.hoverArea.addEventListener("keydown",i.escapeResetEvent.bind(i),{capture:!1,passive:!0}),this._momentumEnabled()&&["touchstart","touchmove","touchend","touchcancel"].forEach(o=>{var r;(r=this.hoverArea)==null||r.addEventListener(o,i.momentumTouch.bind(i),{capture:!1,passive:!1})}))}destroy(){this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null}svgMouseEvents(e,n){const i=this.w,o=this.ctx.toolbar;if(i.interact.momentum&&i.interact.momentum.busy||this._momentumEnabled()&&n.touches&&n.touches.length>1)return;const r=i.interact.zoomEnabled?i.config.chart.zoom.type:i.config.chart.selection.type,a=i.config.chart.toolbar.autoSelected;if(a!=="measure"&&(n.shiftKey?(i.interact.shiftWasPressed=!0,o.enableZoomPanFromToolbar(a==="pan"?"zoom":"pan")):i.interact.shiftWasPressed&&(o.enableZoomPanFromToolbar(a),i.interact.shiftWasPressed=!1)),!n.target)return;const s=n.target.classList;let l;if(n.target.parentNode&&n.target.parentNode!==null&&(l=n.target.parentNode.classList),!(s.contains("apexcharts-legend-marker")||s.contains("apexcharts-legend-text")||l&&l.contains("apexcharts-toolbar"))){if(this.clientX=n.type==="touchmove"||n.type==="touchstart"?n.touches[0].clientX:n.type==="touchend"?n.changedTouches[0].clientX:n.clientX,this.clientY=n.type==="touchmove"||n.type==="touchstart"?n.touches[0].clientY:n.type==="touchend"?n.changedTouches[0].clientY:n.clientY,n.type==="mousedown"&&n.which===1||n.type==="touchstart"){const u=this._gridRect();if(!u)return;this.startX=this._screenXToPlotPx(this.clientX),this.startY=this.clientY-u.top,this.dragged=!1,this.w.interact.mousedown=!0}(n.type==="mousemove"&&n.which===1||n.type==="touchmove")&&(this.dragged=!0,i.interact.panEnabled?(i.interact.selection=null,this.w.interact.mousedown&&this.panDragging({context:this,zoomtype:r,xyRatios:this.xyRatios})):(this.w.interact.mousedown&&i.interact.zoomEnabled||this.w.interact.mousedown&&i.interact.selectionEnabled)&&(this.selection=this.selectionDrawing({context:this,zoomtype:r}))),(n.type==="mouseup"||n.type==="touchend"||n.type==="mouseleave")&&this.handleMouseUp({zoomtype:r}),this.makeSelectionRectDraggable()}}handleMouseUp({zoomtype:e,isResized:n}){const i=this.w,o=this._gridRect();o&&(this.w.interact.mousedown||n)&&(this.endX=this._screenXToPlotPx(this.clientX),this.endY=this.clientY-o.top,this.dragX=Math.abs(this.endX-this.startX),this.dragY=Math.abs(this.endY-this.startY),(i.interact.zoomEnabled||i.interact.selectionEnabled)&&this.selectionDrawn({context:this,zoomtype:e})),i.interact.zoomEnabled&&this.hideSelectionRect(this.selectionRect),this.dragged=!1,this.w.interact.mousedown=!1}_incidentalZoomEnabled(e){var n,i,o;const r=this.w.config.chart;return!r.zoom||!r.zoom.enabled?!1:e!=="auto"?!!e:!!((n=r.toolbar)!=null&&n.show&&((o=(i=r.toolbar)==null?void 0:i.tools)!=null&&o.reset))}_wheelZoomEnabled(){const{zoom:e}=this.w.config.chart;return this._incidentalZoomEnabled(e&&e.allowMouseWheelZoom)}_focusForKeyboard(){var e,n;const i=this.w.dom.Paper&&this.w.dom.Paper.node;if(!(!i||typeof i.focus!="function")&&i.getAttribute("tabindex")!==null){(n=(e=this.ctx.keyboardNavigation)==null?void 0:e.notePointerFocus)==null||n.call(e);try{i.focus({preventScroll:!0})}catch{i.focus()}}}escapeResetEvent(e){if(e.key!=="Escape"&&e.key!=="Esc"||!this.w.interact.zoomed)return;const n=this.ctx.keyboardNavigation;n&&n.active||this.resetControlAllowed()&&this.handleZoomReset()}_wheel(){const e=this.w.interact;return e.wheel||(e.wheel={factor:1,clientX:0,rafId:null,endTimer:null}),e.wheel}mouseWheelEvent(e){e.preventDefault();const n=this._wheel();let i=e.deltaY;e.deltaMode===1?i*=33:e.deltaMode===2&&(i*=330),n.factor*=Math.pow(2,i/p1e),n.clientX=e.clientX,n.rafId==null&&(n.rafId=requestAnimationFrame(()=>this._applyWheelZoom())),n.endTimer&&clearTimeout(n.endTimer),n.endTimer=setTimeout(()=>this._endWheelZoom(),150)}_applyWheelZoom(){const e=this.w,n=this._wheel();n.rafId=null;const i=n.factor;if(n.factor=1,i===1||e.globals.isDestroyed)return;const o=this._gridRect();if(!o||!o.width)return;const{min:r,max:a}=this._currentXWindow(),s=a-r,l=Math.min(Math.max((n.clientX-o.left)/o.width,0),1);let c=s*i;const u=this._clampBounds();if(u){const m=e.globals.minXDiff>0&&isFinite(e.globals.minXDiff)?e.globals.minXDiff:0,v=Math.max(m*2,(u.max-u.min)*1e-6);cu.max-u.min&&(c=u.max-u.min)}let f=r+l*s-l*c,h=f+c;const p=s*1e-9;if(Math.abs(f-r)0&&n.height>0&&(this.selectionRect.select(!1).resize(!1),this.selectionRect.select({createRot:()=>{},updateRot:()=>{},createHandle:(i,o,r,a,s)=>s==="l"||s==="r"?i.circle(8).css({"stroke-width":1,stroke:"#333",fill:"#fff"}):i.circle(0),updateHandle:(i,o)=>i.center(o[0],o[1])}).resize().on("resize",()=>{var i;if(this._clampSelectionRectToPlot(),e.interact.selectionEnabled)e.interact.selection={x:parseFloat(this.selectionRect.node.getAttribute("x")),y:parseFloat(this.selectionRect.node.getAttribute("y")),width:parseFloat(this.selectionRect.node.getAttribute("width")),height:parseFloat(this.selectionRect.node.getAttribute("height"))},clearTimeout((i=this.w.globals.selectionResizeTimer)!=null?i:void 0),this.w.globals.selectionResizeTimer=window.setTimeout(()=>{this._emitSelectionFromRect()},30);else{const o=e.interact.zoomEnabled?e.config.chart.zoom.type:e.config.chart.selection.type;this.handleMouseUp({zoomtype:o,isResized:!0})}}))}preselectedSelection(){const e=this.w,n=this.xyRatios;if(!e.interact.zoomEnabled){if(typeof e.interact.selection<"u"&&e.interact.selection!==null)this.drawSelectionRect(vt(Ye({},e.interact.selection),{translateX:e.layout.translateX,translateY:e.layout.translateY}));else if(e.config.chart.selection.xaxis.min!==void 0&&e.config.chart.selection.xaxis.max!==void 0){let i=so.dataXToPx(e,e.config.chart.selection.xaxis.min),o=so.dataXToPx(e,e.config.chart.selection.xaxis.max)-i;e.axisFlags.isRangeBar&&(i=(e.config.chart.selection.xaxis.min-e.globals.yAxisScale[0].niceMin)/n.invertedYRatio,o=(e.config.chart.selection.xaxis.max-e.config.chart.selection.xaxis.min)/n.invertedYRatio);const r={x:i,y:0,width:o,height:e.layout.gridHeight,translateX:e.layout.translateX,translateY:e.layout.translateY,selectionEnabled:!0};this.drawSelectionRect(r),this.makeSelectionRectDraggable(),typeof e.config.chart.events.selection=="function"&&e.config.chart.events.selection(this.ctx,{xaxis:{min:e.config.chart.selection.xaxis.min,max:e.config.chart.selection.xaxis.max},yaxis:{}})}}}drawSelectionRect({x:e,y:n,width:i,height:o,translateX:r=0,translateY:a=0}){const s=this.w,l=this.zoomRect,c=this.selectionRect;if(this.dragged||s.interact.selection!==null){const u={transform:"translate("+r+", "+a+")"};s.interact.zoomEnabled&&this.dragged&&(i<0&&(i=1),l.attr({x:e,y:n,width:i,height:o,fill:s.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":s.config.chart.zoom.zoomedArea.fill.opacity,stroke:s.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":s.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":s.config.chart.zoom.zoomedArea.stroke.opacity}),Be.setAttrs(l.node,u)),s.interact.selectionEnabled&&(c.attr({x:e,y:n,width:i>0?i:0,height:o>0?o:0,fill:s.config.chart.selection.fill.color,"fill-opacity":s.config.chart.selection.fill.opacity,stroke:s.config.chart.selection.stroke.color,"stroke-width":s.config.chart.selection.stroke.width,"stroke-dasharray":s.config.chart.selection.stroke.dashArray,"stroke-opacity":s.config.chart.selection.stroke.opacity}),Be.setAttrs(c.node,u))}}_clampSelectionRectToPlot(){const e=this.selectionRect;if(!e||!e.node)return;const n=this.w.layout.gridWidth;if(!(n>BE))return;const i=parseFloat(e.node.getAttribute("x"))||0,o=parseFloat(e.node.getAttribute("width"))||0,r=l=>Math.min(Math.max(l,BE),n),a=r(i),s=r(i+o);a===i&&s===i+o||(e.attr({x:a,width:s-a}),e._updateSelectPositions&&e._updateSelectPositions())}hideSelectionRect(e){e&&e.attr({x:0,y:0,width:0,height:0})}selectionDrawing({context:e,zoomtype:n}){const i=this.w,o=e,r=this._gridRect();if(!r)return;const a=o.startX-1,s=o.startY;let l=!1,c=!1;const u=this._screenXToPlotPx(o.clientX),d=o.clientY-r.top;let f=u-a,h=d-s,p={translateX:i.layout.translateX,translateY:i.layout.translateY};return Math.abs(f+a)>i.layout.gridWidth?f=i.layout.gridWidth-a:u<0&&(f=a),a>u&&(l=!0,f=Math.abs(f)),s>d&&(c=!0,h=Math.abs(h)),n==="x"?p={x:l?a-f:a,y:0,width:f,height:i.layout.gridHeight}:n==="y"?p={x:0,y:c?s-h:s,width:i.layout.gridWidth,height:h}:p={x:l?a-f:a,y:c?s-h:s,width:f,height:h},p=vt(Ye({},p),{translateX:i.layout.translateX,translateY:i.layout.translateY}),o.drawSelectionRect(p),o.selectionDragging("resizing"),p}selectionDragging(e,n){var i;const o=this.w;if(!n)return;n.preventDefault();const{handler:r,box:a}=n.detail,s=this.constraints;let{x:l,y:c}=a;ls.x2&&(l=s.x2-a.w),a.y2>s.y2&&(c=s.y2-a.h),r.move(l,c);const u=this.selectionRect;let d=0;e==="resizing"&&(d=30);const f=m=>parseFloat(u.node.getAttribute(m)),h={x:f("x"),y:f("y"),width:f("width"),height:f("height")};o.interact.selection=h;const p=o.config.chart.link,g=!!(p&&(p.enabled||typeof p.dimension=="function"));(typeof o.config.chart.events.selection=="function"||g)&&o.interact.selectionEnabled&&(clearTimeout((i=this.w.globals.selectionResizeTimer)!=null?i:void 0),this.w.globals.selectionResizeTimer=window.setTimeout(()=>{this._emitSelectionFromRect()},d))}_emitSelectionFromRect(){var e;const n=this.w;if(!n.interact.selectionEnabled)return;const i=n.config.chart.link,o=!!(i&&(i.enabled||typeof i.dimension=="function"));if(typeof n.config.chart.events.selection!="function"&&!o)return;const r=this._gridRect();if(!r)return;const a=this.selectionRect.node.getBoundingClientRect(),s=this.xyRatios;let l,c,u,d;const f=this._screenXToPlotPx(a.left),h=this._screenXToPlotPx(a.right);if(n.axisFlags.isRangeBar)l=n.globals.yAxisScale[0].niceMin+f*s.invertedYRatio,c=n.globals.yAxisScale[0].niceMin+h*s.invertedYRatio,u=0,d=1;else{if(!n.globals.xAxisScale)return;l=so.pxToDataX(n,f),c=so.pxToDataX(n,h),u=n.globals.yAxisScale[0].niceMin+(r.bottom-a.bottom)*s.yRatio[0],d=n.globals.yAxisScale[0].niceMax-(a.top-r.top)*s.yRatio[0]}const p={xaxis:{min:l,max:c},yaxis:{min:u,max:d}};typeof n.config.chart.events.selection=="function"&&n.config.chart.events.selection(this.ctx,p),n.config.chart.brush.enabled&&n.config.chart.events.brushScrolled!==void 0&&n.config.chart.events.brushScrolled(this.ctx,p),(e=this.ctx.linkedViews)==null||e.onSourceSelection(p.xaxis)}selectionDrawn({context:e,zoomtype:n}){var i;const o=this.w,r=e,a=this.xyRatios,s=this.ctx.toolbar,l=o.interact.zoomEnabled?r.zoomRect.node.getBoundingClientRect():r.selectionRect.node.getBoundingClientRect(),c=r._gridRect();if(!c)return;const u=this._screenXToPlotPx(l.left),d=this._screenXToPlotPx(l.right),f=l.top-c.top,h=l.bottom-c.top;let p,g;o.axisFlags.isRangeBar?(p=o.globals.yAxisScale[0].niceMin+u*a.invertedYRatio,g=o.globals.yAxisScale[0].niceMin+d*a.invertedYRatio):(p=so.pxToDataX(o,u),g=so.pxToDataX(o,d));const m=[],v=[];if(o.config.yaxis.forEach((b,y)=>{const w=o.globals.seriesYAxisMap[y][0],x=o.globals.yAxisScale[y].niceMax-a.yRatio[w]*f,$=o.globals.yAxisScale[y].niceMax-a.yRatio[w]*h;m.push(x),v.push($)}),r.dragged&&(r.dragX>10||r.dragY>10)&&p!==g){if(o.interact.zoomEnabled){if(!o.globals.initialConfig)return;let b=Ee.clone(o.globals.initialConfig.yaxis),y=Ee.clone(o.globals.initialConfig.xaxis);if(o.interact.zoomed=!0,o.config.xaxis.convertedCatToNumeric&&(p=Math.floor(p),g=Math.floor(g),p<1&&(p=1,g=o.globals.dataPoints),g-p<2&&(g=p+1)),(n==="xy"||n==="x")&&(y={min:p,max:g}),(n==="xy"||n==="y")&&b.forEach(($,S)=>{b[S].min=v[S],b[S].max=m[S]}),s){const $=s.getBeforeZoomRange(y,b);$&&(y=$.xaxis?$.xaxis:y,b=$.yaxis?$.yaxis:b)}const w={xaxis:y};o.config.chart.group||(w.yaxis=b);const x=r.ctx.updateHelpers._updateOptions(w,!1,r.w.config.chart.animations.dynamicAnimation.enabled);x&&typeof x.then=="function"?x.then(()=>r._focusForKeyboard()):r._focusForKeyboard(),typeof o.config.chart.events.zoomed=="function"&&s.zoomCallback(y,b)}else if(o.interact.selectionEnabled){let b=null,y=null;if(y={min:p,max:g},n==="xy"||n==="y"){const w=Ee.clone(o.config.yaxis);b=w,w.forEach((x,$)=>{w[$].min=v[$],w[$].max=m[$]})}o.interact.selection=r.selection,typeof o.config.chart.events.selection=="function"&&o.config.chart.events.selection(r.ctx,{xaxis:y,yaxis:b}),(i=r.ctx.linkedViews)==null||i.onSourceSelection(y)}}}panDragging({context:e}){var n;const i=this.w,o=e;if(typeof i.interact.lastClientPosition.x<"u"){const s=i.interact.lastClientPosition.x-o.clientX,l=((n=i.interact.lastClientPosition.y)!=null?n:0)-o.clientY;Math.abs(s)>Math.abs(l)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(l)&&s<0?this.moveDirection="right":Math.abs(l)>Math.abs(s)&&l>0?this.moveDirection="up":Math.abs(l)>Math.abs(s)&&l<0&&(this.moveDirection="down")}i.interact.lastClientPosition={x:o.clientX,y:o.clientY};const r=i.axisFlags.isRangeBar?i.globals.minY:i.globals.minX,a=i.axisFlags.isRangeBar?i.globals.maxY:i.globals.maxX;o.panScrolled(r,a)}panScrolled(e,n){var i,o;const r=this.w,a=this.xyRatios;if(!r.globals.initialConfig)return;const s=Ee.clone(r.globals.initialConfig.yaxis);let l=a.xRatio,c=r.globals.minX,u=r.globals.maxX;if(r.axisFlags.isRangeBar&&(l=a.invertedYRatio,c=r.globals.minY,u=r.globals.maxY),this.moveDirection==="left"?(e=c+r.layout.gridWidth/ph*l,n=u+r.layout.gridWidth/ph*l):this.moveDirection==="right"&&(e=c-r.layout.gridWidth/ph*l,n=u-r.layout.gridWidth/ph*l),!r.axisFlags.isRangeBar){const h=(i=r.globals.dataReducerRawMinX)!=null?i:r.globals.initialMinX,p=(o=r.globals.dataReducerRawMaxX)!=null?o:r.globals.initialMaxX;(ep)&&(e=c,n=u)}const f={xaxis:{min:e,max:n}};r.config.chart.group||(f.yaxis=s),this.updateScrolledChart(f,e,n)}updateScrolledChart(e,n,i){const o=this.w;if(this.ctx.updateHelpers._updateOptions(e,!1,!1),typeof o.config.chart.events.scrolled=="function"){const r={xaxis:{min:n,max:i}};o.config.chart.events.scrolled(this.ctx,r),this.ctx.events.fireEvent("scrolled",r)}}_momentumEnabled(){return this._pinchEnabled()||this._panInertiaEnabled()}_pinchEnabled(){return this._incidentalZoomEnabled(this.w.config.chart.zoom.pinch)}_panInertiaEnabled(){const e=this.w.config.chart;return!!(e.pan&&e.pan.inertia)}_m(){const e=this.w.interact;return e.momentum||(e.momentum={busy:!1,pinch:null,panState:null,samples:[],inertiaRAF:null}),e.momentum}_currentXWindow(){const e=this.w;return e.axisFlags.isRangeBar?{min:e.globals.minY,max:e.globals.maxY}:{min:e.globals.minX,max:e.globals.maxX}}_gridRect(){const e=this.w.dom.baseEl,n=e&&e.querySelector(".apexcharts-grid");return n?n.getBoundingClientRect():null}_screenXToPlotPx(e){return so.screenXToPlotPx(this.w,e)}_clampBounds(){var e,n;const i=this.w;return i.axisFlags.isRangeBar?null:{min:(e=i.globals.dataReducerRawMinX)!=null?e:i.globals.initialMinX,max:(n=i.globals.dataReducerRawMaxX)!=null?n:i.globals.initialMaxX}}_applyXRange(e,n,i){const o=this.w;if(!o.globals.initialConfig)return!1;const r=this._currentXWindow(),a=i&&n-e>r.max-r.min,s=this._clampBounds();if(s){const c=n-e;es.max&&(n=s.max,e=n-c),es.max&&(n=Math.floor(s.max)),n-e<2)||!(n>e))return!1;const l={xaxis:{min:e,max:n}};return o.config.chart.group||(l.yaxis=Ee.clone(o.globals.initialConfig.yaxis)),i&&(o.interact.zoomed=!0),this.ctx.updateHelpers._updateOptions(l,!1,!1),{minX:e,maxX:n}}_cancelInertia(){const e=this._m();e.inertiaRAF!=null&&(cancelAnimationFrame(e.inertiaRAF),e.inertiaRAF=null)}_fireScrolled(){const e=this.w;if(typeof e.config.chart.events.scrolled!="function")return;const{min:n,max:i}=this._currentXWindow(),o={xaxis:{min:n,max:i}};e.config.chart.events.scrolled(this.ctx,o),this.ctx.events.fireEvent("scrolled",o)}_pushSample(e,n){const i=this._m().samples;for(i.push({x:e,t:n});i.length>6;)i.shift()}momentumTouch(e){const n=this.w,i=this._m(),o=e.type;if(o==="touchstart"){this._cancelInertia();const r=this._gridRect();if(!r)return;if(e.touches.length>=2&&this._pinchEnabled())e.preventDefault(),i.busy=!0,i.panState=null,this._beginPinch(e,r);else if(e.touches.length===1&&this._panInertiaEnabled()&&n.interact.panEnabled){i.busy=!0,i.pinch=null;const a=e.touches[0],s=this._currentXWindow(),l=n.layout.gridWidth||1;i.panState={startX:a.clientX,startY:a.clientY,axis:null,minX0:s.min,maxX0:s.max,ratio0:(s.max-s.min)/l},i.samples=[{x:a.clientX,t:e.timeStamp}]}return}if(o==="touchmove"){i.pinch&&e.touches.length>=2?(e.preventDefault(),this._movePinch(e)):i.panState&&e.touches.length===1&&this._movePan(e);return}i.pinch?e.touches.length<2&&this._endPinch():i.panState&&e.touches.length===0&&this._endPan(),e.touches.length===0&&(n.interact.mousedown=!1,this.dragged=!1,i.inertiaRAF==null&&!i.pinch&&!i.panState&&(i.busy=!1))}_beginPinch(e,n){const i=this.w,o=e.touches[0],r=e.touches[1],a=Math.hypot(r.clientX-o.clientX,r.clientY-o.clientY)||1,s=(o.clientX+r.clientX)/2-n.left-i.globals.barPadForNumericAxis,{min:l,max:c}=this._currentXWindow();this._m().pinch={d0:a,cx0:s,minX0:l,maxX0:c,gridWidth:i.layout.gridWidth||1}}_movePinch(e){const n=this.w,i=this._m().pinch;if(!i)return;const o=this._gridRect();if(!o)return;const r=e.touches[0],a=e.touches[1],s=Math.hypot(a.clientX-r.clientX,a.clientY-r.clientY)||1,l=(r.clientX+a.clientX)/2-o.left-n.globals.barPadForNumericAxis,c=i.maxX0-i.minX0,u=c*(i.d0/s);let f=i.minX0+i.cx0/i.gridWidth*c-l/i.gridWidth*u,h=f+u;const p=this._clampBounds();if(p){const g=n.globals.minXDiff>0&&isFinite(n.globals.minXDiff)?n.globals.minXDiff:0,m=Math.max(g*2,(p.max-p.min)*1e-6);if(h-fs){n.busy=!1,n.panState=null;return}i.axis="x"}if(i.axis!=="x")return;e.preventDefault();const a=(o.clientX-i.startX)*i.ratio0;this._pushSample(o.clientX,e.timeStamp),this._applyXRange(i.minX0-a,i.maxX0-a,!1)}_endPan(){const e=this._m(),n=e.panState;e.panState=null;let i=0;const o=e.samples;if(o.length>=2){const r=o[0],a=o[o.length-1],s=a.t-r.t;s>0&&(i=(a.x-r.x)/s)}e.samples=[],n&&n.axis==="x"&&this._panInertiaEnabled()&&Math.abs(i)>g1e?this._startInertia(i):(e.busy=!1,this._fireScrolled())}_startInertia(e){const n=this.w,i=this._m(),o=n.config.chart.pan&&n.config.chart.pan.friction,r=typeof o=="number"?Math.min(Math.max(o,.5),.999):m1e;let a=e,s=null;i.busy=!0;const l=c=>{if(n.globals.isDestroyed){i.inertiaRAF=null,i.busy=!1;return}if(s==null){s=c,i.inertiaRAF=requestAnimationFrame(l);return}const u=c-s;if(s=c,a*=Math.pow(r,u/b1e),Math.abs(a)0&&g.minX<=m.min+(m.max-m.min)*1e-6||p<0&&g.maxX>=m.max-(m.max-m.min)*1e-6)){i.inertiaRAF=null,i.busy=!1,this._fireScrolled();return}i.inertiaRAF=requestAnimationFrame(l)};i.inertiaRAF=requestAnimationFrame(l)}}Vn.registerFeatures({toolbar:$N,zoomPanSelection:y1e});let Pv=class{constructor(e){this.w=e.w,this.annoCtx=e}setOrientations(e,n=null){var i,o;const r=this.w;if(e.label.orientation==="vertical"){const a=n!==null?n:0,s=r.dom.baseEl.querySelector(`.apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='${a}']`);if(s!==null){const l=s.getBBox();s.setAttribute("x",String(parseFloat((i=s.getAttribute("x"))!=null?i:"0")-l.height+4));const c=e.label.position==="top"?l.width:-l.width;s.setAttribute("y",String(parseFloat((o=s.getAttribute("y"))!=null?o:"0")+c));const{x:u,y:d}=this.annoCtx.graphics.rotateAroundCenter(s);s.setAttribute("transform",`rotate(-90 ${u} ${d})`)}}}addBackgroundToAnno(e,n){const i=this.w;if(!e||!n.label.text||!String(n.label.text).trim())return null;const o=i.dom.baseEl.querySelector(".apexcharts-grid");if(!o)return null;const r=o.getBoundingClientRect(),a=o.getBBox(),s=r.width/a.width||1,l=e.getBoundingClientRect();let{left:c,right:u,top:d,bottom:f}=n.label.style.padding;n.label.orientation==="vertical"&&([d,f,c,u]=[c,u,d,f]);const h=r.left-a.x*s,p=r.top-a.y*s,g=(l.left-h)/s-c,m=(l.top-p)/s-d,v=this.annoCtx.graphics.drawRect(g,m,l.width/s+c+u,l.height/s+d+f,n.label.borderRadius,n.label.style.background,1,n.label.borderWidth,n.label.borderColor,0);return n.id&&v.node.classList.add(n.id),v}annotationsBackground(){const e=this.w,n=(i,o,r)=>{const a=e.dom.baseEl.querySelector(`.apexcharts-${r}-annotations .apexcharts-${r}-annotation-label[rel='${o}']`);if(a){const s=a.parentNode,l=this.addBackgroundToAnno(a,i);if(l){s==null||s.insertBefore(l.node,a);const c=a.getAttribute("x");c!==null&&Ms(l,parseFloat(c),e),i.label.mouseEnter&&l.node.addEventListener("mouseenter",i.label.mouseEnter.bind(this,i)),i.label.mouseLeave&&l.node.addEventListener("mouseleave",i.label.mouseLeave.bind(this,i)),i.label.click&&l.node.addEventListener("click",i.label.click.bind(this,i))}}};e.config.annotations.xaxis.forEach((i,o)=>n(i,o,"xaxis")),e.config.annotations.yaxis.forEach((i,o)=>n(i,o,"yaxis")),e.config.annotations.points.forEach((i,o)=>n(i,o,"point"))}usesCategoryX(){const e=this.w;return(e.config.xaxis.type==="category"||e.config.xaxis.convertedCatToNumeric)&&!this.annoCtx.invertAxis&&!e.axisFlags.dataFormatXNumeric&&!e.config.chart.sparkline.enabled}hasXDomain(){const e=this.w;return this.annoCtx.invertAxis?Ee.isNumber(e.globals.minY)&&Ee.isNumber(e.globals.yRange[0]):this.usesCategoryX()?e.labelData.labels.length>0||e.labelData.categoryLabels.length>0:Ee.isNumber(e.globals.minX)&&Ee.isNumber(e.globals.xRange)}getY1Y2(e,n){var i,o,r;const a=this.w,s=e==="y1"?n.y:n.y2,l=typeof s=="string"&&s.includes("px");let c,u=!1;if(this.annoCtx.invertAxis){const d=a.config.xaxis.convertedCatToNumeric?a.labelData.categoryLabels:a.labelData.labels,f=d.indexOf(s);if(!l&&f===-1)return{yP:0,clipped:!0};const h=a.dom.baseEl.querySelector(`.apexcharts-yaxis-texts-g text:nth-child(${f+1})`);c=h?parseFloat((i=h.getAttribute("y"))!=null?i:"0"):(a.layout.gridHeight/d.length-1)*(f+1)-a.globals.barHeight,n.seriesIndex!==void 0&&a.globals.barHeight&&(c-=a.globals.barHeight/2*(a.seriesData.series.length-1)-a.globals.barHeight*n.seriesIndex)}else{if(!a.config.yaxis[n.yAxisIndex])return{yP:0,clipped:!0};const d=a.globals.seriesYAxisMap[n.yAxisIndex],f=(o=d==null?void 0:d[0])!=null?o:null;if(f===null&&a.seriesData.series.length)return{yP:0,clipped:!0};const h=f===null?a.globals.minY:a.globals.minYArr[f],p=f===null?a.globals.maxY-a.globals.minY:a.globals.yRange[f],g=a.config.yaxis[n.yAxisIndex].logarithmic&&f!==null?new No(this.w).getLogVal(a.config.yaxis[n.yAxisIndex].logBase,s,f)/a.globals.yLogRatio[f]:(s-h)/(p/a.layout.gridHeight);c=a.layout.gridHeight-Math.min(Math.max(g,0),a.layout.gridHeight),u=g>a.layout.gridHeight||g<0,n.marker&&(n.y===void 0||n.y===null)&&(c=0),(r=a.config.yaxis[n.yAxisIndex])!=null&&r.reversed&&(c=g)}return l&&(c=parseFloat(s)),{yP:c,clipped:u}}getX1X2(e,n){const i=this.w,o=e==="x1"?n.x:n.x2,r=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,a=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,s=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange;let l=!1;const c=typeof o=="string"&&o.includes("px"),u=o==null&&n.marker;if(!c&&!u&&!this.hasXDomain())return{x:0,clipped:!0};let d=this.annoCtx.inversedReversedAxis?(a-o)/(s/i.layout.gridWidth):(o-r)/(s/i.layout.gridWidth);return(i.config.xaxis.type==="category"||i.config.xaxis.convertedCatToNumeric)&&!this.annoCtx.invertAxis&&!i.axisFlags.dataFormatXNumeric&&(i.config.chart.sparkline.enabled||(d=this.getStringX(o))),typeof o=="string"&&o.includes("px")&&(d=parseFloat(o)),o==null&&n.marker&&(d=i.layout.gridWidth),n.seriesIndex!==void 0&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(d-=i.globals.barWidth/2*(i.seriesData.series.length-1)-i.globals.barWidth*n.seriesIndex),typeof d!="number"&&(d=0,l=!0),parseFloat(d.toFixed(10))>parseFloat(i.layout.gridWidth.toFixed(10))?(d=i.layout.gridWidth,l=!0):d<0&&(d=0,l=!0),{x:d,clipped:l}}getStringX(e){var n;const i=this.w;let o=e;if(i.config.xaxis.convertedCatToNumeric&&i.labelData.categoryLabels.length){const s=String(e);e=i.labelData.categoryLabels.findIndex(l=>String(l)===s)+1}const r=i.labelData.labels.map(s=>Array.isArray(s)?s.join(" "):s).indexOf(e),a=i.dom.baseEl.querySelector(`.apexcharts-xaxis-texts-g text:nth-child(${r+1})`);return a&&(o=parseFloat((n=a.getAttribute("x"))!=null?n:"0")),o}};class x1e{constructor(e){this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new Pv(this.annoCtx)}addXaxisAnnotation(e,n,i){const o=this.w,r=this.helpers.getX1X2("x1",e);let a=r.x;const s=r.clipped;let l=!0,c;const u=e.label.text,d=e.strokeDashArray;if(Ee.isNumber(a)){if(e.x2===null||typeof e.x2>"u"){if(!s){const f=this.annoCtx.graphics.drawLine(a+e.offsetX,0+e.offsetY,a+e.offsetX,o.layout.gridHeight+e.offsetY,e.borderColor,d,e.borderWidth);n.appendChild(f.node),e.id&&f.node.classList.add(e.id),Ms(f,a+e.offsetX,o)}}else{const f=this.helpers.getX1X2("x2",e);if(c=f.x,l=f.clipped,c{this.addXaxisAnnotation(i,n.node,o)}),n}}class w1e{constructor(e){this.w=e.w,this.annoCtx=e,this.helpers=new Pv(this.annoCtx),this.axesUtils=new d$(this.annoCtx.w,{theme:this.annoCtx.theme,timeScale:this.annoCtx.timeScale})}addYaxisAnnotation(e,n,i){const o=this.w,r=e.strokeDashArray;let a=this.helpers.getY1Y2("y1",e),s=a.yP;const l=a.clipped;let c,u=!0,d=!1;const f=e.label.text;if(e.y2===null||typeof e.y2>"u"){if(!l){d=!0;const h=this.annoCtx.graphics.drawLine(0+e.offsetX,s+e.offsetY,this._getYAxisAnnotationWidth(e),s+e.offsetY,e.borderColor,r,e.borderWidth);n.appendChild(h.node),e.id&&h.node.classList.add(e.id)}}else{if(a=this.helpers.getY1Y2("y2",e),c=a.yP,u=a.clipped,c>s){const h=s;s=c,c=h}if(!(l&&u)){d=!0;const h=this.annoCtx.graphics.drawRect(0+e.offsetX,c+e.offsetY,this._getYAxisAnnotationWidth(e),s-c,0,e.fillColor,e.opacity,1,e.borderColor,r);h.node.classList.add("apexcharts-annotation-rect"),h.attr("clip-path",`url(#gridRectMask${o.globals.cuid})`),n.appendChild(h.node),e.id&&h.node.classList.add(e.id)}}if(d){const h=e.label.position==="right"?o.layout.gridWidth:e.label.position==="center"?o.layout.gridWidth/2:0,p=this.annoCtx.graphics.drawText({x:h+e.label.offsetX,y:(c??s)+e.label.offsetY-3,text:f,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:`apexcharts-yaxis-annotation-label ${e.label.style.cssClass} ${e.id?e.id:""}`});p.attr({rel:i}),n.appendChild(p.node)}}_getYAxisAnnotationWidth(e){const n=this.w;let i=n.layout.gridWidth;return e.width.indexOf("%")>-1?i=n.layout.gridWidth*parseInt(e.width,10)/100:i=parseInt(e.width,10),i+e.offsetX}drawYAxisAnnotations(){const e=this.w,n=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.forEach((i,o)=>{i.yAxisIndex=this.axesUtils.translateYAxisIndex(i.yAxisIndex),this.axesUtils.isYAxisHidden(i.yAxisIndex)&&this.axesUtils.yAxisAllSeriesCollapsed(i.yAxisIndex)||this.addYaxisAnnotation(i,n.node,o)}),n}}class S1e{constructor(e){this.w=e.w,this.annoCtx=e,this.helpers=new Pv(this.annoCtx)}addPointAnnotation(e,n,i){const o=this.w;if(o.globals.collapsedSeriesIndices.indexOf(e.seriesIndex)>-1)return;const r=this.helpers.getX1X2("x1",e),a=r.x,s=r.clipped,l=this.helpers.getY1Y2("y1",e),c=l.yP,u=l.clipped;if(Ee.isNumber(a)&&!(u||s)){const d={pSize:e.marker.size,pointStrokeWidth:e.marker.strokeWidth,pointFillColor:e.marker.fillColor,pointStrokeColor:e.marker.strokeColor,shape:e.marker.shape,pRadius:e.marker.radius,class:`apexcharts-point-annotation-marker ${e.marker.cssClass} ${e.id?e.id:""}`};let f=this.annoCtx.graphics.drawMarker(a+e.marker.offsetX,c+e.marker.offsetY,d);n.appendChild(f.node);const h=[f.node];Ms(f,a,o);const p=e.label.text?e.label.text:"",g=this.getConstrainedLabelX(p,a+e.label.offsetX,e.label),m=this.annoCtx.graphics.drawText({x:g,y:c+e.label.offsetY-e.marker.size-parseFloat(e.label.style.fontSize)/1.6,text:p,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:`apexcharts-point-annotation-label ${e.label.style.cssClass} ${e.id?e.id:""}`});if(m.attr({rel:i}),n.appendChild(m.node),Ms(m,a,o),e.customSVG.SVG){const v=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+e.customSVG.cssClass});v.attr({transform:`translate(${a+e.customSVG.offsetX}, ${c+e.customSVG.offsetY})`}),v.node.innerHTML=e.customSVG.SVG,n.appendChild(v.node),h.push(v.node)}if(e.image.path){const v=e.image.width?e.image.width:20,b=e.image.height?e.image.height:20;f=this.annoCtx.addImage({x:a+e.image.offsetX-v/2,y:c+e.image.offsetY-b/2,width:v,height:b,path:e.image.path,appendTo:".apexcharts-point-annotations"}),h.push(f.node)}e.tooltip&&e.tooltip.enabled&&h.forEach(v=>{v.addEventListener("mouseenter",()=>{this.showPointTooltip(e,v)}),v.addEventListener("mouseleave",()=>{this.hidePointTooltip()})}),e.mouseEnter&&f.node.addEventListener("mouseenter",e.mouseEnter.bind(this,e)),e.mouseLeave&&f.node.addEventListener("mouseleave",e.mouseLeave.bind(this,e)),e.click&&f.node.addEventListener("click",e.click.bind(this,e))}}getConstrainedLabelX(e,n,i){const o=this.w;if(!e)return n;const{width:r}=this.annoCtx.graphics.getTextRects(e,i.style.fontSize,i.style.fontFamily,void 0,!0,i.style.fontWeight);let a,s;switch(i.textAnchor){case"start":a=n,s=n+r;break;case"end":a=n-r,s=n;break;default:a=n-r/2,s=n+r/2}const l=i.style.padding||{};return a-=l.left||0,s+=l.right||0,a<0?n-a:s>o.layout.gridWidth?n-(s-o.layout.gridWidth):n}getPointTooltipEl(){const e=this.w;let n=e.dom.elWrap.querySelector(".apexcharts-annotation-tooltip");return n||(n=We.createElementNS("http://www.w3.org/1999/xhtml","div"),n.classList.add("apexcharts-tooltip","apexcharts-annotation-tooltip"),e.dom.elWrap.appendChild(n)),n}getPointTooltipContent(e){const n=this.w,i=e.tooltip||{};if(typeof i.formatter=="function")return i.formatter({annotation:e,seriesIndex:e.seriesIndex,id:e.id,w:n});let o=i.text!=null?i.text:e.label&&e.label.text;return Array.isArray(o)&&(o=o.join("
")),o==null?"":String(o)}showPointTooltip(e,n){const i=this.w,o=this.getPointTooltipContent(e);if(!o)return;const r=this.getPointTooltipEl();r.innerHTML=o;const a=e.tooltip.theme||i.config.tooltip.theme||"light";r.classList.remove("apexcharts-theme-light","apexcharts-theme-dark"),r.classList.add(`apexcharts-theme-${a}`),r.classList.add("apexcharts-active");const s=i.dom.elWrap.getBoundingClientRect(),l=n.getBoundingClientRect(),c=r.getBoundingClientRect(),u=e.tooltip.offsetX||0,d=e.tooltip.offsetY||0;let f=l.left-s.left+l.width/2-c.width/2,h=l.top-s.top-c.height-10;f=Math.max(0,Math.min(f,s.width-c.width)),h<0&&(h=l.top-s.top+l.height+10),r.style.left=f+u+"px",r.style.top=h+d+"px"}hidePointTooltip(){const e=this.w.dom.elWrap.querySelector(".apexcharts-annotation-tooltip");e&&e.classList.remove("apexcharts-active")}drawPointAnnotations(){const e=this.w,n=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((i,o)=>{this.addPointAnnotation(i,n.node,o)}),n}}class C1e{constructor(e,{theme:n=null,timeScale:i=null}={}){this.w=e,this.theme=n,this.timeScale=i,this.invertAxis=void 0,this.inversedReversedAxis=void 0,this.graphics=new Be(this.w),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new Pv(this),this.xAxisAnnotations=new x1e(this),this.yAxisAnnotations=new w1e(this),this.pointsAnnotations=new S1e(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.layout.gridWidth/this.w.globals.dataPoints}drawAxesAnnotations(){const e=this.w;if(e.globals.axisCharts){const n=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),o=this.pointsAnnotations.drawPointAnnotations(),r=e.config.chart.animations.enabled,a=[n,i,o],s=[i.node,n.node,o.node],l=e.config.chart.type==="line"||e.config.chart.type==="area"||e.config.chart.type==="rangeArea",c=[l,!1,l];for(let u=0;u<3;u++)e.dom.elGraphical.add(a[u]),r&&!e.globals.resized&&!e.globals.dataChanged&&e.config.chart.type!=="scatter"&&e.config.chart.type!=="bubble"&&e.globals.dataPoints>1&&!c[u]&&s[u].classList.add("apexcharts-element-hidden"),e.globals.delayedElements.push({el:s[u],index:0});this.helpers.annotationsBackground()}}drawImageAnnos(){this.w.config.annotations.images.map(n=>{this.addImage(n)})}drawTextAnnos(){this.w.config.annotations.texts.map(n=>{this.addText(n)})}addXaxisAnnotation(e,n,i){this.xAxisAnnotations.addXaxisAnnotation(e,n,i)}addYaxisAnnotation(e,n,i){this.yAxisAnnotations.addYaxisAnnotation(e,n,i)}addPointAnnotation(e,n,i){this.pointsAnnotations.addPointAnnotation(e,n,i)}addText(e){const{x:n,y:i,text:o,textAnchor:r,foreColor:a,fontSize:s,fontFamily:l,fontWeight:c,cssClass:u,backgroundColor:d,borderWidth:f,strokeDashArray:h,borderRadius:p,borderColor:g,appendTo:m=".apexcharts-svg",paddingLeft:v=4,paddingRight:b=4,paddingBottom:y=2,paddingTop:w=2}=e,x=this.w,$=this.graphics.drawText({x:n,y:i,text:o,textAnchor:r||"start",fontSize:s||"12px",fontWeight:c||"regular",fontFamily:l||x.config.chart.fontFamily,foreColor:a||x.config.chart.foreColor,cssClass:"apexcharts-text "+u?u:""}),S=x.dom.baseEl.querySelector(m);S&&S.appendChild($.node);const _=$.bbox();if(o){const P=this.graphics.drawRect(_.x-v,_.y-w,_.width+v+b,_.height+y+w,p,d||"transparent",1,f,g,h);S.insertBefore(P.node,$.node)}}addImage(e){const n=this.w,{path:i,x:o=0,y:r=0,width:a=20,height:s=20,appendTo:l=".apexcharts-svg"}=e,c=n.dom.Paper.image(i);c.size(a,s).move(o,r);const u=n.dom.baseEl.querySelector(l);return u&&u.appendChild(c.node),c}addXaxisAnnotationExternal(e,n,i){return this.addAnnotationExternal({params:e,pushToMemory:n,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}addYaxisAnnotationExternal(e,n,i){return this.addAnnotationExternal({params:e,pushToMemory:n,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}addPointAnnotationExternal(e,n,i){return typeof this.invertAxis>"u"&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:e,pushToMemory:n,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}addAnnotationExternal({params:e,pushToMemory:n,context:i,type:o,contextMethod:r}){const a=i,s=a.w,l=s.dom.baseEl.querySelector(`.apexcharts-${o}-annotations`),c=l.childNodes.length+1,u=new bN,d=Object.assign({},o==="xaxis"?u.xAxisAnnotation:o==="yaxis"?u.yAxisAnnotation:u.pointAnnotation),f=Ee.extend(d,e);switch(o){case"xaxis":this.addXaxisAnnotation(f,l,c);break;case"yaxis":this.addYaxisAnnotation(f,l,c);break;case"point":this.addPointAnnotation(f,l,c);break}const h=s.dom.baseEl.querySelector(`.apexcharts-${o}-annotations .apexcharts-${o}-annotation-label[rel='${c}']`),p=this.helpers.addBackgroundToAnno(h,f);return p&&l.insertBefore(p.node,h),n&&s.globals.memory.methodsToExec.push({context:a,id:f.id?f.id:Ee.randomId(),method:r,label:"addAnnotation",params:e}),i}_removeAnnotationTooltip(e){const n=e.dom.elWrap&&e.dom.elWrap.querySelector(".apexcharts-annotation-tooltip");n&&n.parentNode&&n.parentNode.removeChild(n)}clearAnnotations(e){const n=e.w;this._removeAnnotationTooltip(n);const i=n.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");for(let o=n.globals.memory.methodsToExec.length-1;o>=0;o--)(n.globals.memory.methodsToExec[o].label==="addText"||n.globals.memory.methodsToExec[o].label==="addAnnotation")&&n.globals.memory.methodsToExec.splice(o,1);Array.prototype.forEach.call(i,o=>{for(;o.firstChild;)o.removeChild(o.firstChild)})}removeAnnotation(e,n){const i=e.w;this._removeAnnotationTooltip(i);const o=i.dom.baseEl.querySelectorAll(`.${n}`);o&&(i.globals.memory.methodsToExec.map((r,a)=>{r.id===n&&i.globals.memory.methodsToExec.splice(a,1)}),Object.keys(i.config.annotations).forEach(r=>{const a=i.config.annotations[r];Array.isArray(a)&&(i.config.annotations[r]=a.filter(s=>s.id!==n))}),Array.prototype.forEach.call(o,r=>{r.parentElement.removeChild(r)}))}}Vn.registerFeatures({annotations:C1e});class $1e{constructor(e,n){this.w=e,this.ctx=n,this.seriesIndex=0,this.dataPointIndex=0,this.active=!1,this._tooltipDismissed=!1,this._focusedEl=null,this._hoveredBarEl=null,this._enlargedScatterMarker=null,this._onKeyDown=this._onKeyDown.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this),this._onLegendClick=this._onLegendClick.bind(this),this._onPointerDown=this._onPointerDown.bind(this),this._lastPointerDownAt=0}init(){const n=this.w.dom.Paper.node;n&&(n.setAttribute("tabindex","0"),n.addEventListener("focus",this._onFocus),n.addEventListener("blur",this._onBlur),n.addEventListener("mousedown",this._onPointerDown,{capture:!0}),n.addEventListener("pointerdown",this._onPointerDown,{capture:!0}),n.addEventListener("touchstart",this._onPointerDown,{capture:!0,passive:!0}),n.addEventListener("keydown",this._onKeyDown,{passive:!1}),this.ctx.events.addEventListener("legendClick",this._onLegendClick))}destroy(){const e=this.w,n=e.dom.Paper&&e.dom.Paper.node;this.ctx.events.removeEventListener("legendClick",this._onLegendClick),n&&(n.removeEventListener("focus",this._onFocus),n.removeEventListener("blur",this._onBlur),n.removeEventListener("keydown",this._onKeyDown),n.removeEventListener("mousedown",this._onPointerDown,{capture:!0}),n.removeEventListener("pointerdown",this._onPointerDown,{capture:!0}),n.removeEventListener("touchstart",this._onPointerDown,{capture:!0}))}_onPointerDown(){this._lastPointerDownAt=Date.now()}notePointerFocus(){this._lastPointerDownAt=Date.now()}handleKey(e){}_onFocus(){this._isNavEnabled()&&(Date.now()-this._lastPointerDownAt<100||(this.active=!0,this._clampCursor(),this._snapToVisibleRange(),this._showCurrentPoint()))}_onBlur(){this.active=!1,this._tooltipDismissed=!1,this._hideFocus()}_onLegendClick(){this.active&&(this.active=!1,this._hideFocus())}_onKeyDown(e){var n,i,o;if(!(!this._isNavEnabled()||!this.active)){if(e.shiftKey&&(e.key==="ArrowRight"||e.key==="ArrowLeft")&&this._canPan()){e.preventDefault(),this._panBy(e.key==="ArrowRight"?1:-1);return}switch(e.key){case"ArrowRight":e.preventDefault(),this._move(0,1);break;case"ArrowLeft":e.preventDefault(),this._move(0,-1);break;case"ArrowUp":e.preventDefault(),this._move(-1,0);break;case"ArrowDown":e.preventDefault(),this._move(1,0);break;case"Home":e.preventDefault(),this.dataPointIndex=0,this._skipNullForward(),this._showCurrentPoint();break;case"End":e.preventDefault(),this.dataPointIndex=this._getDataPointCount(this.seriesIndex)-1,this._skipNullBackward(),this._showCurrentPoint();break;case"Enter":case" ":e.preventDefault(),this._fireClick();break;case"+":case"=":this._canZoom()&&(e.preventDefault(),(n=this.ctx.toolbar)==null||n.handleZoomIn(),this._announce("Zoomed in"));break;case"-":case"_":this._canZoom()&&(e.preventDefault(),(i=this.ctx.toolbar)==null||i.handleZoomOut(),this._announce("Zoomed out"));break;case"0":this._canZoom()&&this.w.interact.zoomed&&(e.preventDefault(),(o=this.ctx.toolbar)==null||o.handleZoomReset(),this._announce("Zoom reset"));break;case"Escape":e.preventDefault(),this._tooltipDismissed?(this.active=!1,this._tooltipDismissed=!1,this._hideFocus()):(this._tooltipDismissed=!0,this._hideFocus());break}}}_canZoom(){const e=this.w;return!!(e.globals.axisCharts&&e.config.chart.zoom&&e.config.chart.zoom.enabled)}_canPan(){return this._canZoom()}_panBy(e){const n=this.w,i=this.ctx.toolbar;if(!i)return;const o=Number(n.globals.minX),r=Number(n.globals.maxX);if(!isFinite(o)||!isFinite(r)||o===r)return;const s=(r-o)*.1*e;i.zoomUpdateOptions(o+s,r+s),this._announce(e>0?"Panned right":"Panned left")}_move(e,n){const i=this.w,o=i.config.chart.accessibility.keyboard.navigation.wrapAround;if(e!==0){const r=this.w.globals.tooltip;if(r&&r.tConfig&&r.tConfig.shared){const u=this.dataPointIndex;if(r.tooltipUtil&&r.tooltipUtil.isXoverlap(u)&&r.tooltipUtil.isInitialSeriesSameLen())return}const a=this._getSeriesCount();let s=this.seriesIndex+e,l=0;for(;l=a&&(s=o?0:a-1),!!i.globals.collapsedSeriesIndices.includes(s));)s+=e,l++;this.seriesIndex=s;const c=this._getDataPointCount(s);this.dataPointIndex>=c&&(this.dataPointIndex=c-1)}if(n!==0){const r=this._getDataPointCount(this.seriesIndex);let a=this.dataPointIndex+n;a<0&&(a=o?r-1:0),a>=r&&(a=o?0:r-1),this.dataPointIndex=a,n>0?this._skipNullForward():this._skipNullBackward(),this._isDataPointVisible(this.seriesIndex,this.dataPointIndex)||this._snapToVisibleRangeInDirection(n)}this._showCurrentPoint()}_skipNullForward(){const e=this.w,n=this.seriesIndex,i=this._getDataPointCount(n);let o=this.dataPointIndex,r=0;if(Array.isArray(e.seriesData.series[n])){for(;r0&&!o.globals.markers.batched;l?this._showScatterBubblePoint(e,n,i):c?s?i.marker.enlargePoints(n):i.tooltipPosition.moveDynamicPointOnHover(n,e):s?i.tooltipPosition.moveDynamicPointsOnHover(n):i.tooltipPosition.moveDynamicPointOnHover(n,e)}_showScatterBubblePoint(e,n,i){const o=this.w.dom.baseEl;this._enlargedScatterMarker&&(i.marker.oldPointSize(this._enlargedScatterMarker),this._enlargedScatterMarker=null);const r=o.querySelector(`.apexcharts-series[data\\:realIndex='${e}']`);if(!r)return;const a=r.querySelector(`.apexcharts-marker[rel='${n}']`);a&&(i.marker.enlargeCurrentPoint(n,a),this._enlargedScatterMarker=a)}_showTooltipNonAxis(e,n,i,o){const r=this.w;i.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:n,shared:!1});const a=o.getBoundingClientRect(),s=a.width||i.tooltipRect.ttWidth||0,l=a.height||i.tooltipRect.ttHeight||0,c=r.dom.baseEl.querySelector(`.apexcharts-pie-area[j='${n}']`),u=i.getSliceAnchor(c);u&&(o.style.left=u.x-s/2+"px",o.style.top=u.y-l-10+"px")}_showTooltipRadialBar(e,n,i,o){var r;const a=this.w;i.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:e,shared:!1});const{ttWidth:s=0,ttHeight:l=0}=i.getCachedDimensions(),c=a.dom.baseEl.querySelector(`.apexcharts-radialbar-series[data\\:realIndex='${e}'] path`);if(c){const u=parseFloat((r=c.getAttribute("data:angle"))!=null?r:"")||0,f=(a.config.plotOptions.radialBar.startAngle||0)+u/2,h=a.layout.gridWidth/2,p=a.layout.gridHeight/2,g=a.globals.radialSize||Math.min(a.layout.gridWidth,a.layout.gridHeight)/2,m=a.seriesData.series.length,v=g/Math.max(m,1),b=g-e*v,y=b-v,w=(b+y)/2,x=Ee.polarToCartesian(h,p,w,f),$=x.x+(a.layout.translateX||0),S=x.y+(a.layout.translateY||0);o.style.left=$-s/2+"px",o.style.top=S-l-10+"px"}}_showTooltipHeatTree(e,n,i,o,r){var a,s;const l=this.w;i.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:e,j:n,shared:!1});const c=o.getBoundingClientRect(),u=c.width||i.tooltipRect.ttWidth||0,d=c.height||i.tooltipRect.ttHeight||0,f=r==="heatmap"?"apexcharts-heatmap-rect":"apexcharts-treemap-rect",h=l.dom.baseEl.querySelector(`.${f}[i='${e}'][j='${n}']`);if(h){const p=l.dom.elWrap.getBoundingClientRect(),g=h.getBoundingClientRect(),m=g.left-p.left,v=g.top-p.top,b=g.width,y=g.height,w=parseFloat((a=h.getAttribute("cx"))!=null?a:""),x=parseFloat((s=h.getAttribute("width"))!=null?s:"");i.tooltipPosition.moveXCrosshairs(w+x/2);let $=m+b+u/2;const S=v+y/2-d/2;m+b>l.layout.gridWidth/2&&($=m-u/2),o.style.left=$+"px",o.style.top=S+"px"}}_applyFocusClass(e,n){this._removeFocusClass();const i=this._getFocusableElement(e,n)||this._getBatchedFocusEl(e);if(i){i.classList.add("apexcharts-keyboard-focused"),i.setAttribute("role","img");const o=this._buildPointLabel(e,n);o&&i.setAttribute("aria-label",o),this._focusedEl=i}}_getBatchedFocusEl(e){return this.w.globals.markers.batched?this.w.dom.baseEl.querySelector(`.apexcharts-series[data\\:realIndex='${e}'] .apexcharts-series-markers path`):null}_removeFocusClass(){this._focusedEl&&(this._focusedEl.classList.remove("apexcharts-keyboard-focused"),this._focusedEl.removeAttribute("role"),this._focusedEl.removeAttribute("aria-label"),this._focusedEl=null)}_buildPointLabel(e,n){var i,o,r,a,s,l,c,u;const d=this.w,f=d.config.chart.type,h=d.seriesData.seriesNames||[],p=d.seriesData.series||[];if(f==="pie"||f==="donut"||f==="polarArea"){const S=(o=((i=d.labelData)==null?void 0:i.labels)&&d.labelData.labels[n])!=null?o:"",_=Array.isArray(p)?p[n]:"";return S?`${S}: ${_}`:`${_}`}if(f==="radialBar"){const S=h[e]||`Series ${e+1}`,_=Array.isArray(p)?p[e]:"";return`${S}: ${_}`}const g=h[e]||`Series ${e+1}`,v=(Array.isArray(p[e])?p[e]:[])[n];let b=v==null?"":String(v);const y=(a=(r=d.formatters)==null?void 0:r.yLabelFormatters)==null?void 0:a[e];if(typeof y=="function")try{b=y(v,{seriesIndex:e,dataPointIndex:n,w:d})}catch{}let w="";const x=(s=d.labelData)==null?void 0:s.categoryLabels,$=(c=(l=d.seriesData)==null?void 0:l.seriesX)==null?void 0:c[e];if(Array.isArray(x)&&x[n]!=null)w=String(x[n]);else if(Array.isArray($)&&$[n]!=null){const S=(u=d.formatters)==null?void 0:u.xLabelFormatter;if(typeof S=="function")try{w=String(S($[n],{seriesIndex:e,dataPointIndex:n,w:d}))}catch{w=String($[n])}else w=String($[n])}return w?`${g}: ${b}, ${w}`:`${g}: ${b}`}_leaveHoveredBar(){this._hoveredBarEl&&(new Be(this.w,this.ctx).pathMouseLeave(this._hoveredBarEl,null),this._hoveredBarEl=null)}_getFocusableElement(e,n){const i=this.w,o=i.config.chart.type,r=i.dom.baseEl;return o==="pie"||o==="donut"||o==="polarArea"?r.querySelector(`.apexcharts-pie-area[j='${n}']`):o==="heatmap"?r.querySelector(`.apexcharts-heatmap-rect[i='${e}'][j='${n}']`):o==="treemap"?r.querySelector(`.apexcharts-treemap-rect[i='${e}'][j='${n}']`):o==="radialBar"?r.querySelector(`.apexcharts-radialbar-series[data\\:realIndex='${e}'] path`):o==="bar"||o==="candlestick"||o==="boxPlot"||o==="violin"||o==="rangeBar"?r.querySelector(`.apexcharts-series[data\\:realIndex='${e}'] path[j='${n}']`):r.querySelector(`.apexcharts-series[data\\:realIndex='${e}'] .apexcharts-marker[rel='${n}']`)||null}_fireClick(){const n=this.w.globals.tooltip;if(!n)return;const i={type:"mouseup",clientX:0,clientY:0};n.markerClick(i,this.seriesIndex,this.dataPointIndex)}_isNavEnabled(){const e=this.w.config.chart.accessibility;return e.enabled&&e.keyboard.enabled&&e.keyboard.navigation.enabled}_getSeriesCount(){const e=this.w,n=e.config.chart.type;return n==="pie"||n==="donut"||n==="polarArea"?1:e.seriesData.series.length}_getDataPointCount(e){const n=this.w,i=n.config.chart.type;if(i==="pie"||i==="donut"||i==="polarArea")return n.seriesData.series.length;const o=n.seriesData.series;return o[e]&&Array.isArray(o[e])?o[e].length:0}_clampCursor(){const e=this._getSeriesCount();this.seriesIndex>=e&&(this.seriesIndex=e-1),this.seriesIndex<0&&(this.seriesIndex=0);const n=this._getDataPointCount(this.seriesIndex);this.dataPointIndex>=n&&(this.dataPointIndex=n-1),this.dataPointIndex<0&&(this.dataPointIndex=0)}_snapToVisibleRange(){const e=this.w,n=e.globals,i=this.seriesIndex;if(!e.interact.zoomed)return;const o=e.seriesData.seriesX&&e.seriesData.seriesX[i];if(!o||!o.length)return;const r=n.minX,a=n.maxX;if(r===void 0||a===void 0)return;const s=o[this.dataPointIndex];if(s>=r&&s<=a)return;const l=o.length;for(let c=0;c=r&&o[c]<=a){this.dataPointIndex=c;return}}_snapToVisibleRangeInDirection(e){const n=this.w,i=n.globals,o=this.seriesIndex,r=n.seriesData.seriesX&&n.seriesData.seriesX[o];if(!r||!r.length)return;const a=i.minX,s=i.maxX;if(a===void 0||s===void 0)return;const l=r.length;if(e>=0){for(let c=0;c=a&&r[c]<=s){this.dataPointIndex=c;return}}else for(let c=l-1;c>=0;c--)if(r[c]>=a&&r[c]<=s){this.dataPointIndex=c;return}}_isDataPointVisible(e,n){const i=this.w,o=i.globals;if(!i.interact.zoomed)return!0;const r=i.seriesData.seriesX&&i.seriesData.seriesX[e];if(!r)return!0;const a=r[n];return a===void 0?!0:a>=o.minX&&a<=o.maxX}_announce(e){const n=this.w;if(!n.config.chart.accessibility.announcements.enabled)return;const i=n.dom.baseEl;if(!i)return;const o=i.querySelector(".apexcharts-sr-status");o&&(o.textContent="",setTimeout(()=>{o.textContent=e},0))}}Vn.registerFeatures({keyboardNavigation:$1e});function zE(t,e){if(!(e>0))return[];if(e===1)return[Ye({},t)];const n=t.width>=t.height,i=n?t.width:t.height,o=n?t.height:t.width,r=o>0?i/o:e;let a=Math.max(1,Math.ceil(Math.sqrt(r*e)));a>e&&(a=e);const s=Math.floor(e/a);let l=e-s*a;const c=[],u=i/a;let d=0;for(let f=0;f0?1:0);l>0&&l--;const p=h>0?o/h:0;for(let g=0;g0))return[];const i=t.width>=t.height,o=i?t.width:t.height,r=i?t.height:t.width,a=i?t.y:t.x,s=a+r,l=r>0?o/r:e;let c=Math.max(Math.ceil(Math.sqrt(l*e)),Math.ceil(o/16));c>=1||(c=1),c>e&&(c=e);const u=Math.floor(e/c);let d=e-u*c;const f=[],h=o/c;let p=i?t.x:t.y;for(let g=0;g0?1:0);d>0&&d--;const v=[],b=n(p,p+h,i);if(Array.isArray(b))for(let _=0;_T&&v.push([T,O])}v.length||v.push([a,s]);const y=v.reduce((_,P)=>_+(P[1]-P[0]),0),w=v.map(_=>y>0?(_[1]-_[0])/y*m:m/v.length),x=w.map(_=>Math.floor(_));let $=x.reduce((_,P)=>_+P,0);const S=w.map((_,P)=>({i:P,frac:_-Math.floor(_)})).sort((_,P)=>P.frac-_.frac);for(let _=0;$=1;c/=2){const u=(a&c)>0?1:0,d=(s&c)>0?1:0;if(l+=c*c*(3*u^d),d===0){u===1&&(a=c-1-a,s=c-1-s);const f=a;a=s,s=f}}return l}function gh(t,e){let n=1/0,i=1/0,o=-1/0,r=-1/0;const a=t.map(s=>{const[l,c]=e(s);return lo&&(o=l),cr&&(r=c),[l,c]});return t.map((s,l)=>({item:s,d:A1e(a[l][0],a[l][1],n,i,o,r)})).sort((s,l)=>s.d-l.d).map(s=>s.item)}function WE(t){if(!t||typeof t!="string")return null;const e=t.trim();if(e[0]==="#"){const i=e.slice(1);return i.length===3?[parseInt(i[0]+i[0],16),parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16),1]:i.length===6||i.length===8?[parseInt(i.slice(0,2),16),parseInt(i.slice(2,4),16),parseInt(i.slice(4,6),16),i.length===8?parseInt(i.slice(6,8),16)/255:1]:null}const n=e.match(/^rgba?\(([^)]+)\)$/i);if(n){const i=n[1].split(",").map(o=>parseFloat(o));return i.length<3||i.some(o=>!isFinite(o))?null:[i[0],i[1],i[2],i.length>3?i[3]:1]}return null}function jE(t,e){const n=WE(t),i=WE(e);return!n||!i?null:o=>{const r=Math.round(n[0]+(i[0]-n[0])*o),a=Math.round(n[1]+(i[1]-n[1])*o),s=Math.round(n[2]+(i[2]-n[2])*o),l=n[3]+(i[3]-n[3])*o;return l>=1?`rgb(${r},${a},${s})`:`rgba(${r},${a},${s},${l})`}}function _1e(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2}function P1e({pieces:t,duration:e,onPieceDone:n,onAllDone:i}){let o=!1;const r=Date.now(),a=Math.max(1,e),s=(c,u)=>{const d=c.from,f=c.to,h=c.el;h.setAttribute("x",String(d.x+(f.x-d.x)*u)),h.setAttribute("y",String(d.y+(f.y-d.y)*u)),h.setAttribute("width",String(Math.max(0,d.width+(f.width-d.width)*u))),h.setAttribute("height",String(Math.max(0,d.height+(f.height-d.height)*u))),h.setAttribute("rx",String(Math.max(0,d.rx+(f.rx-d.rx)*u))),c.fill?h.setAttribute("fill",c.fill(u)):u>=1&&c.fillEnd&&h.setAttribute("fill",c.fillEnd)},l=()=>{if(o)return;const c=Date.now()-r;let u=!1;for(let d=0;d=1&&(f._done=!0,n&&n(f))}u?We.requestAnimationFrame(l):i&&i()};return We.requestAnimationFrame(l),()=>{o=!0}}const O1e=new Set(["bar","funnel","pyramid","histogram"]),T1e=new Set(["pie","donut","polarArea","radialBar","gauge"]),E1e=new Set(["unit","waffle"]),M1e=new Set(["treemap","sunburst"]),I1e=new Set(["boxPlot","violin"]),k1e=.55,P0=1500,D1e=300;function Li(t){return O1e.has(t)?"bar":T1e.has(t)?"radial":E1e.has(t)?"unit":M1e.has(t)?"partition":I1e.has(t)?"summary":null}class R1e{constructor(e,n){this.w=e,this.ctx=n,this._snapshot=null,this._ghost=null,this._pieceLayer=null,this._pieceCancel=null}canMorphTypes(e,n){if(e===n)return!1;const i=Li(e),o=Li(n);return!i||!o?!1:i==="partition"!=(o==="partition")?i!=="unit"&&o!=="unit":!0}isCompatibleSeriesShape(e,n,i){if(!Array.isArray(i)||i.length===0)return!1;const o=Li(e),r=Li(n);return r==="unit"?i.every(a=>typeof a=="number")?!0:i.every(a=>a&&typeof a=="object"&&Array.isArray(a.data)):r==="partition"?!0:r==="radial"?i.every(a=>typeof a=="number")?!0:i.length===1&&i[0]&&typeof i[0]=="object"&&Array.isArray(i[0].data):r==="bar"||r==="summary"?i.every(a=>a&&typeof a=="object"&&Array.isArray(a.data)):o!==null&&r!==null}captureBeforeDestroy({fromType:e,toType:n,newSeries:i}){if(this._snapshot=null,this._removeGhost(),this._cancelPieces(),!Ot.isBrowser())return!1;const o=this.w.config.chart.animations;if(!o||o.enabled===!1||o.chartTypeMorph&&o.chartTypeMorph.enabled===!1||o.respectReducedMotion&&u$()||!this.canMorphTypes(e,n)||!this.isCompatibleSeriesShape(e,n,i))return!1;const{marks:r,branches:a,unitDots:s}=this._captureFromDOM(e);if(!r.length)return!1;const l=this._buildMapping(r,e,n,i,a);if(l.size===0)return!1;this._snapshot={fromType:e,toType:n,mapping:l,oldLayout:{translateX:this.w.layout.translateX||0,translateY:this.w.layout.translateY||0}};const c=Li(e),u=Li(n),d=this._canProbePaths();if(u==="unit"&&(c==="bar"||c==="summary"||c==="radial"&&d)){const h=this._countUnitSeries(i);this._snapshot.pieceOut=h>0&&h<=P0}else if(c==="unit"&&(u==="bar"||u==="summary"||u==="radial"&&d)){let h=0;if(s.forEach(p=>{h+=p.length}),h>0&&h<=P0){this._snapshot.pieceIn=!0,this._snapshot.sourceDots=s;const p=[];u==="radial"?(Array.isArray(i)?i:[]).forEach((g,m)=>{p.push(`${m}:0`)}):(Array.isArray(i)?i:[]).forEach((g,m)=>{const v=g&&Array.isArray(g.data)?g.data:[];for(let b=0;b{r.querySelectorAll(s).forEach(l=>{l.parentNode&&l.parentNode.removeChild(l)})}),typeof r.querySelectorAll=="function"&&r.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),(n=r.removeAttribute)==null||n.call(r,"id"),this._ghost=r}_mountGhost(){var e,n,i;const o=this._ghost;if(!o||!Ot.isBrowser())return;const r=(e=this.w.dom)==null?void 0:e.elWrap;if(!r||typeof r.appendChild!="function"){this._ghost=null;return}const a=o.style;a&&(a.position="absolute",a.left="0",a.top="0",a.background="transparent",a.pointerEvents="none",a.opacity="1"),(n=o.setAttribute)==null||n.call(o,"aria-hidden","true"),(i=o.setAttribute)==null||i.call(o,"class","apexcharts-morph-ghost"),r.appendChild(o);const s=this.getSpeed(),l=Math.max(120,Math.round(s*k1e));We.requestAnimationFrame(()=>{a&&(a.transition=`opacity ${l}ms ease-in`,a.opacity="0")}),setTimeout(()=>this._removeGhost(),l+60)}_removeGhost(){const e=this._ghost;this._ghost=null,e&&e.parentNode&&e.parentNode.removeChild(e)}_countUnitSeries(e){if(!Array.isArray(e))return 0;let n=0;for(const i of e){if(!i||typeof i!="object"||!Array.isArray(i.data))return 0;n+=i.data.length}return n}usesPieceTakeover(){return!!(this._snapshot&&this._snapshot.pieceOut)}claimsTargetMark(e,n){return!!(this._snapshot&&this._snapshot.pieceIn&&this._snapshot.mapping.has(`${e}:${n}`))}_makePieceLayer(){var e,n;const i=(e=this.w.dom)==null?void 0:e.elGraphical,o=i&&i.node;if(!o||typeof o.appendChild!="function")return null;const r=We.createElementNS("http://www.w3.org/2000/svg","g");if(!r)return null;r.setAttribute("class","apexcharts-morph-pieces"),r.setAttribute("pointer-events","none");const a=(n=this.w.globals)==null?void 0:n.cuid;return a&&r.setAttribute("clip-path",`url(#gridRectBarMask${a})`),o.appendChild(r),this._pieceLayer=r,r}_revealPieceHidden(){var e;const n=(e=this.w.globals.dom)==null?void 0:e.baseEl;!n||typeof n.querySelectorAll!="function"||n.querySelectorAll("[data-piece-hidden]").forEach(i=>{i.removeAttribute("opacity"),i.removeAttribute("data-piece-hidden")})}_cancelPieces(){this._pieceCancel&&(this._pieceCancel(),this._pieceCancel=null);const e=this._pieceLayer;this._pieceLayer=null,e&&e.parentNode&&e.parentNode.removeChild(e),this._revealPieceHidden()}_canProbePaths(){if(!Ot.isBrowser())return!1;const e=We.createElementNS("http://www.w3.org/2000/svg","path");return!!e&&typeof e.isPointInFill=="function"}_makeExtentProber(e,n,i){const r=i.ownerDocument.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d",e),r.setAttribute("fill","#000"),r.setAttribute("stroke","#000"),r.setAttribute("stroke-width","3"),r.setAttribute("visibility","hidden"),i.appendChild(r);const a=r.ownerSVGElement;if(typeof r.isPointInFill!="function"||!a||typeof a.createSVGPoint!="function")return i.removeChild(r),null;const s=a.createSVGPoint(),l=(d,f)=>{s.x=d,s.y=f;const h=r;return h.isPointInFill(s)||typeof h.isPointInStroke=="function"&&h.isPointInStroke(s)},c=48;return{intervalsAt:(d,f,h)=>{const p=h?n.y:n.x,g=p+(h?n.height:n.width);if(!(g>p))return null;const m=(_,P)=>h?l(P,_):l(_,P),v=[d+(f-d)*.1,(d+f)/2,f-(f-d)*.1],b=(_,P,T)=>{let O=P,M=_;for(let I=0;I<6;I++){const k=(O+M)/2;m(k,T)?M=k:O=k}return(O+M)/2},y=(g-p)/c,w=new Array(c+1).fill(null);let x=!1;for(const _ of v)for(let P=0;P<=c;P++)w[P]===null&&m(p+P*y,_)&&(w[P]=_,x=!0);if(!x)return null;const $=[];let S=-1;for(let _=0;_<=c+1;_++){const P=_<=c&&w[_]!==null;if(P&&S<0&&(S=_),!P&&S>=0){const T=_-1,O=w[S],M=S===0?p:b(p+S*y,p+(S-1)*y,O),I=T===c?g:b(p+T*y,p+(T+1)*y,w[T]);I>M&&$.push([M,I]),S=-1}}return $.length?$:null},dispose:()=>{r.parentNode&&r.parentNode.removeChild(r)}}}_separatePieces(){var e;const n=this._snapshot,i=(e=this.w.globals.dom)==null?void 0:e.baseEl;if(!n||!i)return this._revealPieceHidden();const o=new Map;let r=0;if(i.querySelectorAll(".apexcharts-unit-area").forEach(d=>{var f,h,p,g,m,v,b;const y=parseInt((f=d.getAttribute("i"))!=null?f:"",10);if(isNaN(y))return;const w=d.getAttribute("cx");let x,$,S=3;if(w!=null)x=parseFloat(w),$=parseFloat((h=d.getAttribute("cy"))!=null?h:""),S=parseFloat((p=d.getAttribute("r"))!=null?p:"3")||3;else{const P=parseFloat((g=d.getAttribute("width"))!=null?g:"0")||0,T=parseFloat((m=d.getAttribute("height"))!=null?m:"0")||0;x=parseFloat((v=d.getAttribute("x"))!=null?v:"")+P/2,$=parseFloat((b=d.getAttribute("y"))!=null?b:"")+T/2,S=Math.max(P,T)/2||3}if(!isFinite(x)||!isFinite($))return;let _=o.get(y);_||(_=[],o.set(y,_)),_.push({el:d,x,y:$,r:S,fill:d.getAttribute("fill")}),r++}),r===0||r>P0)return this._revealPieceHidden();const a=this._makePieceLayer();if(!a)return this._revealPieceHidden();const s=[],l=a.ownerDocument,c=Li(n.fromType),u=c==="summary"||c==="radial";if(Array.from(o.keys()).sort((d,f)=>d-f).forEach(d=>{var f;const h=o.get(d),p=this.getInitialBBoxFor(d),g=n.mapping.get(`${d}:0`);if(!p||!g){h.forEach(x=>{x.el.removeAttribute("opacity"),x.el.removeAttribute("data-piece-hidden")});return}const m=g.fill&&g.fill.indexOf("url(")!==0?g.fill:((f=this.w.globals.colors)==null?void 0:f[d])||h[0].fill;let v=null;if(u){const x=this.getInitialPathFor(d,0);x&&(v=this._makeExtentProber(x,p,a))}const b=v?HE(p,h.length,v.intervalsAt):zE(p,h.length);v&&v.dispose();const y=gh(b,x=>[x.x+x.width/2,x.y+x.height/2]),w=gh(h,x=>[x.x,x.y]);for(let x=0;x{const f=d.meta.dotEl;f.removeAttribute("opacity"),f.removeAttribute("data-piece-hidden"),d.el.parentNode&&d.el.parentNode.removeChild(d.el)})}_combinePieces(){var e,n;const i=this._snapshot,o=(e=this.w.globals.dom)==null?void 0:e.baseEl;if(!i||!i.sourceDots||!i.keyOrder||!o)return this._revealPieceHidden();const r=this._collectTargetMarks(i.toType);if(!r.size)return this._revealPieceHidden();const a=i.oldLayout.translateX-(this.w.layout.translateX||0),s=i.oldLayout.translateY-(this.w.layout.translateY||0),l=Array.from(i.sourceDots.keys()).sort((p,g)=>p-g),c=this._makePieceLayer();if(!c)return this._revealPieceHidden();const u=c.ownerDocument,d=[],f=Li(i.toType),h=f==="summary"||f==="radial";for(let p=0;p{_.removeAttribute("opacity"),_.removeAttribute("data-piece-hidden")});continue}const b=v.fill&&v.fill.indexOf("url(")!==0?v.fill:((n=this.w.globals.colors)==null?void 0:n[v.realIndex])||g[0].fill;let y=null;if(h){const _=v.d||v.els.map(P=>P.getAttribute("pathTo")||P.getAttribute("d")).filter(Boolean).join(" ");_&&(y=this._makeExtentProber(_,v.bbox,c))}const w=y?HE(v.bbox,g.length,y.intervalsAt):zE(v.bbox,g.length);y&&y.dispose();const x=gh(w,_=>[_.x+_.width/2,_.y+_.height/2]),$=gh(g,_=>[_.x,_.y]),S={remaining:$.length,els:v.els,tiles:[]};for(let _=0;_<$.length;_++){const P=$[_],T=x[_],O=u.createElementNS("http://www.w3.org/2000/svg","rect"),M=P.x+a-P.r,I=P.y+s-P.r;O.setAttribute("data-key",m),O.setAttribute("x",String(M)),O.setAttribute("y",String(I)),O.setAttribute("width",String(P.r*2)),O.setAttribute("height",String(P.r*2)),O.setAttribute("rx",String(P.r)),O.setAttribute("fill",String(P.fill||b)),c.appendChild(O),S.tiles.push(O),d.push({el:O,from:{x:M,y:I,width:P.r*2,height:P.r*2,rx:P.r},to:{x:T.x,y:T.y,width:T.width,height:T.height,rx:0},fill:jE(P.fill,b),fillEnd:String(b),delay:0,meta:{markState:S}})}}if(!d.length)return this._cancelPieces();this._runPieces(d,p=>{const g=p.meta.markState;g.remaining--,g.remaining===0&&(g.els.forEach(m=>{m.removeAttribute("opacity"),m.removeAttribute("data-piece-hidden")}),g.tiles.forEach(m=>{m.parentNode&&m.parentNode.removeChild(m)}))})}_runPieces(e,n){const i=this.getSpeed(),o=Math.min(D1e,i*.35),r=Math.max(180,i-o);for(let a=0;a1?a/(e.length-1)*o:0;this._pieceCancel=P1e({pieces:e,duration:r,onPieceDone:n,onAllDone:()=>{this._pieceCancel=null,this._cancelPieces()}})}_collectTargetMarks(e){var n;const i=(n=this.w.globals.dom)==null?void 0:n.baseEl,o=new Map;if(!i)return o;const r=Li(e);if(r==="radial")return i.querySelectorAll(".apexcharts-pie-series .apexcharts-pie-area").forEach((s,l)=>{const c=s.getAttribute("data:pathFinal")||s.getAttribute("d");if(!c||!c.trim())return;const u=this._pathBBox(c);u&&o.set(`${l}:0`,{realIndex:l,j:0,d:c,bbox:{x:u.minX,y:u.minY,width:u.maxX-u.minX,height:u.maxY-u.minY},fill:s.getAttribute("fill"),els:[s]})}),o;const a=r==="summary"?`.apexcharts-${e}-series`:".apexcharts-bar-series";return i.querySelectorAll(`${a} .apexcharts-series`).forEach(s=>{var l;const c=parseInt((l=s.getAttribute("data:realIndex"))!=null?l:"0",10)||0;let u=0;s.querySelectorAll("path[pathTo]").forEach(d=>{var f;const h=d.getAttribute("pathTo")||d.getAttribute("d");if(!h||!h.trim())return;const p=parseInt((f=d.getAttribute("j"))!=null?f:"",10),g=isNaN(p)?u++:p,m=this._pathBBox(h);if(!m)return;const v=`${c}:${g}`,b=o.get(v);b?(b.els.push(d),b.bbox={x:Math.min(b.bbox.x,m.minX),y:Math.min(b.bbox.y,m.minY),width:Math.max(b.bbox.x+b.bbox.width,m.maxX)-Math.min(b.bbox.x,m.minX),height:Math.max(b.bbox.y+b.bbox.height,m.maxY)-Math.min(b.bbox.y,m.minY)}):o.set(v,{realIndex:c,j:g,bbox:{x:m.minX,y:m.minY,width:m.maxX-m.minX,height:m.maxY-m.minY},fill:d.getAttribute("fill"),els:[d]})})}),o}_captureFromDOM(e){var n;const i=(n=this.w.globals.dom)==null?void 0:n.baseEl;if(!i)return{marks:[],branches:[],unitDots:new Map};const o=[],r=[],a=new Map,s=Li(e);if(s==="bar")i.querySelectorAll(".apexcharts-bar-series .apexcharts-series").forEach(c=>{var u;const d=parseInt((u=c.getAttribute("data:realIndex"))!=null?u:"0",10);c.querySelectorAll("path[pathTo]").forEach((h,p)=>{const g=h.getAttribute("pathTo")||h.getAttribute("d");g&&o.push({realIndex:d,j:p,d:g,fill:h.getAttribute("fill")})})});else if(s==="summary"){const l=new Map;i.querySelectorAll(`.apexcharts-${e}-area`).forEach(c=>{var u,d;const f=parseInt((u=c.getAttribute("j"))!=null?u:"",10);if(isNaN(f))return;const h=c.getAttribute("pathTo")||c.getAttribute("d");if(!h||!h.trim())return;const p=typeof c.closest=="function"?c.closest(".apexcharts-series"):null,g=parseInt((d=p==null?void 0:p.getAttribute("data:realIndex"))!=null?d:"0",10)||0,m=`${g}:${f}`,v=l.get(m);v?v.d+=` ${h}`:l.set(m,{realIndex:g,j:f,d:h,fill:c.getAttribute("fill")})}),Array.from(l.values()).sort((c,u)=>c.realIndex-u.realIndex||c.j-u.j).forEach(c=>o.push(c))}else if(s==="partition")if(e==="treemap"){const l=d=>{var f,h,p,g;const m=parseFloat((f=d.getAttribute("x"))!=null?f:""),v=parseFloat((h=d.getAttribute("y"))!=null?h:""),b=parseFloat((p=d.getAttribute("width"))!=null?p:""),y=parseFloat((g=d.getAttribute("height"))!=null?g:"");return[m,v,b,y].every(w=>isFinite(w))?`M ${m} ${v} L ${m+b} ${v} L ${m+b} ${v+y} L ${m} ${v+y} Z`:null};i.querySelectorAll(".apexcharts-treemap-rect").forEach(d=>{var f,h;const p=l(d);p&&o.push({realIndex:parseInt((f=d.getAttribute("i"))!=null?f:"0",10)||0,j:parseInt((h=d.getAttribute("j"))!=null?h:"0",10)||0,d:p,fill:d.getAttribute("fill"),key:d.getAttribute("data:key")||null})}),i.querySelectorAll(".apexcharts-treemap-parent-rect").forEach(d=>{const f=l(d),h=d.getAttribute("data:key");!f||!h||r.push({key:h,d:f,fill:d.getAttribute("fill")})})}else{const l=i.querySelectorAll(".apexcharts-sunburst-arc"),c=[];l.forEach(d=>{d.getAttribute("data:leaf")==="true"&&c.push(d)}),(c.length?c:Array.from(l)).forEach((d,f)=>{const h=d.getAttribute("d");!h||!h.trim()||o.push({realIndex:f,j:0,d:h,fill:d.getAttribute("fill"),key:d.getAttribute("data:key")||null})}),l.forEach(d=>{if(d.getAttribute("data:leaf")==="true")return;const f=d.getAttribute("d"),h=d.getAttribute("data:key");!f||!f.trim()||!h||r.push({key:h,d:f,fill:d.getAttribute("fill")})})}else if(s==="unit"){const l=i.querySelectorAll(".apexcharts-unit-area"),c=new Map;l.forEach(u=>{var d,f,h,p,g,m,v;const b=parseInt((d=u.getAttribute("i"))!=null?d:"",10);if(isNaN(b))return;const y=u.getAttribute("cx");let w,x,$=3;if(y!=null)w=parseFloat(y),x=parseFloat((f=u.getAttribute("cy"))!=null?f:""),$=parseFloat((h=u.getAttribute("r"))!=null?h:"3")||3;else{const P=parseFloat((p=u.getAttribute("width"))!=null?p:"0")||0,T=parseFloat((g=u.getAttribute("height"))!=null?g:"0")||0;w=parseFloat((m=u.getAttribute("x"))!=null?m:"")+P/2,x=parseFloat((v=u.getAttribute("y"))!=null?v:"")+T/2,$=Math.max(P,T)/2||3}if(!isFinite(w)||!isFinite(x))return;let S=a.get(b);S||(S=[],a.set(b,S)),S.push({x:w,y:x,r:$,fill:u.getAttribute("fill")});const _=c.get(b);if(!_){c.set(b,{minX:w,minY:x,maxX:w,maxY:x,fill:u.getAttribute("fill")});return}w<_.minX&&(_.minX=w),w>_.maxX&&(_.maxX=w),x<_.minY&&(_.minY=x),x>_.maxY&&(_.maxY=x)}),Array.from(c.keys()).sort((u,d)=>u-d).forEach(u=>{const d=c.get(u),f=2,h=d.minX-f,p=d.minY-f,g=d.maxX+f,m=d.maxY+f;o.push({realIndex:u,j:0,d:`M ${h} ${p} L ${g} ${p} L ${g} ${m} L ${h} ${m} Z`,fill:d.fill})})}else if(s==="radial")if(e==="radialBar"||e==="gauge"){const l=this.w.layout.gridWidth/2,c=Math.min(this.w.layout.gridWidth,this.w.layout.gridHeight)/2;i.querySelectorAll(".apexcharts-radial-series .apexcharts-radialbar-area").forEach(d=>{var f;const h=d.parentElement,p=parseInt((f=h==null?void 0:h.getAttribute("data:realIndex"))!=null?f:"0",10),g=d.getAttribute("d");if(!g)return;const m=parseFloat(d.getAttribute("stroke-width")||"0"),v=m>1&&this._radialArcToFilledSegment(g,m,l,c)||g;o.push({realIndex:p,j:0,d:v,fill:d.getAttribute("stroke")})})}else i.querySelectorAll(".apexcharts-pie-series .apexcharts-pie-area").forEach((c,u)=>{const d=c.getAttribute("d");d&&o.push({realIndex:u,j:0,d,fill:c.getAttribute("fill")})});return{marks:o,branches:r,unitDots:a}}_radialArcToFilledSegment(e,n,i,o){const r=e.match(/M\s*(-?[\d.]+)\s+(-?[\d.]+)\s+A\s*(-?[\d.]+)\s+(?:-?[\d.]+)\s+(?:-?[\d.]+)\s+(\d)\s+(\d)\s+(-?[\d.]+)\s+(-?[\d.]+)/);if(!r)return null;const a=parseFloat(r[1]),s=parseFloat(r[2]),l=parseFloat(r[3]),c=parseInt(r[4],10),u=parseInt(r[5],10),d=parseFloat(r[6]),f=parseFloat(r[7]);if(!isFinite(l)||l<=0)return null;const h=n/2,p=l+h,g=Math.max(0,l-h),m=($,S,_)=>{const P=$-i,T=S-o,O=Math.sqrt(P*P+T*T);if(O===0)return{x:i,y:o};const M=_/O;return{x:i+P*M,y:o+T*M}},v=m(a,s,p),b=m(d,f,p),y=m(a,s,g),w=m(d,f,g),x=u?0:1;return`M ${v.x} ${v.y} A ${p} ${p} 0 ${c} ${u} ${b.x} ${b.y} L ${w.x} ${w.y} A ${g} ${g} 0 ${c} ${x} ${y.x} ${y.y} Z`}buildRingSegmentPath(e,n,i,o,r,a){const s=o/2,l=i+s,c=Math.max(0,i-s),u=(r-90)*Math.PI/180,d=(a-90)*Math.PI/180,f={x:e+l*Math.cos(u),y:n+l*Math.sin(u)},h={x:e+l*Math.cos(d),y:n+l*Math.sin(d)},p={x:e+c*Math.cos(u),y:n+c*Math.sin(u)},g={x:e+c*Math.cos(d),y:n+c*Math.sin(d)},m=a>r?1:0,v=Math.abs(a-r)>180?1:0;return`M ${f.x} ${f.y} A ${l} ${l} 0 ${v} ${m} ${h.x} ${h.y} L ${g.x} ${g.y} A ${c} ${c} 0 ${v} ${1-m} ${p.x} ${p.y} Z`}getFromType(){return this._snapshot?this._snapshot.fromType:null}_buildMapping(e,n,i,o,r){const a=new Map,s=Li(i),l=e.slice().sort((c,u)=>c.realIndex-u.realIndex||c.j-u.j);if(s==="partition"&&r&&r.length){const c=l.filter(u=>u.key);c.length===l.length&&(c.forEach(u=>{a.set(`key:${u.key}`,{d:u.d,fill:u.fill})}),r.forEach(u=>{a.set(`key:${u.key}`,{d:u.d,fill:u.fill})}))}if(s==="radial"||s==="unit"||s==="partition")return l.forEach((c,u)=>{a.set(`${u}:0`,{d:c.d,fill:c.fill})}),a;if(s==="bar"||s==="summary"){const c=[];return(Array.isArray(o)?o:[]).forEach((d,f)=>{const h=d&&Array.isArray(d.data)?d.data:[];for(let p=0;p{const h=c[f];h&&a.set(`${h.realIndex}:${h.j}`,{d:d.d,fill:d.fill})}),a}return a}isActive(){return this._snapshot!==null}getInitialPathFor(e,n){if(!this._snapshot)return null;const i=this._snapshot.mapping.get(`${e}:${n}`);if(!i)return null;const o=this._snapshot.oldLayout.translateX-(this.w.layout.translateX||0),r=this._snapshot.oldLayout.translateY-(this.w.layout.translateY||0);return o===0&&r===0?i.d:this._translatePathD(i.d,o,r)}_translatePathD(e,n,i){return n===0&&i===0?e:Lg(e).map(r=>{const a=r[0];return a==="Z"?"Z":a==="M"||a==="L"||a==="T"?`${a} ${r[1]+n} ${r[2]+i}`:a==="H"?`${a} ${r[1]+n}`:a==="V"?`${a} ${r[1]+i}`:a==="C"?`${a} ${r[1]+n} ${r[2]+i} ${r[3]+n} ${r[4]+i} ${r[5]+n} ${r[6]+i}`:a==="S"||a==="Q"?`${a} ${r[1]+n} ${r[2]+i} ${r[3]+n} ${r[4]+i}`:a==="A"?`${a} ${r[1]} ${r[2]} ${r[3]} ${r[4]} ${r[5]} ${r[6]+n} ${r[7]+i}`:r.join(" ")}).join(" ")}getInitialCenterFor(e){const n=this.getInitialBBoxFor(e);return n?{x:n.x+n.width/2,y:n.y+n.height/2}:null}getInitialPathAt(e){return this.getInitialPathFor(e,0)}getInitialPathForKey(e){return!this._snapshot||!e?null:this.getInitialPathFor("key",e)}hasKeyedMarks(){if(!this._snapshot)return!1;for(const e of this._snapshot.mapping.keys())if(typeof e=="string"&&e.startsWith("key:"))return!0;return!1}getInitialSlotFor(e,n,i){const o=this.getInitialBBoxFor(e);if(!o)return null;const r=o.x+o.width/2,a=o.y+o.height/2;if(!(i>1)||!(n>=0))return{x:r,y:a};const s=(Math.min(n,i-1)+.5)/i;return o.height>=o.width?{x:r,y:o.y+o.height*(1-s)}:{x:o.x+o.width*s,y:a}}getInitialBBoxFor(e){if(!this._snapshot)return null;const n=this._snapshot.mapping.get(`${e}:0`);if(!n)return null;const i=this._pathBBox(n.d);if(!i)return null;const o=this._snapshot.oldLayout.translateX-(this.w.layout.translateX||0),r=this._snapshot.oldLayout.translateY-(this.w.layout.translateY||0);return{x:i.minX+o,y:i.minY+r,width:i.maxX-i.minX,height:i.maxY-i.minY}}_pathBBox(e){const n=Lg(e);let i=1/0,o=1/0,r=-1/0,a=-1/0,s=!1;return n.forEach(l=>{const c=l[0];if(c==="Z")return;let u=[];if(c==="H")u=[[l[1],(o+a)/2||l[1]]];else if(c==="V")u=[[(i+r)/2||l[1],l[1]]];else if(c==="A")u=[[l[6],l[7]]];else for(let d=1;d+1{!isFinite(d)||!isFinite(f)||(s=!0,dr&&(r=d),fa&&(a=f))})}),s?{minX:i,minY:o,maxX:r,maxY:a}:null}getInitialFillFor(e,n){if(!this._snapshot)return null;const i=this._snapshot.mapping.get(`${e}:${n}`);return i?i.fill:null}getSpeed(){const e=this.w.config.chart.animations;return e.chartTypeMorph&&e.chartTypeMorph.speed||e.speed||600}applyChromeFade(){var e;if(!this._snapshot||!Ot.isBrowser())return;const n=(e=this.w.globals.dom)==null?void 0:e.baseEl;if(!n)return;this._snapshot.pieceOut?this._separatePieces():this._snapshot.pieceIn?this._combinePieces():this._mountGhost();const i=this.getSpeed();[".apexcharts-xaxis",".apexcharts-yaxis",".apexcharts-grid",".apexcharts-gridlines-horizontal",".apexcharts-gridlines-vertical",".apexcharts-legend",".apexcharts-title-text",".apexcharts-subtitle-text"].forEach(r=>{n.querySelectorAll(r).forEach(a=>{a.style&&(a.style.opacity="0",a.style.transition=`opacity ${i}ms ease-out`,We.requestAnimationFrame(()=>{a.style.opacity="1"}),setTimeout(()=>{a.style.transition="",a.style.opacity=""},i+80))})}),setTimeout(()=>this.cleanup(),i+100)}cleanup(){this._snapshot=null,this._removeGhost(),this._cancelPieces()}}Vn.registerFeatures({morphTypeChange:R1e});const Sl="http://www.w3.org/1999/xhtml",AN=18;function _N(t,e){const n=t.config.drilldown&&t.config.drilldown.breadcrumb||{};return Ye(Ye({show:!0,position:"top-left",separator:" / ",rootLabel:"All",offsetX:0,offsetY:0,formatter:void 0},n),e||{})}function PN(t,e){const n=[".apexcharts-title-text",".apexcharts-subtitle-text"].map(o=>t.dom.baseEl.querySelector(o)).filter(o=>o!==null);if(!n.length)return;const i=t.dom.elWrap.getBoundingClientRect().top;for(let o=0;o{const l=s.getBoundingClientRect();return r.leftl.left&&r.topl.top});if(!a)break;e.style.top=`${a.getBoundingClientRect().bottom-i+4}px`}}function L1e(t,e){const n=t.layout.translateY||0,i=t.dom.elWrap;if(!i)return n;const o=t.dom.baseEl.querySelectorAll(".apexcharts-yaxis-label");if(!o.length)return n;const r=i.getBoundingClientRect().top,a=e.getBoundingClientRect();let s=n;for(let l=0;l=a.right||c.right<=a.left||(s=Math.min(s,c.top-r)))}return s}function F1e(t,e,n,i){var o;const r=(o=e==null?void 0:e.dimensions)==null?void 0:o.dimHelpers,a=r?r.getTitleSubtitleCoords("title").height+r.getTitleSubtitleCoords("subtitle").height:0,s=n.getBoundingClientRect().height||AN,l=i&&i.offsetY||0,c=L1e(t,n);if(c-a>=s+1)return n.style.top=`${c-s-1+l}px`,!0;n.style.top=`${a+l}px`;const u=t.config.theme.mode==="dark";return n.style.background=u?"rgba(20,24,30,0.82)":"rgba(255,255,255,0.86)",n.style.borderRadius="4px",!1}function ON(t){const e=t.dom.elWrap;if(!e)return;const n=e.querySelector(".apexcharts-breadcrumb");n&&n.parentNode&&n.parentNode.removeChild(n)}function N1e(t,e){if(!Ot.isBrowser())return null;const n=t.dom.elWrap;if(!n)return null;ON(t);const i=e.config||_N(t);if(i.show===!1)return null;const o=e.crumbs||[];if(o.length<2)return null;const r=We.createElementNS(Sl,"nav");r.setAttribute("class","apexcharts-breadcrumb"),r.setAttribute("aria-label",e.ariaLabel||"Breadcrumb"),B1e(r,i),e.compact&&(r.style.fontSize="11px",r.style.padding="0 2px");const a=i.separator!=null?i.separator:" / ";return o.forEach((s,l)=>{var c;if(l>0){const h=We.createElementNS(Sl,"span");h.setAttribute("class","apexcharts-breadcrumb-separator"),h.setAttribute("aria-hidden","true"),h.textContent=a,r.appendChild(h)}let u=l===0?(c=i.rootLabel)!=null?c:"All":s.label;if(typeof i.formatter=="function"&&(u=i.formatter(u,{index:l,depth:o.length-1,data:s.data})),l===o.length-1){const h=We.createElementNS(Sl,"span");h.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),h.setAttribute("aria-current","page"),h.textContent=String(u),r.appendChild(h);return}const d=We.createElementNS(Sl,"button");if(d.setAttribute("type","button"),d.setAttribute("class","apexcharts-breadcrumb-item"),l===0){const h=We.createElementNS(Sl,"span");h.setAttribute("class","apexcharts-breadcrumb-arrow"),h.setAttribute("aria-hidden","true"),h.textContent="←",d.appendChild(h)}const f=We.createElementNS(Sl,"span");f.setAttribute("class","apexcharts-breadcrumb-label"),f.textContent=String(u),d.appendChild(f),d.addEventListener("click",()=>e.onNavigate(l,s)),r.appendChild(d)}),n.appendChild(r),r}function B1e(t,e){const n=e.offsetX||0,i=e.offsetY||0;t.style.position="absolute",t.style.top=i+"px",e.position==="top-right"?t.style.right=-n+3+"px":t.style.left=n+"px"}const Cl="http://www.w3.org/1999/xhtml";class z1e{constructor(e,n,i){this.w=e,this.ctx=n,this.drilldown=i}render(e){if(!Ot.isBrowser())return;const n=this.w,i=n.dom.elWrap;if(!i)return;const o=i.querySelector(".apexcharts-breadcrumb");o&&o.parentNode&&o.parentNode.removeChild(o);const r=n.config.drilldown&&n.config.drilldown.breadcrumb;if(!r||r.show===!1||this.drilldown.depth===0)return;const a=We.createElementNS(Cl,"nav");a.setAttribute("class","apexcharts-breadcrumb"),a.setAttribute("aria-label","Drilldown breadcrumb"),this._position(a,r);const s=r.separator!=null?r.separator:" / ";e.forEach((l,c)=>{if(c>0){const f=We.createElementNS(Cl,"span");f.setAttribute("class","apexcharts-breadcrumb-separator"),f.setAttribute("aria-hidden","true"),f.textContent=s,a.appendChild(f)}const u=this._label(l,c);if(c===e.length-1){const f=We.createElementNS(Cl,"span");f.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),f.setAttribute("aria-current","page"),f.textContent=u,a.appendChild(f)}else{const f=We.createElementNS(Cl,"button");if(f.setAttribute("type","button"),f.setAttribute("class","apexcharts-breadcrumb-item"),c===0){const p=We.createElementNS(Cl,"span");p.setAttribute("class","apexcharts-breadcrumb-arrow"),p.setAttribute("aria-hidden","true"),p.textContent="←",f.appendChild(p)}const h=We.createElementNS(Cl,"span");h.setAttribute("class","apexcharts-breadcrumb-label"),h.textContent=u,f.appendChild(h),f.addEventListener("click",()=>this.drilldown.drillToLevel(c)),a.appendChild(f)}}),i.appendChild(a),this.w.globals.axisCharts&&F1e(this.w,this.ctx,a,r),this._avoidChromeOverlap(a)}_avoidChromeOverlap(e){const n=this.w,i=[".apexcharts-title-text",".apexcharts-subtitle-text"].map(r=>n.dom.baseEl.querySelector(r)).filter(r=>r!==null);if(!i.length)return;const o=n.dom.elWrap.getBoundingClientRect().top;for(let r=0;r{const c=l.getBoundingClientRect();return a.leftc.left&&a.topc.top});if(!s)break;e.style.top=`${s.getBoundingClientRect().bottom-o+4}px`}}_label(e,n){const i=this.w.config.drilldown.breadcrumb;let o;if(n===0)o=i.rootLabel!=null?i.rootLabel:"All";else{const r=(this.w.config.drilldown.series||[]).find(a=>a&&a.id===e);o=r&&r.name||String(e)}return typeof i.formatter=="function"?i.formatter(o,{index:n,depth:this.drilldown.depth}):o}_position(e,n){const i=n.offsetX||0,o=n.offsetY||0;e.style.position="absolute",e.style.top=o+"px",n.position==="top-right"?e.style.right=-i+3+"px":e.style.left=i+"px"}}const O0="http://www.w3.org/1999/xhtml",mh="apexcharts-drilldown-loading";class H1e{constructor(e){this.w=e,this.el=null}_cfg(){const e=this.w.config.drilldown,n=e&&e.loading;return n===!1?{show:!1}:n||{}}show(){if(!Ot.isBrowser())return;const e=this._cfg();if(e.show===!1)return;const n=this.w.dom.elWrap;if(!n)return;this.hide();const i=We.createElementNS(O0,"div");i.setAttribute("class",mh),i.setAttribute("role","status"),i.setAttribute("aria-live","polite"),i.setAttribute("aria-label",e.text||"Loading");const o=We.createElementNS(O0,"div");if(o.setAttribute("class",`${mh}-spinner`),o.setAttribute("aria-hidden","true"),i.appendChild(o),e.text){const r=We.createElementNS(O0,"span");r.setAttribute("class",`${mh}-text`),r.textContent=e.text,i.appendChild(r)}n.appendChild(i),this.el=i}hide(){const e=this.w.dom.elWrap;if(e){const n=e.querySelectorAll(`.${mh}`);for(let i=0;ie.id)]}get depth(){return this.stack.length}drillDown(e,n,i){const o=this._resolveChild(e);return o?this._drillInto(o,n,i):typeof this.w.config.drilldown.onDrillDown=="function"?this._drillDownAsync(e,n,i):(console.warn(`ApexCharts: drilldown id "${e}" not found in chart.drilldown.series, and no onDrillDown resolver is set.`),Promise.resolve(this.ctx))}drillUp(){return this.drillToLevel(this.stack.length-1)}drillToRoot(){return this.drillToLevel(0)}drillToLevel(e){const n=this.stack.length;if(e<0||e>=n)return Promise.resolve(this.ctx);const i=this.path[this.path.length-1],o=e===0?this.rootSnapshot:this.stack[e].restore;this.stack=this.stack.slice(0,e);const r=this.path[this.path.length-1];return this._apply(this._viewFromSnapshot(o),"up",{from:i,to:r})}_resolveChild(e){const n=this.w.config.drilldown&&this.w.config.drilldown.series;return Array.isArray(n)&&n.find(i=>i&&i.id===e)||null}_drillInto(e,n,i){if(this.stack.length>=VE)return console.warn(`ApexCharts: drilldown max depth (${VE}) reached.`),Promise.resolve(this.ctx);this.rootSnapshot||(this.rootSnapshot=this._snapshot());const o=this.path[this.path.length-1];return this.stack.push({id:e.id,name:e.name,restore:this._snapshot()}),this._apply(this._viewFromChild(e),"down",{from:o,to:e.id,point:n,seriesIndex:i&&i.seriesIndex,dataPointIndex:i&&i.dataPointIndex})}_drillDownAsync(e,n,i){const r=this.w.config.drilldown.onDrillDown,a=this._cacheGet(e);if(a)return this._drillInto(a,n,i);if(this._pending)return this._pending;let s;this.loading.show();try{s=r({id:e,point:n,seriesIndex:i&&i.seriesIndex,dataPointIndex:i&&i.dataPointIndex})}catch(u){return this.loading.hide(),this._fire("drillDownError",{id:e,error:u}),Promise.resolve(this.ctx)}const l=()=>{this._pending=null,this.loading.hide()},c=Promise.resolve(s).then(u=>{if(l(),this._isDead())return this.ctx;if(!u||!u.data)return this._fire("drillDownError",{id:e,error:new Error(`drilldown: onDrillDown resolved without a drillable level for id "${e}" (expected an object with a \`data\` array).`)}),this.ctx;const d=u.id!=null?u:vt(Ye({},u),{id:e});return this._cacheSet(e,d),this._drillInto(d,n,i)},u=>(l(),this._isDead()?this.ctx:(this._fire("drillDownError",{id:e,error:u}),this.ctx)));return this._pending=c,c}_isDead(){const e=this.w;return!e||!e.globals||e.globals.isDestroyed===!0}_cacheEnabled(){const e=this.w.config.drilldown;return!!(e&&e.cache!==!1)}_cacheGet(e){return!this._cacheEnabled()||e==null?null:this._asyncCache.get(e)||null}_cacheSet(e,n){!this._cacheEnabled()||e==null||this._asyncCache.set(e,n)}clearCache(e){return e==null?this._asyncCache.clear():this._asyncCache.delete(e),this.ctx}_snapshot(){const e=this.w.config,n=this._overrideFields(),i={series:this._uncollapseSeries(Ee.clone(e.series))};return Array.isArray(e.labels)&&e.labels.length&&(i.labels=Ee.clone(e.labels)),i.chart={type:e.chart.type,stacked:e.chart.stacked},n.has("xaxis")&&(i.xaxis=Ee.clone(e.xaxis)),n.has("yaxis")&&(i.yaxis=Ee.clone(e.yaxis)),n.has("colors")&&(i.colors=e.colors?Ee.clone(e.colors):void 0),n.has("plotOptions")&&(i.plotOptions=Ee.clone(e.plotOptions)),n.has("fill")&&(i.fill=Ee.clone(e.fill)),n.has("legend")&&(i.legend=Ee.clone(e.legend)),i}_uncollapseSeries(e){const n=this.w,i=n.globals,o=[...i.collapsedSeries||[],...i.ancillaryCollapsedSeries||[]];if(!o.length)return e;const r=n.config.chart.type,s=(r==="pie"||r==="donut"||r==="polarArea")&&e.length===1&&e[0]&&typeof e[0]=="object"&&Array.isArray(e[0].data)?e[0].data:e;for(const l of o){const c=l.index;i.axisCharts?e[c]&&(e[c].data=Array.isArray(l.data)?l.data.slice():l.data):s[c]&&typeof s[c]=="object"?s[c].y=l.data:s[c]!==void 0&&(s[c]=l.data)}return e}_overrideFields(){const e=new Set,n=this.w.config.drilldown&&this.w.config.drilldown.series||[];for(const i of n)i&&(i.xaxis&&e.add("xaxis"),i.yaxis&&e.add("yaxis"),i.colors&&e.add("colors"),i.plotOptions&&e.add("plotOptions"),i.fill&&e.add("fill"),i.legend&&e.add("legend"));return e}_copyOptionalViewFields(e,n){n.xaxis&&(e.xaxis=n.xaxis),n.yaxis&&(e.yaxis=n.yaxis),n.colors&&(e.colors=n.colors),n.plotOptions&&(e.plotOptions=n.plotOptions),n.fill&&(e.fill=n.fill),n.legend&&(e.legend=n.legend)}_viewFromChild(e){const n={};Array.isArray(e.series)?n.series=e.series:n.series=[{name:e.name||"",data:e.data}];const i={};return e.chart&&e.chart.type&&(i.type=e.chart.type),e.chart&&e.chart.stacked!=null&&(i.stacked=e.chart.stacked),Object.keys(i).length&&(n.chart=i),this._copyOptionalViewFields(n,e),n}_viewFromSnapshot(e){const n={series:e.series,chart:e.chart};return e.labels&&e.labels.length&&(n.labels=e.labels),this._copyOptionalViewFields(n,e),n}_apply(e,n,i){const o=this.w;o.interact.selectedDataPoints=[],o.globals.collapsedSeries=[],o.globals.collapsedSeriesIndices=[],o.globals.ancillaryCollapsedSeries=[],o.globals.ancillaryCollapsedSeriesIndices=[],o.globals.allSeriesCollapsed=!1,o.globals.risingSeries=[],e.markers=vt(Ye({},e.markers||{}),{discrete:this._drillMarkers(e.series)});const r=(!o.config.drilldown.animation||o.config.drilldown.animation.enabled!==!1)&&o.config.chart.animations.enabled!==!1;n==="down"&&this._fire("drillDownStart",i);const a=l=>this.ctx.updateOptions(e,!1,l,!1,!1),s=()=>(this._fire(n==="down"?"drillDownEnd":"drillUp",i),this.ctx);if(r&&this._zoomEnabled()){const l=this._triggerOrigin(i);if(l)return this._zoomDrill(l,n,()=>a(!1)).then(s)}return a(r).then(s)}_zoomEnabled(){const e=this.w.config.drilldown&&this.w.config.drilldown.animation;return!!(e&&e.zoomFromPoint)}_svgNode(){const e=this.w.dom&&this.w.dom.Paper;return e&&e.node?e.node:null}_markGroup(){const e=this._svgNode();return!e||typeof e.querySelector!="function"?null:e.querySelector(".apexcharts-plot-series, .apexcharts-heatmap, .apexcharts-treemap")}_triggerOrigin(e){if(!Ot.isBrowser())return null;const n=this._svgNode(),i=this._markGroup();if(!n||!i||typeof i.animate!="function"||typeof n.getBoundingClientRect!="function")return null;const o=n.getBoundingClientRect();let r=null;if(e&&e.seriesIndex!=null&&e.dataPointIndex!=null&&this.w.dom.baseEl&&(r=this.w.dom.baseEl.querySelector(`[index="${e.seriesIndex}"][j="${e.dataPointIndex}"]`)),r&&typeof r.getBoundingClientRect=="function"){const s=r.getBoundingClientRect();return{x:s.left+s.width/2-o.left,y:s.top+s.height/2-o.top}}const a=i.getBoundingClientRect();return{x:a.left+a.width/2-o.left,y:a.top+a.height/2-o.top}}_zoomDrill(e,n,i){return Wxe(this,null,function*(){const o=this._zoomDuration(),r=n==="down",a=Math.round(o*.55),s=r?"scale(1.03)":"scale(0.97)",l=r?"scaleX(0.55) scaleY(0.85)":"scale(1.04)",c=p=>{p.style.transformBox="view-box",p.style.transformOrigin=`${e.x}px ${e.y}px`},u=p=>{p.style.transform="",p.style.opacity="",p.style.transformOrigin="",p.style.transformBox=""},d=this._markGroup();let f=null;if(d){c(d),f=d.animate([{transform:"scale(1)",opacity:1},{transform:s,opacity:0}],{duration:a,easing:"ease-in",fill:"forwards"});try{yield f.finished}catch{}}yield i();const h=this._markGroup();if(h){c(h),h.style.opacity="0",h.style.transform=l,f&&d===h&&f.cancel();const p=h.animate([{transform:l,opacity:0},{transform:"scale(1)",opacity:1}],{duration:o,easing:"cubic-bezier(0.16, 1, 0.3, 1)",fill:"forwards"});try{yield p.finished}catch{}u(h),p.cancel()}})}_zoomDuration(){const e=this.w.config.drilldown&&this.w.config.drilldown.animation,n=e&&typeof e.speed=="number"?e.speed:260;return Math.max(80,n)}_fire(e,n){const i=this.w.config.chart.events&&this.w.config.chart.events[e];typeof i=="function"&&i(n,this.ctx,this.w),this.ctx.events.fireEvent(e,[n,this.ctx,this.w])}_onPointSelect(e,n,i){if(!i)return;const o=this._pointAt(i.seriesIndex,i.dataPointIndex);if(o&&typeof o=="object"&&o.drilldown!=null)return this.drillDown(o.drilldown,o,i);if(typeof this.w.config.drilldown.onDrillDown=="function")return this._drillDownAsync(null,o,i)}_pointAt(e,n){const i=this.w.config.series;if(!Array.isArray(i)||e==null||n==null)return null;const o=i[e];return!o||!Array.isArray(o.data)?null:o.data[n]!=null?o.data[n]:null}_afterRender(){const e=this.w;!e.config.drilldown||!e.config.drilldown.enabled||(this._markDrillableTargets(),this._wirePlotClick(),this.breadcrumb.render(this.path),e.config.markers&&(e.config.markers.discrete=this._drillMarkers(e.config.series)))}_markDrillableTargets(){if(!Ot.isBrowser())return;const e=this.w,n=e.dom.baseEl,i=e.config.series;if(!n||!Array.isArray(i))return;let o=0;i.forEach((r,a)=>{const s=r&&Array.isArray(r.data)?r.data:null;s&&s.forEach((l,c)=>{if(!l||typeof l!="object"||l.drilldown==null)return;const u=n.querySelectorAll(`[index="${a}"][j="${c}"]`);u.length||o++,u.forEach(d=>{this._isClickThroughMark(d)&&d.classList.remove("no-pointer-events"),d.classList.add("apexcharts-drilldown-target")})})}),o&&!this._warnedUnreachable&&(this._warnedUnreachable=!0,console.warn(`ApexCharts: ${o} drillable point(s) have no clickable mark, so clicking them cannot do anything. Leave \`drilldown.marker\` on, or give the series markers of its own (\`markers.size > 0\`).`))}warnSliceOffsetDisabled(){this._warnedNoSliceOffset||(this._warnedNoSliceOffset=!0,console.warn("ApexCharts: `plotOptions.pie.expandOnClick` is not available in a drilldown pie/donut, so it was ignored. A slice click navigates, and a slice that slid out would be discarded by the drill it just triggered."))}_wirePlotClick(){if(!Ot.isBrowser())return;const e=this.w.dom.baseEl;!e||this._plotClickWired===e||(this._plotClickWired&&(this._plotClickWired.removeEventListener("mousedown",this._onPlotDown),this._plotClickWired.removeEventListener("click",this._onPlotClick)),e.addEventListener("mousedown",this._onPlotDown),e.addEventListener("click",this._onPlotClick),this._plotClickWired=e)}_onPlotDown(e){this._downAt={x:e.clientX,y:e.clientY}}_onPlotClick(e){const n=this.w;if(!n.config.drilldown||!n.config.drilldown.enabled)return;const i=this._downAt;if(this._downAt=null,i&&Math.hypot(e.clientX-i.x,e.clientY-i.y)>4)return;const o=e.target;if(!o||typeof o.closest!="function"||o.closest(".apexcharts-drilldown-target")||o.closest(".apexcharts-legend, .apexcharts-toolbar, .apexcharts-breadcrumb, .apexcharts-menu, .apexcharts-tooltip"))return;const r=n.interact.capturedSeriesIndex,a=n.interact.capturedDataPointIndex;if(r==null||a==null||r<0||a<0||!this._isPointBasedSeries(n.config.series[r]))return;const s=this._pointAt(r,a);if(!(!s||typeof s!="object"||s.drilldown==null))return this.drillDown(s.drilldown,s,{seriesIndex:r,dataPointIndex:a})}_isClickThroughMark(e){return!e.classList||!e.classList.contains("no-pointer-events")||!e.classList.contains("apexcharts-marker")?!1:!(typeof e.closest=="function"&&e.closest(".apexcharts-tooltip"))}_drillMarkers(e){const n=this.w,i=n.config.drilldown,o=Array.isArray(n.config.markers&&n.config.markers.discrete)?n.config.markers.discrete.filter(s=>!s||!s[XE]):[],r=i&&i.marker||{};if(r.show===!1||!Array.isArray(e))return o;const a=[];return e.forEach((s,l)=>{if(!this._seriesNeedsDrillMarker(l,s))return;const c=s&&Array.isArray(s.data)?s.data:null;c&&c.forEach((u,d)=>{if(!u||typeof u!="object"||u.drilldown==null)return;const f={seriesIndex:l,dataPointIndex:d,[XE]:!0};r.size!==void 0&&(f.size=r.size),r.shape!==void 0&&(f.shape=r.shape),r.fillColor!==void 0&&(f.fillColor=r.fillColor),r.strokeColor!==void 0&&(f.strokeColor=r.strokeColor),a.push(f)})}),o.concat(a)}_seriesNeedsDrillMarker(e,n){if(!this._isPointBasedSeries(n))return!1;const i=this.w.config.markers&&this.w.config.markers.size,o=Array.isArray(i)?i[e]:i;return!(Number(o)>0)}_isPointBasedSeries(e){const n=e&&e.type||this.w.config.chart.type;return n==="line"||n==="area"}}Vn.registerFeatures({drilldown:W1e});const T0="__apexcharts_plugins__";function j1e(){const t=globalThis;return t[T0]||(t[T0]={}),t[T0]}function V1e(t){return j1e()[t]||null}const nw=5,X1e=["updateOptions","updateSeries","appendData","appendSeries","toggleSeries","showSeries","hideSeries","highlightSeries","isSeriesHidden","zoomX","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","dataURI","exportToCSV"];function Y1e(t){const e={};return X1e.forEach(n=>{typeof t[n]=="function"&&(e[n]=t[n].bind(t))}),Object.freeze(e)}function G1e(t,e){const n=o=>(o&&t.add(o),o),i={get node(){return t.node},path(o={}){const{d:r="",stroke:a="#000",width:s=1,fill:l="none",opacity:c=1,dash:u=0,className:d=""}=o;return n(e.drawPath({d:r,stroke:a,strokeWidth:s,fill:l,fillOpacity:l==="none"?0:c,strokeOpacity:c,strokeDashArray:u,classes:d}))},line(o={}){const{x1:r,y1:a,x2:s,y2:l,stroke:c="#000",width:u=1,dash:d=0}=o;return n(e.drawLine(r,a,s,l,c,d,u))},rect(o={}){const{x:r=0,y:a=0,w:s=0,h:l=0,r:c=0,fill:u="#000",stroke:d=null,opacity:f=1}=o;return n(e.drawRect(r,a,s,l,c,u,f,d!=null?1:null,d))},circle(o={}){const{cx:r=0,cy:a=0,r:s=0,fill:l="#000",stroke:c=null}=o;return n(e.drawCircle(s,{cx:r,cy:a,fill:l,stroke:c||"none"}))},text(o={}){const{x:r=0,y:a=0,text:s="",color:l,size:c,anchor:u="start",weight:d}=o;return n(e.drawText({x:r,y:a,text:s,textAnchor:u,fontSize:c,foreColor:l,fontWeight:d}))},clear(){const o=t.node;for(;o.firstChild;)o.removeChild(o.firstChild);return i}};return i}function K1e(t,e){const n=t.ctx,i=t.w,o={name:e.def.name,version:nw,get options(){return e.options},on(r,a){const s=e.handlers;return s.has(r)||s.set(r,[]),s.get(r).push(a),o},off(r,a){const s=e.handlers.get(r);if(s){const l=s.indexOf(a);l>-1&&s.splice(l,1)}return o},store:{},layer(r){return t._layer(e.def.name,r||{})},get scales(){return t._currentScales},get data(){return t._lastData||(t._lastData=t._dataSnapshot())},theme:Object.freeze({get mode(){return i.config.theme.mode},get foreColor(){return i.config.chart.foreColor},seriesColor(r){return i.globals.colors[r]},token(r){return t._token(r)}}),chart:Y1e(n),get info(){return Object.freeze({type:String(i.config.chart&&(i.config.chart.requestedType||i.config.chart.type)||"line"),axisChart:i.globals.axisCharts===!0,datetimeX:!!(i.config.xaxis&&i.config.xaxis.type==="datetime"),horizontalBars:!!(i.config.plotOptions&&i.config.plotOptions.bar&&i.config.plotOptions.bar.horizontal),dataLabels:Object.freeze({enabled:!!(i.config.dataLabels&&i.config.dataLabels.enabled),enabledOnSeries:Array.isArray(i.config.dataLabels&&i.config.dataLabels.enabledOnSeries)?i.config.dataLabels.enabledOnSeries.slice():null}),stroke:Object.freeze({dashArray:Array.isArray(i.config.stroke&&i.config.stroke.dashArray)?i.config.stroke.dashArray.slice():i.config.stroke&&i.config.stroke.dashArray||0})})},get categories(){return t._categories()},markDerived(r){return t._markDerived(e.def.name,r),o},reserve(r){return t._reserve(e.def.name,r),o},pointer(r){return t._onPointer(e.def.name,r)},emit(r,a){n.events.fireEvent(`plugin:${e.def.name}:${r}`,[n,a])},get el(){return i.dom.baseEl}};return Object.freeze(o)}const TN=class Pu{constructor(e,n){this.w=e,this.ctx=n,this.active=[],this._layers=new Map,this._currentScales=null,this._lastPluginsRef=null,this._lastData=null,this._updatedWired=!1,this._derived=null,this._reserved=null,this._reserveTimer=null,this._pointerSubs=null,this._pointerWired=null,this._onUpdated=this._onUpdated.bind(this),this._init()}_init(){(this.w.config.plugins||[]).map((n,i)=>({entry:n,order:n.order!=null?n.order:i})).sort((n,i)=>n.order-i.order).forEach(n=>this._activate(n.entry)),this._lastPluginsRef=this.w.config.plugins,this._wireUpdated()}_wireUpdated(){this._updatedWired||(this.ctx.addEventListener("updated",this._onUpdated),this._updatedWired=!0)}_onUpdated(){this._repairInitialSeries(),this.dispatch("afterUpdate",{pass:"update"})}_activate(e){const n=V1e(e.name);if(!n){console.error(`[apexcharts] plugin "${e.name}" is not registered.`);return}const i=n.apiVersion!=null?Math.trunc(n.apiVersion):1;if(!(i>=1)||i>nw){console.error(`[apexcharts] plugin "${n.name}" targets Weave API v${n.apiVersion}, host is v${nw}; skipped.`);return}const o={def:n,options:Object.freeze(Ye({},e.options||{})),handlers:new Map,disabled:!1,failures:0,api:null};o.api=K1e(this,o),this.active.push(o),this._guard(o,"setup",()=>n.setup(o.api))}dispatch(e,n){if(e==="draw"&&(this._reconcile(),this._resetLayers()),this._lastData=null,!this.active.length)return;e==="afterParse"?this._currentScales=null:n&&"xyRatios"in n&&this._setScales(n.xyRatios);const i=n&&n.pass||"full";let o=null;for(const r of this.active){if(r.disabled)continue;const a=r.handlers.get(e);if(!a||!a.length)continue;o===null&&(o=this._dataSnapshot(),this._lastData=o);const s={api:r.api,scales:this._currentScales,data:o,pass:i,hook:e};for(const l of a.slice())this._guard(r,e,()=>l(s))}}_guard(e,n,i){if(!e.disabled)try{i()}catch(o){console.error(`[apexcharts] plugin "${e.def.name}" threw in "${n}":`,o),e.failures=(e.failures||0)+1,e.failures>=3&&(e.disabled=!0,console.error(`[apexcharts] plugin "${e.def.name}" disabled after repeated errors.`))}}_setScales(e){const n=this.w,i=n.globals,o=n.layout;if(!e||!i.axisCharts){this._currentScales=null;return}const r=e.xRatio,a=e.yRatio||[],s=f=>a[f]!=null?a[f]:a[0],l=f=>i.maxYArr[f]!=null?i.maxYArr[f]:i.maxY,c=f=>i.minYArr[f]!=null?i.minYArr[f]:i.minY,u=!n.axisFlags.isXNumeric&&!i.isBarHorizontal&&i.dataPoints>0,d=u?o.gridWidth/i.dataPoints:0;this._currentScales={x:u?f=>d*(f+.5):f=>(f-i.minX)/r,y:(f,h=0)=>(l(h)-f)/s(h),domainX:u?[-.5,i.dataPoints-.5]:[i.minX,i.maxX],domainY:(f=0)=>[c(f),l(f)],gridWidth:o.gridWidth,gridHeight:o.gridHeight,ratios:e}}_dataSnapshot(){const e=this.w,n=e.globals,i=e.seriesData.series||[],o=e.seriesData.seriesX||[],r=Array.isArray(e.config.series)?e.config.series:[];return i.map((a,s)=>{const l=Array.isArray(a)?a:[a],c=o[s]||[],u=l.map((h,p)=>({x:c[p]!=null?c[p]:p,y:h})),d=r[s],f=d&&typeof d=="object"&&Array.isArray(d.data)?d.data:[];return{name:n.seriesNames?n.seriesNames[s]:void 0,hidden:(n.collapsedSeriesIndices||[]).includes(s),color:n.colors?n.colors[s]:void 0,points:u,raw:f}})}_categories(){const e=this.w,n=e.globals,i=e.config.xaxis&&Array.isArray(e.config.xaxis.categories)?e.config.xaxis.categories:[],o=Array.isArray(n.categoryLabels)?n.categoryLabels:[],r=Array.isArray(n.labels)?n.labels:[],a=i.length?i:o.length?o:r,s=e.seriesData.series||[];let l=0;for(let u=0;ul&&(l=d.length)}l||(l=a.length);const c=[];for(let u=0;uString(o)):[];i.length?this._derived.set(e,i):this._derived.delete(e),this._repairInitialSeries()}_onPointer(e,n){if(typeof n!="function")return()=>{};this._pointerSubs||(this._pointerSubs=new Map);const i=this._pointerSubs.get(e)||[];return i.push(n),this._pointerSubs.set(e,i),this._wirePointer(),()=>{const o=this._pointerSubs&&this._pointerSubs.get(e);if(!o)return;const r=o.indexOf(n);r>-1&&o.splice(r,1)}}_wirePointer(){if(this._pointerWired||!this.ctx||typeof this.ctx.addEventListener!="function")return;const e=[["enter","dataPointMouseEnter"],["leave","dataPointMouseLeave"],["select","dataPointSelection"]];this._pointerWired=[];for(const[n,i]of e){const o=(r,a,s)=>{this._emitPointer(n,s)};this.ctx.addEventListener(i,o),this._pointerWired.push([i,o])}}_emitPointer(e,n){if(!this._pointerSubs||!this._pointerSubs.size)return;const i=n&&typeof n.seriesIndex=="number"?n.seriesIndex:-1,o=n&&typeof n.dataPointIndex=="number"?n.dataPointIndex:-1,r=this._categories()||[],a=this.w,s=a&&a.config&&a.config.series||[],l={type:e,seriesIndex:i,dataPointIndex:o,category:o>-1?r[o]:void 0,seriesName:Pu._seriesName(s,i),selected:e==="select"?Pu._isSelected(n,i,o):void 0};for(const[c,u]of this._pointerSubs)for(const d of u.slice())try{d(l)}catch(f){console.warn('[apexcharts] plugin "'+c+'" threw in a pointer handler',f)}}static _seriesName(e,n){if(n<0)return;const i=e[n];if(!(!i||typeof i!="object"))return typeof i.name=="string"?i.name:void 0}static _isSelected(e,n,i){const o=e&&e.selectedDataPoints;if(!Array.isArray(o)||n<0)return;const r=o[n];return Array.isArray(r)?r.indexOf(i)>-1:!1}_reserve(e,n){const i=Pu._normaliseBox(n),o=this._reserved?this._reserved.get(e):void 0;if(i){if(o&&o.left===i.left&&o.right===i.right&&o.top===i.top&&o.bottom===i.bottom)return;this._reserved||(this._reserved=new Map),this._reserved.set(e,i)}else{if(!o||!this._reserved)return;this._reserved.delete(e)}this._resizeForReservation()}static _normaliseBox(e){if(!e||typeof e!="object")return null;const n=o=>Number.isFinite(o)&&o>0?Math.round(o):0,i={left:n(e.left),right:n(e.right),top:n(e.top),bottom:n(e.bottom)};return i.left||i.right||i.top||i.bottom?i:null}reservedBox(){if(!this._reserved||this._reserved.size===0)return Pu.NO_RESERVATION;const e={left:0,right:0,top:0,bottom:0};for(const n of this._reserved.values())e.left+=n.left,e.right+=n.right,e.top+=n.top,e.bottom+=n.bottom;return e}_resizeForReservation(){this._reserveTimer==null&&(this._reserveTimer=setTimeout(()=>{this._reserveTimer=null;const e=this.w.globals;if(!e.isDestroyed){e.resized=!0,e.dataChanged=!1;try{this.ctx.update()}catch{}}},0))}_derivedNames(){const e=new Set;if(!this._derived)return e;for(const n of this._derived.values())for(const i of n)e.add(i);return e}_repairInitialSeries(){const e=this._derivedNames();if(!e.size)return;const n=this.w,o=(Array.isArray(n.config.series)?n.config.series:[]).filter(r=>!e.has(String(r&&r.name)));if(o.length)try{n.globals.initialSeries=o,n.globals.initialConfig&&Array.isArray(n.globals.initialConfig.series)&&(n.globals.initialConfig.series=o)}catch{}}_token(e){const n=this.w,i=n.globals;switch(e){case"foreColor":return n.config.chart.foreColor;case"background":return n.config.chart.background;case"accent":case"primary":return i.colors?i.colors[0]:void 0;default:return/^series-\d+$/.test(e)&&i.colors?i.colors[Number(e.split("-")[1])]:void 0}}_layer(e,{z:n="front",className:i=""}={}){let o=this._layers.get(e);if(!o){o=this.ctx.graphics.group({class:`apexcharts-plugin-${e} ${i}`.trim()});const r=this.w.dom.elGraphical.node;n==="behind"?r.insertBefore(o.node,r.firstChild):r.appendChild(o.node),o.node.setAttribute("aria-hidden","true"),this._layers.set(e,o)}return G1e(o,this.ctx.graphics)}_resetLayers(){const e=this.w.dom.elGraphical,n=e&&e.node;if(n){const i=n.querySelectorAll('g[class*="apexcharts-plugin-"]');Array.prototype.forEach.call(i,o=>o.remove())}this._layers.clear()}_reconcile(){const e=this.w.config.plugins||[];if(e===this._lastPluginsRef)return;this._lastPluginsRef=e;const n=new Map(e.map((r,a)=>[r.name,{entry:r,order:r.order!=null?r.order:a}]));for(let r=this.active.length-1;r>=0;r--){const a=this.active[r],s=n.get(a.def.name);s?a.options=Object.freeze(Ye({},s.entry.options||{})):(this._guard(a,"destroy",()=>a.def.destroy&&a.def.destroy(a.api)),this.active.splice(r,1),this._reserve(a.def.name,null))}const i=new Set(this.active.map(r=>r.def.name)),o=[];n.forEach((r,a)=>{i.has(a)||o.push(r)}),o.sort((r,a)=>r.order-a.order).forEach(r=>this._activate(r.entry))}teardown(e){if(!e){this.dispatch("destroy");for(const n of this.active)this._guard(n,"destroy",()=>n.def.destroy&&n.def.destroy(n.api));if(this.active=[],this._derived=null,this._reserved=null,this._pointerSubs=null,this._pointerWired){for(const[n,i]of this._pointerWired)this.ctx.removeEventListener&&this.ctx.removeEventListener(n,i);this._pointerWired=null}this._reserveTimer!=null&&(clearTimeout(this._reserveTimer),this._reserveTimer=null),this._updatedWired&&(this.ctx.removeEventListener&&this.ctx.removeEventListener("updated",this._onUpdated),this._updatedWired=!1)}this._layers.clear()}};Hxe(TN,"NO_RESERVATION",Object.freeze({left:0,right:0,top:0,bottom:0}));let U1e=TN;Vn.registerFeatures({weave:U1e});function Ov(t,e){const n=t&&t.renderer;return n&&n.kind&&n.kind!=="svg"?n:e}function q1e(t,e){const n=class{constructor(o,r,a){this.w=o,this.ctx=r,this.xyRatios=a,this._warned=!1}draw(o,r,a){var s,l;const c=this.w,u=new Be(c,this.ctx),d=Ov(this.ctx,u),f=u.group({class:"apexcharts-marks-series"});return o.forEach((h,p)=>{var g;const m=Array.isArray(a)?a[p]:p,v=u.group({class:"apexcharts-series",rel:m+1,seriesName:Ee.escapeString(c.seriesData.seriesNames[m]),"data:realIndex":m}),b=this._scales(m,(c.seriesData.series[m]||[]).length),y=c.globals.colors[m],w=((g=c.config.series[m])==null?void 0:g.data)||[],x=c.seriesData.seriesX[m]||[],$=c.seriesData.series[m]||[];c.globals.seriesXvalues[m]=[],c.globals.seriesYvalues[m]=[],typeof c.globals.pointsArray[m]>"u"&&(c.globals.pointsArray[m]=[]);for(let S=0;S<$.length;S++){const _=$[S];if(_===null||typeof _>"u")continue;const P=x[S],T=b.xAt(S,P),O=b.y(_),M=this._api(d,v,m,S);try{e.renderItem({datum:w[S],x:T,y:O,scales:b,api:M,seriesIndex:m,dataPointIndex:S,color:y})}catch(I){this._warned||(console.warn(`[apexcharts] renderItem for series type "${t}" threw; skipping datum:`,I),this._warned=!0)}c.globals.seriesXvalues[m][S]=T,c.globals.seriesYvalues[m][S]=O,c.globals.pointsArray[m][S]=[T,O]}u.setupEventDelegation(v,".apexcharts-marks-mark"),f.add(v)}),(l=(s=this.ctx.animations)==null?void 0:s.animationCompleted)==null||l.call(s,f),f}_scales(o,r){var a,s,l,c;const u=this.w.globals,d=this.w.config,f=this.xyRatios.xRatio,h=this.xyRatios.yRatio,p=(s=(a=u.seriesYAxisReverseMap)==null?void 0:a[o])!=null?s:0,g=Array.isArray(h)?(l=h[p])!=null?l:h[0]:h,m=u.maxYArr,v=Array.isArray(m)&&m.length&&(c=m[p])!=null?c:u.maxY,b=u.gridWidth,y=u.gridHeight,w=!u.isXNumeric,x=r||u.dataPoints||1,$=x>0?b/x:b,S=d.xaxis.tickPlacement==="on",_=I=>f?(I-u.minX)/f:b/2,P=I=>(v-I)/g,T=(I,k)=>w?S&&x>1?I/(x-1)*b:(I+.5)*$:_(k),O=u.minXDiff||1,M=w?$:f?O/f:b;return{x:_,xAt:T,y:P,gridWidth:b,gridHeight:y,band:M}}_api(o,r,a,s){const l=c=>{if(c){try{c.node.setAttribute("index",String(a)),c.node.setAttribute("j",String(s)),c.node.classList.add("apexcharts-marks-mark")}catch{}r.add(c)}return c};return{path:(c={})=>{var u,d,f,h,p,g,m,v,b;return l(o.drawPath({d:c.d||"",stroke:(u=c.stroke)!=null?u:"#000",strokeWidth:(f=(d=c.width)!=null?d:c.strokeWidth)!=null?f:1,fill:(h=c.fill)!=null?h:"none",fillOpacity:(g=c.fillOpacity)!=null?g:c.fill&&c.fill!=="none"?(p=c.opacity)!=null?p:1:0,strokeOpacity:(v=(m=c.strokeOpacity)!=null?m:c.opacity)!=null?v:1,strokeDashArray:(b=c.dash)!=null?b:0,strokeLinecap:c.lineCap}))},line:(c={})=>{var u,d,f,h;return l(o.drawLine(c.x1,c.y1,c.x2,c.y2,(u=c.stroke)!=null?u:"#000",(d=c.dash)!=null?d:0,(h=(f=c.width)!=null?f:c.strokeWidth)!=null?h:1))},rect:(c={})=>{var u,d,f,h,p,g,m,v;return l(o.drawRect((u=c.x)!=null?u:0,(d=c.y)!=null?d:0,(f=c.w)!=null?f:0,(h=c.h)!=null?h:0,(p=c.r)!=null?p:0,(g=c.fill)!=null?g:"#000",(m=c.opacity)!=null?m:1,c.stroke!=null?(v=c.strokeWidth)!=null?v:1:null,c.stroke))},circle:(c={})=>{var u,d,f,h,p;return l(o.drawCircle((u=c.r)!=null?u:0,{cx:(d=c.cx)!=null?d:0,cy:(f=c.cy)!=null?f:0,fill:(h=c.fill)!=null?h:"#000",stroke:c.stroke||"none","stroke-width":(p=c.strokeWidth)!=null?p:c.stroke?1:0}))},text:(c={})=>{var u,d,f,h;return l(o.drawText({x:(u=c.x)!=null?u:0,y:(d=c.y)!=null?d:0,text:(f=c.text)!=null?f:"",textAnchor:(h=c.anchor)!=null?h:"start",fontSize:c.size,foreColor:c.color,fontWeight:c.weight}))}}}};return n.dataType=e.dataType||"xy",n.yExtent=typeof e.yExtent=="function"?e.yExtent:null,n}Vn._customSeriesFactory=q1e;const Z1e="(prefers-color-scheme: dark)",J1e="(prefers-contrast: more)";class Wl{constructor(e,n){if(this.w=e,this.ctx=n,e.config.theme.follow!=="os"||!Ot.isBrowser())return;const i=this._ensureMedia();i&&(this._applyToConfig(i),this._ensureListeners(i))}_ensureMedia(){if(!this.ctx._osThemeMedia){const e=We.matchMedia(Z1e),n=We.matchMedia(J1e);if(!e&&!n)return null;this.ctx._osThemeMedia={dark:e,contrast:n,handler:null}}return this.ctx._osThemeMedia}_applyToConfig(e){const n=this.w.config.theme;e.dark&&(n.mode=e.dark.matches?"dark":"light"),e.contrast&&e.contrast.matches&&(n.accessibility=n.accessibility||{},n.accessibility.colorBlindMode="highContrast")}_ensureListeners(e){if(e.handler)return;const n=this.ctx,i=()=>{const o=n._osThemeMedia;if(!o)return;const r={mode:o.dark&&o.dark.matches?"dark":"light"};o.contrast&&o.contrast.matches?r.accessibility={colorBlindMode:"highContrast"}:r.accessibility={colorBlindMode:""},n.updateOptions({theme:r},!1,!0,!1)};Wl._add(e.dark,i),Wl._add(e.contrast,i),e.handler=i}teardown(){const e=this.ctx._osThemeMedia;e&&(e.handler&&(Wl._remove(e.dark,e.handler),Wl._remove(e.contrast,e.handler)),this.ctx._osThemeMedia=null)}static _add(e,n){e&&(typeof e.addEventListener=="function"?e.addEventListener("change",n):typeof e.addListener=="function"&&e.addListener(n))}static _remove(e,n){e&&(typeof e.removeEventListener=="function"?e.removeEventListener("change",n):typeof e.removeListener=="function"&&e.removeListener(n))}}Vn.registerFeatures({osThemeWatcher:Wl});const iw="__apexcharts_series_transforms__";globalThis[iw]||(globalThis[iw]={});function Q1e(){return globalThis[iw]}function Yc(t,e){if(!t||typeof t!="string"){console.warn("ApexCharts: registerSeriesTransform requires a non-empty name.");return}if(typeof e!="function"){console.warn(`ApexCharts: registerSeriesTransform("${t}") expects a function (series, w) => series.`);return}Q1e()[t]=e}const ow="__apexcharts_row_sources__";globalThis[ow]||(globalThis[ow]={});function eSe(){return globalThis[ow]}function f$(t,e){if(!t||typeof t!="string"){console.warn("ApexCharts: registerRowSource requires a non-empty name.");return}if(typeof e!="function"){console.warn(`ApexCharts: registerRowSource("${t}") expects a function (w, opts) => series.`);return}eSe()[t]=e}const YE=1e3;function kr(t,e){const n=t.length;if(n===0)return NaN;if(n===1)return t[0];const i=(n-1)*e,o=Math.floor(i),r=Math.ceil(i);return o===r?t[o]:t[o]+(t[r]-t[o])*(i-o)}function EN(t){const e=t.length;if(e<2)return 0;let n=0;for(let r=0;re/Math.max(1,Math.ceil(r));switch(n){case"sqrt":return{width:o(Math.sqrt(i)),rule:"sqrt"};case"rice":return{width:o(2*Math.cbrt(i)),rule:"rice"};case"scott":{const r=EN(t);return r>0?{width:3.49*r*Math.pow(i,-1/3),rule:"scott"}:{width:o(Math.log2(i)+1),rule:"sturges"}}case"fd":{const r=kr(t,.75)-kr(t,.25);return r>0?{width:2*r*Math.pow(i,-1/3),rule:"fd"}:{width:o(Math.log2(i)+1),rule:"sturges"}}case"auto":{const r=o(Math.log2(i)+1),a=kr(t,.75)-kr(t,.25);if(a<=0)return{width:r,rule:"sturges"};const s=2*a*Math.pow(i,-1/3);return sf-h);let i=n[0],o=n[n.length-1];const r=e.range;if(Array.isArray(r)&&r.length===2){const f=Number(r[0]),h=Number(r[1]);isFinite(f)&&isFinite(h)&&h>f&&(i=f,o=h)}if(!(o>i)){const f=Math.abs(i)>0?Math.abs(i)*.05:.5;return{edges:[i-f,i+f],binWidth:f*2,rule:"single",capped:!1}}const a=o-i;let s,l;if(typeof e.binWidth=="number"&&e.binWidth>0)s=e.binWidth,l="binWidth";else if(typeof e.bins=="number"&&e.bins>=1)s=a/Math.floor(e.bins),l="count";else{const f=tSe(n,a,typeof e.bins=="string"?e.bins:"auto");s=f.width,l=f.rule}(!isFinite(s)||s<=0)&&(s=a);let c=Math.ceil(a/s);(!isFinite(c)||c<1)&&(c=1);let u=!1;c>YE&&(c=YE,s=a/c,u=!0),s=a/c;const d=new Array(c+1);for(let f=0;f<=c;f++)d[f]=i+f*s;return d[c]=Math.max(d[c],o),{edges:d,binWidth:s,rule:l,capped:u}}function MN(t,e){const n=e.length-1;if(!(t>=e[0])||t>e[n])return-1;if(t===e[n])return n-1;const i=(e[n]-e[0])/n;if(i>0){let a=Math.floor((t-e[0])/i);return a<0&&(a=0),a>n-1&&(a=n-1),t=e[a+1]&&a++,a<0||a>n-1?-1:a}let o=0,r=n-1;for(;o<=r;){const a=o+r>>1;if(t=e[a+1])o=a+1;else return a}return-1}function iSe(t,e){const n=new Array(Math.max(0,e.length-1)).fill(0);for(let i=0;i=0&&n[o]++}return n}function oSe(t,e){const n=Math.max(0,e.length-1),i=new Array(n);for(let o=0;o=0&&i[r].push(t[o])}return i}function rSe(t,e={}){if(!Array.isArray(t)||t.length===0)return null;const n=t.slice().sort((u,d)=>u-d),i=kr(n,.25),o=kr(n,.5),r=kr(n,.75),a=r-i;let s=n[0],l=n[n.length-1],c=[];if(e.whiskers==="tukey"&&a>0){const u=i-1.5*a,d=r+1.5*a;let f=0;for(;f=0&&n[h]>d;)h--;f<=h&&(s=n[f],l=n[h],c=n.slice(0,f).concat(n.slice(h+1)))}return{summary:[s,i,o,r,l],outliers:c,iqr:a}}function aSe(t,e={}){if(!Array.isArray(t)||t.length===0)return null;const n=t.slice().sort((d,f)=>d-f),i=n.length;let o=e.bandwidth;if(!(typeof o=="number"&&o>0)){const d=EN(n),f=kr(n,.75)-kr(n,.25);o=.9*(f>0?Math.min(d,f/1.349):d)*Math.pow(i,-1/5)}if(!isFinite(o)||o<=0){const d=n[0],f=Math.abs(d)>0?Math.abs(d)*.001:.001;return{density:[[d-f,0],[d,1],[d+f,0]],bandwidth:f}}const r=Math.max(8,Math.floor(e.resolution||64)),a=n[0]-2*o,l=(n[i-1]+2*o-a)/(r-1),c=1/(i*o*Math.sqrt(2*Math.PI)),u=[];for(let d=0;do+=r)}const i=t.reduce((o,r)=>o+r,0);if(i<=0)return n;if(e.normalize==="relative")return n.map(o=>o/i*100);if(e.normalize==="density"){const o=e.binWidth;if(typeof o=="number"&&o>0)return n.map(r=>r/(i*o))}return n}function IN(t,e){var n;if(!t||typeof t!="object"||Array.isArray(t))return null;let i=null;if(Array.isArray(t.points)?i=t.points:Array.isArray((n=t.y)==null?void 0:n.points)?i=t.y.points:e&&Array.isArray(t.y)&&typeof t.y[0]=="number"&&(i=t.y),!i)return null;const o=[];for(let r=0;rvt(Ye({},p),{data:Array.isArray(p==null?void 0:p.data)?p.data.slice():p==null?void 0:p.data})));const r=o.histogramRawSeries,a=((n=i.plotOptions)==null?void 0:n.histogram)||{},s=r.map(p=>kN(p==null?void 0:p.data));let l=[];if(s.length===1)l=s[0];else for(const p of s)l=l.concat(p);const c=nSe(l,{bins:a.bins,binWidth:a.binWidth,range:a.range});if(!c)return e.histogramData={edges:[],binWidth:0,counts:[],rule:"",capped:!1},r;const{edges:u,binWidth:d}=c,f=s.map(p=>iSe(p,u));e.histogramData={edges:u,binWidth:d,counts:f,rule:c.rule,capped:c.capped};const h=o.collapsedSeriesIndices||[];return r.map((p,g)=>{if(h.indexOf(g)!==-1)return vt(Ye({},p),{data:[]});const m=sSe(f[g],{normalize:a.normalize,cumulative:a.cumulative,binWidth:d}),v=[];for(let b=0;b{if(!Array.isArray(r==null?void 0:r.data))return r;let a=!1;const s=r.data.map(l=>{if(Array.isArray(l==null?void 0:l.y)&&l.y.length===5&&!Ng.has(l))return l;const c=IN(l,!1);if(!c)return l;const u=rSe(c,{whiskers:o});if(!u)return l;a=!0;const d=vt(Ye({},l),{y:u.summary,points:c});return Ng.add(d),d});return a?vt(Ye({},r),{data:s}):r})}function uSe(t,e){var n,i;if(!Array.isArray(t))return t;const o=((i=(n=e.config.plotOptions)==null?void 0:n.violin)==null?void 0:i.kde)||{};return t.map(r=>{if(!Array.isArray(r==null?void 0:r.data))return r;let a=!1;const s=r.data.map(l=>{var c;if(Array.isArray((c=l==null?void 0:l.y)==null?void 0:c.density)&&l.y.density.length&&!Ng.has(l))return l;const u=IN(l,!0);if(!u)return l;const d=aSe(u,{bandwidth:o.bandwidth,resolution:o.resolution});if(!d)return l;a=!0;const f=vt(Ye({},l),{y:{density:d.density,points:u}});return Ng.add(f),f});return a?vt(Ye({},r),{data:s}):r})}const dSe=3e3;function fSe(t,e){let n=0,i=0;for(const l of t)n+=l.length,l.length>i&&(i=l.length);if(n<=e)return{clusters:t,stride:1,total:n,kept:n};const o=l=>{let c=0;for(const u of t)c+=Math.ceil(u.length/l);return c};let r=Math.max(2,Math.ceil(n/e));for(;re;)r++;let a=0;return{clusters:t.map(l=>{const c=[];for(let u=0;ua.rows),i);o.stride>1&&console.warn(`ApexCharts: rowSeries() thinned ${o.total} rows to ${o.kept} (every ${o.stride}${o.stride===2?"nd":o.stride===3?"rd":"th"} row) to stay under maxRows=${i}. Raise maxRows to draw more.`);const r=t.globals&&t.globals.colors||[];return e.map((a,s)=>{const l=r[a.realIndex]||r[0];return{name:a.name,data:o.clusters[s].map((c,u)=>Ye({id:`${a.realIndex}:${s}:${u}`,x:a.name,y:c},l?{fillColor:l}:{}))}})}function hSe(t,e){const n=t.globals,i=t.histogramData,o=n&&n.histogramRawSeries;if(!i||!Array.isArray(i.edges)||i.edges.length<2||!Array.isArray(o)||!o.length)return null;const r=n&&n.collapsedSeriesIndices||[],a=i.edges,s=[];return o.forEach((l,c)=>{var u;if(r.indexOf(c)!==-1)return;const d=oSe(kN(l&&l.data),a),f=t.seriesData&&((u=t.seriesData.seriesNames)==null?void 0:u[c])||(l==null?void 0:l.name);d.forEach((h,p)=>{const g=`${GE(a[p])}-${GE(a[p+1])}`;s.push({name:o.length>1&&f?`${f} ${g}`:g,realIndex:c,rows:h})})}),s.length?DN(t,s,e):null}function GE(t){if(!isFinite(t))return String(t);const e=Math.round(t);return Math.abs(t-e)<1e-6?String(e):String(Number(t.toFixed(2)))}function RN(t){return(e,n)=>{var i;const o=t(e);if(!Array.isArray(o)||!o.length)return null;const r=e.globals&&e.globals.collapsedSeriesIndices||[],a=e.globals&&((i=e.globals.categoryLabels)!=null&&i.length?e.globals.categoryLabels:e.globals.labels)||[],s=[];return o.forEach((l,c)=>{var u;if(r.indexOf(c)!==-1||!Array.isArray(l))return;const d=e.seriesData&&((u=e.seriesData.seriesNames)==null?void 0:u[c]);l.forEach((f,h)=>{const p=a[h]!=null?String(a[h]):`#${h+1}`;s.push({name:o.length>1&&d?`${d} ${p}`:p,realIndex:c,rows:Array.isArray(f)?f.slice():[]})})}),s.length?DN(e,s,n):null}}const pSe=RN(t=>{var e;return(e=t.candleData)==null?void 0:e.seriesBoxPoints}),gSe=RN(t=>{var e;return(e=t.violinData)==null?void 0:e.seriesViolinPoints});Yc("histogram",lSe);Yc("boxPlot",cSe);Yc("violin",uSe);f$("histogram",hSe);f$("boxPlot",pSe);f$("violin",gSe);class mSe{constructor(e,n){this.w=e,this.ctx=n}isActive(){return this.w.config.chart.requestedType==="waterfall"}drawConnectors(){var e,n;const i=this.w;if(!this.isActive())return;const o=(n=(e=i.config.plotOptions)==null?void 0:e.waterfall)==null?void 0:n.connectors;if(!o||o.show===!1)return;const r=i.dom.elGraphical,a=i.waterfallData&&i.waterfallData.geometry;if(!r||!a)return;this.removeConnectors();const s=new Be(i,this.ctx),l=s.group({class:"apexcharts-waterfall-connectors"}),c=o.color||i.config.grid.borderColor,u=o.strokeWidth==null?1:o.strokeWidth,d=o.strokeDashArray==null?3:o.strokeDashArray;let f=0;for(let p=0;p.5))continue;const w=v.horizontal?s.drawLine(v.levelEnd,v.slotEnd,v.levelEnd,b.slotStart,c,d,u):s.drawLine(v.slotEnd,v.levelEnd,b.slotStart,v.levelEnd,c,d,u);w.node.classList.add("apexcharts-waterfall-connector"),l.add(w),f++}}if(!f)return;l.attr("clip-path",`url(#gridRectBarMask${i.globals.cuid})`);const h=r.node.querySelector(".apexcharts-xaxis");h?r.node.insertBefore(l.node,h):r.add(l),this.holdUntilBarsLand(l)}removeConnectors(){const e=this.w.dom.elGraphical,n=e&&e.node.querySelector(".apexcharts-waterfall-connectors");n&&n.parentNode&&n.parentNode.removeChild(n)}holdUntilBarsLand(e){const n=this.w;Ot.isBrowser()&&n.globals.shouldAnimate&&!n.globals.animationEnded&&(e.node.classList.add("apexcharts-element-hidden"),n.globals.delayedElements.push({el:e.node,holdUntilComplete:!0}))}}function vSe(t,e,n){const i=n&&n[e]!==void 0?n[e]:e+1;return t==null?{x:i,y:null,isSubtotal:!1,isTotal:!1,rest:{}}:Array.isArray(t)?{x:t[0]!==void 0?t[0]:i,y:t[1],isSubtotal:!1,isTotal:!1,rest:{}}:typeof t=="object"?{x:t.x!==void 0?t.x:i,y:t.y,isSubtotal:t.isSubtotal===!0,isTotal:t.isTotal===!0,rest:t}:{x:i,y:t,isSubtotal:!1,isTotal:!1,rest:{}}}function bSe(t){for(let e=0;evt(Ye({},g),{data:Array.isArray(g==null?void 0:g.data)?g.data.slice():g==null?void 0:g.data})));const s=a.waterfallRawSeries,l=((i=(n=r.plotOptions)==null?void 0:n.waterfall)==null?void 0:i.colors)||{},c=(o=r.xaxis)==null?void 0:o.categories,u=a.collapsedSeriesIndices||[],d=[],f=[],h=[],p=s.map((g,m)=>{const v=Array.isArray(g==null?void 0:g.data)?g.data:[];if(u.indexOf(m)!==-1)return d[m]=[],f[m]=[],h[m]=[],vt(Ye({},g),{data:[]});if(bSe(v))return d[m]=v.map(y=>{const w=Array.isArray(y)?y[1]:y&&typeof y=="object"?y.y:y;if(!Array.isArray(w))return null;const x=Ee.parseNumber(w[0]),$=Ee.parseNumber(w[1]);return x===null||$===null?null:$-x}),f[m]=v.map(y=>{const w=Array.isArray(y)?y[1]:y&&typeof y=="object"?y.y:y,x=Array.isArray(w)?Ee.parseNumber(w[1]):null;return x===null?0:x}),h[m]=v.map(()=>null),g;const b=xSe(v,c,l);return d[m]=b.values,f[m]=b.cumulative,h[m]=b.kinds,vt(Ye({},g),{data:b.data})});return e.waterfallData={values:d,cumulative:f,kinds:h,geometry:[]},p}Yc("waterfall",wSe);Vn.registerFeatures({waterfall:mSe});function SSe(t,e,n){const i=n&&n[e]!==void 0?n[e]:e+1;return t==null?{x:i,y:null,rest:{}}:Array.isArray(t)?{x:t[0]!==void 0?t[0]:i,y:t[1],rest:{}}:typeof t=="object"?{x:t.x!==void 0?t.x:i,y:t.y,rest:t}:{x:i,y:t,rest:{}}}function CSe(t){for(let e=0;evt(Ye({},v),{data:Array.isArray(v==null?void 0:v.data)?v.data.slice():v==null?void 0:v.data})));const r=o.dumbbellRawSeries;if(r.some(v=>CSe(Array.isArray(v==null?void 0:v.data)?v.data:[])))return e.dumbbellData={form:"pairs",names:[],values:[],order:[],carrier:0,hidden:[]},t;const s=(n=i.xaxis)==null?void 0:n.categories,l=o.collapsedSeriesIndices||[],{xs:c,rows:u,byX:d}=$Se(r,s),f=[],h=[],p=[];for(let v=0;vw)&&(w=P,$=_))}if(y===null||w===null){h.push(null),g.push(vt(Ye({},u[v]),{x:c[v],y:null}));continue}h.push([x,$]),g.push(vt(Ye({},u[v]),{x:c[v],y:[y,w]}))}e.dumbbellData={form:"series",names:r.map((v,b)=>{var y;return(y=v==null?void 0:v.name)!=null?y:`Series ${b+1}`}),values:f,order:h,carrier:p.length?p[0]:0,hidden:r.map((v,b)=>b).filter(v=>l.indexOf(v)!==-1)};const m=e.dumbbellData.carrier;return r.map((v,b)=>vt(Ye({},v),{data:b===m&&p.length?g:[]}))}Yc("dumbbell",ASe);const vh=3;class _Se{constructor(e,n){this.w=e,this.ctx=n,this._hovered=-1}isActive(){return this.w.config.chart.requestedType==="streamgraph"}_yPx(e){var n;const i=this.w,o=i.globals,r=i.layout.gridHeight,a=o.maxY-o.minY;if(!a||!isFinite(a))return r/2;const s=(e-o.minY)/a;return(n=i.config.yaxis[0])!=null&&n.reversed?s*r:r-s*r}draw(){this.isActive()&&(this.clearDim(),this.bindHover(),this.drawLabels())}drawLabels(){var e,n,i,o,r,a,s;const l=this.w;if(!this.isActive())return;const c=(n=(e=l.config.plotOptions)==null?void 0:e.streamgraph)==null?void 0:n.labels;if(!c||c.show===!1)return;const u=l.dom.elGraphical,d=l.streamgraphData;if(!u||!d)return;this.removeLabels();const f=new Be(l,this.ctx),h=f.group({class:"apexcharts-streamgraph-labels"}),p=((i=c.style)==null?void 0:i.fontSize)||"auto",g=((o=c.style)==null?void 0:o.fontFamily)||l.config.chart.fontFamily,m=((r=c.style)==null?void 0:r.fontWeight)||600,v=c.minWidth==null?24:c.minWidth,b=[];for(let x=0;xp&&(p=S)}if(p<=0)return null;const g=this._resolveFontSize(n,p),m=String(l.names[e]);let v=g,b=a.getTextRects(m,`${v}px`,i,"",!0,o);if(py.width&&n==="auto"){const $=Math.floor(v*(y.width/b.width));if($1){const I=Math.abs(Number(d[Math.min($.r+1,f-1)])-Number(d[Math.max($.l-1,0)]));P=isFinite(I)?I:0}if(PO*2.2&&M.push(S+O/2+2,_-O/2-2);for(const I of M){let k=$.l,E=1/0;for(let R=$.l;R<=$.r;R++){const D=Math.abs(Number(d[R])-I);D=6)break}return x.length?{k:e,weight:p,candidates:x}:null}_runs(e,n,i){const o=[];let r=0;for(;r=n;)a++,e[a]>s&&(s=e[a]);o.push({l:r,r:a,maxT:s}),r=a+1}return o.sort((a,s)=>s.maxT-a.maxT)}_widestRun(e,n,i,o){let r=-1;for(const a of this._runs(e,i,o)){const s=Number(n[a.r])-Number(n[a.l]);isFinite(s)&&s>r&&(r=s)}return r>=0?{width:r}:null}_deconflict(e){const n=e.slice().sort((r,a)=>a.weight-r.weight),i=[],o=r=>!i.some(a=>r.lefta.box.left&&r.topa.box.top);for(const r of n)for(const a of r.candidates){const s={left:a.x-a.width/2,right:a.x+a.width/2,top:a.y-a.height/2,bottom:a.y+a.height/2};if(o(s)){i.push(vt(Ye({k:r.k},a),{box:s}));break}}return i}_autoBounds(){var e,n;const i=((n=(e=this.w.config.plotOptions)==null?void 0:e.streamgraph)==null?void 0:n.labels)||{};return{min:i.minFontSize==null?9:i.minFontSize,max:i.maxFontSize==null?30:i.maxFontSize}}_resolveFontSize(e,n){if(e!=="auto"){const r=parseFloat(e);return isFinite(r)&&r>0?r:12}const{min:i,max:o}=this._autoBounds();return Math.max(i,Math.min(o,Math.round(n*.36)))}_contrastOn(e){var n;const i=this.w,o=(n=i.globals.colors)==null?void 0:n[e],r=typeof o=="string"?Ee.parseHex(o):null;return r?Ee.relativeLuminance(r)>.45?"#000000":"#ffffff":i.config.chart.foreColor}removeLabels(){const e=this.w.dom.elGraphical,n=e&&e.node.querySelector(".apexcharts-streamgraph-labels");n&&n.parentNode&&n.parentNode.removeChild(n)}bindHover(){const e=this.w;if(!Ot.isBrowser()||this._hoverCfg().show===!1)return;const n=e.dom.baseEl&&e.dom.baseEl.querySelector(".apexcharts-svg");!n||n.__apexStreamHover||(n.__apexStreamHover=!0,n.addEventListener("mousemove",i=>{!this.isActive()||!this.w.streamgraphData||this._dim(this._bandAt(i))}),n.addEventListener("mouseleave",()=>{this._dim(-1)}))}_hoverCfg(){var e,n;return((n=(e=this.w.config.plotOptions)==null?void 0:e.streamgraph)==null?void 0:n.hover)||{}}_bandAt(e){const n=this.w,i=n.streamgraphData;if(!i||!i.order.length)return-1;const o=n.dom.baseEl&&n.dom.baseEl.querySelector(".apexcharts-svg");if(!o)return-1;const r=o.getBoundingClientRect(),a=n.globals.svgWidth?r.width/n.globals.svgWidth:1,s=so.screenXToPlotPx(n,e.clientX),l=(e.clientY-r.top)/(a||1)-n.layout.translateY;if(s<0||s>n.layout.gridWidth||l<0||l>n.layout.gridHeight)return-1;const c=n.globals.seriesXvalues[i.order[0]];if(!Array.isArray(c)||!c.length)return-1;const u=n.interact?n.interact.capturedDataPointIndex:-1;let d=-1;if(u>=0&&u=b&&l<=y)return g;const w=le<0||c===e;for(let l=0;l({j:o,v:t[o]instanceof Date?t[o].getTime():t[o]}));n.sort((o,r)=>o.v-r.v);const i=n.map(o=>o.j);for(let o=0;op&&(p=f[m],g=m);i[d]=h,o[d]=g}const r=e.slice().sort((u,d)=>o[u]-o[d]||u-d);let a=0,s=0;const l=[],c=[];for(let u=0;uvt(Ye({},O),{data:Array.isArray(O==null?void 0:O.data)?O.data.slice():O==null?void 0:O.data})));const a=r.streamgraphRawSeries;if(a.some(O=>ESe(Array.isArray(O==null?void 0:O.data)?O.data:[])))return e.streamgraphData=null,t;const s=((n=o.plotOptions)==null?void 0:n.streamgraph)||{},l=PSe.indexOf(s.offset)!==-1?s.offset:"wiggle",c=OSe.indexOf(s.order)!==-1?s.order:"inside-out",u=(i=o.xaxis)==null?void 0:i.categories,d=r.collapsedSeriesIndices||[],{xs:f,rows:h,grids:p}=MSe(a,u),g=ISe(f),m=g?g.map(O=>f[O]):f,v=g?g.map(O=>h[O]):h,b=m.length;let y=!1;const w=[];for(let O=0;OO.slice());for(let O=0;Onull),T=a.map(()=>null);for(let O=0;O{var I;return(I=O==null?void 0:O.name)!=null?I:`Series ${M+1}`}),xs:m,values:w,lows:P,highs:T,order:S,offset:l,hidden:a.map((O,M)=>M).filter(O=>d.indexOf(O)!==-1)},a.map((O,M)=>{const I=P[M],k=T[M];if(!I||!k)return vt(Ye({},O),{data:[]});const E=new Array(b);for(let R=0;R{if(typeof t!="function")return t;const o=t({series:e.seriesData.series,seriesIndex:n,dataPointIndex:i,w:e});return Number.isFinite(o)?o:0};function LN(t){return-Math.cos(t*Math.PI)/2+.5}function LSe(t,e,n,i){t=Math.min(Math.max(t,0),1),n=Math.min(Math.max(n,0),1);const o=3*t,r=3*(n-t)-o,a=1-o-r,s=3*e,l=3*(i-e)-s,c=1-s-l,u=h=>((a*h+r)*h+o)*h,d=h=>((c*h+l)*h+s)*h,f=h=>{let p=0,g=1,m=h;if(mg)return g;for(;pv?p=m:g=m,m=(p+g)/2}return m};return h=>h<=0?0:h>=1?1:d(f(h))}const Mi=new Map,FSe=t=>t;Mi.set("linear",FSe);Mi.set("easeInOutSine",LN);Mi.set("easeInSine",t=>1-Math.cos(t*Math.PI/2));Mi.set("easeOutSine",t=>Math.sin(t*Math.PI/2));Mi.set("easeInQuad",t=>t*t);Mi.set("easeOutQuad",t=>1-(1-t)*(1-t));Mi.set("easeInOutQuad",t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2);Mi.set("easeInCubic",t=>t*t*t);Mi.set("easeOutCubic",t=>1-Math.pow(1-t,3));Mi.set("easeInOutCubic",t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2);Mi.set("easeOutBack",t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2));Mi.set("easeInOutBack",t=>{const n=2.5949095;return t<.5?Math.pow(2*t,2)*((n+1)*2*t-n)/2:(Math.pow(2*t-2,2)*((n+1)*(t*2-2)+n)+2)/2});function NSe(t){return Array.isArray(t)&&t.length===4&&t.every(e=>typeof e=="number")}function BSe(t){return typeof t=="function"?KE(t):NSe(t)?LSe(t[0],t[1],t[2],t[3]):typeof t=="string"&&Mi.has(t)?KE(Mi.get(t)):LN}function KE(t){return e=>{const n=t(e);return typeof n=="number"&&isFinite(n)?n:e}}function zSe(t,e){const n=new Set(t.exits),i=[];let o=0;for(let r=0;rl[0]==="C"?[Number(l[5]),Number(l[6])]:[Number(l[1]),Number(l[2])]);for(const l of s)if(!isFinite(l[0])||!isFinite(l[1]))return null;return{body:o,closing:r,segType:a,anchors:s}}function as(t,e,n){return[t[0]+(e[0]-t[0])*n,t[1]+(e[1]-t[1])*n]}function HSe(t,e,n){const i=t,o=[e[1],e[2]],r=[e[3],e[4]],a=[e[5],e[6]],s=as(i,o,n),l=as(o,r,n),c=as(r,a,n),u=as(s,l,n),d=as(l,c,n),f=as(u,d,n);return{first:["C",s[0],s[1],u[0],u[1],f[0],f[1]],second:["C",d[0],d[1],c[0],c[1],a[0],a[1]],mid:f}}function WSe(t,e,n){const i=[e[1],e[2]],o=as(t,i,n);return{first:["L",o[0],o[1]],second:["L",i[0],i[1]],mid:o}}function qE(t,e){const{body:n,closing:i,segType:o,anchors:r}=t,a=r.length,s=e.length,l=f=>o==="C"?["C",f[0],f[1],f[0],f[1],f[0],f[1]]:["L",f[0],f[1]],c=[["M",r[0][0],r[0][1]]];let u=0;for(;uc.push(f.slice())),c}function ZE(t,e,n,i,o,r){const a=UE(t,i,r);if(!a)return null;const s=UE(e,o,r);if(!s||a.segType!==s.segType||(a.closing||s.closing)&&(!a.closing||!s.closing||a.closing[0][0]!==s.closing[0][0]))return null;const l=n.map(u=>u.oldJ),c=n.map(u=>u.newJ);return{from:tw(qE(a,l)),toInterp:tw(qE(s,c))}}function td(t){var e;const n=t.config.chart.animations;if(!n||n.enabled===!1||!n.dynamicAnimation||n.dynamicAnimation.enabled===!1)return!1;const i=(e=n.largeDatasetThreshold)!=null?e:0;return i>0&&t.globals.dataPoints>i?!1:!!(Ot.isBrowser()&&t.globals.dataChanged&&t.globals.shouldAnimate)}function Or(t,e,n){var i,o,r,a;if((i=t.axisFlags)!=null&&i.isXNumeric){const l=(r=(o=t.seriesData)==null?void 0:o.seriesX)==null?void 0:r[e];if(l&&l.length&&l[n]!=null)return"x:"+l[n]}const s=(a=t.globals.labels)==null?void 0:a[n];return s!=null&&String(s)!==""?"c:"+(Array.isArray(s)?s.join(" "):String(s)):"j:"+n}function jSe(t,e,n){var i,o;if(t.isXNumeric){const a=(i=t.seriesX)==null?void 0:i[e];if(a&&a.length&&a[n]!=null)return"x:"+a[n]}const r=(o=t.labels)==null?void 0:o[n];return r!=null&&String(r)!==""?"c:"+(Array.isArray(r)?r.join(" "):String(r)):"j:"+n}function VSe(t,e){const n=new Map;t.forEach((c,u)=>{n.has(c)||n.set(c,u)});const i=new Array(e.length),o=new Set;let r=-1,a=!0,s=t.length===e.length;e.forEach((c,u)=>{const d=n.has(c)&&!o.has(n.get(c))?n.get(c):-1;i[u]=d,d!==-1&&(o.add(d),d{const i=e.get(n)||0;return e.set(n,i+1),i===0?n:`${n}#${i}`})}function Tv(t,e,n=!1,i=!1){var o,r;if(!td(t))return null;const a=t.globals.prevStreamFrame;if(!a)return null;const s=(o=a.seriesY)==null?void 0:o[e],l=(r=t.seriesData.series)==null?void 0:r[e];if(!Array.isArray(s)||!Array.isArray(l)||!s.length||!l.length)return null;const c=JE(s.map((f,h)=>jSe(a,e,h))),u=JE(l.map((f,h)=>Or(t,e,h))),d=VSe(c,u);return!d.ordered&&!i||!d.changed&&!n?null:{join:d,oldKeys:c,newKeys:u}}function XSe(t){var e,n;const i=t.config.chart.animations;return BSe((n=(e=i.dynamicAnimation)==null?void 0:e.easing)!=null?n:i.easing)}function QE(t,e,n,i,o){const r=performance.now(),a=s=>{if(t.globals.isDestroyed)return;const l=Math.max(0,Math.min(1,(s-r)/e));i(n(l),l),l<1?We.requestAnimationFrame(a):o&&o()};We.requestAnimationFrame(a)}function eM(t,{elPointsMain:e,realIndex:n,speed:i}){var o,r,a,s;if(!(e!=null&&e.node))return!1;const l=Tv(t,n,!0);if(!l)return!1;const c=t.globals.prevStreamFrame;if(!c)return!1;const u=(o=c.xPixels)==null?void 0:o[n],d=(r=c.yPixels)==null?void 0:r[n];if(!u||!d)return!1;const f=e.node.querySelectorAll(".apexcharts-marker");if(!f.length)return!1;const h=((a=t.globals.seriesXvalues)==null?void 0:a[n])||[],p=((s=t.globals.seriesYvalues)==null?void 0:s[n])||[],g=XSe(t),m=Math.max(1,i||1);return e.node.classList.remove("apexcharts-element-hidden"),f.forEach(v=>{var b,y,w,x,$,S,_,P,T;const O=parseInt((y=(b=v.getAttribute("j"))!=null?b:v.getAttribute("rel"))!=null?y:"",10);if(!isFinite(O)||O<0||O>=l.join.toOld.length)return;const M=l.join.toOld[O],I=h[O]!=null&&p[O]!=null?[h[O],p[O]]:null;if(M===-1||!I){const z=v.style;z.opacity="0",QE(t,m,g,W=>{z.opacity=String(W)},()=>{z.opacity=""});return}const k=((w=u[M])!=null?w:NaN)-I[0],E=((x=d[M])!=null?x:NaN)-I[1];if(!isFinite(k)||!isFinite(E))return;const R=(_=(S=($=c.rPixels)==null?void 0:$[n])==null?void 0:S[M])!=null?_:NaN,D=parseFloat((T=(P=v.getAttribute("r"))!=null?P:v.getAttribute("default-marker-size"))!=null?T:""),F=isFinite(R)&&isFinite(D)&&D>0&&Math.abs(R-D)>.25;if(!(Math.abs(k)>=.5||Math.abs(E)>=.5)&&!F)return;const B=z=>{const W=k*(1-z),j=E*(1-z);if(F){const U=(R+(D-R)*z)/D;v.setAttribute("transform",`translate(${W+I[0]*(1-U)}, ${j+I[1]*(1-U)}) scale(${U})`)}else v.setAttribute("transform",`translate(${W}, ${j})`)};B(0),QE(t,m,g,B,()=>{v.removeAttribute("transform")})}),!0}function YSe(t,{type:e,realIndex:n,pathFromLine:i,pathFromArea:o,linePaths:r,areaPaths:a}){var s,l;const c=Tv(t,n);if(!c)return null;const{join:u,oldKeys:d,newKeys:f}=c,h=t.globals.prevStreamFrame;if(!h)return null;const p=(s=h.seriesY)==null?void 0:s[n],g=(l=t.seriesData.series)==null?void 0:l[n];if(p.length<2||g.length<2||p.some(b=>b===null)||g.some(b=>b===null))return null;const m=zSe(u,d.length),v={};return Array.isArray(r)&&r.length===1&&i&&(v.line=ZE(i,r[0],m,d.length,f.length,!1)),e==="area"&&Array.isArray(a)&&a.length===1&&o&&(v.area=ZE(o,a[0],m,d.length,f.length,!0)),!v.line&&!v.area?null:v}function GSe(t){const e=/^M\s*([+-]?[\d.eE]+)[\s,]+([+-]?[\d.eE]+)/.exec(t||"");if(!e)return null;const n=parseFloat(e[1]),i=parseFloat(e[2]);return isFinite(n)&&isFinite(i)?{x:n,y:i}:null}function KSe({w:t,elSeries:e,record:n,newKeys:i,isHorizontal:o,speed:r}){var a;if(!td(t)||!n||!Array.isArray(n.paths)||!(e!=null&&e.node))return;const s=new Set(i),l=n.paths.filter(d=>d&&d.d&&d.key!=null&&!s.has(d.key));if(!l.length)return;const c=new Be(t),u=(a=t.globals.colors)==null?void 0:a[parseInt(String(n.realIndex),10)];l.forEach(d=>{let f=d.fill||u||"#c8c8c8";String(f).indexOf("url(")===0&&(f=u||"#c8c8c8");const h=c.drawPath({d:d.d,stroke:"none",strokeWidth:0,fill:f,fillOpacity:1,classes:"apexcharts-bar-ghost"}),p=h.node;p.setAttribute("pointer-events","none"),h.attr("clip-path",`url(#gridRectBarMask${t.globals.cuid})`),e.node.insertBefore(p,e.node.firstChild);const g=GSe(d.d);let m=o?"left center":"center bottom";try{const x=p.getBBox();g&&x&&(o?m=Math.abs(g.x-x.x)<=Math.abs(g.x-(x.x+x.width))?"left center":"right center":m=Math.abs(g.y-(x.y+x.height))<=Math.abs(g.y-x.y)?"center bottom":"center top")}catch{}const v=p.style;v.transformBox="fill-box",v.transformOrigin=m;const b=Math.max(1,r||1),y=performance.now(),w=x=>{if(t.globals.isDestroyed||!p.parentNode)return;const $=Math.max(0,Math.min(1,(x-y)/b)),S=1-Math.pow(1-$,3),_=1-S;v.transform=o?`scaleX(${_})`:`scaleY(${_})`,v.opacity=String(1-S),$<1?We.requestAnimationFrame(w):p.parentNode.removeChild(p)};We.requestAnimationFrame(w)})}class USe{constructor(e){this.w=e.w,this.barCtx=e,this.totalFormatter=this.w.config.plotOptions.bar.dataLabels.total.formatter,this.totalFormatter||(this.totalFormatter=this.w.config.dataLabels.formatter)}handleBarDataLabels(e){var n,i;const{x:o,y:r,y1:a,y2:s,i:l,j:c,realIndex:u,columnGroupIndex:d,barHeight:f,barWidth:h,barXPosition:p,barYPosition:g,visibleSeries:m}=e,v=this.w,b=new Be(this.barCtx.w),y=v.waterfallData&&v.waterfallData.values,w=y&&y[u]&&y[u][c]!=null?y[u][c]:null,x=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[u]:this.barCtx.strokeWidth;let $,S;v.axisFlags.isXNumeric&&!v.globals.isBarHorizontal?($=o+h*(m+1),S=r+f*(m+1)-x):($=o+h*m,S=r+f*m);let _=null,P=null,T=o,O=r,M={};const I=v.config.dataLabels,k=this.barCtx.barOptions.dataLabels,E=this.barCtx.barOptions.dataLabels.total;typeof g<"u"&&(this.barCtx.isRangeBar||this.barCtx.isPyramid)&&(S=g,O=g),typeof p<"u"&&this.barCtx.isVerticalGroupedRangeBar&&($=p,T=p);const R=Bg(I.offsetX,v,u,c),D=Bg(I.offsetY,v,u,c);let F={width:0,height:0};if(v.config.dataLabels.enabled){const B=w!==null?w:v.seriesData.series[u][c];F=b.getTextRects(v.config.dataLabels.formatter?v.config.dataLabels.formatter(B,vt(Ye({},v),{seriesIndex:u,dataPointIndex:c,w:v})):v.formatters.yLabelFormatters[0](B),parseFloat(I.style.fontSize).toString(),I.style.fontFamily,void 0,!0,I.style.fontWeight)}const N={x:o,y:r,i:l,j:c,realIndex:u,columnGroupIndex:d,bcx:$,bcy:S,barHeight:f,barWidth:h,textRects:F,strokeWidth:x,dataLabelsX:T,dataLabelsY:O,dataLabelsConfig:I,barDataLabelsConfig:k,barTotalDataLabelsConfig:E,offX:R,offY:D};if(this.barCtx.isHorizontal?M=this.calculateBarsDataLabelsPosition(N):M=this.calculateColumnsDataLabelsPosition(N),w!==null&&this.barCtx.isHorizontal&&k.position==="center"){const B=(i=(n=v.waterfallData.geometry)==null?void 0:n[u])==null?void 0:i[c];B&&B.horizontal&&(M.dataLabelsX=(B.levelStart+B.levelEnd)/2+R)}return _=this.drawCalculatedDataLabels({x:M.dataLabelsX,y:M.dataLabelsY,val:w!==null?w:this.barCtx.isRangeBar?[a,s]:v.config.chart.stackType==="100%"?v.globals.seriesPercent[u][c]:v.seriesData.series[u][c],i:u,j:c,barWidth:h,barHeight:f,textRects:F,dataLabelsConfig:I}),v.config.chart.stacked&&E.enabled&&(P=this.drawTotalDataLabels({x:M.totalDataLabelsX,y:M.totalDataLabelsY,barWidth:h,barHeight:f,realIndex:u,j:c,textAnchor:M.totalDataLabelsAnchor,val:this.getStackedTotalDataLabel({realIndex:u,j:c}),rawVal:this.getStackedTotalValue({realIndex:u,j:c}),dataLabelsConfig:I,barTotalDataLabelsConfig:E})),{dataLabelsPos:M,dataLabels:_,totalDataLabels:P}}hasMultipleSeriesGroups(){return this.w.labelData.seriesGroups.length>1}getTotalGroupContext(e){if(!this.hasMultipleSeriesGroups())return null;const n=this.barCtx.barHelpers.getSeriesGroupIndex(e);return n<0?null:{groupIndex:n,group:this.w.labelData.seriesGroups[n]}}drawsStackedTotal(e){const n=this.barCtx.lastActiveBarSerieIndexByGroup,i=this.getTotalGroupContext(e);return i&&n&&n.length>i.groupIndex?n[i.groupIndex]===e:this.barCtx.lastActiveBarSerieIndex===e}getStackedTotalValue({realIndex:e,j:n}){const i=this.w,o=this.getTotalGroupContext(e),r=i.seriesData.stackedSeriesTotalsByGroups;return o&&r&&r[o.groupIndex]?r[o.groupIndex][n]:this.barCtx.stackedSeriesTotals[n]}getStackedTotalDataLabel({realIndex:e,j:n}){const i=this.w;let o=this.getStackedTotalValue({realIndex:e,j:n});return this.totalFormatter&&(o=this.totalFormatter(o,vt(Ye({},i),{seriesIndex:e,dataPointIndex:n,w:i}))),o}calculateColumnsDataLabelsPosition(e){const n=this.w;let{i,j:o,realIndex:r,y:a,bcx:s,barWidth:l,barHeight:c,textRects:u,dataLabelsX:d,dataLabelsY:f,dataLabelsConfig:h,barDataLabelsConfig:p,barTotalDataLabelsConfig:g,strokeWidth:m,offX:v,offY:b}=e,y,w;const x="middle",$=s;c=Math.abs(c);const S=n.config.plotOptions.bar.dataLabels.orientation==="vertical",{zeroEncounters:_}=this.barCtx.barHelpers.getZeroValueEncounters({i,j:o});s=s-m/2;const P=n.layout.gridWidth/n.globals.dataPoints;this.barCtx.isVerticalGroupedRangeBar?d+=l/2:(n.axisFlags.isXNumeric?d=s-l/2+v:d=s-P+l/2+v,!n.config.chart.stacked&&_>0&&n.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(d-=l*_)),S&&(d=d+u.height/2-m/2-2);const T=n.seriesData.series[i][o]<0;let O=a;switch(this.barCtx.isReversed&&(O=a+(T?c:-c)),p.position){case"center":S?T?f=O-c/2+b:f=O+c/2-b:T?f=O-c/2+u.height/2+b:f=O+c/2+u.height/2-b;break;case"bottom":S?T?f=O-c+b:f=O+c-b:T?f=O-c+u.height+m+b:f=O+c-u.height/2+m-b;break;case"top":S?T?f=O+b:f=O-b:T?f=O-u.height/2-b:f=O+u.height+b;break}let M=O;const I=this.getTotalGroupContext(r);if((I?[I.group]:n.labelData.seriesGroups).forEach(E=>{var R;(R=this.barCtx[E.join(",")])==null||R.prevY.forEach(D=>{T?M=Math.max(D[o],M):M=Math.min(D[o],M)})}),this.drawsStackedTotal(r)&&g.enabled){const D=new Be(this.barCtx.w).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:o}),h.fontSize);T?y=M-D.height/2-b-g.offsetY+18:y=M+D.height+b+g.offsetY-18;const F=P;w=$+(n.axisFlags.isXNumeric?-l/2:l/2-F)+g.offsetX}return n.config.chart.stacked||(f<0?f=0+m:f+u.height/3>n.layout.gridHeight&&(f=n.layout.gridHeight-m)),{bcx:s,bcy:a,dataLabelsX:d,dataLabelsY:f,totalDataLabelsX:w,totalDataLabelsY:y,totalDataLabelsAnchor:x}}calculateBarsDataLabelsPosition(e){var n;const i=this.w;let{x:o,i:r,j:a,realIndex:s,bcy:l,barHeight:c,barWidth:u,textRects:d,dataLabelsX:f,strokeWidth:h,dataLabelsConfig:p,barDataLabelsConfig:g,barTotalDataLabelsConfig:m,offX:v,offY:b}=e;const y=i.layout.gridHeight/i.globals.dataPoints,{zeroEncounters:w}=this.barCtx.barHelpers.getZeroValueEncounters({i:r,j:a});u=Math.abs(u);let x;if(this.barCtx.isPyramid){const k=(n=d.centerOffset)!=null?n:0;x=l+c/2+b-k}else x=l-(this.barCtx.isRangeBar?0:y)+c/2+d.height/2+b-3;!i.config.chart.stacked&&w>0&&i.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(x-=c*w);let $,S,_="start";const P=i.seriesData.series[r][a]<0;let T=o;if(this.barCtx.isReversed&&(T=o+(P?-u:u),_=P?"start":"end"),this.barCtx.isPyramid)f=i.layout.gridWidth/2+v;else switch(g.position){case"center":P?f=T+u/2-v:f=Math.max(d.width/2,T-u/2)+v;break;case"bottom":P?f=T+u-h-v:f=T-u+h+v;break;case"top":P?f=T-h-v:f=T-h+v;break}let O=T;const M=this.getTotalGroupContext(s);if((M?[M.group]:i.labelData.seriesGroups).forEach(k=>{var E;(E=this.barCtx[k.join(",")])==null||E.prevX.forEach(R=>{P?O=Math.min(R[a],O):O=Math.max(R[a],O)})}),this.drawsStackedTotal(s)&&m.enabled){const E=new Be(this.barCtx.w).getTextRects(this.getStackedTotalDataLabel({realIndex:s,j:a}),p.fontSize);P?($=O-h-v-m.offsetX,_="end"):$=O+v+m.offsetX+(this.barCtx.isReversed?-(u+h):h),S=x-d.height/2+E.height/2+m.offsetY+h,i.globals.barGroups.length>1&&!M&&(S=S-i.globals.barGroups.length/2*(c/2))}if(!i.config.chart.stacked){const k=P&&p.textAnchor!=="middle"?p.textAnchor==="start"?"end":"start":p.textAnchor;let E;g.orientation==="vertical"?E=d.height/2:k==="end"?E=d.width:k==="middle"?E=d.width/2:E=0;const D=(g.orientation==="vertical"?d.height:d.width)-E;f+D>i.layout.gridWidth-h&&(f=i.layout.gridWidth-D-h),f-E-1,w=(h.globals.collapsingSeriesIndices||[]).indexOf(o)>-1;if(w){const x=(u=h.globals.prevDataLabels)==null?void 0:u.get(`${o}::${Or(h,o,r)}`);x&&isFinite(x.val)&&(i=x.val)}if(c.enabled&&(!y||w)){b=m.group({class:"apexcharts-data-labels",transform:p});const x=h.config.dataLabels;((d=x.animate)!=null&&d.enabled||(f=x.countUp)!=null&&f.enabled)&&(b.node.setAttribute("data:dlKey",`${o}::${Or(h,o,r)}`),b.node.setAttribute("data:dlJ",String(r)),typeof i=="number"&&isFinite(i)&&b.node.setAttribute("data:dlVal",String(i)));let $="";typeof i<"u"&&($=v(i,vt(Ye({},h),{seriesIndex:o,dataPointIndex:r,w:h}))),!i&&h.config.plotOptions.bar.hideZeroBarsWhenGrouped&&($="");const S=h.seriesData.series[o][r]<0,_=h.config.plotOptions.bar.dataLabels.position;if(h.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(_==="top"&&(S?c.textAnchor="end":c.textAnchor="start"),_==="center"&&(c.textAnchor="middle"),_==="bottom"&&(S?c.textAnchor="end":c.textAnchor="start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels){const T=m.getTextRects($,parseFloat(c.style.fontSize).toString());lMath.abs(l)&&($=""):a.height/1.6>Math.abs(s)&&($=""));const P=Ye({},c);this.barCtx.isHorizontal&&i<0&&(c.textAnchor==="start"?P.textAnchor="end":c.textAnchor==="end"&&(P.textAnchor="start")),g.plotDataLabelsText({x:e,y:n,text:$,i:o,j:r,parent:b,dataLabelsConfig:P,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return b}drawTotalDataLabels({x:e,y:n,val:i,rawVal:o,realIndex:r,j:a,textAnchor:s,barTotalDataLabelsConfig:l}){var c,u;const d=new Be(this.barCtx.w);let f;if(l.enabled&&typeof e<"u"&&typeof n<"u"&&this.drawsStackedTotal(r)){f=d.drawText({x:e,y:n,foreColor:l.style.color,text:i,textAnchor:s,fontFamily:l.style.fontFamily,fontSize:l.style.fontSize,fontWeight:l.style.fontWeight}),f.attr({class:"apexcharts-datalabel-total",cx:e,cy:n});const h=this.w.config.dataLabels;if((c=h.animate)!=null&&c.enabled||(u=h.countUp)!=null&&u.enabled){const{groupIndex:p}=this.barCtx.barHelpers.getGroupIndex(r);f.node.setAttribute("data:dlTotalKey",`${p}::${Or(this.w,r,a)}`),f.node.setAttribute("data:dlTotalSeries",String(r)),typeof o=="number"&&isFinite(o)&&f.node.setAttribute("data:dlTotalVal",String(o))}}return f}}function FN(t){var e,n,i,o,r,a,s;return((n=(e=t==null?void 0:t.config)==null?void 0:e.chart)==null?void 0:n.requestedType)!=="histogram"||((o=(i=t.config.plotOptions)==null?void 0:i.histogram)==null?void 0:o.overlap)===!1?!1:((s=(a=(r=t.seriesData)==null?void 0:r.series)==null?void 0:a.length)!=null?s:0)>1}let qSe=class{constructor(e){this.w=e.w,this.barCtx=e}initVariables(e){const n=this.w;this.barCtx.series=e,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(let i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=e[i].length),n.axisFlags.isXNumeric)for(let o=0;on.globals.minX&&n.seriesData.seriesX[i][o]i.map(o=>"none"))),this.barCtx.seriesLen===0&&(this.barCtx.seriesLen=1)}barSlotXSpan(){const e=this.w;if(this._slotXSpan!==void 0)return this._slotXSpan;let n=0;if(e.globals.dataPoints<=1){const i=e.globals.maxX-e.globals.minX;n=i>0?i/4:0}else if(n=this._unionMinXGap(),!(n>0)||!isFinite(n)){const i=e.globals.minXDiff;n=i>0&&isFinite(i)&&i!==.5?i:0}return this._slotXSpan=n,n}_unionMinXGap(){const n=this.w.seriesData.seriesX||[],i=[];for(let s=0;s0&&i.push(l)}if(!i.length)return 0;const o=new Array(i.length).fill(0);let r=NaN,a=1/0;for(;;){let s=1/0,l=-1;for(let c=0;c=u.length)continue;const d=u[o[c]];if(d!==d){o[c]++,c--;continue}d0&&c0&&p/h>0&&(a=p/h),l=a/f*parseInt(this.barCtx.barOptions.columnWidth,10)/100,l<1&&(l=1)}String(this.barCtx.barOptions.columnWidth).indexOf("%")===-1&&(l=parseInt(this.barCtx.barOptions.columnWidth,10)),c=n.layout.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?n.layout.gridHeight:0)+(this.barCtx.isReversed?this.barCtx.baseLineY[this.barCtx.translationsIndex]*2:0),n.axisFlags.isXNumeric?i=this.barCtx.getBarXForNumericXAxis({x:i,j:0,realIndex:e,barWidth:l}).x:i=n.globals.padHorizontal+Ee.noExponents(a-l*this.barCtx.seriesLen)/2}return n.globals.barHeight=s,n.globals.barWidth=l,{x:i,y:o,yDivision:r,xDivision:a,barHeight:s,barWidth:l,zeroH:c,zeroW:u}}initializeStackedPrevVars(e){e.w.labelData.seriesGroups.forEach(i=>{e[i]||(e[i]={}),e[i].prevY=[],e[i].prevX=[],e[i].prevYF=[],e[i].prevXF=[],e[i].prevYVal=[],e[i].prevXVal=[]})}initializeStackedXYVars(e){e.w.labelData.seriesGroups.forEach(i=>{e[i]||(e[i]={}),e[i].xArrj=[],e[i].xArrjF=[],e[i].xArrjVal=[],e[i].yArrj=[],e[i].yArrjF=[],e[i].yArrjVal=[]})}getPathFillColor(e,n,i,o){var r;const a=this.w,s=new go(this.barCtx.w);let l=null;const c=this.barCtx.barOptions.distributed?i:n;let u=!1;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map(v=>{e[n][i]>=v.from&&e[n][i]<=v.to&&(l=v.color,u=!0)});const f=this.getDumbbellConnectorFill(n,i)||((r=a.config.series[n].data[i])==null?void 0:r.fill),h=this.barCtx.barOptions.isDumbbell?a.config.plotOptions.bar.dumbbell.connector:null;let p;return h&&h.color&&(l=h.color,p=h.opacity),{color:s.fillPath({seriesNumber:this.barCtx.barOptions.distributed?c:o,dataPointIndex:i,color:l,opacity:p,value:e[n][i],fillConfig:f,fillType:f!=null&&f.type?f.type:Array.isArray(a.config.fill.type)?a.config.fill.type[o]:a.config.fill.type}),useRangeColor:u}}getDumbbellConnectorFill(e,n){const i=this.w;if(!this.barCtx.barOptions.isDumbbell)return null;const o=i.dumbbellData;if(!o||o.form!=="series")return null;const r=i.config.plotOptions.bar.dumbbell.connector;if(r.color)return null;const a=o.order[n];if(!a)return null;const s=i.globals.colors[a[0]],l=i.globals.colors[a[1]];return!s||!l?null:{type:"gradient",gradient:{type:this.barCtx.isHorizontal?"horizontal":"vertical",gradientFrom:s,gradientTo:l,opacityFrom:r.opacity,opacityTo:r.opacity,stops:[0,100],inverseColors:!this.barCtx.isHorizontal}}}getStrokeWidth(e,n,i){let o=0;const r=this.w;return typeof this.barCtx.series[e][n]>"u"||this.barCtx.series[e][n]===null||r.config.chart.type==="bar"&&!this.barCtx.series[e][n]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,r.config.stroke.show&&(this.barCtx.isNullValue||(o=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),o}getStackedSeriesIndices(e){const n=this.w,i=n.labelData.seriesGroups,o=n.globals.columnSeries?new Set(n.globals.columnSeries.i):null,r=l=>!o||o.has(l);if(!i||i.length<2){const l=Array.from({length:e},(c,u)=>u).filter(r);return l.length?[l]:[]}const a=Array.from({length:i.length},()=>[]),s=[];for(let l=0;l-1?a[c].push(l):s.push(l)}return s.length&&a.push(s),a.filter(l=>l.length>0)}createBorderRadiusArr(e){var n;const i=this.w,o=!this.w.config.chart.stacked||i.config.plotOptions.bar.borderRadius<=0,r=e.length,a=((n=e[0])==null?void 0:n.length)|0,s=Array.from({length:r},()=>Array(a).fill(o?"top":"none"));if(o)return s;const l=i.config.plotOptions.bar.borderRadiusWhenStacked==="last",c=l?"top":"both",u=l?"bottom":"both",d=l?"none":"bottom",f=l?"none":"top";for(const h of this.getStackedSeriesIndices(r))for(let p=0;p0?g.push(v):b<0&&m.push(v)}if(g.length>0&&m.length===0)if(g.length===1)s[g[0]][p]=c;else{const v=g[0],b=g[g.length-1];for(const y of g)s[y][p]=y===v?d:y===b?"top":"none"}else if(m.length>0&&g.length===0)if(m.length===1)s[m[0]][p]=u;else{const v=Math.min(...m),b=Math.max(...m);for(const y of m)s[y][p]=y===v?f:y===b?"bottom":"none"}else if(g.length>0&&m.length>0){const v=g[g.length-1];for(const y of g)s[y][p]=y===v?"top":"none";const b=Math.max(...m);for(const y of m)s[y][p]=y===b?"bottom":"none"}}return s}barBackground({j:e,i:n,x1:i,x2:o,y1:r,y2:a,elSeries:s}){const l=this.w,c=new Be(this.barCtx.w),d=new Xn(this.barCtx.w).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&d===n){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);const f=this.barCtx.barOptions.colors.backgroundBarColors[e],h=c.drawRect(typeof i<"u"?i:0,typeof r<"u"?r:0,typeof o<"u"?o:l.layout.gridWidth,typeof a<"u"?a:l.layout.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,f,this.barCtx.barOptions.colors.backgroundBarOpacity);s.add(h),h.node.classList.add("apexcharts-backgroundBar")}}getColumnPaths({barWidth:e,barXPosition:n,y1:i,y2:o,strokeWidth:r,isReversed:a,series:s,seriesGroup:l,realIndex:c,i:u,j:d,w:f}){var h,p,g;const m=new Be(this.barCtx.w);r=Array.isArray(r)?r[c]:r,r||(r=0);let v=e,b=n;(h=f.config.series[c].data[d])!=null&&h.columnWidthOffset&&(b=n-f.config.series[c].data[d].columnWidthOffset/2,v=e+f.config.series[c].data[d].columnWidthOffset);const y=r/2,w=b+y,x=b+v-y,$=(s[u][d]>=0?1:-1)*(a?-1:1);i+=.001-y*$,o+=.001+y*$;const S=m.line(x,i),_=f.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[c][d]==="both"?" Z":" z",P=m.move(w,i)+m.line(w,o)+m.line(x,o)+S+_;let T=P;this.arrBorderRadius[c][d]!=="none"&&(T=m.roundPathCorners(T,f.config.plotOptions.bar.borderRadius));let O=null;const M=(g=(p=this.barCtx.ctx)==null?void 0:p.morphTypeChange)==null?void 0:g.getInitialPathFor(c,d);if(M?O=M:f.globals.previousPaths.length>0&&(O=this.barCtx.getPreviousPath(c,d,T,P)),O==null&&(O=m.move(w,i)+m.line(w,i)+S+S+S+S+S+m.line(w,i)+_),f.config.chart.stacked){let I=this.barCtx;I=this.barCtx[l],I.yArrj.push(o-y*$),I.yArrjF.push(Math.abs(i-o+r*$)),I.yArrjVal.push(this.barCtx.series[u][d])}return{pathTo:T,pathFrom:O,drawnBox:{x1:w,x2:x,y1:i,y2:o}}}getFunnelTrapezoidPaths({barYPosition:e,barHeight:n,series:i,i:o,j:r,realIndex:a,strokeWidth:s,w:l}){var c,u;const d=new Be(this.barCtx.w),f=l.layout.gridWidth/2,h=I=>Math.abs(I/this.barCtx.invertedYRatio)/2,p=h(i[o][r]),g=i[o].length-1,m=r===g,v=l.config.plotOptions.funnel.lastShape==="taper"?"taper":"flat";let b;m?b=v==="taper"?0:p:b=h(i[o][r+1]);const y=s/2,w=e+y,x=e+n-y,$=f-p,S=f+p,_=f-b,P=f+b,T=d.move($,w)+d.line(S,w)+d.line(P,x)+d.line(_,x)+" Z";let O=null;const M=(u=(c=this.barCtx.ctx)==null?void 0:c.morphTypeChange)==null?void 0:u.getInitialPathFor(a,r);return M?O=M:l.globals.previousPaths.length>0&&(O=this.barCtx.getPreviousPath(a,r,T)),O==null&&(O=d.move(f,w)+d.line(f,w)+d.line(f,x)+d.line(f,x)+" Z"),{pathTo:T,pathFrom:O,x:S,x1:$,barXPosition:f}}computePyramidLayout(e){const n=this.w,i=n.layout.gridHeight,o=n.layout.gridWidth,r=e.map(u=>Math.abs(Number(u)||0)),a=r.reduce((u,d)=>u+d,0);if(a===0||i<=0)return r.map(()=>({y:0,height:0,topHalf:0,bottomHalf:0}));const s=o/2;let l=0;const c=[];for(let u=0;u0&&(x=this.barCtx.getPreviousPath(r,a,w)),x==null&&(x=d.move(f,p)+d.line(f,p)+d.line(f,g)+d.line(f,g)+" Z"),{pathTo:w,pathFrom:x,x:v,x1:m,barXPosition:f}}getBarpaths({barYPosition:e,barHeight:n,x1:i,x2:o,strokeWidth:r,isReversed:a,series:s,seriesGroup:l,realIndex:c,i:u,j:d,w:f}){var h,p,g;const m=new Be(this.barCtx.w);r=Array.isArray(r)?r[c]:r,r||(r=0);let v=e,b=n;(h=f.config.series[c].data[d])!=null&&h.barHeightOffset&&(v=e-f.config.series[c].data[d].barHeightOffset/2,b=n+f.config.series[c].data[d].barHeightOffset);const y=r/2,w=v+y,x=v+b-y,$=(s[u][d]>=0?1:-1)*(a?-1:1);i+=.001+y*$,o+=.001-y*$;const S=this.barCtx.isFunnel,_=S?(i+o)/2:i,P=m.line(i,x),T=f.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[c][d]==="both"?" Z":" z",O=m.move(i,w)+m.line(o,w)+m.line(o,x)+P+T;let M=O;this.arrBorderRadius[c][d]!=="none"&&(M=m.roundPathCorners(M,f.config.plotOptions.bar.borderRadius));let I=null;const k=(g=(p=this.barCtx.ctx)==null?void 0:p.morphTypeChange)==null?void 0:g.getInitialPathFor(c,d);if(k?I=k:f.globals.previousPaths.length>0&&(I=this.barCtx.getPreviousPath(c,d,M,O)),I==null){const E=S?m.line(_,x):P;I=m.move(_,w)+m.line(_,w)+E+E+E+E+E+m.line(_,w)+T}if(f.config.chart.stacked){let E=this.barCtx;E=this.barCtx[l],E.xArrj.push(o+y*$),E.xArrjF.push(Math.abs(i-o-r*$)),E.xArrjVal.push(this.barCtx.series[u][d])}return{pathTo:M,pathFrom:I,drawnBox:{x1:i,x2:o,y1:w,y2:x}}}getXForValue(e,n,i=!0){let o=i?n:null;return typeof e<"u"&&e!==null&&(o=n+e/this.barCtx.invertedYRatio-(this.barCtx.isReversed?e/this.barCtx.invertedYRatio:0)*2),o}getYForValue(e,n,i,o=!0){let r=o?n:null;return typeof e<"u"&&e!==null&&(r=n-e/this.barCtx.yRatio[i]+(this.barCtx.isReversed?e/this.barCtx.yRatio[i]:0)*2),r}getGoalValues(e,n,i,o,r,a){const s=this.w,l=[],c=(u,d)=>{l.push({[e]:e==="x"?this.getXForValue(u,n,!1):this.getYForValue(u,i,a,!1),attrs:d})};if(s.seriesData.seriesGoals[o]&&s.seriesData.seriesGoals[o][r]&&Array.isArray(s.seriesData.seriesGoals[o][r])&&s.seriesData.seriesGoals[o][r].forEach(u=>{c(u.value,u)}),this.barCtx.barOptions.isDumbbell){const u=this.getDumbbellEnds(o,r);if(u.length){const d={strokeHeight:e==="x"?0:s.globals.markers.size[o],strokeWidth:e==="x"?s.globals.markers.size[o]:0,strokeDashArray:0,strokeLineCap:"round"};let f=0,h=0;for(let g=1;gu[h].value&&(h=g);const p=s.config.plotOptions.bar.dumbbell.dataLabels;u.forEach((g,m)=>{const v=vt(Ye({},d),{strokeColor:g.color});p.enabled&&(m===f||m===h)&&(v.label={text:this.getDumbbellLabelText(g.value,o,r,g.index),color:p.colorFromMarker?g.color:Array.isArray(p.style.colors)?p.style.colors[g.index]||p.style.colors[0]:p.style.colors,outward:m===f&&f!==h?-1:1}),c(g.value,v)})}}return l}getDumbbellEnds(e,n){const i=this.w,o=[],r=i.dumbbellData;if(r&&r.form==="series"){const l=r.values[n]||[];for(let c=0;cArray.isArray(a[e])?a[e][l]:a[e];return[{value:i.rangeData.seriesRangeStart[e][n],color:s(0),index:0},{value:i.rangeData.seriesRangeEnd[e][n],color:s(1),index:1}]}getDumbbellLabelText(e,n,i,o){const r=this.w,a=r.config.plotOptions.bar.dumbbell.dataLabels;if(typeof a.formatter=="function")return a.formatter(e,{seriesIndex:n,dataPointIndex:i,endpointIndex:o,w:r});const s=this.barCtx.isHorizontal?r.formatters.xLabelFormatter:r.formatters.yLabelFormatters[0];return typeof s=="function"?s(e,i,r):String(e)}drawGoalLine({barXPosition:e,barYPosition:n,goalX:i,goalY:o,barWidth:r,barHeight:a}){if(!(Array.isArray(i)&&i.length>0||Array.isArray(o)&&o.length>0))return null;const l=new Be(this.barCtx.w),c=l.group({class:"apexcharts-bar-goals-groups"});c.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:c.node}),c.attr("clip-path",`url(#gridRectMarkerMask${this.barCtx.w.globals.cuid})`);let u=null;return this.barCtx.isHorizontal?Array.isArray(i)&&i.forEach(d=>{if(d.x>=-1&&d.x<=l.w.layout.gridWidth+1){const f=typeof d.attrs.strokeHeight<"u"?d.attrs.strokeHeight:a/2,h=n+f+a/2;u=l.drawLine(d.x,h-f*2,d.x,h,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeWidth?d.attrs.strokeWidth:2,d.attrs.strokeLineCap),c.add(u),d.attrs.label&&c.add(this.drawDumbbellLabel(d.attrs,{x:d.x,y:h-f,horizontal:!0,markerSize:d.attrs.strokeWidth||0}))}}):Array.isArray(o)&&o.forEach(d=>{if(d.y>=-1&&d.y<=l.w.layout.gridHeight+1){const f=typeof d.attrs.strokeWidth<"u"?d.attrs.strokeWidth:r/2,h=e+f+r/2;u=l.drawLine(h-f*2,d.y,h,d.y,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeHeight?d.attrs.strokeHeight:2,d.attrs.strokeLineCap),c.add(u),d.attrs.label&&c.add(this.drawDumbbellLabel(d.attrs,{x:h-f,y:d.y,horizontal:!1,markerSize:d.attrs.strokeHeight||0}))}}),c}drawDumbbellLabel(e,n){const i=this.w,o=new Be(i),r=i.config.plotOptions.bar.dumbbell.dataLabels,a=n.markerSize/2+r.offset,s=e.label.outward;return o.drawText({x:n.x+(n.horizontal?a*s:0),y:n.y-(n.horizontal?0:a*s),text:e.label.text,textAnchor:n.horizontal?s<0?"end":"start":"middle",dominantBaseline:n.horizontal?"central":s<0?"hanging":"auto",foreColor:e.label.color,fontSize:r.style.fontSize,fontFamily:r.style.fontFamily,fontWeight:r.style.fontWeight,cssClass:"apexcharts-dumbbell-label"})}drawBarShadow({prevPaths:e,currPaths:n,color:i,realIndex:o,j:r}){const a=this.w,{x:s,x1:l,barYPosition:c}=e,{x:u,x1:d,barYPosition:f}=n,h=c+n.barHeight,p=new Be(this.barCtx.w),g=new Ee,m=p.move(l,h)+p.line(s,h)+p.line(u,f)+p.line(d,f)+p.line(l,h)+(a.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[o][r]==="both"?" Z":" z");return p.drawPath({d:m,fill:g.shadeColor(.5,Ee.rgb2hex(i)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadow apexcharts-decoration-element"})}getZeroValueEncounters({i:e,j:n}){var i;const o=this.w;let r=0,a=0;return(o.config.plotOptions.bar.horizontal?o.seriesData.series.map((l,c)=>c):((i=o.globals.columnSeries)==null?void 0:i.i.map(l=>l))||[]).forEach(l=>{const c=o.globals.seriesPercent[l][n];c&&r++,li.indexOf(n.seriesData.seriesNames[e])>-1)}getGroupIndex(e){const n=this.w,i=n.labelData.seriesGroups.findIndex(a=>a.indexOf(n.seriesData.seriesNames[e])>-1),o=this.barCtx.columnGroupIndices;let r=o.indexOf(i);return r<0&&(o.push(i),r=o.length-1),{groupIndex:i,columnGroupIndex:r}}};class Bn{constructor(e,n,i){this.ctx=n,this.w=e,this.barOptions=e.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=e.config.stroke.width,this.isNullValue=!1,this.isRangeBar=e.rangeData.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!e.globals.isBarHorizontal&&e.rangeData.seriesRange.length&&e.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.isPyramid=this.barOptions.isPyramid,this.pyramidLayout=null,this.xyRatios=i,this.xRatio=0,this.yRatio=[],this.invertedXRatio=0,this.invertedYRatio=0,this.baseLineY=[],this.baseLineInvertedY=0,this.xyRatios!==null&&(this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.invertedXRatio=i.invertedXRatio,this.invertedYRatio=i.invertedYRatio,this.baseLineY=i.baseLineY,this.baseLineInvertedY=i.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[],this._prevKeyed=null,this._ltCache=null,this._layoutShiftCache=null,this._pathToInterp=null,this.series=[],this.elSeries=null,this.visibleI=0,this.isReversed=!1;const o=new Xn(this.w);this.lastActiveBarSerieIndex=o.getActiveConfigSeriesIndex("desc",["bar","column"]),this.lastActiveBarSerieIndexByGroup=o.getActiveConfigSeriesIndexByGroup(["bar","column"]),this.columnGroupIndices=[];const r=o.getBarSeriesIndices(),a=new No(this.w);this.stackedSeriesTotals=a.getStackedSeriesTotals(this.w.config.series.map((s,l)=>r.indexOf(l)===-1?l:-1).filter(s=>s!==-1)),this.barHelpers=new qSe(this)}draw(e,n){var i,o,r;const a=this.w,s=new Be(this.w),l=new No(this.w);e=l.getLogSeries(e),this.series=e,this.yRatio=l.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e);const c=s.group({class:"apexcharts-bar-series apexcharts-plot-series"});a.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(let u=0,d=0;u0&&(this.visibleI=this.visibleI+1),this.yRatio.length>1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[m],this.translationsIndex=m);const y=this.translationsIndex;this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.isPyramid&&(this.pyramidLayout=this.barHelpers.computePyramidLayout(e[u]));const w=this.barHelpers.initialPositions(m),{y:x,yDivision:$,zeroW:S,x:_,xDivision:P,zeroH:T}=w;let O=w.barHeight,M=w.barWidth;h=x,f=_,this.isHorizontal||g.push(f+(M??0)/2);const I=s.group({class:"apexcharts-datalabels","data:realIndex":m});a.globals.delayedElements.push({el:I.node,holdUntilComplete:!((i=a.config.dataLabels.animate)!=null&&i.enabled)&&this.isLengthTransition(m)}),I.node.classList.add("apexcharts-element-hidden");const k=s.group({class:"apexcharts-bar-goals-markers"}),E=s.group({class:"apexcharts-bar-shadows"});a.globals.delayedElements.push({el:E.node}),E.node.classList.add("apexcharts-element-hidden");for(let R=0;R0){const W=this.barHelpers.drawBarShadow({color:typeof B.color=="string"&&((r=B.color)==null?void 0:r.indexOf("url"))===-1?B.color:Ee.hexToRgba(a.globals.colors[u]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:F,realIndex:m,j:R});E.add(W),a.config.chart.dropShadow.enabled&&new uo(this.w).dropShadow(W,a.config.chart.dropShadow,m)}this.pathArr.push(F);const z=this.barHelpers.drawGoalLine({barXPosition:F.barXPosition,barYPosition:F.barYPosition,goalX:F.goalX,goalY:F.goalY,barHeight:O,barWidth:M});z&&k.add(z),h=F.y,f=F.x,R>0&&g.push(f+(M??0)/2),p.push(h),this.renderSeries(vt(Ye({realIndex:m,pathFill:B.color},B.useRangeColor?{lineFill:B.color}:{}),{j:R,i:u,columnGroupIndex:v,pathFrom:F.pathFrom,pathTo:F.pathTo,strokeWidth:D,elSeries:b,x:f,y:h,series:e,barHeight:Math.abs(F.barHeight?F.barHeight:O),barWidth:Math.abs(F.barWidth?F.barWidth:M),elDataLabelsWrap:I,elGoalsMarkers:k,elBarShadows:E,visibleSeries:this.visibleI,type:"bar"}))}if(a.globals.seriesXvalues[m]=g,a.globals.seriesYvalues[m]=p,a.globals.previousPaths.length>0){const R=[];for(let D=0;D0&&(K=X[ee],K||(K=""),typeof K=="function")?K({value:D.seriesData.series[ee][o],dataPointIndex:o,w:D}):K};const G=typeof D.globals.stroke.colors[e]=="function"?Q(e):D.globals.stroke.colors[e];i=this.barOptions.distributed?D.globals.stroke.colors[o]:G}const W=D.config.chart.animations,j=W.animateGradually,U=j&&j.enabled!==!1&&!(D.globals.dataChanged&&this.isLayoutShift(e));let V=0,q=0;if(U){const Q=D.globals.dataPoints||1,G=j.delay||0,ee=Math.min(G,W.speed*.5/Math.max(1,Q));q=c$({style:"sequential",index:o,baseDelay:ee}),D.config.chart.stacked&&!D.globals.dataChanged&&(q+=r*ee*.5),V=q/(G||1)}const J=new USe(this).handleBarDataLabels({x:d,y:f,y1:h,y2:p,i:r,j:o,series:g,realIndex:e,columnGroupIndex:a,barHeight:m,barWidth:v,barXPosition:b,barYPosition:y,visibleSeries:S});if(q>0){const Q=D.config.dataLabels;if((T=Q.animate)!=null&&T.enabled||(O=Q.countUp)!=null&&O.enabled){const G=String(Math.round(q));(I=(M=J.dataLabels)==null?void 0:M.node)==null||I.setAttribute("data:dlDelay",G),(E=(k=J.totalDataLabels)==null?void 0:k.node)==null||E.setAttribute("data:dlDelay",G)}}if(D.globals.isBarHorizontal||(J.dataLabelsPos.dataLabelsX+Math.max(v,D.globals.barPadForNumericAxis)<0||J.dataLabelsPos.dataLabelsX-Math.max(v,D.globals.barPadForNumericAxis)>D.layout.gridWidth)&&(B=!0),D.config.series[r].data[o]&&D.config.series[r].data[o].strokeColor&&(i=D.config.series[r].data[o].strokeColor),this.isNullValue&&D.globals.collapsingSeriesIndices.indexOf(e)===-1&&(n="none"),!B){const Q=((R=this.ctx.morphTypeChange)==null?void 0:R.isActive())===!0,G=Q?this.ctx.morphTypeChange.getSpeed():D.config.chart.animations.dynamicAnimation.speed,ee=Q&&this.ctx.morphTypeChange.claimsTargetMark(e,o);ee&&(s=l,V=0);const X=N.renderPaths({i:r,j:o,realIndex:e,pathFrom:s,pathTo:l,stroke:i,strokeWidth:c,strokeLineCap:D.config.stroke.lineCap,fill:n,pathToInterp:z,animationDelay:V,initialSpeed:D.config.chart.animations.speed,dataChangeSpeed:G,className:`apexcharts-${_}-area${P?` ${P}`:""}`,chartType:_,bindEventsOnPaths:!1});X.attr("clip-path",`url(#gridRectBarMask${D.globals.cuid})`),ee&&(X.node.setAttribute("opacity","0"),X.node.setAttribute("data-piece-hidden","1"));const K=D.config.forecastDataPoints;K.count>0&&o>=D.globals.dataPoints-K.count&&(X.node.setAttribute("stroke-dasharray",K.dashArray),X.node.setAttribute("stroke-width",K.strokeWidth),X.node.setAttribute("fill-opacity",K.fillOpacity)),typeof h<"u"&&typeof p<"u"&&(X.attr("data-range-y1",h),X.attr("data-range-y2",p)),new uo(this.w).setSelectionFilter(X,e,o),u.add(X),X.attr({cy:J.dataLabelsPos.bcy,cx:J.dataLabelsPos.bcx,j:o,val:D.seriesData.series[r][o],barHeight:m,barWidth:v,"data:pathKey":Or(D,e,o)}),N.kind==="canvas"&&(D.globals.barCanvasCoords||(D.globals.barCanvasCoords={}),D.globals.barCanvasCoords[e]||(D.globals.barCanvasCoords[e]={}),D.globals.barCanvasCoords[e][o]={cx:J.dataLabelsPos.bcx,cy:J.dataLabelsPos.bcy,barWidth:v}),J.dataLabels!==null&&w.add(J.dataLabels),J.totalDataLabels&&w.add(J.totalDataLabels),u.add(w),x&&u.add(x),$&&u.add($)}return u}drawBarPaths({indexes:e,barHeight:n,strokeWidth:i,zeroW:o,x:r,y:a,yDivision:s,elSeries:l}){const c=this.w,u=e.i,d=e.j;let f;if(c.axisFlags.isXNumeric)a=(c.seriesData.seriesX[u][d]-c.globals.minX)/this.invertedXRatio-n,f=a+n*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:v,zeroEncounters:b}=this.barHelpers.getZeroValueEncounters({i:u,j:d});v>0&&(n=this.seriesLen*n/v),f=a+n*this.visibleI,f-=n*b}else f=a+n*this.visibleI;const h=this.isFunnel&&c.config.plotOptions.funnel.shape==="trapezoid",p=this.isPyramid&&this.pyramidLayout?this.pyramidLayout[d]:null,g=!!p;if(p)f=p.y,n=p.height;else if(this.isFunnel&&!h){const v=o??0;o=v-(this.barHelpers.getXForValue(this.series[u][d],v)-v)/2}r=this.barHelpers.getXForValue(this.series[u][d],o??0);let m;return p?m=this.barHelpers.getPyramidPaths({barYPosition:f,barHeight:n,topHalf:p.topHalf,bottomHalf:p.bottomHalf,realIndex:e.realIndex,j:d,strokeWidth:i,w:c}):h?m=this.barHelpers.getFunnelTrapezoidPaths({barYPosition:f,barHeight:n,series:this.series,i:u,j:d,realIndex:e.realIndex,strokeWidth:i,w:c}):m=this.barHelpers.getBarpaths({barYPosition:f,barHeight:n,x1:o,x2:r,strokeWidth:i,isReversed:this.isReversed,series:this.series,realIndex:e.realIndex,i:u,j:d,w:c}),(h||g)&&(o=m.x1,r=m.x),!c.axisFlags.isXNumeric&&!g&&(a=a+s),g&&(a=f),this.barHelpers.barBackground({j:d,i:u,y1:f-n*this.visibleI,y2:n*this.seriesLen,elSeries:l}),{pathTo:m.pathTo,pathFrom:m.pathFrom,x1:o,x:r,y:a,goalX:this.barHelpers.getGoalValues("x",o,null,e.realIndex,d,0),barYPosition:f,barHeight:n}}drawColumnPaths({indexes:e,x:n,y:i,xDivision:o,barWidth:r,zeroH:a,strokeWidth:s,elSeries:l}){const c=this.w,u=e.realIndex,d=e.translationsIndex,f=e.i,h=e.j,p=e.bc;let g;if(c.axisFlags.isXNumeric){const v=this.getBarXForNumericXAxis({x:n,j:h,realIndex:u,barWidth:r});n=v.x,g=v.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:v,zeroEncounters:b}=this.barHelpers.getZeroValueEncounters({i:f,j:h});v>0&&(r=this.seriesLen*r/v),g=n+r*this.visibleI,g-=r*b}else g=n+r*this.visibleI;i=this.barHelpers.getYForValue(this.series[f][h],a,d);const m=this.barHelpers.getColumnPaths({barXPosition:g,barWidth:r,y1:a,y2:i,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:u,i:f,j:h,w:c});return c.axisFlags.isXNumeric||(n=n+o),this.barHelpers.barBackground({bc:p,j:h,i:f,x1:g-s/2-r*this.visibleI,x2:r*this.seriesLen+s/2,elSeries:l}),{pathTo:m.pathTo,pathFrom:m.pathFrom,x:n,y:i,goalY:this.barHelpers.getGoalValues("y",null,a,u,h,d),barXPosition:g,barWidth:r}}getBarXForNumericXAxis({x:e,barWidth:n,realIndex:i,j:o}){const r=this.w;let a=i;return r.seriesData.seriesX[i].length||(a=r.globals.maxValsInArrayIndex),Ee.isNumber(r.seriesData.seriesX[a][o])&&(e=so.dataXToPx(r,r.seriesData.seriesX[a][o])-n*this.seriesLen/2),{barXPosition:e+(FN(r)?0:n*this.visibleI),x:e}}_prevRecord(e){const n=this.w;let i=null;for(let o=0;o0&&parseInt(r.realIndex,10)===parseInt(String(e),10)&&(i=r)}return i}_prevKeyedPaths(e){if(this._prevKeyed||(this._prevKeyed={}),this._prevKeyed[e]!==void 0)return this._prevKeyed[e];const n=this._prevRecord(e);let i=null;if(n&&n.paths.every(o=>o.key!=null)){const o=new Map;n.paths.forEach(r=>{o.set(r.key,r)}),i=o}return this._prevKeyed[e]=i,i}isLengthTransition(e){var n,i;if(this._ltCache||(this._ltCache={}),this._ltCache[e]!==void 0)return this._ltCache[e];const o=this.w;let r=!1;if(td(o)&&o.globals.previousPaths.length>0){const a=this._prevRecord(e),s=(i=(n=o.seriesData.series[e])==null?void 0:n.length)!=null?i:0;if(!a)r=s>0;else if(a.paths.length!==s)r=!0;else{const l=this._prevKeyedPaths(e);if(l){for(let c=0;c{const m=Bn.pathBox(g);return m?Math.min(m.maxX-m.minX,m.maxY-m.minY):0},p=u1:h(i)>1;if(us[0]),a=n.map(s=>s[1]);return{minX:Math.min(...r),maxX:Math.max(...r),minY:Math.min(...a),maxY:Math.max(...a),start:n[0],vertical:Math.abs(n[1][0]-n[0][0])Math.abs(g-m)<=Math.abs(g-v)?[m,v]:[v,m];let u,d,f,h;l?(u=Math.abs(s[0]-i)<=Math.abs(s[0]-o)?i:o,d=u===i?o:i,[f,h]=c(s[1],r,a)):(f=Math.abs(s[1]-r)<=Math.abs(s[1]-a)?r:a,h=f===r?a:r,[u,d]=c(s[0],i,o));const p=e.trim().endsWith("Z")?" Z":" z";return l?`M ${u} ${f} L ${u} ${h} L ${d} ${h} L ${d} ${f}${p}`:`M ${u} ${f} L ${d} ${f} L ${d} ${h} L ${u} ${h}${p}`}getPreviousFlip(e,n){const i=this.w,o=this._prevRecord(e);if(!o)return null;const r=this._prevKeyedPaths(e),a=r?r.get(Or(i,e,n)):o.paths[n];return a?!!a.flip:null}static pathCommandCount(e){if(!e)return 0;const n=e.match(/[A-Za-z]/g);return n?n.length:0}}class ZSe extends Bn{draw(e,n){const i=this.w;this.graphics=new Be(this.w),this.bar=new Bn(this.w,this.ctx,this.xyRatios);const o=new No(this.w);e=o.getLogSeries(e),this.yRatio=o.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e),i.config.chart.stackType==="100%"&&(e=i.globals.comboCharts?n.map(d=>i.globals.seriesPercent[d]):i.globals.seriesPercent.slice()),this.series=e,this.barHelpers.initializeStackedPrevVars(this);const r=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"});let a=0,s=0;const l=i.config.chart.animations,c=l.enabled&&l.dynamicAnimation.enabled&&i.globals.previousPaths.length>0;let u=!1;for(let d=0,f=0;d1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[h][0],b=h),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;let y=this.graphics.group({class:"apexcharts-series",seriesName:Ee.escapeString(i.seriesData.seriesNames[h]),rel:d+1,"data:realIndex":h});Xn.addCollapsedClassToSeries(this.w,y,h);const w=this.graphics.group({class:"apexcharts-datalabels","data:realIndex":h});Xn.addCollapsedClassToSeries(this.w,w,h),(i.globals.collapsingSeriesIndices||[]).indexOf(h)>-1&&w.node.style.setProperty("--apexcharts-dl-exit",`${i.config.chart.animations.dynamicAnimation.speed}ms`);const x=this.graphics.group({class:"apexcharts-bar-goals-markers"}),$=this.initialPositions(a,s,void 0,void 0,void 0,void 0,b),{xDivision:S,yDivision:_,zeroH:P,zeroW:T}=$;let O=$.barHeight,M=$.barWidth;s=$.y,a=$.x,i.globals.barHeight=O,i.globals.barWidth=M,this.barHelpers.initializeStackedXYVars(this),this.groupCtx.prevY.length===1&&this.groupCtx.prevY[0].every(I=>isNaN(I))&&(this.groupCtx.prevY[0]=this.groupCtx.prevY[0].map(()=>P),this.groupCtx.prevYF[0]=this.groupCtx.prevYF[0].map(()=>0));for(let I=0;I0||this.barHelpers.arrBorderRadius[h][I]==="top"&&i.seriesData.series[h][I]<0,W=c&&!z&&this.getPreviousFlip(h,I);(z||W)&&(N=B),W&&(N+=" apexcharts-flip-held",u=!0),y=this.renderSeries(vt(Ye({realIndex:h,pathFill:F.color},F.useRangeColor?{lineFill:F.color}:{}),{j:I,i:d,columnGroupIndex:g,pathFrom:R.pathFrom,pathTo:R.pathTo,strokeWidth:k,elSeries:y,x:a,y:s,series:e,barHeight:O,barWidth:M,elDataLabelsWrap:w,elGoalsMarkers:x,type:"bar",visibleSeries:g,classes:N}))}i.globals.seriesXvalues[h]=m,i.globals.seriesYvalues[h]=v,this.groupCtx.prevY.push(this.groupCtx.yArrj),this.groupCtx.prevYF.push(this.groupCtx.yArrjF),this.groupCtx.prevYVal.push(this.groupCtx.yArrjVal),this.groupCtx.prevX.push(this.groupCtx.xArrj),this.groupCtx.prevXF.push(this.groupCtx.xArrjF),this.groupCtx.prevXVal.push(this.groupCtx.xArrjVal),r.add(y)}return u&&this.settleHeldMirrors(),r}settleHeldMirrors(){const e=this.w;if(!Ot.isBrowser())return;const n=e.config.chart.animations,i=(n.dynamicAnimation.speed||0)+(n.speed||0)+100;setTimeout(()=>{e.globals.isDestroyed||!Ee.elementExists(e.dom.baseEl)||e.dom.baseEl.querySelectorAll(".apexcharts-flip-held").forEach(o=>{o.classList.remove("apexcharts-flip-held","apexcharts-flip-y","apexcharts-flip-x")})},i)}initialPositions(e,n,i,o,r,a,s){const l=this.w;let c,u;if(this.isHorizontal){o=l.layout.gridHeight/l.globals.dataPoints;const f=l.config.plotOptions.bar.barHeight;String(f).indexOf("%")===-1?c=parseInt(f,10):c=o*parseInt(f,10)/100,a=l.globals.padHorizontal+(this.isReversed?l.layout.gridWidth-this.baseLineInvertedY:this.baseLineInvertedY),n=(o-c)/2}else{i=l.layout.gridWidth/l.globals.dataPoints,u=i;const f=l.config.plotOptions.bar.columnWidth,h=l.axisFlags.isXNumeric?this.barHelpers.barSlotXSpan():0;h>0?(i=h/this.xRatio,u=i*parseInt(this.barOptions.columnWidth,10)/100):u*=parseInt(f,10)/100,String(f).indexOf("%")===-1&&(u=parseInt(f,10)),this.isReversed?r=this.baseLineY[s]:r=l.layout.gridHeight-this.baseLineY[s],e=l.globals.padHorizontal+(i-u)/2}const d=l.globals.barGroups.length||1;return{x:e,y:n,yDivision:o,xDivision:i,barHeight:(c??0)/d,barWidth:(u??0)/d,zeroH:r,zeroW:a}}drawStackedBarPaths({indexes:e,barHeight:n,strokeWidth:i,zeroW:o,x:r,y:a,columnGroupIndex:s,seriesGroup:l,yDivision:c,elSeries:u}){var d,f,h,p,g;const m=this.w,v=a+s*n;let b;const y=e.i,w=e.j,x=e.realIndex,$=e.translationsIndex;let S=0;for(let T=0;T0){let T=o;this.groupCtx.prevXVal[_-1][w]<0?T=((d=this.series[y])==null?void 0:d[w])>=0?this.groupCtx.prevX[_-1][w]+S-(this.isReversed?S:0)*2:this.groupCtx.prevX[_-1][w]:this.groupCtx.prevXVal[_-1][w]>=0&&(T=((f=this.series[y])==null?void 0:f[w])>=0?this.groupCtx.prevX[_-1][w]:this.groupCtx.prevX[_-1][w]-S+(this.isReversed?S:0)*2),b=T}else b=o;((h=this.series[y])==null?void 0:h[w])===null?r=b:r=b+((p=this.series[y])==null?void 0:p[w])/this.invertedYRatio-(this.isReversed?((g=this.series[y])==null?void 0:g[w])/this.invertedYRatio:0)*2;const P=this.barHelpers.getBarpaths({barYPosition:v,barHeight:n,x1:b,x2:r,strokeWidth:i,isReversed:this.isReversed,series:this.series,realIndex:e.realIndex,seriesGroup:l,i:y,j:w,w:m});return this.barHelpers.barBackground({j:w,i:y,y1:v,y2:n,elSeries:u}),a=a+c,{pathTo:P.pathTo,pathFrom:P.pathFrom,goalX:this.barHelpers.getGoalValues("x",o,null,x,w,$),barXPosition:b,barYPosition:v,x:r,y:a}}drawStackedColumnPaths({indexes:e,x:n,y:i,xDivision:o,barWidth:r,zeroH:a,columnGroupIndex:s,seriesGroup:l,elSeries:c}){var u,d,f,h,p,g,m,v,b;const y=this.w,w=e.i,x=e.j,$=e.bc,S=e.realIndex,_=e.translationsIndex;if(y.axisFlags.isXNumeric){let k=y.seriesData.seriesX[S][x];k||(k=0),n=(k-y.globals.minX)/this.xRatio-r/2*y.globals.barGroups.length}const P=n+s*r;let T,O=0;for(let k=0;k0&&!y.axisFlags.isXNumeric||M>0&&y.axisFlags.isXNumeric&&y.seriesData.seriesX[S-1][x]===y.seriesData.seriesX[S][x]){let k,E;const R=Math.min(this.yRatio.length+1,S+1);if(this.groupCtx.prevY[M-1]!==void 0&&this.groupCtx.prevY[M-1].length){for(let D=1;D=0?E-O+(this.isReversed?O:0)*2:E;break}else if(((h=this.groupCtx.prevYVal[M-D])==null?void 0:h[x])>=0){k=((p=this.series[w])==null?void 0:p[x])>=0?E:E+O-(this.isReversed?O:0)*2;break}typeof k>"u"&&(k=y.layout.gridHeight),(g=this.groupCtx.prevYF[0])!=null&&g.every(D=>D===0)&&this.groupCtx.prevYF.slice(1,M).every(D=>D.every(F=>isNaN(F)))?T=a:T=k}else T=a;(m=this.series[w])!=null&&m[x]?i=T-((v=this.series[w])==null?void 0:v[x])/this.yRatio[_]+(this.isReversed?((b=this.series[w])==null?void 0:b[x])/this.yRatio[_]:0)*2:i=T;const I=this.barHelpers.getColumnPaths({barXPosition:P,barWidth:r,y1:T,y2:i,yRatio:this.yRatio[_],strokeWidth:this.strokeWidth,isReversed:this.isReversed,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:w,j:x,w:y});return this.barHelpers.barBackground({bc:$,j:x,i:w,x1:P,x2:r,elSeries:c}),{pathTo:I.pathTo,pathFrom:I.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,a,S,x,0),barXPosition:P,x:y.axisFlags.isXNumeric?n:n+o,y:i}}}function NN({w:t,points:e,seedA:n,seedB:i,center:o,halfExtent:r,alongFn:a,isHorizontal:s,options:l,clampAt:c,sideSign:u}){const d=l;if(!d||d.show===!1)return[];if(!e||!e.length)return[];const f=d.maxPoints||3e3,h=e.length>f?Math.ceil(e.length/f):1,p=d.size!=null?d.size:2.5,g=d.jitter!=null?d.jitter:.5,m=r*g,v=d.constrainToViolin!==!1&&typeof c=="function",b=d.shape==="square",y=d.colorScale,w=y&&Array.isArray(y.colors)&&y.colors.length>0,x=w?Math.max(2,y.steps||24):1,$=w&&y.min!=null?y.min:t.globals.minY,_=(w&&y.max!=null?y.max:t.globals.maxY)-$||1,P=w?new Array(x).fill(""):[""];for(let O=0;OF&&(k=F),k<-F&&(k=-F)}u&&(k=Math.abs(k)*u);const E=s?I:o+k,R=s?o+k:I,D=b?eCe(E,R,p):QSe(E,R,p);if(w){let F=(M-$)/_;F<0&&(F=0),F>1&&(F=1),P[Math.round(F*(x-1))]+=D}else P[0]+=D}if(!w)return P[0]?[{fill:null,d:P[0]}]:[];const T=[];for(let O=0;O{const m=r?e.globals.colors[g]:e.globals.colors[a],v=o.fillColor,b=v==="series"?m:v==="series-dark"?tM(m,.45):v||tM(m,.45);p.forEach(y=>{const w=t.drawPath({d:y.d,fill:y.fill!=null?y.fill:b,stroke:d>0?u:"none",strokeWidth:d,fillOpacity:c,classes:l});w.attr("data:realIndex",a),w.attr("j",g),w.attr("clip-path",`url(#gridRectBarMask${e.globals.cuid})`),w.node.style.pointerEvents="none",h.add(w)})}),n.add(h)}function tM(t,e){const n=Ee.parseHex(t);if(!n)return t;const i=Math.max(0,1-e);return`rgb(${Math.round(n[0]*i)},${Math.round(n[1]*i)},${Math.round(n[2]*i)})`}function JSe(t,e){if(!t.length)return"#000";if(t.length===1)return t[0];const n=Math.max(0,Math.min(1,e))*(t.length-1),i=Math.floor(n),o=n-i,r=Ee.parseHex(t[i])||[0,0,0],a=Ee.parseHex(t[Math.min(i+1,t.length-1)])||r,s=(l,c)=>Math.round(l+(c-l)*o);return`rgb(${s(r[0],a[0])},${s(r[1],a[1])},${s(r[2],a[2])})`}function rw(t){let e=(t^2654435769)>>>0;return e=Math.imul(e^e>>>16,73244475),e=Math.imul(e^e>>>16,73244475),((e^e>>>16)>>>0)/4294967296}function QSe(t,e,n){return`M ${t-n} ${e} a ${n} ${n} 0 1 0 ${2*n} 0 a ${n} ${n} 0 1 0 ${-2*n} 0 `}function eCe(t,e,n){return`M ${t-n} ${e-n} h ${2*n} v ${2*n} h ${-2*n} z `}class nM extends Bn{draw(e,n,i){var o;const r=this.w,a=new Be(this.w),s=r.globals.comboCharts?n:r.config.chart.type,l=new go(this.w);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=r.config.plotOptions.bar.horizontal,this.isOHLC=this.candlestickOptions&&this.candlestickOptions.type==="ohlc",this.coreUtils=new No(this.w),e=this.coreUtils.getLogSeries(e),this.series=e,this.yRatio=this.coreUtils.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e);const c=a.group({class:`apexcharts-${s}-series apexcharts-plot-series`});for(let u=0;u0&&(this.visibleI=this.visibleI+1);let b=0;this.yRatio.length>1&&(this.yaxisIndex=r.globals.seriesYAxisReverseMap[g][0],b=g);const y=this.barHelpers.initialPositions(g),{y:w,barHeight:x,yDivision:$,zeroW:S,x:_,barWidth:P,xDivision:T,zeroH:O}=y;f=w,d=_,p.push(d+(P??0)/2);const M=a.group({class:"apexcharts-datalabels","data:realIndex":g}),I=a.group({class:"apexcharts-bar-goals-markers"}),k=this.isBoxPlot?this.boxOptions.points:null,E=[],R=r.layout.gridWidth,D=P??0;for(let F=0;F0&&p.push(d+(P??0)/2),h.push(f),B.culled)continue;const W=this.barHelpers.drawGoalLine({barXPosition:B.barXPosition,barYPosition:B.barYPosition,goalX:B.goalX,goalY:B.goalY,barHeight:x,barWidth:P});if(W&&I.add(W),B.pathTo.forEach((j,U)=>{const V=!this.isBoxPlot&&this.candlestickOptions.wick.useFillColor?B.color[U]:r.globals.stroke.colors[u],q=l.fillPath({seriesNumber:g,dataPointIndex:F,color:B.color[U],value:e[u][F]});this.renderSeries({realIndex:g,pathFill:q,lineFill:V,j:F,i:u,pathFrom:B.pathFrom,pathTo:j,strokeWidth:N,elSeries:v,x:d,y:f,series:e,columnGroupIndex:m,barHeight:x,barWidth:P,elDataLabelsWrap:M,elGoalsMarkers:I,visibleSeries:this.visibleI,type:r.config.chart.type})}),k&&k.show!==!1){const j=(o=r.candleData.seriesBoxPoints[g])==null?void 0:o[F];if(j&&j.length){const U=Q=>this.coreUtils.getLogValAtSeriesIndex(Q,g);let V,q,Y;if(this.isHorizontal){const Q=this.invertedYRatio,G=x??0,ee=S??0;V=B.barYPosition+G/2,q=G/2,Y=X=>ee+U(X)/Q}else{const Q=this.yRatio[b],G=P??0,ee=O??0;V=B.barXPosition+G/2,q=G/2,Y=X=>ee-U(X)/Q}const J=NN({w:r,points:j,seedA:g,seedB:F,center:V,halfExtent:q,alongFn:Y,isHorizontal:this.isHorizontal,options:k});J.length&&E.push({groups:J,j:F})}}}k&&BN({graphics:a,w:r,elSeries:v,pointsByCat:E,options:k,distributed:r.config.plotOptions.bar.distributed,realIndex:g,wrapClass:"apexcharts-boxPlot-points-wrap",pointClass:"apexcharts-boxPlot-points"}),r.globals.seriesXvalues[g]=p,r.globals.seriesYvalues[g]=h,c.add(v)}return c}drawVerticalBoxPaths({indexes:e,x:n,xDivision:i,barWidth:o,zeroH:r,strokeWidth:a,cullBounds:s=null}){var l,c,u,d;const f=this.w,h=new Be(this.w),p=e.i,g=e.j,{colors:m}=f.config.plotOptions.candlestick,{colors:v}=this.boxOptions,b=e.realIndex,y=F=>Array.isArray(F)?F[b]:F,w=y(m.upward),x=y(m.downward),$=this.yRatio[e.translationsIndex],S=this.getOHLCValue(b,g);let _=r,P=r,T=S.o"u"||((c=this.series[p])==null?void 0:c[g])===null?(O=r,M=r):(O=r-O/$,M=r-M/$,_=r-S.h/$,P=r-S.l/$,I=r-S.m/$),s&&(k+os.hi))return{pathTo:null,pathFrom:null,x:f.axisFlags.isXNumeric?n:n+i,y:M,barXPosition:k,color:T,culled:!0};let E;if(this.isOHLC){const F=k+o/2,N=r-S.o/$,B=r-S.c/$;E=[h.move(F,_)+h.line(F,P)+h.move(F,N)+h.line(k,N)+h.move(F,B)+h.line(k+o,B)]}else this.isBoxPlot?E=[h.move(k,O)+h.line(k+o/2,O)+h.line(k+o/2,_)+h.line(k+o/4,_)+h.line(k+o-o/4,_)+h.line(k+o/2,_)+h.line(k+o/2,O)+h.line(k+o,O)+h.line(k+o,I)+h.line(k,I)+h.line(k,O+a/2),h.move(k,I)+h.line(k+o,I)+h.line(k+o,M)+h.line(k+o/2,M)+h.line(k+o/2,P)+h.line(k+o-o/4,P)+h.line(k+o/4,P)+h.line(k+o/2,P)+h.line(k+o/2,M)+h.line(k,M)+h.line(k,I)+"z"]:E=[h.move(k,M)+h.line(k+o/2,M)+h.line(k+o/2,_)+h.line(k+o/2,M)+h.line(k+o,M)+h.line(k+o,O)+h.line(k+o/2,O)+h.line(k+o/2,P)+h.line(k+o/2,O)+h.line(k,O)+h.line(k,M-a/2)];let R=null;const D=(d=(u=this.ctx)==null?void 0:u.morphTypeChange)==null?void 0:d.getInitialPathFor(b,g);return D?R=D:f.globals.previousPaths.length>0&&(R=this.getPreviousPath(b,g,E[0])),R==null&&(R=h.move(k+o/2,O)+h.move(k,O)),f.axisFlags.isXNumeric||(n=n+i),{pathTo:E,pathFrom:R,x:n,y:M,goalY:this.barHelpers.getGoalValues("y",null,r,b,g,e.translationsIndex),barXPosition:k,color:T}}drawHorizontalBoxPaths({indexes:e,y:n,yDivision:i,barHeight:o,zeroW:r,strokeWidth:a}){var s,l,c,u;const d=this.w,f=new Be(this.w),h=e.i,p=e.j,g=e.realIndex,{colors:m}=d.config.plotOptions.candlestick,{colors:v}=this.boxOptions,b=E=>Array.isArray(E)?E[g]:E,y=this.invertedYRatio,w=this.getOHLCValue(g,p);let x=w.o"u"||((l=this.series[h])==null?void 0:l[p])===null?(_=r,P=r):(_=r+_/y,P=r+P/y,$=r+w.h/y,S=r+w.l/y,T=r+w.m/y);const M=[f.move(_,O)+f.line(_,O+o/2)+f.line($,O+o/2)+f.line($,O+o/2-o/4)+f.line($,O+o/2+o/4)+f.line($,O+o/2)+f.line(_,O+o/2)+f.line(_,O+o)+f.line(T,O+o)+f.line(T,O)+f.line(_+a/2,O),f.move(T,O)+f.line(T,O+o)+f.line(P,O+o)+f.line(P,O+o/2)+f.line(S,O+o/2)+f.line(S,O+o-o/4)+f.line(S,O+o/4)+f.line(S,O+o/2)+f.line(P,O+o/2)+f.line(P,O)+f.line(T,O)+"z"];let I=null;const k=(u=(c=this.ctx)==null?void 0:c.morphTypeChange)==null?void 0:u.getInitialPathFor(g,p);return k?I=k:d.globals.previousPaths.length>0&&(I=this.getPreviousPath(g,p,M[0])),I==null&&(I=f.move(_,O+o/2)+f.move(_,O)),d.axisFlags.isXNumeric||(n=n+i),{pathTo:M,pathFrom:I,x:P,y:n,goalX:this.barHelpers.getGoalValues("x",r,null,g,p,0),barYPosition:O,color:x}}getOHLCValue(e,n){const i=this.w,o=this.coreUtils,r=d=>d[e]&&d[e][n]!=null?o.getLogValAtSeriesIndex(d[e][n],e):0,a=r(i.candleData.seriesCandleH),s=r(i.candleData.seriesCandleO),l=r(i.candleData.seriesCandleM),c=r(i.candleData.seriesCandleC),u=r(i.candleData.seriesCandleL);return{o:this.isBoxPlot?a:s,h:this.isBoxPlot?s:a,m:l,l:this.isBoxPlot?c:u,c:this.isBoxPlot?u:c}}}const tCe=t=>{const e=nCe(t),n=t.length-1,i=1e-6,o=[];let r,a,s,l;for(let c=0;c9&&(l=s*3/Math.sqrt(l),e[c]=l*r,e[c+1]=l*a));for(let c=0;c<=n;c++)l=(t[Math.min(n,c+1)][0]-t[Math.max(0,c-1)][0])/(6*(1+e[c]*e[c])),o.push([l||0,e[c]*l||0]);return o},zN=t=>{let e="";for(let n=0;n4?(e+=`C${i[0]}, ${i[1]}`,e+=`, ${i[2]}, ${i[3]}`,e+=`, ${i[4]}, ${i[5]}`):o>2&&(e+=`S${i[0]}, ${i[1]}`,e+=`, ${i[2]}, ${i[3]}`)}return e},aw={points(t){const e=tCe(t),n=t[1],i=t[0],o=[],r=e[1],a=e[0];o.push(i,[i[0]+a[0],i[1]+a[1],n[0]-r[0],n[1]-r[1],n[0],n[1]]);for(let s=2,l=e.length;s1&&i[1].length<6){const o=i[0].length;i[1]=[i[0][o-2]*2-i[0][o-4],i[0][o-1]*2-i[0][o-3]].concat(i[1])}i[0]=i[0].slice(-2)}return i}};function sw(t,e){return(e[1]-t[1])/(e[0]-t[0])}function nCe(t){const e=[];let n=t[0],i=t[1],o=e[0]=sw(n,i),r=1;for(let a=t.length-1;r0&&(this.visibleI=this.visibleI+1);let v=0;this.yRatio.length>1&&(this.yaxisIndex=r.globals.seriesYAxisReverseMap[p][0],v=p);const b=this.barHelpers.initialPositions(p),{y,barHeight:w,yDivision:x,zeroW:$,x:S,barWidth:_,xDivision:P,zeroH:T}=b;d=y,u=S,h.push(u+(_??0)/2);const O=a.group({class:"apexcharts-datalabels","data:realIndex":p});this.seriesMaxWeight=0,this.normalize==="group"&&(r.violinData.seriesViolinDensity[p]||[]).forEach(k=>{k&&k.maxWeight>this.seriesMaxWeight&&(this.seriesMaxWeight=k.maxWeight)});const M=[];for(let I=0;I0&&h.push(E.center),f.push(E.alongRepresentative);const R=this.buildPointsSubPath({realIndex:p,j:I,center:E.center,halfExtent:E.halfExtent,alongFn:E.alongFn,density:E.density,maxWeight:E.maxWeight,cloudBase:E.cloudBase,cloudMaxPx:E.cloudMaxPx,rainCenter:E.rainCenter,rainHalfPx:E.rainHalfPx});R.length&&M.push({groups:R,j:I});const D=s.fillPath({seriesNumber:this.distributed?I:p,dataPointIndex:I,color:this.distributed?r.globals.colors[I]:void 0,value:e[c][I]});this.renderSeries({realIndex:p,pathFill:D,lineFill:r.globals.stroke.colors[p],j:I,i:c,pathFrom:E.pathFrom,pathTo:E.pathTo,strokeWidth:k,elSeries:m,x:u,y:d,series:e,columnGroupIndex:g,barHeight:w,barWidth:_,elDataLabelsWrap:O,visibleSeries:this.visibleI,type:"violin"});const F=m.node.querySelector(`path.apexcharts-violin-area[j='${I}']`);if(F&&isFinite(E.alongRepresentative)&&F.setAttribute(this.isHorizontal?"cx":"cy",`${E.alongRepresentative}`),E.boxPaths){const N=(o=this.boxOptions.strokeWidth)!=null?o:1;E.boxPaths.forEach(B=>{this.renderSeries({realIndex:p,pathFill:B.filled?this.boxOptions.fillColor||D:"none",lineFill:r.globals.stroke.colors[p],j:I,i:c,pathFrom:B.pathFrom,pathTo:B.pathTo,strokeWidth:N,elSeries:m,x:u,y:d,series:e,columnGroupIndex:g,barHeight:w,barWidth:_,elDataLabelsWrap:O,visibleSeries:this.visibleI,type:"violin",classes:"apexcharts-raincloud-box"})})}}BN({graphics:a,w:r,elSeries:m,pointsByCat:M,options:this.pointsOptions,distributed:this.distributed,realIndex:p,wrapClass:"apexcharts-violin-points-wrap",pointClass:"apexcharts-violin-points"}),r.globals.seriesXvalues[p]=h,r.globals.seriesYvalues[p]=f,l.add(m)}return l}drawVerticalViolin({indexes:e,x:n,xDivision:i,barWidth:o,zeroH:r}){var a,s,l,c,u,d,f;const h=this.w,{realIndex:p,j:g,translationsIndex:m}=e,v=this.yRatio[m];h.axisFlags.isXNumeric&&(n=(h.seriesData.seriesX[p][g]-h.globals.minX)/this.xRatio-o/2);const y=n+o*this.visibleI+o/2,w=o/2,x=this.getDensity(p,g),$=this.effectiveMaxWeight(x),S=I=>r-this.logVal(I,p)/v,_=rM({halfExtent:w,cloudSign:(a=this.cloudSign)!=null?a:0,rainSign:(s=this.rainSign)!=null?s:0,boxFrac:(l=this.boxFrac)!=null?l:0,rainFrac:(c=this.rainFrac)!=null?c:0}),P=y+_.cloudBaseOff,T=this.buildBodyPath({nodes:x.nodes,center:P,halfExtent:_.cloudMaxPx,maxWeight:$,vertical:!0,alongFn:S,collapsed:!1,sideSign:this.cloudSign});let O=null;const M=(d=(u=this.ctx)==null?void 0:u.morphTypeChange)==null?void 0:d.getInitialPathFor(p,g);return M?O=M:h.globals.previousPaths.length>0&&(O=this.getPreviousPath(p,g,T)),O==null&&(O=this.buildBodyPath({nodes:x.nodes,center:P,halfExtent:_.cloudMaxPx,maxWeight:$,vertical:!0,alongFn:S,collapsed:!0,sideSign:this.cloudSign})),h.axisFlags.isXNumeric||(n=n+i),{pathTo:T,pathFrom:O,x:n,y:r,center:y,halfExtent:w,alongFn:S,density:x,maxWeight:$,cloudBase:P,cloudMaxPx:_.cloudMaxPx,rainCenter:y+_.rainCenterOff,rainHalfPx:_.rainHalfPx,boxPaths:this.buildBoxSubPaths({realIndex:p,j:g,boxCenter:y+_.boxCenterOff,boxHalfPx:_.boxHalfPx,alongFn:S,vertical:!0}),alongRepresentative:S((f=this.series[e.i][g])!=null?f:0)}}drawHorizontalViolin({indexes:e,y:n,yDivision:i,barHeight:o,zeroW:r}){var a,s,l,c,u,d,f;const h=this.w,{realIndex:p,j:g}=e,m=this.invertedYRatio;h.axisFlags.isXNumeric&&(n=(h.seriesData.seriesX[p][g]-h.globals.minX)/this.invertedXRatio-o/2);const b=n+o*this.visibleI+o/2,y=o/2,w=this.getDensity(p,g),x=this.effectiveMaxWeight(w),$=M=>r+this.logVal(M,p)/m,S=rM({halfExtent:y,cloudSign:(a=this.cloudSign)!=null?a:0,rainSign:(s=this.rainSign)!=null?s:0,boxFrac:(l=this.boxFrac)!=null?l:0,rainFrac:(c=this.rainFrac)!=null?c:0}),_=b+S.cloudBaseOff,P=this.buildBodyPath({nodes:w.nodes,center:_,halfExtent:S.cloudMaxPx,maxWeight:x,vertical:!1,alongFn:$,collapsed:!1,sideSign:this.cloudSign});let T=null;const O=(d=(u=this.ctx)==null?void 0:u.morphTypeChange)==null?void 0:d.getInitialPathFor(p,g);return O?T=O:h.globals.previousPaths.length>0&&(T=this.getPreviousPath(p,g,P)),T==null&&(T=this.buildBodyPath({nodes:w.nodes,center:_,halfExtent:S.cloudMaxPx,maxWeight:x,vertical:!1,alongFn:$,collapsed:!0,sideSign:this.cloudSign})),h.axisFlags.isXNumeric||(n=n+i),{pathTo:P,pathFrom:T,x:r,y:n,center:b,halfExtent:y,alongFn:$,maxWeight:x,density:w,cloudBase:_,cloudMaxPx:S.cloudMaxPx,rainCenter:b+S.rainCenterOff,rainHalfPx:S.rainHalfPx,boxPaths:this.buildBoxSubPaths({realIndex:p,j:g,boxCenter:b+S.boxCenterOff,boxHalfPx:S.boxHalfPx,alongFn:$,vertical:!1}),alongRepresentative:$((f=this.series[e.i][g])!=null?f:0)}}getDensity(e,n){var i;const r=(i=this.w.violinData.seriesViolinDensity[e])==null?void 0:i[n];if(!r||!r.values.length)return{nodes:[],maxWeight:0};const a=r.values.map((c,u)=>u);a.sort((c,u)=>r.values[c]-r.values[u]);const s=[];let l=null;for(const c of a){const u=r.values[c];l!==null&&u===l||(s.push({v:u,w:r.weights[c]}),l=u)}return{nodes:s,maxWeight:r.maxWeight}}effectiveMaxWeight(e){return this.normalize==="group"&&this.seriesMaxWeight>0?this.seriesMaxWeight:e.maxWeight}buildBodyPath({nodes:e,center:n,halfExtent:i,maxWeight:o,vertical:r,alongFn:a,collapsed:s,sideSign:l=0}){const c=new Be(this.w);if(e.length===0){const h=a(0);return r?c.move(n,h)+c.line(n,h):c.move(h,n)+c.line(h,n)}const u=h=>{if(s||o<=0)return 0;const p=h/o*i*this.bandwidthScale;return Math.min(i,Math.max(0,p))},d=[],f=[];for(let h=0;hr(x)),v=(x,$)=>{const S=new Be(this.w),_=(I,k)=>a?[I,k]:[k,I],P=I=>I.map(([k,E],R)=>R===0?S.move(k,E):S.line(k,E)).join(""),T=i,O=P([_(T,f),_(T,h)])+P([_(T,g),_(T,m)])+P([_(T-x,f),_(T+x,f)])+P([_(T-x,m),_(T+x,m)]),M=P([_(T-$,h),_(T+$,h),_(T+$,g),_(T-$,g)])+"z"+P([_(T-$,p),_(T+$,p)]);return{whiskers:O,box:M}},b=v(d,o),y=v(0,0),w=(x,$)=>{let S=null;return c.globals.previousPaths.length>0&&(S=this.getPreviousPath(e,n,x)),S??$};return[{pathTo:b.whiskers,pathFrom:w(b.whiskers,y.whiskers),filled:!1},{pathTo:b.box,pathFrom:w(b.box,y.box),filled:!0}]}smoothSegment(e,n,i){const o=new Be(this.w),r=e[0];let a=i?o.line(r[0],r[1]):o.move(r[0],r[1]);if(e.length<3||!this.strictlyMonotonic(e,n)){for(let d=1;dn?[f,d]:[d,f]),c=aw.points(l),u=n?c.map(oCe):c;return a+=zN(u),a}strictlyMonotonic(e,n){const i=n?1:0;for(let o=1;othis.halfWidthAtValue(m,a,g,s),sideSign:h?0:this.cloudSign})}halfWidthAtValue(e,n,i,o){const{nodes:r}=n,a=o??n.maxWeight;if(!r.length||a<=0)return 0;const s=l=>Math.min(i,l/a*i*this.bandwidthScale);if(e<=r[0].v)return s(r[0].w);if(e>=r[r.length-1].v)return s(r[r.length-1].w);for(let l=1;l0&&i.colorScale.ranges.map(o=>{o.from<=0&&(n=!0)}),n}getShadeColor(e,n,i,o){const r=this.w;let a=1;const s=r.config.plotOptions[e].shadeIntensity,l=this.determineColor(e,n,i);r.globals.hasNegs||o?r.config.plotOptions[e].reverseNegativeShade?l.percent<0?a=l.percent/100*(s*1.25):a=(1-l.percent/100)*(s*1.25):l.percent<=0?a=1-(1+l.percent/100)*s:a=(1-l.percent/100)*s:(a=1-l.percent/100,e==="treemap"&&(a=(1-l.percent/100)*(s*1.25)));let c=l.color;const u=new Ee;if(r.config.plotOptions[e].enableShades)if(this.w.config.theme.mode==="dark"){const d=u.shadeColor(a*-1,l.color);c=Ee.hexToRgba(Ee.isColorHex(d)?d:Ee.rgb2hex(d),r.config.fill.opacity)}else{const d=u.shadeColor(a,l.color);c=Ee.hexToRgba(Ee.isColorHex(d)?d:Ee.rgb2hex(d),r.config.fill.opacity)}return{color:c,colorProps:l}}determineColor(e,n,i){const o=this.w,r=o.seriesData.series[n][i],a=o.config.plotOptions[e];let s=a.colorScale.inverse?i:n;a.distributed&&o.config.chart.type==="treemap"&&(s=i);let l=o.globals.colors[s],c=null,u,d;if(!a.distributed&&e==="heatmap")u=o.globals.minY,d=o.globals.maxY;else{const v=o.seriesData.series[n];u=v.length?v[0]:0,d=u;for(let b=1;bd&&(d=v[b])}const f=a.colorScale.min,h=a.colorScale.max;typeof f<"u"&&typeof h<"u"&&h>f?(u=f,d=h):typeof f<"u"&&(u=fo.globals.maxY?h:o.globals.maxY);const p=Math.abs(d)+Math.abs(u),g=Math.min(Math.max(r,u),d);let m=p===0?0:100*g/p;return a.colorScale.ranges.length>0&&a.colorScale.ranges.map(b=>{if(r>=b.from&&r<=b.to){l=b.color,c=b.foreColor?b.foreColor:null,u=b.from,d=b.to;const y=Math.abs(d)+Math.abs(u);m=y===0?0:100*r/y}}),{color:l,foreColor:c,percent:m}}calculateDataLabels({text:e,x:n,y:i,i:o,j:r,colorProps:a,fontSize:s}){const l=this.w,c=l.config.dataLabels,u=new Be(this.w),d=new Cc(this.w,this.ctx);let f=null;if(c.enabled){f=u.group({class:"apexcharts-data-labels"});const h=Bg(c.offsetX,l,o,r),p=Bg(c.offsetY,l,o,r),g=n+h,m=i+parseFloat(c.style.fontSize)/3+p;d.plotDataLabelsText({x:g,y:m,text:e,i:o,j:r,color:a.foreColor,parent:f,fontSize:s,dataLabelsConfig:c})}return f}}class rCe{constructor(e,n,i){this.ctx=n,this.w=e,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new HN(e,n),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.shape=this.w.config.plotOptions.heatmap.shape||"rect",this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}draw(e){var n,i;const o=this.w,r=new Be(this.w,this.ctx),a=r.group({class:"apexcharts-heatmap"}),s=o.layout.gridWidth/o.globals.dataPoints,l=o.layout.gridHeight/o.seriesData.series.length,c=(o.config.xaxis.type==="numeric"||o.config.xaxis.type==="datetime")&&o.axisFlags.isXNumeric&&this.xRatio>0;let u=s;if(c){const y=o.globals.minXDiff;u=Number.isFinite(y)&&y>0?y/this.xRatio:s}let d=this.shape;c&&d==="hexagon"&&(d="rect");const f=Ov(this.ctx,r),h=d==="rect"&&f!==r&&typeof f.drawRectCell=="function";d==="hexagon"?this.applyHexagonClipPath(a,r,s,l):a.attr("clip-path",`url(#gridRectMask${o.globals.cuid})`);const p=Array.isArray(o.config.fill.opacity)?(n=o.config.fill.opacity[0])!=null?n:1:(i=o.config.fill.opacity)!=null?i:1;let g=0,m=!1;this.negRange=this.helpers.checkColorRange();const v=e.slice();o.config.yaxis[0].reversed&&(m=!0,v.reverse());for(let y=m?0:v.length-1;m?y=0;m?y++:y--){const w=r.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:Ee.escapeString(o.seriesData.seriesNames[y]),rel:y+1,"data:realIndex":y});if(Xn.addCollapsedClassToSeries(this.w,w,y),h||r.setupEventDelegation(w,".apexcharts-heatmap-rect"),o.config.chart.dropShadow.enabled){const T=o.config.chart.dropShadow;new uo(this.w).dropShadow(w,T,y)}let x=0;const $=o.config.plotOptions.heatmap.shadeIntensity,S=Math.round(g/l),_=d==="hexagon"?(S%2===0?-1:1)*s/4:0;let P=0;for(let T=0;T=v[y].length)break;const O=c?u:s;if(c){const B=o.seriesData.seriesX[y]?o.seriesData.seriesX[y][P]:null;if(B==null||B!==B){P++;continue}x=(B-o.globals.minX)/this.xRatio-u/2}const M=this.helpers.getShadeColor(o.config.chart.type,y,P,this.negRange);let I=M.color;const k=M.colorProps;o.config.fill.type==="image"&&(I=new go(this.w).fillPath({seriesNumber:y,dataPointIndex:P,opacity:o.globals.hasNegs?k.percent<0?1-(1+k.percent/100):$+k.percent/100:k.percent/100,patternID:Ee.randomId(),width:o.config.fill.image.width?o.config.fill.image.width:O,height:o.config.fill.image.height?o.config.fill.image.height:l}));const E=this.rectRadius,R=o.config.plotOptions.heatmap.useFillColorAsStroke?I:o.globals.stroke.colors[0];if(h)f.drawRectCell(x,g,O,l,{fill:I,fillOpacity:p,stroke:R,strokeWidth:this.strokeWidth,radius:E,seriesIndex:y,dataPointIndex:P});else{const B=d==="rect",z=B?r.drawRect(x,g,O,l,E):r.drawPath({d:this.cellShapePath(d,x+_,g,O,l),stroke:R,strokeWidth:this.strokeWidth,fill:I,fillOpacity:1});if(z.attr({cx:x+_,cy:g}),z.node.classList.add("apexcharts-heatmap-rect"),w.add(z),z.attr({fill:I,i:y,index:y,j:P,val:e[y][P],"stroke-width":this.strokeWidth,stroke:R,color:I}),B||z.attr({width:O,height:l}),o.config.chart.animations.enabled&&!o.globals.dataChanged){let W=1;if(o.globals.resized||(W=o.config.chart.animations.speed),B)this.animateHeatMap(z,x,g,O,l,W,y,P);else{const j=new Gs(this.w);j.animatePop(z,{speed:W,delay:this.enterStaggerDelay(W,y,P),onComplete:()=>{j.animationCompleted(z)}})}}if(o.globals.dataChanged){let W=1;if(this.dynamicAnim.enabled&&o.globals.shouldAnimate){W=this.dynamicAnim.speed;let j=o.globals.previousPaths[y]&&o.globals.previousPaths[y][P]&&o.globals.previousPaths[y][P].color;j||(j="rgba(255, 255, 255, 0)"),this.animateHeatColor(z,Ee.isColorHex(j)?j:Ee.rgb2hex(j),Ee.isColorHex(I)?I:Ee.rgb2hex(I),W)}}}const D=o.config.dataLabels.formatter,F=D(o.seriesData.series[y][P],{value:o.seriesData.series[y][P],seriesIndex:y,dataPointIndex:P,w:o}),N=this.helpers.calculateDataLabels({text:F,x:x+_+O/2,y:g+l/2,i:y,j:P,colorProps:k,series:v});N!==null&&w.add(N),c||(x=x+s),P++}g=g+l,a.add(w)}const b=o.globals.yAxisScale[0].result.slice();return o.config.yaxis[0].reversed?b.unshift(""):b.push(""),o.globals.yAxisScale[0].result=b,a}animateHeatMap(e,n,i,o,r,a,s=0,l=0){const c=new Gs(this.w),u=this.enterStaggerDelay(a,s,l);c.animateRect(e,{x:n+o/2,y:i+r/2,width:0,height:0},{x:n,y:i,width:o,height:r},a,()=>{c.animationCompleted(e)},u)}enterStaggerDelay(e,n,i){const o=this.w,r=o.config.chart.animations.animateGradually;if(!r||r.enabled===!1)return 0;const a=(o.seriesData.series||[]).length||1,s=o.globals.dataPoints||1,l=a+s-2,c=Math.min(r.delay||0,e*.5/Math.max(1,l));return c$({style:"diagonal",index:i,row:n,col:i,baseDelay:c})}cellShapePath(e,n,i,o,r){const a=n+o/2,s=i+r/2;if(e==="circle"){const c=Math.min(o,r)/2;return`M ${a-c} ${s} a ${c} ${c} 0 1 0 ${c*2} 0 a ${c} ${c} 0 1 0 ${-c*2} 0 Z`}if(e==="diamond")return`M ${a} ${i} L ${n+o} ${s} L ${a} ${i+r} L ${n} ${s} Z`;const l=n+o;return`M ${a} ${i-r/6} L ${l} ${i+r/6} L ${l} ${i+r*5/6} L ${a} ${i+r*7/6} L ${n} ${i+r*5/6} L ${n} ${i+r/6} Z`}applyHexagonClipPath(e,n,i,o){const r=this.w,a=this.strokeWidth/2+2,s=`heatmapHexMask${r.globals.cuid}`,l=r.dom.elDefs.node,c=l.querySelector(`clipPath[id="${s}"]`);c&&c.parentNode&&c.parentNode.removeChild(c);const u=We.createElementNS(Fg,"clipPath");u.setAttribute("id",s),u.appendChild(n.drawRect(-i/4-a,-o/6-a,r.layout.gridWidth+i/2+a*2,r.layout.gridHeight+o/3+a*2,0,"#fff").node),l.appendChild(u),e.attr("clip-path",`url(#${s})`)}animateHeatColor(e,n,i,o){e.attr({fill:n}).animate(o).attr({fill:i})}}class aCe{constructor(e){this.w=e.w,this.lineCtx=e}sameValueSeriesFix(e,n){const i=this.w;if((i.config.fill.type==="gradient"||i.config.fill.type[e]==="gradient")&&new No(this.lineCtx.w).seriesHaveSameValues(e)){const r=n[e].slice();r[r.length-1]=r[r.length-1]+1e-6,n[e]=r}return n}calculatePoints({series:e,realIndex:n,x:i,y:o,i:r,j:a,prevY:s}){const l=this.w,c=[],u=[];let d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;return l.axisFlags.isXNumeric&&(d=(l.seriesData.seriesX[n][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),a===0&&(c.push(d),u.push(Ee.isNumber(e[r][0])?s+l.config.markers.offsetY:null)),c.push(i+l.config.markers.offsetX),u.push(Ee.isNumber(e[r][a+1])?o+l.config.markers.offsetY:null),{x:c,y:u}}checkPreviousPaths({pathFromLine:e,pathFromArea:n,realIndex:i}){const o=this.w;for(let r=0;r0&&parseInt(a.realIndex,10)===parseInt(i,10)&&(a.type==="line"?(this.lineCtx.appendPathFrom=!1,e=o.globals.previousPaths[r].paths[0].d):a.type==="area"&&(this.lineCtx.appendPathFrom=!1,n=o.globals.previousPaths[r].paths[0].d,o.config.stroke.show&&o.globals.previousPaths[r].paths[1]&&(e=o.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:n}}determineFirstPrevY({i:e,realIndex:n,series:i,prevY:o,lineYPosition:r,translationsIndex:a}){var s,l,c;const u=this.w,d=u.config.chart.stacked&&!u.globals.comboCharts||u.config.chart.stacked&&u.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((s=this.w.config.series[n])==null?void 0:s.type)==="bar"||((l=this.w.config.series[n])==null?void 0:l.type)==="column");if(typeof((c=i[e])==null?void 0:c[0])<"u"){if(d)if(e>0){const f=this.lineCtx.stackTopAt(n,0);r=f===void 0?this.lineCtx.zeroY:f}else r=this.lineCtx.zeroY;else r=this.lineCtx.zeroY;o=r-i[e][0]/this.lineCtx.yRatio[a]+(this.lineCtx.isReversed?i[e][0]/this.lineCtx.yRatio[a]:0)*2}else if(d&&e>0&&typeof i[e][0]>"u"){for(let f=e-1;f>=0;f--)if(i[f][0]!==null&&typeof i[f][0]<"u"){r=this.lineCtx.prevSeriesY[f][0],o=r;break}}return{prevY:o,lineYPosition:r}}}function sCe(t,e,n,i){var o;const r=t.globals,a=r.prevStreamFrame;if(!a||!r.dataChanged||!((o=t.axisFlags)!=null&&o.isXNumeric))return null;const s=a.seriesX[e],l=a.seriesY[e],c=t.seriesData.seriesX[e],u=t.seriesData.series[e];if(!s||!l||!c||!u||s.length<3||c.length<3)return null;let d=-1;for(let E=0;E.02||Math.abs(S)<.5)return null;let _=m,P=m;for(let E=m;E<=v;E++){const R=i[E];R==null||g[d+E]==null||(Ri[P]&&(P=E))}let T=1,O=0;const M=i[_],I=i[P];if(Math.abs(I-M)>1e-6?(T=(g[d+P]-g[d+_])/(I-M),O=g[d+_]-T*M):O=g[d+_]-M,!isFinite(T)||!isFinite(O)||T<.2||T>5)return null;const k=Math.floor((m+v)/2);if(k!==m&&k!==v&&n[k]!=null&&p[d+k]!=null){const E=$*n[k]+S;if(Math.abs(E-p[d+k])>1.5)return null;if(i[k]!=null&&g[d+k]!=null){const R=T*i[k]+O;if(Math.abs(R-g[d+k])>1.5)return null}}return r.streamScrolled=!0,{ax:$,bx:S,ay:T,by:O}}const lCe=/[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/gi;function aM(t,e){const{ax:n,bx:i,ay:o,by:r}=e,a=[],s=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g;let l;for(;(l=s.exec(t))!==null;){const c=l[1].toUpperCase(),u=(l[2].match(lCe)||[]).map(parseFloat);if(c==="Z"){a.push("z");continue}if(c==="H"){for(const f of u)a.push(`H ${n*f+i}`);continue}if(c==="V"){for(const f of u)a.push(`V ${o*f+r}`);continue}if(c==="A"){for(let f=0;f+61?h:0;this._initSerieVariables(e,f,h);const g=[],m=[],v=[];let b=a.globals.padHorizontal+this.categoryAxisCorrection;const y=1,w=[],x=[];Xn.addCollapsedClassToSeries(this.w,this.elSeries,h),a.axisFlags.isXNumeric&&a.seriesData.seriesX.length>0&&(b=(a.seriesData.seriesX[h][0]-a.globals.minX)/this.xRatio),v.push(b);const $=b;let S;const _=$;let P=this.zeroY,T=this.zeroY;const O=0;P=this.lineHelpers.determineFirstPrevY({i:f,realIndex:h,series:e,prevY:P,lineYPosition:O,translationsIndex:p}).prevY,a.config.stroke.curve==="monotoneCubic"&&e[f][0]===null?g.push(null):g.push(P);const I=P;let k;l==="rangeArea"&&(k=this.lineHelpers.determineFirstPrevY({i:f,realIndex:h,series:o,prevY:T,lineYPosition:O,translationsIndex:p}),T=k.prevY,S=T,m.push(g[0]!==null?T:null));const E=this._calculatePathsFrom({type:l,series:e,i:f,realIndex:h,translationsIndex:p,prevX:_,prevY:P,prevY2:T}),R=[g[0]],D=[m[0]],F={type:l,series:e,realIndex:h,translationsIndex:p,i:f,x:b,y,pX:$,pY:I,pathsFrom:E,linePaths:w,areaPaths:x,seriesIndex:i,lineYPosition:O,xArrj:v,yArrj:g,y2Arrj:m,seriesRangeEnd:o},N=this._iterateOverDataPoints(vt(Ye({},F),{iterations:l==="rangeArea"?e[f].length-1:void 0,isRangeStart:!0}));if(l==="rangeArea"){const B=this._calculatePathsFrom({series:o,i:f,realIndex:h,prevX:_,prevY:T}),z=this._iterateOverDataPoints(vt(Ye({},F),{series:o,xArrj:[b],yArrj:R,y2Arrj:D,pY:S,areaPaths:N.areaPaths,pathsFrom:B,iterations:o[f].length-1,isRangeStart:!1})),W=N.linePaths.length/2;for(let j=0;jNumber(f.node.getAttribute("zIndex"))-Number(h.node.getAttribute("zIndex"))),a.config.chart.stacked)for(let f=d.length-1;f>=0;f--)c.add(d[f]);else for(let f=0;f1&&(this.yaxisIndex=o.globals.seriesYAxisReverseMap[i],a=i),this.isReversed=o.config.yaxis[this.yaxisIndex]&&o.config.yaxis[this.yaxisIndex].reversed,this.zeroY=o.layout.gridHeight-this.baseLineY[a]-(this.isReversed?o.layout.gridHeight:0)+(this.isReversed?this.baseLineY[a]*2:0),this.areaBottomY=this.zeroY,(this.zeroY>o.layout.gridHeight||o.config.plotOptions.area.fillTo==="end")&&(this.areaBottomY=o.layout.gridHeight),this.categoryAxisCorrection=this.xDivision/2;const s=o.config.series[i];if(this.elSeries=r.group({class:"apexcharts-series",zIndex:typeof s.zIndex<"u"?s.zIndex:i,seriesName:Ee.escapeString(o.seriesData.seriesNames[i])}),this.elPointsMain=r.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.markers.resetSeriesWrapCache(),this._elLastPointsWrap=null,o.globals.hasNullValues){const c=this.markers.plotChartMarkers({pointsPos:{x:[0],y:[o.layout.gridHeight+o.globals.markers.largestSize]},seriesIndex:n,j:0,pSize:.1,alwaysDrawMarker:!0,isVirtualPoint:!0});c!==null&&this.elPointsMain.add(c)}this.elDataLabelsWrap=r.group({class:"apexcharts-datalabels","data:realIndex":i});const l=e[n].length===o.globals.dataPoints;this.elSeries.attr({"data:longestSeries":l,rel:n+1,"data:realIndex":i}),this.appendPathFrom=!0}_calculatePathsFrom({type:e,series:n,i,realIndex:o,translationsIndex:r,prevX:a,prevY:s,prevY2:l}){const c=this.w,u=new Be(this.w);let d,f,h,p;if(n[i][0]===null){for(let g=0;g0){const g=this.lineHelpers.checkPreviousPaths({pathFromLine:h,pathFromArea:p,realIndex:o});h=g.pathFromLine,p=g.pathFromArea}return{prevX:a,prevY:s,linePath:d,areaPath:f,pathFromLine:h,pathFromArea:p}}_stackKey(e,n){if(!this.w.axisFlags.isXNumeric)return n;const i=this.w.seriesData.seriesX[e];return i?i[n]:void 0}stackTopAt(e,n){const i=this._stackKey(e,n);if(i!=null)return this.prevSeriesYByX.get(i)}_recordStackTops(e,n){const i=this.w;if(Array.isArray(n)&&!(i.globals.collapsedSeriesIndices.indexOf(e)!==-1||i.globals.ancillaryCollapsedSeriesIndices.indexOf(e)!==-1))for(let o=0;o0&&e!=="rangeArea"){const _=f.globals.seriesXvalues[n][f.globals.seriesXvalues[n].length-b.count-1],P=h.drawRect(_,0,f.layout.gridWidth,f.layout.gridHeight,0);f.dom.elForecastMask.appendChild(P.node);const T=h.drawRect(0,0,_,f.layout.gridHeight,0);f.dom.elNonForecastMask.appendChild(T.node)}this.pointsChart?eM(f,{elPointsMain:this.elPointsMain,realIndex:n,speed:f.config.chart.animations.dynamicAnimation.speed}):(f.globals.delayedElements.push({el:this.elPointsMain.node,index:n}),eM(f,{elPointsMain:this.elPointsMain,realIndex:n,speed:f.config.chart.animations.dynamicAnimation.speed}),Tv(f,n)&&((r=this.elDataLabelsWrap)!=null&&r.node)&&(this.elDataLabelsWrap.node.classList.add("apexcharts-element-hidden"),f.globals.delayedElements.push({el:this.elDataLabelsWrap.node,holdUntilComplete:!0})));const y={i,realIndex:n,animationDelay:i,initialSpeed:f.config.chart.animations.speed,dataChangeSpeed:f.config.chart.animations.dynamicAnimation.speed,className:`apexcharts-${e}`},w=o.numericXY,x=e==="line"||e==="area",$=x&&o.linePaths.length>1?[o.linePaths.join(" ")]:o.linePaths,S=x&&o.areaPaths.length>1?[o.areaPaths.join(" ")]:o.areaPaths;if(e==="area"){const _=g.fillPath({seriesNumber:n});for(let P=0;P0&&e!=="rangeArea"){const I=p.renderPaths(O);I.node.setAttribute("stroke-dasharray",b.dashArray),b.strokeWidth&&I.node.setAttribute("stroke-width",b.strokeWidth),this.elSeries.add(I),I.attr("clip-path",`url(#forecastMask${f.globals.cuid})`),M.attr("clip-path",`url(#nonForecastMask${f.globals.cuid})`)}}}}_iterateOverDataPoints({type:e,series:n,iterations:i,realIndex:o,translationsIndex:r,i:a,x:s,y:l,pX:c,pY:u,pathsFrom:d,linePaths:f,areaPaths:h,seriesIndex:p,lineYPosition:g,xArrj:m,yArrj:v,y2Arrj:b,isRangeStart:y,seriesRangeEnd:w}){var x,$;const S=this.w,_=new Be(this.w),P=this.yRatio;let{prevY:T,linePath:O,areaPath:M,pathFromLine:I,pathFromArea:k}=d;const E=Ee.isNumber(S.globals.minYArr[o])?S.globals.minYArr[o]:S.globals.minY;i||(i=S.globals.dataPoints>1?S.globals.dataPoints-1:S.globals.dataPoints);const R=(j,U)=>U-j/P[r]+(this.isReversed?j/P[r]:0)*2;let D=l;const F=S.config.chart.stacked&&!S.globals.comboCharts||S.config.chart.stacked&&S.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((x=this.w.config.series[o])==null?void 0:x.type)==="bar"||(($=this.w.config.series[o])==null?void 0:$.type)==="column");let N=S.config.stroke.curve;Array.isArray(N)&&(Array.isArray(p)?N=N[p[a]]:N=N[a]);let B=0,z;const W=this.pointsChart?this._scatterJitterPx(o):null;if(N==="straight"&&!this.pointsChart){const j=this._fastStraightPath({type:e,series:n,i:a,realIndex:o,translationsIndex:r,iterations:i,x:s,y:l,pX:c,pY:u,pathsFrom:d,linePaths:f,areaPaths:h,xArrj:m,yArrj:v,y2Arrj:b,stackSeries:F});if(j)return j}for(let j=0;j"u"||n[a][j+1]===null;if(S.axisFlags.isXNumeric){let Q=S.seriesData.seriesX[o][j+1];typeof S.seriesData.seriesX[o][j+1]>"u"&&(Q=S.seriesData.seriesX[o][i-1]),s=(Q-S.globals.minX)/this.xRatio}else s=s+this.xDivision;if(F)if(a>0&&S.globals.collapsedSeries.length{var X;for(let K=ee;K>=0;K--){const te=(X=p==null?void 0:p[K])!=null?X:K;if(S.globals.collapsedSeriesIndices.indexOf(te)===-1&&S.globals.ancillaryCollapsedSeriesIndices.indexOf(te)===-1)return K}return-1})(a-1)<0)g=this.zeroY;else{const ee=this.stackTopAt(o,j+1);g=ee===void 0?this.zeroY:ee}else g=this.zeroY;else g=this.zeroY;U?l=R(E,g):(l=R(n[a][j+1],g),e==="rangeArea"&&(D=R(w[a][j+1],g)));let V=s,q=l;if(W){const Q=o*100003+(j+1);W.x&&(V=s+(rw(Q*7919+13)-.5)*2*W.x),W.y&&(q=l+(rw(Q*6271+97)-.5)*2*W.y)}m.push(n[a][j+1]===null?null:V),U&&(S.config.stroke.curve==="smooth"||S.config.stroke.curve==="monotoneCubic")?(v.push(null),b.push(null)):(v.push(q),b.push(D));const Y=this.lineHelpers.calculatePoints({series:n,x:V,y:q,realIndex:o,i:a,j,prevY:T}),J=this._createPaths({type:e,series:n,i:a,j,x:s,y:l,y2:D,xArrj:m,yArrj:v,y2Arrj:b,pX:c,pY:u,pathState:B,segmentStartX:z,linePath:O,areaPath:M,linePaths:f,areaPaths:h,curve:N,isRangeStart:y});h=J.areaPaths,f=J.linePaths,c=J.pX,u=J.pY,B=J.pathState,z=J.segmentStartX,M=J.areaPath,O=J.linePath,this.appendPathFrom&&!S.globals.hasNullValues&&!(N==="monotoneCubic"&&e==="rangeArea")&&(I+=_.line(s,this.areaBottomY),k+=_.line(s,this.areaBottomY)),this.handleNullDataPoints(n,Y,a,j,o),this._handleMarkersAndLabels({type:e,pointsPos:Y,i:a,j,realIndex:o,isRangeStart:y})}return{yArrj:v,xArrj:m,pathFromArea:k,areaPaths:h,pathFromLine:I,linePaths:f,linePath:O,areaPath:M}}_handleMarkersAndLabels({type:e,pointsPos:n,isRangeStart:i,i:o,j:r,realIndex:a}){const s=this.w,l=new Cc(this.w,this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:a,pointsPos:n,zRatio:this.zRatio,elParent:this.elPointsMain});else{!(!s.globals.dataChanged&&!s.globals.resized&&!s.globals.markers.batched)&&s.seriesData.series[o].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");const d=this.markers.plotChartMarkers({pointsPos:n,seriesIndex:a,j:r+1});d!==null&&d!==this._elLastPointsWrap&&(this.elPointsMain.add(d),this._elLastPointsWrap=d)}const c=l.drawDataLabel({type:e,isRangeStart:i,pos:n,i:a,j:r+1});c!==null&&this.elDataLabelsWrap.add(c)}_scatterJitterPx(e){var n;const i=this.w,o=(n=i.config.plotOptions.scatter)==null?void 0:n.jitter;if(!o||!o.enabled||!o.x&&!o.y)return null;const r=i.axisFlags.isXNumeric&&this.xRatio?1/this.xRatio:this.xDivision,a=this.yRatio.length>1?e:0,s=this.yRatio[a]?1/this.yRatio[a]:0;return{x:(o.x||0)*r,y:(o.y||0)*s}}_fastStraightPath({type:e,series:n,i,realIndex:o,translationsIndex:r,iterations:a,x:s,y:l,pX:c,pY:u,pathsFrom:d,linePaths:f,areaPaths:h,xArrj:p,yArrj:g,y2Arrj:m,stackSeries:v}){const b=this.w;if(e!=="line"&&e!=="area"||b.globals.comboCharts||v||b.config.dataLabels.enabled||b.config.markers.discrete.length||b.globals.markers.size[o]>0)return null;const y=n[i],w=y.length;if(!a||w<2||w-1!==a)return null;for(let K=0;K<=a;K++){const te=y[K];if(te===null||typeof te>"u")return null}const x=b.axisFlags.isXNumeric,$=x?b.seriesData.seriesX[o]:null;if(x&&(!$||$.length"u"&&(b.globals.pointsArray[o]=[]);const U=b.globals.pointsArray[o],V=$?($[0]-M)/O+k:this.categoryAxisCorrection+k;U.push([V,d.prevY+E]);const q=z?new Array(a+1):[];z&&(q[0]="M "+c+" "+u);const Y=z&&R?new Array(a):null;let J=s,Q=c,G=u;for(let K=0;KI.map((E,R)=>[E,k[R]]).filter(E=>E[1]!==null),O=I=>{const k=[];let E=0;return I.forEach(R=>{R!==null?E++:E>0&&(k.push(E),E=0)}),E>0&&k.push(E),k},M=(I,k)=>{const E=O(I),R=[];for(let D=0,F=0;D1?aw.points(E):E;let D=[];S&&(_?b=E:D=b.reverse());let F=0,N=0;if(M(k,R).forEach(B=>{F++;const z=zN(B),W=N;N+=B.length;const j=N-1;_?g=x.move(E[W][0],E[W][1])+z:S?g=x.move(D[W][0],D[W][1])+x.line(E[W][0],E[W][1])+z+x.line(D[j][0],D[j][1]):(g=x.move(E[W][0],E[W][1])+z,m=g+x.line(E[j][0],$)+x.line(E[W][0],$)+"z",b.push(m)),v.push(g)}),S&&F>1&&!_){const B=v.slice(F).reverse();v.splice(F),B.forEach(z=>v.push(z))}h=0;break}}break}case"smooth":{const P=(r-d)*.35;if(n[i][o]===null)h=0;else switch(h){case 0:if(p=d,_?g=x.move(d,u[o])+x.line(d,f):g=x.move(d,f),m=x.move(d,f),n[i][o+1]===null||typeof n[i][o+1]>"u"){v.push(g),b.push(m);break}if(h=1,o=n[i].length-2&&(_&&(g+=x.curve(r,a,r,a,r,c)+x.move(r,c)),m+=x.curve(r,a,r,a,r,$)+x.line(p,$)+"z",v.push(g),b.push(m),h=-1)}break}d=r,f=a;break}default:{const P=(T,O,M)=>{let I="";switch(T){case"stepline":I=x.line(O,null,"H")+x.line(null,M,"V");break;case"linestep":I=x.line(null,M,"V")+x.line(O,null,"H");break;case"straight":I=x.line(O,M);break}return I};if(n[i][o]===null)h=0;else switch(h){case 0:if(p=d,_?g=x.move(d,u[o])+x.line(d,f):g=x.move(d,f),m=x.move(d,f),n[i][o+1]===null||typeof n[i][o+1]>"u"){v.push(g),b.push(m);break}if(h=1,o=n[i].length-2&&(_&&(g+=x.line(r,c)),m+=x.line(r,$)+x.line(p,$)+"z",v.push(g),b.push(m),h=-1)}break}d=r,f=a;break}}return{linePaths:v,areaPaths:b,pX:d,pY:f,pathState:h,segmentStartX:p,linePath:g,areaPath:m}}handleNullDataPoints(e,n,i,o,r){const a=this.w;if(e[i][o]===null&&a.config.markers.showNullDataPoints||e[i].length===1){let s=this.strokeWidth-a.config.markers.strokeWidth/2;s>0||(s=0);const l=this.markers.plotChartMarkers({pointsPos:n,seriesIndex:r,j:o+1,pSize:s,alwaysDrawMarker:!0});l!==null&&this.elPointsMain.add(l)}}}function WN(t,e){const{lines:n,lineHeight:i,anchor:o,elbow:r,labelX:a,labelY:s,side:l,connector:c,style:u,foreColor:d}=e,f=new Be(t),h=f.group({class:e.groupClass||"apexcharts-outer-label-group"});if(c.show){const b=`M ${o.x} ${o.y} L ${r.x} ${r.y} L ${a} ${s}`,y=f.drawPath({d:b,stroke:c.color,strokeWidth:c.width,fill:"none",strokeLinecap:"round"});y.node.classList.add(e.connectorClass||"apexcharts-outer-label-connector"),h.add(y)}const p=l==="right"?a+4:a-4,g=n.length,m=s-(g-1)*i/2,v=f.drawText({x:p,y:m,text:g===1?n[0]:n,textAnchor:l==="right"?"start":"end",fontSize:u.fontSize,fontFamily:u.fontFamily,fontWeight:u.fontWeight,foreColor:d,dominantBaseline:"central",cssClass:e.textClass||"apexcharts-outer-label"});if(g>1){const b=v.node.getElementsByTagName("tspan");for(let y=0;y{if(s==null||s==="")return;const l=`${s}`,c=i.getTextRects(l,o,n.fontFamily,"").width;a=Math.max(a,c>0?c:l.length*r*.58)}),a}function jN(t,e,n,i){const o=t.slice().sort((s,l)=>s.idealY-l.idealY);o.forEach(s=>{s.labelY=s.idealY});for(let s=1;s0)for(let s=o.length-1;s>=0;s--)o[s].labelY-=a,s{if(a===null||typeof a>"u"||a==="")return;const s=o.getTextRects(`${a}`,n||"12px",i,"");r=Math.max(r,s.width)}),r}drawExternalLabel(e){return WN(this.w,vt(Ye({},e),{groupClass:"apexcharts-pie-name-label-group",textClass:"apexcharts-pie-name-label",connectorClass:"apexcharts-pie-label-connector"}))}}const sM=Math.PI/180,lw=180/Math.PI;function h$(t,e,n,i){return{x:t+n*Math.cos((i-90)*sM),y:e+n*Math.sin((i-90)*sM)}}const tn=t=>`${t.x} ${t.y}`;function cw({cx:t,cy:e,rIn:n,rOut:i,a0:o,a1:r,r:a,spanDeg:s}){const l=(P,T)=>h$(t,e,P,T),c=a/i*lw,u=a/n*lw,d=l(i,o+c),f=l(i,r-c),h=s-2*c>180?1:0,p=l(i,r),g=l(i-a,r),m=l(i,o),v=l(i-a,o),b=l(n,r-u),y=l(n,o+u),w=s-2*u>180?1:0,x=l(n,r),$=l(n+a,r),S=l(n,o),_=l(n+a,o);return["M",tn(d),"A",i,i,0,h,1,tn(f),"Q",tn(p),tn(g),"L",tn($),"Q",tn(x),tn(b),"A",n,n,0,w,0,tn(y),"Q",tn(S),tn(_),"L",tn(v),"Q",tn(m),tn(d),"Z"].join(" ")}function uCe({cx:t,cy:e,rOut:n,a0:i,a1:o,r,spanDeg:a}){const s=(m,v)=>h$(t,e,m,v),l=r/n*lw,c=s(n,i+l),u=s(n,o-l),d=a-2*l>180?1:0,f=s(n,o),h=s(n-r,o),p=s(n,i),g=s(n-r,i);return["M",tn(c),"A",n,n,0,d,1,tn(u),"Q",tn(f),tn(h),"L",`${t} ${e}`,"L",tn(g),"Q",tn(p),tn(c),"Z"].join(" ")}function VN({cx:t,cy:e,rIn:n,rOut:i,a0:o,a1:r,spanDeg:a}){const s=(h,p)=>h$(t,e,h,p),l=a>180?1:0,c=s(i,o),u=s(i,r),d=s(n,r),f=s(n,o);return["M",tn(c),"A",i,i,0,l,1,tn(u),"L",tn(d),"A",n,n,0,l,0,tn(f),"Z"].join(" ")}const dCe="transform 320ms cubic-bezier(0.25, 0.8, 0.3, 1)",fCe="opacity 180ms ease-out";class fp{constructor(e,n){this.ctx=n,this.w=e,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels,this.lineColorArr=e.globals.stroke.colors!==void 0?e.globals.stroke.colors:e.globals.colors,this.defaultSize=Math.min(e.layout.gridWidth,e.layout.gridHeight),this.centerY=e.layout.gridHeight/2,this.centerX=e.layout.gridWidth/2,e.config.chart.type==="radialBar"?this.fullAngle=360:this.fullAngle=Math.abs(e.config.plotOptions.pie.endAngle-e.config.plotOptions.pie.startAngle),this.initialAngle=e.config.plotOptions.pie.startAngle%this.fullAngle,e.globals.radialSize=this.defaultSize/2.05-e.config.stroke.width-(e.config.chart.sparkline.enabled?0:e.config.chart.dropShadow.blur),this.externalCfg=e.config.plotOptions.pie.dataLabels.external;const i=e.config.dataLabels.style;this.externalLabelStyle={fontSize:this.externalCfg.fontSize||i.fontSize,fontFamily:this.externalCfg.fontFamily||i.fontFamily,fontWeight:this.externalCfg.fontWeight||i.fontWeight},this.externalLabels=[],this.externalLabelMaxLines=1,this.externalLabelLineH=parseFloat(this.externalLabelStyle.fontSize)||12,e.globals.pieExternalLabelMarginY=0,this.showExternalLabels=this.externalCfg.show&&this.chartType!=="polarArea",this.showExternalLabels&&!e.globals.noData&&this.reserveExternalLabelSpace(),this.donutSize=e.globals.radialSize*parseInt(e.config.plotOptions.pie.donut.size,10)/100;const o=e.config.plotOptions.pie.customScale,r=e.layout.gridWidth/2,a=e.layout.gridHeight/2;this.translateX=r-r*o,this.translateY=a-a*o,this.dataLabelsGroup=new Be(this.w).group({class:"apexcharts-datalabels-group",transform:`translate(${this.translateX}, ${this.translateY}) scale(${o})`}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSliceSizes=[],this.sliceLabelGroups={},this.externalLabelGroups={},this.elHoverOutline=null,this.elHoverOutlinePath=null,this.hoverOutlineIndex=-1,this.prevSectorAngleArr=[]}getExternalLabelText(e){var n,i,o;const r=this.w,a=r.seriesData.seriesNames[e],s=this.externalCfg.formatter;return typeof s=="function"?s(a,{seriesIndex:e,percent:(i=(n=r.globals.seriesPercent)==null?void 0:n[e])==null?void 0:i[0],value:(o=r.globals.seriesTotals)==null?void 0:o[e],w:r}):a==null?"":`${a}`}getExternalLabelLines(e){const n=this.getExternalLabelText(e);return(Array.isArray(n)?n:`${n??""}`.split(` `)).map(o=>o==null?"":`${o}`)}reserveExternalLabelSpace(){const e=this.w,n=new dp(e),i=(e.seriesData.seriesNames||[]).map((f,h)=>this.getExternalLabelLines(h)),o=n.getMaxLabelWidth(i.flat(),{fontSize:this.externalLabelStyle.fontSize,fontFamily:this.externalLabelStyle.fontFamily});this.externalLabelMaxLines=i.reduce((f,h)=>Math.max(f,h.length),1),this.externalLabelLineH=Math.round((parseFloat(this.externalLabelStyle.fontSize)||12)*1.35);const r=this.externalCfg.connector,a=this.externalLabelMaxLines*this.externalLabelLineH,s=o+(r.length||0)+(r.gap||0)+12,l=a/2+(r.gap||0)+6,c=Math.min(e.globals.radialSize,e.layout.gridWidth/2-s,e.layout.gridHeight/2-l);e.globals.radialSize=Math.max(c,this.defaultSize*.15),e.globals.pieExternalLabelMarginY=l;const u=e.config.chart.height?String(e.config.chart.height):"",d=u!==""&&u!=="auto";this.centerY=d?e.layout.gridHeight/2:e.globals.radialSize+l}draw(e){var n;const i=this,o=this.w,r=new Be(this.w),a=r.group({class:"apexcharts-pie"});if(o.globals.noData)return a;let s=0;for(let p=0;p{this.maxY=Math.max(this.maxY,p)}),o.config.yaxis[0].max&&(this.maxY=o.config.yaxis[0].max),o.config.grid.position==="back"&&this.chartType==="polarArea"&&this.drawPolarElements(a);const u=o.globals.collapsedSeriesIndices||[];let d=1;if(this.chartType==="polarArea"){let p=0;for(let g=0;g-1?0:this.fullAngle/d,this.sliceSizes.push(o.globals.radialSize*e[p]/(this.maxY||1))):this.sliceSizes.push(o.globals.radialSize)}const f=((n=this.ctx.morphTypeChange)==null?void 0:n.isActive())===!0;if(o.globals.dataChanged&&!f)if(this.chartType==="polarArea"){const p=o.globals.previousPaths,g=o.globals.prevPolarAngles;if(Array.isArray(g)&&g.length===p.length)this.prevSectorAngleArr=g.slice();else for(let v=0;vo.globals.radialSize*Ee.negToZero(v)/(m||1))}else{let p=0;for(let m=0;m{h.add(p)}),c.attr({transform:`translate(${this.translateX}, ${this.translateY}) scale(${o.config.plotOptions.pie.customScale})`}),c.add(h),a.add(c),this.donutDataLabels.show){const p=this.initialAnim&&!o.globals.resized&&!o.globals.dataChanged&&this.animDur>0,g=this.renderInnerDataLabels(this.dataLabelsGroup,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:p?0:this.donutDataLabels.show});if(p){const m=this.dataLabelsGroup.node;m.style.transition="opacity 280ms ease-out",setTimeout(()=>{m.style.opacity="1"},this.animDur)}a.add(g)}return o.config.grid.position==="front"&&this.chartType==="polarArea"&&this.drawPolarElements(a),a}drawArcs(e,n){var i,o,r,a,s;const l=this.w,c=new uo(this.w),u=new Be(this.w),d=new go(this.w),f=u.group({class:"apexcharts-slices"});this.elHoverOutline=u.group({class:"apexcharts-pie-hover-outline"}),this.elHoverOutline.node.style.pointerEvents="none",this.elHoverOutline.node.style.opacity="0",l.config.chart.animations.enabled&&(this.elHoverOutline.node.style.transition=fCe),f.add(this.elHoverOutline);let h=this.initialAngle,p=this.initialAngle,g=this.initialAngle,m=this.initialAngle;this.strokeWidth=l.config.stroke.show?l.config.stroke.width:0;const v=((i=this.ctx.morphTypeChange)==null?void 0:i.isActive())===!0;for(let b=0;bD.animationCompleted(P)):D.animationCompleted(P)}else this.dynamicAnim&&l.globals.dataChanged?this.animatePaths(P,{size:this.sliceSizes[b],prevSize:S,endAngle:g,startAngle:h,prevStartAngle:p,prevEndAngle:m,animateStartingPos:!0,i:b,animBeginArr:this.animBeginArr,shouldSetPrevPaths:!0,dur:l.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(P,{size:this.sliceSizes[b],endAngle:g,startAngle:h,i:b,totalItems:e.length-1,animBeginArr:this.animBeginArr,dur:k});if(this.getExpandOffset()>0?P.node.addEventListener("mouseup",this.pieClicked.bind(this,b)):b===0&&uo.drilldownBlocksSliceOffset(l)&&((s=this.ctx.drilldown)==null||s.warnSliceOffsetDisabled()),typeof l.interact.selectedDataPoints[0]<"u"&&l.interact.selectedDataPoints[0].indexOf(b)>-1)if(this.initialAnim&&!l.globals.resized&&!l.globals.dataChanged&&this.animDur>0){const E=this,R=b;setTimeout(()=>E.pieClicked(R,{animate:!1}),this.animDur)}else this.pieClicked(b,{animate:!1});if(l.config.dataLabels.enabled){const E=T.x,R=T.y;let D=100*w/this.fullAngle+"%";if(w!==0&&l.config.plotOptions.pie.dataLabels.minAngleToShowLabelR!=="")){const R=Ee.polarToCartesian(this.centerX,this.centerY,l.globals.radialSize,O),D=Ee.polarToCartesian(this.centerX,this.centerY,l.globals.radialSize+(this.externalCfg.connector.gap||0),O),F=D.x>=this.centerX,N=F?D.x+(this.externalCfg.connector.length||0):D.x-(this.externalCfg.connector.length||0);this.externalLabels.push({i:b,lines:E,anchor:R,elbow:D,side:F?"right":"left",labelX:N+parseFloat(this.externalCfg.offsetX||0),idealY:D.y+parseFloat(this.externalCfg.offsetY||0),connectorColor:this.externalCfg.connector.color||l.globals.colors[b],foreColor:this.externalCfg.color||l.config.chart.foreColor})}}}if(this.showExternalLabels&&this.externalLabels.length){this.placeExternalLabels();const b=Ot.isBrowser()&&(v||this.dynamicAnim&&l.globals.dataChanged||this.initialAnim&&!l.globals.resized&&!l.globals.dataChanged);this.externalLabels.forEach(y=>{const w=new dp(l).drawExternalLabel({lines:y.lines,lineHeight:this.externalLabelLineH,anchor:y.anchor,elbow:y.elbow,labelX:y.labelX,labelY:y.labelY,side:y.side,connector:{show:this.externalCfg.connector.show,width:this.externalCfg.connector.width,color:y.connectorColor},style:this.externalLabelStyle,foreColor:y.foreColor});b&&(w.node.classList.add("apexcharts-element-hidden"),l.globals.delayedElements.push({el:w.node})),this.externalLabelGroups[y.i]=w.node,f.add(w)})}return f}placeExternalLabels(){const e=this.w,n=this.externalLabelMaxLines*this.externalLabelLineH+2,i=this.centerY+e.globals.radialSize+e.globals.pieExternalLabelMarginY;["left","right"].forEach(o=>{jN(this.externalLabels.filter(r=>r.side===o),n,i)})}addListeners(e,n,i){const o=new Be(this.w,this.ctx);e.node.addEventListener("mouseenter",o.pathMouseEnter.bind(o,e)),e.node.addEventListener("mouseleave",o.pathMouseLeave.bind(o,e)),e.node.addEventListener("mouseleave",this.revertDataLabelsInner.bind(this)),typeof i=="number"&&(e.node.addEventListener("mouseenter",this.showHoverOutline.bind(this,i)),e.node.addEventListener("mouseleave",this.hideHoverOutline.bind(this))),e.node.addEventListener("mousedown",o.pathMouseDown.bind(o,e)),this.donutDataLabels.total.showAlways||(e.node.addEventListener("mouseenter",this.printDataLabelsInner.bind(this,e.node,n)),e.node.addEventListener("mousedown",this.printDataLabelsInner.bind(this,e.node,n)))}animatePaths(e,n){const i=this.w,o=this;let r=n.endAnglethis.fullAngle?n.endAngle=n.endAngle-(r+l):r+l{f=p+(o-p)*m,a.animateStartingPos&&(f=r+(o-r)*m,h=n-r+(i-(n-r))*m),d=s.getPiePath({me:s,startAngle:h,angle:f,size:g?a.prevSize+(u-a.prevSize)*m:u}),e.node.setAttribute("data:pathOrig",d),e.attr({d})}):(d=s.getPiePath({me:s,startAngle:h,angle:o,size:u}),a.isTrack||(l.globals.animationEnded=!0),e.node.setAttribute("data:pathOrig",d),e.attr({d,"stroke-width":s.strokeWidth}))}pieClicked(e,n){const i=this.w,o=this,r=!(n&&n.animate===!1),a=i.dom.Paper.findOne(`.apexcharts-${o.chartType.toLowerCase()}-slice-${e}`);if(!a)return;if(a.attr("data:pieClicked")==="true"){a.attr({"data:pieClicked":"false"}),this.revertDataLabelsInner(),this.offsetSlice(e,0,r);return}const s=i.dom.baseEl.getElementsByClassName("apexcharts-pie-area");Array.prototype.forEach.call(s,l=>{const c=l.getAttribute("data:pieClicked")==="true";l.setAttribute("data:pieClicked","false"),c&&this.offsetSlice(parseInt(l.getAttribute("j"),10),0,r)}),i.interact.capturedDataPointIndex=e,a.attr("data:pieClicked","true"),this.offsetSlice(e,this.getExpandOffset(),r)}getExpandOffset(){const e=this.w.config.plotOptions.pie;if(!e.expandOnClick||this.chartType==="polarArea"||uo.drilldownBlocksSliceOffset(this.w))return 0;const n=Number(e.expandOffset);return Number.isFinite(n)&&n>0?n:0}getSliceMovers(e){const n=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);return[n?n.node:null,this.sliceLabelGroups[e],this.externalLabelGroups[e],this.hoverOutlineIndex===e&&this.elHoverOutlinePath?this.elHoverOutlinePath.node:null].filter(Boolean)}offsetSlice(e,n,i=!0){const o=this.w;if(!o.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`))return;const{dx:a,dy:s}=this.getSliceOffsetVector(e,n),l=`translate(${a} ${s})`,c=i&&o.config.chart.animations.enabled?dCe:"";this.getSliceMovers(e).forEach(u=>{u.style.transition=c,u.setAttribute("transform",l)})}getSliceOffsetVector(e,n){const i=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`),o=i?parseFloat(i.attr("data:angle")):NaN;if(!n||!Number.isFinite(o)||o>=this.fullAngle)return{dx:0,dy:0};const r=parseFloat(i.attr("data:startAngle")),a=Math.PI*(r+o/2-90)/180;return{dx:n*Math.cos(a),dy:n*Math.sin(a)}}showHoverOutline(e){const n=this.w;if(!uo.hoverOutlineOwnsHoverState(n)||!this.elHoverOutline)return;const i=this.getHoverOutlinePath(e);if(!i)return;const o=n.config.plotOptions.pie.hoverOutline,r=o.color||n.globals.colors[e];if(!this.elHoverOutlinePath){const l=new Be(n);this.elHoverOutlinePath=l.drawPath({d:i,fill:r,strokeWidth:0,classes:"apexcharts-pie-hover-outline-band"}),this.elHoverOutline.add(this.elHoverOutlinePath)}this.elHoverOutlinePath.attr({d:i,fill:r,"fill-opacity":o.opacity});const{dx:a,dy:s}=this.getSliceOffsetVector(e,this.isSliceOut(e)?this.getExpandOffset():0);this.elHoverOutlinePath.node.style.transition="",this.elHoverOutlinePath.node.setAttribute("transform",`translate(${a} ${s})`),this.hoverOutlineIndex=e,this.elHoverOutline.node.style.opacity="1"}hideHoverOutline(){this.elHoverOutline&&(this.elHoverOutline.node.style.opacity="0")}isSliceOut(e){const n=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);return!!n&&n.attr("data:pieClicked")==="true"}getHoverOutlinePath(e){const n=this.w,i=n.config.plotOptions.pie.hoverOutline,o=n.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);if(!o)return null;const r=parseFloat(o.attr("data:angle"));if(!Number.isFinite(r)||r<=0)return null;const a=this.sliceSizes[e],s=Number(i.size);if(!Number.isFinite(a)||!Number.isFinite(s)||s<=0)return null;const{startDeg:l,spanDeg:c}=this.getSliceExtent({me:this,startAngle:parseFloat(o.attr("data:startAngle")),angle:r,size:a});if(!(c>0))return null;const u=a+(this.strokeWidth||0)/2+(Number(i.gap)||0),d=u+s,f={cx:this.centerX,cy:this.centerY,rIn:u,rOut:d,a0:l,a1:l+c,spanDeg:c},h=Math.min(s/2,c*Math.PI/180/2*u);return h>.5?cw(vt(Ye({},f),{r:h})):VN(f)}getChangedPath(e,n,i){let o="";return this.dynamicAnim&&this.w.globals.dataChanged&&(o=this.getPiePath({me:this,startAngle:e,angle:n-e,size:typeof i=="number"?i:this.size})),o}getSliceExtent({me:e,startAngle:n,angle:i,size:o}){const r=this.w;let a=n,s=i+n;Math.ceil(s)>=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(s=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01);let l=s-a;const c=e.chartType==="pie"||e.chartType==="donut"||e.chartType==="polarArea",u=r.config.plotOptions.pie.spacing;if(c&&u>0&&l>0){const d=e.chartType==="donut"?(o+e.donutSize)/2:o,f=d>0?u/d*(180/Math.PI):0,h=Math.min(f/2,Math.max(0,l/2-.5));a+=h,l-=2*h}return s=a+l,Math.ceil(s)>this.fullAngle&&(s-=this.fullAngle),{startDeg:a,spanDeg:l,endDeg:s}}getPiePath({me:e,startAngle:n,angle:i,size:o}){let r;const a=this.w,s=new Be(this.w),{startDeg:l,spanDeg:c,endDeg:u}=this.getSliceExtent({me:e,startAngle:n,angle:i,size:o}),d=e.chartType==="pie"||e.chartType==="donut"||e.chartType==="polarArea",f=Math.PI*(l-90)/180,h=a.config.plotOptions.pie.borderRadius;if(h>0&&d){const S=this.getRoundedSlicePath({me:e,startDeg:l,spanDeg:c,size:o,borderRadius:h});if(S)return S}const p=Math.PI*(u-90)/180,g=e.centerX+o*Math.cos(f),m=e.centerY+o*Math.sin(f),v=e.centerX+o*Math.cos(p),b=e.centerY+o*Math.sin(p),y=Ee.polarToCartesian(e.centerX,e.centerY,e.donutSize,u),w=Ee.polarToCartesian(e.centerX,e.centerY,e.donutSize,l),x=c>180?1:0,$=["M",g,m,"A",o,o,0,x,1,v,b];return e.chartType==="donut"?r=[...$,"L",y.x,y.y,"A",e.donutSize,e.donutSize,0,x,0,w.x,w.y,"L",g,m,"z"].join(" "):e.chartType==="pie"||e.chartType==="polarArea"?r=[...$,"L",e.centerX,e.centerY,"L",g,m].join(" "):r=[...$].join(" "),s.roundPathCorners(r,this.strokeWidth*2)}getRoundedSlicePath({me:e,startDeg:n,spanDeg:i,size:o,borderRadius:r}){if(!(i>0))return null;const a=Math.PI/180,s=e.centerX,l=e.centerY,c=e.chartType==="donut",u=o,d=c?e.donutSize:0,f=i*a;let h=r;if(h=Math.min(h,f*u/2),c?(h=Math.min(h,f*d/2),h=Math.min(h,(u-d)/2)):h=Math.min(h,u/2),!(h>.5))return null;const p=n,g=n+i;return c?cw({cx:s,cy:l,rIn:d,rOut:u,a0:p,a1:g,r:h,spanDeg:i}):uCe({cx:s,cy:l,rOut:u,a0:p,a1:g,r:h,spanDeg:i})}drawPolarElements(e){const n=this.w,i=new vN(this.w),o=new Be(this.w),r=new dp(this.w),a=o.group(),s=o.group(),l=i.niceScale(0,Math.ceil(this.maxY),0),c=l.result.reverse(),u=l.result.length;this.maxY=l.niceMax;let d=n.globals.radialSize;const f=d/(u-1);for(let h=0;h1&&e.total.show&&(a=e.total.color);const s=r.dom.baseEl.querySelector(".apexcharts-datalabel-label"),l=r.dom.baseEl.querySelector(".apexcharts-datalabel-value"),c=e.value.formatter;i=c(i,r),!o&&typeof e.total.formatter=="function"&&(i=e.total.formatter(r));const u=n===e.total.label;if(n=this.donutDataLabels.total.label?e.name.formatter(n,u,r):"",s!==null&&(s.textContent=n),l!==null&&(l.textContent=i),s!==null){const d=s;d.style.fill=a}}printDataLabelsInner(e,n){const i=this.w,o=e.getAttribute("data:value"),r=i.seriesData.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];i.seriesData.series.length>1&&this.printInnerLabels(n,r,o,e);const a=i.dom.baseEl.querySelector(".apexcharts-datalabels-group");if(a!==null){const s=a;s.style.opacity="1"}}drawSpokes(e){const n=this.w,i=new Be(this.w),o=n.config.plotOptions.polarArea.spokes;if(o.strokeWidth===0)return;const r=[],a=360/n.seriesData.series.length;for(let s=0;s{const c=i.drawLine(s.x,s.y,this.centerX,this.centerY,Array.isArray(o.connectorColors)?o.connectorColors[l]:o.connectorColors);e.add(c)})}revertDataLabelsInner(){const e=this.w;if(this.donutDataLabels.show){const n=e.dom.Paper.findOne(".apexcharts-datalabels-group"),i=this.renderInnerDataLabels(n,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});e.dom.Paper.findOne(".apexcharts-radialbar, .apexcharts-pie").add(i)}}}const hCe=5;class pCe{constructor(e,n){this.ctx=n,this.w=e,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0,this.graphics=new Be(this.w),this.lineColorArr=e.globals.stroke.colors!==void 0?e.globals.stroke.colors:e.globals.colors,this.defaultSize=e.globals.svgHeight{const m=p.length===n.globals.dataPoints,v=this.graphics.group().attr({class:"apexcharts-series","data:longestSeries":m,seriesName:Ee.escapeString(n.seriesData.seriesNames[g]),rel:g+1,"data:realIndex":g});this.dataRadiusOfPercent[g]=[],this.dataRadius[g]=[],this.angleArr[g]=[],p.forEach((x,$)=>{const S=Math.abs(this.maxValue-this.minValue);x=x-this.minValue,this.isLog&&(x=this.coreUtils.getLogVal(this.logBase,x,0)),this.dataRadiusOfPercent[g][$]=x/S,this.dataRadius[g][$]=this.dataRadiusOfPercent[g][$]*this.size,this.angleArr[g][$]=$*this.disAngle}),d=this.getDataPointsPos(this.dataRadius[g],this.angleArr[g]);const b=this.createPaths(d,{x:0,y:0});f=this.graphics.group({class:"apexcharts-series-markers-wrap apexcharts-element-hidden"}),h=this.graphics.group({class:"apexcharts-datalabels","data:realIndex":g}),n.globals.delayedElements.push({el:f.node,index:g});const y={i:g,realIndex:g,animationDelay:g,initialSpeed:n.config.chart.animations.speed,dataChangeSpeed:n.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-radar",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:n.globals.stroke.colors[g],strokeLineCap:n.config.stroke.lineCap};let w=null;n.globals.previousPaths.length>0&&(w=this.getPreviousPath(g));for(let x=0;x{const _=new _v(this.w,this.ctx).getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:g,dataPointIndex:$});_.pSize||(_.pSize=hCe,_.pointFillColor="transparent",_.pointStrokeColor="transparent",_.pointStrokeWidth=0);const P=this.graphics.drawMarker(d[$].x,d[$].y,_);P.attr("rel",$),P.attr("j",$),P.attr("index",g),P.node.setAttribute("default-marker-size",_.pSize);const T=this.graphics.group({class:"apexcharts-series-markers"});T&&T.add(P),f.add(T),v.add(f);const O=n.config.dataLabels;if(O.enabled){const M=O.formatter(n.seriesData.series[g][$],{seriesIndex:g,dataPointIndex:$,w:n});r.plotDataLabelsText({x:d[$].x,y:d[$].y,text:M,textAnchor:"middle",i:g,j:g,seriesIndex:g,dataPointIndex:$,parent:h,offsetCorrection:!1,dataLabelsConfig:Ye({},O)})}v.add(h)}),o.push(v)}),this.drawPolygons({parent:u}),n.config.xaxis.labels.show){const p=this.drawXAxisTexts();u.add(p)}return o.forEach(p=>{u.add(p)}),u.add(this.yaxisLabels),u}drawPolygons(e){const n=this.w,{parent:i}=e,o=new dp(this.w),r=n.globals.yAxisScale[0].result.reverse(),a=r.length,s=[],l=this.size/(a-1);for(let d=0;d{const h=Ee.getPolygonPos(d,this.dataPointsLen);let p="";h.forEach((g,m)=>{if(f===0){const v=this.graphics.drawLine(g.x,g.y,0,0,Array.isArray(this.polygons.connectorColors)?this.polygons.connectorColors[m]:this.polygons.connectorColors);u.push(v)}m===0&&this.yaxisLabelsTextsPos.push({x:g.x,y:g.y}),p+=g.x+","+g.y+" "}),c.push(p)}),c.forEach((d,f)=>{const h=this.polygons.strokeColors,p=this.polygons.strokeWidth,g=this.graphics.drawPolygon(d,Array.isArray(h)?h[f]:h,Array.isArray(p)?p[f]:p,n.globals.radarPolygons.fill.colors[f]);i.add(g)}),u.forEach(d=>{i.add(d)}),n.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach((d,f)=>{const h=o.drawYAxisTexts(d.x,d.y,f,r[f]);this.yaxisLabels.add(h)})}drawXAxisTexts(){const e=this.w,n=e.config.xaxis.labels,i=this.graphics.group({class:"apexcharts-xaxis"}),o=Ee.getPolygonPos(this.size,this.dataPointsLen);return e.labelData.labels.forEach((r,a)=>{const s=e.config.xaxis.labels.formatter,l=new Cc(this.w,this.ctx);if(o[a]){const c=this.getTextPos(o[a],this.size),u=s(r,{seriesIndex:-1,dataPointIndex:a,w:e});l.plotDataLabelsText({x:c.newX,y:c.newY,text:u,textAnchor:c.textAnchor,i:a,j:a,parent:i,className:"apexcharts-xaxis-label",color:Array.isArray(n.style.colors)&&n.style.colors[a]?n.style.colors[a]:"#a8a8a8",dataLabelsConfig:Ye({textAnchor:c.textAnchor,dropShadow:{enabled:!1}},n),offsetCorrection:!1}).on("click",f=>{if(typeof e.config.chart.events.xAxisLabelClick=="function"){const h=Object.assign({},e,{labelIndex:a});e.config.chart.events.xAxisLabelClick(f,this.ctx,h)}})}}),i}createPaths(e,n){const i=[];let o=[];const r=[];let a=[];if(e.length){o=[this.graphics.move(n.x,n.y)],a=[this.graphics.move(n.x,n.y)];let s=this.graphics.move(e[0].x,e[0].y),l=this.graphics.move(e[0].x,e[0].y);e.forEach((c,u)=>{s+=this.graphics.line(c.x,c.y),l+=this.graphics.line(c.x,c.y),u===e.length-1&&(s+="Z",l+="Z")}),i.push(s),r.push(l)}return{linePathsFrom:o,linePathsTo:i,areaPathsFrom:a,areaPathsTo:r}}getTextPos(e,n){let o="middle",r=e.x,a=e.y;return Math.abs(e.x)>=10?e.x>0?(o="start",r+=10):e.x<0&&(o="end",r-=10):o="middle",Math.abs(e.y)>=n-10&&(e.y<0?a-=10:e.y>0&&(a+=10)),{textAnchor:o,newX:r,newY:a}}getPreviousPath(e){const n=this.w;let i=null;for(let o=0;o0&&parseInt(r.realIndex,10)===parseInt(String(e),10)&&typeof n.globals.previousPaths[o].paths[0]<"u"&&(i=n.globals.previousPaths[o].paths[0].d)}return i}getDataPointsPos(e,n,i=this.dataPointsLen){e=e||[],n=n||[];const o=[];for(let r=0;r0,h=f&&d.bandsStyle&&d.bandsStyle.hideTrackWhenPresent,p=d.shape==="needle";if(d.track.show&&!h){const b=this.drawTracks({size:c,centerX:l,centerY:s,colorArr:u,series:e});a.add(b)}if(f){const b=this.drawBands({size:c,centerX:l,centerY:s,series:e});a.add(b)}const g=this.drawArcs({size:c,centerX:l,centerY:s,colorArr:u,series:e,skipValueArc:p&&!((n=d.needle)!=null&&n.showValueArc)});if(d.ticks&&d.ticks.show){const b=this.drawTicks({size:c,centerX:l,centerY:s,series:e});if(this.initialAnim&&!i.globals.dataChanged&&!i.globals.resized&&Ot.isBrowser()&&i.globals.shouldAnimate){const w=b.node;w.style.opacity="0",w.style.transition="opacity 280ms ease-out";const x=i.config.chart.animations.speed||800;setTimeout(()=>{w.style.opacity="1"},x)}a.add(b)}if(p){const b=this.drawNeedle({size:c,centerX:l,centerY:s,series:e});a.add(b)}let m=360;i.config.plotOptions.radialBar.startAngle<0&&(m=this.totalAngle);const v=(360-m)/360;if(i.globals.radialSize=c-c*v,this.radialDataLabels.value.show){const b=Math.max(this.radialDataLabels.value.offsetY,this.radialDataLabels.name.offsetY);i.globals.radialSize+=b*v}return a.add(g.g),i.config.plotOptions.radialBar.hollow.position==="front"&&(g.g.add(g.elHollow),g.dataLabels&&g.g.add(g.dataLabels)),r.add(a),r}drawTracks(e){const n=this.w,i=new Be(this.w),o=i.group({class:"apexcharts-tracks"}),r=new uo(this.w),a=new go(this.w),s=this.getStrokeWidth(e);e.size=e.size-s/2;for(let l=0;l=360&&(h=360-Math.abs(this.startAngle)-.1);const p=i.drawPath({d:"",stroke:d,strokeWidth:s*parseInt(u.strokeWidth,10)/100,fill:"none",strokeOpacity:u.opacity,classes:"apexcharts-radialbar-area"});if(u.dropShadow.enabled){const g=u.dropShadow;r.dropShadow(p,g)}c.add(p),p.attr("id","apexcharts-radialbarTrack-"+l),this.animatePaths(p,{centerX:e.centerX,centerY:e.centerY,endAngle:h,startAngle:f,size:e.size,i:l,totalItems:2,animBeginArr:0,dur:0,isTrack:!0})}return o}drawArcs(e){var n;const i=this.w,o=new Be(this.w),r=new go(this.w),a=new uo(this.w),s=o.group(),l=this.getStrokeWidth(e);e.size=e.size-l/2;let c=i.config.plotOptions.radialBar.hollow.background;const u=e.size-l*e.series.length-this.margin*e.series.length-l*parseInt(i.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,d=u-i.config.plotOptions.radialBar.hollow.margin;i.config.plotOptions.radialBar.hollow.image!==void 0&&(c=this.drawHollowImage(e,s,u,c));const f=this.drawHollow({size:d,centerX:e.centerX,centerY:e.centerY,fill:c||"transparent"});if(i.config.plotOptions.radialBar.hollow.dropShadow.enabled){const v=i.config.plotOptions.radialBar.hollow.dropShadow;a.dropShadow(f,v)}let h=1;!this.radialDataLabels.total.show&&i.seriesData.series.length>1&&(h=0);let p=null;if(this.radialDataLabels.show){const v=i.dom.Paper.findOne(".apexcharts-datalabels-group");p=this.renderInnerDataLabels(v,this.radialDataLabels,{hollowSize:u,centerX:e.centerX,centerY:e.centerY,opacity:h})}i.config.plotOptions.radialBar.hollow.position==="back"&&(s.add(f),p&&s.add(p));let g=!1;i.config.plotOptions.radialBar.inverseOrder&&(g=!0);const m=((n=this.ctx.morphTypeChange)==null?void 0:n.isActive())===!0;for(let v=g?e.series.length-1:0;g?v>=0:v{const q=Math.min(Math.max(V,S),_);return Math.max(0,(q-S)/P)},O=T(Ee.negToZero(e.series[v]));let M=Math.round(this.totalAngle*O)+this.startAngle,I;i.globals.dataChanged&&(x=this.startAngle,I=Math.round(this.totalAngle*T(Ee.negToZero(i.globals.previousPaths[v])))+x),Math.abs(M)+Math.abs(w)>360&&(M=M-.01),Math.abs(I)+Math.abs(x)>360&&(I=I-.01);const R=M-w,D=Array.isArray(i.config.stroke.dashArray)?i.config.stroke.dashArray[v]:i.config.stroke.dashArray,F=m?this.ctx.morphTypeChange.getInitialPathFor(v,0):null,N=m?this.ctx.morphTypeChange.getFromType():null,B=!!F&&(N==="bar"||N==="funnel"||N==="pyramid"||N==="pie"||N==="donut"||N==="polarArea"),z=o.drawPath({d:F||"",stroke:B||e.skipValueArc?"transparent":y,strokeWidth:B||e.skipValueArc?0:l,fill:B?y:"none",fillOpacity:i.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+v,strokeDashArray:D}),W=w+R/2,j=Ee.polarToCartesian(e.centerX,e.centerY,e.size,W);if(Be.setAttrs(z.node,{"data:angle":R,"data:value":e.series[v],"data:cx":j.x,"data:cy":j.y}),i.config.chart.dropShadow.enabled){const V=i.config.chart.dropShadow;a.dropShadow(z,V,v)}if(a.setSelectionFilter(z,0,v),this.addListeners(z,this.radialDataLabels),b.add(z),z.attr({index:0,j:v}),this.barLabels.enabled){const V=Ee.polarToCartesian(e.centerX,e.centerY,e.size,w),q=this.barLabels.formatter(i.seriesData.seriesNames[v],{seriesIndex:v,w:i}),Y=["apexcharts-radialbar-label"];this.barLabels.onClick||Y.push("apexcharts-no-click");let J=this.barLabels.useSeriesColors?i.globals.colors[v]:i.config.chart.foreColor;J||(J=i.config.chart.foreColor);const Q=V.x+this.barLabels.offsetX,G=V.y+this.barLabels.offsetY,ee=o.drawText({x:Q,y:G,text:q,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:J,cssClass:Y.join(" ")});ee.on("click",this.onBarLabelClick),ee.attr({rel:v+1}),w!==0&&ee.attr({"transform-origin":`${Q} ${G}`,transform:`rotate(${w} 0 0)`}),b.add(ee)}let U=0;if(this.initialAnim&&!i.globals.resized&&!i.globals.dataChanged&&(U=i.config.chart.animations.speed),i.globals.dataChanged&&(U=i.config.chart.animations.dynamicAnimation.speed),this.animDur=U/(e.series.length*1.2)+this.animDur,this.animBeginArr.push(this.animDur),m&&F){const V=this.ctx.morphTypeChange.getSpeed(),q=this.getPiePath({me:this,startAngle:w,angle:R,size:e.size});if(B){const Y=this.ctx.morphTypeChange.buildRingSegmentPath(e.centerX,e.centerY,e.size,l,w,w+R);z.animate(V).plot(Y,"polygons").after(function(){this.attr({d:q,fill:"none",stroke:e.skipValueArc?"transparent":y,"stroke-width":e.skipValueArc?0:l})})}else z.animate(V).plot(q,"polygons").attr({"stroke-width":l})}else this.animatePaths(z,{centerX:e.centerX,centerY:e.centerY,endAngle:M,startAngle:w,prevEndAngle:I,prevStartAngle:x,size:e.size,i:v,totalItems:2,animBeginArr:this.animBeginArr,dur:U,shouldSetPrevPaths:!0})}return{g:s,elHollow:f,dataLabels:p}}_angleAtValue(e){const n=this.w.config.plotOptions.radialBar,i=typeof n.min=="number"?n.min:0,o=typeof n.max=="number"?n.max:100,r=o===i?i+1:o,s=(Math.max(i,Math.min(r,Number(e)))-i)/(r-i);return this.startAngle+s*(this.endAngle-this.startAngle)}_describeArc(e,n,i,o,r){const a=Ee.polarToCartesian(e,n,i,r),s=Ee.polarToCartesian(e,n,i,o),l=r-o,c=Math.abs(l)>180?1:0;return`M ${a.x} ${a.y} A ${i} ${i} 0 ${c} 0 ${s.x} ${s.y}`}drawBands(e){const n=this.w,i=new Be(this.w),o=n.config.plotOptions.radialBar,r=o.bands||[],a=i.group({class:"apexcharts-gauge-bands"}),s=this.getStrokeWidth(e),l=e.size-s/2-s-this.margin,c=s*parseInt(o.bandsStyle.strokeWidth,10)/100,u=typeof o.min=="number"?o.min:0,d=typeof o.max=="number"?o.max:100,f=d===u?0:(o.bandsStyle.gap||0)*((this.endAngle-this.startAngle)/(d-u));for(let h=0;h{var x,$,S;const _=this._angleAtValue(b),P=(x=y.length)!=null?x:8,T=y.placement==="inside"?f-P:f,O=y.placement==="inside"?f:f+P,M=Ee.polarToCartesian(e.centerX,e.centerY,T,_),I=Ee.polarToCartesian(e.centerX,e.centerY,O,_),k=s.drawLine(M.x,M.y,I.x,I.y,y.color||(w?"#666":"#999"),0,y.width||(w?2:1));if(u.add(k),w&&(($=c.labels)!=null&&$.show)){const E=(y.placement==="inside"?T:O)+(y.placement==="inside"?-1:1)*((S=c.labels.offset)!=null?S:6),R=Ee.polarToCartesian(e.centerX,e.centerY,E,_),D=typeof c.labels.formatter=="function"?c.labels.formatter(b):String(b),F=s.drawText({x:R.x,y:R.y,text:D,textAnchor:"middle",dominantBaseline:"middle",fontFamily:c.labels.fontFamily,fontSize:c.labels.fontSize,fontWeight:c.labels.fontWeight,foreColor:c.labels.color,cssClass:"apexcharts-gauge-tick-label"});u.add(F)}};for(let b=0;b0)for(let x=1;x<=m;x++){const $=(b+x/(m+1))/(g-1),S=h+$*(p-h);v(S,c.minor||{},!1)}}return u}drawNeedle(e){var n,i,o,r,a;const s=this.w,l=new Be(this.w),u=s.config.plotOptions.radialBar.needle||{},d=l.group({class:"apexcharts-gauge-needle"});if(!e.series||e.series.length===0)return d;const f=this.getStrokeWidth(e),h=e.size-f/2-f-this.margin,p=typeof u.length=="string"&&u.length.endsWith("%")?h*parseInt(u.length,10)/100:Number(u.length||h*.85),g=(n=u.baseWidth)!=null?n:4,m=(i=u.tipWidth)!=null?i:1,v=u.color||"#333",b=e.centerX,y=Number((o=u.offsetY)!=null?o:0),w=e.centerY+y,x=`M ${b+g/2} ${w} A ${g/2} ${g/2} 0 0 1 ${b-g/2} ${w} L ${b-m/2} ${w-p} L ${b+m/2} ${w-p} Z`,$=l.drawPath({d:x,stroke:v,strokeWidth:0,fill:v,classes:"apexcharts-gauge-needle-shape"});d.add($);const S=Number(e.series[0]),_=this._angleAtValue(S),P=this.initialAnim&&!s.globals.dataChanged&&!s.globals.resized,T=this.ctx,O=typeof T._lastNeedleAngle=="number"?T._lastNeedleAngle:this.startAngle;if(T._lastNeedleAngle=_,Ot.isBrowser()&&s.globals.shouldAnimate&&(P||s.globals.dataChanged)&&O!==_){const I=d.node;I.setAttribute("transform-origin",`${b} ${w}`),I.setAttribute("transform",`rotate(${O})`);const k=((r=u.animation)==null?void 0:r.duration)&&Number(u.animation.duration)||u.animationSpeed&&Number(u.animationSpeed)||((a=s.config.chart.animations.dynamicAnimation)==null?void 0:a.speed)||s.config.chart.animations.speed||800,E=1.70158,R=E+1,N=P?W=>1+R*Math.pow(W-1,3)+E*Math.pow(W-1,2):W=>1-Math.pow(1-W,3);s.globals.radialNeedleRAF!=null&&(We.cancelAnimationFrame(s.globals.radialNeedleRAF),s.globals.radialNeedleRAF=null);const B=performance.now(),z=W=>{if(this.w.globals.isDestroyed){s.globals.radialNeedleRAF=null;return}const j=Math.max(0,Math.min(1,(W-B)/k)),U=O+(_-O)*N(j);I.setAttribute("transform",`rotate(${U})`),j<1?s.globals.radialNeedleRAF=We.requestAnimationFrame(z):s.globals.radialNeedleRAF=null};s.globals.radialNeedleRAF=We.requestAnimationFrame(z)}else d.attr({"transform-origin":`${b} ${w}`,transform:`rotate(${_})`});return d}drawHollow(e){var n;const i=new Be(this.w),o=this.w.config.plotOptions.radialBar.hollow,r=i.drawCircle(e.size*2),a={class:"apexcharts-radialbar-hollow",cx:e.centerX,cy:e.centerY,r:e.size,fill:e.fill};return(o.stroke||o.strokeDasharray)&&(a.stroke=o.stroke||"transparent",a["stroke-width"]=(n=o.strokeWidth)!=null?n:1,o.strokeDasharray&&(a["stroke-dasharray"]=o.strokeDasharray)),r.attr(a),r}drawHollowImage(e,n,i,o){const r=this.w,a=new go(this.w),s=Ee.randomId(),l=r.config.plotOptions.radialBar.hollow.image;if(r.config.plotOptions.radialBar.hollow.imageClipped)a.clippedImgArea({width:i,height:i,image:l,patternID:`pattern${r.globals.cuid}${s}`}),o=`url(#pattern${r.globals.cuid}${s})`;else{const c=r.config.plotOptions.radialBar.hollow.imageWidth,u=r.config.plotOptions.radialBar.hollow.imageHeight;if(c===void 0&&u===void 0){const d=r.dom.Paper.image(l,function(f){this.move(e.centerX-f.width/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,e.centerY-f.height/2+r.config.plotOptions.radialBar.hollow.imageOffsetY)});n.add(d)}else{const d=r.dom.Paper.image(l,function(){this.move(e.centerX-c/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,e.centerY-u/2+r.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(c,u)});n.add(d)}}return o}getStrokeWidth(e){const n=this.w;return e.size*(100-parseInt(n.config.plotOptions.radialBar.hollow.size,10))/100/(e.series.length+1)-this.margin}onBarLabelClick(e){var n;const i=e.target,o=parseInt((n=i.getAttribute("rel"))!=null?n:"",10)-1,r=this.barLabels.onClick,a=this.w;r&&r(a.seriesData.seriesNames[o],{w:a,seriesIndex:o})}}class mCe extends Bn{draw(e,n){var i,o,r,a,s,l,c,u,d;const f=this.w,h=new Be(this.w);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=e,this.seriesRangeStart=f.rangeData.seriesRangeStart,this.seriesRangeEnd=f.rangeData.seriesRangeEnd,this.barHelpers.initVariables(e);const p=h.group({class:"apexcharts-rangebar-series apexcharts-plot-series"});for(let g=0;g0&&(this.visibleI=this.visibleI+1);let x=0;this.yRatio.length>1&&(this.yaxisIndex=f.globals.seriesYAxisReverseMap[b][0],x=b);const $=this.barHelpers.initialPositions(b),{y:S,zeroW:_,x:P,zeroH:T}=$;let O=(i=$.barWidth)!=null?i:0,M=(o=$.barHeight)!=null?o:0;const I=(r=$.yDivision)!=null?r:0,k=(a=$.xDivision)!=null?a:0;v=S,m=P;const E=h.group({class:"apexcharts-datalabels","data:realIndex":b}),R=h.group({class:"apexcharts-rangebar-goals-markers"});for(let D=0;D"u")break;if(this.isHorizontal){j=v+M*this.visibleI;const J=(I-M*V)/2;if((c=(l=f.config.series[g].data)==null?void 0:l[D])!=null&&c.x){const Q=this.detectOverlappingBars({i:g,j:D,barYPosition:j,srty:J,barHeight:M,yDivision:I,initPositions:$});M=Q.barHeight,j=Q.barYPosition}z=this.drawRangeBarPaths(Ye({indexes:{i:g,j:D,realIndex:b},barHeight:M,barYPosition:j,zeroW:_,yDivision:I,y1:N,y2:B},U)),O=z.barWidth}else{f.axisFlags.isXNumeric&&(m=(f.seriesData.seriesX[g][D]-f.globals.minX)/this.xRatio-O/2),W=m+O*this.visibleI;const J=(k-O*V)/2;if((d=(u=f.config.series[g].data)==null?void 0:u[D])!=null&&d.x){const Q=this.detectOverlappingBars({i:g,j:D,barXPosition:W,srtx:J,barWidth:O,xDivision:k,initPositions:$});O=Q.barWidth,W=Q.barXPosition}z=this.drawRangeColumnPaths(Ye({indexes:{i:g,j:D,realIndex:b,translationsIndex:x},barWidth:O,barXPosition:W,zeroH:T,xDivision:k},U)),M=z.barHeight}const q=this.barHelpers.drawGoalLine({barXPosition:z.barXPosition,barYPosition:j,goalX:z.goalX,goalY:z.goalY,barHeight:M,barWidth:O});q&&R.add(q),v=z.y,m=z.x;const Y=this.barHelpers.getPathFillColor(e,g,D,b);this.renderSeries({realIndex:b,pathFill:Y.color,lineFill:Y.useRangeColor?Y.color:f.globals.stroke.colors[b],j:D,i:g,x:m,y:v,y1:N,y2:B,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:F,elSeries:w,series:e,barHeight:M,barWidth:O,barXPosition:W,barYPosition:j,columnGroupIndex:y,elDataLabelsWrap:E,elGoalsMarkers:R,visibleSeries:this.visibleI,type:"rangebar"})}p.add(w)}return p}detectOverlappingBars({i:e,j:n,barYPosition:i,barXPosition:o,srty:r,srtx:a,barHeight:s,barWidth:l,yDivision:c,xDivision:u,initPositions:d}){var f,h,p,g;const m=this.w;let v=[];const b=(h=(f=m.globals.seriesRangeName)==null?void 0:f[e])==null?void 0:h[n],y=(g=(p=m.config.series[e].data)==null?void 0:p[n])==null?void 0:g.x,w=Array.isArray(y)?y.join(" "):y,x=m.labelData.labels.map(S=>Array.isArray(S)?S.join(" "):S).indexOf(w),$=m.rangeData.seriesRange[e].findIndex(S=>{var _;return S.x===w&&((_=S.overlaps)==null?void 0:_.size)>0});return this.isHorizontal?(m.config.plotOptions.bar.rangeBarGroupRows?i=r+c*x:i=r+s*this.visibleI+c*x,$>-1&&!m.config.plotOptions.bar.rangeBarOverlap&&(v=Array.from(m.rangeData.seriesRange[e][$].overlaps),v.indexOf(b)>-1&&(s=d.barHeight/v.length,i=s*this.visibleI+c*(100-parseInt(this.barOptions.barHeight,10))/100/2+s*(this.visibleI+v.indexOf(b))+c*x))):(x>-1&&!m.labelData.timescaleLabels.length&&(m.config.plotOptions.bar.rangeBarGroupRows?o=a+u*x:o=a+l*this.visibleI+u*x),$>-1&&!m.config.plotOptions.bar.rangeBarOverlap&&(v=Array.from(m.rangeData.seriesRange[e][$].overlaps),v.indexOf(b)>-1&&(l=d.barWidth/v.length,o=l*this.visibleI+u*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+v.indexOf(b))+u*x))),{barYPosition:i,barXPosition:o,barHeight:s,barWidth:l}}drawRangeColumnPaths({indexes:e,x:n,xDivision:i,barWidth:o,barXPosition:r,zeroH:a}){var s,l;const c=this.w,{i:u,j:d,realIndex:f,translationsIndex:h}=e,p=this.yRatio[h],g=this.getRangeValue(f,d);let m=Math.min(g.start,g.end),v=Math.max(g.start,g.end);const b=!(typeof((s=this.series[u])==null?void 0:s[d])>"u"||((l=this.series[u])==null?void 0:l[d])===null);b?(m=a-m/p,v=a-v/p):m=a;const y=Math.abs(v-m),w=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:o,y1:m,y2:v,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:f,i:f,j:d,w:c});if(b){const x=w.drawnBox,$=g.end>=g.start;this.recordColumnGeometry(f,d,{slotStart:x.x1,slotEnd:x.x2,levelStart:$?x.y1:x.y2,levelEnd:$?x.y2:x.y1,horizontal:!1})}if(!c.axisFlags.isXNumeric)n=n+i;else{const x=this.getBarXForNumericXAxis({x:n,j:d,realIndex:f,barWidth:o});n=x.x,r=x.barXPosition}return{pathTo:w.pathTo,pathFrom:w.pathFrom,barHeight:y,x:n,y:g.start<0&&g.end<0?m:v,goalY:this.barHelpers.getGoalValues("y",null,a,f,d,h),barXPosition:r}}preventBarOverflow(e){const n=this.w;return e<0&&(e=0),e>n.layout.gridWidth&&(e=n.layout.gridWidth),e}drawRangeBarPaths({indexes:e,y:n,y1:i,y2:o,yDivision:r,barHeight:a,barYPosition:s,zeroW:l}){const c=this.w,{realIndex:u,j:d}=e,f=this.preventBarOverflow(l+i/this.invertedYRatio),h=this.preventBarOverflow(l+o/this.invertedYRatio),p=this.getRangeValue(u,d),g=Math.abs(h-f),m=this.barHelpers.getBarpaths({barYPosition:s,barHeight:a,x1:f,x2:h,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:u,realIndex:u,j:d,w:c});if(p.start!=null&&p.end!=null){const v=m.drawnBox;this.recordColumnGeometry(u,d,{slotStart:v.y1,slotEnd:v.y2,levelStart:v.x1,levelEnd:v.x2,horizontal:!0})}return c.axisFlags.isXNumeric||(n=n+r),{pathTo:m.pathTo,pathFrom:m.pathFrom,barWidth:g,x:p.start<0&&p.end<0?f:h,goalX:this.barHelpers.getGoalValues("x",l,null,u,d,0),y:n}}recordColumnGeometry(e,n,i){const o=this.w.waterfallData&&this.w.waterfallData.geometry;o&&(!isFinite(i.slotStart)||!isFinite(i.levelEnd)||(o[e]||(o[e]=[]),o[e][n]=i))}getRangeValue(e,n){const i=this.w;return{start:i.rangeData.seriesRangeStart[e][n],end:i.rangeData.seriesRangeEnd[e][n]}}}function uw(t,e){let n=0;for(let r=0;r=s}function cM(t,e,n,i,o,r,a,s){if(a>=s){const l=i/s;let c=r;for(let u=0;ud&&(d=p),f++;else{if(cM(r,s,l,c,e,n,i,o),i>=o){const g=c/o;e+=g,i-=g}else{const g=c/i;n+=g,o-=g}l=0,c=0,u=1/0,d=-1/0}}return l>0&&cM(r,s,l,c,e,n,i,o),r}function bCe(t,e,n){const i=t.length,o=new Array(i);for(let s=0;s=m||b*2>=v)&&(b=0);let y=Math.max(0,s(h,r,m,v)||0);y>0&&v-b*2-y0),r=i.header||(()=>0);for(let a=0;ao&&o.id===e)}function zg(t,e,n,i,o,r=null,a={}){var s,l,c;const u=e&&typeof e=="object",d=u&&(l=(s=e.x)!=null?s:e.name)!=null?l:"",f=Number(u?(c=e.y)!=null?c:e.value:e),h={name:String(d),value:isNaN(f)?null:f,color:u&&e.color?e.color:void 0,_key:`${o}/${n}:${d}`};if(i&&!h.color&&(h.color=i[n%i.length]),a.keepDatum&&(h._datum=e),u&&Array.isArray(e.children)&&e.children.length)h.children=e.children.map((p,g)=>zg(t,p,g,null,h._key,r,a));else if(u&&e.drilldown!=null&&a.expandDrilldown!==!1){const p=r||new Set;if(!p.has(e.drilldown)){const g=wCe(t,e.drilldown);if(g&&Array.isArray(g.data)&&g.data.length){const m=new Set(p);m.add(e.drilldown);const v=Array.isArray(g.colors)?g.colors:null;h.children=g.data.map((b,y)=>zg(t,b,y,v,h._key,m,a))}}}return h}function SCe(t,e={}){const n=t.config.series,i=n&&n[0],o=i&&Array.isArray(i.data)?i.data:n;return Array.isArray(o)?o.map((r,a)=>zg(t,r,a,null,"",null,e)):[]}function CCe(t,e,n={}){const i=e||t.config.series;return Array.isArray(i)?i.map((o,r)=>{var a,s;const l=o&&Array.isArray(o.data)?o.data:[],c=`${r}:${(a=o==null?void 0:o.name)!=null?a:""}`;return{name:String((s=o==null?void 0:o.name)!=null?s:""),value:null,color:(o==null?void 0:o.color)||void 0,_key:c,_seriesIndex:r,children:l.map((d,f)=>zg(t,d,f,null,c,null,n))}}):[]}function p$(t){t.children&&t.children.length&&(t.children.forEach(e=>p$(e)),(t.value==null||isNaN(t.value))&&(t.value=t.children.reduce((e,n)=>e+Math.max(0,n.value||0),0))),(t.value==null||isNaN(t.value))&&(t.value=0)}function nd(t){if(typeof t!="string")return"";const e=t.indexOf("/");return e===-1?"":t.slice(e)}function $Ce(t){const e=[];let n=0;return t.forEach((i,o)=>{const r=[],a=(s,l,c)=>{s._parent=c,s._depth=l,s._si=o,s._leaf=!(s.children&&s.children.length),l>n&&(n=l),s._leaf?(s._di=r.length,r.push(s)):(s._di=-1,s.children.forEach(u=>a(u,l+1,s)))};a(i,0,null),e.push(r)}),{leaves:e,maxDepth:n}}function ACe(t){const e=t.globals.treemapRoots;if(e&&e.length)return{roots:e,maxDepth:t.globals.treemapMaxDepth||1,nested:!0};const n=CCe(t,t.config.series,{keepDatum:!0,expandDrilldown:!1});n.forEach(p$);const{maxDepth:i}=$Ce(n);return{roots:n,maxDepth:i,nested:!1}}const _Ce=t=>(t[2]-t[0])*(t[3]-t[1]);class PCe{constructor(e,n){this.ctx=n,this.w=e,this.strokeWidth=this.w.config.stroke.width,this.helpers=new HN(e,n),this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.labels=[],this.roots=[],this.drawn=[],this.nested=!1,this.showParents=!1,this.scale=null,this._levelCache=null,this._total=null,this._avgLabelSize=null,this._tooltipEl=null,this._tipOwned=!1,this._morphLeafIndex=0}draw(e){var n;const i=this.w,o=new Be(this.w,this.ctx),r=new go(this.w),a=o.group({class:"apexcharts-treemap"});if(i.globals.noData)return a;e.forEach(m=>{m.map(v=>Math.abs(v))}),this.negRange=this.helpers.checkColorRange(),i.config.series.forEach((m,v)=>{m.data.forEach(b=>{Array.isArray(this.labels[v])||(this.labels[v]=[]),this.labels[v].push(b.x)})});const s=ACe(i);this.nested=s.nested,this.roots=s.roots,this.scale=CN(i);const l=s.roots.length===1?s.roots[0].children||[]:s.roots;this.drawn=l;const c=i.config.plotOptions.treemap.parents;this.showParents=c.show===!0||c.show!==!1&&this.nested;const u=this._resolveFocus(l),d=u?[u]:l;xCe.generateNested(d,i.layout.gridWidth,i.layout.gridHeight,{padding:(m,v,b,y)=>this.showParents?this._levelPadding(v,b,y):0,header:(m,v,b,y)=>this.showParents?this._levelHeader(m,v,b,y):0});const f=(n=this.ctx)==null?void 0:n.morphTypeChange,h=!!f&&typeof f.isActive=="function"&&f.isActive()&&typeof f.getInitialPathAt=="function";this._morphLeafIndex=0;const p=this._leavesBySeries(d,i.config.series.length),g=this.showParents?this._parentsBySeries(d,i.config.series.length):[];return p.forEach((m,v)=>{var b;const y=o.group({class:"apexcharts-series apexcharts-treemap-series",seriesName:Ee.escapeString(i.seriesData.seriesNames[v]),rel:v+1,"data:realIndex":v});if(o.setupEventDelegation(y,".apexcharts-treemap-rect"),i.config.chart.dropShadow.enabled){const O=i.config.chart.dropShadow;new uo(this.w).dropShadow(a,O,v)}const w=o.group({class:"apexcharts-data-labels"}),x={xMin:1/0,yMin:1/0,xMax:-1/0,yMax:-1/0};this.showParents&&(g[v]||[]).forEach(O=>{this._drawParent(y,O,v)});const $=i.config.chart.animations,S=$.animateGradually,_=S&&S.enabled!==!1,P=new Array(m.length).fill(0);if(_){const O=m.length||1,M=Math.min(S.delay||0,$.speed*.5/O);m.map((k,E)=>({j:E,area:k.rect?_Ce(k.rect):0})).sort((k,E)=>E.area-k.area).forEach((k,E)=>{P[k.j]=E*M})}m.forEach((O,M)=>{const I=O.rect;if(!I)return;const k=O._di,E=I[0],R=I[1],D=I[2],F=I[3];x.xMin=Math.min(x.xMin,E),x.yMin=Math.min(x.yMin,R),x.xMax=Math.max(x.xMax,D),x.yMax=Math.max(x.yMax,F);const N=this._leafColor(v,k),B=N.color,z=r.fillPath({color:B,seriesNumber:v,dataPointIndex:k}),W=h?this._morphSourceForLeaf(O):null,j=W?o.drawPath({d:this._tilePath(E,R,D,F),fill:"#fff",stroke:i.config.plotOptions.treemap.useFillColorAsStroke?B:i.globals.stroke.colors[v],strokeWidth:this.strokeWidth,fillOpacity:1}):o.drawRect(E,R,D-E,F-R,i.config.plotOptions.treemap.borderRadius,"#fff",1,this.strokeWidth,i.config.plotOptions.treemap.useFillColorAsStroke?B:i.globals.stroke.colors[v]);j.attr({cx:E,cy:R,index:v,i:v,j:k,width:D-E,height:F-R,fill:z}),j.node.classList.add("apexcharts-treemap-rect"),j.node.setAttribute("data:key",nd(O._key));let U={x:E+(D-E)/2,y:R+(F-R)/2,width:0,height:0};const V={x:E,y:R,width:D-E,height:F-R};if(W)this._morphTile(j,W,this._tilePath(E,R,D,F),this.ctx.morphTypeChange.getSpeed(),v,k);else if(i.config.chart.animations.enabled&&!i.globals.dataChanged){let J=1;i.globals.resized||(J=i.config.chart.animations.speed),this.animateTreemap(j,U,V,J,P[M]||0)}if(i.globals.dataChanged){let J=1;this.dynamicAnim.enabled&&i.globals.shouldAnimate&&(J=this.dynamicAnim.speed,i.globals.previousPaths[v]&&i.globals.previousPaths[v][k]&&i.globals.previousPaths[v][k].rect&&(U=i.globals.previousPaths[v][k].rect),this.animateTreemap(j,U,V,J))}let q=this.getFontSize(I);i.config.plotOptions.treemap.dataLabels.format==="truncate"&&(q=parseInt(String(i.config.dataLabels.style.fontSize),10));let Y=null;if(i.config.dataLabels.enabled&&this._labelCanShow(q,D-E,F-R)){let J=i.config.dataLabels.formatter(this.labels[v][k],{value:i.seriesData.series[v][k],seriesIndex:v,dataPointIndex:k,w:i});i.config.plotOptions.treemap.dataLabels.format==="truncate"&&(J=this.truncateLabels(String(J),q,E,R,D,F)),i.seriesData.series[v][k]&&(Y=this.helpers.calculateDataLabels({text:J,x:(E+D)/2,y:(R+F)/2+this.strokeWidth/2+q/3,i:v,j:k,colorProps:N,fontSize:q,series:e})),i.config.dataLabels.enabled&&Y&&this.rotateToFitLabel(Y,q,J,E,R,D,F)}y.add(j),Y!==null&&y.add(Y)});const T=i.config.plotOptions.treemap.seriesTitle;if(!this.showParents&&i.config.series.length>1&&T&&T.show){const O=i.config.series[v].name||"";if(O&&x.xMin<1/0&&x.yMin<1/0){const{offsetX:M,offsetY:I,borderColor:k,borderWidth:E,borderRadius:R,style:D}=T,F=D.color||i.config.chart.foreColor,N={left:D.padding.left,right:D.padding.right,top:D.padding.top,bottom:D.padding.bottom},B=o.getTextRects(O,D.fontSize,D.fontFamily),z=B.width+N.left+N.right,W=B.height+N.top+N.bottom,j=x.xMin+(M||0),U=x.yMin+(I||0),V=o.drawRect(j,U,z,W,R,D.background,1,E,k),q=o.drawText({x:j+N.left,y:U+N.top+((b=B==null?void 0:B.height)!=null?b:0)*.75,text:O,fontSize:D.fontSize,fontFamily:D.fontFamily,fontWeight:D.fontWeight,foreColor:F,cssClass:D.cssClass||""});y.add(V),y.add(q)}}y.add(w),a.add(y)}),this._renderBreadcrumb(),a}_levelCfg(e){if(this._levelCache||(this._levelCache=[]),this._levelCache[e])return this._levelCache[e];const n=this.w.config.plotOptions.treemap,i=n.parents||{},o=(n.levels||[])[e]||{},r=vt(Ye(Ye({},i),o),{header:vt(Ye(Ye({},i.header||{}),o.header||{}),{style:Ye(Ye({},(i.header||{}).style||{}),(o.header||{}).style||{})}),hover:Ye(Ye({},i.hover||{}),o.hover||{})});return this._levelCache[e]=r,r}_levelPadding(e,n,i){const o=this._levelCfg(e);return Number(o.padding)||0}_levelHeader(e,n,i,o){const a=this._levelCfg(n).header||{};if(a.show===!1)return 0;const s=Number(a.height);if(!Number.isFinite(s)||s<=0)return 0;const l=Number(a.minWidth)||40;return i{if(r.children&&r.children.length)r.children.forEach(o);else{const a=r._si||0;i[a]&&i[a].push(r)}};return e.forEach(o),i}_parentsBySeries(e,n){const i=new Array(Math.max(1,n));for(let r=0;r{if(!r.children||!r.children.length)return;const a=r._si||0;i[a]&&i[a].push(r),r.children.forEach(o)};return e.forEach(o),i.forEach(r=>r.sort((a,s)=>(a.depth||0)-(s.depth||0))),i}_leafColor(e,n){const i=this.w;if(this.scale){const o=wN(i,e,n);if(o!=null){const r=this.scale.at(o);return{color:r,foreColor:NE(r),colorProps:{color:r,foreColor:NE(r),percent:0}}}}return this.helpers.getShadeColor(i.config.chart.type,e,n,this.negRange)}_parentChrome(e){const n=this.w,i=this._levelCfg(e),o=n.config.theme.mode==="dark",a=(i.header||{}).style||{},s=Math.min(e,3),l=o?255:0,c=`${l},${l},${l}`;return{fill:i.fill||`rgba(${c},${(o?.04:.03)+s*.02})`,fillOpacity:i.fillOpacity==null?1:i.fillOpacity,borderColor:i.borderColor||`rgba(${c},${o?.18:.14})`,borderWidth:i.borderWidth==null?1:i.borderWidth,borderRadius:i.borderRadius==null?n.config.plotOptions.treemap.borderRadius:i.borderRadius,headerBg:a.background||`rgba(${c},${o?.1:.07})`,headerColor:a.color||(o?"#e8e8e8":n.config.chart.foreColor),headerFontSize:a.fontSize||"12px",headerFontFamily:a.fontFamily||n.config.chart.fontFamily,headerFontWeight:a.fontWeight==null?600:a.fontWeight,hoverColor:i.hover&&i.hover.color||(o?"rgba(255,255,255,0.85)":"rgba(0,0,0,0.7)"),hoverWidth:i.hover&&i.hover.width||2,hoverShow:!(i.hover&&i.hover.show===!1)}}_drawParent(e,n,i){var o;const r=n.rect;if(!r)return;const a=this.w,s=new Be(this.w,this.ctx),l=n.depth||0,c=this._levelCfg(l),u=this._parentChrome(l),d=r[0],f=r[1],h=r[2]-r[0],p=r[3]-r[1];if(h<=0||p<=0)return;const g=s.group({class:"apexcharts-treemap-parent","data:depth":l,"data:name":Ee.escapeString(n.name)}),m=nd(n._key),v=this._morphKeyed()?this.ctx.morphTypeChange.getInitialPathForKey(m):null,b=v?s.drawPath({d:this._tilePath(d,f,d+h,f+p),fill:u.fill,stroke:u.borderColor,strokeWidth:u.borderWidth,fillOpacity:u.fillOpacity}):s.drawRect(d,f,h,p,u.borderRadius,u.fill,u.fillOpacity,u.borderWidth,u.borderColor);b.node.classList.add("apexcharts-treemap-parent-rect"),b.node.setAttribute("data:key",m),b.node.setAttribute("data:depth",String(l)),v&&this._morphTile(b,v,this._tilePath(d,f,d+h,f+p),this.ctx.morphTypeChange.getSpeed(),i,l),g.add(b);const y=n.headerHeight||0;let w="";if(y>0){const x=c.header||{},$=s.drawRect(d,f,h,y,0,u.headerBg,1,0,"transparent");$.node.classList.add("apexcharts-treemap-parent-header"),g.add($);let S=String((o=n.name)!=null?o:"");typeof x.formatter=="function"?S=String(x.formatter(n.name,{value:n.value,depth:l,seriesIndex:i,node:n,w:a})):x.showValue&&(S=`${S} ${this._formatValue(n.value)}`),w=S;const _=Number(x.offsetX)||0,P=x.align||"left",T=6,O=Math.max(0,h-T*2-Math.abs(_)),M=parseFloat(String(u.headerFontSize))||12,I=s.getTextBasedOnMaxWidth({text:S,maxWidth:O,fontSize:M});if(I){let k=d+T+_,E="start";P==="center"?(k=d+h/2+_,E="middle"):P==="right"&&(k=d+h-T+_,E="end");const R=s.drawText({x:k,y:f+y/2+M/3+(Number(x.offsetY)||0),text:I,textAnchor:E,fontSize:u.headerFontSize,fontFamily:u.headerFontFamily,fontWeight:u.headerFontWeight,foreColor:u.headerColor,cssClass:`apexcharts-treemap-parent-label ${x.style&&x.style.cssClass||""}`});R.node.setAttribute("pointer-events","none"),g.add(R)}this._attachParentEvents($.node,n,u,b),this._makeParentAccessible($.node,n,u,b,w)}this._attachParentEvents(b.node,n,u,b),g.node.setAttribute("role","group"),g.node.setAttribute("aria-label",this._parentLabel(n,w)),e.add(g)}_parentLabel(e,n){const i=this._drawnTotal(),o=i>0?(e._area/i*100).toFixed(1):"0",r=this._countLeaves(e);return`${n&&String(n).trim()?String(n).replace(/\s+/g," ").trim():`${e.name}, ${this._formatValue(e._area)}`}, ${r} ${r===1?"item":"items"}, ${o}% of total`}_makeParentAccessible(e,n,i,o,r){!e||!e.setAttribute||this._zoomEnabled()&&(e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",`${this._parentLabel(n,r)}. Zoom in`),e.setAttribute("aria-expanded","false"),!(!Ot.isBrowser()||!e.addEventListener)&&(e.addEventListener("focus",()=>{o.node.setAttribute("stroke",i.hoverColor),o.node.setAttribute("stroke-width",String(i.hoverWidth+1))}),e.addEventListener("blur",()=>{o.node.setAttribute("stroke",i.borderColor),o.node.setAttribute("stroke-width",String(i.borderWidth))}),e.addEventListener("keydown",a=>{a.key!=="Enter"&&a.key!==" "&&a.key!=="Spacebar"||(a.preventDefault(),this._zoomTo(n,!0))})))}_attachParentEvents(e,n,i,o){if(!Ot.isBrowser()||!e||!e.addEventListener)return;const r=this.w;i.hoverShow&&(e.addEventListener("mouseenter",()=>{o.node.setAttribute("stroke",i.hoverColor),o.node.setAttribute("stroke-width",String(i.hoverWidth))}),e.addEventListener("mouseleave",()=>{o.node.setAttribute("stroke",i.borderColor),o.node.setAttribute("stroke-width",String(i.borderWidth))})),r.config.tooltip.enabled&&(e.addEventListener("mouseenter",a=>this._showParentTooltip(a,n)),e.addEventListener("mousemove",a=>this._positionTooltip(a)),e.addEventListener("mouseleave",()=>this._hideParentTooltip())),this._zoomEnabled()&&(e.style.cursor="pointer",e.addEventListener("click",()=>this._zoomTo(n)))}_zoomEnabled(){const e=this.w,n=e.config.plotOptions.treemap.zoom;if(!n||!n.enabled||!this.showParents)return!1;const i=e.config.drilldown;return i&&i.enabled&&Array.isArray(i.series)&&i.series.length?(this._warnedZoomConflict||(this._warnedZoomConflict=!0,console.warn("ApexCharts treemap: `plotOptions.treemap.zoom` and the drilldown feature both navigate the hierarchy, so zoom is ignored here. Drop `drilldown.series` to zoom a nested treemap instead.")),!1):!0}_resolveFocus(e){const n=this.w.globals.treemapFocusKey;if(!n||!this._zoomEnabled())return null;let i=null;const o=r=>{if(!i){if(r._key===n){i=r;return}r.children&&r.children.forEach(o)}};return e.forEach(o),i&&i.children&&i.children.length?i:null}_zoomTo(e,n=!1){const i=this.w;if(!e||!e.children||!e.children.length)return;const o=i.globals.treemapFocusKey===e._key?null:e._key;i.globals.treemapFocusKey=o,this._hideParentTooltip();const r=this.ctx.update();!n||!r||typeof r.then!="function"||r.then(()=>{if(!Ot.isBrowser())return;const a=i.dom.baseEl.querySelector(".apexcharts-breadcrumb .apexcharts-breadcrumb-item");if(a&&a.focus){a.focus();return}const s=i.dom.baseEl.querySelector(".apexcharts-treemap-parent-header[tabindex]");s&&s.focus&&s.focus()})}_focusChain(){const e=[],n=new Set(this.drawn||[]);let i=this._resolveFocus(this.drawn||[]);for(;i&&(e.unshift(i),!n.has(i));)i=i._parent;return e}_breadcrumbCfg(){const e=this.w.config.plotOptions.treemap.zoom;return _N(this.w,e&&e.breadcrumb)}_renderBreadcrumb(){if(!Ot.isBrowser())return;const e=this.w;if(!e.dom.elWrap||(ON(e),!this._zoomEnabled()))return;const n=this._focusChain();if(!n.length)return;const i=N1e(e,{ariaLabel:"Treemap breadcrumb",config:this._breadcrumbCfg(),compact:!0,crumbs:[{label:"All",data:null}].concat(n.map(o=>({label:o.name,data:o}))),onNavigate:(o,r)=>{e.globals.treemapFocusKey=r.data?r.data._key:null,this._hideParentTooltip(),this.ctx.update()}});i&&(this._placeBreadcrumb(i),PN(e,i))}_placeBreadcrumb(e){var n,i;const o=this.w,r=o.layout.translateY||0,a=(i=(n=this.ctx)==null?void 0:n.dimensions)==null?void 0:i.dimHelpers,s=a?a.getTitleSubtitleCoords("title").height+a.getTitleSubtitleCoords("subtitle").height:0,l=e.getBoundingClientRect().height||AN;if(r-s>=l+1){e.style.top=`${r-l-1}px`;return}e.style.top=`${s}px`;const c=o.config.theme.mode==="dark";e.style.background=c?"rgba(20,24,30,0.82)":"rgba(255,255,255,0.86)",e.style.borderRadius="4px"}_showParentTooltip(e,n){const i=this.w,o=this._tip();if(!o)return;const r=this._drawnTotal(),a=n._parent?n._parent._area:r,s=r>0?(n._area/r*100).toFixed(1):"0.0",l=a>0?(n._area/a*100).toFixed(1):s,c=this.w.config.plotOptions.treemap.parents,u=c&&c.tooltip&&c.tooltip.formatter,d=this._countLeaves(n);let f;if(typeof u=="function")f=u({name:n.name,value:n._area,depth:n.depth||0,leafCount:d,percentOfParent:Number(l),percentOfTotal:Number(s),node:n,w:i});else{const h=this._parentChrome(n.depth||0).headerBg;f=`
${Ee.escapeString(n.name)}: ${this._formatValue(n._area)}
${d} items, ${l}% of parent, ${s}% of total
`}o.innerHTML=f,o.classList.add("apexcharts-active"),o.style.opacity="1",this._tipOwned=!0,this._positionTooltip(e)}_tip(){return this._tooltipEl||(this._tooltipEl=this.w.dom.baseEl.querySelector(".apexcharts-tooltip")),this._tooltipEl}_positionTooltip(e){const n=this._tip();if(!n||!this._tipOwned)return;const i=this.w.dom.elWrap.getBoundingClientRect(),o=n.offsetWidth,r=n.offsetHeight,a=12;let s=e.clientX-i.left+a;s+o>i.width&&(s=e.clientX-i.left-o-a),s=Math.max(0,Math.min(s,i.width-o));let l=e.clientY-i.top+a;l+r>i.height&&(l=e.clientY-i.top-r-a),l=Math.max(0,Math.min(l,i.height-r)),n.style.left=s+"px",n.style.top=l+"px"}_hideParentTooltip(){const e=this._tip();!e||!this._tipOwned||(this._tipOwned=!1,e.classList.remove("apexcharts-active"),e.style.opacity="0")}_drawnTotal(){return this._total==null&&(this._total=(this.drawn||[]).reduce((e,n)=>e+this._subtreeArea(n),0)),this._total||0}_subtreeArea(e){if(e._area!=null)return e._area;const n=e.children;if(n&&n.length){let o=0;for(let r=0;rn+this._countLeaves(i),0)}_formatValue(e){var n,i,o,r,a;const s=this.w,l=((i=(n=s.config.tooltip)==null?void 0:n.y)==null?void 0:i.formatter)||((a=(r=(o=s.config.yaxis)==null?void 0:o[0])==null?void 0:r.labels)==null?void 0:a.formatter);if(typeof l=="function")try{return String(l(e,{seriesIndex:0,dataPointIndex:0,w:s}))}catch{}return String(e)}_labelCanShow(e,n,i){if(!Number.isFinite(e)||e<=0)return!1;const o=this.w.config.plotOptions.treemap.dataLabels,r=o&&o.minFontSize!=null?Number(o.minFontSize):0;return e=e}_averageLabelSize(){if(this._avgLabelSize!=null)return this._avgLabelSize;function e(i){let o,r=0;if(Array.isArray(i[0]))for(o=0;oa-o&&c.width<=s-r){const u=l.rotateAroundCenter(e.node);e.node.setAttribute("transform",`rotate(-90 ${u.x} ${u.y}) translate(${c.height/3})`)}}truncateLabels(e,n,i,o,r,a){const s=new Be(this.w),c=s.getTextRects(e,String(n)).width+this.w.config.stroke.width+5>r-i&&a-o>r-i?a-o:r-i,u=s.getTextBasedOnMaxWidth({text:e,maxWidth:c,fontSize:n});return e.length!==u.length&&c/n<5?"":u}_morphKeyed(){var e;const n=(e=this.ctx)==null?void 0:e.morphTypeChange;return!!(n&&typeof n.hasKeyedMarks=="function"&&n.hasKeyedMarks()&&typeof n.getInitialPathForKey=="function")}_morphSourceForLeaf(e){var n;const i=(n=this.ctx)==null?void 0:n.morphTypeChange;if(!i||typeof i.getInitialPathAt!="function")return null;if(this._morphKeyed()){const o=i.getInitialPathForKey(nd(e._key));if(o)return o}return i.getInitialPathAt(this._morphLeafIndex++)}_tilePath(e,n,i,o){return`M ${e} ${n} L ${i} ${n} L ${i} ${o} L ${e} ${o} Z`}_morphTile(e,n,i,o,r,a){new Gs(this.w,this.ctx).morphSVG(e,r,a,"none",n,i,o,0)}animateTreemap(e,n,i,o,r=0){const a=new Gs(this.w);a.animateRect(e,n,i,o,()=>{a.animationCompleted(e)},r)}}const OCe=.05,TCe=.05,ECe=1/45;function uM(t,e,n,i){return{value:t,velocity:0,target:t,stiffness:e,damping:n}}function dM(t,e){if(e<=0)return hM(t);let n=e;for(;n>0;){const i=Math.min(n,ECe),o=-t.stiffness*(t.value-t.target)-t.damping*t.velocity;t.velocity+=o*i,t.value+=t.velocity*i,n-=i}return!!hM(t)&&(t.value=t.target,t.velocity=0,!0)}function fM(t,e){t.target=e}function hM(t){var e,n;const i=(e=t.restVelocity)!=null?e:OCe,o=(n=t.restDisplacement)!=null?n:TCe;return Math.abs(t.velocity)isFinite(i))||n[2]<=0||n[3]<=0?null:Object.freeze(vt(Ye({},t),{name:t.name||"anonymous",path:t.path.trim(),viewBox:n,fillRule:t.fillRule==="evenodd"?"evenodd":void 0}))}function RCe(t){return t&&DCe()[t]||null}const mM=Math.PI*(3-Math.sqrt(5));function E0(t){return 1-Math.pow(1-t,3)}function LCe(t){return e=>1+(t+1)*Math.pow(e-1,3)+t*Math.pow(e-1,2)}function FCe(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2}const NCe=800,BCe=.25,bh=0,vM=1,M0=2;function zCe(t,e){const[n,i]=MCe(t),o=NCe/Math.max(1,e);return[n*o*o,i*o]}class HCe{constructor(e,n){this.ctx=n,this.w=e,this._lastDotR=1,this._gridTrack=null,this._gridDenom=1,this._scatterAxis=null,this._specCache=new Map,this._markWarned=null}draw(e){const n=this.w,i=new Be(n,this.ctx),o=i.group({class:"apexcharts-unit"});if(n.globals.noData||!Array.isArray(e)||e.length===0)return o;const r=n.config.plotOptions.unit,a=r.layout==="packed"?"packed":r.layout==="columns"?"columns":r.layout==="grid"?"grid":r.layout==="scatter"?"scatter":r.layout==="arc"?"arc":r.layout==="custom"?"custom":"grouped",s=r.transition,l=s==="flow",c=s==="identity",u=r.unitValue>0?r.unitValue:1;let d=e.map(O=>{const M=Math.abs(Ee.parseNumber(O))/u;return M>0?Math.max(1,Math.round(M)):0});d=this._applyMaxUnits(d,r.maxUnits);const f=d.reduce((O,M)=>O+M,0),h=a==="packed"?this._layoutPacked(d,r):a==="columns"?this._layoutColumns(d,r):a==="grid"?this._layoutGrid(d,r):a==="scatter"?this._layoutScatter(r):a==="arc"?this._layoutArc(d,r):a==="custom"?this._layoutCustom(d,r):this._layoutGrouped(d,r),p=a==="grid"&&!!(r.grid&&r.grid.split);p&&this._drawGridTrack(o,i,r),a==="scatter"&&this._drawScatterAxes(o,i);const g=this._lastDotR,m=this._shouldAnimate(),v=this.ctx&&this.ctx.morphTypeChange,b=m&&!!v&&typeof v.isActive=="function"&&v.isActive()&&typeof v.getInitialCenterFor=="function",y=b&&typeof v.getInitialSlotFor=="function",w=b&&typeof v.usesPieceTakeover=="function"&&v.usesPieceTakeover(),x=m&&!b&&this.ctx?this.ctx._unitPrevDots:null,$=new Map,S=[],_=n.seriesData.unitData||[],P=this._bubbleStats(_,r,g);let T=0;if(h.forEach(O=>{const M=n.globals.colors[O.i]||n.globals.colors[0]||"#008FFB",I=i.group({class:"apexcharts-series",seriesName:Ee.escapeString(n.seriesData.seriesNames[O.i]||`series-${O.i+1}`),rel:O.i+1,"data:realIndex":O.i}),k=b&&!y?v.getInitialCenterFor(O.i):null,E=O.dots.length,R=_[O.i];if(O.dots.forEach((D,F)=>{const N=D.j!=null?D.j:F,B=R?R[N]:void 0,z=B&&typeof B=="object"&&B.fillColor?B.fillColor:M,W=D.r!=null?D.r:P?this._radiusForValue(this._unitValueOf(B),P):g,j=this._markSpecFor(r,B,O.i,W),U=this._drawDot(i,r,W,z,O.i,N,j);I.add(U);let V;if(c){const q=B&&typeof B=="object"?B.id!=null?B.id:B.name:void 0;V=q!=null?`id:${q}`:`g:${T}`}else l?V=String(T):D.slot!=null?V=`slot:${D.slot}`:V=`${O.i}:${N}`;if(T++,$.set(V,{x:D.x,y:D.y,fill:z,r:W,spec:j}),w)this._place(U.node,j,D.x,D.y),U.node.setAttribute("opacity","0"),U.node.setAttribute("data-piece-hidden","1");else if(m){const q=x&&x.get(V),Y=q||(y?v.getInitialSlotFor(O.i,N,E):k),J=r.gather&&r.gather.enter||"burst",Q=p||J==="fade"||J==="rise",G=Y?Y.x:Q?D.x:O.cx,ee=Y?Y.y:J==="rise"&&!p?D.y+14:Q?D.y:O.cy;U.node.style.opacity=Y?"1":"0",this._place(U.node,j,G,ee),S.push({node:U.node,spec:j,x:D.x,y:D.y,cx0:G,cy0:ee,key:V,r0:q&&q.r!=null?q.r:W,r1:W,fill0:q?q.fill:z,fill1:z,delay:0,isEnter:!Y})}else this._place(U.node,j,D.x,D.y)}),(a==="grouped"||a==="columns"||p)&&r.clusterLabels&&r.clusterLabels.show&&d[O.i]>0){const D=p?this._gridDenom:f;this._drawClusterLabel(I,O,d[O.i],D,r,M)}o.add(I)}),this._outerLabelsOn(r)&&this._drawOuterLabels(o,h,d,f,r,m&&!x),x){const O=this._collectExits(x,$,r);if(O.length){const M=i.group({class:"apexcharts-unit-exits"});o.add(M),this._runExits(M,O,r)}}return this.ctx&&(this.ctx._unitPrevDots=$),this.ctx&&(!m||b)&&(this.ctx._unitSprings=null),m&&S.length?this._runGather(S):n.globals.animationEnded=!0,o}_applyMaxUnits(e,n){const i=e.reduce((r,a)=>r+a,0);if(!n||n<=0||i<=n)return e;const o=n/i;return console.warn(`[ApexCharts] unit chart: ${i} dots exceeds maxUnits (${n}); counts were scaled down proportionally. Raise plotOptions.unit.maxUnits or use plotOptions.unit.unitValue to represent more units per dot.`),e.map(r=>r>0?Math.max(1,Math.round(r*o)):0)}_layoutCustom(e,n){const i=this.w,o=i.layout.gridWidth,r=i.layout.gridHeight,a=e.reduce((v,b)=>v+b,0),s=this._resolveLayoutProvider(n);if(!s)return console.warn("[ApexCharts] unit chart: layout 'custom' needs plotOptions.unit.positions (a function, or the name of a layout registered with ApexCharts.registerUnitLayout). Falling back to 'grouped'."),this._layoutGrouped(e,n);const l=this._outerLabelsOn(n)?this._outerLabelGutter(e,n):0;this._lastOuterGutter=l;const c={x:l,y:0,width:Math.max(1,o-l*2),height:r},u=Math.sqrt(c.width*c.height/Math.PI),d=this._resolveStep(n,u,a);this._lastDotR=this._dotRadiusFromStep(d,n);const f=this._lastDotR,h=this._layoutObjects(e,f);let p;try{p=s(h,c)}catch(v){return console.warn("[ApexCharts] unit chart: the layout provider threw; falling back to 'grouped'.",v),this._layoutGrouped(e,n)}if(!Array.isArray(p))return console.warn("[ApexCharts] unit chart: the layout provider must return an array of {id, x, y}; falling back to 'grouped'."),this._layoutGrouped(e,n);const g=new Map;p.forEach(v=>{!v||!isFinite(v.x)||!isFinite(v.y)||g.set(String(v.id),{x:v.x,y:v.y,r:typeof v.r=="number"&&v.r>0?v.r:void 0})});const m=e.map((v,b)=>({i:b,cx:o/2,cy:r/2,outerR:f,dots:[]}));return h.forEach(v=>{const b=g.get(v.id);b&&m[v.seriesIndex].dots.push({x:b.x,y:b.y,r:b.r,j:v.dataPointIndex})}),m.forEach(v=>{if(!v.dots.length)return;let b=0,y=0;v.dots.forEach(x=>{b+=x.x,y+=x.y}),v.cx=b/v.dots.length,v.cy=y/v.dots.length;let w=0;v.dots.forEach(x=>{w=Math.max(w,Math.hypot(x.x-v.cx,x.y-v.cy))}),v.outerR=w+f}),m}_layoutObjects(e,n){const i=this.w,o=i.seriesData.unitData||[],r=i.seriesData.seriesNames||[],a=[];let s=0;return e.forEach((l,c)=>{var u;const d=o[c];for(let f=0;f_).filter(S=>e[S]>0),l=Math.max(1,s.length),c=new Array(e.length).fill(-1);s.forEach((S,_)=>c[S]=_);const u=o/l,d=r-a,f=Math.max(1,...e),h=Math.min(u,d)*.08,p=Math.max(4,Math.min(u,d)/2-h),g=this._resolveStep(n,p,f);this._lastDotR=this._dotRadiusFromStep(g,n);const m=this._lastDotR,v=a+d/2,b=e.map(S=>g*Math.sqrt(Math.max(1,S))+m),y=S=>c[S]>=0?u*(c[S]+.5):o/2;let w=e.map((S,_)=>y(_));const x=s.map(S=>b[S]);let $=!1;for(let S=1;ST+2*O,0)+S*(l-1);let P;if(_<=o){let T=(o-_)/2;P=x.map(O=>{const M=T+O;return T+=2*O+S,M})}else if(l===1)P=[o/2];else{const T=x[0],O=o-x[l-1];P=x.map((M,I)=>T+(O-T)*I/(l-1))}w=e.map((T,O)=>c[O]>=0?P[c[O]]:o/2)}return e.map((S,_)=>({i:_,cx:w[_],cy:v,outerR:b[_],dots:this._spiral(w[_],v,S,g,0)}))}_layoutPacked(e,n){const i=this.w,o=i.layout.gridWidth,r=i.layout.gridHeight,a=6,s=Math.max(1,e.reduce((g,m)=>g+m,0)),l=Math.max(4,Math.min(o,r-a)/2-Math.min(o,r)*.06),c=this._resolveStep(n,l,s);this._lastDotR=this._dotRadiusFromStep(c,n);const u=o/2,d=a+(r-a)/2,f=e.map((g,m)=>m);n.sortByGroup!==!1&&f.sort((g,m)=>e[g]-e[m]);const h=e.map((g,m)=>({i:m,cx:u,cy:d,outerR:c*Math.sqrt(s)+this._lastDotR,dots:[]}));let p=0;return f.forEach(g=>{for(let m=0;mI+k,0)),s=n.arc||{},l=typeof s.startAngle=="number"?s.startAngle:-90,c=typeof s.endAngle=="number"?s.endAngle:90,u=l*Math.PI/180,d=c*Math.PI/180,f=d-u||Math.PI,h=Math.max(0,Math.min(.95,typeof s.innerRadiusRatio=="number"?s.innerRadiusRatio:.4)),p=I=>Math.sin(I),g=I=>-Math.cos(I),m=this._arcBounds(u,d),v=Math.min(o,r)*.04,b=Math.max(1e-6,m.maxX-m.minX),y=Math.max(1e-6,m.maxY-m.minY),w=Math.max(4,Math.min((o-2*v)/b,(r-2*v)/y)),x=w*h,$=o/2-(m.minX+m.maxX)/2*w,S=r/2-(m.minY+m.maxY)/2*w,_=this._arcAllocate(a,x,w,f,n);this._lastDotR=_.dotR;const P=[];for(let I=0;I<_.R;I++){const k=_.radii[I],E=_.seatsPerRow[I];for(let R=0;RI.a-k.a);const T=e.map((I,k)=>({i:k,cx:$,cy:S,outerR:w,dots:[]}));let O=0,M=0;return P.forEach((I,k)=>{for(;O=e[O];)O++,M=0;O>=e.length||(T[O].dots.push({x:I.x,y:I.y,slot:k}),M++)}),T}_arcBounds(e,n){const i=u=>Math.sin(u),o=u=>-Math.cos(u),r=Math.min(e,n),a=Math.max(e,n),s=[0,i(e),i(n)],l=[0,o(e),o(n)],c=Math.PI/2;for(let u=Math.ceil(r/c);u*c<=a;u++)s.push(i(u*c)),l.push(o(u*c));return{minX:Math.min(...s),maxX:Math.max(...s),minY:Math.min(...l),maxY:Math.max(...l)}}_arcAllocate(e,n,i,o,r){const a=r.spacing>0?r.spacing:1.05,s=Math.abs(o)||Math.PI,l=this._fixedRadius(r),c=f=>{f=Math.max(1,Math.round(f));const h=[];for(let x=0;xx+$,0)||1,g=h.map(x=>e*x/p),m=g.map(x=>Math.floor(x));let v=e-m.reduce((x,$)=>x+$,0);for(g.map((x,$)=>({idx:$,frac:x-Math.floor(x)})).sort((x,$)=>$.frac-x.frac).forEach(x=>{v>0&&(m[x.idx]++,v--)});v>0;)m[f-1]++,v--;const b=f===1?i-n||i:(i-n)/(f-1);let y=1/0;for(let x=0;x=1)d=c(u);else if(l){const f=2*l*a;d=c((i-n)/f+1)}else{const f=Math.max(1,Math.min(40,Math.ceil(Math.sqrt(e))+6));d=c(1);for(let h=2;h<=f;h++){const p=c(h);p.dotR>d.dotR&&(d=p)}}return l&&(d.dotR=l),d}_layoutColumns(e,n){const i=this.w,o=i.layout.gridWidth,r=i.layout.gridHeight,a=!!(n.clusterLabels&&n.clusterLabels.show),s=a&&n.clusterLabels.position==="bottom",l=a&&!s?30:6,c=e.map((T,O)=>O).filter(T=>e[T]>0),u=Math.max(1,c.length),d=new Array(e.length).fill(-1);c.forEach((T,O)=>d[T]=O);const f=o/u,h=f*.62,p=Math.max(8,r*.04)+(s?30:0),g=Math.max(4,r-l-p),m=Math.max(1,...e),v=n.spacing>0?n.spacing:1,b=n.columns?n.columns.size:void 0;let y;n.shape!=="image"&&b==="auto"?y=null:n.shape!=="image"&&typeof b=="number"&&b>0?y=b:y=this._fixedRadius(n);let w=1,x=0;if(y){x=2*y*v,this._lastDotR=y;const T=Math.max(1,Math.floor(g/x)),O=Math.max(1,Math.floor(h/x));w=Math.max(1,Math.min(O,Math.ceil(m/T)))}else{let T=0;const O=Math.max(1,Math.min(40,Math.round(h/4)));for(let M=1;M<=O;M++){const I=Math.ceil(m/M),k=Math.min(h/M,g/I);k>T&&(T=k,w=M)}x=T,this._lastDotR=Math.max(1,x/(2*v))}const $=this._lastDotR,S=Math.ceil(m/w),_=Math.min(g,S*x),P=l+(g+_)/2;return e.map((T,O)=>{const M=d[O]>=0?f*(d[O]+.5):o/2,k=Math.ceil(Math.max(1,T)/w)*x,E=M-w*x/2+x/2,R=[];for(let D=0;D0?a.columns:10)),l=a.fillFrom==="top"?"top":"bottom",c=a.total>0?this._largestRemainder(e,Math.round(a.total)):e.slice(),u=c.reduce((P,T)=>P+T,0),d=Math.max(1,Math.ceil(Math.max(1,u)/s)),f=6,h=n.spacing>0?n.spacing:1,p=Math.max(4,o),g=Math.max(4,r-f),m=this._fixedRadius(n);let v=0;m?(v=2*m*h,this._lastDotR=m):(v=Math.min(p/s,g/d),this._lastDotR=Math.max(1,v/(2*h)));const b=s*v,y=d*v,w=(o-b)/2+v/2,x=f+(g-y)/2,$=P=>l==="bottom"?x+y-v/2-P*v:x+v/2+P*v,S=e.map((P,T)=>({i:T,cx:o/2,cy:f+g/2,outerR:Math.max(b,y)/2,dots:[]}));let _=0;for(let P=0;P0?a.columns:10)),l=a.fillFrom==="top"?"top":"bottom",c=Math.max(1,Math.round(a.total>0?a.total:100)),u=Math.max(1,Math.ceil(c/s)),d=e.map((R,D)=>D).filter(R=>e[R]>0),f=Math.max(1,d.length),h=a.max>0?a.max:Math.max(1,...e),p=Math.max(1,Math.round(a.tileColumns>0?a.tileColumns:Math.ceil(Math.sqrt(f)))),g=Math.max(1,Math.ceil(f/p)),m=!(n.clusterLabels&&n.clusterLabels.show===!1),v=m&&n.clusterLabels&&n.clusterLabels.position==="bottom",b=m&&!v?22:4,y=m&&v?22:4,w=o/p,x=r/g,$=Math.max(4,w*.86),S=Math.max(4,x-b-y),_=n.spacing>0?n.spacing:1,P=this._fixedRadius(n);let T=0;P?(T=2*P*_,this._lastDotR=P):(T=Math.min($/s,S/u),this._lastDotR=Math.max(1,T/(2*_)));const O=s*T,M=u*T,I=(R,D)=>l==="bottom"?R+M-T/2-D*T:R+T/2+D*T,k=[],E=[];return d.forEach((R,D)=>{const F=D%p,N=Math.floor(D/p),B=F*w,z=N*x,W=B+(w-O)/2+T/2,j=z+b+(S-M)/2,U=Y=>({x:W+Y%s*T,y:I(j,Math.floor(Y/s))});for(let Y=0;Y{let u;if(i.shape==="square"){const d=r*2;u=n.drawRect(0,0,d,d,i.borderRadius||0,s,1,0,"none"),u.node.setAttribute("fill",s),u.node.setAttribute("x",String(c.x-r)),u.node.setAttribute("y",String(c.y-r))}else u=n.drawCircle(r,{fill:s,"stroke-width":0,stroke:"none"}),u.node.setAttribute("fill",s),u.node.setAttribute("cx",String(c.x)),u.node.setAttribute("cy",String(c.y));u.node.classList.add("apexcharts-unit-track-cell"),l.add(u)}),e.add(l)}_layoutScatter(e){const n=this.w,i=e.scatter||{};if(i.y==="value")return this._layoutScatter2D(e);if(i.orientation==="vertical")return this._layoutScatterVertical(e);const o=n.layout.gridWidth,r=n.layout.gridHeight,a=n.seriesData.unitData||[],s=n.seriesData.seriesNames||[],l=V=>this._unitValueOf(V),c=this._scatterSizeStats(i,a),u=a.map(V=>Array.isArray(V)?V.map(l):[]),d=V=>V!=null&&isFinite(V),f=u.map((V,q)=>q).filter(V=>u[V].some(d)),h=Math.max(1,f.length);let p=1/0,g=-1/0;u.forEach(V=>V.forEach(q=>{q!=null&&isFinite(q)&&(qg&&(g=q))})),p===1/0&&(p=0,g=1);const m=Math.max(2,Math.round(i.tickAmount>0?i.tickAmount:5)),v=this._scatterValueDomain(i,p,g,m),b=v.min,y=v.max,w=y-b||1,x=i.laneLabelWidth!=null?Math.max(0,i.laneLabelWidth):h>1?92:8,$=30+(i.xTitle?20:0),S=x,_=o-8,P=10,T=r-$,O=Math.max(4,_-S),M=Math.max(4,T-P),I=V=>S+(V-b)/w*O,k=M/h,E=V=>P+k*(V+.5);let R=0;const D=this._fixedRadius(e);if(D)R=D;else{const V=Math.max(1,...f.map(q=>u[q].filter(d).length));R=Math.max(2,Math.min(6,k*.12,O/(2.5*Math.sqrt(V))))}this._lastDotR=R;const F=e.spacing>0?e.spacing:1,N=Math.max(.5,R*F),B=i.spread==="jitter",z=[],W=[],j=c?c.rMax:R;f.forEach((V,q)=>{const Y=E(q);W.push({i:V,cy:Y,name:s[V]||`series-${V+1}`});const Q=(a[V]||[]).map((G,ee)=>{const X=l(G),K={j:ee,px:I(d(X)?X:b),y:Y};return c&&(K.r=this._scatterRadius(G,c,R)),K});if(B){const G=Math.max(j,k/2-j);Q.forEach((ee,X)=>{const K=(X*9301+49297)%233280/233280;ee.y=Y+(K*2-1)*G})}else this._beeswarm(Q,Y,R,N,j);z.push({i:V,cx:(S+_)/2,cy:Y,outerR:k/2,dots:Q.map(G=>({x:G.px,y:G.y,r:G.r}))})});const U=v.ticks;return this._scatterAxis={mode:"1d",plotL:S,plotR:_,plotT:P,plotB:T,xMin:b,xMax:y,plotX:I,ticks:U,lanes:W,xTitle:i.xTitle,formatter:typeof i.xFormatter=="function"?i.xFormatter:null,gridlines:i.gridlines!==!1},z}_layoutScatterVertical(e){const n=this.w,i=e.scatter||{},o=n.layout.gridWidth,r=n.layout.gridHeight,a=n.seriesData.unitData||[],s=n.seriesData.seriesNames||[],l=V=>this._unitValueOf(V),c=this._scatterSizeStats(i,a),u=a.map(V=>Array.isArray(V)?V.map(l):[]),d=V=>V!=null&&isFinite(V),f=u.map((V,q)=>q).filter(V=>u[V].some(d)),h=Math.max(1,f.length);let p=1/0,g=-1/0;u.forEach(V=>V.forEach(q=>{q!=null&&isFinite(q)&&(qg&&(g=q))})),p===1/0&&(p=0,g=1);const m=Math.max(2,Math.round(i.tickAmount>0?i.tickAmount:5)),v=this._scatterValueDomain(i,p,g,m),b=v.min,y=v.max,w=y-b||1,x=46+(i.xTitle?18:0),$=h>1?26:10,S=x,_=o-10,P=10,T=r-$,O=Math.max(4,_-S),M=Math.max(4,T-P),I=V=>T-(V-b)/w*M,k=O/h,E=V=>S+k*(V+.5);let R=0;const D=this._fixedRadius(e);if(D)R=D;else{const V=Math.max(1,...f.map(q=>u[q].filter(d).length));R=Math.max(2,Math.min(6,k*.12,M/(2.5*Math.sqrt(V))))}this._lastDotR=R;const F=e.spacing>0?e.spacing:1,N=Math.max(.5,R*F),B=i.spread==="jitter",z=[],W=[],j=c?c.rMax:R;f.forEach((V,q)=>{const Y=E(q);W.push({i:V,cx:Y,name:s[V]||`series-${V+1}`});const Q=(a[V]||[]).map((G,ee)=>{const X=l(G),K={j:ee,py:I(d(X)?X:b),x:Y};return c&&(K.r=this._scatterRadius(G,c,R)),K});if(B){const G=Math.max(j,k/2-j);Q.forEach((ee,X)=>{const K=(X*9301+49297)%233280/233280;ee.x=Y+(K*2-1)*G})}else this._beeswarm(Q,Y,R,N,j,!0);z.push({i:V,cx:Y,cy:(P+T)/2,outerR:k/2,dots:Q.map(G=>({x:G.x,y:G.py,r:G.r}))})});const U=v.ticks;return this._scatterAxis={mode:"1d",orientation:"vertical",plotL:S,plotR:_,plotT:P,plotB:T,vMin:b,vMax:y,plotY:I,ticks:U,lanes:W,valueTitle:i.xTitle,formatter:typeof i.xFormatter=="function"?i.xFormatter:null,gridlines:i.gridlines!==!1},z}_layoutScatter2D(e){const n=this.w,i=n.layout.gridWidth,o=n.layout.gridHeight,r=e.scatter||{},a=n.seriesData.unitData||[],s=j=>typeof j=="number"&&isFinite(j),l=j=>j&&typeof j=="object"?j.x:null,c=j=>j&&typeof j=="object"?j.y!=null?j.y:j.value:null,u=a.map((j,U)=>U).filter(j=>(a[j]||[]).some(U=>s(l(U))&&s(c(U))));let d=1/0,f=-1/0,h=1/0,p=-1/0;a.forEach(j=>(j||[]).forEach(U=>{const V=l(U),q=c(U);s(V)&&s(q)&&(Vf&&(f=V),qp&&(p=q))})),d===1/0&&(d=0,f=1,h=0,p=1);const g=Math.max(2,Math.round(r.tickAmount>0?r.tickAmount:5)),m=Math.max(2,Math.round(r.yTickAmount>0?r.yTickAmount:5)),v=this._niceScale(r.xMin!=null?r.xMin:d,r.xMax!=null?r.xMax:f,g),b=this._niceScale(r.yMin!=null?r.yMin:h,r.yMax!=null?r.yMax:p,m),y=r.xMin!=null?r.xMin:v.min,w=r.xMax!=null?r.xMax:v.max,x=r.yMin!=null?r.yMin:b.min,$=r.yMax!=null?r.yMax:b.max,S=w-y||1,_=$-x||1,P=46+(r.yTitle?18:0),T=30+(r.xTitle?20:0),O=P,M=i-12,I=10,k=o-T,E=Math.max(4,M-O),R=Math.max(4,k-I),D=j=>O+(j-y)/S*E,F=j=>k-(j-x)/_*R,N=this._scatterSizeStats(r,a),B=this._fixedRadius(e)||5;this._lastDotR=B;const z=[];u.forEach(j=>{const V=(a[j]||[]).map(q=>{const Y=l(q),J=c(q);return{x:D(s(Y)?Y:y),y:F(s(J)?J:x),r:N?this._scatterRadius(q,N,B):void 0}});z.push({i:j,cx:(O+M)/2,cy:(I+k)/2,outerR:R/2,dots:V})});const W=(j,U,V,q,Y,J)=>{const Q=[];if(Y)for(let G=0;G(c||[]).forEach(u=>{const d=u&&typeof u=="object"?u[a]:null;typeof d=="number"&&isFinite(d)&&(dl&&(l=d))})),s===1/0?null:{zmin:s,zmax:l,rMin:o,rMax:r,field:a}}_scatterRadius(e,n,i){if(!n)return i;const o=e&&typeof e=="object"?e[n.field]:null;if(typeof o!="number"||!isFinite(o))return n.rMin;const r=n.zmax>n.zmin?(o-n.zmin)/(n.zmax-n.zmin):1,a=Math.max(0,Math.min(1,r)),s=n.rMin*n.rMin,l=n.rMax*n.rMax;return Math.sqrt(s+a*(l-s))}_beeswarm(e,n,i,o,r,a=!1){const s=a?"py":"px",l=a?"x":"y",c=e.slice().sort((f,h)=>f[s]-h[s]),u=[],d=r??i;c.forEach(f=>{const h=f.r!=null?f.r:i;let p=0;for(let g=0;g<2e3;g++){const m=g===0?0:Math.ceil(g/2)*o*(g%2?1:-1),v=n+m;let b=!0;for(let y=u.length-1;y>=0;y--){const w=u[y],x=f[s]-w.f;if(x>h+d)break;const $=h+w.r,S=v-w.s;if(x*x+S*S<$*$){b=!1;break}}if(b){p=m;break}}f[l]=n+p,u.push({f:f[s],s:f[l],r:h})})}_scatterValueDomain(e,n,i,o){const r=(l,c,u)=>{const d=[];for(let f=l;f<=c+u*.5;f+=u)d.push(Math.abs(f)l||(c=l+1);const u=(c-l)/Math.max(1,o-1);return nc&&(c+=Math.ceil((i-c)/u)*u),{min:l,max:c,ticks:r(l,c,u)}}const a=this._niceScale(n,i,o),s=a.spacing||(a.max-a.min)/Math.max(1,o-1);return{min:a.min,max:a.max,ticks:r(a.min,a.max,s)}}_niceScale(e,n,i){const o=e;let r=n;r>o||(r=o+1);const a=this._niceNum(r-o,!1),s=this._niceNum(a/Math.max(1,i-1),!0);return{min:Math.floor(o/s)*s,max:Math.ceil(r/s)*s,spacing:s}}_niceNum(e,n){const i=e>0?e:1,o=Math.floor(Math.log(i)/Math.LN10),r=i/Math.pow(10,o);let a;return n?a=r<1.5?1:r<3?2:r<7?5:10:a=r<=1?1:r<=2?2:r<=5?5:10,a*Math.pow(10,o)}_drawScatterAxes(e,n){const i=this.w;if(!Ot.isBrowser())return;const o=this._scatterAxis;if(!o)return;const r="http://www.w3.org/2000/svg",a=n.group({class:"apexcharts-unit-axis"}),s=i.config.grid&&i.config.grid.borderColor||"rgba(128,128,128,0.18)",l="rgba(128,128,128,0.5)",c=i.config.xaxis&&i.config.xaxis.labels&&i.config.xaxis.labels.style&&i.config.xaxis.labels.style.colors,u=Array.isArray(c)?c[0]:c,d=u||"rgba(120,130,140,0.9)",f=(p,g,m,v,b)=>{const y=We.createElementNS(r,"line");y.setAttribute("x1",String(p)),y.setAttribute("y1",String(g)),y.setAttribute("x2",String(m)),y.setAttribute("y2",String(v)),y.setAttribute("stroke",b),y.setAttribute("shape-rendering","crispEdges"),a.node.appendChild(y)},h=(p,g,m,v,b,y,w,x)=>{const $=We.createElementNS(r,"text");$.setAttribute("class",x),$.setAttribute("x",String(g)),$.setAttribute("y",String(m)),$.setAttribute("text-anchor",v),$.setAttribute("dominant-baseline","middle"),$.setAttribute("font-size",`${y}px`),$.setAttribute("font-family",i.config.chart.fontFamily||"inherit"),$.setAttribute("font-weight",String(w)),$.setAttribute("fill",b),$.textContent=p,a.node.appendChild($)};if(o.mode==="2d"){if(o.yTicks.forEach(p=>{const g=o.plotY(p);o.gridlines&&f(o.plotL,g,o.plotR,g,s);const m=o.yFormatter?String(o.yFormatter(p)):this._formatTick(p);h(m,o.plotL-8,g,"end",d,11,400,"apexcharts-unit-tick")}),o.xTicks.forEach(p=>{const g=o.plotX(p);o.gridlines&&f(g,o.plotT,g,o.plotB,s);const m=o.xFormatter?String(o.xFormatter(p)):this._formatTick(p);h(m,g,o.plotB+14,"middle",d,11,400,"apexcharts-unit-tick")}),f(o.plotL,o.plotB,o.plotR,o.plotB,l),f(o.plotL,o.plotT,o.plotL,o.plotB,l),o.xTitle&&h(String(o.xTitle),(o.plotL+o.plotR)/2,o.plotB+32,"middle",d,12,600,"apexcharts-unit-axis-title"),o.yTitle){const p=We.createElementNS(r,"text");p.setAttribute("class","apexcharts-unit-axis-title");const g=14,m=(o.plotT+o.plotB)/2;p.setAttribute("x",String(g)),p.setAttribute("y",String(m)),p.setAttribute("text-anchor","middle"),p.setAttribute("font-size","12px"),p.setAttribute("font-family",i.config.chart.fontFamily||"inherit"),p.setAttribute("font-weight","600"),p.setAttribute("fill",d),p.setAttribute("transform",`rotate(-90 ${g} ${m})`),p.textContent=String(o.yTitle),a.node.appendChild(p)}e.add(a);return}if(o.orientation==="vertical"){if(o.ticks.forEach(p=>{const g=o.plotY(p);o.gridlines&&f(o.plotL,g,o.plotR,g,s);const m=o.formatter?String(o.formatter(p)):this._formatTick(p);h(m,o.plotL-8,g,"end",d,11,400,"apexcharts-unit-tick")}),f(o.plotL,o.plotT,o.plotL,o.plotB,l),o.valueTitle){const p=We.createElementNS(r,"text");p.setAttribute("class","apexcharts-unit-axis-title");const g=14,m=(o.plotT+o.plotB)/2;p.setAttribute("x",String(g)),p.setAttribute("y",String(m)),p.setAttribute("text-anchor","middle"),p.setAttribute("font-size","12px"),p.setAttribute("font-family",i.config.chart.fontFamily||"inherit"),p.setAttribute("font-weight","600"),p.setAttribute("fill",d),p.setAttribute("transform",`rotate(-90 ${g} ${m})`),p.textContent=String(o.valueTitle),a.node.appendChild(p)}o.lanes.forEach(p=>{const g=u||i.globals.colors[p.i]||i.globals.colors[0]||"#008FFB";h(p.name,p.cx,o.plotB+16,"middle",g,12,600,"apexcharts-unit-lane-label")}),e.add(a);return}o.ticks.forEach((p,g)=>{const m=o.plotX(p);o.gridlines&&f(m,o.plotT,m,o.plotB,s);const v=o.formatter?String(o.formatter(p)):this._formatTick(p),b=g===0?"start":g===o.ticks.length-1?"end":"middle";h(v,m,o.plotB+14,b,d,11,400,"apexcharts-unit-tick")}),f(o.plotL,o.plotB,o.plotR,o.plotB,l),o.xTitle&&h(String(o.xTitle),(o.plotL+o.plotR)/2,o.plotB+32,"middle",d,12,600,"apexcharts-unit-axis-title"),o.plotL>12&&o.lanes.forEach(p=>{const g=u||i.globals.colors[p.i]||i.globals.colors[0]||"#008FFB";h(p.name,o.plotL-8,p.cy,"end",g,12,600,"apexcharts-unit-lane-label")}),e.add(a)}_formatTick(e){if(!isFinite(e))return"";const n=Math.abs(e);return n>=1e6?`${+(e/1e6).toFixed(1)}M`:n>=1e4?`${+(e/1e3).toFixed(1)}k`:Number.isInteger(e)?String(e):String(+e.toFixed(2))}_largestRemainder(e,n){const i=e.reduce((u,d)=>u+d,0);if(i<=0||n<=0)return e.map(()=>0);const o=e.map(u=>u/i*n),r=o.map(u=>Math.floor(u)),a=r.reduce((u,d)=>u+d,0),s=Math.max(0,n-a),l=o.map((u,d)=>({i:d,frac:u-Math.floor(u)})).sort((u,d)=>d.frac-u.frac),c=r.slice();for(let u=0;u0?e.sizeByValue.maxRadius:null:typeof e.size=="number"&&e.size>0?e.size:null}_bubbleActive(e){const n=e.sizeByValue;return!!(n&&n.enabled&&e.shape!=="image"&&e.shape!=="square")}_unitValueOf(e){if(typeof e=="number")return e;if(e&&typeof e=="object"){const n=e.value!=null?e.value:e.y;return typeof n=="number"?n:null}return null}_radiusForValue(e,n){if(e==null||!isFinite(e))return n.minR;const i=n.max>n.min?(e-n.min)/(n.max-n.min):1,o=Math.max(0,Math.min(1,i));if(n.scale==="linear")return n.minR+o*(n.maxR-n.minR);const r=n.minR*n.minR,a=n.maxR*n.maxR;return Math.sqrt(r+o*(a-r))}_bubbleStats(e,n,i){if(!this._bubbleActive(n))return null;let o=1/0,r=-1/0;if(e.forEach(c=>{c&&c.forEach(u=>{const d=this._unitValueOf(u);d!=null&&isFinite(d)&&(dr&&(r=d))})}),o===1/0||r0?e.spacing:1,r=this._fixedRadius(e);return r?2*r*o:n/(Math.sqrt(Math.max(1,i))+.5)}_dotRadiusFromStep(e,n){const i=n.spacing>0?n.spacing:1,o=this._fixedRadius(n);return o||Math.max(1,e/(2*i))}_isCorner(e){return e.shape==="square"||e.shape==="image"}_halfExtent(e,n){if(e.shape==="image"&&e.image)return{hx:(e.image.width||20)/2,hy:(e.image.height||20)/2};const i=n??this._lastDotR;return{hx:i,hy:i}}_place(e,n,i,o){const r=n;r.pk===M0?e.setAttribute("transform","translate("+(i-r.ox)+","+(o-r.oy)+r.tail):r.pk===vM?(e.setAttribute("x",String(i-r.hx)),e.setAttribute("y",String(o-r.hy))):(e.setAttribute("cx",String(i)),e.setAttribute("cy",String(o)))}_baseSpec(e,n){const i=n??this._lastDotR;if(!this._isCorner(e))return{pk:bh,r:i};const{hx:o,hy:r}=this._halfExtent(e,i);return{pk:vM,hx:o,hy:r,r:i}}_resolveMark(e){if(e==null)return null;if(typeof e=="object")return gM(e);if(typeof e!="string"||!e)return null;const n=e.trim();if(n[0]==="M"||n[0]==="m")return gM(n);const i=RCe(n);return i||(this._markWarned||(this._markWarned=new Set),this._markWarned.has(n)||(this._markWarned.add(n),console.warn(`[ApexCharts] unit chart: no mark named "${n}" is registered. Register one with ApexCharts.registerUnitMark("${n}", pathData), or import a catalog from 'apexcharts/pictograms'.`)),null)}_glyphSpec(e,n,i){const o=Math.round(n*10)/10,r=e.name+"|"+e.path.length+"|"+o,a=this._specCache.get(r);if(a)return a;const s=e.viewBox||[0,0,100,100],l=Math.max(0,Math.min(.9,i.padding||0)),c=typeof i.scale=="number"&&i.scale>0?i.scale:1,u=2*o*(1-l)*c,d=i.fit==="width"?u/s[2]:i.fit==="height"?u/s[3]:u/Math.max(s[2],s[3]),f=Object.freeze({pk:M0,mark:e,d:e.path,fillRule:e.fillRule,s:d,ox:(s[0]+s[2]/2)*d,oy:(s[1]+s[3]/2)*d,tail:") scale("+d+")",r:o});return this._specCache.set(r,f),f}_markSpecFor(e,n,i,o){if(e.shape!=="pictogram")return this._baseSpec(e,o);const r=e.pictogram||{},a=n&&typeof n=="object"?n.mark:void 0,s=Array.isArray(r.mark)?r.mark[i%r.mark.length]:r.mark,l=this._resolveMark(a??s);return l?this._glyphSpec(l,o,r):this._baseSpec(vt(Ye({},e),{shape:r.fallback==="square"?"square":"circle"}),o)}_drawDot(e,n,i,o,r,a,s){const l=this.w,c=l.config.stroke.show?l.config.stroke.width:0,u=Array.isArray(l.globals.stroke.colors)&&l.globals.stroke.colors[r]||"none",d=typeof l.config.fill.opacity=="number"?l.config.fill.opacity:1;let f;if(s&&s.pk===M0)f=l.dom.Paper.path(s.d),f.node.setAttribute("fill",o),s.fillRule==="evenodd"&&f.node.setAttribute("fill-rule","evenodd"),d<1&&f.node.setAttribute("fill-opacity",String(d)),f.node.setAttribute("data:r",String(s.r));else if(n.shape==="image"&&n.image&&n.image.src){const h=n.image.width||20,p=n.image.height||20;f=l.dom.Paper.image(n.image.src),f.node.setAttribute("width",String(h)),f.node.setAttribute("height",String(p)),f.node.setAttribute("preserveAspectRatio","xMidYMid meet"),n.image.tint&&f.node.setAttribute("filter",`url(#${this._tintFilter(o)})`)}else if(n.shape==="square"){const h=i*2;f=e.drawRect(0,0,h,h,n.borderRadius||0,o,1,c,u),f.node.setAttribute("fill",o),d<1&&f.node.setAttribute("fill-opacity",String(d))}else f=e.drawCircle(i,{fill:o,"stroke-width":c,stroke:u}),f.node.setAttribute("fill",o),d<1&&f.node.setAttribute("fill-opacity",String(d));return f.node.classList.add("apexcharts-unit-area"),f.node.setAttribute("i",String(r)),f.node.setAttribute("j",String(a)),f}_tintFilter(e){const n=this.w,i="http://www.w3.org/2000/svg",o=String(e).replace(/[^a-zA-Z0-9]/g,""),r=`apexcharts-unit-tint-${n.globals.chartID}-${o}`,a=n.dom.Paper.node;if(a.querySelector(`#${r}`))return r;let s=a.querySelector("defs");s||(s=We.createElementNS(i,"defs"),a.insertBefore(s,a.firstChild));const l=We.createElementNS(i,"filter");l.setAttribute("id",r),l.setAttribute("x","0%"),l.setAttribute("y","0%"),l.setAttribute("width","100%"),l.setAttribute("height","100%");const c=We.createElementNS(i,"feFlood");c.setAttribute("flood-color",e),c.setAttribute("result","flood");const u=We.createElementNS(i,"feComposite");return u.setAttribute("in","flood"),u.setAttribute("in2","SourceAlpha"),u.setAttribute("operator","in"),l.appendChild(c),l.appendChild(u),s.appendChild(l),r}_placeDot(e,n,i,o,r){this._place(e,r||this._baseSpec(n),i,o)}_rgb(e){if(typeof e!="string")return null;let n=e.trim();if(n[0]==="#"){n.length===4&&(n="#"+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]);const o=parseInt(n.slice(1,7),16);return isNaN(o)?null:[o>>16&255,o>>8&255,o&255]}const i=n.match(/rgba?\(([^)]+)\)/);if(i){const o=i[1].split(",").map(r=>parseFloat(r));if(o.length>=3&&o.every(r=>!isNaN(r)))return[o[0],o[1],o[2]]}return null}_shouldAnimate(){const e=this.w,n=e.config.chart.animations;return!(!Ot.isBrowser()||!n||n.enabled===!1||e.globals.shouldAnimate===!1||e.globals.resized&&!e.globals.dataChanged||n.respectReducedMotion&&u$())}_seedSprings(e,n,i){const[o,r]=zCe(n.spring,i),a=this.ctx?this.ctx._unitSprings:null,s=new Map;for(let l=0;l1?p/(a-1)*r:0;const s=i.gather||{},l=s.motion||"auto";l==="spring"||l==="auto"&&(!s.easing||s.easing==="outCubic")?this._seedSprings(e,s,o):this.ctx&&(this.ctx._unitSprings=null);for(let p=0;p{if(this.w.globals.isDestroyed){this.w.globals.unitGatherRAF=null,this.w.globals.animationEnded=!0;return}const g=Math.min(BCe,Math.max(0,(p-f)/1e3));f=p;let m=!0;for(let v=0;v=0&&!b.released&&(fM(b.sx,b.x),fM(b.sy,b.y),b.released=!0);const _=dM(b.sx,g),P=dM(b.sy,g);(!b.released||!_||!P)&&(m=!1),$=b.sx.value,S=b.sy.value}else{const _=u(w);$=b.cx0+(b.x-b.cx0)*_,S=b.cy0+(b.y-b.cy0)*_}if(this._place(b.node,b.spec,$,S),b.isEnter&&(b.node.style.opacity=String(Math.min(1,w*2.5))),b._c0&&b._c1){const _=Math.round(b._c0[0]+(b._c1[0]-b._c0[0])*x),P=Math.round(b._c0[1]+(b._c1[1]-b._c0[1])*x),T=Math.round(b._c0[2]+(b._c1[2]-b._c0[2])*x);b.node.setAttribute("fill",`rgb(${_},${P},${T})`)}b.spec.pk===bh&&b.r0!=null&&b.r1!=null&&b.r0!==b.r1&&b.node.setAttribute("r",String(b.r0+(b.r1-b.r0)*x)),w<1&&(m=!1)}if(m){for(let v=0;v=o))break;return r}_runExits(e,n,i){const o=this.w,r=new Be(o,this.ctx),a=this._lastDotR,s=o.layout.gridWidth/2,l=o.layout.gridHeight/2,c=i.layout==="grid"||i.layout==="scatter"||i.layout==="arc"||i.layout==="custom"?0:.35,u=[];if(n.forEach(p=>{const g=p.r!=null?p.r:a,m=p.spec||this._baseSpec(i,g),v=this._drawDot(r,i,g,p.fill,0,0,m);v.node.classList.add("apexcharts-unit-exit"),this._place(v.node,m,p.x,p.y),e.add(v),u.push({node:v.node,x0:p.x,y0:p.y,spec:m})}),!this._shouldAnimate()){u.forEach(p=>p.node.remove());return}const d=Math.max(1,o.config.chart.animations.speed||800);this.w.globals.unitExitRAF!=null&&(We.cancelAnimationFrame(this.w.globals.unitExitRAF),this.w.globals.unitExitRAF=null);const f=performance.now(),h=p=>{if(this.w.globals.isDestroyed){this.w.globals.unitExitRAF=null;return}const g=Math.max(0,Math.min(1,(p-f)/d)),m=E0(g);for(let v=0;v0?n/i*100:0,l=o.clusterLabels,c=typeof l.formatter=="function"?l.formatter(a,{seriesIndex:e,value:n,percent:s,w:r}):`${a} ${s.toFixed(1)}%`;return String(c).split(` -`)}_outerLabelGutter(e,n){const i=this.w,o=n.clusterLabels,r=o.external.connector||{},a=e.reduce((f,h)=>f+h,0),s=[];if(e.forEach((f,h)=>{f>0&&s.push(...this._outerLabelLines(h,f,a,n))}),!s.length)return 0;const l=cCe(i,s,{fontSize:o.fontSize,fontFamily:o.fontFamily||i.config.chart.fontFamily}),c=r.gap!=null?r.gap:8,u=r.length!=null?r.length:22,d=l+c+u+8+Math.abs(parseFloat(o.external.offsetX)||0);return Math.min(d,i.layout.gridWidth*.25)}_drawOuterLabels(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l=r.clusterLabels,c=l.external,u=c.connector||{},d=u.gap!=null?u.gap:8,f=u.length!=null?u.length:22,h=parseFloat(c.offsetX)||0,p=parseFloat(c.offsetY)||0,g=s.layout.gridWidth,m=s.layout.gridHeight,v=this._lastDotR,b=n.filter(I=>I.dots.length>0);if(!b.length)return;let y=0,w=0;if(b.length>1){const I=b.map(E=>E.cx),k=b.map(E=>E.cy);y=Math.max(...I)-Math.min(...I),w=Math.max(...k)-Math.min(...k)}const x=y>w,$=parseFloat(l.fontSize)||13,S=Math.round($*1.35),_=[];if(b.slice().sort((I,k)=>I.cy-k.cy).forEach((I,k)=>{const E=this._outerLabelLines(I.i,i[I.i],o,r);if(!E.some(W=>W!==""))return;const R=x?I.cx>=g/2?"right":"left":k%2===0?"right":"left",D=R==="right"?1:-1;let F=I.dots[0],N=-1/0;I.dots.forEach(W=>{const j=D*W.x-.75*Math.abs(W.y-I.cy);j>N&&(N=j,F=W)});const B={x:F.x+D*(F.r||v),y:F.y},z={x:B.x+D*d,y:B.y};_.push({i:I.i,lines:E,anchor:B,elbow:z,labelX:z.x+D*f+h,idealY:B.y+p,labelY:B.y+p,side:R})}),!_.length)return;const T=_.reduce((I,k)=>Math.max(I,k.lines.length),1)*S,O=T/2;["left","right"].forEach(I=>{jN(_.filter(k=>k.side===I),T+2,m-O,O)});const M=new Be(s,this.ctx).group({class:"apexcharts-unit-outer-labels"});if(a){const I=Math.max(1,s.config.chart.animations.speed||800);M.node.classList.add("apexcharts-unit-label-delay"),M.node.style.animationDelay=`${Math.min(I*.45,600)/1e3}s`}_.forEach(I=>{const k=s.globals.colors[I.i]||s.globals.colors[0]||"#008FFB";M.add(WN(s,{lines:I.lines,lineHeight:S,anchor:I.anchor,elbow:I.elbow,labelX:I.labelX,labelY:I.labelY,side:I.side,connector:{show:u.show!==!1,width:u.width!=null?u.width:1.5,color:u.color||k},style:{fontSize:l.fontSize,fontFamily:l.fontFamily||s.config.chart.fontFamily,fontWeight:l.fontWeight},foreColor:l.color||s.config.chart.foreColor,groupClass:"apexcharts-unit-outer-label-group",textClass:"apexcharts-unit-outer-label",connectorClass:"apexcharts-unit-label-connector"}))}),e.add(M)}_drawClusterLabel(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l="http://www.w3.org/2000/svg",c=s.seriesData.seriesNames[n.i]||`series-${n.i+1}`,u=o>0?i/o*100:0,d=r.clusterLabels,f=parseFloat(d.fontSize)||13;let h;typeof d.formatter=="function"?h=d.formatter(c,{seriesIndex:n.i,value:i,percent:u,w:s}):h=`${c} (${u.toFixed(1)}%)`;const p=typeof h=="string"?h:String(h),g=We.createElementNS(l,"text");g.setAttribute("class","apexcharts-unit-label"),g.setAttribute("text-anchor","middle"),g.setAttribute("font-size",`${f}px`),g.setAttribute("font-family",d.fontFamily||s.config.chart.fontFamily||"inherit"),g.setAttribute("font-weight",String(d.fontWeight||600)),g.setAttribute("fill",d.color||a);const m=d.position==="bottom",v=n.outerR+f*.6+3+(d.offsetY||0),b=p.length*f*.55;if(!m&&!n.flat&&d.curved!==!1&&b<=Math.PI*v*.95){const w=n.cy,x=n.cx-v,$=n.cx+v,S=`M ${x} ${w} A ${v} ${v} 0 0 1 ${$} ${w}`,_=`apexcharts-unit-label-${s.globals.chartID}-${n.i}`,P=We.createElementNS(l,"path");P.setAttribute("id",_),P.setAttribute("d",S),P.setAttribute("fill","none"),P.setAttribute("stroke","none");const T=We.createElementNS(l,"textPath");T.setAttribute("href",`#${_}`),T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`#${_}`),T.setAttribute("startOffset","50%"),T.textContent=p,g.appendChild(T),e.node.appendChild(P)}else{g.setAttribute("x",String(n.cx));const w=m?n.cy+n.outerR+f+6+(d.offsetY||0):n.cy-n.outerR-6-(d.offsetY||0);g.setAttribute("y",String(w)),g.textContent=p}e.node.appendChild(g)}}const yh=Math.PI/180,bM=180/Math.PI,I0="http://www.w3.org/2000/svg",$l="http://www.w3.org/1999/xhtml",du=(t,e,n)=>t+(e-t)*n;class WCe{constructor(e,n){this.ctx=n,this.w=e;const i=e.config;this.cfg=i.plotOptions.sunburst,this.strokeWidth=i.stroke.show?i.stroke.width:0,this.strokeColor=Array.isArray(i.stroke.colors)?i.stroke.colors[0]:i.stroke.colors||"#fff",this.startAngle=this.cfg.startAngle,this.endAngle=this.cfg.endAngle,this.maxDepth=0,this.centerX=0,this.centerY=0,this.maxRadius=0,this.total=1,this._focusMaxDepth=0,this._focus=null,this._zoomGen=0,this._roots=[],this._nodesAll=[],this._innerR=()=>0,this._outerR=()=>0,this._tooltipEl=null,this._lblSeq=0,this._morphLeafIndex=0,this._graphics=null,this._ringsG=null,this._labelsG=null}draw(e){const n=this.w,i=new Be(this.w);this._graphics=i;const o=i.group({class:"apexcharts-sunburst"});if(n.globals.noData||!e||!e.length)return o;const r=n.layout.gridWidth,a=n.layout.gridHeight;if(this.centerX=r/2+(this.cfg.offsetX||0),this.centerY=a/2+(this.cfg.offsetY||0),this.maxRadius=Math.min(r,a)/2.05-this.strokeWidth-(n.config.chart.sparkline.enabled?0:n.config.chart.dropShadow.blur),this.maxRadius<5||(this._roots=this._buildHierarchy(),!this._roots.length))return o;this._roots.forEach(u=>this._fillValues(u)),this._validateStrict(),this._nodesAll=[];const s=n.globals.colors||[];this._roots.forEach((u,d)=>{this._colorPass(u,u.color||s[d%s.length]||"#008FFB")}),this.total=this._roots.reduce((u,d)=>u+Math.max(0,d.value),0)||1,this._ringsG=i.group({class:"apexcharts-sunburst-rings"}),this._labelsG=i.group({class:"apexcharts-sunburst-labels"}),o.add(this._ringsG),o.add(this._labelsG),this._focus=null,this._relayout(this._focus);const l=n.config.chart.animations;let c="none";return l.enabled&&(n.globals.dataChanged?l.dynamicAnimation.enabled&&(c="update"):n.globals.resized||(c="intro")),this._applyLayout(c),this._renderBreadcrumb(),o}_buildHierarchy(){return SCe(this.w)}_fillValues(e){p$(e)}_validateStrict(){if(this.cfg.partition!=="strict")return;let e=!1;const n=i=>{if(i.children&&i.children.length){const o=i.children.reduce((r,a)=>r+Math.max(0,a.value||0),0);!e&&i.value!=null&&Math.abs(o-i.value)>.5&&(console.warn(`ApexCharts sunburst: partition 'strict' but "${i.name}" (${i.value}) != sum of its children (${o}). Angles are normalized to fill the wedge.`),e=!0),i.children.forEach(n)}};this._roots.forEach(n)}_colorPass(e,n){e._color=e.color||n,this._nodesAll.push(e),e.children&&e.children.forEach(i=>this._colorPass(i,i.color||this._lighten(e._color,this.cfg.tint)))}_relayout(e){if(this._nodesAll.forEach(a=>{a._show=!1}),this._focusMaxDepth=0,e)this._placeVis(e,0,this.startAngle,this.endAngle,e._parent);else{const a=this._roots.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=this.startAngle;this._roots.forEach(l=>{const c=(this.endAngle-this.startAngle)*Math.max(0,l.value)/a;this._placeVis(l,0,s,s+c,null),s+=c})}const n=this._parseSize(this.cfg.innerSize,this.maxRadius),i=this._focusMaxDepth+1,o=(this.maxRadius-n)/i,r=i>1?1:0;this._innerR=a=>n+a*o+(a>0?r/2:0),this._outerR=a=>n+(a+1)*o-r/2,this._nodesAll.forEach(a=>{a._show&&(a._iR=this._innerR(a._vDepth),a._oR=a._leaf&&this.cfg.leaf==="extend"&&a._vDepththis._focusMaxDepth&&(this._focusMaxDepth=n),!e._leaf){const a=e.children.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=i;e.children.forEach(l=>{const c=(o-i)*Math.max(0,l.value)/a;this._placeVis(l,n+1,s,s+c,e),s+=c})}}_applyLayout(e){var n;const o=this.w.config.chart.animations,r=o.enabled?e==="none"?0:e==="update"?o.dynamicAnimation.speed||350:o.speed||500:0,a=++this._zoomGen,s=(n=this.ctx)==null?void 0:n.morphTypeChange,l=!!s&&typeof s.isActive=="function"&&s.isActive()&&typeof s.getInitialPathAt=="function",c=l?s.getSpeed():0;this._morphLeafIndex=0;const u=e==="update"?this.ctx._sunburstPrevGeoms:null;this._nodesAll.forEach(f=>{if(f._show){const h={a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR};f._el||(f._el=this._createArcEl(f));const p=l?this._morphSourceFor(f):null;if(p&&c>0)this._morphArcFrom(f,p,h,c,a);else if((e==="intro"||l)&&r>0)this._sweepArc(f,h,l?c:r,a);else{let g,m=!1;if(f._cur)g=f._cur;else if(u&&u.get(f._key))g=u.get(f._key);else{const v=(h.a0+h.a1)/2;g={a0:v,a1:v,iR:h.iR,oR:h.iR},m=!0}this._animateArc(f,g,h,r,!1,m,a)}}else if(f._el&&f._cur){const h=(f._cur.a0+f._cur.a1)/2,p={a0:h,a1:h,iR:f._cur.iR,oR:f._cur.iR};this._animateArc(f,f._cur,p,r,!0,!1,a)}});const d=new Map;this._nodesAll.forEach(f=>{f._show&&d.set(f._key,{a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR})}),this.ctx._sunburstPrevGeoms=d,this._renderLabels(r)}_morphSourceFor(e){const n=this.ctx,i=n&&n.morphTypeChange;return i?typeof i.hasKeyedMarks=="function"&&i.hasKeyedMarks()&&typeof i.getInitialPathForKey=="function"?i.getInitialPathForKey(nd(e._key)):e.children&&e.children.length?null:i.getInitialPathAt(this._morphLeafIndex++):null}_morphArcFrom(e,n,i,o,r){const a=e._el,s=this._arcPath(i.iR,i.oR,i.a0,i.a1,this.cfg.borderRadius);a.node.style.display="",a.attr({d:n,opacity:1}),e._cur=i,this._zoomGen===r&&new Gs(this.w,this.ctx).morphSVG(a,0,null,e._color,n,s,o,0)}_sweepArc(e,n,i,o){const r=e._el,a=this.cfg.borderRadius,s=this.startAngle,l=this.endAngle;r.node.style.display="",r.attr({d:"",opacity:1}),r.animate(i).during(c=>{if(this._zoomGen!==o)return;const u=s+(l-s)*c;if(u<=n.a0+.01){r.attr({d:""});return}const d=Math.min(n.a1,u);r.attr({d:this._arcPath(n.iR,n.oR,n.a0,d,a)}),e._cur={a0:n.a0,a1:d,iR:n.iR,oR:n.oR}}).after(()=>{this._zoomGen===o&&(e._cur=n)})}_createArcEl(e){const n=this._graphics.drawPath({d:"",fill:e._color,stroke:this.strokeColor,strokeWidth:this.strokeWidth,fillOpacity:1,classes:"apexcharts-sunburst-arc"}),i=n.node;return i.setAttribute("data:name",e.name),i.setAttribute("data:value",String(e.value)),i.setAttribute("data:key",nd(e._key)),i.setAttribute("data:leaf",String(!(e.children&&e.children.length))),this._attachTooltip(i,e),Ot.isBrowser()&&(i.addEventListener("click",()=>this._zoomTo(e)),i.style.cursor="pointer"),this._ringsG.add(n),n}_animateArc(e,n,i,o,r,a,s){const l=e._el,c=this.cfg.borderRadius;if(l.attr({fill:e._color}),o===0){l.attr({d:this._arcPath(i.iR,i.oR,i.a0,i.a1,c),opacity:r?0:1}),l.node.style.display=r?"none":"",e._cur=r?null:i;return}l.node.style.display="";const u=r?Number(l.attr("opacity"))||1:a?0:1,d=r?0:1;l.attr({opacity:u}),l.animate(o).during(f=>{if(this._zoomGen!==s)return;const h=du(n.a0,i.a0,f),p=du(n.a1,i.a1,f),g=du(n.iR,i.iR,f),m=du(n.oR,i.oR,f);l.attr({d:this._arcPath(g,m,h,p,c),opacity:du(u,d,f)}),e._cur={a0:h,a1:p,iR:g,oR:m}}).after(()=>{this._zoomGen===s&&(r?(l.node.style.display="none",e._cur=null):e._cur=i)})}_renderLabels(e){const n=this._labelsG;for(;n.node.firstChild;)n.node.removeChild(n.node.firstChild);this.cfg.dataLabels.show&&(this._nodesAll.forEach(i=>{i._show&&(i._a1-i._a00?(n.attr({opacity:0}),n.animate(250,e).attr({opacity:1})):n.attr({opacity:1}))}_renderCurvedLabel(e){if(!Ot.isBrowser())return;const n=this.cfg.dataLabels.style,i=this.w,o=(e._iR+e._oR)/2,r=(e._a0+e._a1)/2,a=r>90&&r<270,s=Math.min(o>0?4/o*bM:0,(e._a1-e._a0)/2),l=a?e._a1-s:e._a0+s,c=a?e._a0+s:e._a1-s,u=this._ptAt(o,l),d=this._ptAt(o,c),f=Math.abs(c-l)>180?1:0,h=a?0:1,p=`apx-sb-lbl-${i.globals.cuid}-${this._lblSeq++}`,g=We.createElementNS(I0,"path");g.setAttribute("id",p),g.setAttribute("d",`M ${u.x} ${u.y} A ${o} ${o} 0 ${f} ${h} ${d.x} ${d.y}`),g.setAttribute("fill","none"),g.setAttribute("stroke","none");const m=n.colors,v=(Array.isArray(m)?m[0]:m)||"#fff",b=We.createElementNS(I0,"text");b.setAttribute("font-size",n.fontSize||"12px"),n.fontFamily&&b.setAttribute("font-family",n.fontFamily),b.setAttribute("font-weight",String(n.fontWeight||400)),b.setAttribute("fill",v),b.setAttribute("dominant-baseline","central"),b.style.pointerEvents="none";const y=We.createElementNS(I0,"textPath");y.setAttribute("href","#"+p),y.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","#"+p),y.setAttribute("startOffset","50%"),y.setAttribute("text-anchor","middle"),y.textContent=this._truncate(e.name,o,e._a1-e._a0,n.fontSize),b.appendChild(y),this._labelsG.node.appendChild(g),this._labelsG.node.appendChild(b)}_truncate(e,n,i,o){const r=n*i*yh-8,a=(parseFloat(o)||12)*.58,s=Math.floor(r/a);return s>=e.length?e:s<=1?"":e.slice(0,Math.max(1,s-1))+"…"}_zoomTo(e){if(this.cfg.zoomOnClick===!1)return;const n=e===this._focus?e._parent||null:e;n!==this._focus&&(this._focus=n&&!(n.children&&n.children.length)?n._parent||null:n,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb())}_focusChain(){const e=[];let n=this._focus;for(;n;)e.unshift(n),n=n._parent;return e}_renderBreadcrumb(){if(!Ot.isBrowser())return;const n=this.w.dom.elWrap;if(!n)return;const i=n.querySelector(".apexcharts-breadcrumb");if(i&&i.parentNode&&i.parentNode.removeChild(i),!this._focus)return;const o=We.createElementNS($l,"nav");o.setAttribute("class","apexcharts-breadcrumb"),o.setAttribute("aria-label","Sunburst breadcrumb"),o.style.position="absolute",o.style.top="0px",o.style.left="0px";const r=[{name:"All",node:null}].concat(this._focusChain().map(a=>({name:a.name,node:a})));r.forEach((a,s)=>{if(s>0){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-separator"),c.textContent=" / ",o.appendChild(c)}if(s===r.length-1){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),c.textContent=a.name,o.appendChild(c)}else{const c=We.createElementNS($l,"button");if(c.setAttribute("type","button"),c.setAttribute("class","apexcharts-breadcrumb-item"),s===0){const d=We.createElementNS($l,"span");d.setAttribute("class","apexcharts-breadcrumb-arrow"),d.textContent="←",c.appendChild(d)}const u=We.createElementNS($l,"span");u.setAttribute("class","apexcharts-breadcrumb-label"),u.textContent=a.name,c.appendChild(u),c.addEventListener("click",()=>{this._focus=a.node,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb()}),o.appendChild(c)}}),n.appendChild(o),this._avoidChromeOverlap(o)}_avoidChromeOverlap(e){PN(this.w,e)}_ptAt(e,n){return{x:this.centerX+e*Math.cos((n-90)*yh),y:this.centerY+e*Math.sin((n-90)*yh)}}_arcPath(e,n,i,o,r){if(n<=e+.01)return"";let a=o-i;const s=this.cfg.spacing;if(s>0&&a>0&&n>0){const f=s/n*bM,h=Math.min(f/2,Math.max(0,a/2-.25));i+=h,o-=h,a=o-i}if(a<=0)return"";const l=a*yh,c=this.centerX,u=this.centerY;let d=r;return d=Math.min(d,l*e/2,l*n/2,(n-e)/2),d>.5?cw({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,r:d,spanDeg:a}):VN({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,spanDeg:a})}_tip(){return this._tooltipEl||(this._tooltipEl=this.w.dom.baseEl.querySelector(".apexcharts-tooltip")),this._tooltipEl}_attachTooltip(e,n){!this.w.config.tooltip.enabled||!Ot.isBrowser()||(e.addEventListener("mouseenter",i=>this._showTooltip(i,n)),e.addEventListener("mousemove",i=>this._positionTooltip(i)),e.addEventListener("mouseleave",()=>this._hideTooltip()))}_showTooltip(e,n){const i=this._tip();if(!i)return;const o=this.w,r=(n.value/this.total*100).toFixed(1),a=n._parent?n._parent.value:this.total,s=a>0?(n.value/a*100).toFixed(1):r,l=o.config.tooltip.fillSeriesColor?`background-color:${n._color};`:"";i.innerHTML=`
${n.name}: ${n.value} (${s}% of parent, ${r}% of total)
`,i.classList.add("apexcharts-active"),i.style.opacity="1",this._positionTooltip(e)}_positionTooltip(e){const n=this._tip();if(!n)return;const i=this.w.dom.elWrap.getBoundingClientRect(),o=n.offsetWidth,r=n.offsetHeight,a=12;let s=e.clientX-i.left+a;s+o>i.width&&(s=e.clientX-i.left-o-a),s=Math.max(0,Math.min(s,i.width-o));let l=e.clientY-i.top+a;l+r>i.height&&(l=e.clientY-i.top-r-a),l=Math.max(0,Math.min(l,i.height-r)),n.style.left=s+"px",n.style.top=l+"px"}_hideTooltip(){const e=this._tip();e&&(e.classList.remove("apexcharts-active"),e.style.opacity="0")}_parseSize(e,n){if(typeof e=="number")return e;const i=String(e).trim();if(i.endsWith("%"))return parseFloat(i)/100*n;const o=parseFloat(i);return isNaN(o)?.15*n:o}_lighten(e,n){if(typeof e!="string"||e[0]!=="#")return e;let i=e.slice(1);if(i.length===3&&(i=i.split("").map(l=>l+l).join("")),i.length!==6)return e;const o=parseInt(i,16);if(isNaN(o))return e;let r=o>>16&255,a=o>>8&255,s=o&255;return r=Math.round(r+(255-r)*n),a=Math.round(a+(255-a)*n),s=Math.round(s+(255-s)*n),"#"+((1<<24)+(r<<16)+(a<<8)+s).toString(16).slice(1)}}Vn.use({line:uu,area:uu,scatter:uu,bubble:uu,rangeArea:uu,bar:Bn,column:Bn,barStacked:ZSe,rangeBar:mCe,candlestick:nM,boxPlot:nM,violin:iCe,pie:fp,donut:fp,polarArea:fp,radialBar:gCe,radar:pCe,heatmap:rCe,treemap:PCe,unit:HCe,sunburst:WCe});Object.defineProperty(Vn,"__internals",{value:Qwe,enumerable:!1,writable:!1,configurable:!1});const yM=["animationEnd","beforeMount","mounted","updated","click","mouseMove","mouseLeave","legendClick","markerClick","selection","dataPointSelection","dataPointMouseEnter","dataPointMouseLeave","beforeZoom","beforeResetZoom","zoomed","scrolled","brushScrolled"],Hg=oe({name:"apexchart",props:{options:{type:Object},type:{type:String},series:{type:Array,required:!0},width:{default:"100%"},height:{default:"auto"}},emits:yM,setup(t,{emit:e}){const n=ae(null),i=ae(null),o=k=>k&&typeof k=="object"&&!Array.isArray(k)&&k!=null,r=(k,E)=>{typeof Object.assign!="function"&&function(){Object.assign=function(D){if(D==null)throw new TypeError("Cannot convert undefined or null to object");let F=Object(D);for(let N=1;N{o(E[D])?D in k?R[D]=r(k[D],E[D]):Object.assign(R,{[D]:E[D]}):Object.assign(R,{[D]:E[D]})}),R},a=k=>JSON.parse(JSON.stringify(k)),s=async()=>{if(await pt(),i.value)return;const k={chart:{type:t.type||t.options.chart&&t.options.chart.type||"line",height:t.height,width:t.width,events:{}},series:a(t.series)},E=t.options.chart?t.options.chart.events:null;yM.forEach(D=>{let F=(...N)=>e(D,...N);k.chart.events[D]=(...N)=>{F(...N),E&&E.hasOwnProperty(D)&&E[D](...N)}});const R=r(t.options,k);return i.value=new Vn(n.value,R),i.value.render()},l=()=>(c(),s()),c=()=>{i.value.destroy(),i.value=null},u=(k,E)=>i.value.updateSeries(k,E),d=(k,E,R,D)=>i.value.updateOptions(k,E,R,D),f=k=>i.value.toggleSeries(k),h=k=>{i.value.showSeries(k)},p=k=>{i.value.hideSeries(k)},g=(k,E)=>i.value.appendSeries(k,E),m=()=>{i.value.resetSeries()},v=(k,E)=>{i.value.toggleDataPointSelection(k,E)},b=k=>i.value.appendData(k),y=(k,E)=>i.value.zoomX(k,E),w=k=>i.value.dataURI(k),x=k=>i.value.setLocale(k),$=(k,E)=>{i.value.addXaxisAnnotation(k,E)},S=(k,E)=>{i.value.addYaxisAnnotation(k,E)},_=(k,E)=>{i.value.addPointAnnotation(k,E)},P=(k,E)=>{i.value.removeAnnotation(k,E)},T=()=>{i.value.clearAnnotations()};Gd(()=>{window.ApexCharts=Vn}),qe(()=>{n.value=Cn().proxy.$el,s()}),at(()=>{i.value&&c()});const O=fo(t);let M=null;const I=k=>{M||(M={options:!1,series:!1},pt(()=>{const E=M;if(M=null,!i.value){s();return}if(E.options&&E.series){const R=a(t.options);R.series=a(t.series),i.value.updateOptions(R)}else E.options?i.value.updateOptions(a(t.options)):E.series&&i.value.updateSeries(a(t.series))})),M[k]=!0};return ye(O.options,()=>{I("options")}),ye(O.series,()=>{I("series")},{deep:!0}),ye(O.type,()=>{l()}),ye(O.width,()=>{l()}),ye(O.height,()=>{l()}),{chart:i,init:s,refresh:l,destroy:c,updateOptions:d,updateSeries:u,toggleSeries:f,showSeries:h,hideSeries:p,resetSeries:m,zoomX:y,toggleDataPointSelection:v,appendData:b,appendSeries:g,addXaxisAnnotation:$,addYaxisAnnotation:S,addPointAnnotation:_,removeAnnotation:P,clearAnnotations:T,setLocale:x,dataURI:w}},render(){return sr("div",{class:"vue-apexcharts"})}}),jCe=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},VCe=oe({name:"apexchart-server",props:{type:{type:String,default:"line"},width:{type:[Number,String],default:400},height:{type:[Number,String],default:300},series:{type:Array,default:()=>[]},options:{type:Object,default:()=>({})},className:{type:String,default:""}},setup(t){const e=ae("");return QI(async()=>{try{const{default:n}=await ze(async()=>{const{default:o}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:o}},[]),i=Object.assign({},t.options,{chart:Object.assign({},t.options.chart,{type:t.type,width:t.width,height:t.height}),series:t.series});e.value=await n.renderToHTML(i,{width:t.width,height:t.height})}catch(n){console.error("Failed to render ApexChart on server:",n)}}),{chartHTML:e}}}),XCe=["innerHTML"];function YCe(t,e,n,i,o,r){return zi(),ns("div",{innerHTML:t.chartHTML,class:Xd(t.className)},null,10,XCe)}const xM=jCe(VCe,[["render",YCe]]),wM=oe({name:"apexchart-hydrate",props:{clientOptions:{type:Object,default:()=>({})},selector:{type:String,default:"[data-apexcharts-hydrate]"}},setup(t){let e=[];qe(async()=>{try{const{default:n}=await ze(async()=>{const{default:i}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:i}},[]);e=n.hydrateAll(t.selector,t.clientOptions)}catch(n){console.error("Failed to hydrate ApexCharts:",n)}}),at(()=>{e.forEach(n=>{n&&n.destroy&&n.destroy()}),e=[]})},render(){return null}}),GCe=t=>{t.component(Hg.name,Hg),t.component(xM.name,xM),t.component(wM.name,wM)};Hg.install=GCe;const KCe={items_per_page:"/ صفحه",jump_to:"برو به",jump_to_confirm:"تایید",page:"",prev_page:"صفحه قبلی",next_page:"صفحه بعدی",prev_5:"۵ صفحه قبلی",next_5:"۵ صفحه بعدی",prev_3:"۳ صفحه قبلی",next_3:"۳ صفحه بعدی"},UCe={locale:"fa_IR",today:"امروز",now:"اکنون",backToToday:"بازگشت به روز",ok:"باشه",clear:"پاک کردن",month:"ماه",year:"سال",timeSelect:"انتخاب زمان",dateSelect:"انتخاب تاریخ",monthSelect:"یک ماه را انتخاب کنید",yearSelect:"یک سال را انتخاب کنید",decadeSelect:"یک دهه را انتخاب کنید",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"ماه قبل (PageUp)",nextMonth:"ماه بعد (PageDown)",previousYear:"سال قبل (Control + left)",nextYear:"سال بعد (Control + right)",previousDecade:"دهه قبل",nextDecade:"دهه بعد",previousCentury:"قرن قبل",nextCentury:"قرن بعد"},GN={placeholder:"انتخاب زمان",rangePlaceholder:["زمان شروع","زمان پایان"]},SM={lang:A({placeholder:"انتخاب تاریخ",yearPlaceholder:"انتخاب سال",quarterPlaceholder:"انتخاب فصل",monthPlaceholder:"انتخاب ماه",weekPlaceholder:"انتخاب هفته",rangePlaceholder:["تاریخ شروع","تاریخ پایان"],rangeYearPlaceholder:["سال شروع","سال پایان"],rangeMonthPlaceholder:["ماه شروع","ماه پایان"],rangeWeekPlaceholder:["هفته شروع","هفته پایان"]},UCe),timePickerLocale:A({},GN)},Fi="${label} از نوع ${type} معتبر نیست",qCe={locale:"fa",Pagination:KCe,DatePicker:SM,TimePicker:GN,Calendar:SM,global:{placeholder:"لطفاً انتخاب کنید"},Table:{filterTitle:"منوی فیلتر",filterConfirm:"تایید",filterReset:"پاک کردن",filterEmptyText:"بدون فیلتر",emptyText:"بدون داده",selectAll:"انتخاب صفحه‌ی کنونی",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی",selectNone:"انتخاب هیچکدام",selectionAll:"انتخاب همه داده‌ها",sortTitle:"مرتب سازی",expand:"باز شدن ردیف",collapse:"بستن ردیف",triggerDesc:"ترتیب نزولی",triggerAsc:"ترتیب صعودی",cancelSort:"لغوِ ترتیبِ داده شده"},Modal:{okText:"تایید",cancelText:"لغو",justOkText:"تایید"},Popconfirm:{okText:"تایید",cancelText:"لغو"},Transfer:{titles:["",""],searchPlaceholder:"جستجو",itemUnit:"عدد",itemsUnit:"عدد",remove:"حذف",selectCurrent:"انتخاب صفحه فعلی",removeCurrent:"پاک کردن انتخاب‌های صفحه فعلی",selectAll:"انتخاب همه",removeAll:"پاک کردن همه انتخاب‌ها",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی"},Upload:{uploading:"در حال آپلود...",removeFile:"حذف فایل",uploadError:"خطا در آپلود",previewFile:"مشاهده‌ی فایل",downloadFile:"دریافت فایل"},Empty:{description:"داده‌ای موجود نیست"},Icon:{icon:"آیکن"},Text:{edit:"ویرایش",copy:"کپی",copied:"کپی شد",expand:"توسعه"},PageHeader:{back:"برگشت"},Form:{optional:"(اختیاری)",defaultValidateMessages:{default:"خطا در ${label}",required:"فیلد ${label} اجباریست",enum:"${label} باید یکی از [${enum}] باشد",whitespace:"${label} نمیتواند خالی باشد",date:{format:"ساختار تاریخ در ${label} نامعتبر است",parse:"${label} قابل تبدیل به تاریخ نیست",invalid:"${label} تاریخی نا معتبر است"},types:{string:Fi,method:Fi,array:Fi,object:Fi,number:Fi,date:Fi,boolean:Fi,integer:Fi,float:Fi,regexp:Fi,email:Fi,url:Fi,hex:Fi},string:{len:"${label} باید ${len} کاراکتر باشد",min:"${label} باید حداقل ${min} کاراکتر باشد",max:"${label} باید حداکثر ${max} کاراکتر باشد",range:"${label} باید بین ${min}-${max} کاراکتر باشد"},number:{len:"${label} باید برابر ${len}",min:"${label} حداقل میتواند ${min} باشد",max:"${label} حداکثر میتواند ${max} باشد",range:"${label} باید بین ${min}-${max} باشد"},array:{len:"تعداد ${label} باید ${len} باشد.",min:"تعداد ${label} حداقل باید ${min} باشد",max:"تعداد ${label} حداکثر باید ${max} باشد",range:"مقدار ${label} باید بین ${min}-${max} باشد"},pattern:{mismatch:"الگوی ${label} با ${pattern} برابری نمی‌کند"}}},Image:{preview:"نمایش"}},id={disableCustomizer:!1,disableThemeTour:!0,footerType:"hidden",hideScrollToTop:!1,mainLayoutType:"vertical",navbarColor:"#fff",navbarType:"floating",routerTransition:"zoom-fade",rtl:!0,sidebarCollapsed:!1,theme:"light",userInfoLocalStorageKey:"userInfo"},ZCe={name:"هدناگلد",nameEn:"Hedena Gold",appTitle:"طلای هدناگلد",adminTitle:"هدناگلد — پنل مدیریت",siteUrl:"https://bnk.montzar.ir"},KN="admin-panel:sidebarCollapsed";function JCe(){if(typeof window>"u")return id.sidebarCollapsed;try{const t=window.localStorage.getItem(KN);return t===null?id.sidebarCollapsed:t==="1"}catch{return id.sidebarCollapsed}}const QCe=Nk("layout",{state:()=>({windowWidth:typeof window<"u"?window.innerWidth:0,scrollY:0,theme:id.theme,isSidebarActive:!0,sidebarCollapsed:JCe(),mobileNavOpen:!1}),getters:{isSmallScreen:t=>t.windowWidth<992,isMobile:t=>t.windowWidth<576},actions:{updateWindowWidth(t){this.windowWidth=t},updateWindowScrollY(t){this.scrollY=t},setMobileNavOpen(t){this.mobileNavOpen=t},toggleSidebar(t){this.isSidebarActive=t??!this.isSidebarActive},setSidebarCollapsed(t){if(this.sidebarCollapsed=t,!(typeof window>"u"))try{window.localStorage.setItem(KN,t?"1":"0")}catch{}}}}),e$e=5*60*1e3,CM=219;function t$e(){const t=ae(null),e=ae(!1),n=L(()=>{const s=t.value;return s?(s.history??[]).filter(l=>l.build>CM&&l.build<=s.build):[]});async function i(){if(!t.value)try{const s=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store"});if(!s.ok)return;const l=await s.json();typeof l.build=="number"&&l.build>CM&&(t.value=l)}catch{}}async function o(){var s,l;e.value=!0;try{const c=await((l=(s=navigator.serviceWorker)==null?void 0:s.getRegistrations)==null?void 0:l.call(s));c&&await Promise.all(c.map(u=>u.unregister()))}catch{}try{if("caches"in window){const c=await caches.keys();await Promise.all(c.map(u=>caches.delete(u)))}}catch{}window.location.reload()}let r;const a=()=>{document.visibilityState==="visible"&&i()};return qe(()=>{i(),r=setInterval(i,e$e),document.addEventListener("visibilitychange",a)}),at(()=>{r&&clearInterval(r),document.removeEventListener("visibilitychange",a)}),{available:t,changes:n,updating:e,applyUpdate:o,check:i}}const n$e={class:"list"},i$e={key:1,class:"lead"},o$e=oe({__name:"AppUpdateGate",setup(t){const{available:e,changes:n,updating:i,applyUpdate:o}=t$e();return(r,a)=>{const s=Iu("a-tag"),l=Iu("a-button"),c=Iu("a-modal");return zi(),cc(c,{open:!!Lt(e),closable:!1,"mask-closable":!1,keyboard:!1,"z-index":2e3,width:"420px",centered:""},{title:ss(()=>[a[0]||(a[0]=Tn(" نسخه‌ی تازه‌ی پنل آماده است ",-1)),Lt(e)?(zi(),cc(s,{key:0,class:"ms-2",color:"blue"},{default:ss(()=>[Tn("نسخه‌ی "+V0(Lt(e).version),1)]),_:1})):xk("",!0)]),footer:ss(()=>[C(l,{type:"primary",block:"",loading:Lt(i),onClick:Lt(o)},{default:ss(()=>[...a[2]||(a[2]=[Tn("به‌روزرسانی",-1)])]),_:1},8,["loading","onClick"])]),default:ss(()=>[Lt(n).length?(zi(),ns(Ge,{key:0},[a[1]||(a[1]=Yl("p",{class:"lead"},"در این نسخه:",-1)),Yl("ul",n$e,[(zi(!0),ns(Ge,null,V$(Lt(n),u=>(zi(),ns(Ge,{key:u.build},[(zi(!0),ns(Ge,null,V$(u.notes,(d,f)=>(zi(),ns("li",{key:u.build+"-"+f},V0(d),1))),128))],64))),128))])],64)):(zi(),ns("p",i$e,"بهبودها و رفع اشکال‌ها.")),a[3]||(a[3]=Yl("p",{class:"hint"},"کار ذخیره‌نشده‌ای اگر در صفحه دارید، پیش از به‌روزرسانی ثبتش کنید.",-1))]),_:1},8,["open"])}}}),r$e=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},a$e=r$e(o$e,[["__scopeId","data-v-12784d02"]]);function BPe(){return!1}function s$e(t){const e="/",n=e.endsWith("/")?e:`${e}/`;return`${window.location.origin}${n}${t.replace(/^\//,"")}`}const $c="token",UN="user",l$e=oe({__name:"App",setup(t){const e={colorPrimary:"#1c2d56",colorLink:"#1DA57A",borderRadius:6,controlHeight:36,colorPrimaryBg:"#eef1f8",colorPrimaryBgHover:"#e1e6f2",colorPrimaryBorder:"#c5cde0",colorPrimaryBorderHover:"#9ea9c6"},n=QCe(),i=ae([]);function o(l){l==="dark"?(document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"),document.body.classList.add("theme-dark")):l==="semi-dark"?(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.classList.add("theme-semi-dark")):(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"))}function r(l){i.value.push(l)}function a(){n.updateWindowWidth(window.innerWidth),document.documentElement.style.setProperty("--vh",`${window.innerHeight*.01}px`)}function s(){n.updateWindowScrollY(window.scrollY)}return ye(()=>n.theme,l=>o(l)),document.documentElement.setAttribute("dir","rtl"),qe(()=>{const l=localStorage.getItem(UN),c=l?JSON.parse(l):void 0,u=localStorage.getItem("login")||void 0;c&&u&&(Vr.open({message:`${c&&c.name?c.name:" کاربر "} عزیز `,placement:"topLeft",description:`به ${ZCe.name} خوش آمدید`,style:{color:"var(--primary-color)",marginLeft:"20px"}}),localStorage.removeItem("login")),o(id.theme),n.updateWindowWidth(window.innerWidth);const d=window.innerHeight*.01;document.documentElement.style.setProperty("--vh",`${d}px`),window.addEventListener("resize",a),window.addEventListener("scroll",s)}),Yn(()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",s)}),(l,c)=>{const u=Iu("router-view"),d=Iu("a-config-provider");return zi(),cc(d,{locale:Lt(qCe),direction:"rtl",theme:{token:e}},{default:ss(()=>[Yl("div",{id:"app",class:Xd(i.value)},[C(u,{onSetAppClasses:r}),C(a$e)],2)]),_:1},8,["locale","theme"])}}});/*! +`)}_outerLabelGutter(e,n){const i=this.w,o=n.clusterLabels,r=o.external.connector||{},a=e.reduce((f,h)=>f+h,0),s=[];if(e.forEach((f,h)=>{f>0&&s.push(...this._outerLabelLines(h,f,a,n))}),!s.length)return 0;const l=cCe(i,s,{fontSize:o.fontSize,fontFamily:o.fontFamily||i.config.chart.fontFamily}),c=r.gap!=null?r.gap:8,u=r.length!=null?r.length:22,d=l+c+u+8+Math.abs(parseFloat(o.external.offsetX)||0);return Math.min(d,i.layout.gridWidth*.25)}_drawOuterLabels(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l=r.clusterLabels,c=l.external,u=c.connector||{},d=u.gap!=null?u.gap:8,f=u.length!=null?u.length:22,h=parseFloat(c.offsetX)||0,p=parseFloat(c.offsetY)||0,g=s.layout.gridWidth,m=s.layout.gridHeight,v=this._lastDotR,b=n.filter(I=>I.dots.length>0);if(!b.length)return;let y=0,w=0;if(b.length>1){const I=b.map(E=>E.cx),k=b.map(E=>E.cy);y=Math.max(...I)-Math.min(...I),w=Math.max(...k)-Math.min(...k)}const x=y>w,$=parseFloat(l.fontSize)||13,S=Math.round($*1.35),_=[];if(b.slice().sort((I,k)=>I.cy-k.cy).forEach((I,k)=>{const E=this._outerLabelLines(I.i,i[I.i],o,r);if(!E.some(W=>W!==""))return;const R=x?I.cx>=g/2?"right":"left":k%2===0?"right":"left",D=R==="right"?1:-1;let F=I.dots[0],N=-1/0;I.dots.forEach(W=>{const j=D*W.x-.75*Math.abs(W.y-I.cy);j>N&&(N=j,F=W)});const B={x:F.x+D*(F.r||v),y:F.y},z={x:B.x+D*d,y:B.y};_.push({i:I.i,lines:E,anchor:B,elbow:z,labelX:z.x+D*f+h,idealY:B.y+p,labelY:B.y+p,side:R})}),!_.length)return;const T=_.reduce((I,k)=>Math.max(I,k.lines.length),1)*S,O=T/2;["left","right"].forEach(I=>{jN(_.filter(k=>k.side===I),T+2,m-O,O)});const M=new Be(s,this.ctx).group({class:"apexcharts-unit-outer-labels"});if(a){const I=Math.max(1,s.config.chart.animations.speed||800);M.node.classList.add("apexcharts-unit-label-delay"),M.node.style.animationDelay=`${Math.min(I*.45,600)/1e3}s`}_.forEach(I=>{const k=s.globals.colors[I.i]||s.globals.colors[0]||"#008FFB";M.add(WN(s,{lines:I.lines,lineHeight:S,anchor:I.anchor,elbow:I.elbow,labelX:I.labelX,labelY:I.labelY,side:I.side,connector:{show:u.show!==!1,width:u.width!=null?u.width:1.5,color:u.color||k},style:{fontSize:l.fontSize,fontFamily:l.fontFamily||s.config.chart.fontFamily,fontWeight:l.fontWeight},foreColor:l.color||s.config.chart.foreColor,groupClass:"apexcharts-unit-outer-label-group",textClass:"apexcharts-unit-outer-label",connectorClass:"apexcharts-unit-label-connector"}))}),e.add(M)}_drawClusterLabel(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l="http://www.w3.org/2000/svg",c=s.seriesData.seriesNames[n.i]||`series-${n.i+1}`,u=o>0?i/o*100:0,d=r.clusterLabels,f=parseFloat(d.fontSize)||13;let h;typeof d.formatter=="function"?h=d.formatter(c,{seriesIndex:n.i,value:i,percent:u,w:s}):h=`${c} (${u.toFixed(1)}%)`;const p=typeof h=="string"?h:String(h),g=We.createElementNS(l,"text");g.setAttribute("class","apexcharts-unit-label"),g.setAttribute("text-anchor","middle"),g.setAttribute("font-size",`${f}px`),g.setAttribute("font-family",d.fontFamily||s.config.chart.fontFamily||"inherit"),g.setAttribute("font-weight",String(d.fontWeight||600)),g.setAttribute("fill",d.color||a);const m=d.position==="bottom",v=n.outerR+f*.6+3+(d.offsetY||0),b=p.length*f*.55;if(!m&&!n.flat&&d.curved!==!1&&b<=Math.PI*v*.95){const w=n.cy,x=n.cx-v,$=n.cx+v,S=`M ${x} ${w} A ${v} ${v} 0 0 1 ${$} ${w}`,_=`apexcharts-unit-label-${s.globals.chartID}-${n.i}`,P=We.createElementNS(l,"path");P.setAttribute("id",_),P.setAttribute("d",S),P.setAttribute("fill","none"),P.setAttribute("stroke","none");const T=We.createElementNS(l,"textPath");T.setAttribute("href",`#${_}`),T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`#${_}`),T.setAttribute("startOffset","50%"),T.textContent=p,g.appendChild(T),e.node.appendChild(P)}else{g.setAttribute("x",String(n.cx));const w=m?n.cy+n.outerR+f+6+(d.offsetY||0):n.cy-n.outerR-6-(d.offsetY||0);g.setAttribute("y",String(w)),g.textContent=p}e.node.appendChild(g)}}const yh=Math.PI/180,bM=180/Math.PI,I0="http://www.w3.org/2000/svg",$l="http://www.w3.org/1999/xhtml",du=(t,e,n)=>t+(e-t)*n;class WCe{constructor(e,n){this.ctx=n,this.w=e;const i=e.config;this.cfg=i.plotOptions.sunburst,this.strokeWidth=i.stroke.show?i.stroke.width:0,this.strokeColor=Array.isArray(i.stroke.colors)?i.stroke.colors[0]:i.stroke.colors||"#fff",this.startAngle=this.cfg.startAngle,this.endAngle=this.cfg.endAngle,this.maxDepth=0,this.centerX=0,this.centerY=0,this.maxRadius=0,this.total=1,this._focusMaxDepth=0,this._focus=null,this._zoomGen=0,this._roots=[],this._nodesAll=[],this._innerR=()=>0,this._outerR=()=>0,this._tooltipEl=null,this._lblSeq=0,this._morphLeafIndex=0,this._graphics=null,this._ringsG=null,this._labelsG=null}draw(e){const n=this.w,i=new Be(this.w);this._graphics=i;const o=i.group({class:"apexcharts-sunburst"});if(n.globals.noData||!e||!e.length)return o;const r=n.layout.gridWidth,a=n.layout.gridHeight;if(this.centerX=r/2+(this.cfg.offsetX||0),this.centerY=a/2+(this.cfg.offsetY||0),this.maxRadius=Math.min(r,a)/2.05-this.strokeWidth-(n.config.chart.sparkline.enabled?0:n.config.chart.dropShadow.blur),this.maxRadius<5||(this._roots=this._buildHierarchy(),!this._roots.length))return o;this._roots.forEach(u=>this._fillValues(u)),this._validateStrict(),this._nodesAll=[];const s=n.globals.colors||[];this._roots.forEach((u,d)=>{this._colorPass(u,u.color||s[d%s.length]||"#008FFB")}),this.total=this._roots.reduce((u,d)=>u+Math.max(0,d.value),0)||1,this._ringsG=i.group({class:"apexcharts-sunburst-rings"}),this._labelsG=i.group({class:"apexcharts-sunburst-labels"}),o.add(this._ringsG),o.add(this._labelsG),this._focus=null,this._relayout(this._focus);const l=n.config.chart.animations;let c="none";return l.enabled&&(n.globals.dataChanged?l.dynamicAnimation.enabled&&(c="update"):n.globals.resized||(c="intro")),this._applyLayout(c),this._renderBreadcrumb(),o}_buildHierarchy(){return SCe(this.w)}_fillValues(e){p$(e)}_validateStrict(){if(this.cfg.partition!=="strict")return;let e=!1;const n=i=>{if(i.children&&i.children.length){const o=i.children.reduce((r,a)=>r+Math.max(0,a.value||0),0);!e&&i.value!=null&&Math.abs(o-i.value)>.5&&(console.warn(`ApexCharts sunburst: partition 'strict' but "${i.name}" (${i.value}) != sum of its children (${o}). Angles are normalized to fill the wedge.`),e=!0),i.children.forEach(n)}};this._roots.forEach(n)}_colorPass(e,n){e._color=e.color||n,this._nodesAll.push(e),e.children&&e.children.forEach(i=>this._colorPass(i,i.color||this._lighten(e._color,this.cfg.tint)))}_relayout(e){if(this._nodesAll.forEach(a=>{a._show=!1}),this._focusMaxDepth=0,e)this._placeVis(e,0,this.startAngle,this.endAngle,e._parent);else{const a=this._roots.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=this.startAngle;this._roots.forEach(l=>{const c=(this.endAngle-this.startAngle)*Math.max(0,l.value)/a;this._placeVis(l,0,s,s+c,null),s+=c})}const n=this._parseSize(this.cfg.innerSize,this.maxRadius),i=this._focusMaxDepth+1,o=(this.maxRadius-n)/i,r=i>1?1:0;this._innerR=a=>n+a*o+(a>0?r/2:0),this._outerR=a=>n+(a+1)*o-r/2,this._nodesAll.forEach(a=>{a._show&&(a._iR=this._innerR(a._vDepth),a._oR=a._leaf&&this.cfg.leaf==="extend"&&a._vDepththis._focusMaxDepth&&(this._focusMaxDepth=n),!e._leaf){const a=e.children.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=i;e.children.forEach(l=>{const c=(o-i)*Math.max(0,l.value)/a;this._placeVis(l,n+1,s,s+c,e),s+=c})}}_applyLayout(e){var n;const o=this.w.config.chart.animations,r=o.enabled?e==="none"?0:e==="update"?o.dynamicAnimation.speed||350:o.speed||500:0,a=++this._zoomGen,s=(n=this.ctx)==null?void 0:n.morphTypeChange,l=!!s&&typeof s.isActive=="function"&&s.isActive()&&typeof s.getInitialPathAt=="function",c=l?s.getSpeed():0;this._morphLeafIndex=0;const u=e==="update"?this.ctx._sunburstPrevGeoms:null;this._nodesAll.forEach(f=>{if(f._show){const h={a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR};f._el||(f._el=this._createArcEl(f));const p=l?this._morphSourceFor(f):null;if(p&&c>0)this._morphArcFrom(f,p,h,c,a);else if((e==="intro"||l)&&r>0)this._sweepArc(f,h,l?c:r,a);else{let g,m=!1;if(f._cur)g=f._cur;else if(u&&u.get(f._key))g=u.get(f._key);else{const v=(h.a0+h.a1)/2;g={a0:v,a1:v,iR:h.iR,oR:h.iR},m=!0}this._animateArc(f,g,h,r,!1,m,a)}}else if(f._el&&f._cur){const h=(f._cur.a0+f._cur.a1)/2,p={a0:h,a1:h,iR:f._cur.iR,oR:f._cur.iR};this._animateArc(f,f._cur,p,r,!0,!1,a)}});const d=new Map;this._nodesAll.forEach(f=>{f._show&&d.set(f._key,{a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR})}),this.ctx._sunburstPrevGeoms=d,this._renderLabels(r)}_morphSourceFor(e){const n=this.ctx,i=n&&n.morphTypeChange;return i?typeof i.hasKeyedMarks=="function"&&i.hasKeyedMarks()&&typeof i.getInitialPathForKey=="function"?i.getInitialPathForKey(nd(e._key)):e.children&&e.children.length?null:i.getInitialPathAt(this._morphLeafIndex++):null}_morphArcFrom(e,n,i,o,r){const a=e._el,s=this._arcPath(i.iR,i.oR,i.a0,i.a1,this.cfg.borderRadius);a.node.style.display="",a.attr({d:n,opacity:1}),e._cur=i,this._zoomGen===r&&new Gs(this.w,this.ctx).morphSVG(a,0,null,e._color,n,s,o,0)}_sweepArc(e,n,i,o){const r=e._el,a=this.cfg.borderRadius,s=this.startAngle,l=this.endAngle;r.node.style.display="",r.attr({d:"",opacity:1}),r.animate(i).during(c=>{if(this._zoomGen!==o)return;const u=s+(l-s)*c;if(u<=n.a0+.01){r.attr({d:""});return}const d=Math.min(n.a1,u);r.attr({d:this._arcPath(n.iR,n.oR,n.a0,d,a)}),e._cur={a0:n.a0,a1:d,iR:n.iR,oR:n.oR}}).after(()=>{this._zoomGen===o&&(e._cur=n)})}_createArcEl(e){const n=this._graphics.drawPath({d:"",fill:e._color,stroke:this.strokeColor,strokeWidth:this.strokeWidth,fillOpacity:1,classes:"apexcharts-sunburst-arc"}),i=n.node;return i.setAttribute("data:name",e.name),i.setAttribute("data:value",String(e.value)),i.setAttribute("data:key",nd(e._key)),i.setAttribute("data:leaf",String(!(e.children&&e.children.length))),this._attachTooltip(i,e),Ot.isBrowser()&&(i.addEventListener("click",()=>this._zoomTo(e)),i.style.cursor="pointer"),this._ringsG.add(n),n}_animateArc(e,n,i,o,r,a,s){const l=e._el,c=this.cfg.borderRadius;if(l.attr({fill:e._color}),o===0){l.attr({d:this._arcPath(i.iR,i.oR,i.a0,i.a1,c),opacity:r?0:1}),l.node.style.display=r?"none":"",e._cur=r?null:i;return}l.node.style.display="";const u=r?Number(l.attr("opacity"))||1:a?0:1,d=r?0:1;l.attr({opacity:u}),l.animate(o).during(f=>{if(this._zoomGen!==s)return;const h=du(n.a0,i.a0,f),p=du(n.a1,i.a1,f),g=du(n.iR,i.iR,f),m=du(n.oR,i.oR,f);l.attr({d:this._arcPath(g,m,h,p,c),opacity:du(u,d,f)}),e._cur={a0:h,a1:p,iR:g,oR:m}}).after(()=>{this._zoomGen===s&&(r?(l.node.style.display="none",e._cur=null):e._cur=i)})}_renderLabels(e){const n=this._labelsG;for(;n.node.firstChild;)n.node.removeChild(n.node.firstChild);this.cfg.dataLabels.show&&(this._nodesAll.forEach(i=>{i._show&&(i._a1-i._a00?(n.attr({opacity:0}),n.animate(250,e).attr({opacity:1})):n.attr({opacity:1}))}_renderCurvedLabel(e){if(!Ot.isBrowser())return;const n=this.cfg.dataLabels.style,i=this.w,o=(e._iR+e._oR)/2,r=(e._a0+e._a1)/2,a=r>90&&r<270,s=Math.min(o>0?4/o*bM:0,(e._a1-e._a0)/2),l=a?e._a1-s:e._a0+s,c=a?e._a0+s:e._a1-s,u=this._ptAt(o,l),d=this._ptAt(o,c),f=Math.abs(c-l)>180?1:0,h=a?0:1,p=`apx-sb-lbl-${i.globals.cuid}-${this._lblSeq++}`,g=We.createElementNS(I0,"path");g.setAttribute("id",p),g.setAttribute("d",`M ${u.x} ${u.y} A ${o} ${o} 0 ${f} ${h} ${d.x} ${d.y}`),g.setAttribute("fill","none"),g.setAttribute("stroke","none");const m=n.colors,v=(Array.isArray(m)?m[0]:m)||"#fff",b=We.createElementNS(I0,"text");b.setAttribute("font-size",n.fontSize||"12px"),n.fontFamily&&b.setAttribute("font-family",n.fontFamily),b.setAttribute("font-weight",String(n.fontWeight||400)),b.setAttribute("fill",v),b.setAttribute("dominant-baseline","central"),b.style.pointerEvents="none";const y=We.createElementNS(I0,"textPath");y.setAttribute("href","#"+p),y.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","#"+p),y.setAttribute("startOffset","50%"),y.setAttribute("text-anchor","middle"),y.textContent=this._truncate(e.name,o,e._a1-e._a0,n.fontSize),b.appendChild(y),this._labelsG.node.appendChild(g),this._labelsG.node.appendChild(b)}_truncate(e,n,i,o){const r=n*i*yh-8,a=(parseFloat(o)||12)*.58,s=Math.floor(r/a);return s>=e.length?e:s<=1?"":e.slice(0,Math.max(1,s-1))+"…"}_zoomTo(e){if(this.cfg.zoomOnClick===!1)return;const n=e===this._focus?e._parent||null:e;n!==this._focus&&(this._focus=n&&!(n.children&&n.children.length)?n._parent||null:n,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb())}_focusChain(){const e=[];let n=this._focus;for(;n;)e.unshift(n),n=n._parent;return e}_renderBreadcrumb(){if(!Ot.isBrowser())return;const n=this.w.dom.elWrap;if(!n)return;const i=n.querySelector(".apexcharts-breadcrumb");if(i&&i.parentNode&&i.parentNode.removeChild(i),!this._focus)return;const o=We.createElementNS($l,"nav");o.setAttribute("class","apexcharts-breadcrumb"),o.setAttribute("aria-label","Sunburst breadcrumb"),o.style.position="absolute",o.style.top="0px",o.style.left="0px";const r=[{name:"All",node:null}].concat(this._focusChain().map(a=>({name:a.name,node:a})));r.forEach((a,s)=>{if(s>0){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-separator"),c.textContent=" / ",o.appendChild(c)}if(s===r.length-1){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),c.textContent=a.name,o.appendChild(c)}else{const c=We.createElementNS($l,"button");if(c.setAttribute("type","button"),c.setAttribute("class","apexcharts-breadcrumb-item"),s===0){const d=We.createElementNS($l,"span");d.setAttribute("class","apexcharts-breadcrumb-arrow"),d.textContent="←",c.appendChild(d)}const u=We.createElementNS($l,"span");u.setAttribute("class","apexcharts-breadcrumb-label"),u.textContent=a.name,c.appendChild(u),c.addEventListener("click",()=>{this._focus=a.node,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb()}),o.appendChild(c)}}),n.appendChild(o),this._avoidChromeOverlap(o)}_avoidChromeOverlap(e){PN(this.w,e)}_ptAt(e,n){return{x:this.centerX+e*Math.cos((n-90)*yh),y:this.centerY+e*Math.sin((n-90)*yh)}}_arcPath(e,n,i,o,r){if(n<=e+.01)return"";let a=o-i;const s=this.cfg.spacing;if(s>0&&a>0&&n>0){const f=s/n*bM,h=Math.min(f/2,Math.max(0,a/2-.25));i+=h,o-=h,a=o-i}if(a<=0)return"";const l=a*yh,c=this.centerX,u=this.centerY;let d=r;return d=Math.min(d,l*e/2,l*n/2,(n-e)/2),d>.5?cw({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,r:d,spanDeg:a}):VN({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,spanDeg:a})}_tip(){return this._tooltipEl||(this._tooltipEl=this.w.dom.baseEl.querySelector(".apexcharts-tooltip")),this._tooltipEl}_attachTooltip(e,n){!this.w.config.tooltip.enabled||!Ot.isBrowser()||(e.addEventListener("mouseenter",i=>this._showTooltip(i,n)),e.addEventListener("mousemove",i=>this._positionTooltip(i)),e.addEventListener("mouseleave",()=>this._hideTooltip()))}_showTooltip(e,n){const i=this._tip();if(!i)return;const o=this.w,r=(n.value/this.total*100).toFixed(1),a=n._parent?n._parent.value:this.total,s=a>0?(n.value/a*100).toFixed(1):r,l=o.config.tooltip.fillSeriesColor?`background-color:${n._color};`:"";i.innerHTML=`
${n.name}: ${n.value} (${s}% of parent, ${r}% of total)
`,i.classList.add("apexcharts-active"),i.style.opacity="1",this._positionTooltip(e)}_positionTooltip(e){const n=this._tip();if(!n)return;const i=this.w.dom.elWrap.getBoundingClientRect(),o=n.offsetWidth,r=n.offsetHeight,a=12;let s=e.clientX-i.left+a;s+o>i.width&&(s=e.clientX-i.left-o-a),s=Math.max(0,Math.min(s,i.width-o));let l=e.clientY-i.top+a;l+r>i.height&&(l=e.clientY-i.top-r-a),l=Math.max(0,Math.min(l,i.height-r)),n.style.left=s+"px",n.style.top=l+"px"}_hideTooltip(){const e=this._tip();e&&(e.classList.remove("apexcharts-active"),e.style.opacity="0")}_parseSize(e,n){if(typeof e=="number")return e;const i=String(e).trim();if(i.endsWith("%"))return parseFloat(i)/100*n;const o=parseFloat(i);return isNaN(o)?.15*n:o}_lighten(e,n){if(typeof e!="string"||e[0]!=="#")return e;let i=e.slice(1);if(i.length===3&&(i=i.split("").map(l=>l+l).join("")),i.length!==6)return e;const o=parseInt(i,16);if(isNaN(o))return e;let r=o>>16&255,a=o>>8&255,s=o&255;return r=Math.round(r+(255-r)*n),a=Math.round(a+(255-a)*n),s=Math.round(s+(255-s)*n),"#"+((1<<24)+(r<<16)+(a<<8)+s).toString(16).slice(1)}}Vn.use({line:uu,area:uu,scatter:uu,bubble:uu,rangeArea:uu,bar:Bn,column:Bn,barStacked:ZSe,rangeBar:mCe,candlestick:nM,boxPlot:nM,violin:iCe,pie:fp,donut:fp,polarArea:fp,radialBar:gCe,radar:pCe,heatmap:rCe,treemap:PCe,unit:HCe,sunburst:WCe});Object.defineProperty(Vn,"__internals",{value:Qwe,enumerable:!1,writable:!1,configurable:!1});const yM=["animationEnd","beforeMount","mounted","updated","click","mouseMove","mouseLeave","legendClick","markerClick","selection","dataPointSelection","dataPointMouseEnter","dataPointMouseLeave","beforeZoom","beforeResetZoom","zoomed","scrolled","brushScrolled"],Hg=oe({name:"apexchart",props:{options:{type:Object},type:{type:String},series:{type:Array,required:!0},width:{default:"100%"},height:{default:"auto"}},emits:yM,setup(t,{emit:e}){const n=ae(null),i=ae(null),o=k=>k&&typeof k=="object"&&!Array.isArray(k)&&k!=null,r=(k,E)=>{typeof Object.assign!="function"&&function(){Object.assign=function(D){if(D==null)throw new TypeError("Cannot convert undefined or null to object");let F=Object(D);for(let N=1;N{o(E[D])?D in k?R[D]=r(k[D],E[D]):Object.assign(R,{[D]:E[D]}):Object.assign(R,{[D]:E[D]})}),R},a=k=>JSON.parse(JSON.stringify(k)),s=async()=>{if(await pt(),i.value)return;const k={chart:{type:t.type||t.options.chart&&t.options.chart.type||"line",height:t.height,width:t.width,events:{}},series:a(t.series)},E=t.options.chart?t.options.chart.events:null;yM.forEach(D=>{let F=(...N)=>e(D,...N);k.chart.events[D]=(...N)=>{F(...N),E&&E.hasOwnProperty(D)&&E[D](...N)}});const R=r(t.options,k);return i.value=new Vn(n.value,R),i.value.render()},l=()=>(c(),s()),c=()=>{i.value.destroy(),i.value=null},u=(k,E)=>i.value.updateSeries(k,E),d=(k,E,R,D)=>i.value.updateOptions(k,E,R,D),f=k=>i.value.toggleSeries(k),h=k=>{i.value.showSeries(k)},p=k=>{i.value.hideSeries(k)},g=(k,E)=>i.value.appendSeries(k,E),m=()=>{i.value.resetSeries()},v=(k,E)=>{i.value.toggleDataPointSelection(k,E)},b=k=>i.value.appendData(k),y=(k,E)=>i.value.zoomX(k,E),w=k=>i.value.dataURI(k),x=k=>i.value.setLocale(k),$=(k,E)=>{i.value.addXaxisAnnotation(k,E)},S=(k,E)=>{i.value.addYaxisAnnotation(k,E)},_=(k,E)=>{i.value.addPointAnnotation(k,E)},P=(k,E)=>{i.value.removeAnnotation(k,E)},T=()=>{i.value.clearAnnotations()};Gd(()=>{window.ApexCharts=Vn}),qe(()=>{n.value=Cn().proxy.$el,s()}),at(()=>{i.value&&c()});const O=fo(t);let M=null;const I=k=>{M||(M={options:!1,series:!1},pt(()=>{const E=M;if(M=null,!i.value){s();return}if(E.options&&E.series){const R=a(t.options);R.series=a(t.series),i.value.updateOptions(R)}else E.options?i.value.updateOptions(a(t.options)):E.series&&i.value.updateSeries(a(t.series))})),M[k]=!0};return ye(O.options,()=>{I("options")}),ye(O.series,()=>{I("series")},{deep:!0}),ye(O.type,()=>{l()}),ye(O.width,()=>{l()}),ye(O.height,()=>{l()}),{chart:i,init:s,refresh:l,destroy:c,updateOptions:d,updateSeries:u,toggleSeries:f,showSeries:h,hideSeries:p,resetSeries:m,zoomX:y,toggleDataPointSelection:v,appendData:b,appendSeries:g,addXaxisAnnotation:$,addYaxisAnnotation:S,addPointAnnotation:_,removeAnnotation:P,clearAnnotations:T,setLocale:x,dataURI:w}},render(){return sr("div",{class:"vue-apexcharts"})}}),jCe=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},VCe=oe({name:"apexchart-server",props:{type:{type:String,default:"line"},width:{type:[Number,String],default:400},height:{type:[Number,String],default:300},series:{type:Array,default:()=>[]},options:{type:Object,default:()=>({})},className:{type:String,default:""}},setup(t){const e=ae("");return QI(async()=>{try{const{default:n}=await ze(async()=>{const{default:o}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:o}},[]),i=Object.assign({},t.options,{chart:Object.assign({},t.options.chart,{type:t.type,width:t.width,height:t.height}),series:t.series});e.value=await n.renderToHTML(i,{width:t.width,height:t.height})}catch(n){console.error("Failed to render ApexChart on server:",n)}}),{chartHTML:e}}}),XCe=["innerHTML"];function YCe(t,e,n,i,o,r){return zi(),ns("div",{innerHTML:t.chartHTML,class:Xd(t.className)},null,10,XCe)}const xM=jCe(VCe,[["render",YCe]]),wM=oe({name:"apexchart-hydrate",props:{clientOptions:{type:Object,default:()=>({})},selector:{type:String,default:"[data-apexcharts-hydrate]"}},setup(t){let e=[];qe(async()=>{try{const{default:n}=await ze(async()=>{const{default:i}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:i}},[]);e=n.hydrateAll(t.selector,t.clientOptions)}catch(n){console.error("Failed to hydrate ApexCharts:",n)}}),at(()=>{e.forEach(n=>{n&&n.destroy&&n.destroy()}),e=[]})},render(){return null}}),GCe=t=>{t.component(Hg.name,Hg),t.component(xM.name,xM),t.component(wM.name,wM)};Hg.install=GCe;const KCe={items_per_page:"/ صفحه",jump_to:"برو به",jump_to_confirm:"تایید",page:"",prev_page:"صفحه قبلی",next_page:"صفحه بعدی",prev_5:"۵ صفحه قبلی",next_5:"۵ صفحه بعدی",prev_3:"۳ صفحه قبلی",next_3:"۳ صفحه بعدی"},UCe={locale:"fa_IR",today:"امروز",now:"اکنون",backToToday:"بازگشت به روز",ok:"باشه",clear:"پاک کردن",month:"ماه",year:"سال",timeSelect:"انتخاب زمان",dateSelect:"انتخاب تاریخ",monthSelect:"یک ماه را انتخاب کنید",yearSelect:"یک سال را انتخاب کنید",decadeSelect:"یک دهه را انتخاب کنید",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"ماه قبل (PageUp)",nextMonth:"ماه بعد (PageDown)",previousYear:"سال قبل (Control + left)",nextYear:"سال بعد (Control + right)",previousDecade:"دهه قبل",nextDecade:"دهه بعد",previousCentury:"قرن قبل",nextCentury:"قرن بعد"},GN={placeholder:"انتخاب زمان",rangePlaceholder:["زمان شروع","زمان پایان"]},SM={lang:A({placeholder:"انتخاب تاریخ",yearPlaceholder:"انتخاب سال",quarterPlaceholder:"انتخاب فصل",monthPlaceholder:"انتخاب ماه",weekPlaceholder:"انتخاب هفته",rangePlaceholder:["تاریخ شروع","تاریخ پایان"],rangeYearPlaceholder:["سال شروع","سال پایان"],rangeMonthPlaceholder:["ماه شروع","ماه پایان"],rangeWeekPlaceholder:["هفته شروع","هفته پایان"]},UCe),timePickerLocale:A({},GN)},Fi="${label} از نوع ${type} معتبر نیست",qCe={locale:"fa",Pagination:KCe,DatePicker:SM,TimePicker:GN,Calendar:SM,global:{placeholder:"لطفاً انتخاب کنید"},Table:{filterTitle:"منوی فیلتر",filterConfirm:"تایید",filterReset:"پاک کردن",filterEmptyText:"بدون فیلتر",emptyText:"بدون داده",selectAll:"انتخاب صفحه‌ی کنونی",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی",selectNone:"انتخاب هیچکدام",selectionAll:"انتخاب همه داده‌ها",sortTitle:"مرتب سازی",expand:"باز شدن ردیف",collapse:"بستن ردیف",triggerDesc:"ترتیب نزولی",triggerAsc:"ترتیب صعودی",cancelSort:"لغوِ ترتیبِ داده شده"},Modal:{okText:"تایید",cancelText:"لغو",justOkText:"تایید"},Popconfirm:{okText:"تایید",cancelText:"لغو"},Transfer:{titles:["",""],searchPlaceholder:"جستجو",itemUnit:"عدد",itemsUnit:"عدد",remove:"حذف",selectCurrent:"انتخاب صفحه فعلی",removeCurrent:"پاک کردن انتخاب‌های صفحه فعلی",selectAll:"انتخاب همه",removeAll:"پاک کردن همه انتخاب‌ها",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی"},Upload:{uploading:"در حال آپلود...",removeFile:"حذف فایل",uploadError:"خطا در آپلود",previewFile:"مشاهده‌ی فایل",downloadFile:"دریافت فایل"},Empty:{description:"داده‌ای موجود نیست"},Icon:{icon:"آیکن"},Text:{edit:"ویرایش",copy:"کپی",copied:"کپی شد",expand:"توسعه"},PageHeader:{back:"برگشت"},Form:{optional:"(اختیاری)",defaultValidateMessages:{default:"خطا در ${label}",required:"فیلد ${label} اجباریست",enum:"${label} باید یکی از [${enum}] باشد",whitespace:"${label} نمیتواند خالی باشد",date:{format:"ساختار تاریخ در ${label} نامعتبر است",parse:"${label} قابل تبدیل به تاریخ نیست",invalid:"${label} تاریخی نا معتبر است"},types:{string:Fi,method:Fi,array:Fi,object:Fi,number:Fi,date:Fi,boolean:Fi,integer:Fi,float:Fi,regexp:Fi,email:Fi,url:Fi,hex:Fi},string:{len:"${label} باید ${len} کاراکتر باشد",min:"${label} باید حداقل ${min} کاراکتر باشد",max:"${label} باید حداکثر ${max} کاراکتر باشد",range:"${label} باید بین ${min}-${max} کاراکتر باشد"},number:{len:"${label} باید برابر ${len}",min:"${label} حداقل میتواند ${min} باشد",max:"${label} حداکثر میتواند ${max} باشد",range:"${label} باید بین ${min}-${max} باشد"},array:{len:"تعداد ${label} باید ${len} باشد.",min:"تعداد ${label} حداقل باید ${min} باشد",max:"تعداد ${label} حداکثر باید ${max} باشد",range:"مقدار ${label} باید بین ${min}-${max} باشد"},pattern:{mismatch:"الگوی ${label} با ${pattern} برابری نمی‌کند"}}},Image:{preview:"نمایش"}},id={disableCustomizer:!1,disableThemeTour:!0,footerType:"hidden",hideScrollToTop:!1,mainLayoutType:"vertical",navbarColor:"#fff",navbarType:"floating",routerTransition:"zoom-fade",rtl:!0,sidebarCollapsed:!1,theme:"light",userInfoLocalStorageKey:"userInfo"},ZCe={name:"هدناگلد",nameEn:"Hedena Gold",appTitle:"طلای هدناگلد",adminTitle:"هدناگلد — پنل مدیریت",siteUrl:"https://bnk.montzar.ir"},KN="admin-panel:sidebarCollapsed";function JCe(){if(typeof window>"u")return id.sidebarCollapsed;try{const t=window.localStorage.getItem(KN);return t===null?id.sidebarCollapsed:t==="1"}catch{return id.sidebarCollapsed}}const QCe=Nk("layout",{state:()=>({windowWidth:typeof window<"u"?window.innerWidth:0,scrollY:0,theme:id.theme,isSidebarActive:!0,sidebarCollapsed:JCe(),mobileNavOpen:!1}),getters:{isSmallScreen:t=>t.windowWidth<992,isMobile:t=>t.windowWidth<576},actions:{updateWindowWidth(t){this.windowWidth=t},updateWindowScrollY(t){this.scrollY=t},setMobileNavOpen(t){this.mobileNavOpen=t},toggleSidebar(t){this.isSidebarActive=t??!this.isSidebarActive},setSidebarCollapsed(t){if(this.sidebarCollapsed=t,!(typeof window>"u"))try{window.localStorage.setItem(KN,t?"1":"0")}catch{}}}}),e$e=5*60*1e3,CM=226;function t$e(){const t=ae(null),e=ae(!1),n=L(()=>{const s=t.value;return s?(s.history??[]).filter(l=>l.build>CM&&l.build<=s.build):[]});async function i(){if(!t.value)try{const s=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store"});if(!s.ok)return;const l=await s.json();typeof l.build=="number"&&l.build>CM&&(t.value=l)}catch{}}async function o(){var s,l;e.value=!0;try{const c=await((l=(s=navigator.serviceWorker)==null?void 0:s.getRegistrations)==null?void 0:l.call(s));c&&await Promise.all(c.map(u=>u.unregister()))}catch{}try{if("caches"in window){const c=await caches.keys();await Promise.all(c.map(u=>caches.delete(u)))}}catch{}window.location.reload()}let r;const a=()=>{document.visibilityState==="visible"&&i()};return qe(()=>{i(),r=setInterval(i,e$e),document.addEventListener("visibilitychange",a)}),at(()=>{r&&clearInterval(r),document.removeEventListener("visibilitychange",a)}),{available:t,changes:n,updating:e,applyUpdate:o,check:i}}const n$e={class:"list"},i$e={key:1,class:"lead"},o$e=oe({__name:"AppUpdateGate",setup(t){const{available:e,changes:n,updating:i,applyUpdate:o}=t$e();return(r,a)=>{const s=Iu("a-tag"),l=Iu("a-button"),c=Iu("a-modal");return zi(),cc(c,{open:!!Lt(e),closable:!1,"mask-closable":!1,keyboard:!1,"z-index":2e3,width:"420px",centered:""},{title:ss(()=>[a[0]||(a[0]=Tn(" نسخه‌ی تازه‌ی پنل آماده است ",-1)),Lt(e)?(zi(),cc(s,{key:0,class:"ms-2",color:"blue"},{default:ss(()=>[Tn("نسخه‌ی "+V0(Lt(e).version),1)]),_:1})):xk("",!0)]),footer:ss(()=>[C(l,{type:"primary",block:"",loading:Lt(i),onClick:Lt(o)},{default:ss(()=>[...a[2]||(a[2]=[Tn("به‌روزرسانی",-1)])]),_:1},8,["loading","onClick"])]),default:ss(()=>[Lt(n).length?(zi(),ns(Ge,{key:0},[a[1]||(a[1]=Yl("p",{class:"lead"},"در این نسخه:",-1)),Yl("ul",n$e,[(zi(!0),ns(Ge,null,V$(Lt(n),u=>(zi(),ns(Ge,{key:u.build},[(zi(!0),ns(Ge,null,V$(u.notes,(d,f)=>(zi(),ns("li",{key:u.build+"-"+f},V0(d),1))),128))],64))),128))])],64)):(zi(),ns("p",i$e,"بهبودها و رفع اشکال‌ها.")),a[3]||(a[3]=Yl("p",{class:"hint"},"کار ذخیره‌نشده‌ای اگر در صفحه دارید، پیش از به‌روزرسانی ثبتش کنید.",-1))]),_:1},8,["open"])}}}),r$e=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},a$e=r$e(o$e,[["__scopeId","data-v-12784d02"]]);function BPe(){return!1}function s$e(t){const e="/",n=e.endsWith("/")?e:`${e}/`;return`${window.location.origin}${n}${t.replace(/^\//,"")}`}const $c="token",UN="user",l$e=oe({__name:"App",setup(t){const e={colorPrimary:"#1c2d56",colorLink:"#1DA57A",borderRadius:6,controlHeight:36,colorPrimaryBg:"#eef1f8",colorPrimaryBgHover:"#e1e6f2",colorPrimaryBorder:"#c5cde0",colorPrimaryBorderHover:"#9ea9c6"},n=QCe(),i=ae([]);function o(l){l==="dark"?(document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"),document.body.classList.add("theme-dark")):l==="semi-dark"?(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.classList.add("theme-semi-dark")):(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"))}function r(l){i.value.push(l)}function a(){n.updateWindowWidth(window.innerWidth),document.documentElement.style.setProperty("--vh",`${window.innerHeight*.01}px`)}function s(){n.updateWindowScrollY(window.scrollY)}return ye(()=>n.theme,l=>o(l)),document.documentElement.setAttribute("dir","rtl"),qe(()=>{const l=localStorage.getItem(UN),c=l?JSON.parse(l):void 0,u=localStorage.getItem("login")||void 0;c&&u&&(Vr.open({message:`${c&&c.name?c.name:" کاربر "} عزیز `,placement:"topLeft",description:`به ${ZCe.name} خوش آمدید`,style:{color:"var(--primary-color)",marginLeft:"20px"}}),localStorage.removeItem("login")),o(id.theme),n.updateWindowWidth(window.innerWidth);const d=window.innerHeight*.01;document.documentElement.style.setProperty("--vh",`${d}px`),window.addEventListener("resize",a),window.addEventListener("scroll",s)}),Yn(()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",s)}),(l,c)=>{const u=Iu("router-view"),d=Iu("a-config-provider");return zi(),cc(d,{locale:Lt(qCe),direction:"rtl",theme:{token:e}},{default:ss(()=>[Yl("div",{id:"app",class:Xd(i.value)},[C(u,{onSetAppClasses:r}),C(a$e)],2)]),_:1},8,["locale","theme"])}}});/*! * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT @@ -2474,7 +2474,7 @@ ${s.toFixed(1)}%`;return String(c).split(` * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let j$e=()=>location.protocol+"//"+location.host;function r8(t,e){const{pathname:n,search:i,hash:o}=e,r=t.indexOf("#");if(r>-1){let a=o.includes(t.slice(r))?t.slice(r).length:1,s=o.slice(a);return s[0]!=="/"&&(s="/"+s),AM(s,"")}return AM(n,t)+i+o}function V$e(t,e,n,i){let o=[],r=[],a=null;const s=({state:f})=>{const h=r8(t,location),p=n.value,g=e.value;let m=0;if(f){if(n.value=h,e.value=f,a&&a===p){a=null;return}m=g?f.position-g.position:0}else i(h);o.forEach(v=>{v(n.value,p,{delta:m,type:gw.pop,direction:m?m>0?R0.forward:R0.back:R0.unknown})})};function l(){a=n.value}function c(f){o.push(f);const h=()=>{const p=o.indexOf(f);p>-1&&o.splice(p,1)};return r.push(h),h}function u(){if(document.visibilityState==="hidden"){const{history:f}=window;if(!f.state)return;f.replaceState(Ht({},f.state,{scroll:Ev()}),"")}}function d(){for(const f of r)f();r=[],window.removeEventListener("popstate",s),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",s),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:d}}function EM(t,e,n,i=!1,o=!1){return{back:t,current:e,forward:n,replaced:i,position:window.history.length,scroll:o?Ev():null}}function X$e(t){const{history:e,location:n}=window,i={value:r8(t,n)},o={value:e.state};o.value||r(i.value,{back:null,current:i.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function r(l,c,u){const d=t.indexOf("#"),f=d>-1?(n.host&&document.querySelector("base")?t:t.slice(d))+l:j$e()+t+l;try{e[u?"replaceState":"pushState"](c,"",f),o.value=c}catch(h){console.error(h),n[u?"replace":"assign"](f)}}function a(l,c){r(l,Ht({},e.state,EM(o.value.back,l,o.value.forward,!0),c,{position:o.value.position}),!0),i.value=l}function s(l,c){const u=Ht({},o.value,e.state,{forward:l,scroll:Ev()});r(u.current,u,!0),r(l,Ht({},EM(i.value,l,null),{position:u.position+1},c),!1),i.value=l}return{location:i,state:o,push:s,replace:a}}function Y$e(t){t=T$e(t);const e=X$e(t),n=V$e(t,e.state,e.location,e.replace);function i(r,a=!0){a||n.pauseListeners(),history.go(r)}const o=Ht({location:"",base:t,go:i,createHref:M$e.bind(null,t)},e,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>e.state.value}),o}let ys=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.Group=2]="Group",t}({});var An=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.ParamRegExp=2]="ParamRegExp",t[t.ParamRegExpEnd=3]="ParamRegExpEnd",t[t.EscapeNext=4]="EscapeNext",t}(An||{});const G$e={type:ys.Static,value:""},K$e=/[a-zA-Z0-9_]/;function U$e(t){if(!t)return[[]];if(t==="/")return[[G$e]];if(!t.startsWith("/"))throw new Error(`Invalid path "${t}"`);function e(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=An.Static,i=n;const o=[];let r;function a(){r&&o.push(r),r=[]}let s=0,l,c="",u="";function d(){c&&(n===An.Static?r.push({type:ys.Static,value:c}):n===An.Param||n===An.ParamRegExp||n===An.ParamRegExpEnd?(r.length>1&&(l==="*"||l==="+")&&e(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),r.push({type:ys.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):e("Invalid state to consume buffer"),c="")}function f(){c+=l}for(;se.length?e.length===1&&e[0]===ui.Static+ui.Segment?1:-1:0}function a8(t,e){let n=0;const i=t.score,o=e.score;for(;n0&&e[e.length-1]<0}const eAe={strict:!1,end:!0,sensitive:!1};function tAe(t,e,n){const i=J$e(U$e(t.path),n),o=Ht(i,{record:t,parent:e,children:[],alias:[]});return e&&!o.record.aliasOf==!e.record.aliasOf&&e.children.push(o),o}function nAe(t,e){const n=[],i=new Map;e=$M(eAe,e);function o(d){return i.get(d)}function r(d,f,h){const p=!h,g=DM(d);g.aliasOf=h&&h.record;const m=$M(e,d),v=[g];if("alias"in d){const w=typeof d.alias=="string"?[d.alias]:d.alias;for(const x of w)v.push(DM(Ht({},g,{components:h?h.record.components:g.components,path:x,aliasOf:h?h.record:g})))}let b,y;for(const w of v){const{path:x}=w;if(f&&x[0]!=="/"){const $=f.record.path,S=$[$.length-1]==="/"?"":"/";w.path=f.record.path+(x&&S+x)}if(b=tAe(w,f,m),h?h.alias.push(b):(y=y||b,y!==b&&y.alias.push(b),p&&d.name&&!RM(b)&&a(d.name)),s8(b)&&l(b),g.children){const $=g.children;for(let S=0;S<$.length;S++)r($[S],b,h&&h.children[S])}h=h||b}return y?()=>{a(y)}:od}function a(d){if(i8(d)){const f=i.get(d);f&&(i.delete(d),n.splice(n.indexOf(f),1),f.children.forEach(a),f.alias.forEach(a))}else{const f=n.indexOf(d);f>-1&&(n.splice(f,1),d.record.name&&i.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function s(){return n}function l(d){const f=rAe(d,n);n.splice(f,0,d),d.record.name&&!RM(d)&&i.set(d.record.name,d)}function c(d,f){let h,p={},g,m;if("name"in d&&d.name){if(h=i.get(d.name),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d});m=h.record.name,p=Ht(kM(f.params,h.keys.filter(y=>!y.optional).concat(h.parent?h.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),d.params&&kM(d.params,h.keys.map(y=>y.name))),g=h.stringify(p)}else if(d.path!=null)g=d.path,h=n.find(y=>y.re.test(g)),h&&(p=h.parse(g),m=h.record.name);else{if(h=f.name?i.get(f.name):n.find(y=>y.re.test(f.path)),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d,currentLocation:f});m=h.record.name,p=Ht({},f.params,d.params),g=h.stringify(p)}const v=[];let b=h;for(;b;)v.unshift(b.record),b=b.parent;return{name:m,path:g,params:p,matched:v,meta:oAe(v)}}t.forEach(d=>r(d));function u(){n.length=0,i.clear()}return{addRoute:r,resolve:c,removeRoute:a,clearRoutes:u,getRoutes:s,getRecordMatcher:o}}function kM(t,e){const n={};for(const i of e)i in t&&(n[i]=t[i]);return n}function DM(t){const e={path:t.path,redirect:t.redirect,name:t.name,meta:t.meta||{},aliasOf:t.aliasOf,beforeEnter:t.beforeEnter,props:iAe(t),children:t.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in t?t.components||null:t.component&&{default:t.component}};return Object.defineProperty(e,"mods",{value:{}}),e}function iAe(t){const e={},n=t.props||!1;if("component"in t)e.default=n;else for(const i in t.components)e[i]=typeof n=="object"?n[i]:n;return e}function RM(t){for(;t;){if(t.record.aliasOf)return!0;t=t.parent}return!1}function oAe(t){return t.reduce((e,n)=>Ht(e,n.meta),{})}function rAe(t,e){let n=0,i=e.length;for(;n!==i;){const r=n+i>>1;a8(t,e[r])<0?i=r:n=r+1}const o=aAe(t);return o&&(i=e.lastIndexOf(o,i-1)),i}function aAe(t){let e=t;for(;e=e.parent;)if(s8(e)&&a8(t,e)===0)return e}function s8({record:t}){return!!(t.name||t.components&&Object.keys(t.components).length||t.redirect)}function LM(t){const e=Je(Mv),n=Je(m$),i=L(()=>{const l=Lt(t.to);return e.resolve(l)}),o=L(()=>{const{matched:l}=i.value,{length:c}=l,u=l[c-1],d=n.matched;if(!u||!d.length)return-1;const f=d.findIndex(Ac.bind(null,u));if(f>-1)return f;const h=FM(l[c-2]);return c>1&&FM(u)===h&&d[d.length-1].path!==h?d.findIndex(Ac.bind(null,l[c-2])):f}),r=L(()=>o.value>-1&&dAe(n.params,i.value.params)),a=L(()=>o.value>-1&&o.value===n.matched.length-1&&n8(n.params,i.value.params));function s(l={}){if(uAe(l)){const c=e[Lt(t.replace)?"replace":"push"](Lt(t.to)).catch(od);return t.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:i,href:L(()=>i.value.href),isActive:r,isExactActive:a,navigate:s}}function sAe(t){return t.length===1?t[0]:t}const lAe=oe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:LM,setup(t,{slots:e}){const n=$t(LM(t)),{options:i}=Je(Mv),o=L(()=>({[NM(t.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[NM(t.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=e.default&&sAe(e.default(n));return t.custom?r:sr("a",{"aria-current":n.isExactActive?t.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),cAe=lAe;function uAe(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&!(t.button!==void 0&&t.button!==0)){if(t.currentTarget&&t.currentTarget.getAttribute){const e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function dAe(t,e){for(const n in e){const i=e[n],o=t[n];if(typeof i=="string"){if(i!==o)return!1}else if(!Bo(o)||o.length!==i.length||i.some((r,a)=>r.valueOf()!==o[a].valueOf()))return!1}return!0}function FM(t){return t?t.aliasOf?t.aliasOf.path:t.path:""}const NM=(t,e,n)=>t??e??n,fAe=oe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(t,{attrs:e,slots:n}){const i=Je(vw),o=L(()=>t.route||i.value),r=Je(TM,0),a=L(()=>{let c=Lt(r);const{matched:u}=o.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),s=L(()=>o.value.matched[a.value]);ot(TM,L(()=>a.value+1)),ot(H$e,s),ot(vw,o);const l=ae();return ye(()=>[l.value,s.value,t.name],([c,u,d],[f,h,p])=>{u&&(u.instances[d]=c,h&&h!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),c&&u&&(!h||!Ac(u,h)||!f)&&(u.enterCallbacks[d]||[]).forEach(g=>g(c))},{flush:"post"}),()=>{const c=o.value,u=t.name,d=s.value,f=d&&d.components[u];if(!f)return BM(n.default,{Component:f,route:c});const h=d.props[u],p=h?h===!0?c.params:typeof h=="function"?h(c):h:null,m=sr(f,Ht({},p,e,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(d.instances[u]=null)},ref:l}));return BM(n.default,{Component:m,route:c})||m}}});function BM(t,e){if(!t)return null;const n=t(e);return n.length===1?n[0]:n}const hAe=fAe;function pAe(t){const e=nAe(t.routes,t),n=t.parseQuery||B$e,i=t.stringifyQuery||OM,o=t.history,r=fu(),a=fu(),s=fu(),l=ie(oa);let c=oa;Rl&&t.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=k0.bind(null,Y=>""+Y),d=k0.bind(null,S$e),f=k0.bind(null,Hd);function h(Y,J){let Q,G;return i8(Y)?(Q=e.getRecordMatcher(Y),G=J):G=Y,e.addRoute(G,Q)}function p(Y){const J=e.getRecordMatcher(Y);J&&e.removeRoute(J)}function g(){return e.getRoutes().map(Y=>Y.record)}function m(Y){return!!e.getRecordMatcher(Y)}function v(Y,J){if(J=Ht({},J||l.value),typeof Y=="string"){const te=D0(n,Y,J.path),ue=e.resolve({path:te.path},J),se=o.createHref(te.fullPath);return Ht(te,ue,{params:f(ue.params),hash:Hd(te.hash),redirectedFrom:void 0,href:se})}let Q;if(Y.path!=null)Q=Ht({},Y,{path:D0(n,Y.path,J.path).path});else{const te=Ht({},Y.params);for(const ue in te)te[ue]==null&&delete te[ue];Q=Ht({},Y,{params:d(te)}),J.params=d(J.params)}const G=e.resolve(Q,J),ee=Y.hash||"";G.params=u(f(G.params));const X=A$e(i,Ht({},Y,{hash:y$e(ee),path:G.path})),K=o.createHref(X);return Ht({fullPath:X,hash:ee,query:i===OM?z$e(Y.query):Y.query||{}},G,{redirectedFrom:void 0,href:K})}function b(Y){return typeof Y=="string"?D0(n,Y,l.value.path):Ht({},Y)}function y(Y,J){if(c!==Y)return _c(an.NAVIGATION_CANCELLED,{from:J,to:Y})}function w(Y){return S(Y)}function x(Y){return w(Ht(b(Y),{replace:!0}))}function $(Y,J){const Q=Y.matched[Y.matched.length-1];if(Q&&Q.redirect){const{redirect:G}=Q;let ee=typeof G=="function"?G(Y,J):G;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=b(ee):{path:ee},ee.params={}),Ht({query:Y.query,hash:Y.hash,params:ee.path!=null?{}:Y.params},ee)}}function S(Y,J){const Q=c=v(Y),G=l.value,ee=Y.state,X=Y.force,K=Y.replace===!0,te=$(Q,G);if(te)return S(Ht(b(te),{state:typeof te=="object"?Ht({},ee,te.state):ee,force:X,replace:K}),J||Q);const ue=Q;ue.redirectedFrom=J;let se;return!X&&_$e(i,G,Q)&&(se=_c(an.NAVIGATION_DUPLICATED,{to:ue,from:G}),z(G,G,!0,!1)),(se?Promise.resolve(se):T(ue,G)).catch(re=>vr(re)?vr(re,an.NAVIGATION_GUARD_REDIRECT)?re:B(re):F(re,ue,G)).then(re=>{if(re){if(vr(re,an.NAVIGATION_GUARD_REDIRECT))return S(Ht({replace:K},b(re.to),{state:typeof re.to=="object"?Ht({},ee,re.to.state):ee,force:X}),J||ue)}else re=M(ue,G,!0,K,ee);return O(ue,G,re),re})}function _(Y,J){const Q=y(Y,J);return Q?Promise.reject(Q):Promise.resolve()}function P(Y){const J=U.values().next().value;return J&&typeof J.runWithContext=="function"?J.runWithContext(Y):Y()}function T(Y,J){let Q;const[G,ee,X]=W$e(Y,J);Q=L0(G.reverse(),"beforeRouteLeave",Y,J);for(const te of G)te.leaveGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});const K=_.bind(null,Y,J);return Q.push(K),q(Q).then(()=>{Q=[];for(const te of r.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).then(()=>{Q=L0(ee,"beforeRouteUpdate",Y,J);for(const te of ee)te.updateGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});return Q.push(K),q(Q)}).then(()=>{Q=[];for(const te of X)if(te.beforeEnter)if(Bo(te.beforeEnter))for(const ue of te.beforeEnter)Q.push(ha(ue,Y,J));else Q.push(ha(te.beforeEnter,Y,J));return Q.push(K),q(Q)}).then(()=>(Y.matched.forEach(te=>te.enterCallbacks={}),Q=L0(X,"beforeRouteEnter",Y,J,P),Q.push(K),q(Q))).then(()=>{Q=[];for(const te of a.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).catch(te=>vr(te,an.NAVIGATION_CANCELLED)?te:Promise.reject(te))}function O(Y,J,Q){s.list().forEach(G=>P(()=>G(Y,J,Q)))}function M(Y,J,Q,G,ee){const X=y(Y,J);if(X)return X;const K=J===oa,te=Rl?history.state:{};Q&&(G||K?o.replace(Y.fullPath,Ht({scroll:K&&te&&te.scroll},ee)):o.push(Y.fullPath,ee)),l.value=Y,z(Y,J,Q,K),B()}let I;function k(){I||(I=o.listen((Y,J,Q)=>{if(!V.listening)return;const G=v(Y),ee=$(G,V.currentRoute.value);if(ee){S(Ht(ee,{replace:!0,force:!0}),G).catch(od);return}c=G;const X=l.value;Rl&&D$e(PM(X.fullPath,Q.delta),Ev()),T(G,X).catch(K=>vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_CANCELLED)?K:vr(K,an.NAVIGATION_GUARD_REDIRECT)?(S(Ht(b(K.to),{force:!0}),G).then(te=>{vr(te,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&!Q.delta&&Q.type===gw.pop&&o.go(-1,!1)}).catch(od),Promise.reject()):(Q.delta&&o.go(-Q.delta,!1),F(K,G,X))).then(K=>{K=K||M(G,X,!1),K&&(Q.delta&&!vr(K,an.NAVIGATION_CANCELLED)?o.go(-Q.delta,!1):Q.type===gw.pop&&vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),O(G,X,K)}).catch(od)}))}let E=fu(),R=fu(),D;function F(Y,J,Q){B(Y);const G=R.list();return G.length?G.forEach(ee=>ee(Y,J,Q)):console.error(Y),Promise.reject(Y)}function N(){return D&&l.value!==oa?Promise.resolve():new Promise((Y,J)=>{E.add([Y,J])})}function B(Y){return D||(D=!Y,k(),E.list().forEach(([J,Q])=>Y?Q(Y):J()),E.reset()),Y}function z(Y,J,Q,G){const{scrollBehavior:ee}=t;if(!Rl||!ee)return Promise.resolve();const X=!Q&&R$e(PM(Y.fullPath,0))||(G||!Q)&&history.state&&history.state.scroll||null;return pt().then(()=>ee(Y,J,X)).then(K=>K&&k$e(K)).catch(K=>F(K,Y,J))}const W=Y=>o.go(Y);let j;const U=new Set,V={currentRoute:l,listening:!0,addRoute:h,removeRoute:p,clearRoutes:e.clearRoutes,hasRoute:m,getRoutes:g,resolve:v,options:t,push:w,replace:x,go:W,back:()=>W(-1),forward:()=>W(1),beforeEach:r.add,beforeResolve:a.add,afterEach:s.add,onError:R.add,isReady:N,install(Y){Y.component("RouterLink",cAe),Y.component("RouterView",hAe),Y.config.globalProperties.$router=V,Object.defineProperty(Y.config.globalProperties,"$route",{enumerable:!0,get:()=>Lt(l)}),Rl&&!j&&l.value===oa&&(j=!0,w(o.location).catch(G=>{}));const J={};for(const G in oa)Object.defineProperty(J,G,{get:()=>l.value[G],enumerable:!0});Y.provide(Mv,V),Y.provide(m$,kI(J)),Y.provide(vw,l);const Q=Y.unmount;U.add(Y),Y.unmount=function(){U.delete(Y),U.size<1&&(c=oa,I&&I(),I=null,l.value=oa,j=!1,D=!1),Q()}}};function q(Y){return Y.reduce((J,Q)=>J.then(()=>P(Q)),Promise.resolve())}return V}function zPe(){return Je(Mv)}function HPe(t){return Je(m$)}const gAe=[{path:"/",name:"dashboard",redirect:"/dashboard/ecommerce"},{path:"/dashboard/analytics",name:"dashboard-analytics",component:()=>ze(()=>import("./Dashboard-Cb_e8hUK.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"editor",role:"dashboard.view"}},{path:"/my-data",name:"my-data",component:()=>ze(()=>import("./myData-DsOyJhsC.js"),__vite__mapDeps([6,7])),meta:{rule:"editor"}},{path:"/dashboard/ecommerce",name:"dashboard-ecommerce",component:()=>ze(()=>import("./Dashboard-Cb_e8hUK.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"admin",role:"dashboard.view"}},{path:"/config/manage/const",component:()=>ze(()=>import("./Const-CvgkKjTn.js"),__vite__mapDeps([8,9,10,11])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت ثابت ها",active:!0}],pageTitle:"مدیریت ثابت ها",rule:"editor",role:"config.statics",parent:"manage",no_scroll:!0}},{path:"/config/manage/wallet",component:()=>ze(()=>import("./wallet-BYMX27q1.js"),__vite__mapDeps([12,13])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت کیف پول",active:!0}],pageTitle:"مدیریت کیف پول",rule:"editor",role:"config.wallet",superAdminOnly:!0,parent:"manage",no_scroll:!0}},{path:"/config/manage/accounting",component:()=>ze(()=>import("./accounting-SNbebogb.js"),__vite__mapDeps([14,2,15,16,17])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اتصال حسابداری",active:!0}],pageTitle:"اتصال حسابداری",rule:"editor",role:"config.accounting",parent:"manage",no_scroll:!0}},{path:"/config/manage/wage",component:()=>ze(()=>import("./wage-B6j_dXIJ.js"),__vite__mapDeps([18,2,19])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اجرت",active:!0}],pageTitle:"اجرت",rule:"editor",role:"config.wage",parent:"manage",no_scroll:!0}},{path:"/config/manage/report",component:()=>ze(()=>import("./report-OEDYaCDs.js"),__vite__mapDeps([20,21])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"گزارش",active:!0}],pageTitle:"گزارش",rule:"editor",role:"config.report",parent:"manage",no_scroll:!0}},{path:"/apps/product/",redirect:"/apps/product/list",name:"product"},{path:"/product/change/percent",component:()=>ze(()=>import("./ChangePercent-sP7FGIWF.js"),[]),meta:{rule:"editor",role:"product.percent",parent:"product",no_scroll:!0}},{path:"/apps/product/add",component:()=>ze(()=>import("./AddProduct-CqaK3I6Q.js"),__vite__mapDeps([22,10,23,24])),meta:{rule:"editor",role:"product.create",parent:"product",no_scroll:!0}},{path:"/apps/product/edit/:id/:variant_id?",name:"product-edit",component:()=>ze(()=>import("./EditProduct-miBXIVTw.js"),__vite__mapDeps([25,22,10,23,24])),meta:{rule:"editor",role:"product.list.edit",parent:"product",no_scroll:!0}},{path:"/apps/product/list",name:"product-list",component:()=>ze(()=>import("./ProductList-DKYFsy5A.js"),__vite__mapDeps([26,27,1,2,28,29,30,31,9,32])),meta:{rule:"editor",role:"product.list",parent:"product",no_scroll:!0}},{path:"/category",redirect:"/category/list",name:"category"},{path:"/category/add/:id?",name:"category-add",component:()=>ze(()=>import("./Add-o90TOQ6U.js"),__vite__mapDeps([33,34,35,36,10])),meta:{rule:"editor",role:"collection.create",parent:"category",no_scroll:!0}},{path:"/category/edit/:id",component:()=>ze(()=>import("./Edit-kPt-2bSX.js"),__vite__mapDeps([37,34,35,36,10])),name:"category-edit",meta:{rule:"editor",role:"collection.list.edit",parent:"category",no_scroll:!0}},{path:"/category/list",name:"category-list",component:()=>ze(()=>import("./List-Be1uA64N.js"),__vite__mapDeps([38,27,1,2,28,29,39,34,35,36,10,9])),meta:{rule:"editor",role:"collection.list",parent:"category",no_scroll:!0}},{path:"/add/findoc",component:()=>ze(()=>import("./addFinDoc-Crm0ebUu.js"),__vite__mapDeps([40,41,35,36])),meta:{rule:"editor",role:"document.create"}},{path:"/edit/findoc/:id",component:()=>ze(()=>import("./addFinDoc-Crm0ebUu.js"),__vite__mapDeps([40,41,35,36])),meta:{rule:"editor",role:"document.list.edit"}},{path:"/order",redirect:"/order/list",name:"order"},{path:"/order/list",component:()=>ze(()=>import("./List-DZ2UtgZK.js"),__vite__mapDeps([42,27,1,2,28,29,43,44,45,46,3,4,23,47,48,49,50])),meta:{rule:"editor",role:"order.list",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/omde-list",component:()=>ze(()=>import("./OmdeList-DH-oJpv0.js"),__vite__mapDeps([51,27,1,2,28,29,43,44,45,46,3,4,23,47,48,49,52])),meta:{rule:"editor",role:"order.omde",parent:"order",no_scroll:!0}},{path:"/order/make",component:()=>ze(()=>import("./MakeOrder-aTjo9HZz.js"),__vite__mapDeps([53,27,1,2,28,29,43,44,45,46,3,4,23,47,48,49,54])),meta:{rule:"editor",role:"order.makeOrder",parent:"order",no_scroll:!0}},{path:"/order/create",component:()=>ze(()=>import("./create-DqSLe1hW.js"),__vite__mapDeps([55,27,1,2,28,29,31,7,56])),meta:{rule:"editor",role:"order.create",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/tamin-list",component:()=>ze(()=>import("./TaminList-Cta7c5dR.js"),__vite__mapDeps([57,27,1,2,28,29,43,44,45,46,3,4,23,47,48,49,58])),meta:{rule:"editor",role:"order.tamin",parent:"order",no_scroll:!0}},{path:"/major/promotion/list",component:()=>ze(()=>import("./promotion_list-CJB17R4H.js"),__vite__mapDeps([59,27,1,2,28,29,39,60,61,35,36,62,63,64])),meta:{rule:"editor",role:"offers.list",no_scroll:!0}},{path:"/major/promotion/add",component:()=>ze(()=>import("./promotion_add_edit-CqCju9pR.js"),__vite__mapDeps([65,60,61,35,36,62])),meta:{rule:"editor",role:"offers.create",no_scroll:!0}},{path:"/major/promotion/edit/:id",component:()=>ze(()=>import("./promotion_add_edit-CqCju9pR.js"),__vite__mapDeps([65,60,61,35,36,62])),meta:{rule:"editor",role:"offers.list.edit",no_scroll:!0}},{path:"/major/promotion/tak/add",component:()=>ze(()=>import("./promotion_tak_add_edit-Bza5oS11.js"),__vite__mapDeps([66,63,61,35,36,62])),meta:{rule:"editor",role:"offers.create.tak",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/tak/edit/:id",component:()=>ze(()=>import("./promotion_tak_add_edit-Bza5oS11.js"),__vite__mapDeps([66,63,61,35,36,62])),meta:{rule:"editor",role:"offers.list.tak.edit",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/autopromotion",component:()=>ze(()=>import("./autopromotion-cv1k7IXP.js"),[]),meta:{rule:"editor",role:"offers.autopromotion",no_scroll:!0}},{path:"/major/offersIgnore",component:()=>ze(()=>import("./offersIgnore-add-edit-DE72s5pO.js"),__vite__mapDeps([67,27,1,2,28,29,68])),meta:{rule:"editor",role:"offersIgnore"}},{path:"/comments",name:"comments",component:()=>ze(()=>import("./Comments-CGkM8YQW.js"),__vite__mapDeps([69,70,27,1,2,28,29,43,44,45,46,3,4,23,47,48,49,71])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دیدگاه ها",active:!0}],pageTitle:"دیدگاه ها",rule:"editor",role:"comment",no_scroll:!0}},{path:"/sms/create",name:"create_sms",component:()=>ze(()=>import("./create-BcV0LZ6B.js"),__vite__mapDeps([72,27,1,2,28,29,73])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال پیامک",active:!0}],pageTitle:"ارسال پیامک",rule:"editor",role:"sms.create",no_scroll:!0}},{path:"/notify",name:"notify",component:()=>ze(()=>import("./user-CB1sVp_3.js"),__vite__mapDeps([74,27,1,2,28,29,75])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست نوتیفیکیشن های دریافتی",active:!0}],pageTitle:"لیست نوتیفیکیشن های ذریافتی",rule:"editor",role:"notify.me",no_scroll:!0}},{path:"/notify/create",name:"create_notify",component:()=>ze(()=>import("./create-BLo5130R.js"),[]),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال نوتیفیکیشن",active:!0}],pageTitle:"ارسال نوتیفیکیشن",rule:"editor",role:"notify.create",no_scroll:!0}},{path:"/wallet",name:"wallet",component:()=>ze(()=>import("./wallet-61JBaLmV.js"),__vite__mapDeps([76,27,1,2,28,29])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست کیف پول های شارژ شده",active:!0}],pageTitle:"لیست کیف پول های شارژ شده",rule:"editor",role:"wallet",no_scroll:!0}},{path:"/reagent/edit/:id",name:"reagent-edit",component:()=>ze(()=>import("./EditReagent-Ba5R7-Av.js"),__vite__mapDeps([77,78,79,10,48,80,81,49,46,82])),meta:{rule:"editor",role:"persons.list.sellers.edit",parent:"product",no_scroll:!0}},{path:"/reagent/add",name:"reagent-add",component:()=>ze(()=>import("./EditReagent-Ba5R7-Av.js"),__vite__mapDeps([77,78,79,10,48,80,81,49,46,82])),meta:{rule:"editor",role:"persons.create",parent:"product",no_scroll:!0}},{path:"/reagent/view/:id",name:"reagent-view",component:()=>ze(()=>import("./AgentDetail-sO_PGm1D.js"),__vite__mapDeps([83,1,2,84])),meta:{rule:"editor",role:"persons.list.sellers.view",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/edit/:id",name:"bulkCustomer-edit",component:()=>ze(()=>import("./EditBulkCustomer-w9LEjkC1.js"),__vite__mapDeps([85,86,35,36,10,79,87,2,88,48,80,81,46,16])),meta:{rule:"editor",role:"persons.list.client.omde.edit",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/view/:id",name:"bulkCustomer-view",component:()=>ze(()=>import("./ViewOmdeCustomer-eFH3i6bz.js"),__vite__mapDeps([89,90,1,2,81,48,91])),meta:{rule:"editor",role:"persons.list.client.omde.view",parent:"product",no_scroll:!0}},{path:"/singleCustomer/edit/:id",name:"singleCustomer-edit",component:()=>ze(()=>import("./EditSingleCustomer-CTn0uVfI.js"),__vite__mapDeps([92,93,79,87,2,88,48,94])),meta:{rule:"editor",role:"persons.list.client.single.edit",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/singleCustomer/view/:id",name:"singleCustomer-view",component:()=>ze(()=>import("./ViewSingleCustomer-BsTNdacv.js"),__vite__mapDeps([95,90,1,2,81,48,91])),meta:{rule:"editor",role:"persons.list.client.single.view",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/customer/omde-list",name:"omde-list-customer",component:()=>ze(()=>import("./OmdeList-CEBt8LxW.js"),__vite__mapDeps([96,97,2,27,1,28,29,39,30,86,35,36,10,79,87,88,48,80,81,46,16,45,98])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان عمده",active:!0}],pageTitle:"مشتریان عمده",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/omde-non-verified-list",name:"omde-non-verified-list",component:()=>ze(()=>import("./OmdeNonVerifiedList-Chk-ZLmx.js"),__vite__mapDeps([99,97,2,27,1,28,29,39,30,86,35,36,10,79,87,88,48,80,81,46,16,45,98])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان در انتظار",active:!0}],pageTitle:"مشتریان در انتظار",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/banker-list",name:"banker-list",component:()=>ze(()=>import("./BankerList-BPuo9i5M.js"),__vite__mapDeps([100,97,2,27,1,28,29,39,30,86,35,36,10,79,87,88,48,80,81,46,16,45,98])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست بنکداران",active:!0}],pageTitle:"لیست بنکداران",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/shopkeeper-list",name:"shopkeeper-list",component:()=>ze(()=>import("./ShopkeeperList-pfD0i838.js"),__vite__mapDeps([101,97,2,27,1,28,29,39,30,86,35,36,10,79,87,88,48,80,81,46,16,45,98])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مغازه داران حضوری",active:!0}],pageTitle:"لیست مغازه داران حضوری",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/omde-archived-list",name:"omde-archived-list",component:()=>ze(()=>import("./OmdeArchivedList-DXe8fsa2.js"),__vite__mapDeps([102,97,2,27,1,28,29,39,30,86,35,36,10,79,87,88,48,80,81,46,16,45,98])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان بایگانی",active:!0}],pageTitle:"مشتریان بایگانی",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/reagent-list",name:"raegentList",component:()=>ze(()=>import("./ReagentList-CtR1WkfW.js"),__vite__mapDeps([103,27,1,2,28,29,43,44,45,46,3,4,23,47,48,49,39])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارشناسان فروش",active:!0}],pageTitle:"کارشناسان فروش",role:"persons.list.sellers",rule:"editor"}},{path:"/customer/add",name:"add-customer",component:()=>ze(()=>import("./AddCustomer-C93P9Nl8.js"),__vite__mapDeps([104,86,35,36,10,79,87,2,88,48,80,81,46,16,78,49,82,93,94,105])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"},{title:"افزودن مشتری",active:!0}],pageTitle:"افزودن مشتری",role:"persons.create",rule:"editor"}},{path:"/customer/list",name:"list-customer",component:()=>ze(()=>import("./SingleCustomer-BP-Jvfsy.js"),__vite__mapDeps([106,27,1,2,28,29,4,107])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"}],pageTitle:"لیست مشتریان",role:"persons.list.client.single",superAdminOnly:!0,rule:"editor"}},{path:"/report/order_item",name:"report_order_item",component:()=>ze(()=>import("./order_item-BCXFMT8w.js"),__vite__mapDeps([108,87,2,88,1,109])),meta:{role:"report.order.item",rule:"editor"}},{path:"/report/product",name:"report_product",component:()=>ze(()=>import("./product-CdHCOmwK.js"),__vite__mapDeps([110,87,2,88,111])),meta:{role:"report.product",rule:"editor"}},{path:"/finical/list",name:"finical_list",component:()=>ze(()=>import("./list-D63BjZ2R.js"),__vite__mapDeps([112,27,1,2,28,29,39,41,35,36,9])),meta:{role:"document.list",rule:"editor"}},{path:"/user/list",component:()=>ze(()=>import("./ListUser-B5HisvUF.js"),__vite__mapDeps([113,27,1,2,28,29,39,114,35,36,115,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مدیران",active:!0}],pageTitle:"لیست مدیران",role:"user.list",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/create",component:()=>ze(()=>import("./UserCreate-B9hxrLOO.js"),__vite__mapDeps([114,35,36,115])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن کاربر",active:!0}],pageTitle:"افزودن کاربر",role:"user.create",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/edit/:id",component:()=>ze(()=>import("./UserEdit-DvU5z6vT.js"),__vite__mapDeps([116,114,35,36,115])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ویرایش نوع کاربر",active:!0}],pageTitle:"ویرایش نوع کاربر",rule:"editor",role:"user.list.edit",parent:"user",no_scroll:!0}},{path:"/permission",component:()=>ze(()=>import("./Permission-BDWBYh7-.js"),__vite__mapDeps([117,7,118])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دسترسی ها",active:!0}],pageTitle:"دسترسی ها",rule:"editor",role:"user.permission",parent:"permission",no_scroll:!0}},{path:"/city/create",component:()=>ze(()=>import("./createCity-CbhYJB0l.js"),__vite__mapDeps([119,120,35,36,79])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن شهر",active:!0}],pageTitle:"افزودن شهر",rule:"editor",role:"cities.create",parent:"city",no_scroll:!0}},{path:"/city/list",component:()=>ze(()=>import("./cityList-ZcdYYFeM.js"),__vite__mapDeps([121,27,1,2,28,29,39,120,35,36,79,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست شهر ها",active:!0}],pageTitle:"لیست شهر ها",rule:"editor",role:"cities.list",parent:"city",no_scroll:!0}},{path:"/statics",name:"statics",component:()=>ze(()=>import("./index-DdFLWjO6.js"),__vite__mapDeps([122,1,2])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"آمار",active:!0}],pageTitle:"آمار",rule:"editor",role:"statics",no_scroll:!0}},{path:"/newsletters",name:"newsletters",component:()=>ze(()=>import("./newsletters-Cw3--aFT.js"),__vite__mapDeps([123,27,1,2,28,29,124])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"خبرنامه",active:!0}],pageTitle:"خبرنامه",rule:"editor",no_scroll:!0}},{path:"/branch/add",name:"add-branch",component:()=>ze(()=>import("./AddBranches-DbKQr4RL.js"),__vite__mapDeps([125,126,35,36])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"افزودن شعب",active:!0}],pageTitle:"افزودن شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/edit/:id",name:"edit-branch",component:()=>ze(()=>import("./EditBranches-DD2D-1SM.js"),__vite__mapDeps([127,126,35,36])),meta:{pageTitle:"ویرایش شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/list",name:"list-branch",component:()=>ze(()=>import("./ListBranches-DKS9egre.js"),__vite__mapDeps([128,129,27,1,2,28,29,39,126,35,36])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"لیست شعب",active:!0}],pageTitle:"لیست شعب",role:"branch.list",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/add",name:"add-workshop",component:()=>ze(()=>import("./AddWorkshop-Cq08meS9.js"),__vite__mapDeps([130,131,35,36])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"افزودن کارگاه",active:!0}],pageTitle:"افزودن کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/edit/:id",name:"edit-workshop",component:()=>ze(()=>import("./EditWorkshop-CoYdSxko.js"),__vite__mapDeps([132,131,35,36])),meta:{pageTitle:"ویرایش کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/list",name:"list-workshop",component:()=>ze(()=>import("./ListWorkshop-Co07pp0l.js"),__vite__mapDeps([133,129,27,1,2,28,29,39,131,35,36])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"لیست کارگاه ها",active:!0}],pageTitle:"لیست کارگاه ها",role:"workshop.list",superAdminOnly:!0,rule:"editor"}},{path:"/invoice/add",name:"add-invoice",component:()=>ze(()=>import("./AddInvoice-iZuqzIMz.js"),__vite__mapDeps([134,35,36,27,1,2,28,29,135])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتور انتقال"},{title:"افزودن فاکتور",active:!0}],pageTitle:"افزودن فاکتور",role:"invoice.create",rule:"editor"}},{path:"/invoice/edit/:id",name:"edit-invoice",component:()=>ze(()=>import("./EditInvoice-CKOrEPF-.js"),__vite__mapDeps([136,134,35,36,27,1,2,28,29,135])),meta:{pageTitle:"ویرایش فاکتورها",role:"invoice.create",rule:"editor"}},{path:"/invoice/list",name:"list-invoice",component:()=>ze(()=>import("./ListInvoice-BUUcrdEN.js"),__vite__mapDeps([137,27,1,2,28,29,39,134,35,36,135,9,138])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتورانتقال"},{title:"لیست فاکتورها",active:!0}],pageTitle:"لیست فاکتورها",role:"invoice.list",rule:"editor"}}],mAe=[{path:"/auth/login",name:"page-login",component:()=>ze(()=>import("./Login-B0DXknhX.js"),__vite__mapDeps([139,70,7,47,16,15,140])),meta:{rule:"editor"}},{path:"/reg",name:"reg",component:()=>ze(()=>import("./reg-CTnxnWvP.js"),__vite__mapDeps([141,142])),meta:{rule:"editor"}}];function l8(t,e){return function(){return t.apply(e,arguments)}}const{toString:vAe}=Object.prototype,{getPrototypeOf:Ma}=Object,{iterator:yf,toStringTag:c8}=Symbol,Wd=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),u8=t=>typeof t=="string"&&(t==="__proto__"||t==="constructor"||t==="prototype"),d8=(t,e,n)=>t===Object.prototype||!n&&e===null,bAe=t=>{if(!Object.isExtensible(t))return!1;const e=Object.getOwnPropertyNames(t);return Object.getOwnPropertySymbols&&e.push(...Object.getOwnPropertySymbols(t)),e.every(n=>{if(u8(n))return!1;const i=Object.getOwnPropertyDescriptor(t,n);return!!i&&i.configurable&&i.writable===!0})},jd=(t,e)=>{let n=t;const i=[];for(;n!=null;){if(i.indexOf(n)!==-1)return!1;i.push(n);const o=Ma(n);if(d8(n,o,n===t))return!1;if(Wd(n,e))return!0;n=o}return!1},yAe=(t,e)=>t!=null&&jd(t,e)?t[e]:void 0,xAe=t=>{if(t==null||typeof t!="object"&&typeof t!="function")return t;const e=Ma(t);if(e===null&&bAe(t))return t;const n=Object.create(null),i=Object.create(null),o=[];let r=t;for(;r!=null&&o.indexOf(r)===-1;){o.push(r);const a=r===t?e:Ma(r);if(d8(r,a,r===t))break;const s=Object.getOwnPropertyNames(r);Object.getOwnPropertySymbols&&s.push(...Object.getOwnPropertySymbols(r));for(const l of s)u8(l)||Wd(i,l)||(n[l]=t[l],i[l]=!0);r=a}return n},v$=(t=>e=>{const n=vAe.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),So=t=>(t=t.toLowerCase(),e=>v$(e)===t),Iv=t=>e=>typeof e===t,{isArray:Ks}=Array,Us=Iv("undefined");function Gc(t){return t!==null&&!Us(t)&&t.constructor!==null&&!Us(t.constructor)&&Oi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const f8=So("ArrayBuffer");function wAe(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&f8(t.buffer),e}const SAe=Iv("string"),Oi=Iv("function"),h8=Iv("number"),Kc=t=>t!==null&&typeof t=="object",CAe=t=>t===!0||t===!1,hp=t=>{if(!Kc(t))return!1;const e=Ma(t);return(e===null||e===Object.prototype||Ma(e)===null)&&!jd(t,c8)&&!jd(t,yf)},$Ae=t=>{if(!Kc(t)||Gc(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},AAe=So("Date"),_Ae=So("File"),PAe=t=>!!(t&&typeof t.uri<"u"),OAe=t=>t&&typeof t.getParts<"u",TAe=So("Blob"),EAe=So("FileList"),MAe=So("Set"),IAe=t=>Kc(t)&&Oi(t.pipe);function kAe(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const zM=kAe(),HM=typeof zM.FormData<"u"?zM.FormData:void 0,DAe=t=>{if(!t)return!1;if(HM&&t instanceof HM)return!0;const e=Ma(t);if(!e||e===Object.prototype||!Oi(t.append))return!1;const n=v$(t);return n==="formdata"||n==="object"&&Oi(t.toString)&&t.toString()==="[object FormData]"},RAe=So("URLSearchParams"),[LAe,FAe,NAe,BAe]=["ReadableStream","Request","Response","Headers"].map(So),zAe=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function xf(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let i,o;if(typeof t!="object"&&(t=[t]),Ks(t))for(i=0,o=t.length;i0;)if(o=n[i],e===o.toLowerCase())return o;return null}const xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,g8=t=>!Us(t)&&t!==xs;function bw(...t){const{caseless:e,skipUndefined:n}=g8(this)&&this||{},i={},o=(r,a)=>{if(a==="__proto__"||a==="constructor"||a==="prototype")return;const s=e&&typeof a=="string"&&p8(i,a)||a,l=Wd(i,s)?i[s]:void 0;hp(l)&&hp(r)?i[s]=bw(l,r):hp(r)?i[s]=bw({},r):Ks(r)?i[s]=r.slice():(!n||!Us(r))&&(i[s]=r)};for(let r=0,a=t.length;r(xf(e,(o,r)=>{n&&Oi(o)?Object.defineProperty(t,r,{__proto__:null,value:l8(o,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,r,{__proto__:null,value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),t),WAe=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),jAe=(t,e,n,i)=>{t.prototype=Object.create(e.prototype,i),Object.defineProperty(t.prototype,"constructor",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{__proto__:null,value:e.prototype}),n&&Object.assign(t.prototype,n)},VAe=(t,e,n,i)=>{let o,r,a;const s={};if(e=e||{},t==null)return e;do{for(o=Object.getOwnPropertyNames(t),r=o.length;r-- >0;)a=o[r],(!i||i(a,t,e))&&!s[a]&&(e[a]=t[a],s[a]=!0);t=n!==!1&&Ma(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},XAe=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const i=t.indexOf(e,n);return i!==-1&&i===n},YAe=t=>{if(!t)return null;if(Ks(t))return t;let e=t.length;if(!h8(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},GAe=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ma(Uint8Array)),KAe=(t,e)=>{const i=(t&&t[yf]).call(t);let o;for(;(o=i.next())&&!o.done;){const r=o.value;e.call(t,r[0],r[1])}},UAe=(t,e)=>{let n;const i=[];for(;(n=t.exec(e))!==null;)i.push(n);return i},qAe=So("HTMLFormElement"),ZAe=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,i,o){return i.toUpperCase()+o}),{propertyIsEnumerable:JAe}=Object.prototype,QAe=So("RegExp"),m8=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),i={};xf(n,(o,r)=>{let a;(a=e(o,r,t))!==!1&&(i[r]=a||o)}),Object.defineProperties(t,i)},e_e=t=>{m8(t,(e,n)=>{if(Oi(t)&&["arguments","caller","callee"].includes(n))return!1;const i=t[n];if(Oi(i)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},t_e=(t,e)=>{const n={},i=o=>{o.forEach(r=>{n[r]=!0})};return Ks(t)?i(t):i(String(t).split(e)),n},n_e=()=>{},i_e=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function o_e(t){return!!(t&&Oi(t.append)&&t[c8]==="FormData"&&t[yf])}const r_e=t=>{const e=new WeakSet,n=i=>{if(Kc(i)){if(e.has(i))return;if(Gc(i))return i;if(!("toJSON"in i)){e.add(i);let o;if(MAe(i)){o=[];for(const r of i){const a=n(r);!Us(a)&&o.push(a)}}else o=Ks(i)?[]:{},xf(i,(r,a)=>{const s=n(r);!Us(s)&&(o[a]=s)});return e.delete(i),o}}return i};return n(t)},a_e=So("AsyncFunction"),s_e=t=>t&&(Kc(t)||Oi(t))&&Oi(t.then)&&Oi(t.catch),v8=((t,e)=>t?setImmediate:e?((n,i)=>(xs.addEventListener("message",({source:o,data:r})=>{o===xs&&r===n&&i.length&&i.shift()()},!1),o=>{i.push(o),xs.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Oi(xs.postMessage)),l_e=typeof queueMicrotask<"u"?queueMicrotask.bind(xs):typeof process<"u"&&process.nextTick||v8,b8=t=>t!=null&&Oi(t[yf]),c_e=t=>t!=null&&jd(t,yf)&&b8(t),me={isArray:Ks,isArrayBuffer:f8,isBuffer:Gc,isFormData:DAe,isArrayBufferView:wAe,isString:SAe,isNumber:h8,isBoolean:CAe,isObject:Kc,isPlainObject:hp,isEmptyObject:$Ae,isReadableStream:LAe,isRequest:FAe,isResponse:NAe,isHeaders:BAe,isUndefined:Us,isDate:AAe,isFile:_Ae,isReactNativeBlob:PAe,isReactNative:OAe,isBlob:TAe,isRegExp:QAe,isFunction:Oi,isStream:IAe,isURLSearchParams:RAe,isTypedArray:GAe,isFileList:EAe,forEach:xf,merge:bw,extend:HAe,trim:zAe,stripBOM:WAe,inherits:jAe,toFlatObject:VAe,kindOf:v$,kindOfTest:So,endsWith:XAe,toArray:YAe,forEachEntry:KAe,matchAll:UAe,isHTMLForm:qAe,hasOwnProperty:Wd,hasOwnProp:Wd,hasOwnInPrototypeChain:jd,getSafeProp:yAe,toSafeFlatObject:xAe,reduceDescriptors:m8,freezeMethods:e_e,toObjectSet:t_e,toCamelCase:ZAe,noop:n_e,toFiniteNumber:i_e,findKey:p8,global:xs,isContextDefined:g8,isSpecCompliantForm:o_e,toJSONObject:r_e,isAsyncFn:a_e,isThenable:s_e,setImmediate:v8,asap:l_e,isIterable:b8,isSafeIterable:c_e},u_e=me.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),d_e=t=>{const e={};let n,i,o;return t&&t.split(` + */let j$e=()=>location.protocol+"//"+location.host;function r8(t,e){const{pathname:n,search:i,hash:o}=e,r=t.indexOf("#");if(r>-1){let a=o.includes(t.slice(r))?t.slice(r).length:1,s=o.slice(a);return s[0]!=="/"&&(s="/"+s),AM(s,"")}return AM(n,t)+i+o}function V$e(t,e,n,i){let o=[],r=[],a=null;const s=({state:f})=>{const h=r8(t,location),p=n.value,g=e.value;let m=0;if(f){if(n.value=h,e.value=f,a&&a===p){a=null;return}m=g?f.position-g.position:0}else i(h);o.forEach(v=>{v(n.value,p,{delta:m,type:gw.pop,direction:m?m>0?R0.forward:R0.back:R0.unknown})})};function l(){a=n.value}function c(f){o.push(f);const h=()=>{const p=o.indexOf(f);p>-1&&o.splice(p,1)};return r.push(h),h}function u(){if(document.visibilityState==="hidden"){const{history:f}=window;if(!f.state)return;f.replaceState(Ht({},f.state,{scroll:Ev()}),"")}}function d(){for(const f of r)f();r=[],window.removeEventListener("popstate",s),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",s),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:d}}function EM(t,e,n,i=!1,o=!1){return{back:t,current:e,forward:n,replaced:i,position:window.history.length,scroll:o?Ev():null}}function X$e(t){const{history:e,location:n}=window,i={value:r8(t,n)},o={value:e.state};o.value||r(i.value,{back:null,current:i.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function r(l,c,u){const d=t.indexOf("#"),f=d>-1?(n.host&&document.querySelector("base")?t:t.slice(d))+l:j$e()+t+l;try{e[u?"replaceState":"pushState"](c,"",f),o.value=c}catch(h){console.error(h),n[u?"replace":"assign"](f)}}function a(l,c){r(l,Ht({},e.state,EM(o.value.back,l,o.value.forward,!0),c,{position:o.value.position}),!0),i.value=l}function s(l,c){const u=Ht({},o.value,e.state,{forward:l,scroll:Ev()});r(u.current,u,!0),r(l,Ht({},EM(i.value,l,null),{position:u.position+1},c),!1),i.value=l}return{location:i,state:o,push:s,replace:a}}function Y$e(t){t=T$e(t);const e=X$e(t),n=V$e(t,e.state,e.location,e.replace);function i(r,a=!0){a||n.pauseListeners(),history.go(r)}const o=Ht({location:"",base:t,go:i,createHref:M$e.bind(null,t)},e,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>e.state.value}),o}let ys=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.Group=2]="Group",t}({});var An=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.ParamRegExp=2]="ParamRegExp",t[t.ParamRegExpEnd=3]="ParamRegExpEnd",t[t.EscapeNext=4]="EscapeNext",t}(An||{});const G$e={type:ys.Static,value:""},K$e=/[a-zA-Z0-9_]/;function U$e(t){if(!t)return[[]];if(t==="/")return[[G$e]];if(!t.startsWith("/"))throw new Error(`Invalid path "${t}"`);function e(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=An.Static,i=n;const o=[];let r;function a(){r&&o.push(r),r=[]}let s=0,l,c="",u="";function d(){c&&(n===An.Static?r.push({type:ys.Static,value:c}):n===An.Param||n===An.ParamRegExp||n===An.ParamRegExpEnd?(r.length>1&&(l==="*"||l==="+")&&e(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),r.push({type:ys.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):e("Invalid state to consume buffer"),c="")}function f(){c+=l}for(;se.length?e.length===1&&e[0]===ui.Static+ui.Segment?1:-1:0}function a8(t,e){let n=0;const i=t.score,o=e.score;for(;n0&&e[e.length-1]<0}const eAe={strict:!1,end:!0,sensitive:!1};function tAe(t,e,n){const i=J$e(U$e(t.path),n),o=Ht(i,{record:t,parent:e,children:[],alias:[]});return e&&!o.record.aliasOf==!e.record.aliasOf&&e.children.push(o),o}function nAe(t,e){const n=[],i=new Map;e=$M(eAe,e);function o(d){return i.get(d)}function r(d,f,h){const p=!h,g=DM(d);g.aliasOf=h&&h.record;const m=$M(e,d),v=[g];if("alias"in d){const w=typeof d.alias=="string"?[d.alias]:d.alias;for(const x of w)v.push(DM(Ht({},g,{components:h?h.record.components:g.components,path:x,aliasOf:h?h.record:g})))}let b,y;for(const w of v){const{path:x}=w;if(f&&x[0]!=="/"){const $=f.record.path,S=$[$.length-1]==="/"?"":"/";w.path=f.record.path+(x&&S+x)}if(b=tAe(w,f,m),h?h.alias.push(b):(y=y||b,y!==b&&y.alias.push(b),p&&d.name&&!RM(b)&&a(d.name)),s8(b)&&l(b),g.children){const $=g.children;for(let S=0;S<$.length;S++)r($[S],b,h&&h.children[S])}h=h||b}return y?()=>{a(y)}:od}function a(d){if(i8(d)){const f=i.get(d);f&&(i.delete(d),n.splice(n.indexOf(f),1),f.children.forEach(a),f.alias.forEach(a))}else{const f=n.indexOf(d);f>-1&&(n.splice(f,1),d.record.name&&i.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function s(){return n}function l(d){const f=rAe(d,n);n.splice(f,0,d),d.record.name&&!RM(d)&&i.set(d.record.name,d)}function c(d,f){let h,p={},g,m;if("name"in d&&d.name){if(h=i.get(d.name),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d});m=h.record.name,p=Ht(kM(f.params,h.keys.filter(y=>!y.optional).concat(h.parent?h.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),d.params&&kM(d.params,h.keys.map(y=>y.name))),g=h.stringify(p)}else if(d.path!=null)g=d.path,h=n.find(y=>y.re.test(g)),h&&(p=h.parse(g),m=h.record.name);else{if(h=f.name?i.get(f.name):n.find(y=>y.re.test(f.path)),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d,currentLocation:f});m=h.record.name,p=Ht({},f.params,d.params),g=h.stringify(p)}const v=[];let b=h;for(;b;)v.unshift(b.record),b=b.parent;return{name:m,path:g,params:p,matched:v,meta:oAe(v)}}t.forEach(d=>r(d));function u(){n.length=0,i.clear()}return{addRoute:r,resolve:c,removeRoute:a,clearRoutes:u,getRoutes:s,getRecordMatcher:o}}function kM(t,e){const n={};for(const i of e)i in t&&(n[i]=t[i]);return n}function DM(t){const e={path:t.path,redirect:t.redirect,name:t.name,meta:t.meta||{},aliasOf:t.aliasOf,beforeEnter:t.beforeEnter,props:iAe(t),children:t.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in t?t.components||null:t.component&&{default:t.component}};return Object.defineProperty(e,"mods",{value:{}}),e}function iAe(t){const e={},n=t.props||!1;if("component"in t)e.default=n;else for(const i in t.components)e[i]=typeof n=="object"?n[i]:n;return e}function RM(t){for(;t;){if(t.record.aliasOf)return!0;t=t.parent}return!1}function oAe(t){return t.reduce((e,n)=>Ht(e,n.meta),{})}function rAe(t,e){let n=0,i=e.length;for(;n!==i;){const r=n+i>>1;a8(t,e[r])<0?i=r:n=r+1}const o=aAe(t);return o&&(i=e.lastIndexOf(o,i-1)),i}function aAe(t){let e=t;for(;e=e.parent;)if(s8(e)&&a8(t,e)===0)return e}function s8({record:t}){return!!(t.name||t.components&&Object.keys(t.components).length||t.redirect)}function LM(t){const e=Je(Mv),n=Je(m$),i=L(()=>{const l=Lt(t.to);return e.resolve(l)}),o=L(()=>{const{matched:l}=i.value,{length:c}=l,u=l[c-1],d=n.matched;if(!u||!d.length)return-1;const f=d.findIndex(Ac.bind(null,u));if(f>-1)return f;const h=FM(l[c-2]);return c>1&&FM(u)===h&&d[d.length-1].path!==h?d.findIndex(Ac.bind(null,l[c-2])):f}),r=L(()=>o.value>-1&&dAe(n.params,i.value.params)),a=L(()=>o.value>-1&&o.value===n.matched.length-1&&n8(n.params,i.value.params));function s(l={}){if(uAe(l)){const c=e[Lt(t.replace)?"replace":"push"](Lt(t.to)).catch(od);return t.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:i,href:L(()=>i.value.href),isActive:r,isExactActive:a,navigate:s}}function sAe(t){return t.length===1?t[0]:t}const lAe=oe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:LM,setup(t,{slots:e}){const n=$t(LM(t)),{options:i}=Je(Mv),o=L(()=>({[NM(t.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[NM(t.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=e.default&&sAe(e.default(n));return t.custom?r:sr("a",{"aria-current":n.isExactActive?t.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),cAe=lAe;function uAe(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&!(t.button!==void 0&&t.button!==0)){if(t.currentTarget&&t.currentTarget.getAttribute){const e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function dAe(t,e){for(const n in e){const i=e[n],o=t[n];if(typeof i=="string"){if(i!==o)return!1}else if(!Bo(o)||o.length!==i.length||i.some((r,a)=>r.valueOf()!==o[a].valueOf()))return!1}return!0}function FM(t){return t?t.aliasOf?t.aliasOf.path:t.path:""}const NM=(t,e,n)=>t??e??n,fAe=oe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(t,{attrs:e,slots:n}){const i=Je(vw),o=L(()=>t.route||i.value),r=Je(TM,0),a=L(()=>{let c=Lt(r);const{matched:u}=o.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),s=L(()=>o.value.matched[a.value]);ot(TM,L(()=>a.value+1)),ot(H$e,s),ot(vw,o);const l=ae();return ye(()=>[l.value,s.value,t.name],([c,u,d],[f,h,p])=>{u&&(u.instances[d]=c,h&&h!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),c&&u&&(!h||!Ac(u,h)||!f)&&(u.enterCallbacks[d]||[]).forEach(g=>g(c))},{flush:"post"}),()=>{const c=o.value,u=t.name,d=s.value,f=d&&d.components[u];if(!f)return BM(n.default,{Component:f,route:c});const h=d.props[u],p=h?h===!0?c.params:typeof h=="function"?h(c):h:null,m=sr(f,Ht({},p,e,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(d.instances[u]=null)},ref:l}));return BM(n.default,{Component:m,route:c})||m}}});function BM(t,e){if(!t)return null;const n=t(e);return n.length===1?n[0]:n}const hAe=fAe;function pAe(t){const e=nAe(t.routes,t),n=t.parseQuery||B$e,i=t.stringifyQuery||OM,o=t.history,r=fu(),a=fu(),s=fu(),l=ie(oa);let c=oa;Rl&&t.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=k0.bind(null,Y=>""+Y),d=k0.bind(null,S$e),f=k0.bind(null,Hd);function h(Y,J){let Q,G;return i8(Y)?(Q=e.getRecordMatcher(Y),G=J):G=Y,e.addRoute(G,Q)}function p(Y){const J=e.getRecordMatcher(Y);J&&e.removeRoute(J)}function g(){return e.getRoutes().map(Y=>Y.record)}function m(Y){return!!e.getRecordMatcher(Y)}function v(Y,J){if(J=Ht({},J||l.value),typeof Y=="string"){const te=D0(n,Y,J.path),ue=e.resolve({path:te.path},J),se=o.createHref(te.fullPath);return Ht(te,ue,{params:f(ue.params),hash:Hd(te.hash),redirectedFrom:void 0,href:se})}let Q;if(Y.path!=null)Q=Ht({},Y,{path:D0(n,Y.path,J.path).path});else{const te=Ht({},Y.params);for(const ue in te)te[ue]==null&&delete te[ue];Q=Ht({},Y,{params:d(te)}),J.params=d(J.params)}const G=e.resolve(Q,J),ee=Y.hash||"";G.params=u(f(G.params));const X=A$e(i,Ht({},Y,{hash:y$e(ee),path:G.path})),K=o.createHref(X);return Ht({fullPath:X,hash:ee,query:i===OM?z$e(Y.query):Y.query||{}},G,{redirectedFrom:void 0,href:K})}function b(Y){return typeof Y=="string"?D0(n,Y,l.value.path):Ht({},Y)}function y(Y,J){if(c!==Y)return _c(an.NAVIGATION_CANCELLED,{from:J,to:Y})}function w(Y){return S(Y)}function x(Y){return w(Ht(b(Y),{replace:!0}))}function $(Y,J){const Q=Y.matched[Y.matched.length-1];if(Q&&Q.redirect){const{redirect:G}=Q;let ee=typeof G=="function"?G(Y,J):G;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=b(ee):{path:ee},ee.params={}),Ht({query:Y.query,hash:Y.hash,params:ee.path!=null?{}:Y.params},ee)}}function S(Y,J){const Q=c=v(Y),G=l.value,ee=Y.state,X=Y.force,K=Y.replace===!0,te=$(Q,G);if(te)return S(Ht(b(te),{state:typeof te=="object"?Ht({},ee,te.state):ee,force:X,replace:K}),J||Q);const ue=Q;ue.redirectedFrom=J;let se;return!X&&_$e(i,G,Q)&&(se=_c(an.NAVIGATION_DUPLICATED,{to:ue,from:G}),z(G,G,!0,!1)),(se?Promise.resolve(se):T(ue,G)).catch(re=>vr(re)?vr(re,an.NAVIGATION_GUARD_REDIRECT)?re:B(re):F(re,ue,G)).then(re=>{if(re){if(vr(re,an.NAVIGATION_GUARD_REDIRECT))return S(Ht({replace:K},b(re.to),{state:typeof re.to=="object"?Ht({},ee,re.to.state):ee,force:X}),J||ue)}else re=M(ue,G,!0,K,ee);return O(ue,G,re),re})}function _(Y,J){const Q=y(Y,J);return Q?Promise.reject(Q):Promise.resolve()}function P(Y){const J=U.values().next().value;return J&&typeof J.runWithContext=="function"?J.runWithContext(Y):Y()}function T(Y,J){let Q;const[G,ee,X]=W$e(Y,J);Q=L0(G.reverse(),"beforeRouteLeave",Y,J);for(const te of G)te.leaveGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});const K=_.bind(null,Y,J);return Q.push(K),q(Q).then(()=>{Q=[];for(const te of r.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).then(()=>{Q=L0(ee,"beforeRouteUpdate",Y,J);for(const te of ee)te.updateGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});return Q.push(K),q(Q)}).then(()=>{Q=[];for(const te of X)if(te.beforeEnter)if(Bo(te.beforeEnter))for(const ue of te.beforeEnter)Q.push(ha(ue,Y,J));else Q.push(ha(te.beforeEnter,Y,J));return Q.push(K),q(Q)}).then(()=>(Y.matched.forEach(te=>te.enterCallbacks={}),Q=L0(X,"beforeRouteEnter",Y,J,P),Q.push(K),q(Q))).then(()=>{Q=[];for(const te of a.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).catch(te=>vr(te,an.NAVIGATION_CANCELLED)?te:Promise.reject(te))}function O(Y,J,Q){s.list().forEach(G=>P(()=>G(Y,J,Q)))}function M(Y,J,Q,G,ee){const X=y(Y,J);if(X)return X;const K=J===oa,te=Rl?history.state:{};Q&&(G||K?o.replace(Y.fullPath,Ht({scroll:K&&te&&te.scroll},ee)):o.push(Y.fullPath,ee)),l.value=Y,z(Y,J,Q,K),B()}let I;function k(){I||(I=o.listen((Y,J,Q)=>{if(!V.listening)return;const G=v(Y),ee=$(G,V.currentRoute.value);if(ee){S(Ht(ee,{replace:!0,force:!0}),G).catch(od);return}c=G;const X=l.value;Rl&&D$e(PM(X.fullPath,Q.delta),Ev()),T(G,X).catch(K=>vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_CANCELLED)?K:vr(K,an.NAVIGATION_GUARD_REDIRECT)?(S(Ht(b(K.to),{force:!0}),G).then(te=>{vr(te,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&!Q.delta&&Q.type===gw.pop&&o.go(-1,!1)}).catch(od),Promise.reject()):(Q.delta&&o.go(-Q.delta,!1),F(K,G,X))).then(K=>{K=K||M(G,X,!1),K&&(Q.delta&&!vr(K,an.NAVIGATION_CANCELLED)?o.go(-Q.delta,!1):Q.type===gw.pop&&vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),O(G,X,K)}).catch(od)}))}let E=fu(),R=fu(),D;function F(Y,J,Q){B(Y);const G=R.list();return G.length?G.forEach(ee=>ee(Y,J,Q)):console.error(Y),Promise.reject(Y)}function N(){return D&&l.value!==oa?Promise.resolve():new Promise((Y,J)=>{E.add([Y,J])})}function B(Y){return D||(D=!Y,k(),E.list().forEach(([J,Q])=>Y?Q(Y):J()),E.reset()),Y}function z(Y,J,Q,G){const{scrollBehavior:ee}=t;if(!Rl||!ee)return Promise.resolve();const X=!Q&&R$e(PM(Y.fullPath,0))||(G||!Q)&&history.state&&history.state.scroll||null;return pt().then(()=>ee(Y,J,X)).then(K=>K&&k$e(K)).catch(K=>F(K,Y,J))}const W=Y=>o.go(Y);let j;const U=new Set,V={currentRoute:l,listening:!0,addRoute:h,removeRoute:p,clearRoutes:e.clearRoutes,hasRoute:m,getRoutes:g,resolve:v,options:t,push:w,replace:x,go:W,back:()=>W(-1),forward:()=>W(1),beforeEach:r.add,beforeResolve:a.add,afterEach:s.add,onError:R.add,isReady:N,install(Y){Y.component("RouterLink",cAe),Y.component("RouterView",hAe),Y.config.globalProperties.$router=V,Object.defineProperty(Y.config.globalProperties,"$route",{enumerable:!0,get:()=>Lt(l)}),Rl&&!j&&l.value===oa&&(j=!0,w(o.location).catch(G=>{}));const J={};for(const G in oa)Object.defineProperty(J,G,{get:()=>l.value[G],enumerable:!0});Y.provide(Mv,V),Y.provide(m$,kI(J)),Y.provide(vw,l);const Q=Y.unmount;U.add(Y),Y.unmount=function(){U.delete(Y),U.size<1&&(c=oa,I&&I(),I=null,l.value=oa,j=!1,D=!1),Q()}}};function q(Y){return Y.reduce((J,Q)=>J.then(()=>P(Q)),Promise.resolve())}return V}function zPe(){return Je(Mv)}function HPe(t){return Je(m$)}const gAe=[{path:"/",name:"dashboard",redirect:"/dashboard/ecommerce"},{path:"/dashboard/analytics",name:"dashboard-analytics",component:()=>ze(()=>import("./Dashboard-Dty7lg2F.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"editor",role:"dashboard.view"}},{path:"/my-data",name:"my-data",component:()=>ze(()=>import("./myData-CDJUmBNX.js"),__vite__mapDeps([6,7])),meta:{rule:"editor"}},{path:"/dashboard/ecommerce",name:"dashboard-ecommerce",component:()=>ze(()=>import("./Dashboard-Dty7lg2F.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"admin",role:"dashboard.view"}},{path:"/config/manage/const",component:()=>ze(()=>import("./Const-CiWiRUCV.js"),__vite__mapDeps([8,9,10,11])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت ثابت ها",active:!0}],pageTitle:"مدیریت ثابت ها",rule:"editor",role:"config.statics",parent:"manage",no_scroll:!0}},{path:"/config/manage/wallet",component:()=>ze(()=>import("./wallet-D0sHW9q3.js"),__vite__mapDeps([12,13])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت کیف پول",active:!0}],pageTitle:"مدیریت کیف پول",rule:"editor",role:"config.wallet",superAdminOnly:!0,parent:"manage",no_scroll:!0}},{path:"/config/manage/accounting",component:()=>ze(()=>import("./accounting-Dbj920fC.js"),__vite__mapDeps([14,2,15,16,17])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اتصال حسابداری",active:!0}],pageTitle:"اتصال حسابداری",rule:"editor",role:"config.accounting",parent:"manage",no_scroll:!0}},{path:"/config/manage/wage",component:()=>ze(()=>import("./wage-DTUfXfWe.js"),__vite__mapDeps([18,2,19])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اجرت",active:!0}],pageTitle:"اجرت",rule:"editor",role:"config.wage",parent:"manage",no_scroll:!0}},{path:"/config/manage/report",component:()=>ze(()=>import("./report-e-YemU3S.js"),__vite__mapDeps([20,21])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"گزارش",active:!0}],pageTitle:"گزارش",rule:"editor",role:"config.report",parent:"manage",no_scroll:!0}},{path:"/apps/product/",redirect:"/apps/product/list",name:"product"},{path:"/product/change/percent",component:()=>ze(()=>import("./ChangePercent-HGfS5bXV.js"),[]),meta:{rule:"editor",role:"product.percent",parent:"product",no_scroll:!0}},{path:"/apps/product/add",component:()=>ze(()=>import("./AddProduct-DqeCa5en.js"),__vite__mapDeps([22,10,23,24,25])),meta:{rule:"editor",role:"product.create",parent:"product",no_scroll:!0}},{path:"/apps/product/edit/:id/:variant_id?",name:"product-edit",component:()=>ze(()=>import("./EditProduct-BKzZP7ji.js"),__vite__mapDeps([26,22,10,23,24,25])),meta:{rule:"editor",role:"product.list.edit",parent:"product",no_scroll:!0}},{path:"/apps/product/list",name:"product-list",component:()=>ze(()=>import("./ProductList-DlDr1CI8.js"),__vite__mapDeps([27,28,1,2,29,30,31,32,9,33])),meta:{rule:"editor",role:"product.list",parent:"product",no_scroll:!0}},{path:"/category",redirect:"/category/list",name:"category"},{path:"/category/add/:id?",name:"category-add",component:()=>ze(()=>import("./Add-CyAPNN08.js"),__vite__mapDeps([34,35,36,37,10])),meta:{rule:"editor",role:"collection.create",parent:"category",no_scroll:!0}},{path:"/category/edit/:id",component:()=>ze(()=>import("./Edit-CNTQOlgk.js"),__vite__mapDeps([38,35,36,37,10])),name:"category-edit",meta:{rule:"editor",role:"collection.list.edit",parent:"category",no_scroll:!0}},{path:"/category/list",name:"category-list",component:()=>ze(()=>import("./List-CMDP8SDT.js"),__vite__mapDeps([39,28,1,2,29,30,40,35,36,37,10,9])),meta:{rule:"editor",role:"collection.list",parent:"category",no_scroll:!0}},{path:"/add/findoc",component:()=>ze(()=>import("./addFinDoc-Copg65eX.js"),__vite__mapDeps([41,42,36,37])),meta:{rule:"editor",role:"document.create"}},{path:"/edit/findoc/:id",component:()=>ze(()=>import("./addFinDoc-Copg65eX.js"),__vite__mapDeps([41,42,36,37])),meta:{rule:"editor",role:"document.list.edit"}},{path:"/order",redirect:"/order/list",name:"order"},{path:"/order/list",component:()=>ze(()=>import("./List-Cql7jPx_.js"),__vite__mapDeps([43,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,51,24,16,52,53])),meta:{rule:"editor",role:"order.list",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/omde-list",component:()=>ze(()=>import("./OmdeList-D7WY5ylW.js"),__vite__mapDeps([54,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,51,24,16,52,55])),meta:{rule:"editor",role:"order.omde",parent:"order",no_scroll:!0}},{path:"/order/make",component:()=>ze(()=>import("./MakeOrder-umVSia6q.js"),__vite__mapDeps([56,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,57])),meta:{rule:"editor",role:"order.makeOrder",parent:"order",no_scroll:!0}},{path:"/order/create",component:()=>ze(()=>import("./create-BIvFVhDo.js"),__vite__mapDeps([58,28,1,2,29,30,32,7,59])),meta:{rule:"editor",role:"order.create",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/tamin-list",component:()=>ze(()=>import("./TaminList-BDxHKzcP.js"),__vite__mapDeps([60,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,51,24,16,52,61])),meta:{rule:"editor",role:"order.tamin",parent:"order",no_scroll:!0}},{path:"/major/promotion/list",component:()=>ze(()=>import("./promotion_list-C6ai2IKH.js"),__vite__mapDeps([62,28,1,2,29,30,40,63,64,36,37,65,66,67])),meta:{rule:"editor",role:"offers.list",no_scroll:!0}},{path:"/major/promotion/add",component:()=>ze(()=>import("./promotion_add_edit-CkCABaCG.js"),__vite__mapDeps([68,63,64,36,37,65])),meta:{rule:"editor",role:"offers.create",no_scroll:!0}},{path:"/major/promotion/edit/:id",component:()=>ze(()=>import("./promotion_add_edit-CkCABaCG.js"),__vite__mapDeps([68,63,64,36,37,65])),meta:{rule:"editor",role:"offers.list.edit",no_scroll:!0}},{path:"/major/promotion/tak/add",component:()=>ze(()=>import("./promotion_tak_add_edit-0aN9XPzw.js"),__vite__mapDeps([69,66,64,36,37,65])),meta:{rule:"editor",role:"offers.create.tak",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/tak/edit/:id",component:()=>ze(()=>import("./promotion_tak_add_edit-0aN9XPzw.js"),__vite__mapDeps([69,66,64,36,37,65])),meta:{rule:"editor",role:"offers.list.tak.edit",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/autopromotion",component:()=>ze(()=>import("./autopromotion-DXzzvH9j.js"),[]),meta:{rule:"editor",role:"offers.autopromotion",no_scroll:!0}},{path:"/major/offersIgnore",component:()=>ze(()=>import("./offersIgnore-add-edit-B39Jv3mn.js"),__vite__mapDeps([70,28,1,2,29,30,71])),meta:{rule:"editor",role:"offersIgnore"}},{path:"/comments",name:"comments",component:()=>ze(()=>import("./Comments-BRX5fmch.js"),__vite__mapDeps([72,73,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,74])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دیدگاه ها",active:!0}],pageTitle:"دیدگاه ها",rule:"editor",role:"comment",no_scroll:!0}},{path:"/sms/create",name:"create_sms",component:()=>ze(()=>import("./create-Coyb76zV.js"),__vite__mapDeps([75,28,1,2,29,30,76])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال پیامک",active:!0}],pageTitle:"ارسال پیامک",rule:"editor",role:"sms.create",no_scroll:!0}},{path:"/notify",name:"notify",component:()=>ze(()=>import("./user-B7WvnXNF.js"),__vite__mapDeps([77,28,1,2,29,30,78])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست نوتیفیکیشن های دریافتی",active:!0}],pageTitle:"لیست نوتیفیکیشن های ذریافتی",rule:"editor",role:"notify.me",no_scroll:!0}},{path:"/notify/create",name:"create_notify",component:()=>ze(()=>import("./create-ucx1HuF8.js"),[]),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال نوتیفیکیشن",active:!0}],pageTitle:"ارسال نوتیفیکیشن",rule:"editor",role:"notify.create",no_scroll:!0}},{path:"/wallet",name:"wallet",component:()=>ze(()=>import("./wallet-DNF2ihBn.js"),__vite__mapDeps([79,28,1,2,29,30])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست کیف پول های شارژ شده",active:!0}],pageTitle:"لیست کیف پول های شارژ شده",rule:"editor",role:"wallet",no_scroll:!0}},{path:"/reagent/edit/:id",name:"reagent-edit",component:()=>ze(()=>import("./EditReagent-CwG5Obtx.js"),__vite__mapDeps([80,81,82,10,49,83,84,50,47,85])),meta:{rule:"editor",role:"persons.list.sellers.edit",parent:"product",no_scroll:!0}},{path:"/reagent/add",name:"reagent-add",component:()=>ze(()=>import("./EditReagent-CwG5Obtx.js"),__vite__mapDeps([80,81,82,10,49,83,84,50,47,85])),meta:{rule:"editor",role:"persons.create",parent:"product",no_scroll:!0}},{path:"/reagent/view/:id",name:"reagent-view",component:()=>ze(()=>import("./AgentDetail-DRGOkkVC.js"),__vite__mapDeps([86,1,2,87])),meta:{rule:"editor",role:"persons.list.sellers.view",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/edit/:id",name:"bulkCustomer-edit",component:()=>ze(()=>import("./EditBulkCustomer-C_e-C8L8.js"),__vite__mapDeps([88,89,36,37,10,82,90,2,91,49,83,84,47,16])),meta:{rule:"editor",role:"persons.list.client.omde.edit",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/view/:id",name:"bulkCustomer-view",component:()=>ze(()=>import("./ViewOmdeCustomer-D3i36iTG.js"),__vite__mapDeps([92,93,1,2,84,49,94])),meta:{rule:"editor",role:"persons.list.client.omde.view",parent:"product",no_scroll:!0}},{path:"/singleCustomer/edit/:id",name:"singleCustomer-edit",component:()=>ze(()=>import("./EditSingleCustomer-Bn4VcGk8.js"),__vite__mapDeps([95,96,82,90,2,91,49,97])),meta:{rule:"editor",role:"persons.list.client.single.edit",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/singleCustomer/view/:id",name:"singleCustomer-view",component:()=>ze(()=>import("./ViewSingleCustomer-B2QupTSx.js"),__vite__mapDeps([98,93,1,2,84,49,94])),meta:{rule:"editor",role:"persons.list.client.single.view",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/customer/omde-list",name:"omde-list-customer",component:()=>ze(()=>import("./OmdeList-DQ1AeZVa.js"),__vite__mapDeps([99,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان عمده",active:!0}],pageTitle:"مشتریان عمده",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/omde-non-verified-list",name:"omde-non-verified-list",component:()=>ze(()=>import("./OmdeNonVerifiedList-BiBG9jCs.js"),__vite__mapDeps([102,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان در انتظار",active:!0}],pageTitle:"مشتریان در انتظار",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/banker-list",name:"banker-list",component:()=>ze(()=>import("./BankerList-CuVGBn-P.js"),__vite__mapDeps([103,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست بنکداران",active:!0}],pageTitle:"لیست بنکداران",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/shopkeeper-list",name:"shopkeeper-list",component:()=>ze(()=>import("./ShopkeeperList-DAWnyPJb.js"),__vite__mapDeps([104,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مغازه داران حضوری",active:!0}],pageTitle:"لیست مغازه داران حضوری",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/omde-archived-list",name:"omde-archived-list",component:()=>ze(()=>import("./OmdeArchivedList-RTBSSPqv.js"),__vite__mapDeps([105,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان بایگانی",active:!0}],pageTitle:"مشتریان بایگانی",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/reagent-list",name:"raegentList",component:()=>ze(()=>import("./ReagentList-Bm3uQYje.js"),__vite__mapDeps([106,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,40])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارشناسان فروش",active:!0}],pageTitle:"کارشناسان فروش",role:"persons.list.sellers",rule:"editor"}},{path:"/customer/add",name:"add-customer",component:()=>ze(()=>import("./AddCustomer-DXt3pmSf.js"),__vite__mapDeps([107,89,36,37,10,82,90,2,91,49,83,84,47,16,81,50,85,96,97,108])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"},{title:"افزودن مشتری",active:!0}],pageTitle:"افزودن مشتری",role:"persons.create",rule:"editor"}},{path:"/customer/list",name:"list-customer",component:()=>ze(()=>import("./SingleCustomer-Ds30MZZu.js"),__vite__mapDeps([109,28,1,2,29,30,4,110])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"}],pageTitle:"لیست مشتریان",role:"persons.list.client.single",superAdminOnly:!0,rule:"editor"}},{path:"/report/order_item",name:"report_order_item",component:()=>ze(()=>import("./order_item-BLR_vTQ1.js"),__vite__mapDeps([111,90,2,91,1,112])),meta:{role:"report.order.item",rule:"editor"}},{path:"/report/product",name:"report_product",component:()=>ze(()=>import("./product-Pyi69LQn.js"),__vite__mapDeps([113,90,2,91,114])),meta:{role:"report.product",rule:"editor"}},{path:"/finical/list",name:"finical_list",component:()=>ze(()=>import("./list-DNHKXSxl.js"),__vite__mapDeps([115,28,1,2,29,30,40,42,36,37,9])),meta:{role:"document.list",rule:"editor"}},{path:"/user/list",component:()=>ze(()=>import("./ListUser-xB3fMA3W.js"),__vite__mapDeps([116,28,1,2,29,30,40,117,36,37,118,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مدیران",active:!0}],pageTitle:"لیست مدیران",role:"user.list",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/create",component:()=>ze(()=>import("./UserCreate-8S3eAopa.js"),__vite__mapDeps([117,36,37,118])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن کاربر",active:!0}],pageTitle:"افزودن کاربر",role:"user.create",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/edit/:id",component:()=>ze(()=>import("./UserEdit-DgpzTP1E.js"),__vite__mapDeps([119,117,36,37,118])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ویرایش نوع کاربر",active:!0}],pageTitle:"ویرایش نوع کاربر",rule:"editor",role:"user.list.edit",parent:"user",no_scroll:!0}},{path:"/permission",component:()=>ze(()=>import("./Permission-CenARUCd.js"),__vite__mapDeps([120,7,121])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دسترسی ها",active:!0}],pageTitle:"دسترسی ها",rule:"editor",role:"user.permission",parent:"permission",no_scroll:!0}},{path:"/city/create",component:()=>ze(()=>import("./createCity-pjdKbfGT.js"),__vite__mapDeps([122,123,36,37,82])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن شهر",active:!0}],pageTitle:"افزودن شهر",rule:"editor",role:"cities.create",parent:"city",no_scroll:!0}},{path:"/city/list",component:()=>ze(()=>import("./cityList-DX9LVS_S.js"),__vite__mapDeps([124,28,1,2,29,30,40,123,36,37,82,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست شهر ها",active:!0}],pageTitle:"لیست شهر ها",rule:"editor",role:"cities.list",parent:"city",no_scroll:!0}},{path:"/statics",name:"statics",component:()=>ze(()=>import("./index-DrgFPRTa.js"),__vite__mapDeps([125,1,2])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"آمار",active:!0}],pageTitle:"آمار",rule:"editor",role:"statics",no_scroll:!0}},{path:"/newsletters",name:"newsletters",component:()=>ze(()=>import("./newsletters-CkmueuCH.js"),__vite__mapDeps([126,28,1,2,29,30,127])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"خبرنامه",active:!0}],pageTitle:"خبرنامه",rule:"editor",no_scroll:!0}},{path:"/branch/add",name:"add-branch",component:()=>ze(()=>import("./AddBranches-DU7wFOIC.js"),__vite__mapDeps([128,129,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"افزودن شعب",active:!0}],pageTitle:"افزودن شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/edit/:id",name:"edit-branch",component:()=>ze(()=>import("./EditBranches-BgZpg5Qg.js"),__vite__mapDeps([130,129,36,37])),meta:{pageTitle:"ویرایش شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/list",name:"list-branch",component:()=>ze(()=>import("./ListBranches-HIAgbHcy.js"),__vite__mapDeps([131,132,28,1,2,29,30,40,129,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"لیست شعب",active:!0}],pageTitle:"لیست شعب",role:"branch.list",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/add",name:"add-workshop",component:()=>ze(()=>import("./AddWorkshop-DkrmcSHY.js"),__vite__mapDeps([133,134,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"افزودن کارگاه",active:!0}],pageTitle:"افزودن کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/edit/:id",name:"edit-workshop",component:()=>ze(()=>import("./EditWorkshop-BC8_AOnI.js"),__vite__mapDeps([135,134,36,37])),meta:{pageTitle:"ویرایش کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/list",name:"list-workshop",component:()=>ze(()=>import("./ListWorkshop-eILF1R4A.js"),__vite__mapDeps([136,132,28,1,2,29,30,40,134,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"لیست کارگاه ها",active:!0}],pageTitle:"لیست کارگاه ها",role:"workshop.list",superAdminOnly:!0,rule:"editor"}},{path:"/invoice/add",name:"add-invoice",component:()=>ze(()=>import("./AddInvoice-DwmImnAo.js"),__vite__mapDeps([137,36,37,28,1,2,29,30,138])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتور انتقال"},{title:"افزودن فاکتور",active:!0}],pageTitle:"افزودن فاکتور",role:"invoice.create",rule:"editor"}},{path:"/invoice/edit/:id",name:"edit-invoice",component:()=>ze(()=>import("./EditInvoice-oFQdQ5sU.js"),__vite__mapDeps([139,137,36,37,28,1,2,29,30,138])),meta:{pageTitle:"ویرایش فاکتورها",role:"invoice.create",rule:"editor"}},{path:"/invoice/list",name:"list-invoice",component:()=>ze(()=>import("./ListInvoice-g-UG6V0q.js"),__vite__mapDeps([140,28,1,2,29,30,40,137,36,37,138,9,141])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتورانتقال"},{title:"لیست فاکتورها",active:!0}],pageTitle:"لیست فاکتورها",role:"invoice.list",rule:"editor"}}],mAe=[{path:"/auth/login",name:"page-login",component:()=>ze(()=>import("./Login-uO1nRvXv.js"),__vite__mapDeps([142,73,7,48,16,15,143])),meta:{rule:"editor"}},{path:"/reg",name:"reg",component:()=>ze(()=>import("./reg-CqiFjlXn.js"),__vite__mapDeps([144,145])),meta:{rule:"editor"}}];function l8(t,e){return function(){return t.apply(e,arguments)}}const{toString:vAe}=Object.prototype,{getPrototypeOf:Ma}=Object,{iterator:yf,toStringTag:c8}=Symbol,Wd=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),u8=t=>typeof t=="string"&&(t==="__proto__"||t==="constructor"||t==="prototype"),d8=(t,e,n)=>t===Object.prototype||!n&&e===null,bAe=t=>{if(!Object.isExtensible(t))return!1;const e=Object.getOwnPropertyNames(t);return Object.getOwnPropertySymbols&&e.push(...Object.getOwnPropertySymbols(t)),e.every(n=>{if(u8(n))return!1;const i=Object.getOwnPropertyDescriptor(t,n);return!!i&&i.configurable&&i.writable===!0})},jd=(t,e)=>{let n=t;const i=[];for(;n!=null;){if(i.indexOf(n)!==-1)return!1;i.push(n);const o=Ma(n);if(d8(n,o,n===t))return!1;if(Wd(n,e))return!0;n=o}return!1},yAe=(t,e)=>t!=null&&jd(t,e)?t[e]:void 0,xAe=t=>{if(t==null||typeof t!="object"&&typeof t!="function")return t;const e=Ma(t);if(e===null&&bAe(t))return t;const n=Object.create(null),i=Object.create(null),o=[];let r=t;for(;r!=null&&o.indexOf(r)===-1;){o.push(r);const a=r===t?e:Ma(r);if(d8(r,a,r===t))break;const s=Object.getOwnPropertyNames(r);Object.getOwnPropertySymbols&&s.push(...Object.getOwnPropertySymbols(r));for(const l of s)u8(l)||Wd(i,l)||(n[l]=t[l],i[l]=!0);r=a}return n},v$=(t=>e=>{const n=vAe.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),So=t=>(t=t.toLowerCase(),e=>v$(e)===t),Iv=t=>e=>typeof e===t,{isArray:Ks}=Array,Us=Iv("undefined");function Gc(t){return t!==null&&!Us(t)&&t.constructor!==null&&!Us(t.constructor)&&Oi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const f8=So("ArrayBuffer");function wAe(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&f8(t.buffer),e}const SAe=Iv("string"),Oi=Iv("function"),h8=Iv("number"),Kc=t=>t!==null&&typeof t=="object",CAe=t=>t===!0||t===!1,hp=t=>{if(!Kc(t))return!1;const e=Ma(t);return(e===null||e===Object.prototype||Ma(e)===null)&&!jd(t,c8)&&!jd(t,yf)},$Ae=t=>{if(!Kc(t)||Gc(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},AAe=So("Date"),_Ae=So("File"),PAe=t=>!!(t&&typeof t.uri<"u"),OAe=t=>t&&typeof t.getParts<"u",TAe=So("Blob"),EAe=So("FileList"),MAe=So("Set"),IAe=t=>Kc(t)&&Oi(t.pipe);function kAe(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const zM=kAe(),HM=typeof zM.FormData<"u"?zM.FormData:void 0,DAe=t=>{if(!t)return!1;if(HM&&t instanceof HM)return!0;const e=Ma(t);if(!e||e===Object.prototype||!Oi(t.append))return!1;const n=v$(t);return n==="formdata"||n==="object"&&Oi(t.toString)&&t.toString()==="[object FormData]"},RAe=So("URLSearchParams"),[LAe,FAe,NAe,BAe]=["ReadableStream","Request","Response","Headers"].map(So),zAe=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function xf(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let i,o;if(typeof t!="object"&&(t=[t]),Ks(t))for(i=0,o=t.length;i0;)if(o=n[i],e===o.toLowerCase())return o;return null}const xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,g8=t=>!Us(t)&&t!==xs;function bw(...t){const{caseless:e,skipUndefined:n}=g8(this)&&this||{},i={},o=(r,a)=>{if(a==="__proto__"||a==="constructor"||a==="prototype")return;const s=e&&typeof a=="string"&&p8(i,a)||a,l=Wd(i,s)?i[s]:void 0;hp(l)&&hp(r)?i[s]=bw(l,r):hp(r)?i[s]=bw({},r):Ks(r)?i[s]=r.slice():(!n||!Us(r))&&(i[s]=r)};for(let r=0,a=t.length;r(xf(e,(o,r)=>{n&&Oi(o)?Object.defineProperty(t,r,{__proto__:null,value:l8(o,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,r,{__proto__:null,value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),t),WAe=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),jAe=(t,e,n,i)=>{t.prototype=Object.create(e.prototype,i),Object.defineProperty(t.prototype,"constructor",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{__proto__:null,value:e.prototype}),n&&Object.assign(t.prototype,n)},VAe=(t,e,n,i)=>{let o,r,a;const s={};if(e=e||{},t==null)return e;do{for(o=Object.getOwnPropertyNames(t),r=o.length;r-- >0;)a=o[r],(!i||i(a,t,e))&&!s[a]&&(e[a]=t[a],s[a]=!0);t=n!==!1&&Ma(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},XAe=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const i=t.indexOf(e,n);return i!==-1&&i===n},YAe=t=>{if(!t)return null;if(Ks(t))return t;let e=t.length;if(!h8(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},GAe=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ma(Uint8Array)),KAe=(t,e)=>{const i=(t&&t[yf]).call(t);let o;for(;(o=i.next())&&!o.done;){const r=o.value;e.call(t,r[0],r[1])}},UAe=(t,e)=>{let n;const i=[];for(;(n=t.exec(e))!==null;)i.push(n);return i},qAe=So("HTMLFormElement"),ZAe=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,i,o){return i.toUpperCase()+o}),{propertyIsEnumerable:JAe}=Object.prototype,QAe=So("RegExp"),m8=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),i={};xf(n,(o,r)=>{let a;(a=e(o,r,t))!==!1&&(i[r]=a||o)}),Object.defineProperties(t,i)},e_e=t=>{m8(t,(e,n)=>{if(Oi(t)&&["arguments","caller","callee"].includes(n))return!1;const i=t[n];if(Oi(i)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},t_e=(t,e)=>{const n={},i=o=>{o.forEach(r=>{n[r]=!0})};return Ks(t)?i(t):i(String(t).split(e)),n},n_e=()=>{},i_e=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function o_e(t){return!!(t&&Oi(t.append)&&t[c8]==="FormData"&&t[yf])}const r_e=t=>{const e=new WeakSet,n=i=>{if(Kc(i)){if(e.has(i))return;if(Gc(i))return i;if(!("toJSON"in i)){e.add(i);let o;if(MAe(i)){o=[];for(const r of i){const a=n(r);!Us(a)&&o.push(a)}}else o=Ks(i)?[]:{},xf(i,(r,a)=>{const s=n(r);!Us(s)&&(o[a]=s)});return e.delete(i),o}}return i};return n(t)},a_e=So("AsyncFunction"),s_e=t=>t&&(Kc(t)||Oi(t))&&Oi(t.then)&&Oi(t.catch),v8=((t,e)=>t?setImmediate:e?((n,i)=>(xs.addEventListener("message",({source:o,data:r})=>{o===xs&&r===n&&i.length&&i.shift()()},!1),o=>{i.push(o),xs.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Oi(xs.postMessage)),l_e=typeof queueMicrotask<"u"?queueMicrotask.bind(xs):typeof process<"u"&&process.nextTick||v8,b8=t=>t!=null&&Oi(t[yf]),c_e=t=>t!=null&&jd(t,yf)&&b8(t),me={isArray:Ks,isArrayBuffer:f8,isBuffer:Gc,isFormData:DAe,isArrayBufferView:wAe,isString:SAe,isNumber:h8,isBoolean:CAe,isObject:Kc,isPlainObject:hp,isEmptyObject:$Ae,isReadableStream:LAe,isRequest:FAe,isResponse:NAe,isHeaders:BAe,isUndefined:Us,isDate:AAe,isFile:_Ae,isReactNativeBlob:PAe,isReactNative:OAe,isBlob:TAe,isRegExp:QAe,isFunction:Oi,isStream:IAe,isURLSearchParams:RAe,isTypedArray:GAe,isFileList:EAe,forEach:xf,merge:bw,extend:HAe,trim:zAe,stripBOM:WAe,inherits:jAe,toFlatObject:VAe,kindOf:v$,kindOfTest:So,endsWith:XAe,toArray:YAe,forEachEntry:KAe,matchAll:UAe,isHTMLForm:qAe,hasOwnProperty:Wd,hasOwnProp:Wd,hasOwnInPrototypeChain:jd,getSafeProp:yAe,toSafeFlatObject:xAe,reduceDescriptors:m8,freezeMethods:e_e,toObjectSet:t_e,toCamelCase:ZAe,noop:n_e,toFiniteNumber:i_e,findKey:p8,global:xs,isContextDefined:g8,isSpecCompliantForm:o_e,toJSONObject:r_e,isAsyncFn:a_e,isThenable:s_e,setImmediate:v8,asap:l_e,isIterable:b8,isSafeIterable:c_e},u_e=me.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),d_e=t=>{const e={};let n,i,o;return t&&t.split(` `).forEach(function(a){o=a.indexOf(":"),n=a.substring(0,o).trim().toLowerCase(),i=a.substring(o+1).trim();const s=me.hasOwnProp(e,n);!n||s&&me.hasOwnProp(u_e,n)||(n==="set-cookie"?s?e[n].push(i):e[n]=[i]:e[n]=s?e[n]+", "+i:i)}),e};function f_e(t){let e=0,n=t.length;for(;ee;){const i=t.charCodeAt(n-1);if(i!==9&&i!==32)break;n-=1}return e===0&&n===t.length?t:t.slice(e,n)}const h_e=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),p_e=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function b$(t,e){return me.isArray(t)?t.map(n=>b$(n,e)):f_e(String(t).replace(e,""))}const g_e=t=>b$(t,h_e),m_e=t=>b$(t,p_e);function y8(t){const e=Object.create(null);return me.forEach(t.toJSON(),(n,i)=>{e[i]=m_e(n)}),e}const WM=Symbol("internals");function hu(t){return t&&String(t).trim().toLowerCase()}function pp(t){return t===!1||t==null?t:me.isArray(t)?t.map(pp):g_e(String(t))}function v_e(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=n.exec(t);)e[i[1]]=i[2];return e}const b_e=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function F0(t){let e=0,n=t.length;for(;ee;){const i=t.charCodeAt(n-1);if(i!==9&&i!==32)break;n-=1}return e===0&&n===t.length?t:t.slice(e,n)}function y_e(t){const e=t.length-1;if(e<1||t.charCodeAt(0)!==34||t.charCodeAt(e)!==34)return t;let n="";for(let i=1;i=e))return t;n+=t[i]}return n}function x_e(t){const e=Object.create(null),n=String(t);let i=0,o=!1,r=!1;function a(s){const l=F0(n.slice(i,s)),c=l.indexOf("=");if(c<1)return;const u=F0(l.slice(0,c));if(!b_e.test(u))return;const d=u.toLowerCase();if(d==="__proto__"||d==="constructor"||d==="prototype")return;const f=F0(l.slice(c+1));e[d]=y_e(f)}for(let s=0;s/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function N0(t,e,n,i,o){if(me.isFunction(i))return i.call(this,e,n);if(o&&(e=n),!!me.isString(e)){if(me.isString(i))return e.indexOf(i)!==-1;if(me.isRegExp(i))return i.test(e)}}function S_e(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,i)=>n.toUpperCase()+i)}function C_e(t,e){const n=me.toCamelCase(" "+e);["get","set","has"].forEach(i=>{Object.defineProperty(t,i+n,{__proto__:null,value:function(o,r,a){return this[i].call(this,e,o,r,a)},configurable:!0})})}let ti=class{constructor(e){e&&this.set(e)}set(e,n,i){const o=this;function r(s,l,c){const u=hu(l);if(!u)return;const d=me.findKey(o,u);(!d||o[d]===void 0||c===!0||c===void 0&&o[d]!==!1)&&(o[d||l]=pp(s))}const a=(s,l)=>me.forEach(s,(c,u)=>r(c,u,l));if(me.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(me.isString(e)&&(e=e.trim())&&!w_e(e))a(d_e(e),n);else if(me.isObject(e)&&me.isSafeIterable(e)){let s=Object.create(null),l,c;for(const u of e){if(!me.isArray(u))throw new TypeError("Object iterator must return a key-value pair");c=u[0],me.hasOwnProp(s,c)?(l=s[c],s[c]=me.isArray(l)?[...l,u[1]]:[l,u[1]]):s[c]=u[1]}a(s,n)}else e!=null&&r(n,e,i);return this}get(e,n){if(e=hu(e),e){const i=me.findKey(this,e);if(i){const o=this[i];if(!n)return o;if(n===!0)return v_e(o);if(me.isFunction(n))return n.call(this,o,i);if(me.isRegExp(n))return n.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=hu(e),e){const i=me.findKey(this,e);return!!(i&&this[i]!==void 0&&(!n||N0(this,this[i],i,n)))}return!1}delete(e,n){const i=this;let o=!1;function r(a){if(a=hu(a),a){const s=me.findKey(i,a);s&&(!n||N0(i,i[s],s,n))&&(delete i[s],o=!0)}}return me.isArray(e)?e.forEach(r):r(e),o}clear(e){const n=Object.keys(this);let i=n.length,o=!1;for(;i--;){const r=n[i];(!e||N0(this,this[r],r,e,!0))&&(delete this[r],o=!0)}return o}normalize(e){const n=this,i={};return me.forEach(this,(o,r)=>{const a=me.findKey(i,r);if(a){n[a]=pp(o),delete n[r];return}const s=e?S_e(r):String(r).trim();s!==r&&delete n[r],n[s]=pp(o),i[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return me.forEach(this,(i,o)=>{i!=null&&i!==!1&&(n[o]=e&&me.isArray(i)?i.join(", "):i)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` `)}getSetCookie(){const e=this.get("set-cookie");return me.isArray(e)?e:e==null||e===!1?[]:[e]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static parseParameters(e){return x_e(e)}static concat(e,...n){const i=new this(e);return n.forEach(o=>i.set(o)),i}static accessor(e){const i=(this[WM]=this[WM]={accessors:{}}).accessors,o=this.prototype;function r(a){const s=hu(a);i[s]||(C_e(o,a),i[s]=!0)}return me.isArray(e)?e.forEach(r):r(e),this}};ti.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);me.reduceDescriptors(ti.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(i){this[n]=i}}});me.freezeMethods(ti);const Wg="[REDACTED ****]";function $_e(t){if(me.hasOwnProp(t,"toJSON"))return!0;let e=Object.getPrototypeOf(t);for(;e&&e!==Object.prototype;){if(me.hasOwnProp(e,"toJSON"))return!0;e=Object.getPrototypeOf(e)}return!1}function A_e(t,e){const n=new Set(e.map(r=>String(r).toLowerCase())),i=[],o=r=>{if(r===null||typeof r!="object"||me.isBuffer(r))return r;if(i.indexOf(r)!==-1)return;r instanceof ti&&(r=r.toJSON()),i.push(r);let a;if(me.isArray(r))a=[],r.forEach((s,l)=>{const c=o(s);me.isUndefined(c)||(a[l]=c)});else{if(!me.isPlainObject(r)&&$_e(r))return i.pop(),r;a=Object.create(null);for(const[s,l]of Object.entries(r)){const c=n.has(s.toLowerCase())?Wg:o(l);me.isUndefined(c)||(a[s]=c)}}return i.pop(),a};return o(t)}function jM(t){try{return String(t)}catch{return""}}function __e(t){return t.errors.map(n=>{try{return n&&n.message?jM(n.message):jM(n)}catch{return""}}).filter(Boolean).join("; ")||t.name||"AggregateError"}let He=class x8 extends Error{static from(e,n,i,o,r,a){let s=e.message;!s&&me.isArray(e.errors)&&e.errors.length&&(s=__e(e));const l=new x8(s,n||e.code,i,o,r);return Object.defineProperty(l,"cause",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),l.name=e.name,e.status!=null&&l.status==null&&(l.status=e.status),a&&Object.assign(l,a),l}constructor(e,n,i,o,r){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),i&&(this.config=i),o&&(this.request=o),r&&(this.response=r,this.status=r.status)}toJSON(){const e=this.config,n=e&&me.hasOwnProp(e,"redact")?e.redact:void 0,i=me.isArray(n)&&n.length>0?A_e(e,n):me.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:i,code:this.code,status:this.status}}};He.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";He.ERR_BAD_OPTION="ERR_BAD_OPTION";He.ECONNABORTED="ECONNABORTED";He.ETIMEDOUT="ETIMEDOUT";He.ECONNREFUSED="ECONNREFUSED";He.ERR_NETWORK="ERR_NETWORK";He.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";He.ERR_DEPRECATED="ERR_DEPRECATED";He.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";He.ERR_BAD_REQUEST="ERR_BAD_REQUEST";He.ERR_CANCELED="ERR_CANCELED";He.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";He.ERR_INVALID_URL="ERR_INVALID_URL";He.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const P_e=null,w8=100;function yw(t){return me.isPlainObject(t)||me.isArray(t)}function S8(t){return me.endsWith(t,"[]")?t.slice(0,-2):t}function B0(t,e,n){return t?t.concat(e).map(function(o,r){return o=S8(o),!n&&r?"["+o+"]":o}).join(n?".":""):e}function O_e(t){return me.isArray(t)&&!t.some(yw)}const T_e=me.toFlatObject(me,{},null,function(e){return/^is[A-Z]/.test(e)});function kv(t,e,n){if(!me.isObject(t))throw new TypeError("target must be an object");e=e||new FormData;const i=(b,y)=>{const w=me.getSafeProp(n,b);return me.isUndefined(w)?y:w},o=i("metaTokens",!0),r=i("visitor")||g,a=i("dots",!1),s=i("indexes",!1),l=i("Blob")||typeof Blob<"u"&&Blob,c=i("maxDepth",w8),u=l&&me.isSpecCompliantForm(e),d=[];if(!me.isFunction(r))throw new TypeError("visitor must be a function");function f(b){if(b===null)return"";if(me.isDate(b))return b.toISOString();if(me.isBoolean(b))return b.toString();if(!u&&me.isBlob(b))throw new He("Blob is not supported. Use a Buffer instead.");if(me.isArrayBuffer(b)||me.isTypedArray(b)){if(u&&typeof l=="function")return new l([b]);throw new He("Blob is not supported. Use a Buffer instead.",He.ERR_NOT_SUPPORT)}return b}function h(b){if(b>c)throw new He("Object is too deeply nested ("+b+" levels). Max depth: "+c,He.ERR_FORM_DATA_DEPTH_EXCEEDED)}function p(b,y){if(c===1/0)return JSON.stringify(b);const w=[];return JSON.stringify(b,function($,S){if(!me.isObject(S))return S;for(;w.length&&w[w.length-1]!==this;)w.pop();return w.push(S),h(y+w.length-1),S})}function g(b,y,w){let x=b;if(me.isReactNative(e)&&me.isReactNativeBlob(b))return e.append(B0(w,y,a),f(b)),!1;if(b&&!w&&typeof b=="object"){if(me.endsWith(y,"{}"))y=o?y:y.slice(0,-2),b=p(b,1);else if(me.isArray(b)&&O_e(b)||(me.isFileList(b)||me.endsWith(y,"[]"))&&(x=me.toArray(b)))return y=S8(y),x.forEach(function(S,_){!(me.isUndefined(S)||S===null)&&e.append(s===!0?B0([y],_,a):s===null?y:y+"[]",f(S))}),!1}return yw(b)?!0:(e.append(B0(w,y,a),f(b)),!1)}const m=Object.assign(T_e,{defaultVisitor:g,convertValue:f,isVisitable:yw});function v(b,y,w=0){if(!me.isUndefined(b)){if(h(w),d.indexOf(b)!==-1)throw new Error("Circular reference detected in "+y.join("."));d.push(b),me.forEach(b,function($,S){(!(me.isUndefined($)||$===null)&&r.call(e,$,me.isString(S)?S.trim():S,y,m))===!0&&v($,y?y.concat(S):[S],w+1)}),d.pop()}}if(!me.isObject(t))throw new TypeError("data must be an object");return v(t),e}function VM(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(t).replace(/[!'()~]|%20/g,function(i){return e[i]})}function y$(t,e){this._pairs=[],t&&kv(t,this,e)}const C8=y$.prototype;C8.append=function(e,n){this._pairs.push([e,n])};C8.toString=function(e){const n=e?i=>e.call(this,i,VM):VM;return this._pairs.map(function(o){return n(o[0])+"="+n(o[1])},"").join("&")};function E_e(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function $8(t,e,n){if(!e)return t;t=t||"";const i=me.isFunction(n)?{serialize:n}:n,o=me.getSafeProp(i,"encode")||E_e,r=me.getSafeProp(i,"serialize");let a;if(r?a=r(e,i):a=me.isURLSearchParams(e)?e.toString():new y$(e,i).toString(o),a){const s=t.indexOf("#");s!==-1&&(t=t.slice(0,s)),t+=(t.indexOf("?")===-1?"?":"&")+a}return t}const pu=Symbol("internals");function A8(t){return t?t.length:0}function XM(t){if(t)for(;t.length&&t[t.length-1]===null;)t.pop()}function gu(t,e){const n=t.handlers,i=A8(n);n!==e.handlersRef?(e.handlersRef=n,e.handlerEntries.clear()):i!==e.handlersLength&&(i?e.handlerEntries.forEach(function(r,a){n[r.index]!==r.handler&&e.handlerEntries.delete(a)}):e.handlerEntries.clear()),e.handlersLength=i}class YM{constructor(){this.handlers=[],this[pu]={handlersRef:this.handlers,handlersLength:this.handlers.length,handlerEntries:new Map,iterationDepth:0,nextId:0}}use(e,n,i){const o={fulfilled:e,rejected:n,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null},r=this[pu];this.handlers==null&&(this.handlers=[]),gu(this,r);const a=r.nextId++;return this.handlers.push(o),r.handlerEntries.set(a,{handler:o,index:this.handlers.length-1}),r.handlersLength=this.handlers.length,a}eject(e){const n=this[pu];gu(this,n);const i=n.handlerEntries.get(e);if(i){if(n.handlerEntries.delete(e),this.handlers[i.index]!==i.handler)return;this.handlers[i.index]=null,n.iterationDepth||(XM(this.handlers),n.handlersLength=this.handlers.length)}}clear(){this.handlers&&(this.handlers=[],gu(this,this[pu]))}forEach(e){const n=this[pu];gu(this,n),n.iterationDepth++;try{me.forEach(this.handlers,function(o){o!==null&&e(o)})}finally{--n.iterationDepth||(gu(this,n),XM(this.handlers),n.handlersLength=A8(this.handlers))}}}const x$={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},M_e=typeof URLSearchParams<"u"?URLSearchParams:y$,I_e=typeof FormData<"u"?FormData:null,k_e=typeof Blob<"u"?Blob:null,D_e={isBrowser:!0,classes:{URLSearchParams:M_e,FormData:I_e,Blob:k_e},protocols:["http","https","file","blob","url","data"]},w$=typeof window<"u"&&typeof document<"u",xw=typeof navigator=="object"&&navigator||void 0,R_e=w$&&(!xw||["ReactNative","NativeScript","NS"].indexOf(xw.product)<0),L_e=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",F_e=w$&&window.location.href||"http://localhost",N_e=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:w$,hasStandardBrowserEnv:R_e,hasStandardBrowserWebWorkerEnv:L_e,navigator:xw,origin:F_e},Symbol.toStringTag,{value:"Module"})),Ln={...N_e,...D_e};function B_e(t,e){return kv(t,new Ln.classes.URLSearchParams,{visitor:function(n,i,o,r){return Ln.isNode&&me.isBuffer(n)?(this.append(i,n.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...e})}const GM=w8;function _8(t){if(t>GM)throw new He("FormData field is too deeply nested ("+t+" levels). Max depth: "+GM,He.ERR_FORM_DATA_DEPTH_EXCEEDED)}function z_e(t){const e=[],n=/[^.[\]]+|\[([^.[\]]*)]/g;let i;for(;(i=n.exec(t))!==null;)_8(e.length),e.push(i[0]==="[]"?"":i[1]||i[0]);return e}function H_e(t){const e={},n=Object.keys(t);let i;const o=n.length;let r;for(i=0;i=n.length;return a=!a&&me.isArray(o)?o.length:a,l?(me.hasOwnProp(o,a)?o[a]=me.isArray(o[a])?o[a].concat(i):[o[a],i]:o[a]=i,!s):((!me.hasOwnProp(o,a)||!me.isObject(o[a]))&&(o[a]=[]),e(n,i,o[a],r)&&me.isArray(o[a])&&(o[a]=H_e(o[a])),!s)}if(me.isFormData(t)&&me.isFunction(t.entries)){const n={};return me.forEachEntry(t,(i,o)=>{e(z_e(i),o,n,0)}),n}return null}const O8=Object.freeze(["get","delete","head","options","post","put","patch","purge","link","unlink","query"]),Al=(t,e)=>t!=null&&me.hasOwnProp(t,e)?t[e]:void 0;function W_e(t,e,n){if(me.isString(t))try{return(e||JSON.parse)(t),me.trim(t)}catch(i){if(i.name!=="SyntaxError")throw i}return(n||JSON.stringify)(t)}const wf={transitional:x$,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const i=n.getContentType()||"",o=i.indexOf("application/json")>-1,r=me.isObject(e);if(r&&me.isHTMLForm(e)&&(e=new FormData(e)),me.isFormData(e))return o?JSON.stringify(P8(e)):e;if(me.isArrayBuffer(e)||me.isBuffer(e)||me.isStream(e)||me.isFile(e)||me.isBlob(e)||me.isReadableStream(e))return e;if(me.isArrayBufferView(e))return e.buffer;if(me.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(r){const l=Al(this,"formSerializer");if(i.indexOf("application/x-www-form-urlencoded")>-1)return B_e(e,l).toString();if((s=me.isFileList(e))||i.indexOf("multipart/form-data")>-1){const c=Al(this,"env"),u=c&&c.FormData;return kv(s?{"files[]":e}:e,u&&new u,l)}}return r||o?(n.setContentType("application/json",!1),W_e(e)):e}],transformResponse:[function(e){const n=Al(this,"transitional")||wf.transitional,i=n&&n.forcedJSONParsing,o=Al(this,"responseType"),r=o==="json";if(me.isResponse(e)||me.isReadableStream(e))return e;if(e&&me.isString(e)&&(i&&!o||r)){const s=!(n&&n.silentJSONParsing)&&r;try{return JSON.parse(e,Al(this,"parseReviver"))}catch(l){if(s)throw l.name==="SyntaxError"?He.from(l,He.ERR_BAD_RESPONSE,this,null,Al(this,"response")):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ln.classes.FormData,Blob:Ln.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};me.forEach(O8,t=>{wf.headers[t]={}});function z0(t,e){const n=this||wf,i=e||n,o=ti.from(i.headers);let r=i.data;return me.forEach(t,function(s){r=s.call(n,r,o.normalize(),e?e.status:void 0)}),o.normalize(),r}function T8(t){return!!(t&&t.__CANCEL__)}let Sf=class extends He{constructor(e,n,i){super(e??"canceled",He.ERR_CANCELED,n,i),this.name="CanceledError",this.__CANCEL__=!0}};function E8(t,e,n){const i=n.config.validateStatus;!n.status||!i||i(n.status)?t(n):e(new He("Request failed with status code "+n.status,n.status>=400&&n.status<500?He.ERR_BAD_REQUEST:He.ERR_BAD_RESPONSE,n.config,n.request,n))}const j_e=/[\t\n\r]/g;function M8(t){if(typeof t!="string")return t;let e=0;for(;e{n=d,o=null,r&&(clearTimeout(r),r=null),t(...u)};return[(...u)=>{const d=Date.now(),f=d-n;f>=i?a(u,d):(o=u,r||(r=setTimeout(()=>{r=null,a(o)},i-f)))},()=>o&&a(o),(...u)=>a(u)]}const jg=(t,e,n=3)=>{let i=0;const o=V_e(50,250);return X_e(r=>{if(!r||!me.isNumber(r.loaded))return;const a=r.loaded,s=r.lengthComputable?r.total:void 0,l=Math.max(0,s!=null?Math.min(a,s):a),c=Math.max(0,l-i),u=o(c);i=Math.max(i,l);const d={loaded:l,total:s,progress:s?l/s:void 0,bytes:c,rate:u||void 0,estimated:u&&s?(s-l)/u:void 0,event:r,lengthComputable:s!=null,[e?"download":"upload"]:!0};t(d)},n)},KM=(t,e)=>{const n=t!=null;return[i=>e[0]({lengthComputable:n,total:t,loaded:i}),e[1]]},UM=(t,e=me.asap)=>(...n)=>e(()=>t(...n)),Y_e=Ln.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,Ln.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(Ln.origin),Ln.navigator&&/(msie|trident)/i.test(Ln.navigator.userAgent)):()=>!0,G_e=Ln.hasStandardBrowserEnv?{write(t,e,n,i,o,r,a){if(typeof document>"u")return;const s=[`${t}=${encodeURIComponent(e)}`];me.isNumber(n)&&s.push(`expires=${new Date(n).toUTCString()}`),me.isString(i)&&s.push(`path=${i}`),me.isString(o)&&s.push(`domain=${o}`),r===!0&&s.push("secure"),me.isString(a)&&s.push(`SameSite=${a}`),document.cookie=s.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.split(";");for(let n=0;n0&&t.charCodeAt(n-1)===47;)n--;return t.slice(0,n)+"/"+e.replace(/^\/+/,"")}const q_e=/^https?:(?!\/\/)/i;function Z_e(t){return t&&t.replace(/(^|&)([^=&]*=)?[^&]+/g,(e,n,i="")=>`${n}${i}${Wg}`)}function J_e(t){const e=t.replace(/^(https?:\/{0,2})[^/?#]*@/i,`$1${Wg}@`),n=e.indexOf("#"),o=(n===-1?e:e.slice(0,n)).replace(/([?&][^=&#]*=)[^&#]*/g,`$1${Wg}`);return n===-1?o:`${o}#${Z_e(e.slice(n+1))}`}function qM(t,e){if(typeof t=="string"){const n=M8(t);if(q_e.test(n))throw new He(`Invalid URL ${JSON.stringify(J_e(n))}: missing "//" after protocol`,He.ERR_INVALID_URL,e)}}function I8(t,e,n,i){qM(e,i);let o=!K_e(e);return t&&(o||n===!1)?(qM(t,i),U_e(t,e)):e}const ZM=t=>t instanceof ti?{...t}:t,Q_e=t=>Object.getOwnPropertySymbols&&Object.getOwnPropertyDescriptor?Object.keys(t).concat(Object.getOwnPropertySymbols(t).filter(e=>Object.getOwnPropertyDescriptor(t,e).enumerable)):Object.keys(t);function qs(t,e){t=t||{},e=e||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function i(u,d,f,h){return me.isPlainObject(u)&&me.isPlainObject(d)?me.merge.call({caseless:h},u,d):me.isPlainObject(d)?me.merge({},d):me.isArray(d)?d.slice():d}function o(u,d,f,h){if(me.isUndefined(d)){if(!me.isUndefined(u))return i(void 0,u,f,h)}else return i(u,d,f,h)}function r(u,d){if(!me.isUndefined(d))return i(void 0,d)}function a(u,d){if(me.isUndefined(d)){if(!me.isUndefined(u))return i(void 0,u)}else return i(void 0,d)}function s(u){const d=me.hasOwnProp(e,"transitional")?e.transitional:void 0;if(!me.isUndefined(d))if(me.isPlainObject(d)){if(me.hasOwnProp(d,u))return d[u]}else return;const f=me.hasOwnProp(t,"transitional")?t.transitional:void 0;if(me.isPlainObject(f)&&me.hasOwnProp(f,u))return f[u]}function l(u,d,f){if(me.hasOwnProp(e,f))return i(u,d);if(me.hasOwnProp(t,f))return i(void 0,u)}const c={url:r,method:r,data:r,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutErrorMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,allowedSocketPaths:a,responseEncoding:a,validateStatus:l,headers:(u,d,f)=>o(ZM(u),ZM(d),f,!0)};return me.forEach(Q_e({...t,...e}),function(d){if(d==="__proto__"||d==="constructor"||d==="prototype")return;const f=me.hasOwnProp(c,d)?c[d]:o,h=me.hasOwnProp(t,d)?t[d]:void 0,p=me.hasOwnProp(e,d)?e[d]:void 0,g=f(h,p,d);me.isUndefined(g)&&f!==l||(n[d]=g)}),me.hasOwnProp(e,"validateStatus")&&me.isUndefined(e.validateStatus)&&s("validateStatusUndefinedResolves")===!1&&(me.hasOwnProp(t,"validateStatus")?n.validateStatus=i(void 0,t.validateStatus):delete n.validateStatus),n}const e2e=["content-type","content-length"];function t2e(t,e,n){if(n!=="content-only"){t.set(e);return}Object.entries(e||{}).forEach(([i,o])=>{e2e.includes(i.toLowerCase())&&t.set(i,o)})}const n2e=t=>encodeURIComponent(t).replace(/%([0-9A-F]{2})/gi,(e,n)=>String.fromCharCode(parseInt(n,16)));function k8(t){const e=qs({},t),n=f=>me.hasOwnProp(e,f)?e[f]:void 0,i=n("data");let o=n("withXSRFToken");const r=n("xsrfHeaderName"),a=n("xsrfCookieName");let s=n("headers");const l=n("auth"),c=n("baseURL"),u=n("allowAbsoluteUrls"),d=n("url");if(e.headers=s=ti.from(s),e.url=$8(I8(c,d,u,e),n("params"),n("paramsSerializer")),l){const f=me.getSafeProp(l,"username")||"",h=me.getSafeProp(l,"password")||"";try{s.set("Authorization","Basic "+btoa(f+":"+(h?n2e(h):"")))}catch(p){throw He.from(p,He.ERR_BAD_OPTION_VALUE,t)}}if(me.isFormData(i)){const f=me.getSafeProp(i,"getHeaders");Ln.hasStandardBrowserEnv||Ln.hasStandardBrowserWebWorkerEnv||me.isReactNative(i)?s.setContentType(void 0):me.isFunction(f)&&t2e(s,f.call(i),n("formDataHeaderPolicy"))}if(Ln.hasStandardBrowserEnv&&(me.isFunction(o)&&(o=o(e)),o===!0||o==null&&Y_e(e.url))){const h=r&&a&&G_e.read(a);h&&s.set(r,h)}return e}const i2e=typeof XMLHttpRequest<"u",o2e=i2e&&function(t){return new Promise(function(n,i){const o=k8(t);let r=o.data;const a=ti.from(o.headers).normalize();let{responseType:s,onUploadProgress:l,onDownloadProgress:c}=o,u,d,f,h,p,g;function m(){h&&h(),p&&p(),o.cancelToken&&o.cancelToken.unsubscribe(u),o.signal&&o.signal.removeEventListener("abort",u)}let v=new XMLHttpRequest;v.open(o.method.toUpperCase(),o.url,!0),v.timeout=o.timeout;function b(w){if(!v)return;if(v.status===0&&(H0(M8(o.url))||H0(Ln.origin))!=="file"&&!(v.responseURL&&v.responseURL.startsWith("file:"))){i(new He("Request aborted",He.ECONNABORTED,t,v)),m(),v=null;return}try{w?g&&g(w):p&&p()}catch(_){setTimeout(()=>{throw _})}if(!v)return;const x=ti.from("getAllResponseHeaders"in v&&v.getAllResponseHeaders()),S={data:!s||s==="text"||s==="json"?v.responseText:v.response,status:v.status,statusText:v.statusText,headers:x,config:t,request:v};E8(function(P){n(P),m()},function(P){i(P),m()},S),v=null}"onloadend"in v?v.onloadend=b:v.onreadystatechange=function(){!v||v.readyState!==4||v.status===0&&!(v.responseURL&&v.responseURL.startsWith("file:"))||setTimeout(b)},v.onabort=function(){v&&(i(new He("Request aborted",He.ECONNABORTED,t,v)),m(),v=null)},v.onerror=function(x){const $=x&&x.message?x.message:"Network Error",S=new He($,He.ERR_NETWORK,t,v);S.event=x||null,i(S),m(),v=null},v.ontimeout=function(){let x=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const $=o.transitional||x$;o.timeoutErrorMessage&&(x=o.timeoutErrorMessage),i(new He(x,$.clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,t,v)),m(),v=null},r===void 0&&a.setContentType(null),"setRequestHeader"in v&&me.forEach(y8(a),function(x,$){v.setRequestHeader($,x)}),me.isUndefined(o.withCredentials)||(v.withCredentials=!!o.withCredentials),s&&s!=="json"&&(v.responseType=o.responseType),c&&([f,p,g]=jg(c,!0),v.addEventListener("progress",f)),l&&v.upload&&([d,h]=jg(l),v.upload.addEventListener("progress",d),v.upload.addEventListener("loadend",h)),(o.cancelToken||o.signal)&&(u=w=>{v&&(i(!w||w.type?new Sf(null,t,v):w),v.abort(),m(),v=null)},o.cancelToken&&o.cancelToken.subscribe(u),o.signal&&(o.signal.aborted?u():o.signal.addEventListener("abort",u)));const y=H0(o.url);if(y&&!Ln.protocols.includes(y)){i(new He("Unsupported protocol "+y+":",He.ERR_BAD_REQUEST,t)),m();return}v.send(r||null)})},r2e=(t,e)=>{if(t=t?t.filter(Boolean):[],!e&&!t.length)return;const n=new AbortController;let i=!1;const o=function(l){if(!i){i=!0,a();const c=l instanceof Error?l:this.reason;n.abort(c instanceof He?c:new Sf(c instanceof Error?c.message:c))}};let r=e&&setTimeout(()=>{r=null,o(new He(`timeout of ${e}ms exceeded`,He.ETIMEDOUT))},e);const a=()=>{t&&(r&&clearTimeout(r),r=null,t.forEach(l=>{l.unsubscribe?l.unsubscribe(o):l.removeEventListener("abort",o)}),t=null)};t.forEach(l=>{if(!i){if(l.aborted){o.call(l);return}l.addEventListener("abort",o,{once:!0})}});const{signal:s}=n;return s.unsubscribe=()=>me.asap(a),s},a2e=function*(t,e){let n=t.byteLength;if(n{const o=s2e(t,e);let r=0,a,s=l=>{a||(a=!0,i&&i(l))};return new ReadableStream({async pull(l){try{const{done:c,value:u}=await o.next();if(c){s(),l.close();return}let d=u.byteLength;if(n){let f=r+=d;n(f)}l.enqueue(new Uint8Array(u))}catch(c){throw s(c),c}},cancel(l){return s(l),o.return()}},{highWaterMark:2})},QM=t=>t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102,D8=(t,e,n)=>e+2t<=57?t-48:(t&223)-55,c2e=t=>t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===43||t===47||t===45||t===95,u2e=t=>t===9||t===10||t===12||t===13||t===32,d2e=t=>{const e=Math.floor(t/4),n=t%4;return e*3+(n===2?1:n===3?2:0)},f2e=t=>{const e=t.length;let n=0;return e>0&&t.charCodeAt(e-1)===61&&(n++,e>1&&t.charCodeAt(e-2)===61&&n++),Math.floor((e-n)*3/4)},h2e=t=>{const e=t.length;let n=0,i=0,o=!1;for(let r=0;r0){o=!0;continue}n++}}return o||i>2||i>0&&(n+i)%4!==0||n%4===1?f2e(t):d2e(n)},p2e=(t,e)=>{if(!t||typeof t!="string"||!t.startsWith("data:"))return 0;const n=t.indexOf(",");if(n<0)return 0;const i=t.slice(5,n),o=t.slice(n+1);if(/;base64/i.test(i))return e(o);let a=0;for(let s=0,l=o.length;s=55296&&c<=56319&&s+1=56320&&u<=57343?(a+=4,s++):a+=3}else a+=3}return a};function g2e(t){const e=typeof t=="string"?t.indexOf("#"):-1;return p2e(e===-1?t:t.slice(0,e),h2e)}const S$="1.20.0",tI=64*1024,m2e={cache:"default",redirect:"follow",referrer:"about:client",referrerPolicy:"",mode:"cors",integrity:"",keepalive:!1,priority:"auto",window:null},{isFunction:xh}=me,v2e=t=>encodeURIComponent(t).replace(/%([0-9A-F]{2})/gi,(e,n)=>String.fromCharCode(parseInt(n,16))),nI=t=>{if(!me.isString(t))return t;try{return decodeURIComponent(t)}catch{return t}},iI=(t,...e)=>{try{return!!t(...e)}catch{return!1}},b2e=t=>{const e=t.indexOf("://");let n=t;return e!==-1&&(n=n.slice(e+3)),n.includes("@")||n.includes(":")},y2e=t=>{const e=me.global!==void 0&&me.global!==null?me.global:globalThis,{ReadableStream:n,TextEncoder:i}=e;t=me.merge.call({skipUndefined:!0},{Request:e.Request,Response:e.Response},t);const{fetch:o,Request:r,Response:a}=t,s=o?xh(o):typeof fetch=="function",l=xh(r),c=xh(a);if(!s)return!1;const u=s&&xh(n),d=s&&(typeof i=="function"?(v=>b=>v.encode(b))(new i):async v=>new Uint8Array(await new r(v).arrayBuffer())),f=l&&u&&iI(()=>{let v=!1;const b=new r(Ln.origin,{body:new n,method:"POST",get duplex(){return v=!0,"half"}}),y=b.headers.has("Content-Type");return b.body!=null&&b.body.cancel(),v&&!y}),h=c&&u&&iI(()=>me.isReadableStream(new a("").body)),p={stream:h&&(v=>v.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(v=>{!p[v]&&(p[v]=(b,y)=>{let w=b&&b[v];if(w)return w.call(b);throw new He(`Response type '${v}' is not supported`,He.ERR_NOT_SUPPORT,y)})});const g=async v=>{if(v==null)return 0;if(me.isBlob(v))return v.size;if(me.isSpecCompliantForm(v))return(await new r(Ln.origin,{method:"POST",body:v}).arrayBuffer()).byteLength;if(me.isArrayBufferView(v)||me.isArrayBuffer(v))return v.byteLength;if(me.isURLSearchParams(v)&&(v=v+""),me.isString(v))return(await d(v)).byteLength},m=async(v,b)=>{const y=me.toFiniteNumber(v.getContentLength());return y??g(b)};return async v=>{let{url:b,method:y,data:w,signal:x,cancelToken:$,timeout:S,onDownloadProgress:_,onUploadProgress:P,responseType:T,headers:O,withCredentials:M="same-origin",fetchOptions:I,maxContentLength:k,maxBodyLength:E,maxRedirects:R}=k8(v);const D=me.isNumber(k)&&k>-1,F=me.isNumber(E)&&E>-1,N=Y=>me.hasOwnProp(v,Y)?v[Y]:void 0;let B=o||fetch;T=T?(T+"").toLowerCase():"text";let z=r2e([x,$&&$.toAbortSignal()],S),W=null;const j=z&&z.unsubscribe&&(()=>{z.unsubscribe()});let U,V=null;const q=()=>new He("Request body larger than maxBodyLength limit",He.ERR_BAD_REQUEST,v,W);try{let Y;const J=N("auth");if(J){const ne=me.getSafeProp(J,"username")||"",le=me.getSafeProp(J,"password")||"";Y={username:ne,password:le}}if(b2e(b)){const ne=new URL(b,Ln.origin);if(!Y&&(ne.username||ne.password)){const le=nI(ne.username),he=nI(ne.password);Y={username:le,password:he}}(ne.username||ne.password)&&(ne.username="",ne.password="",b=ne.href)}if(Y&&(O.delete("authorization"),O.set("Authorization","Basic "+btoa(v2e((Y.username||"")+":"+(Y.password||""))))),D&&typeof b=="string"&&b.startsWith("data:")&&g2e(b)>k)throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W);if(F&&y!=="get"&&y!=="head"){const ne=await g(w);if(typeof ne=="number"&&isFinite(ne)&&(U=ne,ne>E))throw q()}const Q=F&&(me.isReadableStream(w)||me.isStream(w)),G=(ne,le,he)=>JM(ne,tI,pe=>{if(F&&pe>E)throw V=q();le&&le(pe)},he);if(f&&y!=="get"&&y!=="head"&&(P||Q)){if(U=U??await m(O,w),U!==0||Q){let ne=new r(b,{method:"POST",body:w,duplex:"half"}),le;if(me.isFormData(w)&&(le=ne.headers.get("content-type"))&&O.setContentType(le),ne.body){const[he,pe]=P&&KM(U,jg(UM(P)))||[];w=G(ne.body,he,pe)}}}else if(Q&&!l&&u&&y!=="get"&&y!=="head")w=G(w);else if(Q&&l&&!f&&y!=="get"&&y!=="head")throw new He("Stream request bodies are not supported by the current fetch implementation",He.ERR_NOT_SUPPORT,v,W);me.isString(M)||(M=M?"include":"omit");const ee=l&&"credentials"in r.prototype;if(me.isFormData(w)){const ne=O.getContentType();ne&&/^multipart\/form-data/i.test(ne)&&!/boundary=/i.test(ne)&&O.delete("content-type")}O.set("User-Agent","axios/"+S$,!1);const X=I==null?I:Object.assign(Object.create(null),I);X&&(delete X.body,delete X.headers,delete X.method,delete X.signal,delete X.duplex,delete X.credentials);const K=Object.assign(Object.create(null),X,{signal:z,method:y.toUpperCase(),headers:y8(O.normalize()),body:w,duplex:"half",credentials:ee?M:void 0});l&&(me.forEach(m2e,(ne,le)=>{K[le]===void 0&&(K[le]=ne)}),K.signal===void 0&&(K.signal=null),K.body===void 0&&(K.body=null)),R===0&&(K.redirect="manual",X&&(X.redirect="manual")),W=l&&new r(b,K);let te=await(l?B(W,X):B(b,K));const ue=ti.from(te.headers);if(D){const ne=me.toFiniteNumber(ue.getContentLength());if(ne!=null&&ne>k)throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W)}const se=h&&(T==="stream"||T==="response");if(h&&te.body&&(_||D||se&&j)){const ne={};["status","statusText","headers"].forEach($e=>{ne[$e]=te[$e]});const le=me.toFiniteNumber(ue.getContentLength()),[he,pe]=_&&KM(le,jg(UM(_),!0))||[];let ge=0;const be=$e=>{if(D&&(ge=$e,ge>k))throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W);he&&he($e)};te=new a(JM(te.body,tI,be,()=>{pe&&pe(),j&&j()}),ne)}T=T||"text";let re=await p[me.findKey(p,T)||"text"](te,v);if(D&&!h&&!se){let ne;if(re!=null&&(typeof re.byteLength=="number"?ne=re.byteLength:typeof re.size=="number"?ne=re.size:typeof re=="string"&&(ne=typeof i=="function"?new i().encode(re).byteLength:re.length)),typeof ne=="number"&&ne>k)throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W)}return!se&&j&&j(),await new Promise((ne,le)=>{E8(ne,le,{data:re,headers:ti.from(te.headers),status:te.status,statusText:te.statusText,config:v,request:W})})}catch(Y){if(j&&j(),z&&z.aborted&&z.reason instanceof He){const J=z.reason;throw J.config=v,W&&(J.request=W),Y!==J&&Object.defineProperty(J,"cause",{__proto__:null,value:Y,writable:!0,enumerable:!1,configurable:!0}),J}if(V)throw W&&!V.request&&(V.request=W),V;if(Y instanceof He)throw W&&!Y.request&&(Y.request=W),Y;if(Y&&Y.name==="TypeError"&&/Load failed|fetch/i.test(Y.message)){const J=new He("Network Error",He.ERR_NETWORK,v,W,Y&&Y.response);throw Object.defineProperty(J,"cause",{__proto__:null,value:Y.cause||Y,writable:!0,enumerable:!1,configurable:!0}),J}throw He.from(Y,Y&&Y.code,v,W,Y&&Y.response)}}},x2e=new Map,R8=t=>{let e=t&&t.env||{};const{fetch:n,Request:i,Response:o}=e,r=[i,o,n];let a=r.length,s=a,l,c,u=x2e;for(;s--;)l=r[s],c=u.get(l),c===void 0&&u.set(l,c=s?new Map:y2e(e)),u=c;return c};R8();const C$={http:P_e,xhr:o2e,fetch:{get:R8}};me.forEach(C$,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{__proto__:null,value:e})}catch{}Object.defineProperty(t,"adapterName",{__proto__:null,value:e})}});const oI=t=>`- ${t}`,w2e=t=>me.isFunction(t)||t===null||t===!1;function S2e(t,e){t=me.isArray(t)?t:[t];const{length:n}=t;let i,o;const r={};for(let a=0;a`adapter ${l} `+(c===!1?"is not supported by the environment":"is not available in the build"));let s=n?a.length>1?`since : `+a.map(oI).join(` @@ -2482,4 +2482,4 @@ ${s.toFixed(1)}%`;return String(c).split(` `);a=s===-1?"":r.slice(s+1)}if(!i.stack)i.stack=a;else if(a){const s=a.indexOf(` `),l=s===-1?-1:a.indexOf(` `,s+1),c=l===-1?"":a.slice(l+1);String(i.stack).endsWith(c)||(i.stack+=` -`+a)}}catch{}throw i}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=qs(this.defaults,n);const{transitional:i,paramsSerializer:o,headers:r}=n;i!==void 0&&gp.assertOptions(i,{silentJSONParsing:Un.transitional(Un.boolean),forcedJSONParsing:Un.transitional(Un.boolean),clarifyTimeoutError:Un.transitional(Un.boolean),legacyInterceptorReqResOrdering:Un.transitional(Un.boolean),advertiseZstdAcceptEncoding:Un.transitional(Un.boolean),validateStatusUndefinedResolves:Un.transitional(Un.boolean)},!1),o!=null&&(me.isFunction(o)?n.paramsSerializer={serialize:o}:gp.assertOptions(o,{encode:Un.function,serialize:Un.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),gp.assertOptions(n,{baseUrl:Un.spelling("baseURL"),withXsrfToken:Un.spelling("withXSRFToken")},!0),n.method=(me.getSafeProp(n,"method")||me.getSafeProp(this.defaults,"method")||"get").toLowerCase();let a=r&&me.merge(r.common,r[n.method]);r&&me.forEach(O8.concat("common"),p=>{delete r[p]}),n.headers=ti.concat(a,r);const s=[];let l=!0;this.interceptors.request.forEach(function(g){if(typeof g.runWhen=="function"&&g.runWhen(n)===!1)return;l=l&&g.synchronous;const m=n.transitional||x$;m&&m.legacyInterceptorReqResOrdering?s.unshift(g.fulfilled,g.rejected):s.push(g.fulfilled,g.rejected)});const c=[];this.interceptors.response.forEach(function(g){c.push(g.fulfilled,g.rejected)});let u,d=0,f;if(!l){const p=[j0.bind(this),void 0];for(p.unshift(...s),p.push(...c),f=p.length,u=Promise.resolve(n);dj0.call(this,h)))}catch(v){u=Promise.reject(v)}break}}if(!u)try{u=j0.call(this,h)}catch(p){u=Promise.reject(p)}for(d=0,f=c.length;d{if(!i._listeners)return;let r=i._listeners.length;for(;r-- >0;)i._listeners[r](o);i._listeners=null}),this.promise.then=o=>{let r;const a=new Promise(s=>{i.subscribe(s),r=s}).then(o);return a.cancel=function(){i.unsubscribe(r)},a},e(function(r,a,s){i.reason||(i.reason=new Sf(r,a,s),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=i=>{e.abort(i)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new F8(function(o){e=o}),cancel:e}}};function A2e(t){return function(n){return t.apply(null,n)}}function _2e(t){return me.isObject(t)&&t.isAxiosError===!0}const mp={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,ContentTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,UnprocessableContent:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerReturnsAnUnknownError:520,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(mp).forEach(([t,e])=>{mp[e]===void 0&&(mp[e]=t)});function N8(t){const e=new Is(t),n=l8(Is.prototype.request,e);return me.extend(n,Is.prototype,e,{allOwnKeys:!0}),me.extend(n,e,null,{allOwnKeys:!0}),n.create=function(o){return N8(qs(t,o))},n}const bn=N8(wf);bn.Axios=Is;bn.CanceledError=Sf;bn.CancelToken=$2e;bn.isCancel=T8;bn.VERSION=S$;bn.toFormData=kv;bn.AxiosError=He;bn.Cancel=bn.CanceledError;bn.all=function(e){return Promise.all(e)};bn.spread=A2e;bn.isAxiosError=_2e;bn.mergeConfig=qs;bn.AxiosHeaders=ti;bn.formToJSON=t=>P8(me.isHTMLForm(t)?new FormData(t):t);bn.getAdapter=L8.getAdapter;bn.HttpStatusCode=mp;bn.default=bn;const{Axios:XPe,AxiosError:YPe,CanceledError:GPe,isCancel:KPe,CancelToken:UPe,VERSION:qPe,all:ZPe,Cancel:JPe,isAxiosError:QPe,spread:eOe,toFormData:tOe,AxiosHeaders:nOe,HttpStatusCode:iOe,formToJSON:oOe,getAdapter:rOe,mergeConfig:aOe,create:sOe}=bn;function P2e(t){return t.replace(/^\/+/,"")}const O2e={"file/create":"admin/files/create","admin-login":"admin/auth/login","users/show":"admin/auth/me","single-order":"admin/orders/list","single/order-sts/edit":"admin/orders/status","major/order/table":"admin/orders/wholesale/list","order-tamin":"admin/orders/tamin/list","order-sts/edit":"admin/orders/status","delete-order":"admin/orders/delete","get-custom-orders":"admin/pre-orders/list",customer:"admin/customers-omde/list",banker:"admin/customers-omde/banker/list",shopkeeper:"admin/customers-omde/shopkeeper/list","major/verify/table":"admin/customers-omde/non-verified/list","major/archive/table":"admin/customers-omde/archived/list",reagent:"admin/customers-omde/reagent/list","customer/toggle-active":"admin/customers-omde/toggle-active","customer/toggle-sts":"admin/customers-omde/toggle-sts","major/verify":"admin/customers-omde/verify","single-customer":"admin/customers-omde/single/list",single:"admin/customers-omde/single","customer/create":"admin/customers-omde/create","query/reagent":"admin/customers-omde/query/reagent","wallet/charge":"admin/customers-omde/wallet/charge","comment/table":"admin/comments/list","comment/sts":"admin/comments/sts",comment:"admin/comments",order:"admin/orders/create","order/type":"admin/orders/type-options","add/variant":"admin/products/variants/create","product/variant":"admin/products/by-ids",products:"admin/products/list","product/create":"admin/products/create","get/variants":"admin/products/variants/list","change/percent/count":"admin/products/change-percent/count","change/all":"admin/products/change-percent/apply","cash/table":"admin/documents/list",cash:"admin/documents","query/customer":"admin/documents/query/customer","wallet/table":"admin/documents/wallet/list","wallet/config":"admin/documents/wallet/config","wallet/birthday/config":"admin/documents/wallet/birthday/config","product/variant/promotion":"admin/promotions","major/promotion":"admin/promotions/list",autopromotion:"admin/promotions/auto",ignore:"admin/promotions/exclusions",users:"admin/users","users/list":"admin/users/list","const/__list__ut":"admin/users/types",const:"admin/users/types","roles/create":"admin/users/roles","branch/product":"admin/invoices","branch/product/table":"admin/invoices/list","branch/list":"admin/invoices/branch-list",branch:"admin/branches","branch/table":"admin/branches/list",workshop:"admin/workshops","user/list":"admin/branches/user-list",cities:"admin/misc/cities",sms:"admin/misc/sms","sms/table":"admin/misc/sms/list",notify:"admin/misc/notify","notify/table":"admin/misc/notify/list","notify/customer":"admin/misc/notify/customer",ddf:"admin/misc/newsletter/list","fashion/table":"admin/misc/newsletter/list","log/list/customer":"admin/misc/log/customers","dashboard/link":"admin/misc/dashboard-links","get-analytics":"admin/dashboard/omde","get-analytics-tak":"admin/dashboard/tak","dashboard/overview":"admin/dashboard/overview","brand/create":"admin/misc/brands","ciny/create":"admin/categories/collections","cities/list":"admin/cities/list","report/order-item":"admin/dashboard/report/order-item","report/product":"admin/dashboard/report/product","workshop/table":"admin/workshops/list",brand:"admin/products/brands",category:"admin/categories/list","category/":"admin/categories",ciny:"admin/categories/collections/list"},T2e=[{test:/^cities\/get-percent-aux\/(.+)$/,to:t=>`admin/misc/cities/percent-aux/${t[1]}`},{test:/^cities\/get-percent\/(.+)$/,to:t=>`admin/misc/cities/percent/${t[1]}`},{test:/^cities\/(.+)$/,to:t=>`admin/misc/cities/${t[1]}`},{test:/^const\/(.+)$/,to:t=>`admin/misc/const/${t[1]}`},{test:/^brand\/(.+)$/,to:t=>`admin/misc/brands/${t[1]}`},{test:/^log\/ago\/(.+)$/,to:t=>`admin/misc/log/customer/${t[1]}`},{test:/^notify\/read\/(.+)$/,to:t=>`admin/misc/notify/read/${t[1]}`},{test:/^notify\/(.+)$/,to:t=>`admin/misc/notify/${t[1]}`},{test:/^single\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^get-custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^major\/archive\/(.+)$/,to:t=>`admin/customers-omde/archive/${t[1]}`},{test:/^major\/dashboard\/(.+)$/,to:t=>`admin/customers-omde/dashboard/${t[1]}`},{test:/^comment\/(.+)$/,to:t=>`admin/comments/${t[1]}`},{test:/^customer\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^delete\/product\/(.+)$/,to:t=>`admin/products/delete/${t[1]}`},{test:/^product\/show\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/update\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/(.+)\/variant$/,to:t=>`admin/products/${t[1]}/variants`},{test:/^category\/(.+)$/,to:t=>`admin/categories/${t[1]}`},{test:/^ciny\/(.+)$/,to:t=>`admin/categories/collections/${t[1]}`},{test:/^cash\/confirem\/(.+)$/,to:t=>`admin/documents/${t[1]}/confirm`},{test:/^cash\/(.+)$/,to:t=>`admin/documents/${t[1]}`},{test:/^product\/variant\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^major\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^ignore\/(.+)$/,to:t=>`admin/promotions/exclusions/${t[1]}`},{test:/^roles\/(\d+)\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles/${t[2]}`},{test:/^roles\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles`},{test:/^users\/(.+)$/,to:t=>`admin/users/${t[1]}`},{test:/^branch\/product\/(.+)$/,to:t=>`admin/invoices/${t[1]}`},{test:/^branch\/active\/(.+)$/,to:t=>`admin/branches/active/${t[1]}`},{test:/^workshop\/active\/(.+)$/,to:t=>`admin/workshops/active/${t[1]}`},{test:/^branch\/(.+)$/,to:t=>`admin/branches/${t[1]}`},{test:/^workshop\/(.+)$/,to:t=>`admin/workshops/${t[1]}`}];function E2e(t){if(/^https?:\/\//i.test(t))return t;const[e,n]=P2e(t).split("?"),i=O2e[e];if(i)return n?`${i}?${n}`:i;for(const{test:o,to:r}of T2e){const a=e.match(o);if(a){const s=r(a);return n?`${s}?${n}`:s}}return n?`${e}?${n}`:e}const M2e="/api/",B8={"Content-Type":"application/json",Accept:"application/json"},aI=localStorage.getItem($c);aI&&(B8.Authorization="Bearer "+aI);const Cf=bn.create({baseURL:M2e,headers:B8});Cf.interceptors.request.use(t=>{t.url&&(t.url=E2e(t.url));const e=localStorage.getItem($c);return e?t.headers.Authorization="Bearer "+e:delete t.headers.Authorization,t.data instanceof FormData&&delete t.headers["Content-Type"],localStorage.getItem("debug")==="1"&&(t.headers["X-Debug"]="1"),t},t=>Promise.reject(t));let sI=!1;Cf.interceptors.response.use(t=>{var n;const e=(n=t.data)==null?void 0:n.debug;return e&&localStorage.getItem("debug")==="1"&&(console.groupCollapsed(`[DEBUG] ${t.config.url}`),console.log(e),Array.isArray(e.by_kind)&&console.table(e.by_kind),console.groupEnd()),t},t=>{var e;return((e=t==null?void 0:t.response)==null?void 0:e.status)===401&&!sI&&(window.location.pathname.endsWith("/auth/login")||(sI=!0,localStorage.removeItem($c),window.location.assign("/auth/login"))),Promise.reject(t)});function I2e(t){const e=[...t],n=[];for(;e.length>1;)e.pop(),n.push(e.join("."));return n}function k2e(t){let e=[...t];return t.forEach(n=>{const i=n.split(".");i.length>1&&(e=[...new Set([...e,...I2e(i)])])}),e}const z8=Nk("users",{state:()=>({cityFilters:{},userInfo:void 0,roles:void 0,isSuperAdmin:!1}),getters:{hasPermission:t=>e=>{const n=t.roles;if(n)return n.includes(e)}},actions:{setCities(t){t.forEach(e=>{this.cityFilters[e.id]=e.title})},async getCities(){try{const t=await Cf.post("cities/list");this.setCities(t.data.rows)}catch(t){console.log(t)}},setUserInfo(t){this.userInfo=t},deleteUserInfo(){this.userInfo={}},getRoles(t){this.roles=k2e(t)},setSuperAdmin(t){this.isSuperAdmin=t===!0},deleteRoles(){this.roles=void 0,this.isSuperAdmin=!1}}}),$$=pAe({history:Y$e("/"),scrollBehavior(){return{left:0,top:0}},routes:[{path:"",component:()=>ze(()=>import("./Main-B6XfJkyt.js"),__vite__mapDeps([143,70,44,28,45,46,3,4,23,47,48,49,7,16,144])),children:gAe},{path:"",component:()=>ze(()=>import("./FullPage-DpKiI4Qs.js"),[]),children:[...mAe,{path:"/auth/iam/callback",name:"iam-callback",component:()=>ze(()=>import("./IamCallback-DFjtEuae.js"),__vite__mapDeps([145,7])),meta:{rule:"editor"}},{path:"/pages/error-404",name:"page-error-404",component:()=>ze(()=>import("./Error404-CrARqFTT.js"),__vite__mapDeps([146,147])),meta:{rule:"editor"}},{path:"/pages/error-500",name:"page-error-500",component:()=>ze(()=>import("./Error500-2YJNeuLX.js"),__vite__mapDeps([148,149])),meta:{rule:"editor"}},{path:"/pages/not-authorized",name:"page-not-authorized",component:()=>ze(()=>import("./NotAuthorized-kSbkBInP.js"),__vite__mapDeps([150,151])),meta:{rule:"editor"}},{path:"/pages/maintenance",name:"page-maintenance",component:()=>ze(()=>import("./Maintenance-CRfOTU6G.js"),__vite__mapDeps([152,153])),meta:{rule:"editor"}}]},{path:"/:pathMatch(.*)*",redirect:"/pages/error-404"}]});$$.afterEach(()=>{const t=document.getElementById("loading-bg");t&&(t.style.display="none")});const D2e=["/auth/login","/auth/forgot-password","/auth/register","/reg","/auth/iam/callback"];async function R2e(){const t=z8();if(t.roles)return t.roles;try{const{data:e}=await Cf.get("users/show");t.getRoles(e.permission),t.setSuperAdmin(e.is_super_admin),delete e.permission,delete e.ut,e.api_token&&localStorage.setItem($c,e.api_token),localStorage.setItem(UN,JSON.stringify(e))}catch(e){console.log(e)}return t.roles}let ww=!1;function L2e(){return sessionStorage.getItem("gb_admin_iam_sso_skip")==="1"?(sessionStorage.removeItem("gb_admin_iam_sso_skip"),ww=!0,!0):ww}$$.beforeEach(async t=>{var n;if(!localStorage.getItem($c)&&t.path!=="/auth/iam/callback"&&!L2e()){ww=!0,sessionStorage.removeItem("gb_admin_iam_sso_checked");try{const{data:i}=await Cf.get("admin/auth/sso/start",{params:{redirect_uri:s$e("auth/iam/callback")}});if(i!=null&&i.enabled&&i.authorize_url)return window.location.assign(i.authorize_url),!1}catch{}}if(D2e.indexOf(t.path)>-1)return!0;if(localStorage.getItem($c)){const i=await R2e();return i?(n=t.meta)!=null&&n.superAdminOnly&&!z8().isSuperAdmin?{name:"page-not-authorized"}:i&&t.meta&&t.meta.role&&!i.includes(t.meta.role)?t.name==="dashboard-ecommerce"||t.name==="dashboard-analytics"?{name:"my-data"}:{name:"page-not-authorized"}:!0:{path:"/auth/login"}}return{path:"/auth/login"}});const $f=kk(l$e);$f.use(wH());$f.use(U0e);$f.use($$);$f.use(Hg);$f.mount("#app");export{ai as $,$w as A,Bm as B,sv as C,xv as D,jC as E,Ge as F,Hs as G,gA as H,ut as I,zm as J,si as K,Wo as L,On as M,at as N,yi as O,FS as P,hf as Q,wC as R,cv as S,ga as T,Obe as U,Hm as V,Ic as W,BPe as X,Nk as Y,rl as Z,r$e as _,cc as a,s$e as a0,$c as a1,UN as a2,bv as a3,Na as a4,Ba as a5,KC as a6,H2e as a7,sr as a8,Tt as a9,Rs as aa,PD as ab,A as ac,z9 as ad,k9 as ae,B9 as af,M9 as ag,TD as ah,Yr as ai,z2e as aj,qS as ak,W2e as al,xC as am,ns as b,C as c,oe as d,V$ as e,Tn as f,B2e as g,Lt as h,xk as i,ZCe as j,HPe as k,zPe as l,ae as m,ye as n,zi as o,Yl as p,Xd as q,Iu as r,L as s,V0 as t,z8 as u,QCe as v,ss as w,qe as x,Cf as y,$t as z}; +`+a)}}catch{}throw i}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=qs(this.defaults,n);const{transitional:i,paramsSerializer:o,headers:r}=n;i!==void 0&&gp.assertOptions(i,{silentJSONParsing:Un.transitional(Un.boolean),forcedJSONParsing:Un.transitional(Un.boolean),clarifyTimeoutError:Un.transitional(Un.boolean),legacyInterceptorReqResOrdering:Un.transitional(Un.boolean),advertiseZstdAcceptEncoding:Un.transitional(Un.boolean),validateStatusUndefinedResolves:Un.transitional(Un.boolean)},!1),o!=null&&(me.isFunction(o)?n.paramsSerializer={serialize:o}:gp.assertOptions(o,{encode:Un.function,serialize:Un.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),gp.assertOptions(n,{baseUrl:Un.spelling("baseURL"),withXsrfToken:Un.spelling("withXSRFToken")},!0),n.method=(me.getSafeProp(n,"method")||me.getSafeProp(this.defaults,"method")||"get").toLowerCase();let a=r&&me.merge(r.common,r[n.method]);r&&me.forEach(O8.concat("common"),p=>{delete r[p]}),n.headers=ti.concat(a,r);const s=[];let l=!0;this.interceptors.request.forEach(function(g){if(typeof g.runWhen=="function"&&g.runWhen(n)===!1)return;l=l&&g.synchronous;const m=n.transitional||x$;m&&m.legacyInterceptorReqResOrdering?s.unshift(g.fulfilled,g.rejected):s.push(g.fulfilled,g.rejected)});const c=[];this.interceptors.response.forEach(function(g){c.push(g.fulfilled,g.rejected)});let u,d=0,f;if(!l){const p=[j0.bind(this),void 0];for(p.unshift(...s),p.push(...c),f=p.length,u=Promise.resolve(n);dj0.call(this,h)))}catch(v){u=Promise.reject(v)}break}}if(!u)try{u=j0.call(this,h)}catch(p){u=Promise.reject(p)}for(d=0,f=c.length;d{if(!i._listeners)return;let r=i._listeners.length;for(;r-- >0;)i._listeners[r](o);i._listeners=null}),this.promise.then=o=>{let r;const a=new Promise(s=>{i.subscribe(s),r=s}).then(o);return a.cancel=function(){i.unsubscribe(r)},a},e(function(r,a,s){i.reason||(i.reason=new Sf(r,a,s),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=i=>{e.abort(i)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new F8(function(o){e=o}),cancel:e}}};function A2e(t){return function(n){return t.apply(null,n)}}function _2e(t){return me.isObject(t)&&t.isAxiosError===!0}const mp={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,ContentTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,UnprocessableContent:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerReturnsAnUnknownError:520,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(mp).forEach(([t,e])=>{mp[e]===void 0&&(mp[e]=t)});function N8(t){const e=new Is(t),n=l8(Is.prototype.request,e);return me.extend(n,Is.prototype,e,{allOwnKeys:!0}),me.extend(n,e,null,{allOwnKeys:!0}),n.create=function(o){return N8(qs(t,o))},n}const bn=N8(wf);bn.Axios=Is;bn.CanceledError=Sf;bn.CancelToken=$2e;bn.isCancel=T8;bn.VERSION=S$;bn.toFormData=kv;bn.AxiosError=He;bn.Cancel=bn.CanceledError;bn.all=function(e){return Promise.all(e)};bn.spread=A2e;bn.isAxiosError=_2e;bn.mergeConfig=qs;bn.AxiosHeaders=ti;bn.formToJSON=t=>P8(me.isHTMLForm(t)?new FormData(t):t);bn.getAdapter=L8.getAdapter;bn.HttpStatusCode=mp;bn.default=bn;const{Axios:XPe,AxiosError:YPe,CanceledError:GPe,isCancel:KPe,CancelToken:UPe,VERSION:qPe,all:ZPe,Cancel:JPe,isAxiosError:QPe,spread:eOe,toFormData:tOe,AxiosHeaders:nOe,HttpStatusCode:iOe,formToJSON:oOe,getAdapter:rOe,mergeConfig:aOe,create:sOe}=bn;function P2e(t){return t.replace(/^\/+/,"")}const O2e={"file/create":"admin/files/create","admin-login":"admin/auth/login","users/show":"admin/auth/me","single-order":"admin/orders/list","single/order-sts/edit":"admin/orders/status","major/order/table":"admin/orders/wholesale/list","order-tamin":"admin/orders/tamin/list","order-sts/edit":"admin/orders/status","delete-order":"admin/orders/delete","get-custom-orders":"admin/pre-orders/list",customer:"admin/customers-omde/list",banker:"admin/customers-omde/banker/list",shopkeeper:"admin/customers-omde/shopkeeper/list","major/verify/table":"admin/customers-omde/non-verified/list","major/archive/table":"admin/customers-omde/archived/list",reagent:"admin/customers-omde/reagent/list","customer/toggle-active":"admin/customers-omde/toggle-active","customer/toggle-sts":"admin/customers-omde/toggle-sts","major/verify":"admin/customers-omde/verify","single-customer":"admin/customers-omde/single/list",single:"admin/customers-omde/single","customer/create":"admin/customers-omde/create","query/reagent":"admin/customers-omde/query/reagent","wallet/charge":"admin/customers-omde/wallet/charge","comment/table":"admin/comments/list","comment/sts":"admin/comments/sts",comment:"admin/comments",order:"admin/orders/create","order/type":"admin/orders/type-options","add/variant":"admin/products/variants/create","product/variant":"admin/products/by-ids",products:"admin/products/list","product/create":"admin/products/create","product/categories":"admin/products/categories","get/variants":"admin/products/variants/list","change/percent/count":"admin/products/change-percent/count","change/all":"admin/products/change-percent/apply","cash/table":"admin/documents/list",cash:"admin/documents","query/customer":"admin/documents/query/customer","wallet/table":"admin/documents/wallet/list","wallet/config":"admin/documents/wallet/config","wallet/birthday/config":"admin/documents/wallet/birthday/config","product/variant/promotion":"admin/promotions","major/promotion":"admin/promotions/list",autopromotion:"admin/promotions/auto",ignore:"admin/promotions/exclusions",users:"admin/users","users/list":"admin/users/list","const/__list__ut":"admin/users/types",const:"admin/users/types","roles/create":"admin/users/roles","branch/product":"admin/invoices","branch/product/table":"admin/invoices/list","branch/list":"admin/invoices/branch-list",branch:"admin/branches","branch/table":"admin/branches/list",workshop:"admin/workshops","user/list":"admin/branches/user-list",cities:"admin/misc/cities",sms:"admin/misc/sms","sms/table":"admin/misc/sms/list",notify:"admin/misc/notify","notify/table":"admin/misc/notify/list","notify/customer":"admin/misc/notify/customer",ddf:"admin/misc/newsletter/list","fashion/table":"admin/misc/newsletter/list","log/list/customer":"admin/misc/log/customers","dashboard/link":"admin/misc/dashboard-links","get-analytics":"admin/dashboard/omde","get-analytics-tak":"admin/dashboard/tak","dashboard/overview":"admin/dashboard/overview","brand/create":"admin/misc/brands","ciny/create":"admin/categories/collections","cities/list":"admin/cities/list","report/order-item":"admin/dashboard/report/order-item","report/product":"admin/dashboard/report/product","workshop/table":"admin/workshops/list",brand:"admin/products/brands",category:"admin/categories/list","category/":"admin/categories",ciny:"admin/categories/collections/list"},T2e=[{test:/^cities\/get-percent-aux\/(.+)$/,to:t=>`admin/misc/cities/percent-aux/${t[1]}`},{test:/^cities\/get-percent\/(.+)$/,to:t=>`admin/misc/cities/percent/${t[1]}`},{test:/^cities\/(.+)$/,to:t=>`admin/misc/cities/${t[1]}`},{test:/^const\/(.+)$/,to:t=>`admin/misc/const/${t[1]}`},{test:/^brand\/(.+)$/,to:t=>`admin/misc/brands/${t[1]}`},{test:/^log\/ago\/(.+)$/,to:t=>`admin/misc/log/customer/${t[1]}`},{test:/^notify\/read\/(.+)$/,to:t=>`admin/misc/notify/read/${t[1]}`},{test:/^notify\/(.+)$/,to:t=>`admin/misc/notify/${t[1]}`},{test:/^single\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^get-custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^major\/archive\/(.+)$/,to:t=>`admin/customers-omde/archive/${t[1]}`},{test:/^major\/dashboard\/(.+)$/,to:t=>`admin/customers-omde/dashboard/${t[1]}`},{test:/^comment\/(.+)$/,to:t=>`admin/comments/${t[1]}`},{test:/^customer\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^delete\/product\/(.+)$/,to:t=>`admin/products/delete/${t[1]}`},{test:/^product\/show\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/update\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/(.+)\/variant$/,to:t=>`admin/products/${t[1]}/variants`},{test:/^category\/(.+)$/,to:t=>`admin/categories/${t[1]}`},{test:/^ciny\/(.+)$/,to:t=>`admin/categories/collections/${t[1]}`},{test:/^cash\/confirem\/(.+)$/,to:t=>`admin/documents/${t[1]}/confirm`},{test:/^cash\/(.+)$/,to:t=>`admin/documents/${t[1]}`},{test:/^product\/variant\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^major\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^ignore\/(.+)$/,to:t=>`admin/promotions/exclusions/${t[1]}`},{test:/^roles\/(\d+)\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles/${t[2]}`},{test:/^roles\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles`},{test:/^users\/(.+)$/,to:t=>`admin/users/${t[1]}`},{test:/^branch\/product\/(.+)$/,to:t=>`admin/invoices/${t[1]}`},{test:/^branch\/active\/(.+)$/,to:t=>`admin/branches/active/${t[1]}`},{test:/^workshop\/active\/(.+)$/,to:t=>`admin/workshops/active/${t[1]}`},{test:/^branch\/(.+)$/,to:t=>`admin/branches/${t[1]}`},{test:/^workshop\/(.+)$/,to:t=>`admin/workshops/${t[1]}`}];function E2e(t){if(/^https?:\/\//i.test(t))return t;const[e,n]=P2e(t).split("?"),i=O2e[e];if(i)return n?`${i}?${n}`:i;for(const{test:o,to:r}of T2e){const a=e.match(o);if(a){const s=r(a);return n?`${s}?${n}`:s}}return n?`${e}?${n}`:e}const M2e="/api/",B8={"Content-Type":"application/json",Accept:"application/json"},aI=localStorage.getItem($c);aI&&(B8.Authorization="Bearer "+aI);const Cf=bn.create({baseURL:M2e,headers:B8});Cf.interceptors.request.use(t=>{t.url&&(t.url=E2e(t.url));const e=localStorage.getItem($c);return e?t.headers.Authorization="Bearer "+e:delete t.headers.Authorization,t.data instanceof FormData&&delete t.headers["Content-Type"],localStorage.getItem("debug")==="1"&&(t.headers["X-Debug"]="1"),t},t=>Promise.reject(t));let sI=!1;Cf.interceptors.response.use(t=>{var n;const e=(n=t.data)==null?void 0:n.debug;return e&&localStorage.getItem("debug")==="1"&&(console.groupCollapsed(`[DEBUG] ${t.config.url}`),console.log(e),Array.isArray(e.by_kind)&&console.table(e.by_kind),console.groupEnd()),t},t=>{var e;return((e=t==null?void 0:t.response)==null?void 0:e.status)===401&&!sI&&(window.location.pathname.endsWith("/auth/login")||(sI=!0,localStorage.removeItem($c),window.location.assign("/auth/login"))),Promise.reject(t)});function I2e(t){const e=[...t],n=[];for(;e.length>1;)e.pop(),n.push(e.join("."));return n}function k2e(t){let e=[...t];return t.forEach(n=>{const i=n.split(".");i.length>1&&(e=[...new Set([...e,...I2e(i)])])}),e}const z8=Nk("users",{state:()=>({cityFilters:{},userInfo:void 0,roles:void 0,isSuperAdmin:!1}),getters:{hasPermission:t=>e=>{const n=t.roles;if(n)return n.includes(e)}},actions:{setCities(t){t.forEach(e=>{this.cityFilters[e.id]=e.title})},async getCities(){try{const t=await Cf.post("cities/list");this.setCities(t.data.rows)}catch(t){console.log(t)}},setUserInfo(t){this.userInfo=t},deleteUserInfo(){this.userInfo={}},getRoles(t){this.roles=k2e(t)},setSuperAdmin(t){this.isSuperAdmin=t===!0},deleteRoles(){this.roles=void 0,this.isSuperAdmin=!1}}}),$$=pAe({history:Y$e("/"),scrollBehavior(){return{left:0,top:0}},routes:[{path:"",component:()=>ze(()=>import("./Main-D1tnU8tP.js"),__vite__mapDeps([146,73,45,29,46,47,3,4,23,48,49,50,7,16,147])),children:gAe},{path:"",component:()=>ze(()=>import("./FullPage-DMlJXjfZ.js"),[]),children:[...mAe,{path:"/auth/iam/callback",name:"iam-callback",component:()=>ze(()=>import("./IamCallback-CDfS1Tyd.js"),__vite__mapDeps([148,7])),meta:{rule:"editor"}},{path:"/pages/error-404",name:"page-error-404",component:()=>ze(()=>import("./Error404-RiMPFrr5.js"),__vite__mapDeps([149,150])),meta:{rule:"editor"}},{path:"/pages/error-500",name:"page-error-500",component:()=>ze(()=>import("./Error500-jeDtZpef.js"),__vite__mapDeps([151,152])),meta:{rule:"editor"}},{path:"/pages/not-authorized",name:"page-not-authorized",component:()=>ze(()=>import("./NotAuthorized-Cl9-8nb6.js"),__vite__mapDeps([153,154])),meta:{rule:"editor"}},{path:"/pages/maintenance",name:"page-maintenance",component:()=>ze(()=>import("./Maintenance-Df5I5LOi.js"),__vite__mapDeps([155,156])),meta:{rule:"editor"}}]},{path:"/:pathMatch(.*)*",redirect:"/pages/error-404"}]});$$.afterEach(()=>{const t=document.getElementById("loading-bg");t&&(t.style.display="none")});const D2e=["/auth/login","/auth/forgot-password","/auth/register","/reg","/auth/iam/callback"];async function R2e(){const t=z8();if(t.roles)return t.roles;try{const{data:e}=await Cf.get("users/show");t.getRoles(e.permission),t.setSuperAdmin(e.is_super_admin),delete e.permission,delete e.ut,e.api_token&&localStorage.setItem($c,e.api_token),localStorage.setItem(UN,JSON.stringify(e))}catch(e){console.log(e)}return t.roles}let ww=!1;function L2e(){return sessionStorage.getItem("gb_admin_iam_sso_skip")==="1"?(sessionStorage.removeItem("gb_admin_iam_sso_skip"),ww=!0,!0):ww}$$.beforeEach(async t=>{var n;if(!localStorage.getItem($c)&&t.path!=="/auth/iam/callback"&&!L2e()){ww=!0,sessionStorage.removeItem("gb_admin_iam_sso_checked");try{const{data:i}=await Cf.get("admin/auth/sso/start",{params:{redirect_uri:s$e("auth/iam/callback")}});if(i!=null&&i.enabled&&i.authorize_url)return window.location.assign(i.authorize_url),!1}catch{}}if(D2e.indexOf(t.path)>-1)return!0;if(localStorage.getItem($c)){const i=await R2e();return i?(n=t.meta)!=null&&n.superAdminOnly&&!z8().isSuperAdmin?{name:"page-not-authorized"}:i&&t.meta&&t.meta.role&&!i.includes(t.meta.role)?t.name==="dashboard-ecommerce"||t.name==="dashboard-analytics"?{name:"my-data"}:{name:"page-not-authorized"}:!0:{path:"/auth/login"}}return{path:"/auth/login"}});const $f=kk(l$e);$f.use(wH());$f.use(U0e);$f.use($$);$f.use(Hg);$f.mount("#app");export{ai as $,$w as A,Bm as B,sv as C,xv as D,jC as E,Ge as F,Hs as G,gA as H,ut as I,zm as J,si as K,Wo as L,On as M,at as N,yi as O,FS as P,hf as Q,wC as R,cv as S,ga as T,Obe as U,Hm as V,Ic as W,BPe as X,Nk as Y,rl as Z,r$e as _,cc as a,Wm as a0,s$e as a1,$c as a2,UN as a3,bv as a4,Na as a5,Ba as a6,KC as a7,H2e as a8,sr as a9,Tt as aa,Rs as ab,PD as ac,A as ad,z9 as ae,k9 as af,B9 as ag,M9 as ah,TD as ai,Yr as aj,z2e as ak,qS as al,W2e as am,xC as an,ns as b,C as c,oe as d,V$ as e,Tn as f,B2e as g,Lt as h,xk as i,ZCe as j,HPe as k,zPe as l,ae as m,ye as n,zi as o,Yl as p,Xd as q,Iu as r,L as s,V0 as t,z8 as u,QCe as v,ss as w,qe as x,Cf as y,$t as z}; diff --git a/apps/admin-panel/dist/assets/list-D63BjZ2R.js b/apps/admin-panel/dist/assets/list-DNHKXSxl.js similarity index 88% rename from apps/admin-panel/dist/assets/list-D63BjZ2R.js rename to apps/admin-panel/dist/assets/list-DNHKXSxl.js index 5fbbbfe..357a904 100644 --- a/apps/admin-panel/dist/assets/list-D63BjZ2R.js +++ b/apps/admin-panel/dist/assets/list-DNHKXSxl.js @@ -1 +1 @@ -import{a as X,b as t,X as M}from"./model-CR-NjhTP.js";import{_ as j}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import{_ as A}from"./addFinDoc.vue_vue_type_script_setup_true_lang-Bhb3Mras.js";import{d as I,u as P,b as U,c as l,w as o,m as g,r as f,o as i,h as p,a as s,W as G,p as y,i as k,$ as H,E as L,D as W,f as b,y as q,G as T}from"./index-DajPj7Ec.js";import{u as z}from"./useDeleteHandler-CdwhuWqX.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";function F(){const e=new X("admin/documents/list","لیست اسناد");return e.add(new t("id","شماره سفارش").filterNumber()),e.add(new t("type_str","نوع سند").filterText()),e.add(new t("price","پول").filterDate().noSort()),e.add(new t("value","وزن نهایی (گرم)").filterDate().noSort()),e.add(new t("to","به").filterText().hidden()),e.add(new t("customer.name","نام و نام خانوادگی مشتری").filterText()),e.add(new t("note","توضیحات").filterText()),e.add(new t("ayar","عیار").filterNumber().noSort()),e.add(new t("lab","آزمایشگاه").filterText().noSort()),e.add(new t("recive_date","تاریخ دریافت").filterDate().noSort()),e.add(new t("account_name","نام حساب").filterText().hidden()),e.add(new t("bank_name","بانک").filterText().hidden()),e.add(new t("caj","تاریخ ثبت").filterDate().noSort()),e.add(new t("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new t("confirmed","وضعیت تایید سند").renderSlot("confirmed").noSort().filterSelect({0:"تایید نشده",1:"تایید شده"})),e.add(new t("price_per_gram","مظنه").hidden().filterText().noSort()),e.add(new t("original_value","وزن طلای داده شده").hidden().filterText().noSort()),e.add(new t("ang","انگ").hidden().filterText().noSort()),e.add(new t("opt","عملیات").noSort().renderSlot("opt")),e}const J={id:"page-user-list"},ae=I({__name:"list",setup(e){const $=P(),_=a=>!!$.hasPermission(a),h=F(),x=g(null),S=g(!1),v=g(!1),w=g(void 0);function D(){w.value=void 0,v.value=!0}function B(a){w.value=a,v.value=!0}async function C(a){var n,m,u;try{S.value=!0,await q.post(`cash/confirem/${a.id}`),T.success("تغییرات با موفقیت ثبت شد"),(n=x.value)==null||n.fetch()}catch(d){console.log(d),T.error(((u=(m=d==null?void 0:d.response)==null?void 0:m.data)==null?void 0:u.message)??"خطا در ثبت تغییرات")}finally{S.value=!1}}const{remove:N}=z({onSuccess:()=>{var a;return(a=x.value)==null?void 0:a.fetch()},successMessage:"سند حذف شد",fallbackErrorMessage:"خطا در حذف سند"});function E(a){return N(`cash/${a.id}`)}return(a,n)=>{const m=f("a-tag"),u=f("a-popconfirm"),d=f("a-tooltip"),O=f("a-card"),V=f("a-spin");return i(),U("div",J,[l(V,{spinning:S.value},{default:o(()=>[l(O,{title:"لیست اسناد مالی",class:"page-card"},{default:o(()=>[l(M,{ref_key:"tbl",ref:x,model:p(h),"mobile-cards":""},{add:o(()=>[l(j,{rid:"document.create","add-label":"ثبت سند مالی",onAdd:D})]),confirmed:o(({text:r})=>[r===1?(i(),s(m,{key:0,color:"green"},{default:o(()=>[...n[2]||(n[2]=[b("تایید شده",-1)])]),_:1})):(i(),s(m,{key:1},{default:o(()=>[...n[3]||(n[3]=[b("تایید نشده",-1)])]),_:1}))]),opt:o(({record:r})=>[!r.confirmed&&_("document.list.confirm")?(i(),s(d,{key:0,title:"تایید سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[4]||(n[4]=[y("p",null,"آیا سند تایید شود ؟",-1)])]),default:o(()=>[l(p(G),{class:"cursor-pointer mx-1 text-success"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),r.confirmed&&_("document.list.deny")?(i(),s(d,{key:1,title:"رد کردن سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[5]||(n[5]=[y("p",null,"آیا سند رد شود ؟",-1)])]),default:o(()=>[l(p(H),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),_("document.list.edit")?(i(),s(d,{key:2,title:"ویرایش"},{default:o(()=>[l(p(L),{class:"cursor-pointer mx-1 text-primary",onClick:c=>B(r.id)},null,8,["onClick"])]),_:2},1024)):k("",!0),_("document.list.remove")?(i(),s(d,{key:3,title:"حذف"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>E(r)},{title:o(()=>[...n[6]||(n[6]=[y("p",null,"آیا مطمئن به حذف سند مورد نظر هستید ؟",-1)])]),default:o(()=>[l(p(W),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0)]),_:1},8,["model"]),(i(),s(A,{key:w.value??"new",open:v.value,id:w.value,"onUpdate:open":n[0]||(n[0]=r=>v.value=r),onSuccess:n[1]||(n[1]=r=>{var c;return(c=x.value)==null?void 0:c.fetch()})},null,8,["open","id"]))]),_:1})]),_:1},8,["spinning"])])}}});export{ae as default}; +import{a as X,b as t,X as M}from"./model-btNVLLyF.js";import{_ as j}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import{_ as A}from"./addFinDoc.vue_vue_type_script_setup_true_lang-BeApu2ja.js";import{d as I,u as P,b as U,c as l,w as o,m as g,r as f,o as i,h as p,a as s,W as G,p as y,i as k,$ as H,E as L,D as W,f as b,y as q,G as T}from"./index-eLNLLYwC.js";import{u as z}from"./useDeleteHandler-BHXHWuUG.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";function F(){const e=new X("admin/documents/list","لیست اسناد");return e.add(new t("id","شماره سفارش").filterNumber()),e.add(new t("type_str","نوع سند").filterText()),e.add(new t("price","پول").filterDate().noSort()),e.add(new t("value","وزن نهایی (گرم)").filterDate().noSort()),e.add(new t("to","به").filterText().hidden()),e.add(new t("customer.name","نام و نام خانوادگی مشتری").filterText()),e.add(new t("note","توضیحات").filterText()),e.add(new t("ayar","عیار").filterNumber().noSort()),e.add(new t("lab","آزمایشگاه").filterText().noSort()),e.add(new t("recive_date","تاریخ دریافت").filterDate().noSort()),e.add(new t("account_name","نام حساب").filterText().hidden()),e.add(new t("bank_name","بانک").filterText().hidden()),e.add(new t("caj","تاریخ ثبت").filterDate().noSort()),e.add(new t("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new t("confirmed","وضعیت تایید سند").renderSlot("confirmed").noSort().filterSelect({0:"تایید نشده",1:"تایید شده"})),e.add(new t("price_per_gram","مظنه").hidden().filterText().noSort()),e.add(new t("original_value","وزن طلای داده شده").hidden().filterText().noSort()),e.add(new t("ang","انگ").hidden().filterText().noSort()),e.add(new t("opt","عملیات").noSort().renderSlot("opt")),e}const J={id:"page-user-list"},ae=I({__name:"list",setup(e){const $=P(),_=a=>!!$.hasPermission(a),h=F(),x=g(null),S=g(!1),v=g(!1),w=g(void 0);function D(){w.value=void 0,v.value=!0}function B(a){w.value=a,v.value=!0}async function C(a){var n,m,u;try{S.value=!0,await q.post(`cash/confirem/${a.id}`),T.success("تغییرات با موفقیت ثبت شد"),(n=x.value)==null||n.fetch()}catch(d){console.log(d),T.error(((u=(m=d==null?void 0:d.response)==null?void 0:m.data)==null?void 0:u.message)??"خطا در ثبت تغییرات")}finally{S.value=!1}}const{remove:N}=z({onSuccess:()=>{var a;return(a=x.value)==null?void 0:a.fetch()},successMessage:"سند حذف شد",fallbackErrorMessage:"خطا در حذف سند"});function E(a){return N(`cash/${a.id}`)}return(a,n)=>{const m=f("a-tag"),u=f("a-popconfirm"),d=f("a-tooltip"),O=f("a-card"),V=f("a-spin");return i(),U("div",J,[l(V,{spinning:S.value},{default:o(()=>[l(O,{title:"لیست اسناد مالی",class:"page-card"},{default:o(()=>[l(M,{ref_key:"tbl",ref:x,model:p(h),"mobile-cards":""},{add:o(()=>[l(j,{rid:"document.create","add-label":"ثبت سند مالی",onAdd:D})]),confirmed:o(({text:r})=>[r===1?(i(),s(m,{key:0,color:"green"},{default:o(()=>[...n[2]||(n[2]=[b("تایید شده",-1)])]),_:1})):(i(),s(m,{key:1},{default:o(()=>[...n[3]||(n[3]=[b("تایید نشده",-1)])]),_:1}))]),opt:o(({record:r})=>[!r.confirmed&&_("document.list.confirm")?(i(),s(d,{key:0,title:"تایید سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[4]||(n[4]=[y("p",null,"آیا سند تایید شود ؟",-1)])]),default:o(()=>[l(p(G),{class:"cursor-pointer mx-1 text-success"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),r.confirmed&&_("document.list.deny")?(i(),s(d,{key:1,title:"رد کردن سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[5]||(n[5]=[y("p",null,"آیا سند رد شود ؟",-1)])]),default:o(()=>[l(p(H),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),_("document.list.edit")?(i(),s(d,{key:2,title:"ویرایش"},{default:o(()=>[l(p(L),{class:"cursor-pointer mx-1 text-primary",onClick:c=>B(r.id)},null,8,["onClick"])]),_:2},1024)):k("",!0),_("document.list.remove")?(i(),s(d,{key:3,title:"حذف"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>E(r)},{title:o(()=>[...n[6]||(n[6]=[y("p",null,"آیا مطمئن به حذف سند مورد نظر هستید ؟",-1)])]),default:o(()=>[l(p(W),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0)]),_:1},8,["model"]),(i(),s(A,{key:w.value??"new",open:v.value,id:w.value,"onUpdate:open":n[0]||(n[0]=r=>v.value=r),onSuccess:n[1]||(n[1]=r=>{var c;return(c=x.value)==null?void 0:c.fetch()})},null,8,["open","id"]))]),_:1})]),_:1},8,["spinning"])])}}});export{ae as default}; diff --git a/apps/admin-panel/dist/assets/model-CR-NjhTP.js b/apps/admin-panel/dist/assets/model-btNVLLyF.js similarity index 98% rename from apps/admin-panel/dist/assets/model-CR-NjhTP.js rename to apps/admin-panel/dist/assets/model-btNVLLyF.js index 5c6d50e..de400f9 100644 --- a/apps/admin-panel/dist/assets/model-CR-NjhTP.js +++ b/apps/admin-panel/dist/assets/model-btNVLLyF.js @@ -1 +1 @@ -import{c,I as ve,d as Re,v as Ee,x as Le,o,b as h,q as Q,p as w,a as k,i as m,w as p,f as O,h as $,F as C,e as B,a6 as Ae,a7 as M,t as P,s as f,m as H,z as ue,y as Xe,r as y,_ as Ye}from"./index-DajPj7Ec.js";import{g as de}from"./filters-gmIfX3-G.js";import{S as Ke}from"./SettingOutlined-BBdK6RkP.js";var Qe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"}}]},name:"filter",theme:"outlined"};function ce(r){for(var a=1;a[]},mobileCards:{type:Boolean,default:!1}},emits:["query","update:modelValue"],setup(r,{expose:a,emit:u}){const d=r,g=Ee(),Y=f(()=>d.mobileCards&&g.isMobile),N=u,pe=f(()=>d.hasSelection?{selectedRowKeys:d.modelValue.map(e=>e.id),onChange:(e,t)=>{N("update:modelValue",t)}}:void 0),S=H([]),T=H(!1),z=H(!1),F=H(void 0),R=H("asc"),s=ue({search:void 0,filters:[],total:0,limit:10,page:1}),J={emptyText:"هیج رکوردی یافت نشد."},fe=[{value:"=",label:"برابر"},{value:"!=",label:"نامساوی"},{value:"like",label:"شامل"},{value:">",label:"بزرگتر"},{value:">=",label:"بزرگتر مساوی"},{value:"<",label:"کوچکتر"},{value:"<=",label:"کوچکتر مساوی"},{value:"between",label:"بین"}],E=f(()=>d.model?ue(d.model).cols:[]),U=f(()=>E.value.filter(e=>e.show)),_e=f(()=>E.value.filter(e=>e.filtered).map(e=>({value:e.__fkey??e.key,label:e.title}))),me=f(()=>F.value?`${R.value==="asc"?"+":"-"}${F.value}`:void 0),ye=f(()=>U.value.map(e=>{var t;return{key:e.key,title:e.title,dataIndex:e.dataIndex.includes(".")?e.dataIndex.split("."):e.dataIndex,sorter:e.__sorter,width:e.width,__slot:(t=e.scopedSlots)==null?void 0:t.customRender,__date:e.filterType==="date"}}));function Z(e){return e.__slot}const ge=["opt","op","action"],D=f(()=>U.value.map(e=>{var t;return{key:e.key,title:e.title,path:e.dataIndex.split("."),slot:(t=e.scopedSlots)==null?void 0:t.customRender,date:e.filterType==="date"}})),j=f(()=>D.value.find(e=>ge.includes(e.key)&&e.slot)),L=f(()=>D.value.find(e=>e.key==="id")),q=f(()=>D.value.find(e=>e.slot==="image")),ee=f(()=>{const e=D.value.filter(n=>n!==j.value&&n!==L.value&&n!==q.value),t=e.find(n=>n.key==="name"||n.key==="title");if(t)return[t];const i=e.find(n=>n.key==="fname");return i?[i,...e.filter(n=>n.key==="lname")]:e.slice(0,1)}),te=f(()=>D.value.filter(e=>e!==j.value&&e!==L.value&&e!==q.value&&!ee.value.includes(e)));function A(e){return d.modelValue.some(t=>t.id===e.id)}function be(e,t){const i=d.modelValue.filter(n=>n.id!==e.id);N("update:modelValue",t?[...i,e]:i)}const le=f(()=>S.value.length>0&&S.value.every(A)),ke=f(()=>S.value.some(A));function xe(e){const t=new Set(S.value.map(n=>n.id)),i=d.modelValue.filter(n=>!t.has(n.id));N("update:modelValue",e?[...i,...S.value]:i)}function I(e,t){return t.path.reduce((i,n)=>i&&typeof i=="object"?i[n]:void 0,e)}function ae(e,t){const i=I(e,t);return i==null||i===""?"-":t.date?de(i):i}const ie=f(()=>U.value.filter(e=>e.__sorter).flatMap(e=>[{value:`${e.key}|asc`,label:`${e.title} ↑`},{value:`${e.key}|desc`,label:`${e.title} ↓`}])),Se=f(()=>F.value?`${F.value}|${R.value}`:void 0);function we(e){if(e){const[t,i]=e.split("|");F.value=t,R.value=i}else F.value=void 0;s.page=1,V()}function Oe(e,t){var i;s.page=e,s.limit=t,V(),(i=document.getElementById("content-area"))==null||i.scrollTo({top:0,behavior:"smooth"})}function se(e){if(e)return E.value.find(t=>(t.__fkey??t.key)===e)}function ne(e){const t=se(e);if(!((t==null?void 0:t.filterType)!=="select"||!t.filterItems))return Object.entries(t.filterItems).map(([i,n])=>({value:i,label:n}))}function Ce(e){var t;return((t=se(e))==null?void 0:t.filterType)==="date"}const Fe=f(()=>{var e;return(e=d.model)!=null&&e._hidePagination?!1:{current:s.page,pageSize:s.limit,total:s.total,showSizeChanger:!0}});function Ve(e){var b;const t={};U.value.forEach(x=>{t[x.key]=x.title});const i=U.value.map(x=>x.key),n={search:s.search,filters:s.filters.filter(x=>x.field&&x.op),total:s.total,limit:s.limit,page:s.page,order:me.value,select:i,titles:t,report_title:(b=d.model)==null?void 0:b.title};return e?{...n,op:e}:n}async function V(e){var t,i,n;if(d.model)try{T.value=!0;const{data:b}=await Xe.post(d.model.url,Ve(e));S.value=b.rows,s.total=((t=b.query)==null?void 0:t.total)??0,s.page=((i=b.query)==null?void 0:i.page)??s.page,s.limit=((n=b.query)==null?void 0:n.limit)??s.limit,N("query",b.query)}catch(b){throw console.log(b),b}finally{T.value=!1}}function $e(e){s.search=e,s.page=1,V()}function Pe(){z.value=!z.value,z.value&&s.filters.length===0&&oe()}function oe(){s.filters.push({id:parseFloat(`${s.filters.length}.${Math.floor(Math.random()*1e3)}`)})}function Te(e){s.filters.splice(e,1)}function ze(){z.value=!1,s.page=1,V()}function Ie(e,t,i){s.page=e.current??1,s.limit=e.pageSize??s.limit,i!=null&&i.columnKey&&i.order?(F.value=String(i.columnKey),R.value=i.order==="ascend"?"asc":"desc"):F.value=void 0,V()}return Le(()=>{var e;for(const t of((e=d.model)==null?void 0:e.defaultFilters)??[])s.filters.push({id:Math.random(),...t});V()}),a({fetch:V}),(e,t)=>{const i=y("a-input-search"),n=y("a-button"),b=y("a-badge"),x=y("a-tooltip"),K=y("a-checkbox"),Me=y("a-menu-item"),Ue=y("a-menu"),De=y("a-dropdown"),X=y("a-select"),je=y("a-date-picker"),re=y("a-input"),qe=y("a-empty"),Be=y("a-spin"),He=y("a-pagination"),Ne=y("a-table");return o(),h("div",{class:Q(["x-table",{"x-table--cards":Y.value}])},[w("div",Ze,[w("div",et,[r.model._hideSearch?m("",!0):(o(),k(i,{key:0,value:s.search,"onUpdate:value":t[0]||(t[0]=l=>s.search=l),class:"x-table__search",placeholder:"جستجو","allow-clear":"",onSearch:$e},null,8,["value"])),w("div",tt,[r.model._noFilters?m("",!0):(o(),k(b,{key:0,count:s.filters.length},{default:p(()=>[c(n,{type:"text",class:Q({"x-table__action--active":z.value}),onClick:Pe},{icon:p(()=>[c($(W))]),default:p(()=>[t[3]||(t[3]=O(" فیلتر ",-1))]),_:1},8,["class"])]),_:1},8,["count"])),c(x,{title:"چاپ"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(G))]),_:1})]),_:1}),c(De,{trigger:["click"]},{overlay:p(()=>[c(Ue,null,{default:p(()=>[(o(!0),h(C,null,B(E.value,l=>(o(),k(Me,{key:l.key},{default:p(()=>[c(K,{checked:l.show,"onUpdate:checked":v=>l.show=v},{default:p(()=>[O(P(l.title),1)]),_:2},1032,["checked","onUpdate:checked"])]),_:2},1024))),128))]),_:1})]),default:p(()=>[c(x,{title:"ستون‌ها"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(Ke))]),_:1})]),_:1})]),_:1}),c(x,{title:"بارگذاری مجدد"},{default:p(()=>[c(n,{class:"refresh-btn",type:"text",shape:"circle",loading:T.value,onClick:t[1]||(t[1]=l=>V())},{icon:p(()=>[c($(Ae))]),_:1},8,["loading"])]),_:1}),Y.value&&ie.value.length?(o(),k(X,{key:1,value:Se.value,class:"x-table__sort",size:"small",placeholder:"مرتب‌سازی","allow-clear":"",options:ie.value,onChange:we},null,8,["value","options"])):m("",!0)])]),e.$slots.add?(o(),h("div",lt,[M(e.$slots,"add",{},void 0,!0)])):m("",!0)]),z.value?(o(),h("div",at,[(o(!0),h(C,null,B(s.filters,(l,v)=>(o(),h("div",{key:l.id,class:"x-table__filter-row"},[c(X,{value:l.field,"onUpdate:value":_=>l.field=_,placeholder:"ستون",style:{width:"180px"},options:_e.value},null,8,["value","onUpdate:value","options"]),c(X,{value:l.op,"onUpdate:value":_=>l.op=_,placeholder:"شرط",style:{width:"130px"},options:fe},null,8,["value","onUpdate:value"]),ne(l.field)?(o(),k(X,{key:0,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},options:ne(l.field)},null,8,["value","onUpdate:value","options"])):Ce(l.field)?(o(),k(je,{key:1,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},"value-format":"YYYY-MM-DD"},null,8,["value","onUpdate:value"])):(o(),k(re,{key:2,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"}},null,8,["value","onUpdate:value"])),l.op==="between"?(o(),k(re,{key:3,value:l.value2,"onUpdate:value":_=>l.value2=_,placeholder:"تا",style:{width:"200px"}},null,8,["value","onUpdate:value"])):m("",!0),c(n,{danger:"",onClick:_=>Te(v)},{default:p(()=>[...t[4]||(t[4]=[O("حذف",-1)])]),_:1},8,["onClick"])]))),128)),w("div",it,[c(n,{onClick:oe},{default:p(()=>[...t[5]||(t[5]=[O("افزودن فیلتر",-1)])]),_:1}),c(n,{type:"primary",onClick:ze},{default:p(()=>[...t[6]||(t[6]=[O("اعمال",-1)])]),_:1})])])):m("",!0),Y.value?(o(),h("div",st,[c(Be,{spinning:T.value},{default:p(()=>[!S.value.length&&!T.value?(o(),k(qe,{key:0,description:J.emptyText},null,8,["description"])):m("",!0),r.hasSelection&&S.value.length?(o(),k(K,{key:1,class:"x-table__select-all",checked:le.value,indeterminate:ke.value&&!le.value,onChange:t[2]||(t[2]=l=>xe(l.target.checked))},{default:p(()=>[...t[7]||(t[7]=[O(" انتخاب همه در این صفحه ",-1)])]),_:1},8,["checked","indeterminate"])):m("",!0),(o(!0),h(C,null,B(S.value,l=>(o(),h("div",{key:String(l.id),class:Q(["x-card",{"x-card--selected":r.hasSelection&&A(l)}])},[w("div",nt,[w("div",ot,[r.hasSelection?(o(),k(K,{key:0,checked:A(l),onChange:v=>be(l,v.target.checked)},null,8,["checked","onChange"])):m("",!0),q.value?(o(),h("span",rt,[M(e.$slots,q.value.slot,{text:I(l,q.value),record:l},void 0,!0)])):m("",!0),L.value?(o(),h("span",ut,"#"+P(I(l,L.value)),1)):m("",!0),w("span",dt,[(o(!0),h(C,null,B(ee.value,v=>(o(),h(C,{key:v.key},[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(C,{key:1},[O(P(ae(l,v)),1)],64))],64))),128))])]),j.value?(o(),h("div",ct,[M(e.$slots,j.value.slot,{text:I(l,j.value),record:l},void 0,!0)])):m("",!0)]),te.value.length?(o(),h("dl",ht,[(o(!0),h(C,null,B(te.value,v=>(o(),h("div",{key:v.key,class:"x-card__row"},[w("dt",null,P(v.title),1),w("dd",null,[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(C,{key:1},[O(P(ae(l,v)),1)],64))])]))),128))])):m("",!0)],2))),128))]),_:3},8,["spinning"]),!r.model._hidePagination&&s.total>0?(o(),h("div",vt,[w("span",pt,P(s.total)+" مورد",1),c(He,{size:"small","show-less-items":"",current:s.page,"page-size":s.limit,total:s.total,"show-size-changer":!1,onChange:Oe},null,8,["current","page-size","total"])])):m("",!0)])):(o(),k(Ne,{key:2,columns:ye.value,"data-source":S.value,loading:T.value,pagination:Fe.value,locale:J,"row-selection":pe.value,"row-key":"id",size:$(g).isMobile?"small":"middle",scroll:$(g).isSmallScreen?{x:"max-content"}:void 0,bordered:"",onChange:Ie},{bodyCell:p(({column:l,record:v,text:_})=>[Z(l)?M(e.$slots,Z(l),{text:_,record:v},void 0,!0,0):l.__date?(o(),h(C,{key:1},[O(P($(de)(_)),1)],64)):m("",!0)]),_:3},8,["columns","data-source","loading","pagination","row-selection","size","scroll"]))],2)}}}),gt=Ye(ft,[["__scopeId","data-v-e767d7dc"]]);class bt{constructor(a,u){this.show=!0,this.__sorter=!0,this.filtered=!1,this.key=a,this.title=u,this.dataIndex=a,a==="id"&&(this.show=!1)}__filter(){this.filtered=!0,this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.filterDropdown=`${this.key}_filterDropdown`,this.scopedSlots.filterIcon=`${this.key}_filterIcon`}filterKey(a){return this.__fkey=a,this}renderSlot(a){return this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.customRender=a,this}filterText(){return this.__filter(),this.filterType="default",this}filterSwitch(){return this.__filter(),this.filterType="switch",this}filterQuery(a){return this.__filter(),this.filterType="query",this.filterAction=a,this}filterDate(){return this.__filter(),this.filterType="date",this}filterNumber(){return this.__filter(),this.filterType="number",this}filterSelect(a){return this.__filter(),this.filterType="select",this.filterItems=a,this}noSort(){return this.__sorter=!1,this}hidden(){return this.show=!1,this}setWidth(a){return this.width=a,this}}class kt{constructor(a,u){this.cols=[],this._hidePagination=!1,this._hideSearch=!1,this._noFilters=!1,this.url=a,this.title=u}add(a){return this.cols.push(a),this}addDefaultFilter(a){return this.defaultFilters||(this.defaultFilters=[]),this.defaultFilters.push(a),this}hidePagination(){return this._hidePagination=!0,this}hideSearch(){return this._hideSearch=!0,this}noFilters(){return this._noFilters=!0,this}getSortFields(){return this.cols.filter(a=>a.__sorter)}}export{gt as X,kt as a,bt as b}; +import{c,I as ve,d as Re,v as Ee,x as Le,o,b as h,q as Q,p as w,a as k,i as m,w as p,f as O,h as $,F as C,e as B,a7 as Ae,a8 as M,t as P,s as f,m as H,z as ue,y as Xe,r as y,_ as Ye}from"./index-eLNLLYwC.js";import{g as de}from"./filters-BMytoA2k.js";import{S as Ke}from"./SettingOutlined-DibNCEeh.js";var Qe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"}}]},name:"filter",theme:"outlined"};function ce(r){for(var a=1;a[]},mobileCards:{type:Boolean,default:!1}},emits:["query","update:modelValue"],setup(r,{expose:a,emit:u}){const d=r,g=Ee(),Y=f(()=>d.mobileCards&&g.isMobile),N=u,pe=f(()=>d.hasSelection?{selectedRowKeys:d.modelValue.map(e=>e.id),onChange:(e,t)=>{N("update:modelValue",t)}}:void 0),S=H([]),T=H(!1),z=H(!1),F=H(void 0),R=H("asc"),s=ue({search:void 0,filters:[],total:0,limit:10,page:1}),J={emptyText:"هیج رکوردی یافت نشد."},fe=[{value:"=",label:"برابر"},{value:"!=",label:"نامساوی"},{value:"like",label:"شامل"},{value:">",label:"بزرگتر"},{value:">=",label:"بزرگتر مساوی"},{value:"<",label:"کوچکتر"},{value:"<=",label:"کوچکتر مساوی"},{value:"between",label:"بین"}],E=f(()=>d.model?ue(d.model).cols:[]),U=f(()=>E.value.filter(e=>e.show)),_e=f(()=>E.value.filter(e=>e.filtered).map(e=>({value:e.__fkey??e.key,label:e.title}))),me=f(()=>F.value?`${R.value==="asc"?"+":"-"}${F.value}`:void 0),ye=f(()=>U.value.map(e=>{var t;return{key:e.key,title:e.title,dataIndex:e.dataIndex.includes(".")?e.dataIndex.split("."):e.dataIndex,sorter:e.__sorter,width:e.width,__slot:(t=e.scopedSlots)==null?void 0:t.customRender,__date:e.filterType==="date"}}));function Z(e){return e.__slot}const ge=["opt","op","action"],D=f(()=>U.value.map(e=>{var t;return{key:e.key,title:e.title,path:e.dataIndex.split("."),slot:(t=e.scopedSlots)==null?void 0:t.customRender,date:e.filterType==="date"}})),j=f(()=>D.value.find(e=>ge.includes(e.key)&&e.slot)),L=f(()=>D.value.find(e=>e.key==="id")),q=f(()=>D.value.find(e=>e.slot==="image")),ee=f(()=>{const e=D.value.filter(n=>n!==j.value&&n!==L.value&&n!==q.value),t=e.find(n=>n.key==="name"||n.key==="title");if(t)return[t];const i=e.find(n=>n.key==="fname");return i?[i,...e.filter(n=>n.key==="lname")]:e.slice(0,1)}),te=f(()=>D.value.filter(e=>e!==j.value&&e!==L.value&&e!==q.value&&!ee.value.includes(e)));function A(e){return d.modelValue.some(t=>t.id===e.id)}function be(e,t){const i=d.modelValue.filter(n=>n.id!==e.id);N("update:modelValue",t?[...i,e]:i)}const le=f(()=>S.value.length>0&&S.value.every(A)),ke=f(()=>S.value.some(A));function xe(e){const t=new Set(S.value.map(n=>n.id)),i=d.modelValue.filter(n=>!t.has(n.id));N("update:modelValue",e?[...i,...S.value]:i)}function I(e,t){return t.path.reduce((i,n)=>i&&typeof i=="object"?i[n]:void 0,e)}function ae(e,t){const i=I(e,t);return i==null||i===""?"-":t.date?de(i):i}const ie=f(()=>U.value.filter(e=>e.__sorter).flatMap(e=>[{value:`${e.key}|asc`,label:`${e.title} ↑`},{value:`${e.key}|desc`,label:`${e.title} ↓`}])),Se=f(()=>F.value?`${F.value}|${R.value}`:void 0);function we(e){if(e){const[t,i]=e.split("|");F.value=t,R.value=i}else F.value=void 0;s.page=1,V()}function Oe(e,t){var i;s.page=e,s.limit=t,V(),(i=document.getElementById("content-area"))==null||i.scrollTo({top:0,behavior:"smooth"})}function se(e){if(e)return E.value.find(t=>(t.__fkey??t.key)===e)}function ne(e){const t=se(e);if(!((t==null?void 0:t.filterType)!=="select"||!t.filterItems))return Object.entries(t.filterItems).map(([i,n])=>({value:i,label:n}))}function Ce(e){var t;return((t=se(e))==null?void 0:t.filterType)==="date"}const Fe=f(()=>{var e;return(e=d.model)!=null&&e._hidePagination?!1:{current:s.page,pageSize:s.limit,total:s.total,showSizeChanger:!0}});function Ve(e){var b;const t={};U.value.forEach(x=>{t[x.key]=x.title});const i=U.value.map(x=>x.key),n={search:s.search,filters:s.filters.filter(x=>x.field&&x.op),total:s.total,limit:s.limit,page:s.page,order:me.value,select:i,titles:t,report_title:(b=d.model)==null?void 0:b.title};return e?{...n,op:e}:n}async function V(e){var t,i,n;if(d.model)try{T.value=!0;const{data:b}=await Xe.post(d.model.url,Ve(e));S.value=b.rows,s.total=((t=b.query)==null?void 0:t.total)??0,s.page=((i=b.query)==null?void 0:i.page)??s.page,s.limit=((n=b.query)==null?void 0:n.limit)??s.limit,N("query",b.query)}catch(b){throw console.log(b),b}finally{T.value=!1}}function $e(e){s.search=e,s.page=1,V()}function Pe(){z.value=!z.value,z.value&&s.filters.length===0&&oe()}function oe(){s.filters.push({id:parseFloat(`${s.filters.length}.${Math.floor(Math.random()*1e3)}`)})}function Te(e){s.filters.splice(e,1)}function ze(){z.value=!1,s.page=1,V()}function Ie(e,t,i){s.page=e.current??1,s.limit=e.pageSize??s.limit,i!=null&&i.columnKey&&i.order?(F.value=String(i.columnKey),R.value=i.order==="ascend"?"asc":"desc"):F.value=void 0,V()}return Le(()=>{var e;for(const t of((e=d.model)==null?void 0:e.defaultFilters)??[])s.filters.push({id:Math.random(),...t});V()}),a({fetch:V}),(e,t)=>{const i=y("a-input-search"),n=y("a-button"),b=y("a-badge"),x=y("a-tooltip"),K=y("a-checkbox"),Me=y("a-menu-item"),Ue=y("a-menu"),De=y("a-dropdown"),X=y("a-select"),je=y("a-date-picker"),re=y("a-input"),qe=y("a-empty"),Be=y("a-spin"),He=y("a-pagination"),Ne=y("a-table");return o(),h("div",{class:Q(["x-table",{"x-table--cards":Y.value}])},[w("div",Ze,[w("div",et,[r.model._hideSearch?m("",!0):(o(),k(i,{key:0,value:s.search,"onUpdate:value":t[0]||(t[0]=l=>s.search=l),class:"x-table__search",placeholder:"جستجو","allow-clear":"",onSearch:$e},null,8,["value"])),w("div",tt,[r.model._noFilters?m("",!0):(o(),k(b,{key:0,count:s.filters.length},{default:p(()=>[c(n,{type:"text",class:Q({"x-table__action--active":z.value}),onClick:Pe},{icon:p(()=>[c($(W))]),default:p(()=>[t[3]||(t[3]=O(" فیلتر ",-1))]),_:1},8,["class"])]),_:1},8,["count"])),c(x,{title:"چاپ"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(G))]),_:1})]),_:1}),c(De,{trigger:["click"]},{overlay:p(()=>[c(Ue,null,{default:p(()=>[(o(!0),h(C,null,B(E.value,l=>(o(),k(Me,{key:l.key},{default:p(()=>[c(K,{checked:l.show,"onUpdate:checked":v=>l.show=v},{default:p(()=>[O(P(l.title),1)]),_:2},1032,["checked","onUpdate:checked"])]),_:2},1024))),128))]),_:1})]),default:p(()=>[c(x,{title:"ستون‌ها"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(Ke))]),_:1})]),_:1})]),_:1}),c(x,{title:"بارگذاری مجدد"},{default:p(()=>[c(n,{class:"refresh-btn",type:"text",shape:"circle",loading:T.value,onClick:t[1]||(t[1]=l=>V())},{icon:p(()=>[c($(Ae))]),_:1},8,["loading"])]),_:1}),Y.value&&ie.value.length?(o(),k(X,{key:1,value:Se.value,class:"x-table__sort",size:"small",placeholder:"مرتب‌سازی","allow-clear":"",options:ie.value,onChange:we},null,8,["value","options"])):m("",!0)])]),e.$slots.add?(o(),h("div",lt,[M(e.$slots,"add",{},void 0,!0)])):m("",!0)]),z.value?(o(),h("div",at,[(o(!0),h(C,null,B(s.filters,(l,v)=>(o(),h("div",{key:l.id,class:"x-table__filter-row"},[c(X,{value:l.field,"onUpdate:value":_=>l.field=_,placeholder:"ستون",style:{width:"180px"},options:_e.value},null,8,["value","onUpdate:value","options"]),c(X,{value:l.op,"onUpdate:value":_=>l.op=_,placeholder:"شرط",style:{width:"130px"},options:fe},null,8,["value","onUpdate:value"]),ne(l.field)?(o(),k(X,{key:0,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},options:ne(l.field)},null,8,["value","onUpdate:value","options"])):Ce(l.field)?(o(),k(je,{key:1,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},"value-format":"YYYY-MM-DD"},null,8,["value","onUpdate:value"])):(o(),k(re,{key:2,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"}},null,8,["value","onUpdate:value"])),l.op==="between"?(o(),k(re,{key:3,value:l.value2,"onUpdate:value":_=>l.value2=_,placeholder:"تا",style:{width:"200px"}},null,8,["value","onUpdate:value"])):m("",!0),c(n,{danger:"",onClick:_=>Te(v)},{default:p(()=>[...t[4]||(t[4]=[O("حذف",-1)])]),_:1},8,["onClick"])]))),128)),w("div",it,[c(n,{onClick:oe},{default:p(()=>[...t[5]||(t[5]=[O("افزودن فیلتر",-1)])]),_:1}),c(n,{type:"primary",onClick:ze},{default:p(()=>[...t[6]||(t[6]=[O("اعمال",-1)])]),_:1})])])):m("",!0),Y.value?(o(),h("div",st,[c(Be,{spinning:T.value},{default:p(()=>[!S.value.length&&!T.value?(o(),k(qe,{key:0,description:J.emptyText},null,8,["description"])):m("",!0),r.hasSelection&&S.value.length?(o(),k(K,{key:1,class:"x-table__select-all",checked:le.value,indeterminate:ke.value&&!le.value,onChange:t[2]||(t[2]=l=>xe(l.target.checked))},{default:p(()=>[...t[7]||(t[7]=[O(" انتخاب همه در این صفحه ",-1)])]),_:1},8,["checked","indeterminate"])):m("",!0),(o(!0),h(C,null,B(S.value,l=>(o(),h("div",{key:String(l.id),class:Q(["x-card",{"x-card--selected":r.hasSelection&&A(l)}])},[w("div",nt,[w("div",ot,[r.hasSelection?(o(),k(K,{key:0,checked:A(l),onChange:v=>be(l,v.target.checked)},null,8,["checked","onChange"])):m("",!0),q.value?(o(),h("span",rt,[M(e.$slots,q.value.slot,{text:I(l,q.value),record:l},void 0,!0)])):m("",!0),L.value?(o(),h("span",ut,"#"+P(I(l,L.value)),1)):m("",!0),w("span",dt,[(o(!0),h(C,null,B(ee.value,v=>(o(),h(C,{key:v.key},[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(C,{key:1},[O(P(ae(l,v)),1)],64))],64))),128))])]),j.value?(o(),h("div",ct,[M(e.$slots,j.value.slot,{text:I(l,j.value),record:l},void 0,!0)])):m("",!0)]),te.value.length?(o(),h("dl",ht,[(o(!0),h(C,null,B(te.value,v=>(o(),h("div",{key:v.key,class:"x-card__row"},[w("dt",null,P(v.title),1),w("dd",null,[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(C,{key:1},[O(P(ae(l,v)),1)],64))])]))),128))])):m("",!0)],2))),128))]),_:3},8,["spinning"]),!r.model._hidePagination&&s.total>0?(o(),h("div",vt,[w("span",pt,P(s.total)+" مورد",1),c(He,{size:"small","show-less-items":"",current:s.page,"page-size":s.limit,total:s.total,"show-size-changer":!1,onChange:Oe},null,8,["current","page-size","total"])])):m("",!0)])):(o(),k(Ne,{key:2,columns:ye.value,"data-source":S.value,loading:T.value,pagination:Fe.value,locale:J,"row-selection":pe.value,"row-key":"id",size:$(g).isMobile?"small":"middle",scroll:$(g).isSmallScreen?{x:"max-content"}:void 0,bordered:"",onChange:Ie},{bodyCell:p(({column:l,record:v,text:_})=>[Z(l)?M(e.$slots,Z(l),{text:_,record:v},void 0,!0,0):l.__date?(o(),h(C,{key:1},[O(P($(de)(_)),1)],64)):m("",!0)]),_:3},8,["columns","data-source","loading","pagination","row-selection","size","scroll"]))],2)}}}),gt=Ye(ft,[["__scopeId","data-v-e767d7dc"]]);class bt{constructor(a,u){this.show=!0,this.__sorter=!0,this.filtered=!1,this.key=a,this.title=u,this.dataIndex=a,a==="id"&&(this.show=!1)}__filter(){this.filtered=!0,this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.filterDropdown=`${this.key}_filterDropdown`,this.scopedSlots.filterIcon=`${this.key}_filterIcon`}filterKey(a){return this.__fkey=a,this}renderSlot(a){return this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.customRender=a,this}filterText(){return this.__filter(),this.filterType="default",this}filterSwitch(){return this.__filter(),this.filterType="switch",this}filterQuery(a){return this.__filter(),this.filterType="query",this.filterAction=a,this}filterDate(){return this.__filter(),this.filterType="date",this}filterNumber(){return this.__filter(),this.filterType="number",this}filterSelect(a){return this.__filter(),this.filterType="select",this.filterItems=a,this}noSort(){return this.__sorter=!1,this}hidden(){return this.show=!1,this}setWidth(a){return this.width=a,this}}class kt{constructor(a,u){this.cols=[],this._hidePagination=!1,this._hideSearch=!1,this._noFilters=!1,this.url=a,this.title=u}add(a){return this.cols.push(a),this}addDefaultFilter(a){return this.defaultFilters||(this.defaultFilters=[]),this.defaultFilters.push(a),this}hidePagination(){return this._hidePagination=!0,this}hideSearch(){return this._hideSearch=!0,this}noFilters(){return this._noFilters=!0,this}getSortFields(){return this.cols.filter(a=>a.__sorter)}}export{gt as X,kt as a,bt as b}; diff --git a/apps/admin-panel/dist/assets/myData-DsOyJhsC.js b/apps/admin-panel/dist/assets/myData-CDJUmBNX.js similarity index 88% rename from apps/admin-panel/dist/assets/myData-DsOyJhsC.js rename to apps/admin-panel/dist/assets/myData-CDJUmBNX.js index b460141..fee6470 100644 --- a/apps/admin-panel/dist/assets/myData-DsOyJhsC.js +++ b/apps/admin-panel/dist/assets/myData-CDJUmBNX.js @@ -1 +1 @@ -import{u as x}from"./auth-l1fvj2RU.js";import{d as v,x as y,y as h,a as b,w as t,m as g,r as u,o as w,c as s,f as n,t as c,s as m}from"./index-DajPj7Ec.js";const B=v({__name:"myData",setup(C){const d=x(),_=g(null),o=m(()=>_.value??d.user),i=m(()=>{var a,r;return(r=(a=o.value)==null?void 0:a.user_type)==null?void 0:r.title});return y(async()=>{try{const{data:a}=await h.get("admin/users/me");_.value=a}catch(a){console.log(a)}}),(a,r)=>{const l=u("a-descriptions-item"),p=u("a-descriptions"),f=u("a-card");return w(),b(f,{title:"اطلاعات کاربری",class:"page-card"},{default:t(()=>[s(p,{column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:t(()=>[s(l,{label:"نام"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.fname)||"-"),1)]}),_:1}),s(l,{label:"نام خانوادگی"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.lname)||"-"),1)]}),_:1}),s(l,{label:"شماره تلفن"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.mobile)||"-"),1)]}),_:1}),s(l,{label:"نوع کاربری"},{default:t(()=>[n(c(i.value||"آنلاین"),1)]),_:1})]),_:1})]),_:1})}}});export{B as default}; +import{u as x}from"./auth-Cmkre2IW.js";import{d as v,x as y,y as h,a as b,w as t,m as g,r as u,o as w,c as s,f as n,t as c,s as m}from"./index-eLNLLYwC.js";const B=v({__name:"myData",setup(C){const d=x(),_=g(null),o=m(()=>_.value??d.user),i=m(()=>{var a,r;return(r=(a=o.value)==null?void 0:a.user_type)==null?void 0:r.title});return y(async()=>{try{const{data:a}=await h.get("admin/users/me");_.value=a}catch(a){console.log(a)}}),(a,r)=>{const l=u("a-descriptions-item"),p=u("a-descriptions"),f=u("a-card");return w(),b(f,{title:"اطلاعات کاربری",class:"page-card"},{default:t(()=>[s(p,{column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:t(()=>[s(l,{label:"نام"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.fname)||"-"),1)]}),_:1}),s(l,{label:"نام خانوادگی"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.lname)||"-"),1)]}),_:1}),s(l,{label:"شماره تلفن"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.mobile)||"-"),1)]}),_:1}),s(l,{label:"نوع کاربری"},{default:t(()=>[n(c(i.value||"آنلاین"),1)]),_:1})]),_:1})]),_:1})}}});export{B as default}; diff --git a/apps/admin-panel/dist/assets/newsletters-Cw3--aFT.js b/apps/admin-panel/dist/assets/newsletters-CkmueuCH.js similarity index 79% rename from apps/admin-panel/dist/assets/newsletters-Cw3--aFT.js rename to apps/admin-panel/dist/assets/newsletters-CkmueuCH.js index f3af934..2ad44df 100644 --- a/apps/admin-panel/dist/assets/newsletters-Cw3--aFT.js +++ b/apps/admin-panel/dist/assets/newsletters-CkmueuCH.js @@ -1 +1 @@ -import{a as l,b as t,X as c}from"./model-CR-NjhTP.js";import{d,a as i,w as a,r as m,o as _,c as p,p as f,t as u,h as w,m as b,_ as x}from"./index-DajPj7Ec.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";function h(){const e=new l("admin/misc/newsletter/list","لیست خبرنامه");return e.add(new t("name","نام").filterKey("email").filterText()),e.add(new t("mobile","شماره موبایل").filterNumber()),e.add(new t("op","عملیات").noSort().renderSlot("actions")),e}const N={class:"muted"},X=d({__name:"newsletters",setup(e){const s=h(),o=b(null);return(k,y)=>{const r=m("a-card");return _(),i(r,{title:"لیست خبرنامه",class:"page-card"},{default:a(()=>[p(c,{ref_key:"newsletter",ref:o,model:w(s),"mobile-cards":""},{actions:a(({record:n})=>[f("span",N,u(n.email??"-"),1)]),_:1},8,["model"])]),_:1})}}}),v=x(X,[["__scopeId","data-v-c5c2159a"]]);export{v as default}; +import{a as l,b as t,X as c}from"./model-btNVLLyF.js";import{d,a as i,w as a,r as m,o as _,c as p,p as f,t as u,h as w,m as b,_ as x}from"./index-eLNLLYwC.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";function h(){const e=new l("admin/misc/newsletter/list","لیست خبرنامه");return e.add(new t("name","نام").filterKey("email").filterText()),e.add(new t("mobile","شماره موبایل").filterNumber()),e.add(new t("op","عملیات").noSort().renderSlot("actions")),e}const N={class:"muted"},X=d({__name:"newsletters",setup(e){const s=h(),o=b(null);return(k,y)=>{const r=m("a-card");return _(),i(r,{title:"لیست خبرنامه",class:"page-card"},{default:a(()=>[p(c,{ref_key:"newsletter",ref:o,model:w(s),"mobile-cards":""},{actions:a(({record:n})=>[f("span",N,u(n.email??"-"),1)]),_:1},8,["model"])]),_:1})}}}),v=x(X,[["__scopeId","data-v-c5c2159a"]]);export{v as default}; diff --git a/apps/admin-panel/dist/assets/offersIgnore-add-edit-DE72s5pO.js b/apps/admin-panel/dist/assets/offersIgnore-add-edit-B39Jv3mn.js similarity index 96% rename from apps/admin-panel/dist/assets/offersIgnore-add-edit-DE72s5pO.js rename to apps/admin-panel/dist/assets/offersIgnore-add-edit-B39Jv3mn.js index 9a5f294..e0f14ad 100644 --- a/apps/admin-panel/dist/assets/offersIgnore-add-edit-DE72s5pO.js +++ b/apps/admin-panel/dist/assets/offersIgnore-add-edit-B39Jv3mn.js @@ -1 +1 @@ -import{a as y,b as d,X as w}from"./model-CR-NjhTP.js";import{d as Q,x as W,b as c,p as u,c as n,w as s,m as p,y as I,G as b,r as m,o as f,F as v,e as F,t as r,h,i as x,f as V,_ as Y}from"./index-DajPj7Ec.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";const Z={id:"page-user-view",class:"page-card"},ee={id:"user-data"},te={class:"grid-4"},le=["src"],ae={class:"mt-5"},ne={class:"grid-4 items-end"},oe="/img/no-items.png",se=Q({__name:"offersIgnore-add-edit",setup(ue){const _=p(!1),C=p(!1),S={1:"محصولات",2:"دسته بندی",3:"مشتری",4:"برند"},i=p(1),T=p(1),l=p([]),U=p([]),j=R(),A=$(),G=q(),M=z();function R(){const e=new y("admin/products/list","محصولات");return e.add(new d("id","کد").filterNumber()),e.add(new d("ProductImage","تصویر").renderSlot("image").noSort()),e.add(new d("title","نام محصول").filterText()),e.add(new d("product_code","کد محصول").filterText()),e}function $(){const e=new y("admin/categories/list","دسته بندی");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان دسته").filterText()),e.add(new d("type_str","نوع نمایش").noSort()),e}function q(){const e=new y("admin/customers-omde/list","مشتریان");return e.add(new d("id","کد").filterNumber()),e.add(new d("name","نام و نام خانوادگی").filterText()),e.add(new d("mobile","موبایل").filterText().noSort()),e}function z(){const e=new y("admin/products/brands-table","برندها");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان برند").filterText()),e}function B(e){return U.value.filter(t=>t.type===e).map(t=>t.item_id)}function k(e){const t=B(e);l.value=t.map(o=>({id:o}))}async function H(){var e,t;try{_.value=!0,await I.post("ignore",{type:i.value,item_id:l.value.map(o=>o.id)}),b.success("عملیات با موفقیت انجام شد"),await N(),k(i.value)}catch(o){console.log(o),b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}async function J(){var e,t;try{C.value=!0,await I.delete(`ignore/${T.value}`),b.success("حذف شد"),await N(),k(i.value)}catch(o){b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در حذف")}finally{C.value=!1}}async function N(){try{_.value=!0;const{data:e}=await I.get("ignore");U.value=e,l.value=B(1).map(t=>({id:t}))}catch(e){console.log(e),b.error("خطا در دریافت اطلاعات")}finally{_.value=!1}}return W(N),(e,t)=>{const o=m("a-select-option"),X=m("a-select"),L=m("a-form-item"),P=m("a-button"),D=m("a-card"),K=m("a-form"),E=m("a-spin"),O=m("a-popconfirm");return f(),c("div",Z,[u("div",ee,[n(E,{spinning:_.value},{default:s(()=>[n(K,{layout:"vertical"},{default:s(()=>[n(D,{title:"تعریف تخفیف",class:"mb-base mb-10"},{default:s(()=>[u("div",te,[n(L,{label:"نوع استثناء"},{default:s(()=>[n(X,{value:i.value,"onUpdate:value":t[0]||(t[0]=a=>i.value=a),onChange:k},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1})]),i.value===1?(f(),c(v,{key:0},[u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1),n(w,{ref:"tblProducts",modelValue:l.value,"onUpdate:modelValue":t[1]||(t[1]=a=>l.value=a),model:h(j),"has-selection":!0,"mobile-cards":""},{image:s(({record:a})=>[u("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:oe},null,8,le)]),_:1},8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1)],64)):x("",!0),i.value===2?(f(),c(v,{key:1},[u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1),n(w,{ref:"tblCategory",modelValue:l.value,"onUpdate:modelValue":t[2]||(t[2]=a=>l.value=a),model:h(A),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1)],64)):x("",!0),i.value===3?(f(),c(v,{key:2},[u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1),n(w,{ref:"tblCustomer",modelValue:l.value,"onUpdate:modelValue":t[3]||(t[3]=a=>l.value=a),model:h(G),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1)],64)):x("",!0),i.value===4?(f(),c(v,{key:3},[u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1),n(w,{ref:"tblBrand",modelValue:l.value,"onUpdate:modelValue":t[4]||(t[4]=a=>l.value=a),model:h(M),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1)],64)):x("",!0),u("div",ae,[n(P,{type:"primary",class:"mr-4 form-submit",onClick:H},{default:s(()=>[...t[6]||(t[6]=[V("ثبت",-1)])]),_:1})])]),_:1})]),_:1})]),_:1},8,["spinning"]),n(E,{spinning:C.value},{default:s(()=>[n(D,{title:"حذف نوع استثناء"},{default:s(()=>[u("div",ne,[n(L,{label:"نوع"},{default:s(()=>[n(X,{value:T.value,"onUpdate:value":t[5]||(t[5]=a=>T.value=a)},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),n(O,{title:"آیا مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:J},{default:s(()=>[n(P,{danger:""},{default:s(()=>[...t[7]||(t[7]=[V("حذف",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])])])}}}),fe=Y(se,[["__scopeId","data-v-44cb9944"]]);export{fe as default}; +import{a as y,b as d,X as w}from"./model-btNVLLyF.js";import{d as Q,x as W,b as c,p as u,c as n,w as s,m as p,y as I,G as b,r as m,o as f,F as v,e as F,t as r,h,i as x,f as V,_ as Y}from"./index-eLNLLYwC.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";const Z={id:"page-user-view",class:"page-card"},ee={id:"user-data"},te={class:"grid-4"},le=["src"],ae={class:"mt-5"},ne={class:"grid-4 items-end"},oe="/img/no-items.png",se=Q({__name:"offersIgnore-add-edit",setup(ue){const _=p(!1),C=p(!1),S={1:"محصولات",2:"دسته بندی",3:"مشتری",4:"برند"},i=p(1),T=p(1),l=p([]),U=p([]),j=R(),A=$(),G=q(),M=z();function R(){const e=new y("admin/products/list","محصولات");return e.add(new d("id","کد").filterNumber()),e.add(new d("ProductImage","تصویر").renderSlot("image").noSort()),e.add(new d("title","نام محصول").filterText()),e.add(new d("product_code","کد محصول").filterText()),e}function $(){const e=new y("admin/categories/list","دسته بندی");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان دسته").filterText()),e.add(new d("type_str","نوع نمایش").noSort()),e}function q(){const e=new y("admin/customers-omde/list","مشتریان");return e.add(new d("id","کد").filterNumber()),e.add(new d("name","نام و نام خانوادگی").filterText()),e.add(new d("mobile","موبایل").filterText().noSort()),e}function z(){const e=new y("admin/products/brands-table","برندها");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان برند").filterText()),e}function B(e){return U.value.filter(t=>t.type===e).map(t=>t.item_id)}function k(e){const t=B(e);l.value=t.map(o=>({id:o}))}async function H(){var e,t;try{_.value=!0,await I.post("ignore",{type:i.value,item_id:l.value.map(o=>o.id)}),b.success("عملیات با موفقیت انجام شد"),await N(),k(i.value)}catch(o){console.log(o),b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}async function J(){var e,t;try{C.value=!0,await I.delete(`ignore/${T.value}`),b.success("حذف شد"),await N(),k(i.value)}catch(o){b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در حذف")}finally{C.value=!1}}async function N(){try{_.value=!0;const{data:e}=await I.get("ignore");U.value=e,l.value=B(1).map(t=>({id:t}))}catch(e){console.log(e),b.error("خطا در دریافت اطلاعات")}finally{_.value=!1}}return W(N),(e,t)=>{const o=m("a-select-option"),X=m("a-select"),L=m("a-form-item"),P=m("a-button"),D=m("a-card"),K=m("a-form"),E=m("a-spin"),O=m("a-popconfirm");return f(),c("div",Z,[u("div",ee,[n(E,{spinning:_.value},{default:s(()=>[n(K,{layout:"vertical"},{default:s(()=>[n(D,{title:"تعریف تخفیف",class:"mb-base mb-10"},{default:s(()=>[u("div",te,[n(L,{label:"نوع استثناء"},{default:s(()=>[n(X,{value:i.value,"onUpdate:value":t[0]||(t[0]=a=>i.value=a),onChange:k},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1})]),i.value===1?(f(),c(v,{key:0},[u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1),n(w,{ref:"tblProducts",modelValue:l.value,"onUpdate:modelValue":t[1]||(t[1]=a=>l.value=a),model:h(j),"has-selection":!0,"mobile-cards":""},{image:s(({record:a})=>[u("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:oe},null,8,le)]),_:1},8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1)],64)):x("",!0),i.value===2?(f(),c(v,{key:1},[u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1),n(w,{ref:"tblCategory",modelValue:l.value,"onUpdate:modelValue":t[2]||(t[2]=a=>l.value=a),model:h(A),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1)],64)):x("",!0),i.value===3?(f(),c(v,{key:2},[u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1),n(w,{ref:"tblCustomer",modelValue:l.value,"onUpdate:modelValue":t[3]||(t[3]=a=>l.value=a),model:h(G),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1)],64)):x("",!0),i.value===4?(f(),c(v,{key:3},[u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1),n(w,{ref:"tblBrand",modelValue:l.value,"onUpdate:modelValue":t[4]||(t[4]=a=>l.value=a),model:h(M),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1)],64)):x("",!0),u("div",ae,[n(P,{type:"primary",class:"mr-4 form-submit",onClick:H},{default:s(()=>[...t[6]||(t[6]=[V("ثبت",-1)])]),_:1})])]),_:1})]),_:1})]),_:1},8,["spinning"]),n(E,{spinning:C.value},{default:s(()=>[n(D,{title:"حذف نوع استثناء"},{default:s(()=>[u("div",ne,[n(L,{label:"نوع"},{default:s(()=>[n(X,{value:T.value,"onUpdate:value":t[5]||(t[5]=a=>T.value=a)},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),n(O,{title:"آیا مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:J},{default:s(()=>[n(P,{danger:""},{default:s(()=>[...t[7]||(t[7]=[V("حذف",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])])])}}}),fe=Y(se,[["__scopeId","data-v-44cb9944"]]);export{fe as default}; diff --git a/apps/admin-panel/dist/assets/order_item-BCXFMT8w.js b/apps/admin-panel/dist/assets/order_item-BLR_vTQ1.js similarity index 91% rename from apps/admin-panel/dist/assets/order_item-BCXFMT8w.js rename to apps/admin-panel/dist/assets/order_item-BLR_vTQ1.js index 4606f19..a0dd630 100644 --- a/apps/admin-panel/dist/assets/order_item-BCXFMT8w.js +++ b/apps/admin-panel/dist/assets/order_item-BLR_vTQ1.js @@ -1 +1 @@ -import{D as x}from"./DateInput-CSLG7sxn.js";import{j as z}from"./filters-gmIfX3-G.js";import{d as B,x as D,b as f,c as e,w as t,m as i,y as b,r as n,z as E,o as v,p as h,f as d,t as u,i as w,F,h as O,G as S,_ as T}from"./index-DajPj7Ec.js";import"./index-BAamWbCu.js";const $={id:"page-user-list"},q={class:"grid-4 filter-grid"},G={key:0,class:"summary"},M=B({__name:"order_item",setup(A){const _=i(!1),g=i([]),r=i(void 0),l=E({start_date:void 0,end_date:void 0}),I=[{title:"شماره سفارش",dataIndex:"order_number"},{title:"مشتری",dataIndex:"customer"},{title:"محصول",dataIndex:"product"},{title:"تنوع",dataIndex:"variant"},{title:"تعداد",dataIndex:"qty"},{title:"وزن واحد",dataIndex:"w"},{title:"وزن کل",dataIndex:"total_w"},{title:"تاریخ",dataIndex:"caj"}];async function y(){try{_.value=!0;const{data:o}=await b.get("report/order-item",{params:l});g.value=o.rows,r.value=o.summary}catch(o){console.log(o)}finally{_.value=!1}}const m=i(!1);async function V(){try{m.value=!0;const{data:o}=await b.get("admin/report/order-items",{params:l,responseType:"blob"}),a=URL.createObjectURL(o),s=document.createElement("a");s.href=a,s.download=`report-${l.start_date??"all"}-${l.end_date??"all"}.xlsx`,s.click(),URL.revokeObjectURL(a)}catch(o){console.log(o),S.error("خطا در دریافت فایل")}finally{m.value=!1}}return D(y),(o,a)=>{const s=n("a-button"),k=n("a-space"),j=n("a-form-item"),C=n("a-form"),p=n("a-tag"),U=n("a-table"),L=n("a-card"),N=n("a-spin");return v(),f("div",$,[e(N,{spinning:_.value},{default:t(()=>[e(L,{title:"گزارش تجمیعی سفارشات و اسناد مالی",class:"page-card table-scroll"},{default:t(()=>[e(C,{layout:"vertical"},{default:t(()=>[h("div",q,[e(x,{modelValue:l.start_date,"onUpdate:modelValue":a[0]||(a[0]=c=>l.start_date=c),label:"از تاریخ"},null,8,["modelValue"]),e(x,{modelValue:l.end_date,"onUpdate:modelValue":a[1]||(a[1]=c=>l.end_date=c),label:"تا تاریخ"},null,8,["modelValue"]),e(j,{label:" "},{default:t(()=>[e(k,null,{default:t(()=>[e(s,{type:"primary",onClick:y},{default:t(()=>[...a[2]||(a[2]=[d("اعمال",-1)])]),_:1}),e(s,{loading:m.value,onClick:V},{default:t(()=>[...a[3]||(a[3]=[d("دریافت فایل اکسل",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})])]),_:1}),r.value?(v(),f("div",G,[e(p,{color:"blue"},{default:t(()=>[d("تعداد سفارش: "+u(r.value.order_count),1)]),_:1}),e(p,{color:"blue"},{default:t(()=>[d("تعداد آیتم: "+u(r.value.item_count),1)]),_:1}),e(p,{color:"green"},{default:t(()=>[d("مجموع وزن: "+u(r.value.total_weight)+" گرم",1)]),_:1})])):w("",!0),e(U,{class:"mt-4",size:"small","data-source":g.value,columns:I,pagination:{pageSize:20},"row-key":"order_id"},{bodyCell:t(({column:c,record:R})=>[c.dataIndex==="caj"?(v(),f(F,{key:0},[d(u(O(z)(R.caj)),1)],64)):w("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),Q=T(M,[["__scopeId","data-v-44526675"]]);export{Q as default}; +import{D as x}from"./DateInput-D9Jh1loF.js";import{j as z}from"./filters-BMytoA2k.js";import{d as B,x as D,b as f,c as e,w as t,m as i,y as b,r as n,z as E,o as v,p as h,f as d,t as u,i as w,F,h as O,G as S,_ as T}from"./index-eLNLLYwC.js";import"./index-CKaD48iT.js";const $={id:"page-user-list"},q={class:"grid-4 filter-grid"},G={key:0,class:"summary"},M=B({__name:"order_item",setup(A){const _=i(!1),g=i([]),r=i(void 0),l=E({start_date:void 0,end_date:void 0}),I=[{title:"شماره سفارش",dataIndex:"order_number"},{title:"مشتری",dataIndex:"customer"},{title:"محصول",dataIndex:"product"},{title:"تنوع",dataIndex:"variant"},{title:"تعداد",dataIndex:"qty"},{title:"وزن واحد",dataIndex:"w"},{title:"وزن کل",dataIndex:"total_w"},{title:"تاریخ",dataIndex:"caj"}];async function y(){try{_.value=!0;const{data:o}=await b.get("report/order-item",{params:l});g.value=o.rows,r.value=o.summary}catch(o){console.log(o)}finally{_.value=!1}}const m=i(!1);async function V(){try{m.value=!0;const{data:o}=await b.get("admin/report/order-items",{params:l,responseType:"blob"}),a=URL.createObjectURL(o),s=document.createElement("a");s.href=a,s.download=`report-${l.start_date??"all"}-${l.end_date??"all"}.xlsx`,s.click(),URL.revokeObjectURL(a)}catch(o){console.log(o),S.error("خطا در دریافت فایل")}finally{m.value=!1}}return D(y),(o,a)=>{const s=n("a-button"),k=n("a-space"),j=n("a-form-item"),C=n("a-form"),p=n("a-tag"),U=n("a-table"),L=n("a-card"),N=n("a-spin");return v(),f("div",$,[e(N,{spinning:_.value},{default:t(()=>[e(L,{title:"گزارش تجمیعی سفارشات و اسناد مالی",class:"page-card table-scroll"},{default:t(()=>[e(C,{layout:"vertical"},{default:t(()=>[h("div",q,[e(x,{modelValue:l.start_date,"onUpdate:modelValue":a[0]||(a[0]=c=>l.start_date=c),label:"از تاریخ"},null,8,["modelValue"]),e(x,{modelValue:l.end_date,"onUpdate:modelValue":a[1]||(a[1]=c=>l.end_date=c),label:"تا تاریخ"},null,8,["modelValue"]),e(j,{label:" "},{default:t(()=>[e(k,null,{default:t(()=>[e(s,{type:"primary",onClick:y},{default:t(()=>[...a[2]||(a[2]=[d("اعمال",-1)])]),_:1}),e(s,{loading:m.value,onClick:V},{default:t(()=>[...a[3]||(a[3]=[d("دریافت فایل اکسل",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})])]),_:1}),r.value?(v(),f("div",G,[e(p,{color:"blue"},{default:t(()=>[d("تعداد سفارش: "+u(r.value.order_count),1)]),_:1}),e(p,{color:"blue"},{default:t(()=>[d("تعداد آیتم: "+u(r.value.item_count),1)]),_:1}),e(p,{color:"green"},{default:t(()=>[d("مجموع وزن: "+u(r.value.total_weight)+" گرم",1)]),_:1})])):w("",!0),e(U,{class:"mt-4",size:"small","data-source":g.value,columns:I,pagination:{pageSize:20},"row-key":"order_id"},{bodyCell:t(({column:c,record:R})=>[c.dataIndex==="caj"?(v(),f(F,{key:0},[d(u(O(z)(R.caj)),1)],64)):w("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),Q=T(M,[["__scopeId","data-v-44526675"]]);export{Q as default}; diff --git a/apps/admin-panel/dist/assets/product-CdHCOmwK.js b/apps/admin-panel/dist/assets/product-Pyi69LQn.js similarity index 89% rename from apps/admin-panel/dist/assets/product-CdHCOmwK.js rename to apps/admin-panel/dist/assets/product-Pyi69LQn.js index 79c6a09..52ca55b 100644 --- a/apps/admin-panel/dist/assets/product-CdHCOmwK.js +++ b/apps/admin-panel/dist/assets/product-Pyi69LQn.js @@ -1 +1 @@ -import{D as _}from"./DateInput-CSLG7sxn.js";import{d as k,x as C,b as m,c as t,w as o,m as c,y as N,r as a,z,o as p,p as B,f,t as D,i as S,_ as U}from"./index-DajPj7Ec.js";import"./index-BAamWbCu.js";const E={id:"page-user-list"},M={class:"grid-4 filter-grid"},T={key:0,class:"summary"},h=k({__name:"product",setup(j){const l=c(!1),i=c([]),d=c(void 0),n=z({start_date:void 0,end_date:void 0}),v=[{title:"نام محصول",dataIndex:"title"},{title:"تعداد فروش رفته",dataIndex:"total"},{title:"وزن فروش رفته",dataIndex:"w"},{title:"تعداد سفارش",dataIndex:"order_count"}];async function u(){try{l.value=!0;const{data:s}=await N.get("report/product",{params:n});i.value=s.rows,d.value=s.summary}catch(s){console.log(s)}finally{l.value=!1}}return C(u),(s,e)=>{const g=a("a-button"),y=a("a-form-item"),x=a("a-form"),b=a("a-tag"),V=a("a-table"),w=a("a-card"),I=a("a-spin");return p(),m("div",E,[t(I,{spinning:l.value},{default:o(()=>[t(w,{title:"گزارش محصولات",class:"page-card table-scroll"},{default:o(()=>[t(x,{layout:"vertical"},{default:o(()=>[B("div",M,[t(_,{modelValue:n.start_date,"onUpdate:modelValue":e[0]||(e[0]=r=>n.start_date=r),label:"از تاریخ"},null,8,["modelValue"]),t(_,{modelValue:n.end_date,"onUpdate:modelValue":e[1]||(e[1]=r=>n.end_date=r),label:"تا تاریخ"},null,8,["modelValue"]),t(y,{label:" "},{default:o(()=>[t(g,{type:"primary",onClick:u},{default:o(()=>[...e[2]||(e[2]=[f("اعمال",-1)])]),_:1})]),_:1})])]),_:1}),d.value?(p(),m("div",T,[t(b,{color:"blue"},{default:o(()=>[f("تعداد محصول: "+D(d.value.product_count),1)]),_:1})])):S("",!0),t(V,{class:"mt-4",size:"small","data-source":i.value,columns:v,pagination:{pageSize:20},"row-key":"id"},null,8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),G=U(h,[["__scopeId","data-v-6ed1013a"]]);export{G as default}; +import{D as _}from"./DateInput-D9Jh1loF.js";import{d as k,x as C,b as m,c as t,w as o,m as c,y as N,r as a,z,o as p,p as B,f,t as D,i as S,_ as U}from"./index-eLNLLYwC.js";import"./index-CKaD48iT.js";const E={id:"page-user-list"},M={class:"grid-4 filter-grid"},T={key:0,class:"summary"},h=k({__name:"product",setup(j){const l=c(!1),i=c([]),d=c(void 0),n=z({start_date:void 0,end_date:void 0}),v=[{title:"نام محصول",dataIndex:"title"},{title:"تعداد فروش رفته",dataIndex:"total"},{title:"وزن فروش رفته",dataIndex:"w"},{title:"تعداد سفارش",dataIndex:"order_count"}];async function u(){try{l.value=!0;const{data:s}=await N.get("report/product",{params:n});i.value=s.rows,d.value=s.summary}catch(s){console.log(s)}finally{l.value=!1}}return C(u),(s,e)=>{const g=a("a-button"),y=a("a-form-item"),x=a("a-form"),b=a("a-tag"),V=a("a-table"),w=a("a-card"),I=a("a-spin");return p(),m("div",E,[t(I,{spinning:l.value},{default:o(()=>[t(w,{title:"گزارش محصولات",class:"page-card table-scroll"},{default:o(()=>[t(x,{layout:"vertical"},{default:o(()=>[B("div",M,[t(_,{modelValue:n.start_date,"onUpdate:modelValue":e[0]||(e[0]=r=>n.start_date=r),label:"از تاریخ"},null,8,["modelValue"]),t(_,{modelValue:n.end_date,"onUpdate:modelValue":e[1]||(e[1]=r=>n.end_date=r),label:"تا تاریخ"},null,8,["modelValue"]),t(y,{label:" "},{default:o(()=>[t(g,{type:"primary",onClick:u},{default:o(()=>[...e[2]||(e[2]=[f("اعمال",-1)])]),_:1})]),_:1})])]),_:1}),d.value?(p(),m("div",T,[t(b,{color:"blue"},{default:o(()=>[f("تعداد محصول: "+D(d.value.product_count),1)]),_:1})])):S("",!0),t(V,{class:"mt-4",size:"small","data-source":i.value,columns:v,pagination:{pageSize:20},"row-key":"id"},null,8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),G=U(h,[["__scopeId","data-v-6ed1013a"]]);export{G as default}; diff --git a/apps/admin-panel/dist/assets/productListModel-C4fzek7T.js b/apps/admin-panel/dist/assets/productListModel-C4fzek7T.js deleted file mode 100644 index 7b29901..0000000 --- a/apps/admin-panel/dist/assets/productListModel-C4fzek7T.js +++ /dev/null @@ -1 +0,0 @@ -import{a as o,b as e}from"./model-CR-NjhTP.js";function n(d=!0){const t=new o("admin/products/list","لیست محصولات");return t.add(new e("id","کد").filterNumber()),t.add(new e("ProductImage","تصویر محصول").renderSlot("image").noSort()),t.add(new e("title","نام محصول").filterText()),t.add(new e("brand.title","برند").filterText()),t.add(new e("category.collection.title","دسته بندی").filterText()),t.add(new e("product_code","کد محصول").filterText()),d&&t.add(new e("show_type","نوع نمایش").filterSelect({1:"سایت",2:"گوشی",3:"سایت و گوشی"}).renderSlot("show_type")),t.add(new e("accounting_stock","حسابداری / نمایش").renderSlot("accounting").noSort()),t.add(new e("action","عملیات").renderSlot("op").noSort()),t}export{n as b}; diff --git a/apps/admin-panel/dist/assets/productListModel-DskQX-jW.js b/apps/admin-panel/dist/assets/productListModel-DskQX-jW.js new file mode 100644 index 0000000..3e0eb67 --- /dev/null +++ b/apps/admin-panel/dist/assets/productListModel-DskQX-jW.js @@ -0,0 +1 @@ +import{a as o,b as e}from"./model-btNVLLyF.js";function n(d=!0){const t=new o("admin/products/list","لیست محصولات");return t.add(new e("id","کد").filterNumber()),t.add(new e("ProductImage","تصویر محصول").renderSlot("image").noSort()),t.add(new e("title","نام محصول").filterText()),t.add(new e("brand.title","برند").filterText()),t.add(new e("category.collection.title","دسته بندی").filterText()),t.add(new e("product_code","کد محصول").filterText()),t.add(new e("tags","برچسب‌ها").renderSlot("tags").noSort()),d&&t.add(new e("show_type","نوع نمایش").filterSelect({1:"سایت",2:"گوشی",3:"سایت و گوشی"}).renderSlot("show_type")),t.add(new e("accounting_stock","حسابداری / نمایش").renderSlot("accounting").noSort()),t.add(new e("action","عملیات").renderSlot("op").noSort()),t}export{n as b}; diff --git a/apps/admin-panel/dist/assets/promotion_add_edit-CkCABaCG.js b/apps/admin-panel/dist/assets/promotion_add_edit-CkCABaCG.js new file mode 100644 index 0000000..c5ae3c3 --- /dev/null +++ b/apps/admin-panel/dist/assets/promotion_add_edit-CkCABaCG.js @@ -0,0 +1 @@ +import{_ as o}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang-Byvx5z5L.js";import"./PromotionForm-CAyJlwhb.js";import"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_add_edit-CqCju9pR.js b/apps/admin-panel/dist/assets/promotion_add_edit-CqCju9pR.js deleted file mode 100644 index 1f8930b..0000000 --- a/apps/admin-panel/dist/assets/promotion_add_edit-CqCju9pR.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang--2Wiku7A.js";import"./PromotionForm-ii0sb4Z5.js";import"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang--2Wiku7A.js b/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Byvx5z5L.js similarity index 72% rename from apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang--2Wiku7A.js rename to apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Byvx5z5L.js index 27d8921..dbe0bb4 100644 --- a/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang--2Wiku7A.js +++ b/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Byvx5z5L.js @@ -1 +1 @@ -import{P as p}from"./PromotionForm-ii0sb4Z5.js";import{d as s,a as i,o as r}from"./index-DajPj7Ec.js";const d=s({__name:"promotion_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(r(),i(p,{title:"تعریف تخفیف","allow-customer-scope":!0,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; +import{P as p}from"./PromotionForm-CAyJlwhb.js";import{d as s,a as i,o as r}from"./index-eLNLLYwC.js";const d=s({__name:"promotion_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(r(),i(p,{title:"تعریف تخفیف","allow-customer-scope":!0,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; diff --git a/apps/admin-panel/dist/assets/promotion_list-CJB17R4H.js b/apps/admin-panel/dist/assets/promotion_list-C6ai2IKH.js similarity index 85% rename from apps/admin-panel/dist/assets/promotion_list-CJB17R4H.js rename to apps/admin-panel/dist/assets/promotion_list-C6ai2IKH.js index 4aaf651..2af272a 100644 --- a/apps/admin-panel/dist/assets/promotion_list-CJB17R4H.js +++ b/apps/admin-panel/dist/assets/promotion_list-C6ai2IKH.js @@ -1 +1 @@ -import{a as O,b as s,X as U}from"./model-CR-NjhTP.js";import{_ as C}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-B-fVtUHy.js";import{_ as I}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang--2Wiku7A.js";import{_ as G}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DFzOW-j9.js";import{d as L,u as M,b as R,c as m,w as n,r as w,o as r,h as p,a as l,E as q,i as b,D as z,p as D,f as g,t as A,m as x,y as F,G as B,_ as H}from"./index-DajPj7Ec.js";import{j as E}from"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./PromotionForm-ii0sb4Z5.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";import"./index-BAamWbCu.js";function J(){const a=new O("admin/promotions/list","لیست تخفیف ها");return a.add(new s("id","کد").filterNumber()),a.add(new s("title","نام پروموشن").filterText()),a.add(new s("promotion_type_str","نوع پروموشن").noSort()),a.add(new s("platform","پلتفرم نمایش ").noSort()),a.add(new s("status","وضعیت").renderSlot("sts").noSort()),a.add(new s("start","تاریخ شروع").renderSlot("startDate").noSort()),a.add(new s("end","تاریخ پایان ").renderSlot("endDate").noSort()),a.add(new s("action","عملیات").renderSlot("op").noSort()),a}const K={id:"page-user-list"},Q={class:"list-page-header-row"},W=L({__name:"promotion_list",setup(a){const v=M(),k=o=>!!v.hasPermission(o),N=J(),y=x(null),d=x(!1),u=x(void 0),S=x(void 0);function $(o){S.value=o,u.value=void 0,d.value=!0}function V(o){return v.isSuperAdmin&&k("offers.list.tak.edit")&&o.type_customer===1||k("offers.list.edit")&&o.type_customer===2}function P(o){return v.isSuperAdmin&&k("offers.list.tak.remove")&&o.type_customer===1||k("offers.list.remove")&&o.type_customer===2}function T(o){S.value=o.type_customer===1?"tak":"omde",u.value=o.id,d.value=!0}async function X(o){var e,f,c;try{await F.delete(`major/promotion/${o.id}`),B.success("تخفیف حذف شد"),(e=y.value)==null||e.fetch()}catch(_){B.error(((c=(f=_==null?void 0:_.response)==null?void 0:f.data)==null?void 0:c.message)??"خطا در حذف تخفیف")}}return(o,e)=>{const f=w("a-tag"),c=w("a-tooltip"),_=w("a-popconfirm"),j=w("a-card");return r(),R("div",K,[m(j,{title:"لیست تخفیف ها",class:"page-card"},{default:n(()=>[m(U,{ref_key:"tbl",ref:y,model:p(N),"mobile-cards":""},{add:n(()=>[D("div",Q,[m(C,{rid:"offers.create","add-label":"افزودن تخفیف عمده",onAdd:e[0]||(e[0]=t=>$("omde"))}),p(v).isSuperAdmin?(r(),l(C,{key:0,rid:"offers.create.tak","add-label":"افزودن تخفیف تک",onAdd:e[1]||(e[1]=t=>$("tak"))})):b("",!0)])]),sts:n(({record:t})=>[t.status===1?(r(),l(f,{key:0,color:"green"},{default:n(()=>[...e[6]||(e[6]=[g("فعال",-1)])]),_:1})):(r(),l(f,{key:1,color:"red"},{default:n(()=>[...e[7]||(e[7]=[g("غیر فعال",-1)])]),_:1}))]),startDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),endDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),op:n(({record:t})=>[V(t)?(r(),l(c,{key:0,title:"ویرایش"},{default:n(()=>[m(p(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>T(t)},null,8,["onClick"])]),_:2},1024)):b("",!0),P(t)?(r(),l(c,{key:1,title:"حذف"},{default:n(()=>[m(_,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>X(t)},{title:n(()=>[...e[8]||(e[8]=[D("p",null,"آیا مطمئن به حذف تخفیف مورد نظر هستید ؟",-1)])]),default:n(()=>[m(p(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),S.value==="omde"?(r(),l(I,{key:u.value??"new",open:d.value,id:u.value,"onUpdate:open":e[2]||(e[2]=t=>d.value=t),onSuccess:e[3]||(e[3]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):S.value==="tak"?(r(),l(G,{key:u.value??"new",open:d.value,id:u.value,"onUpdate:open":e[4]||(e[4]=t=>d.value=t),onSuccess:e[5]||(e[5]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):b("",!0)]),_:1})])}}}),ie=H(W,[["__scopeId","data-v-25a20ef5"]]);export{ie as default}; +import{a as O,b as s,X as U}from"./model-btNVLLyF.js";import{_ as C}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BPANTZG7.js";import{_ as I}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang-Byvx5z5L.js";import{_ as G}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-JRmgfs03.js";import{d as L,u as M,b as R,c as m,w as n,r as w,o as r,h as p,a as l,E as q,i as b,D as z,p as D,f as g,t as A,m as x,y as F,G as B,_ as H}from"./index-eLNLLYwC.js";import{j as E}from"./filters-BMytoA2k.js";import"./SettingOutlined-DibNCEeh.js";import"./PromotionForm-CAyJlwhb.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";import"./index-CKaD48iT.js";function J(){const a=new O("admin/promotions/list","لیست تخفیف ها");return a.add(new s("id","کد").filterNumber()),a.add(new s("title","نام پروموشن").filterText()),a.add(new s("promotion_type_str","نوع پروموشن").noSort()),a.add(new s("platform","پلتفرم نمایش ").noSort()),a.add(new s("status","وضعیت").renderSlot("sts").noSort()),a.add(new s("start","تاریخ شروع").renderSlot("startDate").noSort()),a.add(new s("end","تاریخ پایان ").renderSlot("endDate").noSort()),a.add(new s("action","عملیات").renderSlot("op").noSort()),a}const K={id:"page-user-list"},Q={class:"list-page-header-row"},W=L({__name:"promotion_list",setup(a){const v=M(),k=o=>!!v.hasPermission(o),N=J(),y=x(null),d=x(!1),u=x(void 0),S=x(void 0);function $(o){S.value=o,u.value=void 0,d.value=!0}function V(o){return v.isSuperAdmin&&k("offers.list.tak.edit")&&o.type_customer===1||k("offers.list.edit")&&o.type_customer===2}function P(o){return v.isSuperAdmin&&k("offers.list.tak.remove")&&o.type_customer===1||k("offers.list.remove")&&o.type_customer===2}function T(o){S.value=o.type_customer===1?"tak":"omde",u.value=o.id,d.value=!0}async function X(o){var e,f,c;try{await F.delete(`major/promotion/${o.id}`),B.success("تخفیف حذف شد"),(e=y.value)==null||e.fetch()}catch(_){B.error(((c=(f=_==null?void 0:_.response)==null?void 0:f.data)==null?void 0:c.message)??"خطا در حذف تخفیف")}}return(o,e)=>{const f=w("a-tag"),c=w("a-tooltip"),_=w("a-popconfirm"),j=w("a-card");return r(),R("div",K,[m(j,{title:"لیست تخفیف ها",class:"page-card"},{default:n(()=>[m(U,{ref_key:"tbl",ref:y,model:p(N),"mobile-cards":""},{add:n(()=>[D("div",Q,[m(C,{rid:"offers.create","add-label":"افزودن تخفیف عمده",onAdd:e[0]||(e[0]=t=>$("omde"))}),p(v).isSuperAdmin?(r(),l(C,{key:0,rid:"offers.create.tak","add-label":"افزودن تخفیف تک",onAdd:e[1]||(e[1]=t=>$("tak"))})):b("",!0)])]),sts:n(({record:t})=>[t.status===1?(r(),l(f,{key:0,color:"green"},{default:n(()=>[...e[6]||(e[6]=[g("فعال",-1)])]),_:1})):(r(),l(f,{key:1,color:"red"},{default:n(()=>[...e[7]||(e[7]=[g("غیر فعال",-1)])]),_:1}))]),startDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),endDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),op:n(({record:t})=>[V(t)?(r(),l(c,{key:0,title:"ویرایش"},{default:n(()=>[m(p(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>T(t)},null,8,["onClick"])]),_:2},1024)):b("",!0),P(t)?(r(),l(c,{key:1,title:"حذف"},{default:n(()=>[m(_,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>X(t)},{title:n(()=>[...e[8]||(e[8]=[D("p",null,"آیا مطمئن به حذف تخفیف مورد نظر هستید ؟",-1)])]),default:n(()=>[m(p(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),S.value==="omde"?(r(),l(I,{key:u.value??"new",open:d.value,id:u.value,"onUpdate:open":e[2]||(e[2]=t=>d.value=t),onSuccess:e[3]||(e[3]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):S.value==="tak"?(r(),l(G,{key:u.value??"new",open:d.value,id:u.value,"onUpdate:open":e[4]||(e[4]=t=>d.value=t),onSuccess:e[5]||(e[5]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):b("",!0)]),_:1})])}}}),ie=H(W,[["__scopeId","data-v-25a20ef5"]]);export{ie as default}; diff --git a/apps/admin-panel/dist/assets/promotion_tak_add_edit-0aN9XPzw.js b/apps/admin-panel/dist/assets/promotion_tak_add_edit-0aN9XPzw.js new file mode 100644 index 0000000..fff34ca --- /dev/null +++ b/apps/admin-panel/dist/assets/promotion_tak_add_edit-0aN9XPzw.js @@ -0,0 +1 @@ +import{_ as o}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-JRmgfs03.js";import"./PromotionForm-CAyJlwhb.js";import"./index-eLNLLYwC.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-BEGcbOVS.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_tak_add_edit-Bza5oS11.js b/apps/admin-panel/dist/assets/promotion_tak_add_edit-Bza5oS11.js deleted file mode 100644 index 6ca8395..0000000 --- a/apps/admin-panel/dist/assets/promotion_tak_add_edit-Bza5oS11.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DFzOW-j9.js";import"./PromotionForm-ii0sb4Z5.js";import"./index-DajPj7Ec.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-MmWJekYl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DFzOW-j9.js b/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-JRmgfs03.js similarity index 72% rename from apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DFzOW-j9.js rename to apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-JRmgfs03.js index 8042ff0..3bc7f6d 100644 --- a/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DFzOW-j9.js +++ b/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-JRmgfs03.js @@ -1 +1 @@ -import{P as s}from"./PromotionForm-ii0sb4Z5.js";import{d as p,a as i,o as a}from"./index-DajPj7Ec.js";const d=p({__name:"promotion_tak_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(a(),i(s,{title:"تعریف تخفیف تک","allow-customer-scope":!1,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; +import{P as s}from"./PromotionForm-CAyJlwhb.js";import{d as p,a as i,o as a}from"./index-eLNLLYwC.js";const d=p({__name:"promotion_tak_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(a(),i(s,{title:"تعریف تخفیف تک","allow-customer-scope":!1,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; diff --git a/apps/admin-panel/dist/assets/reg-CTnxnWvP.js b/apps/admin-panel/dist/assets/reg-CqiFjlXn.js similarity index 97% rename from apps/admin-panel/dist/assets/reg-CTnxnWvP.js rename to apps/admin-panel/dist/assets/reg-CqiFjlXn.js index 652f653..38a8062 100644 --- a/apps/admin-panel/dist/assets/reg-CTnxnWvP.js +++ b/apps/admin-panel/dist/assets/reg-CqiFjlXn.js @@ -1 +1 @@ -import{d as y,b as x,c as l,w as s,m as z,r as m,o as U,H as k,p as w,f as h,z as b,y as C,G as c,_ as E}from"./index-DajPj7Ec.js";const j={class:"reg-page"},B={class:"grid-3"},N=y({__name:"reg",setup(O){const i=z(!1),e=b({fname:"",lname:"",mobile:"",store_name:"",phone:"",pasazh_name:"",zone:"",address:""}),n=b({});async function _(){var f,a,u,r,d,p;if(Object.keys(n).forEach(o=>delete n[o]),e.fname||(n.fname="لطفا نام را وارد کنید"),e.lname||(n.lname="لطفا نام خانوادگی را وارد کنید"),e.mobile||(n.mobile="لطفا شماره تلفن همراه را وارد کنید"),!Object.keys(n).length)try{i.value=!0,await C.post("customer/create",{...e,name:`${e.fname} ${e.lname}`.trim()}),c.success("اطلاعات با موفقیت ثبت شد."),Object.keys(e).forEach(o=>e[o]="")}catch(o){const v=(r=(u=(a=(f=o==null?void 0:o.response)==null?void 0:f.data)==null?void 0:a.errors)==null?void 0:u.mobile)==null?void 0:r[0];c.error(v??((p=(d=o==null?void 0:o.response)==null?void 0:d.data)==null?void 0:p.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return(f,a)=>{const u=m("a-input"),r=m("a-form-item"),d=m("a-textarea"),p=m("a-button"),o=m("a-form"),v=m("a-card"),g=m("a-spin");return U(),x("div",j,[l(g,{spinning:i.value},{default:s(()=>[l(v,{title:"ثبت مشتری جدید (اطلاعات فروشنده)",class:"reg-card"},{default:s(()=>[l(o,{layout:"vertical",onSubmit:k(_,["prevent"])},{default:s(()=>[w("div",B,[l(r,{label:"نام ","validate-status":n.fname?"error":"",help:n.fname},{default:s(()=>[l(u,{value:e.fname,"onUpdate:value":a[0]||(a[0]=t=>e.fname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام خانوادگی","validate-status":n.lname?"error":"",help:n.lname},{default:s(()=>[l(u,{value:e.lname,"onUpdate:value":a[1]||(a[1]=t=>e.lname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"شماره تلفن همراه","validate-status":n.mobile?"error":"",help:n.mobile},{default:s(()=>[l(u,{value:e.mobile,"onUpdate:value":a[2]||(a[2]=t=>e.mobile=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام مغازه"},{default:s(()=>[l(u,{value:e.store_name,"onUpdate:value":a[3]||(a[3]=t=>e.store_name=t)},null,8,["value"])]),_:1}),l(r,{label:"تلفن"},{default:s(()=>[l(u,{value:e.phone,"onUpdate:value":a[4]||(a[4]=t=>e.phone=t)},null,8,["value"])]),_:1}),l(r,{label:"نام پاساژ"},{default:s(()=>[l(u,{value:e.pasazh_name,"onUpdate:value":a[5]||(a[5]=t=>e.pasazh_name=t)},null,8,["value"])]),_:1}),l(r,{label:"منطقه"},{default:s(()=>[l(u,{value:e.zone,"onUpdate:value":a[6]||(a[6]=t=>e.zone=t)},null,8,["value"])]),_:1})]),l(r,{label:"آدرس"},{default:s(()=>[l(d,{value:e.address,"onUpdate:value":a[7]||(a[7]=t=>e.address=t),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1}),l(p,{type:"primary",size:"large",loading:i.value,onClick:_},{default:s(()=>[...a[8]||(a[8]=[h(" ثبت ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["spinning"])])}}}),R=E(N,[["__scopeId","data-v-42a558f2"]]);export{R as default}; +import{d as y,b as x,c as l,w as s,m as z,r as m,o as U,H as k,p as w,f as h,z as b,y as C,G as c,_ as E}from"./index-eLNLLYwC.js";const j={class:"reg-page"},B={class:"grid-3"},N=y({__name:"reg",setup(O){const i=z(!1),e=b({fname:"",lname:"",mobile:"",store_name:"",phone:"",pasazh_name:"",zone:"",address:""}),n=b({});async function _(){var f,a,u,r,d,p;if(Object.keys(n).forEach(o=>delete n[o]),e.fname||(n.fname="لطفا نام را وارد کنید"),e.lname||(n.lname="لطفا نام خانوادگی را وارد کنید"),e.mobile||(n.mobile="لطفا شماره تلفن همراه را وارد کنید"),!Object.keys(n).length)try{i.value=!0,await C.post("customer/create",{...e,name:`${e.fname} ${e.lname}`.trim()}),c.success("اطلاعات با موفقیت ثبت شد."),Object.keys(e).forEach(o=>e[o]="")}catch(o){const v=(r=(u=(a=(f=o==null?void 0:o.response)==null?void 0:f.data)==null?void 0:a.errors)==null?void 0:u.mobile)==null?void 0:r[0];c.error(v??((p=(d=o==null?void 0:o.response)==null?void 0:d.data)==null?void 0:p.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return(f,a)=>{const u=m("a-input"),r=m("a-form-item"),d=m("a-textarea"),p=m("a-button"),o=m("a-form"),v=m("a-card"),g=m("a-spin");return U(),x("div",j,[l(g,{spinning:i.value},{default:s(()=>[l(v,{title:"ثبت مشتری جدید (اطلاعات فروشنده)",class:"reg-card"},{default:s(()=>[l(o,{layout:"vertical",onSubmit:k(_,["prevent"])},{default:s(()=>[w("div",B,[l(r,{label:"نام ","validate-status":n.fname?"error":"",help:n.fname},{default:s(()=>[l(u,{value:e.fname,"onUpdate:value":a[0]||(a[0]=t=>e.fname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام خانوادگی","validate-status":n.lname?"error":"",help:n.lname},{default:s(()=>[l(u,{value:e.lname,"onUpdate:value":a[1]||(a[1]=t=>e.lname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"شماره تلفن همراه","validate-status":n.mobile?"error":"",help:n.mobile},{default:s(()=>[l(u,{value:e.mobile,"onUpdate:value":a[2]||(a[2]=t=>e.mobile=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام مغازه"},{default:s(()=>[l(u,{value:e.store_name,"onUpdate:value":a[3]||(a[3]=t=>e.store_name=t)},null,8,["value"])]),_:1}),l(r,{label:"تلفن"},{default:s(()=>[l(u,{value:e.phone,"onUpdate:value":a[4]||(a[4]=t=>e.phone=t)},null,8,["value"])]),_:1}),l(r,{label:"نام پاساژ"},{default:s(()=>[l(u,{value:e.pasazh_name,"onUpdate:value":a[5]||(a[5]=t=>e.pasazh_name=t)},null,8,["value"])]),_:1}),l(r,{label:"منطقه"},{default:s(()=>[l(u,{value:e.zone,"onUpdate:value":a[6]||(a[6]=t=>e.zone=t)},null,8,["value"])]),_:1})]),l(r,{label:"آدرس"},{default:s(()=>[l(d,{value:e.address,"onUpdate:value":a[7]||(a[7]=t=>e.address=t),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1}),l(p,{type:"primary",size:"large",loading:i.value,onClick:_},{default:s(()=>[...a[8]||(a[8]=[h(" ثبت ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["spinning"])])}}}),R=E(N,[["__scopeId","data-v-42a558f2"]]);export{R as default}; diff --git a/apps/admin-panel/dist/assets/report-OEDYaCDs.js b/apps/admin-panel/dist/assets/report-e-YemU3S.js similarity index 91% rename from apps/admin-panel/dist/assets/report-OEDYaCDs.js rename to apps/admin-panel/dist/assets/report-e-YemU3S.js index 3c0540f..920d02b 100644 --- a/apps/admin-panel/dist/assets/report-OEDYaCDs.js +++ b/apps/admin-panel/dist/assets/report-e-YemU3S.js @@ -1 +1 @@ -import{d,x as i,y as p,a as r,w as m,m as u,r as n,o as a,b as s,F as k,e as y,t as f,_ as h}from"./index-DajPj7Ec.js";const g={key:1,class:"links"},v=["href"],x=d({__name:"report",setup(b){const t=u([]);return i(async()=>{try{const{data:e}=await p.get("dashboard/link");t.value=Array.isArray(e)?e:[]}catch(e){console.log(e)}}),(e,w)=>{const c=n("a-empty"),l=n("a-card");return a(),r(l,{title:"مدیریت گزارشات",class:"page-card"},{default:m(()=>[t.value.length===0?(a(),r(c,{key:0,description:"هنوز لینکی تعریف نشده است"})):(a(),s("div",g,[(a(!0),s(k,null,y(t.value,(o,_)=>(a(),s("a",{key:_,href:o.url,target:"_blank",class:"link-card"},f(o.title),9,v))),128))]))]),_:1})}}}),C=h(x,[["__scopeId","data-v-e88c54db"]]);export{C as default}; +import{d,x as i,y as p,a as r,w as m,m as u,r as n,o as a,b as s,F as k,e as y,t as f,_ as h}from"./index-eLNLLYwC.js";const g={key:1,class:"links"},v=["href"],x=d({__name:"report",setup(b){const t=u([]);return i(async()=>{try{const{data:e}=await p.get("dashboard/link");t.value=Array.isArray(e)?e:[]}catch(e){console.log(e)}}),(e,w)=>{const c=n("a-empty"),l=n("a-card");return a(),r(l,{title:"مدیریت گزارشات",class:"page-card"},{default:m(()=>[t.value.length===0?(a(),r(c,{key:0,description:"هنوز لینکی تعریف نشده است"})):(a(),s("div",g,[(a(!0),s(k,null,y(t.value,(o,_)=>(a(),s("a",{key:_,href:o.url,target:"_blank",class:"link-card"},f(o.title),9,v))),128))]))]),_:1})}}}),C=h(x,[["__scopeId","data-v-e88c54db"]]);export{C as default}; diff --git a/apps/admin-panel/dist/assets/singleCustomer-3o4eCG9y.js b/apps/admin-panel/dist/assets/singleCustomer-gqRtFTnm.js similarity index 92% rename from apps/admin-panel/dist/assets/singleCustomer-3o4eCG9y.js rename to apps/admin-panel/dist/assets/singleCustomer-gqRtFTnm.js index df793af..5e4411c 100644 --- a/apps/admin-panel/dist/assets/singleCustomer-3o4eCG9y.js +++ b/apps/admin-panel/dist/assets/singleCustomer-gqRtFTnm.js @@ -1 +1 @@ -import{d as $,x as S,y as c,a as V,w as r,k as D,m as x,z as C,r as d,o as I,c as s,p as l,h as p,t as R,V as j,f as _,W as q,H as B,l as E,G as k,_ as N}from"./index-DajPj7Ec.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-CylOcxHE.js";import{D as z}from"./DateInput-CSLG7sxn.js";import{U as F}from"./UserOutlined-CzruAWCH.js";const G={class:"pf-layout pf-layout--single"},H={class:"pf-main"},Q={class:"pf-section"},T={class:"pf-section__head"},W={class:"pf-section__icon"},A={class:"pf-grid-2"},J={class:"pf-actions"},K={class:"pf-actions__hint"},v="لطفا مقدار را وارد کنید",L=$({__name:"singleCustomer",setup(P){const w=D(),y=E(),u=w.params.id,m=x(!1),h=x([]),t=C({fname:"",lname:"",phone:"",city_id:void 0,birth_day:""}),n=C({});async function b(){var a,e;if(Object.keys(n).forEach(o=>delete n[o]),t.fname||(n.fname=v),t.lname||(n.lname=v),t.phone||(n.phone=v),!Object.keys(n).length)try{m.value=!0;const o={...t,name:`${t.fname} ${t.lname}`.trim(),mobile:t.phone};u?await c.put(`single/${u}`,o):await c.post("single",o),k.info("اطلاعات با موفقیت به ثبت رسید."),y.go(-1)}catch(o){k.error(((e=(a=o==null?void 0:o.response)==null?void 0:a.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return S(async()=>{try{const{data:a}=await c.post("cities/list");h.value=a.rows??[]}catch(a){console.log(a)}if(u)try{const{data:a}=await c.get(`customer/${u}`);Object.assign(t,{fname:a.fname??"",lname:a.lname??"",phone:a.mobile??"",city_id:a.city_id??void 0,birth_day:a.birth_day??""})}catch(a){console.log(a)}}),(a,e)=>{const o=d("a-input"),f=d("a-form-item"),g=d("a-button"),U=d("a-form"),O=d("a-spin");return I(),V(O,{spinning:m.value},{default:r(()=>[s(U,{layout:"vertical",class:"pf-form",onSubmit:B(b,["prevent"])},{default:r(()=>[l("div",G,[l("div",H,[l("section",Q,[l("div",T,[l("span",W,[s(p(F))]),l("div",null,[l("h3",null,R(p(u)?"ویرایش مشتری":"افزودن مشتری"),1),e[6]||(e[6]=l("p",null,"مشخصات مشتری تک",-1))])]),l("div",A,[s(f,{label:"نام ",required:"","validate-status":n.fname?"error":"",help:n.fname},{default:r(()=>[s(o,{value:t.fname,"onUpdate:value":e[0]||(e[0]=i=>t.fname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"نام خانوادگی",required:"","validate-status":n.lname?"error":"",help:n.lname},{default:r(()=>[s(o,{value:t.lname,"onUpdate:value":e[1]||(e[1]=i=>t.lname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"شماره تلفن همراه",required:"","validate-status":n.phone?"error":"",help:n.phone},{default:r(()=>[s(o,{value:t.phone,"onUpdate:value":e[2]||(e[2]=i=>t.phone=i),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),s(z,{"model-value":t.birth_day||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[3]||(e[3]=i=>t.birth_day=i??"")},null,8,["model-value"]),s(f,{label:"شهر",class:"pf-span-all mb-0"},{default:r(()=>[s(M,{value:t.city_id,"onUpdate:value":e[4]||(e[4]=i=>t.city_id=i),cities:h.value},null,8,["value","cities"])]),_:1})])])])]),l("div",J,[l("span",K,[s(p(j)),e[7]||(e[7]=_(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),s(g,{onClick:e[5]||(e[5]=i=>p(y).go(-1))},{default:r(()=>[...e[8]||(e[8]=[_("انصراف",-1)])]),_:1}),s(g,{type:"primary",class:"form-submit",loading:m.value,onClick:b},{icon:r(()=>[s(p(q))]),default:r(()=>[e[9]||(e[9]=_(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),te=N(L,[["__scopeId","data-v-e6b495e6"]]);export{te as S}; +import{d as $,x as S,y as c,a as V,w as r,k as D,m as x,z as C,r as d,o as I,c as s,p as l,h as p,t as R,V as j,f as _,W as q,H as B,l as E,G as k,_ as N}from"./index-eLNLLYwC.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-K2atGUyk.js";import{D as z}from"./DateInput-D9Jh1loF.js";import{U as F}from"./UserOutlined-B4M5rNrX.js";const G={class:"pf-layout pf-layout--single"},H={class:"pf-main"},Q={class:"pf-section"},T={class:"pf-section__head"},W={class:"pf-section__icon"},A={class:"pf-grid-2"},J={class:"pf-actions"},K={class:"pf-actions__hint"},v="لطفا مقدار را وارد کنید",L=$({__name:"singleCustomer",setup(P){const w=D(),y=E(),u=w.params.id,m=x(!1),h=x([]),t=C({fname:"",lname:"",phone:"",city_id:void 0,birth_day:""}),n=C({});async function b(){var a,e;if(Object.keys(n).forEach(o=>delete n[o]),t.fname||(n.fname=v),t.lname||(n.lname=v),t.phone||(n.phone=v),!Object.keys(n).length)try{m.value=!0;const o={...t,name:`${t.fname} ${t.lname}`.trim(),mobile:t.phone};u?await c.put(`single/${u}`,o):await c.post("single",o),k.info("اطلاعات با موفقیت به ثبت رسید."),y.go(-1)}catch(o){k.error(((e=(a=o==null?void 0:o.response)==null?void 0:a.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return S(async()=>{try{const{data:a}=await c.post("cities/list");h.value=a.rows??[]}catch(a){console.log(a)}if(u)try{const{data:a}=await c.get(`customer/${u}`);Object.assign(t,{fname:a.fname??"",lname:a.lname??"",phone:a.mobile??"",city_id:a.city_id??void 0,birth_day:a.birth_day??""})}catch(a){console.log(a)}}),(a,e)=>{const o=d("a-input"),f=d("a-form-item"),g=d("a-button"),U=d("a-form"),O=d("a-spin");return I(),V(O,{spinning:m.value},{default:r(()=>[s(U,{layout:"vertical",class:"pf-form",onSubmit:B(b,["prevent"])},{default:r(()=>[l("div",G,[l("div",H,[l("section",Q,[l("div",T,[l("span",W,[s(p(F))]),l("div",null,[l("h3",null,R(p(u)?"ویرایش مشتری":"افزودن مشتری"),1),e[6]||(e[6]=l("p",null,"مشخصات مشتری تک",-1))])]),l("div",A,[s(f,{label:"نام ",required:"","validate-status":n.fname?"error":"",help:n.fname},{default:r(()=>[s(o,{value:t.fname,"onUpdate:value":e[0]||(e[0]=i=>t.fname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"نام خانوادگی",required:"","validate-status":n.lname?"error":"",help:n.lname},{default:r(()=>[s(o,{value:t.lname,"onUpdate:value":e[1]||(e[1]=i=>t.lname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"شماره تلفن همراه",required:"","validate-status":n.phone?"error":"",help:n.phone},{default:r(()=>[s(o,{value:t.phone,"onUpdate:value":e[2]||(e[2]=i=>t.phone=i),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),s(z,{"model-value":t.birth_day||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[3]||(e[3]=i=>t.birth_day=i??"")},null,8,["model-value"]),s(f,{label:"شهر",class:"pf-span-all mb-0"},{default:r(()=>[s(M,{value:t.city_id,"onUpdate:value":e[4]||(e[4]=i=>t.city_id=i),cities:h.value},null,8,["value","cities"])]),_:1})])])])]),l("div",J,[l("span",K,[s(p(j)),e[7]||(e[7]=_(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),s(g,{onClick:e[5]||(e[5]=i=>p(y).go(-1))},{default:r(()=>[...e[8]||(e[8]=[_("انصراف",-1)])]),_:1}),s(g,{type:"primary",class:"form-submit",loading:m.value,onClick:b},{icon:r(()=>[s(p(q))]),default:r(()=>[e[9]||(e[9]=_(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),te=N(L,[["__scopeId","data-v-e6b495e6"]]);export{te as S}; diff --git a/apps/admin-panel/dist/assets/useDeleteHandler-CdwhuWqX.js b/apps/admin-panel/dist/assets/useDeleteHandler-BHXHWuUG.js similarity index 86% rename from apps/admin-panel/dist/assets/useDeleteHandler-CdwhuWqX.js rename to apps/admin-panel/dist/assets/useDeleteHandler-BHXHWuUG.js index edf9d0e..3512d84 100644 --- a/apps/admin-panel/dist/assets/useDeleteHandler-CdwhuWqX.js +++ b/apps/admin-panel/dist/assets/useDeleteHandler-BHXHWuUG.js @@ -1 +1 @@ -import{y as r,G as f,M as m}from"./index-DajPj7Ec.js";function M(o){const{onSuccess:n,successMessage:i="با موفقیت حذف شد",successType:u="success",fallbackErrorMessage:l="خطا در حذف"}=o;async function d(a,e){var t,c;try{(e==null?void 0:e.method)==="post"?await r.post(a):await r.delete(a),f[u](i),await n()}catch(s){m.error({title:((c=(t=s==null?void 0:s.response)==null?void 0:t.data)==null?void 0:c.message)??l,okText:"بستن"})}}return{remove:d}}export{M as u}; +import{y as r,G as f,M as m}from"./index-eLNLLYwC.js";function M(o){const{onSuccess:n,successMessage:i="با موفقیت حذف شد",successType:u="success",fallbackErrorMessage:l="خطا در حذف"}=o;async function d(a,e){var t,c;try{(e==null?void 0:e.method)==="post"?await r.post(a):await r.delete(a),f[u](i),await n()}catch(s){m.error({title:((c=(t=s==null?void 0:s.response)==null?void 0:t.data)==null?void 0:c.message)??l,okText:"بستن"})}}return{remove:d}}export{M as u}; diff --git a/apps/admin-panel/dist/assets/user-CB1sVp_3.js b/apps/admin-panel/dist/assets/user-B7WvnXNF.js similarity index 93% rename from apps/admin-panel/dist/assets/user-CB1sVp_3.js rename to apps/admin-panel/dist/assets/user-B7WvnXNF.js index 2acd32f..df74e47 100644 --- a/apps/admin-panel/dist/assets/user-CB1sVp_3.js +++ b/apps/admin-panel/dist/assets/user-B7WvnXNF.js @@ -1 +1 @@ -import{a as R,b as f,X as D}from"./model-CR-NjhTP.js";import{d as G,a as v,w as t,r as n,o as r,c as a,h as w,Q as M,b as y,f as l,t as c,F as x,i as O,m as b,y as g,G as C,_ as Q}from"./index-DajPj7Ec.js";import"./filters-gmIfX3-G.js";import"./index-BAamWbCu.js";import"./SettingOutlined-BBdK6RkP.js";function U(){const d=new R("admin/misc/notify/list","لیست نوتیفیکیشن های دریافتی");return d.add(new f("id","شماره")),d.add(new f("title","عنوان")),d.add(new f("text","متن").noSort()),d.add(new f("opt","عملیات").noSort().renderSlot("opt")),d.noFilters(),d}const j={key:0},q=G({__name:"user",setup(d){const I=U(),S=b(null),m=b(!1),o=b(void 0),$=[{title:"مشتری",dataIndex:"customer"},{title:"وضعیت",dataIndex:"is_read"}];async function z(u){const{data:e}=await g.get(`notify/${u.id}`);o.value=e,m.value=!0}async function N(u){var e,_;try{await g.get(`notify/read/${u.id}`),u.is_read=!0,o.value&&(o.value.read_count+=1),C.success("علامت‌گذاری شد")}catch(s){C.error(((_=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:_.message)??"خطا")}}return(u,e)=>{const _=n("a-tooltip"),s=n("a-descriptions-item"),X=n("a-descriptions"),B=n("a-tag"),k=n("a-button"),F=n("a-table"),T=n("a-empty"),V=n("a-modal"),E=n("a-card");return r(),v(E,{title:"لیست نوتیفیکیشن های دریافتی",class:"page-card"},{default:t(()=>[a(D,{ref_key:"tbl",ref:S,model:w(I),"mobile-cards":""},{opt:t(({record:i})=>[a(_,{title:"مشاهده"},{default:t(()=>[a(w(M),{class:"cursor-pointer mx-1 text-primary",onClick:p=>z(i)},null,8,["onClick"])]),_:2},1024)]),_:1},8,["model"]),a(V,{open:m.value,"onUpdate:open":e[1]||(e[1]=i=>m.value=i),title:"مشاهده نوتیفیکیشن",width:"60%","wrap-class-name":"detail-modal"},{footer:t(()=>[a(k,{onClick:e[0]||(e[0]=i=>m.value=!1)},{default:t(()=>[...e[4]||(e[4]=[l("بستن",-1)])]),_:1})]),default:t(()=>[o.value?(r(),y("div",j,[a(X,{bordered:"",size:"small",column:1},{default:t(()=>[a(s,{label:"عنوان"},{default:t(()=>[l(c(o.value.title),1)]),_:1}),a(s,{label:"متن"},{default:t(()=>[l(c(o.value.body),1)]),_:1}),a(s,{label:"ارسال کننده"},{default:t(()=>[l(c(o.value.sender??"-"),1)]),_:1}),a(s,{label:"خوانده شده"},{default:t(()=>[l(c(o.value.read_count)+" از "+c(o.value.total_count),1)]),_:1})]),_:1}),a(F,{class:"mt-4",size:"small","data-source":o.value.recipients,columns:$,pagination:{pageSize:10},"row-key":"id"},{bodyCell:t(({column:i,record:p})=>[i.dataIndex==="is_read"?(r(),y(x,{key:0},[p.is_read?(r(),v(B,{key:0,color:"green"},{default:t(()=>[...e[2]||(e[2]=[l("خوانده شده",-1)])]),_:1})):(r(),v(k,{key:1,size:"small",onClick:A=>N(p)},{default:t(()=>[...e[3]||(e[3]=[l("علامت‌گذاری",-1)])]),_:1},8,["onClick"]))],64)):i.dataIndex==="customer"?(r(),y(x,{key:1},[l(c(p.customer.name),1)],64)):O("",!0)]),_:1},8,["data-source"])])):(r(),v(T,{key:1}))]),_:1},8,["open"])]),_:1})}}}),W=Q(q,[["__scopeId","data-v-59aa3738"]]);export{W as default}; +import{a as R,b as f,X as D}from"./model-btNVLLyF.js";import{d as G,a as v,w as t,r as n,o as r,c as a,h as w,Q as M,b as y,f as l,t as c,F as x,i as O,m as b,y as g,G as C,_ as Q}from"./index-eLNLLYwC.js";import"./filters-BMytoA2k.js";import"./index-CKaD48iT.js";import"./SettingOutlined-DibNCEeh.js";function U(){const d=new R("admin/misc/notify/list","لیست نوتیفیکیشن های دریافتی");return d.add(new f("id","شماره")),d.add(new f("title","عنوان")),d.add(new f("text","متن").noSort()),d.add(new f("opt","عملیات").noSort().renderSlot("opt")),d.noFilters(),d}const j={key:0},q=G({__name:"user",setup(d){const I=U(),S=b(null),m=b(!1),o=b(void 0),$=[{title:"مشتری",dataIndex:"customer"},{title:"وضعیت",dataIndex:"is_read"}];async function z(u){const{data:e}=await g.get(`notify/${u.id}`);o.value=e,m.value=!0}async function N(u){var e,_;try{await g.get(`notify/read/${u.id}`),u.is_read=!0,o.value&&(o.value.read_count+=1),C.success("علامت‌گذاری شد")}catch(s){C.error(((_=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:_.message)??"خطا")}}return(u,e)=>{const _=n("a-tooltip"),s=n("a-descriptions-item"),X=n("a-descriptions"),B=n("a-tag"),k=n("a-button"),F=n("a-table"),T=n("a-empty"),V=n("a-modal"),E=n("a-card");return r(),v(E,{title:"لیست نوتیفیکیشن های دریافتی",class:"page-card"},{default:t(()=>[a(D,{ref_key:"tbl",ref:S,model:w(I),"mobile-cards":""},{opt:t(({record:i})=>[a(_,{title:"مشاهده"},{default:t(()=>[a(w(M),{class:"cursor-pointer mx-1 text-primary",onClick:p=>z(i)},null,8,["onClick"])]),_:2},1024)]),_:1},8,["model"]),a(V,{open:m.value,"onUpdate:open":e[1]||(e[1]=i=>m.value=i),title:"مشاهده نوتیفیکیشن",width:"60%","wrap-class-name":"detail-modal"},{footer:t(()=>[a(k,{onClick:e[0]||(e[0]=i=>m.value=!1)},{default:t(()=>[...e[4]||(e[4]=[l("بستن",-1)])]),_:1})]),default:t(()=>[o.value?(r(),y("div",j,[a(X,{bordered:"",size:"small",column:1},{default:t(()=>[a(s,{label:"عنوان"},{default:t(()=>[l(c(o.value.title),1)]),_:1}),a(s,{label:"متن"},{default:t(()=>[l(c(o.value.body),1)]),_:1}),a(s,{label:"ارسال کننده"},{default:t(()=>[l(c(o.value.sender??"-"),1)]),_:1}),a(s,{label:"خوانده شده"},{default:t(()=>[l(c(o.value.read_count)+" از "+c(o.value.total_count),1)]),_:1})]),_:1}),a(F,{class:"mt-4",size:"small","data-source":o.value.recipients,columns:$,pagination:{pageSize:10},"row-key":"id"},{bodyCell:t(({column:i,record:p})=>[i.dataIndex==="is_read"?(r(),y(x,{key:0},[p.is_read?(r(),v(B,{key:0,color:"green"},{default:t(()=>[...e[2]||(e[2]=[l("خوانده شده",-1)])]),_:1})):(r(),v(k,{key:1,size:"small",onClick:A=>N(p)},{default:t(()=>[...e[3]||(e[3]=[l("علامت‌گذاری",-1)])]),_:1},8,["onClick"]))],64)):i.dataIndex==="customer"?(r(),y(x,{key:1},[l(c(p.customer.name),1)],64)):O("",!0)]),_:1},8,["data-source"])])):(r(),v(T,{key:1}))]),_:1},8,["open"])]),_:1})}}}),W=Q(q,[["__scopeId","data-v-59aa3738"]]);export{W as default}; diff --git a/apps/admin-panel/dist/assets/wage-B6j_dXIJ.js b/apps/admin-panel/dist/assets/wage-DTUfXfWe.js similarity index 99% rename from apps/admin-panel/dist/assets/wage-B6j_dXIJ.js rename to apps/admin-panel/dist/assets/wage-DTUfXfWe.js index e98dde7..b463dfa 100644 --- a/apps/admin-panel/dist/assets/wage-B6j_dXIJ.js +++ b/apps/admin-panel/dist/assets/wage-DTUfXfWe.js @@ -1 +1 @@ -import{m as We}from"./index-BAamWbCu.js";import{d as Ae,u as Le,n as Me,x as De,b,c as s,w as o,a as h,m as $,y as K,G as Q,r as c,z as X,o as m,p as l,f as d,t as r,i as k,F as C,e as S,q as T,s as y,_ as Ve}from"./index-DajPj7Ec.js";const Ye={key:0,class:"wage page-card"},Fe={class:"status"},Ee={class:"formula","aria-live":"polite"},He={key:0,class:"formula__op"},Re={key:0,class:"chip chip--zero"},Ie={key:1,class:"formula__limits"},Je={class:"term__head"},Ke={class:"term__label"},Qe={class:"hint"},Xe={key:0,class:"term__body"},Ze={class:"term"},et={class:"term__body"},tt={class:"limits"},at={class:"limit"},lt={class:"limit"},st={class:"limit"},nt={class:"sample"},ot={key:1,class:"cmp"},ut={key:2,class:"hint warn"},it={class:"hist__meta"},rt={class:"hint"},mt=Ae({__name:"wage",setup(dt){const ge=Le(),ye=e=>!!ge.hasPermission(e),O=$(!1),W=$(!1),i=$(null),n=X({version:1,variantCoef:"1",customerCoef:"1",promotionCoef:"1",promotionPick:"max",constant:"0",min:null,max:null,decimals:null}),f=X({rashWeightGrams:10,quantity:1,variantPercent:7,customerPercent:3,promotionPercent:0}),w=$(null),U=$(""),P=$(!1),A=(e,t)=>{var g,p;const v=(p=(g=e==null?void 0:e.response)==null?void 0:g.data)==null?void 0:p.message;return Array.isArray(v)?v.join("، "):v??t},Z=e=>e===null?null:Number(e),j=e=>e==null||Number.isNaN(e)?"0":String(e),ee=X({variant:1,customer:1,promotion:1});function L(e){const t=`${e}Coef`,v=y({get:()=>Number(n[t])!==0,set:p=>{p||(ee[e]=Number(n[t])||1),n[t]=p?String(ee[e]||1):"0"}}),g=y({get:()=>Number(n[t]),set:p=>n[t]=j(p)});return{enabled:v,coef:g}}const ke=[{key:"variant",label:"اجرت مدل",sign:"+",help:"اجرتی که روی هر مدل (واریانت) کالا ثبت شده است.",...L("variant")},{key:"customer",label:"درصد اختصاصی مشتری",sign:"+",help:"درصدی که روی پرونده‌ی هر مشتری ثبت شده (معمولاً ۳).",...L("customer")},{key:"promotion",label:"تخفیف فعال",sign:"−",help:"تخفیف‌های فعالِ مربوط به همان کالا، دسته‌بندی یا برند. سیستم قدیم فقط بیشترین را کم می‌کرد.",...L("promotion")}],te=y({get:()=>Number(n.constant),set:e=>n.constant=j(e)}),M=y({get:()=>n.min!==null,set:e=>n.min=e?n.min??"0":null}),D=y({get:()=>n.max!==null,set:e=>n.max=e?n.max??"20":null}),V=y({get:()=>n.decimals!==null,set:e=>n.decimals=e?n.decimals??2:null}),ae=y({get:()=>Z(n.min),set:e=>n.min=j(e)}),le=y({get:()=>Z(n.max),set:e=>n.max=j(e)}),se=y({get:()=>n.decimals,set:e=>n.decimals=e??0}),_=e=>String(e).replace(/\d/g,t=>"۰۱۲۳۴۵۶۷۸۹"[Number(t)]).replace(".","٫"),Y=e=>Number(e)===1?"":`${_(e)} × `;function ne(e){const t=[];return Number(e.variantCoef)&&t.push({key:"variant",sign:"+",text:`${Y(e.variantCoef)}اجرت مدل`}),Number(e.customerCoef)&&t.push({key:"customer",sign:"+",text:`${Y(e.customerCoef)}درصد مشتری`}),Number(e.promotionCoef)&&t.push({key:"promotion",sign:"−",text:`${Y(e.promotionCoef)}${e.promotionPick==="max"?"بیشترین تخفیف":"جمع تخفیف‌ها"}`}),Number(e.constant)&&t.push({key:"constant",sign:Number(e.constant)<0?"−":"+",text:`${_(Math.abs(Number(e.constant)))}٪`}),t}const oe=y(()=>ne(n));function ue(e){const t=[];return e.min!==null&&t.push(`حداقل ${_(e.min)}٪`),e.max!==null&&t.push(`حداکثر ${_(e.max)}٪`),e.decimals!==null&&t.push(`گرد تا ${_(e.decimals)} رقم اعشار`),t.join(" · ")}const ie=y(()=>ue(n));function re(e){const v=ne(e).map((p,R)=>`${R>0||p.sign==="−"?` ${p.sign} `:""}${p.text}`).join("")||"۰",g=ue(e);return`اجرت نهایی = ${v}${g?` (${g})`:""}`}const me=e=>`${_(e.rashWeightGrams)} گرم × ${_(e.quantity)}، اجرت مدل ${_(e.variantPercent)}٪، مشتری ${_(e.customerPercent)}٪، تخفیف ${_(e.promotionPercent)}٪`,N=e=>`${_(Number(e))}٪`,G=e=>`${_(Number(e))} گرم`,de=e=>e?_(We(e).format("jYYYY/jM/jD HH:mm")):"",xe=[{key:"v",label:"سهم اجرت مدل",fmt:e=>N(e.variantTerm)},{key:"c",label:"سهم درصد مشتری",fmt:e=>N(e.customerTerm)},{key:"p",label:"سهم تخفیف (کم می‌شود)",fmt:e=>N(e.promotionTerm)},{key:"k",label:"مقدار ثابت",fmt:e=>N(e.constant)},{key:"b",label:"قبل از محدودیت",fmt:e=>N(e.beforeLimits)},{key:"f",label:"اجرت نهایی",fmt:e=>N(e.finalPercent),strong:!0},{key:"w",label:"اجرت به گرم",fmt:e=>G(e.wageGrams)},{key:"t",label:"وزن کل فاکتور",fmt:e=>G(e.totalGrams),strong:!0}],ce=(e,t)=>["variantCoef","customerCoef","promotionCoef","constant","min","max"].every(v=>(e[v]===null?null:Number(e[v]))===(t[v]===null?null:Number(t[v])))&&e.promotionPick===t.promotionPick&&e.decimals===t.decimals,B=y(()=>!!i.value&&!ce(n,i.value.formula)),we=e=>!!i.value&&ce(e,i.value.legacy),pe=y(()=>B.value&&P.value&&!U.value&&!!w.value);function q(e){Object.assign(n,{...e})}function F(e){Object.assign(f,{rashWeightGrams:Number(e.rashWeightGrams),quantity:Number(e.quantity),variantPercent:Number(e.variantPercent),customerPercent:Number(e.customerPercent),promotionPercent:Number(e.promotionPercent)})}async function Ne(){O.value=!0;try{const{data:e}=await K.get("admin/pricing/wage-formula");i.value=e,q(e.formula),F(e.sample),P.value=!1}catch(e){Q.error(A(e,"خطا در دریافت فرمول اجرت"))}finally{O.value=!1}}let E=0,H=null;async function ve(){const e=++E;try{const{data:t}=await K.post("admin/pricing/wage-formula/preview",{formula:{...n},sample:{...f}});if(e!==E)return;w.value=t,U.value=""}catch(t){if(e!==E)return;U.value=A(t,"محاسبه‌ی نمونه انجام نشد")}}Me([()=>({...n}),()=>({...f})],()=>{P.value=!1,H&&clearTimeout(H),H=setTimeout(ve,250)},{deep:!0});function he(){i.value&&q(i.value.legacy)}function Pe(){i.value&&q(i.value.formula)}function $e(){i.value&&F(i.value.sample)}async function Ce(){W.value=!0;try{const{data:e}=await K.put("admin/pricing/wage-formula",{formula:{...n},sample:{...f}});i.value=e,q(e.formula),F(e.sample),P.value=!1,Q.success("فرمول اجرت ثبت شد و از همین حالا اعمال می‌شود")}catch(e){Q.error(A(e,"خطا در ثبت فرمول"))}finally{W.value=!1}}return De(async()=>{await Ne(),await ve()}),(e,t)=>{const v=c("a-tag"),g=c("a-card"),p=c("a-button"),R=c("a-switch"),x=c("a-input-number"),fe=c("a-radio-button"),Ue=c("a-radio-group"),Ge=c("a-divider"),z=c("a-checkbox"),be=c("a-col"),I=c("a-alert"),Te=c("a-popconfirm"),je=c("a-row"),J=c("a-descriptions-item"),Be=c("a-descriptions"),qe=c("a-collapse-panel"),ze=c("a-collapse"),Se=c("a-spin"),Oe=c("a-result");return ye("config.wage")?(m(),b("div",Ye,[s(Se,{spinning:O.value},{default:o(()=>[s(g,{class:"mb-4",bordered:!1},{default:o(()=>{var a;return[l("div",Fe,[t[15]||(t[15]=l("div",null,[l("div",{class:"status__title"},"فرمول اجرت سفارش‌های اپلیکیشن"),l("div",{class:"hint"}," اجرتی که مشتری در اپ می‌بیند و اجرتی که روی فاکتور می‌آید، هر دو با همین فرمول در سرور حساب می‌شوند. اجرتی که اپراتور در پنل برای یک سفارش دستی وارد می‌کند، دست نمی‌خورد. ")],-1)),(a=i.value)!=null&&a.isLegacyDefault?(m(),h(v,{key:0,color:"blue"},{default:o(()=>[...t[14]||(t[14]=[d("فرمول سیستم قدیم (پیش‌فرض)",-1)])]),_:1})):i.value?(m(),h(v,{key:1,color:"green"},{default:o(()=>{var u;return[d(" تأییدشده در "+r(de(i.value.approvedAt))+" — "+r((u=i.value.approvedBy)==null?void 0:u.name),1)]}),_:1})):k("",!0)])]}),_:1}),s(je,{gutter:[16,16]},{default:o(()=>[s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"ساختار فرمول"},{extra:o(()=>[s(p,{size:"small",disabled:we(n),onClick:he},{default:o(()=>[...t[16]||(t[16]=[d("بازگشت به فرمول سیستم قدیم",-1)])]),_:1},8,["disabled"])]),default:o(()=>[l("div",Ee,[t[17]||(t[17]=l("span",{class:"formula__lhs"},"اجرت نهایی =",-1)),(m(!0),b(C,null,S(oe.value,(a,u)=>(m(),b(C,{key:a.key},[u>0||a.sign==="−"?(m(),b("span",He,r(a.sign),1)):k("",!0),l("span",{class:T(["chip",`chip--${a.key}`])},r(a.text),3)],64))),128)),oe.value.length?k("",!0):(m(),b("span",Re,"۰")),ie.value?(m(),b("div",Ie,r(ie.value),1)):k("",!0)]),(m(),b(C,null,S(ke,a=>l("div",{class:"term",key:a.key},[l("div",Je,[s(R,{checked:a.enabled.value,"onUpdate:checked":u=>a.enabled.value=u,size:"small"},null,8,["checked","onUpdate:checked"]),l("span",Ke,r(a.label),1),l("span",{class:T(["chip chip--sm",`chip--${a.key}`])},r(a.sign),3)]),l("div",Qe,r(a.help),1),a.enabled.value?(m(),b("div",Xe,[t[20]||(t[20]=l("span",null,"ضریب",-1)),s(x,{value:a.coef.value,"onUpdate:value":u=>a.coef.value=u,step:.1,min:-10,max:10,class:"num"},null,8,["value","onUpdate:value"]),a.key==="promotion"?(m(),h(Ue,{key:0,value:n.promotionPick,"onUpdate:value":t[0]||(t[0]=u=>n.promotionPick=u),size:"small","button-style":"solid"},{default:o(()=>[s(fe,{value:"max"},{default:o(()=>[...t[18]||(t[18]=[d("بیشترین تخفیف",-1)])]),_:1}),s(fe,{value:"sum"},{default:o(()=>[...t[19]||(t[19]=[d("جمع تخفیف‌ها",-1)])]),_:1})]),_:1},8,["value"])):k("",!0)])):k("",!0)])),64)),l("div",Ze,[t[21]||(t[21]=l("div",{class:"term__head"},[l("span",{class:"term__label"},"مقدار ثابت (درصد)"),l("span",{class:"chip chip--sm chip--constant"},"±")],-1)),t[22]||(t[22]=l("div",{class:"hint"},"به همه‌ی اجرت‌ها اضافه می‌شود؛ عدد منفی کم می‌کند. صفر یعنی بی‌اثر.",-1)),l("div",et,[s(x,{value:te.value,"onUpdate:value":t[1]||(t[1]=a=>te.value=a),step:.1,min:-100,max:100,class:"num","addon-after":"٪"},null,8,["value"])])]),s(Ge,{orientation:"right",class:"divider"},{default:o(()=>[...t[23]||(t[23]=[d("محدودیت و گرد کردن",-1)])]),_:1}),l("div",tt,[l("div",at,[s(z,{checked:M.value,"onUpdate:checked":t[2]||(t[2]=a=>M.value=a)},{default:o(()=>[...t[24]||(t[24]=[d("حداقل اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:ae.value,"onUpdate:value":t[3]||(t[3]=a=>ae.value=a),disabled:!M.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",lt,[s(z,{checked:D.value,"onUpdate:checked":t[4]||(t[4]=a=>D.value=a)},{default:o(()=>[...t[25]||(t[25]=[d("حداکثر اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:le.value,"onUpdate:value":t[5]||(t[5]=a=>le.value=a),disabled:!D.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",st,[s(z,{checked:V.value,"onUpdate:checked":t[6]||(t[6]=a=>V.value=a)},{default:o(()=>[...t[26]||(t[26]=[d("گرد کردن",-1)])]),_:1},8,["checked"]),s(x,{value:se.value,"onUpdate:value":t[7]||(t[7]=a=>se.value=a),disabled:!V.value,min:0,max:4,precision:0,class:"num","addon-after":"رقم اعشار"},null,8,["value","disabled"])])])]),_:1})]),_:1}),s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"نمونه — نتیجه را قبل از ثبت ببینید"},{extra:o(()=>[s(p,{size:"small",type:"link",disabled:!i.value,onClick:$e},{default:o(()=>[...t[27]||(t[27]=[d("نمونه‌ی ثبت‌شده",-1)])]),_:1},8,["disabled"])]),default:o(()=>{var a;return[l("div",nt,[l("label",null,[t[28]||(t[28]=d("وزن خام",-1)),s(x,{value:f.rashWeightGrams,"onUpdate:value":t[8]||(t[8]=u=>f.rashWeightGrams=u),min:0,step:.1,class:"num","addon-after":"گرم"},null,8,["value"])]),l("label",null,[t[29]||(t[29]=d("تعداد",-1)),s(x,{value:f.quantity,"onUpdate:value":t[9]||(t[9]=u=>f.quantity=u),min:1,max:1e3,precision:0,class:"num"},null,8,["value"])]),l("label",null,[t[30]||(t[30]=d("اجرت مدل",-1)),s(x,{value:f.variantPercent,"onUpdate:value":t[10]||(t[10]=u=>f.variantPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[31]||(t[31]=d("درصد مشتری",-1)),s(x,{value:f.customerPercent,"onUpdate:value":t[11]||(t[11]=u=>f.customerPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[32]||(t[32]=d("تخفیف فعال",-1)),s(x,{value:f.promotionPercent,"onUpdate:value":t[12]||(t[12]=u=>f.promotionPercent=u),min:0,max:100,step:.5,class:"num","addon-after":"٪"},null,8,["value"])])]),U.value?(m(),h(I,{key:0,type:"error","show-icon":"",class:"mb-4",message:U.value},null,8,["message"])):k("",!0),w.value?(m(),b("table",ot,[l("thead",null,[l("tr",null,[t[33]||(t[33]=l("th",null,null,-1)),t[34]||(t[34]=l("th",null,"فرمول فعلی",-1)),l("th",{class:T({changed:B.value})},r(B.value?"پیش‌نویس شما":"پیش‌نویس (بدون تغییر)"),3)])]),l("tbody",null,[(m(),b(C,null,S(xe,u=>l("tr",{key:u.key,class:T({strong:u.strong})},[l("td",null,r(u.label),1),l("td",null,r(u.fmt(w.value.current)),1),l("td",{class:T({diff:u.fmt(w.value.current)!==u.fmt(w.value.draft)})},r(u.fmt(w.value.draft)),3)],2)),64))])])):k("",!0),(a=w.value)!=null&&a.draft.limitedBy?(m(),b("div",ut," در پیش‌نویس، "+r(w.value.draft.limitedBy==="min"?"حداقل":"حداکثر")+" اجرت روی نتیجه اثر گذاشت. ",1)):k("",!0)]}),_:1}),s(g,{class:"mt-4",title:"تأیید و ثبت"},{default:o(()=>[B.value?(m(),b(C,{key:1},[s(I,{type:"warning","show-icon":"",class:"mb-4",message:"تا «تأیید و ثبت» نزنید هیچ چیزی عوض نمی‌شود.",description:"بعد از ثبت، همه‌ی سفارش‌های جدید اپ و اجرتی که اپ نشان می‌دهد با فرمول جدید حساب می‌شوند. سفارش‌های ثبت‌شده‌ی قبلی تغییری نمی‌کنند."}),s(z,{checked:P.value,"onUpdate:checked":t[13]||(t[13]=a=>P.value=a),class:"mb-4"},{default:o(()=>[...t[35]||(t[35]=[d(" نتیجه‌ی نمونه را بررسی کردم و درست است. ",-1)])]),_:1},8,["checked"]),l("div",null,[s(Te,{title:"فرمول جدید از همین حالا برای سفارش‌های اپ اعمال شود؟","ok-text":"بله، ثبت شود","cancel-text":"انصراف",disabled:!pe.value,onConfirm:Ce},{default:o(()=>[s(p,{type:"primary",disabled:!pe.value,loading:W.value},{default:o(()=>[...t[36]||(t[36]=[d("تأیید و ثبت فرمول",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["disabled"]),s(p,{class:"ms",onClick:Pe},{default:o(()=>[...t[37]||(t[37]=[d("لغو تغییرات",-1)])]),_:1})])],64)):(m(),h(I,{key:0,type:"info","show-icon":"",message:"تغییری نسبت به فرمول فعلی نداده‌اید.",class:"mb-4"}))]),_:1})]),_:1})]),_:1}),i.value?(m(),h(g,{key:0,class:"mt-4",title:"نمونه‌ی مرجعِ فرمول فعلی"},{default:o(()=>[t[38]||(t[38]=l("div",{class:"hint mb-4"}," این نمونه همراه فرمول فعلی ثبت شده است؛ هر کس فرمول را ببیند می‌داند با چه عددی بررسی و تأیید شده. ",-1)),s(Be,{size:"small",bordered:"",column:{xs:1,md:3}},{default:o(()=>[s(J,{label:"فرمول"},{default:o(()=>[d(r(re(i.value.formula)),1)]),_:1}),s(J,{label:"نمونه"},{default:o(()=>[d(r(me(i.value.sample)),1)]),_:1}),s(J,{label:"نتیجه"},{default:o(()=>[d(" اجرت "+r(N(i.value.result.finalPercent))+" — "+r(G(i.value.result.wageGrams))+" اجرت، "+r(G(i.value.result.totalGrams))+" وزن کل ",1)]),_:1})]),_:1}),i.value.history.length?(m(),h(ze,{key:0,ghost:"",class:"mt-4"},{default:o(()=>[s(qe,{key:"h",header:`نسخه‌های قبلی (${i.value.history.length})`},{default:o(()=>[(m(!0),b(C,null,S(i.value.history,(a,u)=>{var _e;return m(),b("div",{key:u,class:"hist"},[l("div",it,r(de(a.approvedAt))+" — "+r((_e=a.approvedBy)==null?void 0:_e.name),1),l("div",null,r(re(a.formula)),1),l("div",rt,r(me(a.sample))+" ← اجرت "+r(N(a.result.finalPercent))+"، وزن کل "+r(G(a.result.totalGrams)),1)])}),128))]),_:1},8,["header"])]),_:1})):k("",!0)]),_:1})):k("",!0)]),_:1},8,["spinning"])])):(m(),h(Oe,{key:1,status:"403",title:"دسترسی ندارید","sub-title":"این صفحه دسترسی «اجرت» می‌خواهد."}))}}}),vt=Ve(mt,[["__scopeId","data-v-3caccb79"]]);export{vt as default}; +import{m as We}from"./index-CKaD48iT.js";import{d as Ae,u as Le,n as Me,x as De,b,c as s,w as o,a as h,m as $,y as K,G as Q,r as c,z as X,o as m,p as l,f as d,t as r,i as k,F as C,e as S,q as T,s as y,_ as Ve}from"./index-eLNLLYwC.js";const Ye={key:0,class:"wage page-card"},Fe={class:"status"},Ee={class:"formula","aria-live":"polite"},He={key:0,class:"formula__op"},Re={key:0,class:"chip chip--zero"},Ie={key:1,class:"formula__limits"},Je={class:"term__head"},Ke={class:"term__label"},Qe={class:"hint"},Xe={key:0,class:"term__body"},Ze={class:"term"},et={class:"term__body"},tt={class:"limits"},at={class:"limit"},lt={class:"limit"},st={class:"limit"},nt={class:"sample"},ot={key:1,class:"cmp"},ut={key:2,class:"hint warn"},it={class:"hist__meta"},rt={class:"hint"},mt=Ae({__name:"wage",setup(dt){const ge=Le(),ye=e=>!!ge.hasPermission(e),O=$(!1),W=$(!1),i=$(null),n=X({version:1,variantCoef:"1",customerCoef:"1",promotionCoef:"1",promotionPick:"max",constant:"0",min:null,max:null,decimals:null}),f=X({rashWeightGrams:10,quantity:1,variantPercent:7,customerPercent:3,promotionPercent:0}),w=$(null),U=$(""),P=$(!1),A=(e,t)=>{var g,p;const v=(p=(g=e==null?void 0:e.response)==null?void 0:g.data)==null?void 0:p.message;return Array.isArray(v)?v.join("، "):v??t},Z=e=>e===null?null:Number(e),j=e=>e==null||Number.isNaN(e)?"0":String(e),ee=X({variant:1,customer:1,promotion:1});function L(e){const t=`${e}Coef`,v=y({get:()=>Number(n[t])!==0,set:p=>{p||(ee[e]=Number(n[t])||1),n[t]=p?String(ee[e]||1):"0"}}),g=y({get:()=>Number(n[t]),set:p=>n[t]=j(p)});return{enabled:v,coef:g}}const ke=[{key:"variant",label:"اجرت مدل",sign:"+",help:"اجرتی که روی هر مدل (واریانت) کالا ثبت شده است.",...L("variant")},{key:"customer",label:"درصد اختصاصی مشتری",sign:"+",help:"درصدی که روی پرونده‌ی هر مشتری ثبت شده (معمولاً ۳).",...L("customer")},{key:"promotion",label:"تخفیف فعال",sign:"−",help:"تخفیف‌های فعالِ مربوط به همان کالا، دسته‌بندی یا برند. سیستم قدیم فقط بیشترین را کم می‌کرد.",...L("promotion")}],te=y({get:()=>Number(n.constant),set:e=>n.constant=j(e)}),M=y({get:()=>n.min!==null,set:e=>n.min=e?n.min??"0":null}),D=y({get:()=>n.max!==null,set:e=>n.max=e?n.max??"20":null}),V=y({get:()=>n.decimals!==null,set:e=>n.decimals=e?n.decimals??2:null}),ae=y({get:()=>Z(n.min),set:e=>n.min=j(e)}),le=y({get:()=>Z(n.max),set:e=>n.max=j(e)}),se=y({get:()=>n.decimals,set:e=>n.decimals=e??0}),_=e=>String(e).replace(/\d/g,t=>"۰۱۲۳۴۵۶۷۸۹"[Number(t)]).replace(".","٫"),Y=e=>Number(e)===1?"":`${_(e)} × `;function ne(e){const t=[];return Number(e.variantCoef)&&t.push({key:"variant",sign:"+",text:`${Y(e.variantCoef)}اجرت مدل`}),Number(e.customerCoef)&&t.push({key:"customer",sign:"+",text:`${Y(e.customerCoef)}درصد مشتری`}),Number(e.promotionCoef)&&t.push({key:"promotion",sign:"−",text:`${Y(e.promotionCoef)}${e.promotionPick==="max"?"بیشترین تخفیف":"جمع تخفیف‌ها"}`}),Number(e.constant)&&t.push({key:"constant",sign:Number(e.constant)<0?"−":"+",text:`${_(Math.abs(Number(e.constant)))}٪`}),t}const oe=y(()=>ne(n));function ue(e){const t=[];return e.min!==null&&t.push(`حداقل ${_(e.min)}٪`),e.max!==null&&t.push(`حداکثر ${_(e.max)}٪`),e.decimals!==null&&t.push(`گرد تا ${_(e.decimals)} رقم اعشار`),t.join(" · ")}const ie=y(()=>ue(n));function re(e){const v=ne(e).map((p,R)=>`${R>0||p.sign==="−"?` ${p.sign} `:""}${p.text}`).join("")||"۰",g=ue(e);return`اجرت نهایی = ${v}${g?` (${g})`:""}`}const me=e=>`${_(e.rashWeightGrams)} گرم × ${_(e.quantity)}، اجرت مدل ${_(e.variantPercent)}٪، مشتری ${_(e.customerPercent)}٪، تخفیف ${_(e.promotionPercent)}٪`,N=e=>`${_(Number(e))}٪`,G=e=>`${_(Number(e))} گرم`,de=e=>e?_(We(e).format("jYYYY/jM/jD HH:mm")):"",xe=[{key:"v",label:"سهم اجرت مدل",fmt:e=>N(e.variantTerm)},{key:"c",label:"سهم درصد مشتری",fmt:e=>N(e.customerTerm)},{key:"p",label:"سهم تخفیف (کم می‌شود)",fmt:e=>N(e.promotionTerm)},{key:"k",label:"مقدار ثابت",fmt:e=>N(e.constant)},{key:"b",label:"قبل از محدودیت",fmt:e=>N(e.beforeLimits)},{key:"f",label:"اجرت نهایی",fmt:e=>N(e.finalPercent),strong:!0},{key:"w",label:"اجرت به گرم",fmt:e=>G(e.wageGrams)},{key:"t",label:"وزن کل فاکتور",fmt:e=>G(e.totalGrams),strong:!0}],ce=(e,t)=>["variantCoef","customerCoef","promotionCoef","constant","min","max"].every(v=>(e[v]===null?null:Number(e[v]))===(t[v]===null?null:Number(t[v])))&&e.promotionPick===t.promotionPick&&e.decimals===t.decimals,B=y(()=>!!i.value&&!ce(n,i.value.formula)),we=e=>!!i.value&&ce(e,i.value.legacy),pe=y(()=>B.value&&P.value&&!U.value&&!!w.value);function q(e){Object.assign(n,{...e})}function F(e){Object.assign(f,{rashWeightGrams:Number(e.rashWeightGrams),quantity:Number(e.quantity),variantPercent:Number(e.variantPercent),customerPercent:Number(e.customerPercent),promotionPercent:Number(e.promotionPercent)})}async function Ne(){O.value=!0;try{const{data:e}=await K.get("admin/pricing/wage-formula");i.value=e,q(e.formula),F(e.sample),P.value=!1}catch(e){Q.error(A(e,"خطا در دریافت فرمول اجرت"))}finally{O.value=!1}}let E=0,H=null;async function ve(){const e=++E;try{const{data:t}=await K.post("admin/pricing/wage-formula/preview",{formula:{...n},sample:{...f}});if(e!==E)return;w.value=t,U.value=""}catch(t){if(e!==E)return;U.value=A(t,"محاسبه‌ی نمونه انجام نشد")}}Me([()=>({...n}),()=>({...f})],()=>{P.value=!1,H&&clearTimeout(H),H=setTimeout(ve,250)},{deep:!0});function he(){i.value&&q(i.value.legacy)}function Pe(){i.value&&q(i.value.formula)}function $e(){i.value&&F(i.value.sample)}async function Ce(){W.value=!0;try{const{data:e}=await K.put("admin/pricing/wage-formula",{formula:{...n},sample:{...f}});i.value=e,q(e.formula),F(e.sample),P.value=!1,Q.success("فرمول اجرت ثبت شد و از همین حالا اعمال می‌شود")}catch(e){Q.error(A(e,"خطا در ثبت فرمول"))}finally{W.value=!1}}return De(async()=>{await Ne(),await ve()}),(e,t)=>{const v=c("a-tag"),g=c("a-card"),p=c("a-button"),R=c("a-switch"),x=c("a-input-number"),fe=c("a-radio-button"),Ue=c("a-radio-group"),Ge=c("a-divider"),z=c("a-checkbox"),be=c("a-col"),I=c("a-alert"),Te=c("a-popconfirm"),je=c("a-row"),J=c("a-descriptions-item"),Be=c("a-descriptions"),qe=c("a-collapse-panel"),ze=c("a-collapse"),Se=c("a-spin"),Oe=c("a-result");return ye("config.wage")?(m(),b("div",Ye,[s(Se,{spinning:O.value},{default:o(()=>[s(g,{class:"mb-4",bordered:!1},{default:o(()=>{var a;return[l("div",Fe,[t[15]||(t[15]=l("div",null,[l("div",{class:"status__title"},"فرمول اجرت سفارش‌های اپلیکیشن"),l("div",{class:"hint"}," اجرتی که مشتری در اپ می‌بیند و اجرتی که روی فاکتور می‌آید، هر دو با همین فرمول در سرور حساب می‌شوند. اجرتی که اپراتور در پنل برای یک سفارش دستی وارد می‌کند، دست نمی‌خورد. ")],-1)),(a=i.value)!=null&&a.isLegacyDefault?(m(),h(v,{key:0,color:"blue"},{default:o(()=>[...t[14]||(t[14]=[d("فرمول سیستم قدیم (پیش‌فرض)",-1)])]),_:1})):i.value?(m(),h(v,{key:1,color:"green"},{default:o(()=>{var u;return[d(" تأییدشده در "+r(de(i.value.approvedAt))+" — "+r((u=i.value.approvedBy)==null?void 0:u.name),1)]}),_:1})):k("",!0)])]}),_:1}),s(je,{gutter:[16,16]},{default:o(()=>[s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"ساختار فرمول"},{extra:o(()=>[s(p,{size:"small",disabled:we(n),onClick:he},{default:o(()=>[...t[16]||(t[16]=[d("بازگشت به فرمول سیستم قدیم",-1)])]),_:1},8,["disabled"])]),default:o(()=>[l("div",Ee,[t[17]||(t[17]=l("span",{class:"formula__lhs"},"اجرت نهایی =",-1)),(m(!0),b(C,null,S(oe.value,(a,u)=>(m(),b(C,{key:a.key},[u>0||a.sign==="−"?(m(),b("span",He,r(a.sign),1)):k("",!0),l("span",{class:T(["chip",`chip--${a.key}`])},r(a.text),3)],64))),128)),oe.value.length?k("",!0):(m(),b("span",Re,"۰")),ie.value?(m(),b("div",Ie,r(ie.value),1)):k("",!0)]),(m(),b(C,null,S(ke,a=>l("div",{class:"term",key:a.key},[l("div",Je,[s(R,{checked:a.enabled.value,"onUpdate:checked":u=>a.enabled.value=u,size:"small"},null,8,["checked","onUpdate:checked"]),l("span",Ke,r(a.label),1),l("span",{class:T(["chip chip--sm",`chip--${a.key}`])},r(a.sign),3)]),l("div",Qe,r(a.help),1),a.enabled.value?(m(),b("div",Xe,[t[20]||(t[20]=l("span",null,"ضریب",-1)),s(x,{value:a.coef.value,"onUpdate:value":u=>a.coef.value=u,step:.1,min:-10,max:10,class:"num"},null,8,["value","onUpdate:value"]),a.key==="promotion"?(m(),h(Ue,{key:0,value:n.promotionPick,"onUpdate:value":t[0]||(t[0]=u=>n.promotionPick=u),size:"small","button-style":"solid"},{default:o(()=>[s(fe,{value:"max"},{default:o(()=>[...t[18]||(t[18]=[d("بیشترین تخفیف",-1)])]),_:1}),s(fe,{value:"sum"},{default:o(()=>[...t[19]||(t[19]=[d("جمع تخفیف‌ها",-1)])]),_:1})]),_:1},8,["value"])):k("",!0)])):k("",!0)])),64)),l("div",Ze,[t[21]||(t[21]=l("div",{class:"term__head"},[l("span",{class:"term__label"},"مقدار ثابت (درصد)"),l("span",{class:"chip chip--sm chip--constant"},"±")],-1)),t[22]||(t[22]=l("div",{class:"hint"},"به همه‌ی اجرت‌ها اضافه می‌شود؛ عدد منفی کم می‌کند. صفر یعنی بی‌اثر.",-1)),l("div",et,[s(x,{value:te.value,"onUpdate:value":t[1]||(t[1]=a=>te.value=a),step:.1,min:-100,max:100,class:"num","addon-after":"٪"},null,8,["value"])])]),s(Ge,{orientation:"right",class:"divider"},{default:o(()=>[...t[23]||(t[23]=[d("محدودیت و گرد کردن",-1)])]),_:1}),l("div",tt,[l("div",at,[s(z,{checked:M.value,"onUpdate:checked":t[2]||(t[2]=a=>M.value=a)},{default:o(()=>[...t[24]||(t[24]=[d("حداقل اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:ae.value,"onUpdate:value":t[3]||(t[3]=a=>ae.value=a),disabled:!M.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",lt,[s(z,{checked:D.value,"onUpdate:checked":t[4]||(t[4]=a=>D.value=a)},{default:o(()=>[...t[25]||(t[25]=[d("حداکثر اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:le.value,"onUpdate:value":t[5]||(t[5]=a=>le.value=a),disabled:!D.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",st,[s(z,{checked:V.value,"onUpdate:checked":t[6]||(t[6]=a=>V.value=a)},{default:o(()=>[...t[26]||(t[26]=[d("گرد کردن",-1)])]),_:1},8,["checked"]),s(x,{value:se.value,"onUpdate:value":t[7]||(t[7]=a=>se.value=a),disabled:!V.value,min:0,max:4,precision:0,class:"num","addon-after":"رقم اعشار"},null,8,["value","disabled"])])])]),_:1})]),_:1}),s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"نمونه — نتیجه را قبل از ثبت ببینید"},{extra:o(()=>[s(p,{size:"small",type:"link",disabled:!i.value,onClick:$e},{default:o(()=>[...t[27]||(t[27]=[d("نمونه‌ی ثبت‌شده",-1)])]),_:1},8,["disabled"])]),default:o(()=>{var a;return[l("div",nt,[l("label",null,[t[28]||(t[28]=d("وزن خام",-1)),s(x,{value:f.rashWeightGrams,"onUpdate:value":t[8]||(t[8]=u=>f.rashWeightGrams=u),min:0,step:.1,class:"num","addon-after":"گرم"},null,8,["value"])]),l("label",null,[t[29]||(t[29]=d("تعداد",-1)),s(x,{value:f.quantity,"onUpdate:value":t[9]||(t[9]=u=>f.quantity=u),min:1,max:1e3,precision:0,class:"num"},null,8,["value"])]),l("label",null,[t[30]||(t[30]=d("اجرت مدل",-1)),s(x,{value:f.variantPercent,"onUpdate:value":t[10]||(t[10]=u=>f.variantPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[31]||(t[31]=d("درصد مشتری",-1)),s(x,{value:f.customerPercent,"onUpdate:value":t[11]||(t[11]=u=>f.customerPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[32]||(t[32]=d("تخفیف فعال",-1)),s(x,{value:f.promotionPercent,"onUpdate:value":t[12]||(t[12]=u=>f.promotionPercent=u),min:0,max:100,step:.5,class:"num","addon-after":"٪"},null,8,["value"])])]),U.value?(m(),h(I,{key:0,type:"error","show-icon":"",class:"mb-4",message:U.value},null,8,["message"])):k("",!0),w.value?(m(),b("table",ot,[l("thead",null,[l("tr",null,[t[33]||(t[33]=l("th",null,null,-1)),t[34]||(t[34]=l("th",null,"فرمول فعلی",-1)),l("th",{class:T({changed:B.value})},r(B.value?"پیش‌نویس شما":"پیش‌نویس (بدون تغییر)"),3)])]),l("tbody",null,[(m(),b(C,null,S(xe,u=>l("tr",{key:u.key,class:T({strong:u.strong})},[l("td",null,r(u.label),1),l("td",null,r(u.fmt(w.value.current)),1),l("td",{class:T({diff:u.fmt(w.value.current)!==u.fmt(w.value.draft)})},r(u.fmt(w.value.draft)),3)],2)),64))])])):k("",!0),(a=w.value)!=null&&a.draft.limitedBy?(m(),b("div",ut," در پیش‌نویس، "+r(w.value.draft.limitedBy==="min"?"حداقل":"حداکثر")+" اجرت روی نتیجه اثر گذاشت. ",1)):k("",!0)]}),_:1}),s(g,{class:"mt-4",title:"تأیید و ثبت"},{default:o(()=>[B.value?(m(),b(C,{key:1},[s(I,{type:"warning","show-icon":"",class:"mb-4",message:"تا «تأیید و ثبت» نزنید هیچ چیزی عوض نمی‌شود.",description:"بعد از ثبت، همه‌ی سفارش‌های جدید اپ و اجرتی که اپ نشان می‌دهد با فرمول جدید حساب می‌شوند. سفارش‌های ثبت‌شده‌ی قبلی تغییری نمی‌کنند."}),s(z,{checked:P.value,"onUpdate:checked":t[13]||(t[13]=a=>P.value=a),class:"mb-4"},{default:o(()=>[...t[35]||(t[35]=[d(" نتیجه‌ی نمونه را بررسی کردم و درست است. ",-1)])]),_:1},8,["checked"]),l("div",null,[s(Te,{title:"فرمول جدید از همین حالا برای سفارش‌های اپ اعمال شود؟","ok-text":"بله، ثبت شود","cancel-text":"انصراف",disabled:!pe.value,onConfirm:Ce},{default:o(()=>[s(p,{type:"primary",disabled:!pe.value,loading:W.value},{default:o(()=>[...t[36]||(t[36]=[d("تأیید و ثبت فرمول",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["disabled"]),s(p,{class:"ms",onClick:Pe},{default:o(()=>[...t[37]||(t[37]=[d("لغو تغییرات",-1)])]),_:1})])],64)):(m(),h(I,{key:0,type:"info","show-icon":"",message:"تغییری نسبت به فرمول فعلی نداده‌اید.",class:"mb-4"}))]),_:1})]),_:1})]),_:1}),i.value?(m(),h(g,{key:0,class:"mt-4",title:"نمونه‌ی مرجعِ فرمول فعلی"},{default:o(()=>[t[38]||(t[38]=l("div",{class:"hint mb-4"}," این نمونه همراه فرمول فعلی ثبت شده است؛ هر کس فرمول را ببیند می‌داند با چه عددی بررسی و تأیید شده. ",-1)),s(Be,{size:"small",bordered:"",column:{xs:1,md:3}},{default:o(()=>[s(J,{label:"فرمول"},{default:o(()=>[d(r(re(i.value.formula)),1)]),_:1}),s(J,{label:"نمونه"},{default:o(()=>[d(r(me(i.value.sample)),1)]),_:1}),s(J,{label:"نتیجه"},{default:o(()=>[d(" اجرت "+r(N(i.value.result.finalPercent))+" — "+r(G(i.value.result.wageGrams))+" اجرت، "+r(G(i.value.result.totalGrams))+" وزن کل ",1)]),_:1})]),_:1}),i.value.history.length?(m(),h(ze,{key:0,ghost:"",class:"mt-4"},{default:o(()=>[s(qe,{key:"h",header:`نسخه‌های قبلی (${i.value.history.length})`},{default:o(()=>[(m(!0),b(C,null,S(i.value.history,(a,u)=>{var _e;return m(),b("div",{key:u,class:"hist"},[l("div",it,r(de(a.approvedAt))+" — "+r((_e=a.approvedBy)==null?void 0:_e.name),1),l("div",null,r(re(a.formula)),1),l("div",rt,r(me(a.sample))+" ← اجرت "+r(N(a.result.finalPercent))+"، وزن کل "+r(G(a.result.totalGrams)),1)])}),128))]),_:1},8,["header"])]),_:1})):k("",!0)]),_:1})):k("",!0)]),_:1},8,["spinning"])])):(m(),h(Oe,{key:1,status:"403",title:"دسترسی ندارید","sub-title":"این صفحه دسترسی «اجرت» می‌خواهد."}))}}}),vt=Ve(mt,[["__scopeId","data-v-3caccb79"]]);export{vt as default}; diff --git a/apps/admin-panel/dist/assets/wallet-BYMX27q1.js b/apps/admin-panel/dist/assets/wallet-D0sHW9q3.js similarity index 98% rename from apps/admin-panel/dist/assets/wallet-BYMX27q1.js rename to apps/admin-panel/dist/assets/wallet-D0sHW9q3.js index 0316c4b..a44538b 100644 --- a/apps/admin-panel/dist/assets/wallet-BYMX27q1.js +++ b/apps/admin-panel/dist/assets/wallet-D0sHW9q3.js @@ -1 +1 @@ -import{d as V,u as P,x as S,y as _,b as I,a as M,w as r,i as R,z as f,r as c,o as k,c as t,H as j,p as C,f as O,m as W,G as m,_ as z}from"./index-DajPj7Ec.js";const D={class:"grid-2"},G={class:"grid-2"},b="لطفا مقدار را وارد کنید",H=V({__name:"wallet",setup(Q){const U=P(),B=i=>!!U.hasPermission(i),p=W(!1),l=f({expire:void 0,percent:void 0}),s=f({birthday_expire:void 0,birthday_credit:void 0}),o=f({}),d=f({});async function v(){var i,e;if(Object.keys(o).forEach(a=>delete o[a]),(l.expire===void 0||l.expire===null)&&(o.expire=b),(l.percent===void 0||l.percent===null)&&(o.percent=b),!Object.keys(o).length)try{p.value=!0,await _.post("wallet/config",{expire:l.expire,percent:l.percent}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}async function y(){var i,e;if(Object.keys(d).forEach(a=>delete d[a]),(s.birthday_expire===void 0||s.birthday_expire===null)&&(d.birthday_expire=b),(s.birthday_credit===void 0||s.birthday_credit===null)&&(d.birthday_credit=b),!Object.keys(d).length)try{p.value=!0,await _.post("wallet/birthday/config",{birthday_expire:s.birthday_expire,birthday_credit:s.birthday_credit}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}return S(async()=>{try{const[i,e]=await Promise.all([_.get("wallet/config"),_.get("wallet/birthday/config")]);Object.assign(l,i.data??{}),Object.assign(s,e.data??{})}catch(i){console.log(i)}}),(i,e)=>{const a=c("a-input-number"),u=c("a-form-item"),h=c("a-button"),x=c("a-form"),g=c("a-spin"),w=c("a-tab-pane"),E=c("a-tabs"),N=c("a-card");return k(),I("div",null,[B("config.wallet")?(k(),M(N,{key:0,title:"مدیریت کیف پول",class:"page-card"},{default:r(()=>[t(E,{"default-active-key":"1"},{default:r(()=>[t(w,{key:"2",tab:"تاریخ تولد","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(y,["prevent"])},{default:r(()=>[C("div",D,[t(u,{label:"انقضا (روز)","validate-status":d.birthday_expire?"error":"",help:d.birthday_expire},{default:r(()=>[t(a,{value:s.birthday_expire,"onUpdate:value":e[0]||(e[0]=n=>s.birthday_expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"میزان (تومان)","validate-status":d.birthday_credit?"error":"",help:d.birthday_credit},{default:r(()=>[t(a,{value:s.birthday_credit,"onUpdate:value":e[1]||(e[1]=n=>s.birthday_credit=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:y},{default:r(()=>[...e[4]||(e[4]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1}),t(w,{key:"1",tab:"پس از خرید","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(v,["prevent"])},{default:r(()=>[C("div",G,[t(u,{label:"انقضا (روز)","validate-status":o.expire?"error":"",help:o.expire},{default:r(()=>[t(a,{value:l.expire,"onUpdate:value":e[2]||(e[2]=n=>l.expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"درصد","validate-status":o.percent?"error":"",help:o.percent},{default:r(()=>[t(a,{value:l.percent,"onUpdate:value":e[3]||(e[3]=n=>l.percent=n),class:"w-full",min:0,max:100,formatter:n=>`${n}%`,parser:n=>n.replace("%","")},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:v},{default:r(()=>[...e[5]||(e[5]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1})):R("",!0)])}}}),$=z(H,[["__scopeId","data-v-a5976b08"]]);export{$ as default}; +import{d as V,u as P,x as S,y as _,b as I,a as M,w as r,i as R,z as f,r as c,o as k,c as t,H as j,p as C,f as O,m as W,G as m,_ as z}from"./index-eLNLLYwC.js";const D={class:"grid-2"},G={class:"grid-2"},b="لطفا مقدار را وارد کنید",H=V({__name:"wallet",setup(Q){const U=P(),B=i=>!!U.hasPermission(i),p=W(!1),l=f({expire:void 0,percent:void 0}),s=f({birthday_expire:void 0,birthday_credit:void 0}),o=f({}),d=f({});async function v(){var i,e;if(Object.keys(o).forEach(a=>delete o[a]),(l.expire===void 0||l.expire===null)&&(o.expire=b),(l.percent===void 0||l.percent===null)&&(o.percent=b),!Object.keys(o).length)try{p.value=!0,await _.post("wallet/config",{expire:l.expire,percent:l.percent}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}async function y(){var i,e;if(Object.keys(d).forEach(a=>delete d[a]),(s.birthday_expire===void 0||s.birthday_expire===null)&&(d.birthday_expire=b),(s.birthday_credit===void 0||s.birthday_credit===null)&&(d.birthday_credit=b),!Object.keys(d).length)try{p.value=!0,await _.post("wallet/birthday/config",{birthday_expire:s.birthday_expire,birthday_credit:s.birthday_credit}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}return S(async()=>{try{const[i,e]=await Promise.all([_.get("wallet/config"),_.get("wallet/birthday/config")]);Object.assign(l,i.data??{}),Object.assign(s,e.data??{})}catch(i){console.log(i)}}),(i,e)=>{const a=c("a-input-number"),u=c("a-form-item"),h=c("a-button"),x=c("a-form"),g=c("a-spin"),w=c("a-tab-pane"),E=c("a-tabs"),N=c("a-card");return k(),I("div",null,[B("config.wallet")?(k(),M(N,{key:0,title:"مدیریت کیف پول",class:"page-card"},{default:r(()=>[t(E,{"default-active-key":"1"},{default:r(()=>[t(w,{key:"2",tab:"تاریخ تولد","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(y,["prevent"])},{default:r(()=>[C("div",D,[t(u,{label:"انقضا (روز)","validate-status":d.birthday_expire?"error":"",help:d.birthday_expire},{default:r(()=>[t(a,{value:s.birthday_expire,"onUpdate:value":e[0]||(e[0]=n=>s.birthday_expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"میزان (تومان)","validate-status":d.birthday_credit?"error":"",help:d.birthday_credit},{default:r(()=>[t(a,{value:s.birthday_credit,"onUpdate:value":e[1]||(e[1]=n=>s.birthday_credit=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:y},{default:r(()=>[...e[4]||(e[4]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1}),t(w,{key:"1",tab:"پس از خرید","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(v,["prevent"])},{default:r(()=>[C("div",G,[t(u,{label:"انقضا (روز)","validate-status":o.expire?"error":"",help:o.expire},{default:r(()=>[t(a,{value:l.expire,"onUpdate:value":e[2]||(e[2]=n=>l.expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"درصد","validate-status":o.percent?"error":"",help:o.percent},{default:r(()=>[t(a,{value:l.percent,"onUpdate:value":e[3]||(e[3]=n=>l.percent=n),class:"w-full",min:0,max:100,formatter:n=>`${n}%`,parser:n=>n.replace("%","")},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:v},{default:r(()=>[...e[5]||(e[5]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1})):R("",!0)])}}}),$=z(H,[["__scopeId","data-v-a5976b08"]]);export{$ as default}; diff --git a/apps/admin-panel/dist/assets/wallet-61JBaLmV.js b/apps/admin-panel/dist/assets/wallet-DNF2ihBn.js similarity index 82% rename from apps/admin-panel/dist/assets/wallet-61JBaLmV.js rename to apps/admin-panel/dist/assets/wallet-DNF2ihBn.js index e90c783..eb6988a 100644 --- a/apps/admin-panel/dist/assets/wallet-61JBaLmV.js +++ b/apps/admin-panel/dist/assets/wallet-DNF2ihBn.js @@ -1 +1 @@ -import{a as w,b as t,X as h}from"./model-CR-NjhTP.js";import{d as k,u as y,b as r,a as N,w as o,i as T,r as v,o as s,c as x,p as B,F as i,f as n,t as l,h as c,q as C,m as S}from"./index-DajPj7Ec.js";import{a as g,b as V}from"./filters-gmIfX3-G.js";import"./SettingOutlined-BBdK6RkP.js";import"./index-BAamWbCu.js";function X(){const e=new w("admin/documents/wallet/list","لیست کیف پول های شارژ شده");return e.add(new t("id","شماره")),e.add(new t("customer.name","نام مشتری").filterKey("customer.fullName").filterText()),e.add(new t("order.id","شماره سفارش").filterText()),e.add(new t("value","میزان شارژ").renderSlot("value")),e.add(new t("expire_at","تاریخ انقضا").noSort().renderSlot("time")),e.noFilters(),e}const z=k({__name:"wallet",setup(e){const m=y(),u=d=>!!m.hasPermission(d),p=X(),f=S(null);return(d,F)=>{const _=v("a-card");return s(),r("div",null,[u("wallet.percent")?(s(),N(_,{key:0,title:"لیست کیف پول های شارژ شده",class:"page-card"},{default:o(()=>[x(h,{ref_key:"tbl",ref:f,model:c(p),"mobile-cards":""},{time:o(({text:a})=>[n(l(a?c(V)(a):""),1)]),value:o(({text:a,record:b})=>[B("span",{class:C({"text-danger":a<0,"text-success":a>0})},[b.transaction_type==1?(s(),r(i,{key:0},[n(l(Math.abs(Number(a)))+" گرم ",1)],64)):(s(),r(i,{key:1},[n(l(c(g)(Math.abs(Number(a)))),1)],64))],2)]),_:1},8,["model"])]),_:1})):T("",!0)])}}});export{z as default}; +import{a as w,b as t,X as h}from"./model-btNVLLyF.js";import{d as k,u as y,b as r,a as N,w as o,i as T,r as v,o as s,c as x,p as B,F as i,f as n,t as l,h as c,q as C,m as S}from"./index-eLNLLYwC.js";import{a as g,b as V}from"./filters-BMytoA2k.js";import"./SettingOutlined-DibNCEeh.js";import"./index-CKaD48iT.js";function X(){const e=new w("admin/documents/wallet/list","لیست کیف پول های شارژ شده");return e.add(new t("id","شماره")),e.add(new t("customer.name","نام مشتری").filterKey("customer.fullName").filterText()),e.add(new t("order.id","شماره سفارش").filterText()),e.add(new t("value","میزان شارژ").renderSlot("value")),e.add(new t("expire_at","تاریخ انقضا").noSort().renderSlot("time")),e.noFilters(),e}const z=k({__name:"wallet",setup(e){const m=y(),u=d=>!!m.hasPermission(d),p=X(),f=S(null);return(d,F)=>{const _=v("a-card");return s(),r("div",null,[u("wallet.percent")?(s(),N(_,{key:0,title:"لیست کیف پول های شارژ شده",class:"page-card"},{default:o(()=>[x(h,{ref_key:"tbl",ref:f,model:c(p),"mobile-cards":""},{time:o(({text:a})=>[n(l(a?c(V)(a):""),1)]),value:o(({text:a,record:b})=>[B("span",{class:C({"text-danger":a<0,"text-success":a>0})},[b.transaction_type==1?(s(),r(i,{key:0},[n(l(Math.abs(Number(a)))+" گرم ",1)],64)):(s(),r(i,{key:1},[n(l(c(g)(Math.abs(Number(a)))),1)],64))],2)]),_:1},8,["model"])]),_:1})):T("",!0)])}}});export{z as default}; diff --git a/apps/admin-panel/dist/img/no-items.png b/apps/admin-panel/dist/img/no-items.png new file mode 100644 index 0000000000000000000000000000000000000000..9fdcf7c643898937f5999e976b398d1abb97ebd8 GIT binary patch literal 54377 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 literal 0 HcmV?d00001 diff --git a/apps/admin-panel/dist/index.html b/apps/admin-panel/dist/index.html index 55230d9..5806f5a 100644 --- a/apps/admin-panel/dist/index.html +++ b/apps/admin-panel/dist/index.html @@ -6,7 +6,7 @@ هدناگلد — پنل مدیریت - + diff --git a/apps/admin-panel/dist/version.json b/apps/admin-panel/dist/version.json index 89be446..065ed02 100644 --- a/apps/admin-panel/dist/version.json +++ b/apps/admin-panel/dist/version.json @@ -1,9 +1,9 @@ { "app": "admin-panel", - "build": 219, - "version": "1.219", - "commit": "c438ab2", - "builtAt": "2026-10-27T13:13:10.018Z", + "build": 226, + "version": "1.226", + "commit": "ced3587", + "builtAt": "2026-10-28T11:02:30.288Z", "history": [ { "build": 187, diff --git a/apps/api/release/app.js b/apps/api/release/app.js index fbf2ac9..318ea06 100644 --- a/apps/api/release/app.js +++ b/apps/api/release/app.js @@ -81790,7 +81790,11 @@ var require_catalog_service = __commonJS({ storefrontWhere(query) { const where = { isActive: true, images: { some: {} } }; if (query.search?.trim()) { - where.title = { contains: query.search.trim(), mode: "insensitive" }; + const term = query.search.trim(); + where.OR = [ + { title: { contains: term, mode: "insensitive" } }, + { productCode: { contains: term, mode: "insensitive" } } + ]; } if (query.categoryId) where.categoryId = query.categoryId; @@ -81871,6 +81875,9 @@ var require_catalog_service = __commonJS({ }); out.push({ ...product, + // Explicit so list cards can show admin-assigned labels even if a + // future select() omits the field from the spread. + tags: product.tags ?? [], variants: mappedVariants }); } @@ -83346,6 +83353,8 @@ var require_customers_service = __commonJS({ select: { id: true, title: true, + // Prefer the variant's own gallery pick; fall back to product photo. + image: { select: { url: true } }, product: { select: { id: true, @@ -83372,14 +83381,42 @@ var require_customers_service = __commonJS({ const [result, count] = await Promise.all([ this.prisma.order.findMany({ where, - include, + include: { + ...include, + revisions: { + where: { appliedAt: null, discardedAt: null }, + orderBy: { createdAt: "desc" }, + take: 1 + } + }, orderBy: { createdAt: "desc" }, skip: (page - 1) * limit, take: limit }), this.prisma.order.count({ where }) ]); - return { result, count, page, limit }; + return { + result: result.map((row) => { + const { revisions, ...order } = row; + const pending = revisions?.[0]; + return { + ...order, + pendingRevision: pending ? { + id: pending.id, + items: pending.items, + totalGoldWeightGrams: pending.totalGoldWeightGrams, + wageWeightGrams: pending.wageWeightGrams, + flatRialCharge: pending.flatRialCharge, + note: pending.note, + customerDecision: pending.customerDecision, + createdAt: pending.createdAt + } : null + }; + }), + count, + page, + limit + }; } getLedgerEntries(customerId) { return this.prisma.ledgerEntry.findMany({ @@ -83387,6 +83424,54 @@ var require_customers_service = __commonJS({ orderBy: { createdAt: "desc" } }); } + /** + * In-app inbox for this customer: rows from NotificationRecipient (broadcast + * or single-customer messages created in the admin panel). + */ + async getNotifications(customerId) { + const rows = await this.prisma.notificationRecipient.findMany({ + where: { customerId }, + orderBy: { notification: { createdAt: "desc" } }, + take: 50, + include: { + notification: { select: { id: true, title: true, body: true, createdAt: true } } + } + }); + return rows.map((r) => ({ + id: r.id, + notificationId: r.notificationId, + title: r.notification.title, + body: r.notification.body, + createdAt: r.notification.createdAt, + readAt: r.readAt, + isRead: Boolean(r.readAt) + })); + } + unreadNotificationCount(customerId) { + return this.prisma.notificationRecipient.count({ + where: { customerId, readAt: null } + }); + } + async markNotificationRead(customerId, recipientId) { + const row = await this.prisma.notificationRecipient.findUnique({ where: { id: recipientId } }); + if (!row) + throw new common_12.NotFoundException("\u067E\u06CC\u0627\u0645 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (row.customerId !== customerId) + throw new common_12.ForbiddenException(); + if (row.readAt) + return row; + return this.prisma.notificationRecipient.update({ + where: { id: recipientId }, + data: { readAt: /* @__PURE__ */ new Date() } + }); + } + async markAllNotificationsRead(customerId) { + const result = await this.prisma.notificationRecipient.updateMany({ + where: { customerId, readAt: null }, + data: { readAt: /* @__PURE__ */ new Date() } + }); + return { updated: result.count }; + } }; exports2.CustomersService = CustomersService; exports2.CustomersService = CustomersService = CustomersService_1 = __decorate4([ @@ -87426,6 +87511,2356 @@ var init_dist = __esm({ } }); +// ../../packages/shared-types/dist/index.js +var require_dist3 = __commonJS({ + "../../packages/shared-types/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PreOrderStatus = exports2.OrderStatus = exports2.LedgerSourceType = exports2.LedgerDirection = exports2.LedgerCurrency = exports2.GRAMS_PER_MESGHAL = exports2.STANDARD_KARAT_PER_MILLE = void 0; + exports2.STANDARD_KARAT_PER_MILLE = 750; + exports2.GRAMS_PER_MESGHAL = 4.331802; + var LedgerCurrency; + (function(LedgerCurrency2) { + LedgerCurrency2["GOLD_GRAM"] = "GOLD_GRAM"; + LedgerCurrency2["RIAL"] = "RIAL"; + })(LedgerCurrency || (exports2.LedgerCurrency = LedgerCurrency = {})); + var LedgerDirection; + (function(LedgerDirection2) { + LedgerDirection2["DEBIT"] = "DEBIT"; + LedgerDirection2["CREDIT"] = "CREDIT"; + })(LedgerDirection || (exports2.LedgerDirection = LedgerDirection = {})); + var LedgerSourceType; + (function(LedgerSourceType2) { + LedgerSourceType2["ORDER_STOCK"] = "ORDER_STOCK"; + LedgerSourceType2["ORDER_PRE_ORDER"] = "ORDER_PRE_ORDER"; + LedgerSourceType2["REPAYMENT_MELTED_GOLD"] = "REPAYMENT_MELTED_GOLD"; + LedgerSourceType2["REPAYMENT_TRANSFER"] = "REPAYMENT_TRANSFER"; + LedgerSourceType2["REPAYMENT_CHEQUE"] = "REPAYMENT_CHEQUE"; + LedgerSourceType2["REPAYMENT_CASH"] = "REPAYMENT_CASH"; + LedgerSourceType2["WALLET_BONUS"] = "WALLET_BONUS"; + LedgerSourceType2["ADJUSTMENT"] = "ADJUSTMENT"; + })(LedgerSourceType || (exports2.LedgerSourceType = LedgerSourceType = {})); + var OrderStatus; + (function(OrderStatus2) { + OrderStatus2["SUSPENDED"] = "SUSPENDED"; + OrderStatus2["PLACED"] = "PLACED"; + OrderStatus2["ADMIN_APPROVED"] = "ADMIN_APPROVED"; + OrderStatus2["SOURCING"] = "SOURCING"; + OrderStatus2["PREPARING"] = "PREPARING"; + OrderStatus2["DELIVERED_TO_AGENT"] = "DELIVERED_TO_AGENT"; + OrderStatus2["DELIVERED_TO_CUSTOMER"] = "DELIVERED_TO_CUSTOMER"; + OrderStatus2["CANCELLED"] = "CANCELLED"; + })(OrderStatus || (exports2.OrderStatus = OrderStatus = {})); + var PreOrderStatus; + (function(PreOrderStatus2) { + PreOrderStatus2["PLACED"] = "PLACED"; + PreOrderStatus2["ADMIN_APPROVED"] = "ADMIN_APPROVED"; + PreOrderStatus2["WORKSHOP_APPROVED"] = "WORKSHOP_APPROVED"; + PreOrderStatus2["READY_TO_SHIP"] = "READY_TO_SHIP"; + PreOrderStatus2["DELIVERED"] = "DELIVERED"; + PreOrderStatus2["CANCELLED"] = "CANCELLED"; + })(PreOrderStatus || (exports2.PreOrderStatus = PreOrderStatus = {})); + } +}); + +// dist/modules/accounting/ledger.service.js +var require_ledger_service = __commonJS({ + "dist/modules/accounting/ledger.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.LedgerService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var shared_types_1 = require_dist3(); + var prisma_service_1 = require_prisma_service(); + var ZERO = new client_1.Prisma.Decimal(0); + var OWING_STATUSES = [client_1.OrderStatus.DELIVERED_TO_AGENT, client_1.OrderStatus.DELIVERED_TO_CUSTOMER]; + var LedgerService = class LedgerService { + prisma; + constructor(prisma) { + this.prisma = prisma; + } + /** Posts a ledger entry and, if confirmed, applies it to the cached customer balance. */ + async postEntry(input, tx = this.prisma) { + const amount = new client_1.Prisma.Decimal(input.amount); + if (amount.lte(0)) { + throw new common_12.BadRequestException("Ledger entry amount must be positive"); + } + const confirmed = input.confirmed ?? false; + const entry = await tx.ledgerEntry.create({ + data: { + customerId: input.customerId, + currency: input.currency, + direction: input.direction, + sourceType: input.sourceType, + amount, + orderId: input.orderId, + karatPerMille: input.karatPerMille, + pricePerGramRialAtEntry: input.pricePerGramRialAtEntry !== void 0 ? new client_1.Prisma.Decimal(input.pricePerGramRialAtEntry) : void 0, + note: input.note, + confirmed, + confirmedAt: confirmed ? /* @__PURE__ */ new Date() : null, + postedByAdminId: input.postedByAdminId + } + }); + if (confirmed) { + await this.applyToBalance(input.customerId, input.currency, input.direction, amount, tx); + } + return entry; + } + /** + * Marks a pending repayment entry confirmed. Legacy's confirmed toggle + * (Adm\CashController::toggleConfiremCash) is bidirectional and used for + * post-hoc correction/rejection — legacy Cash rows are auto-confirmed + * (confirmed=1) at creation, not created pending. This system intentionally + * requires an explicit confirmation step before a repayment counts (see + * postGoldRepayment for the full rationale) — that is a deliberate design + * change from legacy, not a faithful mirror of it. + */ + async confirmEntry(entryId, adminUserId, tx = this.prisma) { + const entry = await tx.ledgerEntry.findUnique({ where: { id: entryId } }); + if (!entry) + throw new common_12.NotFoundException("Ledger entry not found"); + if (entry.confirmed) + return entry; + const updated = await tx.ledgerEntry.update({ + where: { id: entryId }, + data: { confirmed: true, confirmedAt: /* @__PURE__ */ new Date(), postedByAdminId: adminUserId ?? entry.postedByAdminId } + }); + await this.applyToBalance(entry.customerId, entry.currency, entry.direction, entry.amount, tx); + return updated; + } + async applyToBalance(customerId, currency, direction, amount, tx) { + const signedDelta = direction === client_1.LedgerDirection.DEBIT ? amount : amount.neg(); + await tx.customer.update({ + where: { id: customerId }, + data: currency === client_1.LedgerCurrency.GOLD_GRAM ? { goldDebtGrams: { increment: signedDelta } } : { fiatDebtRial: { increment: signedDelta } } + }); + } + /** + * Brings an order's debt in line with its status — legacy's rule exactly. + * + * Legacy never "posted" order debt; it RECOMPUTED it + * (CustomerController::updateRemain): Σ orders.input WHERE sts > 4, i.e. an + * order owes its full weight (and its rial charge) while it is delivered — + * to the expert (5) or to the customer (6) — and nothing otherwise. So: + * - moving into a delivered status twice never counts twice (ACC-03 / + * MON-04: the old guard on `deliveredAt` let a second DELIVERED_TO_AGENT + * post the debt again); + * - going straight to DELIVERED_TO_CUSTOMER still creates the debt (the + * old trigger fired only on DELIVERED_TO_AGENT, so that order owed nothing); + * - moving back below delivered, or cancelling, takes it off again. + * + * It compares what the order SHOULD owe with the confirmed ORDER_STOCK + * entries already on it and posts only the difference, as a confirmed + * DEBIT or CREDIT — so it is idempotent and nothing is ever edited or + * deleted (the ledger stays append-only). Entries imported from legacy carry + * their orderId, so imported orders reconcile the same way. + */ + async syncOrderDebt(orderId, tx = this.prisma) { + const order = await tx.order.findUnique({ where: { id: orderId } }); + if (!order) + throw new common_12.NotFoundException("Order not found"); + const owes = OWING_STATUSES.includes(order.status); + const targets = [ + [client_1.LedgerCurrency.GOLD_GRAM, owes ? new client_1.Prisma.Decimal(order.totalGoldWeightGrams) : ZERO, "Gold-weight debt"], + [client_1.LedgerCurrency.RIAL, owes ? new client_1.Prisma.Decimal(order.flatRialCharge) : ZERO, "Flat Rial charge (e.g. stones)"] + ]; + for (const [currency, should, label] of targets) { + const posted = await tx.ledgerEntry.groupBy({ + by: ["direction"], + where: { orderId, currency, sourceType: client_1.LedgerSourceType.ORDER_STOCK, confirmed: true }, + _sum: { amount: true } + }); + const sum = (d) => posted.find((p) => p.direction === d)?._sum.amount ?? ZERO; + const current = new client_1.Prisma.Decimal(sum(client_1.LedgerDirection.DEBIT)).sub(sum(client_1.LedgerDirection.CREDIT)); + const diff = should.sub(current); + if (diff.isZero()) + continue; + await this.postEntry({ + customerId: order.customerId, + currency, + direction: diff.gt(0) ? client_1.LedgerDirection.DEBIT : client_1.LedgerDirection.CREDIT, + sourceType: client_1.LedgerSourceType.ORDER_STOCK, + amount: diff.abs(), + orderId: order.id, + confirmed: true, + note: owes ? `${label} \u2014 order delivered (${order.status})` : `${label} reversed \u2014 order moved to ${order.status}` + }, tx); + } + } + /** + * Normalizes a physical repayment instrument into gold grams and posts a + * pending (unconfirmed) CREDIT entry against the customer's gold debt. + * Formulas preserved verbatim from legacy CashController::store. Note: + * legacy auto-confirms (confirmed=1) every Cash row at creation — posting + * this as pending instead is an intentional design change, not a mirror of + * legacy's default. + */ + async postGoldRepayment(params, tx = this.prisma) { + const raw = new client_1.Prisma.Decimal(params.rawValue); + let goldGramsValue; + let sourceType; + switch (params.instrument) { + case "MELTED_GOLD": { + if (!params.karatPerMille) { + throw new common_12.BadRequestException("karatPerMille is required for a melted-gold repayment"); + } + goldGramsValue = raw.mul(params.karatPerMille).div(shared_types_1.STANDARD_KARAT_PER_MILLE); + sourceType = client_1.LedgerSourceType.REPAYMENT_MELTED_GOLD; + break; + } + case "CASH": { + if (!params.pricePerGramRial) { + throw new common_12.BadRequestException("pricePerGramRial is required for a cash repayment"); + } + const pricePerGram = new client_1.Prisma.Decimal(params.pricePerGramRial); + goldGramsValue = raw.div(pricePerGram.div(shared_types_1.GRAMS_PER_MESGHAL)); + sourceType = client_1.LedgerSourceType.REPAYMENT_CASH; + break; + } + case "TRANSFER": + goldGramsValue = raw; + sourceType = client_1.LedgerSourceType.REPAYMENT_TRANSFER; + break; + case "CHEQUE": + goldGramsValue = raw; + sourceType = client_1.LedgerSourceType.REPAYMENT_CHEQUE; + break; + } + return this.postEntry({ + customerId: params.customerId, + currency: client_1.LedgerCurrency.GOLD_GRAM, + direction: client_1.LedgerDirection.CREDIT, + sourceType, + amount: goldGramsValue, + karatPerMille: params.karatPerMille, + pricePerGramRialAtEntry: params.pricePerGramRial, + note: params.note, + confirmed: false, + // pending until an admin confirms — intentional deviation from legacy, which auto-confirms on creation + postedByAdminId: params.postedByAdminId + }, tx); + } + /** + * Direct Rial-debt repayment. Not present in the legacy system (its + * rial_remain had no repayment offset at all — a gap flagged during + * migration analysis) but supported here since the new ledger is symmetric. + */ + async postRialRepayment(params, tx = this.prisma) { + return this.postEntry({ + customerId: params.customerId, + currency: client_1.LedgerCurrency.RIAL, + direction: client_1.LedgerDirection.CREDIT, + sourceType: client_1.LedgerSourceType.REPAYMENT_CASH, + amount: params.amount, + note: params.note, + confirmed: false, + postedByAdminId: params.postedByAdminId + }, tx); + } + async postAdjustment(params, tx = this.prisma) { + return this.postEntry({ + customerId: params.customerId, + currency: params.currency, + direction: params.direction, + sourceType: client_1.LedgerSourceType.ADJUSTMENT, + amount: params.amount, + note: params.note, + confirmed: true, + postedByAdminId: params.postedByAdminId + }, tx); + } + async getBalance(customerId) { + const customer = await this.prisma.customer.findUnique({ + where: { id: customerId }, + select: { id: true, goldDebtGrams: true, fiatDebtRial: true, goldCreditLimitGrams: true } + }); + if (!customer) + throw new common_12.NotFoundException("Customer not found"); + return { + customerId: customer.id, + goldDebtGrams: customer.goldDebtGrams, + fiatDebtRial: customer.fiatDebtRial, + goldCreditLimitGrams: customer.goldCreditLimitGrams + }; + } + /** + * Recomputes cached balances from confirmed LedgerEntry rows and overwrites + * the cache — a self-healing reconciliation, run periodically or on demand, + * unlike legacy's recompute-on-every-write (Customer::updateRemain). + */ + async reconcileBalance(customerId) { + const [goldDebits, goldCredits, rialDebits, rialCredits] = await Promise.all([ + this.sumConfirmed(customerId, client_1.LedgerCurrency.GOLD_GRAM, client_1.LedgerDirection.DEBIT), + this.sumConfirmed(customerId, client_1.LedgerCurrency.GOLD_GRAM, client_1.LedgerDirection.CREDIT), + this.sumConfirmed(customerId, client_1.LedgerCurrency.RIAL, client_1.LedgerDirection.DEBIT), + this.sumConfirmed(customerId, client_1.LedgerCurrency.RIAL, client_1.LedgerDirection.CREDIT) + ]); + return this.prisma.customer.update({ + where: { id: customerId }, + data: { + goldDebtGrams: goldDebits.sub(goldCredits), + fiatDebtRial: rialDebits.sub(rialCredits) + } + }); + } + async sumConfirmed(customerId, currency, direction) { + const result = await this.prisma.ledgerEntry.aggregate({ + where: { customerId, currency, direction, confirmed: true }, + _sum: { amount: true } + }); + return result._sum.amount ?? new client_1.Prisma.Decimal(0); + } + }; + exports2.LedgerService = LedgerService; + exports2.LedgerService = LedgerService = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + ], LedgerService); + } +}); + +// dist/modules/pricing/wage-formula.js +var require_wage_formula = __commonJS({ + "dist/modules/pricing/wage-formula.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DEFAULT_WAGE_SAMPLE = exports2.LEGACY_WAGE_FORMULA = void 0; + exports2.computeWage = computeWage; + exports2.computeSample = computeSample; + exports2.parseWageFormula = parseWageFormula; + exports2.parseWageSample = parseWageSample; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + exports2.LEGACY_WAGE_FORMULA = Object.freeze({ + version: 1, + variantCoef: "1", + customerCoef: "1", + promotionCoef: "1", + promotionPick: "max", + constant: "0", + min: null, + max: null, + decimals: null + }); + var D = (v) => new client_1.Prisma.Decimal(v ?? 0); + function computeWage(f, i) { + const promos = i.promotionPercents.map(D); + const promo = promos.length === 0 ? D(0) : f.promotionPick === "sum" ? promos.reduce((s, p) => s.add(p), D(0)) : promos.reduce((m, p) => p.gt(m) ? p : m, promos[0]); + const variantTerm = D(f.variantCoef).mul(D(i.variantPercent)); + const customerTerm = D(f.customerCoef).mul(D(i.customerPercent)); + const promotionTerm = D(f.promotionCoef).mul(promo); + const constant = D(f.constant); + const before = variantTerm.add(customerTerm).sub(promotionTerm).add(constant); + let final = before; + let limitedBy = null; + if (f.min !== null && final.lt(D(f.min))) { + final = D(f.min); + limitedBy = "min"; + } + if (f.max !== null && final.gt(D(f.max))) { + final = D(f.max); + limitedBy = "max"; + } + if (f.decimals !== null) + final = final.toDecimalPlaces(f.decimals, client_1.Prisma.Decimal.ROUND_HALF_UP); + return { + variantTerm: variantTerm.toString(), + customerTerm: customerTerm.toString(), + promotionPercent: promo.toString(), + promotionTerm: promotionTerm.toString(), + constant: constant.toString(), + beforeLimits: before.toString(), + limitedBy, + finalPercent: final.toString(), + wagePercentSnapshot: final.add(promotionTerm).toString(), + discountPercentSnapshot: promotionTerm.toString() + }; + } + exports2.DEFAULT_WAGE_SAMPLE = Object.freeze({ + rashWeightGrams: "10", + quantity: 1, + variantPercent: "7", + customerPercent: "3", + promotionPercent: "0" + }); + function computeSample(f, s) { + const wage = computeWage(f, { + variantPercent: s.variantPercent, + customerPercent: s.customerPercent, + promotionPercents: D(s.promotionPercent).isZero() ? [] : [s.promotionPercent] + }); + const rash = D(s.rashWeightGrams).mul(s.quantity); + const total = rash.mul(D(wage.finalPercent).div(100).add(1)); + return { + ...wage, + rashTotalGrams: rash.toString(), + wageGrams: total.sub(rash).toDecimalPlaces(4).toString(), + totalGrams: total.toDecimalPlaces(4).toString() + }; + } + function num(v, field, lo, hi) { + const s = String(v ?? "").trim(); + let d; + try { + d = new client_1.Prisma.Decimal(s); + } catch { + throw new common_12.BadRequestException(`${field}: \u0639\u062F\u062F \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A`); + } + if (!d.isFinite() || d.lt(lo) || d.gt(hi)) + throw new common_12.BadRequestException(`${field}: \u0628\u0627\u06CC\u062F \u0628\u06CC\u0646 ${lo} \u0648 ${hi} \u0628\u0627\u0634\u062F`); + return d.toString(); + } + function optNum(v, field, lo, hi) { + return v === null || v === void 0 || String(v).trim() === "" ? null : num(v, field, lo, hi); + } + function parseWageFormula(raw) { + const r = raw ?? {}; + const pick = r.promotionPick === "sum" ? "sum" : r.promotionPick === "max" ? "max" : null; + if (!pick) + throw new common_12.BadRequestException("\u0646\u062D\u0648\u0647\u200C\u06CC \u0627\u0646\u062A\u062E\u0627\u0628 \u062A\u062E\u0641\u06CC\u0641 \u0628\u0627\u06CC\u062F \xAB\u0628\u06CC\u0634\u062A\u0631\u06CC\u0646\xBB \u06CC\u0627 \xAB\u062C\u0645\u0639\xBB \u0628\u0627\u0634\u062F"); + const decimals = r.decimals === null || r.decimals === void 0 || r.decimals === "" ? null : Number(num(r.decimals, "\u062A\u0639\u062F\u0627\u062F \u0631\u0642\u0645 \u0627\u0639\u0634\u0627\u0631", 0, 4)); + if (decimals !== null && !Number.isInteger(decimals)) + throw new common_12.BadRequestException("\u062A\u0639\u062F\u0627\u062F \u0631\u0642\u0645 \u0627\u0639\u0634\u0627\u0631 \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0628\u0627\u0634\u062F"); + const f = { + version: 1, + variantCoef: num(r.variantCoef, "\u0636\u0631\u06CC\u0628 \u0627\u062C\u0631\u062A \u0645\u062F\u0644", -10, 10), + customerCoef: num(r.customerCoef, "\u0636\u0631\u06CC\u0628 \u062F\u0631\u0635\u062F \u0645\u0634\u062A\u0631\u06CC", -10, 10), + promotionCoef: num(r.promotionCoef, "\u0636\u0631\u06CC\u0628 \u062A\u062E\u0641\u06CC\u0641", -10, 10), + promotionPick: pick, + constant: num(r.constant, "\u0645\u0642\u062F\u0627\u0631 \u062B\u0627\u0628\u062A", -100, 100), + min: optNum(r.min, "\u062D\u062F\u0627\u0642\u0644 \u0627\u062C\u0631\u062A", -100, 1e3), + max: optNum(r.max, "\u062D\u062F\u0627\u06A9\u062B\u0631 \u0627\u062C\u0631\u062A", -100, 1e3), + decimals + }; + if (f.min !== null && f.max !== null && D(f.min).gt(D(f.max))) { + throw new common_12.BadRequestException("\u062D\u062F\u0627\u0642\u0644 \u0627\u062C\u0631\u062A \u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u062F \u0627\u0632 \u062D\u062F\u0627\u06A9\u062B\u0631 \u0628\u06CC\u0634\u062A\u0631 \u0628\u0627\u0634\u062F"); + } + return f; + } + function parseWageSample(raw) { + const r = raw ?? {}; + const qty = Number(r.quantity); + if (!Number.isInteger(qty) || qty < 1 || qty > 1e3) + throw new common_12.BadRequestException("\u062A\u0639\u062F\u0627\u062F \u0646\u0645\u0648\u0646\u0647 \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0628\u06CC\u0646 \u06F1 \u0648 \u06F1\u06F0\u06F0\u06F0 \u0628\u0627\u0634\u062F"); + return { + rashWeightGrams: num(r.rashWeightGrams, "\u0648\u0632\u0646 \u062E\u0627\u0645 \u0646\u0645\u0648\u0646\u0647", 0, 1e5), + quantity: qty, + variantPercent: num(r.variantPercent, "\u0627\u062C\u0631\u062A \u0645\u062F\u0644 \u0646\u0645\u0648\u0646\u0647", -100, 1e3), + customerPercent: num(r.customerPercent, "\u062F\u0631\u0635\u062F \u0645\u0634\u062A\u0631\u06CC \u0646\u0645\u0648\u0646\u0647", -100, 1e3), + promotionPercent: num(r.promotionPercent, "\u062A\u062E\u0641\u06CC\u0641 \u0646\u0645\u0648\u0646\u0647", 0, 100) + }; + } + } +}); + +// dist/modules/pricing/wage.service.js +var require_wage_service = __commonJS({ + "dist/modules/pricing/wage.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.WageService = exports2.PRICING_SETTING_PREFIX = exports2.WAGE_FORMULA_SETTING_KEY = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var wage_formula_1 = require_wage_formula(); + exports2.WAGE_FORMULA_SETTING_KEY = "pricing.wageFormula"; + exports2.PRICING_SETTING_PREFIX = "pricing."; + var WageService = class WageService { + prisma; + constructor(prisma) { + this.prisma = prisma; + } + async stored(tx = this.prisma) { + const row = await tx.setting.findUnique({ where: { key: exports2.WAGE_FORMULA_SETTING_KEY } }); + return row ? row.value : null; + } + /** The formula in force; legacy's exactly until an admin approves another. */ + async formula(tx = this.prisma) { + const s = await this.stored(tx); + return s ? (0, wage_formula_1.parseWageFormula)(s.formula) : { ...wage_formula_1.LEGACY_WAGE_FORMULA }; + } + /* ───────────── admin screen ───────────── */ + async getConfig() { + const s = await this.stored(); + const formula = s ? (0, wage_formula_1.parseWageFormula)(s.formula) : { ...wage_formula_1.LEGACY_WAGE_FORMULA }; + const sample = s ? (0, wage_formula_1.parseWageSample)(s.sample) : { ...wage_formula_1.DEFAULT_WAGE_SAMPLE }; + return { + formula, + sample, + result: (0, wage_formula_1.computeSample)(formula, sample), + approvedAt: s?.approvedAt ?? null, + approvedBy: s?.approvedBy ?? null, + isLegacyDefault: !s, + legacy: wage_formula_1.LEGACY_WAGE_FORMULA, + history: (s?.history ?? []).map((h) => ({ ...h, result: (0, wage_formula_1.computeSample)((0, wage_formula_1.parseWageFormula)(h.formula), (0, wage_formula_1.parseWageSample)(h.sample)) })) + }; + } + /** The draft and the formula in force, side by side, on the same sample. */ + async preview(rawFormula, rawSample) { + const draft = (0, wage_formula_1.parseWageFormula)(rawFormula); + const sample = (0, wage_formula_1.parseWageSample)(rawSample); + return { + draft: (0, wage_formula_1.computeSample)(draft, sample), + current: (0, wage_formula_1.computeSample)(await this.formula(), sample) + }; + } + /** Approves a formula together with the sample it was checked on. */ + async approve(rawFormula, rawSample, admin) { + const formula = (0, wage_formula_1.parseWageFormula)(rawFormula); + const sample = (0, wage_formula_1.parseWageSample)(rawSample); + await this.prisma.$transaction(async (tx) => { + const prev = await this.stored(tx); + const next = { + formula, + sample, + approvedAt: (/* @__PURE__ */ new Date()).toISOString(), + approvedBy: { id: admin.id, name: admin.fullName }, + history: prev ? [{ formula: prev.formula, sample: prev.sample, approvedAt: prev.approvedAt, approvedBy: prev.approvedBy }, ...prev.history].slice(0, 20) : [] + }; + const value = next; + await tx.setting.upsert({ + where: { key: exports2.WAGE_FORMULA_SETTING_KEY }, + update: { value }, + create: { key: exports2.WAGE_FORMULA_SETTING_KEY, value } + }); + }); + return this.getConfig(); + } + /* ───────────── pricing a customer's lines ───────────── */ + /** + * The making charge of each variant for this customer — what the app shows + * and what an app order is charged. The promotions considered are legacy's: + * active, inside their dates, scoped to the product, its category or its + * brand (customer-scoped promotions were switched off in the legacy app). + */ + async quote(customerId, variantIds, tx = this.prisma) { + const customer = await tx.customer.findUnique({ + where: { id: customerId }, + select: { makingChargeOffsetPercent: true } + }); + if (!customer) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const ids = [...new Set(variantIds)]; + const variants = await tx.productVariant.findMany({ + where: { id: { in: ids } }, + select: { id: true, defaultWagePercent: true, product: { select: { id: true, categoryId: true, brandId: true } } } + }); + const now = /* @__PURE__ */ new Date(); + const promotions = await tx.promotion.findMany({ + where: { + isActive: true, + scope: { in: [client_1.PromotionScope.PRODUCT, client_1.PromotionScope.CATEGORY, client_1.PromotionScope.BRAND] }, + AND: [ + { OR: [{ startsAt: null }, { startsAt: { lte: now } }] }, + { OR: [{ endsAt: null }, { endsAt: { gte: now } }] } + ], + OR: [ + { productId: { in: variants.map((v) => v.product.id) } }, + { categoryId: { in: variants.map((v) => v.product.categoryId).filter((x) => !!x) } }, + { brandId: { in: variants.map((v) => v.product.brandId).filter((x) => !!x) } } + ] + }, + select: { scope: true, productId: true, categoryId: true, brandId: true, discountPercent: true } + }); + const formula = await this.formula(tx); + const out = /* @__PURE__ */ new Map(); + for (const v of variants) { + const applying = promotions.filter((p) => p.scope === client_1.PromotionScope.PRODUCT && p.productId === v.product.id || p.scope === client_1.PromotionScope.CATEGORY && !!v.product.categoryId && p.categoryId === v.product.categoryId || p.scope === client_1.PromotionScope.BRAND && !!v.product.brandId && p.brandId === v.product.brandId); + const inputs = { + variantPercent: v.defaultWagePercent, + customerPercent: customer.makingChargeOffsetPercent, + promotionPercents: applying.map((p) => p.discountPercent) + }; + out.set(v.id, { + variantId: v.id, + variantPercent: new client_1.Prisma.Decimal(v.defaultWagePercent).toString(), + customerPercent: new client_1.Prisma.Decimal(customer.makingChargeOffsetPercent).toString(), + ...(0, wage_formula_1.computeWage)(formula, inputs) + }); + } + return out; + } + }; + exports2.WageService = WageService; + exports2.WageService = WageService = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + ], WageService); + } +}); + +// dist/modules/sms/drivers/sms-driver.js +var require_sms_driver = __commonJS({ + "dist/modules/sms/drivers/sms-driver.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.postWithTimeout = postWithTimeout; + async function postWithTimeout(url, headers, body, timeoutMs, method = "POST") { + const controller = new AbortController(); + const timer = setTimeout(() => controller.abort(), timeoutMs); + try { + const response = await fetch(url, { + method, + headers, + body: body ?? void 0, + signal: controller.signal + }); + return { ok: response.ok, status: response.status, body: await response.text() }; + } finally { + clearTimeout(timer); + } + } + } +}); + +// dist/modules/sms/drivers/relay.driver.js +var require_relay_driver = __commonJS({ + "dist/modules/sms/drivers/relay.driver.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.relayDriver = void 0; + exports2.serverIpv4 = serverIpv4; + exports2.isPrivateIpv4 = isPrivateIpv4; + exports2.resolveRelayHost = resolveRelayHost; + exports2.resetRelayHostCache = resetRelayHostCache; + exports2.relayConfig = relayConfig; + exports2.relayRejection = relayRejection; + var node_os_1 = require("node:os"); + var env_12 = require_env(); + var sms_driver_1 = require_sms_driver(); + var DEFAULT_RELAY_URL = "http://185.231.112.101/api/createsms"; + var DEFAULT_RELAY_SECRET = "f21debfb-83ac-4624-a2f4-f08375043181"; + var REQUEST_TIMEOUT_MS = 15e3; + function serverIpv4() { + for (const addresses of Object.values((0, node_os_1.networkInterfaces)())) { + for (const a of addresses ?? []) { + if (a.family === "IPv4" && !a.internal) + return a.address; + } + } + return null; + } + function isPrivateIpv4(ip) { + return !!ip && /^(10\.|192\.168\.|172\.(1[6-9]|2\d|3[01])\.|100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\.|169\.254\.)/.test(ip); + } + var publicIpv4 = null; + var PUBLIC_IP_SERVICES = ["https://api.ipify.org", "https://ifconfig.me/ip", "https://icanhazip.com"]; + var LOOKUP_TIMEOUT_MS = 3e3; + var FAILED_LOOKUP_RETRY_MS = 10 * 60 * 1e3; + var lookup = null; + var lookupFailedAt = 0; + async function lookupPublicIpv4() { + const attempts = PUBLIC_IP_SERVICES.map(async (url) => { + const reply = await (0, sms_driver_1.postWithTimeout)(url, {}, null, LOOKUP_TIMEOUT_MS, "GET"); + const ip = reply.body.trim(); + if (reply.ok && /^\d{1,3}(\.\d{1,3}){3}$/.test(ip) && !isPrivateIpv4(ip)) + return ip; + throw new Error("not a public IPv4"); + }); + try { + publicIpv4 = await Promise.any(attempts); + } catch { + lookupFailedAt = Date.now(); + } + } + async function resolveRelayHost() { + if ((0, env_12.envOrNull)("SMS_RELAY_HOST") || publicIpv4) + return relayConfig().host; + const own = serverIpv4(); + if (!isPrivateIpv4(own)) + return own; + if (Date.now() - lookupFailedAt < FAILED_LOOKUP_RETRY_MS) + return relayConfig().host; + lookup ??= lookupPublicIpv4().finally(() => { + lookup = null; + }); + await lookup; + return relayConfig().host; + } + function resetRelayHostCache() { + publicIpv4 = null; + lookup = null; + lookupFailedAt = 0; + } + function relayConfig() { + return { + url: (0, env_12.envOr)("SMS_RELAY_URL", DEFAULT_RELAY_URL), + secret: (0, env_12.envOr)("SMS_RELAY_SECRET", DEFAULT_RELAY_SECRET), + host: (0, env_12.envOrNull)("SMS_RELAY_HOST") ?? publicIpv4 ?? serverIpv4() + }; + } + function relayRejection(body) { + const text = body.trim(); + if (text === "") + return null; + let data; + try { + data = JSON.parse(text); + } catch { + const trailing = /\{[^{}]*\}$/.exec(text); + try { + if (!trailing) + throw new Error("no json"); + data = JSON.parse(trailing[0]); + } catch { + return text.slice(0, 200); + } + } + if (!data || typeof data !== "object" || Array.isArray(data)) + return null; + const d = data; + const failedStatus = d.status === false || typeof d.status === "string" && /^(error|fail|failed|failure)$/i.test(d.status); + const failed = failedStatus || d.success === false || d.ok === false || Boolean(d.error); + if (!failed) + return null; + if (typeof d.error === "string" && d.error) + return d.error; + if (typeof d.message === "string" && d.message) + return d.message; + return "rejected-by-gateway"; + } + exports2.relayDriver = { + name: "relay", + missingConfig() { + return relayConfig().host ? [] : ["SMS_RELAY_HOST"]; + }, + async deliver(mobile, text) { + await resolveRelayHost(); + const c = relayConfig(); + const reply = await (0, sms_driver_1.postWithTimeout)(c.url, { "Content-Type": "application/json", secret_key: c.secret }, JSON.stringify({ phone: mobile, host: c.host, text }), REQUEST_TIMEOUT_MS); + if (!reply.ok) + return { ok: false, response: reply.body, error: `http-${reply.status}` }; + const rejection = relayRejection(reply.body); + if (rejection) + return { ok: false, response: reply.body, error: rejection }; + return { ok: true, response: reply.body }; + } + }; + } +}); + +// dist/modules/sms/drivers/trez.driver.js +var require_trez_driver = __commonJS({ + "dist/modules/sms/drivers/trez.driver.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.trezDriver = exports2.DEFAULT_TREZ_URL = void 0; + exports2.trezConfig = trezConfig; + var env_12 = require_env(); + var sms_driver_1 = require_sms_driver(); + exports2.DEFAULT_TREZ_URL = "https://smspanel.trez.ir/SendMessageWithCode.ashx"; + var REQUEST_TIMEOUT_MS = 2e4; + function trezConfig() { + return { + url: (0, env_12.envOr)("SMS_TREZ_URL", exports2.DEFAULT_TREZ_URL), + username: process.env.SMS_TREZ_USERNAME ?? "", + password: process.env.SMS_TREZ_PASSWORD ?? "", + senderLine: process.env.SMS_TREZ_SENDER_LINE ?? "" + }; + } + exports2.trezDriver = { + name: "trez", + missingConfig() { + const c = trezConfig(); + return [ + ["SMS_TREZ_USERNAME", c.username], + ["SMS_TREZ_PASSWORD", c.password], + ["SMS_TREZ_SENDER_LINE", c.senderLine] + ].filter(([, v]) => !v).map(([name]) => name); + }, + async deliver(mobile, text) { + const c = trezConfig(); + const reply = await (0, sms_driver_1.postWithTimeout)(c.url, { "Content-Type": "application/x-www-form-urlencoded" }, new URLSearchParams({ + PhoneNumber: c.senderLine, + Username: c.username, + Password: c.password, + Mobile: mobile, + Message: text + }).toString(), REQUEST_TIMEOUT_MS); + if (!reply.ok) + return { ok: false, response: reply.body, error: `http-${reply.status}` }; + return { ok: true, response: reply.body }; + } + }; + } +}); + +// dist/modules/sms/drivers/index.js +var require_drivers = __commonJS({ + "dist/modules/sms/drivers/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DEFAULT_SMS_PROVIDER = exports2.SMS_DRIVERS = void 0; + var relay_driver_1 = require_relay_driver(); + var trez_driver_1 = require_trez_driver(); + exports2.SMS_DRIVERS = { + [relay_driver_1.relayDriver.name]: relay_driver_1.relayDriver, + [trez_driver_1.trezDriver.name]: trez_driver_1.trezDriver + }; + exports2.DEFAULT_SMS_PROVIDER = relay_driver_1.relayDriver.name; + } +}); + +// dist/modules/sms/sms.service.js +var require_sms_service = __commonJS({ + "dist/modules/sms/sms.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var SmsService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SmsService = void 0; + exports2.smsProvider = smsProvider; + exports2.smsDriver = smsDriver; + exports2.smsConfigured = smsConfigured; + exports2.assertSmsConfigured = assertSmsConfigured; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var env_12 = require_env(); + var drivers_1 = require_drivers(); + var relay_driver_1 = require_relay_driver(); + function smsProvider() { + return (0, env_12.envOr)("SMS_PROVIDER", drivers_1.DEFAULT_SMS_PROVIDER).toLowerCase(); + } + function smsDriver() { + return drivers_1.SMS_DRIVERS[smsProvider()] ?? null; + } + function smsConfigured() { + const driver = smsDriver(); + return driver !== null && driver.missingConfig().length === 0; + } + function assertSmsConfigured(logger = new common_12.Logger("SmsConfig")) { + const provider = smsProvider(); + if (provider === "none") { + logger.warn("SMS_PROVIDER=none \u2014 no SMS will be sent."); + return; + } + const driver = smsDriver(); + if (!driver) { + const supported = [...Object.keys(drivers_1.SMS_DRIVERS), "none"].map((n) => `"${n}"`).join(", "); + logger.warn(`Unknown SMS_PROVIDER "${provider}" (supported: ${supported}). No SMS will be sent.`); + return; + } + const missing = driver.missingConfig(); + if (missing.length === 0) { + logger.log(`SMS provider: ${driver.name}`); + return; + } + logger.warn(`SMS provider "${driver.name}" is selected but these are not set: ${missing.join(", ")}. Messages are logged, not sent. Customers cannot receive a login code.`); + } + var SmsService = SmsService_1 = class SmsService { + prisma; + logger = new common_12.Logger(SmsService_1.name); + constructor(prisma) { + this.prisma = prisma; + } + /** + * Reports the `host` the relay gateway will receive, so a wrong one shows in + * the boot log instead of as silent failures. Never throws and never delays + * the boot: the lookup runs in the background. + */ + onApplicationBootstrap() { + if (smsDriver()?.name !== "relay") + return; + void (0, relay_driver_1.resolveRelayHost)().then((host) => { + const source = (0, env_12.envOrNull)("SMS_RELAY_HOST") ? "SMS_RELAY_HOST" : "detected"; + if ((0, relay_driver_1.isPrivateIpv4)(host)) { + this.logger.warn(`SMS relay host is a private address (${host}, ${source}); the gateway may not accept it. Set SMS_RELAY_HOST to this server's public IP.`); + } else { + this.logger.log(`SMS relay host: ${host ?? "(none)"} (${source})`); + } + }).catch(() => void 0); + } + /** + * Sends one message. Never throws — a failed SMS must not roll back the + * business operation that triggered it, exactly as in the reference. + */ + async send(mobile, body, options = {}) { + const { persist = true, audience = client_1.MessageAudience.SINGLE_NUMBER } = options; + const text = body.trim(); + const result = await this.deliver(mobile, text); + if (persist) { + await this.record(mobile, text, audience); + } + return result; + } + async deliver(mobile, text) { + const driver = smsDriver(); + if (!driver || driver.missingConfig().length > 0) { + this.logger.warn(`[dev] SMS not configured; not sending to ${mobile}`); + return { ok: false, error: "sms-not-configured" }; + } + let result; + try { + result = await driver.deliver(mobile, text); + } catch (e) { + result = { ok: false, error: e instanceof Error ? e.message : String(e) }; + } + if (!result.ok) { + const detail = result.response ? ` ${result.response}` : ""; + this.logger.error(`SMS to ${mobile} via ${driver.name} failed: ${result.error}${detail}`); + } + return result; + } + /** The `messages` row the reference writes for every send (`Sms.php:120-129`). */ + async record(mobile, body, audience) { + try { + await this.prisma.smsMessage.create({ + data: { audience, recipients: mobile, body, sentCount: 1 } + }); + } catch (e) { + this.logger.error(`Could not record the SMS to ${mobile}: ${String(e)}`); + } + } + }; + exports2.SmsService = SmsService; + exports2.SmsService = SmsService = SmsService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + ], SmsService); + } +}); + +// dist/common/brand.js +var require_brand = __commonJS({ + "dist/common/brand.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.brandName = brandName; + exports2.brandSiteUrl = brandSiteUrl; + var env_12 = require_env(); + function brandName() { + return (0, env_12.envOr)("BRAND_NAME", "\u0647\u062F\u0646\u0627\u06AF\u0644\u062F"); + } + function brandSiteUrl() { + return (0, env_12.envOr)("BRAND_SITE_URL", "https://bnk.montzar.ir"); + } + } +}); + +// dist/modules/orders/orders.service.js +var require_orders_service = __commonJS({ + "dist/modules/orders/orders.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var OrdersService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OrdersService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var catalog_service_1 = require_catalog_service(); + var ledger_service_1 = require_ledger_service(); + var accounting_hooks_service_1 = require_accounting_hooks_service(); + var wage_service_1 = require_wage_service(); + var sms_service_12 = require_sms_service(); + var brand_1 = require_brand(); + var OrdersService = OrdersService_1 = class OrdersService { + prisma; + catalog; + ledger; + accounting; + wage; + sms; + logger = new common_12.Logger(OrdersService_1.name); + constructor(prisma, catalog, ledger, accounting, wage, sms) { + this.prisma = prisma; + this.catalog = catalog; + this.ledger = ledger; + this.accounting = accounting; + this.wage = wage; + this.sms = sms; + } + /** + * Places a stock order. Per line item: + * w = rashWeightGrams * (1 + (wagePercent - discountPercent) / 100) + * mirrors legacy ApiMobileController::setOrder. Debt is NOT posted here — + * only while the order is delivered (see updateStatus / syncOrderDebt). + */ + /** + * @param customerId taken from the caller's token by the controller, NEVER + * from the request body. The body's `customerId` is ignored; see the note + * on CreateOrderDto. + */ + async createOrder(dto, customerId, opts = { placedBy: "operator" }) { + const customer = await this.prisma.customer.findUnique({ where: { id: customerId } }); + if (!customer) + throw new common_12.NotFoundException(`Customer ${customerId} not found`); + if (opts.placedBy === "customer" && !customer.canPlaceOrders) { + throw new common_12.ForbiddenException("\u062B\u0628\u062A \u0633\u0641\u0627\u0631\u0634 \u0628\u0631\u0627\u06CC \u062D\u0633\u0627\u0628 \u0634\u0645\u0627 \u0641\u0639\u0644\u0627\u064B \u063A\u06CC\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062A. \u0644\u0637\u0641\u0627\u064B \u0628\u0627 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u062A\u0645\u0627\u0633 \u0628\u06AF\u06CC\u0631\u06CC\u062F."); + } + if (dto.customerId && dto.customerId !== customerId) { + this.logger.warn(`Order body carried customerId=${dto.customerId} but the token is ${customerId}; the token wins.`); + } + const quotes = opts.placedBy === "customer" ? await this.wage.quote(customerId, dto.items.map((i) => i.productVariantId)) : null; + const computedItems = await Promise.all(dto.items.map(async (item) => { + const variant = await this.catalog.getVariantOrThrow(item.productVariantId); + const rashWeight = new client_1.Prisma.Decimal(variant.rashWeightGrams); + const quote = quotes?.get(variant.id); + if (quotes && !quote) + throw new common_12.NotFoundException(`Variant ${variant.id} not found`); + const wagePercent = new client_1.Prisma.Decimal(quote ? quote.wagePercentSnapshot : item.wagePercent); + const discountPercent = new client_1.Prisma.Decimal(quote ? quote.discountPercentSnapshot : item.discountPercent ?? 0); + const flatRialCharge2 = quotes ? new client_1.Prisma.Decimal(variant.rialWage ?? 0) : new client_1.Prisma.Decimal(item.flatRialCharge ?? 0); + if (quote) + this.warnOnPriceMismatch(variant.id, item, wagePercent, discountPercent, flatRialCharge2); + const netPercent = wagePercent.sub(discountPercent); + const computedWeightGrams = rashWeight.mul(netPercent.div(100).add(1)); + return { + productVariantId: variant.id, + quantity: item.quantity, + rashWeightGramsSnapshot: rashWeight, + wagePercentSnapshot: wagePercent, + discountPercentSnapshot: discountPercent, + computedWeightGrams, + flatRialCharge: flatRialCharge2 + }; + })); + const totalGoldWeightGrams = computedItems.reduce((sum, item) => sum.add(item.computedWeightGrams.mul(item.quantity)), new client_1.Prisma.Decimal(0)); + const totalRashWeightGrams = computedItems.reduce((sum, item) => sum.add(item.rashWeightGramsSnapshot.mul(item.quantity)), new client_1.Prisma.Decimal(0)); + const wageWeightGrams = totalGoldWeightGrams.sub(totalRashWeightGrams); + const flatRialCharge = computedItems.reduce((sum, item) => sum.add(item.flatRialCharge.mul(item.quantity)), new client_1.Prisma.Decimal(0)); + const isSuspendedOverCreditLimit = totalGoldWeightGrams.add(customer.goldDebtGrams).gt(customer.goldCreditLimitGrams); + const initialStatus = isSuspendedOverCreditLimit ? client_1.OrderStatus.SUSPENDED : client_1.OrderStatus.PLACED; + const channel = opts.placedBy === "customer" ? client_1.OrderChannel.WHOLESALE : dto.channel ?? client_1.OrderChannel.RETAIL; + if (opts.placedBy === "customer" && dto.channel && dto.channel !== client_1.OrderChannel.WHOLESALE) { + this.logger.warn(`Order body carried channel=${dto.channel} from the app; forcing WHOLESALE.`); + } + const placed = await this.prisma.$transaction(async (tx) => { + const order = await tx.order.create({ + data: { + orderNumber: await this.nextOrderNumber(tx), + customerId, + branchId: dto.branchId, + channel, + status: initialStatus, + totalGoldWeightGrams, + wageWeightGrams, + flatRialCharge, + isSuspendedOverCreditLimit, + // Legacy `'reagent_id' => auth()->user()->reagent_id` + // (ApiMobileController.php:601): the customer's expert at THIS + // moment, fixed on the order so a later change of expert never moves + // past sales (owner ruling 2026-10-08). + salesAgentId: customer.referredByAgentId, + items: { + create: computedItems.map((item) => ({ + productVariantId: item.productVariantId, + quantity: item.quantity, + rashWeightGramsSnapshot: item.rashWeightGramsSnapshot, + wagePercentSnapshot: item.wagePercentSnapshot, + discountPercentSnapshot: item.discountPercentSnapshot, + computedWeightGrams: item.computedWeightGrams, + flatRialCharge: item.flatRialCharge + })) + }, + statusEvents: { + create: { toStatus: initialStatus, note: isSuspendedOverCreditLimit ? "Credit limit exceeded" : void 0 } + } + }, + include: { items: true, statusEvents: true } + }); + await this.accounting.orderStatusReached(tx, order.id, initialStatus); + return order; + }); + if (opts.actingAsExpertId) { + this.logger.log(`Order ${placed.orderNumber} for customer ${customerId} was placed by sales expert ${opts.actingAsExpertId} acting as them.`); + } + this.notifyOrderPlaced(placed.orderNumber, customer, totalGoldWeightGrams, isSuspendedOverCreditLimit); + return placed; + } + /** + * MON-08 step 2: the server's own figures are what the order is charged, but + * a client that sent something else is worth seeing. An ordinary app sends + * exactly what the server derives (DECISIONS §"Report — MON-08"), so a + * mismatch means a stale app version, a promotion that expired between the + * product page and checkout, or a tampered request. + * + * Flat Rial is the variant's `rialWage` (اجرت ریالی); the client's number is + * ignored and logged when it differs. + */ + warnOnPriceMismatch(variantId, sent, wagePercent, discountPercent, flatRialCharge) { + const differs = []; + if (!wagePercent.eq(sent.wagePercent)) { + differs.push(`wagePercent sent=${sent.wagePercent} used=${wagePercent.toString()}`); + } + if (!discountPercent.eq(sent.discountPercent ?? 0)) { + differs.push(`discountPercent sent=${sent.discountPercent ?? 0} used=${discountPercent.toString()}`); + } + if (!flatRialCharge.eq(sent.flatRialCharge ?? 0)) { + differs.push(`flatRialCharge sent=${sent.flatRialCharge ?? 0} used=${flatRialCharge.toString()}`); + } + if (differs.length) { + this.logger.warn(`Order pricing for variant ${variantId}: the server's figures are used, the client's are ignored \u2014 ${differs.join("; ")}`); + } + } + /** + * The admins who are told a new order was placed. + * + * Legacy hardcoded four numbers (ApiMobileController.php:740-743); this reads + * a comma-separated env var, as the complete-profile notifier already does. + * Unset means nobody is notified and the order itself still goes through. + */ + adminMobiles() { + return (process.env.ORDER_ADMIN_MOBILES ?? "").split(",").map((m) => m.trim()).filter(Boolean); + } + /** + * Legacy ApiMobileController::setOrder:733-766, brand read from BRAND_NAME. + * + * Three audiences: the admins, the customer, and the customer's sales expert. + * Legacy's fourth message — «در سیستم ویرایش شد» (:734-737) — is + * «عمداً تکرار نشد»: no target path lets a customer edit a placed order, so + * that branch could never fire. + * + * `Notify::store` sat beside each of these in legacy (Firebase push); that is + * PUSH-01, deferred to the PWA port. + */ + notifyOrderPlaced(orderNumber, customer, totalGoldWeightGrams, isSuspendedOverCreditLimit) { + const fire = (to, body) => { + void this.sms.send(to, body).catch((e) => { + this.logger.error(`Order SMS to ${to} failed: ${String(e)}`); + }); + }; + const name = `${customer.firstName ?? ""} ${customer.lastName ?? ""}`.trim(); + const weight = totalGoldWeightGrams.toDecimalPlaces(2).toString(); + const adminMessage = `${(0, brand_1.brandName)()} +\u0633\u0641\u0627\u0631\u0634\u06CC \u062A\u0648\u0633\u0637 ${name} + \u0628\u0647 \u0648\u0632\u0646 ${weight} +\u062F\u0631 \u0633\u06CC\u0633\u062A\u0645 \u062B\u0628\u062A \u0634\u062F.`; + for (const admin of this.adminMobiles()) + fire(admin, adminMessage); + fire(customer.mobile, isSuspendedOverCreditLimit ? `\u0633\u0641\u0627\u0631\u0634 \u0634\u0645\u0627 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 ${orderNumber} \u0628\u0647 \u062B\u0628\u062A \u0631\u0633\u06CC\u062F \u0627\u0645\u0627 \u0628\u0647 \u062F\u0644\u06CC\u0644 \u0639\u0628\u0648\u0631 \u0627\u0632 \u0633\u0642\u0641 \u0645\u062C\u0627\u0632 \u06AF\u0631\u0645\u06CC \u062F\u0631 \u062D\u0627\u0644\u062A \u0645\u0639\u0644\u0642 \u0642\u0631\u0627\u0631 \u06AF\u0631\u0641\u062A. ${(0, brand_1.brandName)()}` : `\u0633\u0641\u0627\u0631\u0634 \u0634\u0645\u0627 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 ${orderNumber} \u0628\u0647 \u062B\u0628\u062A \u0631\u0633\u06CC\u062F. ${(0, brand_1.brandName)()}`); + if (customer.referredByAgentId) { + void this.notifySalesAgent(customer.referredByAgentId, name, orderNumber, weight); + } + } + /** Legacy :762-765 — the referring expert is texted too. */ + async notifySalesAgent(agentId, customerName, orderNumber, weight) { + try { + const agent = await this.prisma.adminUser.findUnique({ + where: { id: agentId }, + select: { mobile: true } + }); + if (!agent?.mobile) + return; + await this.sms.send(agent.mobile, `${(0, brand_1.brandName)()} +\u0633\u0641\u0627\u0631\u0634\u06CC \u062A\u0648\u0633\u0637 ${customerName} \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 ${orderNumber}\u0648 \u0628\u0647 \u0648\u0632\u0646 ${weight} \u0628\u0647 \u062B\u0628\u062A \u0631\u0633\u06CC\u062F.`); + } catch (e) { + this.logger.error(`Order SMS to sales agent ${agentId} failed: ${String(e)}`); + } + } + async updateStatus(orderId, newStatus, actorAdminUserId, note) { + return this.prisma.$transaction(async (tx) => { + const order = await tx.order.findUnique({ where: { id: orderId } }); + if (!order) + throw new common_12.NotFoundException(`Order ${orderId} not found`); + const updated = await tx.order.update({ + where: { id: orderId }, + data: { + status: newStatus, + deliveredAt: newStatus === client_1.OrderStatus.DELIVERED_TO_CUSTOMER ? /* @__PURE__ */ new Date() : order.deliveredAt + } + }); + await tx.orderStatusEvent.create({ + data: { orderId, fromStatus: order.status, toStatus: newStatus, note, actorAdminId: actorAdminUserId } + }); + await this.ledger.syncOrderDebt(orderId, tx); + if (newStatus === client_1.OrderStatus.CANCELLED && order.status !== client_1.OrderStatus.CANCELLED) { + await this.accounting.orderCancelled(tx, orderId); + } else if (newStatus !== order.status) { + await this.accounting.orderStatusReached(tx, orderId, newStatus); + } + return updated; + }); + } + /** Unscoped read. Only reachable from the admin-guarded route. */ + getById(orderId) { + return this.prisma.order.findUnique({ + where: { id: orderId }, + include: { items: true, statusEvents: true, ledgerEntries: true } + }); + } + /** + * A customer reading one of their own orders. + * + * Someone else's order is reported as 404, not 403: a 403 would confirm the + * id exists, which is the same enumeration leak the id-addressed customer + * routes had. + */ + async getOwnedById(orderId, customerId) { + const order = await this.prisma.order.findFirst({ + where: { id: orderId, customerId }, + include: { items: true, statusEvents: true, ledgerEntries: true } + }); + if (!order) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return order; + } + /** + * Short global sequential number for the customer, SMS and search + * (`100`, `101`, …). Allocated from Postgres `order_number_seq` inside the + * placement transaction so concurrent creates cannot collide. Legacy used + * the auto-increment order id the same way; the old `ORD-{ts}-{rand}` form + * was too long for SMS and the list UI. + */ + async nextOrderNumber(tx) { + const rows = await tx.$queryRaw` + SELECT nextval('order_number_seq') AS n + `; + const n = rows[0]?.n; + if (n === void 0 || n === null) { + throw new Error("order_number_seq returned no value"); + } + return String(n); + } + }; + exports2.OrdersService = OrdersService; + exports2.OrdersService = OrdersService = OrdersService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + catalog_service_1.CatalogService, + ledger_service_1.LedgerService, + accounting_hooks_service_1.AccountingHooksService, + wage_service_1.WageService, + sms_service_12.SmsService + ]) + ], OrdersService); + } +}); + +// dist/modules/orders/order-revision.service.js +var require_order_revision_service = __commonJS({ + "dist/modules/orders/order-revision.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var OrderRevisionService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OrderRevisionService = exports2.ORDER_EDIT_STATUSES_KEY = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var ledger_service_1 = require_ledger_service(); + var sms_service_12 = require_sms_service(); + var brand_1 = require_brand(); + exports2.ORDER_EDIT_STATUSES_KEY = "order.edit.editableStatuses"; + var DEFAULT_EDITABLE = [ + client_1.OrderStatus.PLACED, + client_1.OrderStatus.ADMIN_APPROVED, + client_1.OrderStatus.SOURCING, + client_1.OrderStatus.PREPARING + ]; + var OrderRevisionService = OrderRevisionService_1 = class OrderRevisionService { + prisma; + ledger; + sms; + logger = new common_12.Logger(OrderRevisionService_1.name); + constructor(prisma, ledger, sms) { + this.prisma = prisma; + this.ledger = ledger; + this.sms = sms; + } + async editableStatuses() { + const row = await this.prisma.setting.findUnique({ where: { key: exports2.ORDER_EDIT_STATUSES_KEY } }); + if (!row?.value) { + await this.prisma.setting.upsert({ + where: { key: exports2.ORDER_EDIT_STATUSES_KEY }, + create: { key: exports2.ORDER_EDIT_STATUSES_KEY, value: DEFAULT_EDITABLE }, + update: {} + }); + return [...DEFAULT_EDITABLE]; + } + const raw = row.value; + const list = Array.isArray(raw) ? raw : raw?.statuses; + if (!Array.isArray(list)) + return [...DEFAULT_EDITABLE]; + const allowed = new Set(Object.values(client_1.OrderStatus)); + const parsed = list.map((s) => String(s)).filter((s) => allowed.has(s)); + return parsed.length ? parsed : [...DEFAULT_EDITABLE]; + } + async pendingForOrder(orderId) { + return this.prisma.orderRevision.findFirst({ + where: { orderId, appliedAt: null, discardedAt: null }, + orderBy: { createdAt: "desc" } + }); + } + /** + * Admin proposes a full replace of line items. Does not mutate Order items + * until the customer confirms (or admin force-applies). + */ + async propose(orderId, lines, adminId, note) { + if (!lines?.length) + throw new common_12.BadRequestException("\u062D\u062F\u0627\u0642\u0644 \u06CC\u06A9 \u0622\u06CC\u062A\u0645 \u0628\u0631\u0627\u06CC \u0633\u0641\u0627\u0631\u0634 \u0644\u0627\u0632\u0645 \u0627\u0633\u062A"); + const order = await this.prisma.order.findUnique({ + where: { id: orderId }, + include: { customer: true } + }); + if (!order) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (order.status === client_1.OrderStatus.CANCELLED) { + throw new common_12.BadRequestException("\u0633\u0641\u0627\u0631\u0634 \u0644\u063A\u0648\u200C\u0634\u062F\u0647 \u0642\u0627\u0628\u0644 \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0646\u06CC\u0633\u062A"); + } + const editable = await this.editableStatuses(); + if (!editable.includes(order.status)) { + throw new common_12.BadRequestException("\u062F\u0631 \u0627\u06CC\u0646 \u0645\u0631\u062D\u0644\u0647 \u0627\u0632 \u0633\u0641\u0627\u0631\u0634 \u0627\u0645\u06A9\u0627\u0646 \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F"); + } + const existingPending = await this.pendingForOrder(orderId); + if (existingPending) { + throw new common_12.BadRequestException("\u06CC\u06A9 \u067E\u06CC\u0634\u0646\u0647\u0627\u062F \u0648\u06CC\u0631\u0627\u06CC\u0634 \u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u062A\u0623\u06CC\u06CC\u062F \u0645\u0634\u062A\u0631\u06CC \u0627\u0633\u062A. \u0627\u0628\u062A\u062F\u0627 \u0622\u0646 \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06CC\u0627 \u0644\u063A\u0648 \u06A9\u0646\u06CC\u062F."); + } + const computed = await this.computeLines(lines); + const totals = this.sumTotals(computed); + const revision = await this.prisma.$transaction(async (tx) => { + const rev = await tx.orderRevision.create({ + data: { + orderId, + items: computed, + totalGoldWeightGrams: totals.totalGoldWeightGrams, + wageWeightGrams: totals.wageWeightGrams, + flatRialCharge: totals.flatRialCharge, + proposedByAdminId: adminId, + note: note?.trim() || null + } + }); + await tx.order.update({ + where: { id: orderId }, + data: { revisionStatus: client_1.OrderRevisionStatus.AWAITING_CUSTOMER } + }); + return rev; + }); + this.notifyCustomerEdit(order.orderNumber, order.customer.mobile); + return this.shapeRevision(revision); + } + /** Customer accepts → apply lines to the live order. */ + async confirm(orderId, customerId) { + const order = await this.requireOwnedPending(orderId, customerId); + const pending = await this.pendingForOrder(orderId); + if (!pending) + throw new common_12.BadRequestException("\u067E\u06CC\u0634\u0646\u0647\u0627\u062F \u0648\u06CC\u0631\u0627\u06CC\u0634\u06CC \u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u0646\u06CC\u0633\u062A"); + await this.applyRevision(pending.id, { customerDecision: "ACCEPTED" }); + return this.prisma.order.findUnique({ + where: { id: order.id }, + include: { items: true, statusEvents: true } + }); + } + /** + * Customer rejects → stay AWAITING_CUSTOMER until admin force-applies or discards. + */ + async reject(orderId, customerId) { + const order = await this.requireOwnedPending(orderId, customerId); + const pending = await this.pendingForOrder(orderId); + if (!pending) + throw new common_12.BadRequestException("\u067E\u06CC\u0634\u0646\u0647\u0627\u062F \u0648\u06CC\u0631\u0627\u06CC\u0634\u06CC \u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u0646\u06CC\u0633\u062A"); + await this.prisma.orderRevision.update({ + where: { id: pending.id }, + data: { customerDecision: "REJECTED", customerDecidedAt: /* @__PURE__ */ new Date() } + }); + return { orderId: order.id, revisionStatus: client_1.OrderRevisionStatus.AWAITING_CUSTOMER, decision: "REJECTED" }; + } + /** Admin applies the pending proposal without waiting for the customer. */ + async forceApply(orderId, _adminId) { + const pending = await this.pendingForOrder(orderId); + if (!pending) + throw new common_12.BadRequestException("\u067E\u06CC\u0634\u0646\u0647\u0627\u062F \u0648\u06CC\u0631\u0627\u06CC\u0634\u06CC \u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u0646\u06CC\u0633\u062A"); + await this.applyRevision(pending.id, { customerDecision: pending.customerDecision ?? "ACCEPTED" }); + return this.pendingSummary(orderId); + } + /** Admin drops the proposal; live order unchanged. */ + async discard(orderId, _adminId) { + const pending = await this.pendingForOrder(orderId); + if (!pending) + throw new common_12.BadRequestException("\u067E\u06CC\u0634\u0646\u0647\u0627\u062F \u0648\u06CC\u0631\u0627\u06CC\u0634\u06CC \u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u0646\u06CC\u0633\u062A"); + await this.prisma.$transaction(async (tx) => { + await tx.orderRevision.update({ + where: { id: pending.id }, + data: { discardedAt: /* @__PURE__ */ new Date() } + }); + await tx.order.update({ + where: { id: orderId }, + data: { revisionStatus: client_1.OrderRevisionStatus.NONE } + }); + }); + return { success: true }; + } + shapeRevision(r) { + return { + id: r.id, + orderId: r.orderId, + items: r.items, + totalGoldWeightGrams: r.totalGoldWeightGrams.toString(), + wageWeightGrams: r.wageWeightGrams.toString(), + flatRialCharge: r.flatRialCharge.toString(), + note: r.note, + customerDecision: r.customerDecision, + customerDecidedAt: r.customerDecidedAt, + appliedAt: r.appliedAt, + discardedAt: r.discardedAt, + createdAt: r.createdAt + }; + } + async pendingSummary(orderId) { + const order = await this.prisma.order.findUnique({ + where: { id: orderId }, + include: { items: true } + }); + if (!order) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return order; + } + async requireOwnedPending(orderId, customerId) { + const order = await this.prisma.order.findUnique({ where: { id: orderId } }); + if (!order) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (order.customerId !== customerId) + throw new common_12.ForbiddenException(); + if (order.revisionStatus !== client_1.OrderRevisionStatus.AWAITING_CUSTOMER) { + throw new common_12.BadRequestException("\u0627\u06CC\u0646 \u0633\u0641\u0627\u0631\u0634 \u0645\u0646\u062A\u0638\u0631 \u062A\u0623\u06CC\u06CC\u062F \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0646\u06CC\u0633\u062A"); + } + return order; + } + async computeLines(lines) { + const out = []; + for (const line of lines) { + const qty = Math.floor(Number(line.quantity)); + if (!line.productVariantId || !Number.isFinite(qty) || qty < 1) { + throw new common_12.BadRequestException("\u0622\u06CC\u062A\u0645 \u0633\u0641\u0627\u0631\u0634 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"); + } + const variant = await this.prisma.productVariant.findUnique({ + where: { id: line.productVariantId } + }); + if (!variant) + throw new common_12.NotFoundException(`\u062A\u0646\u0648\u0639 ${line.productVariantId} \u06CC\u0627\u0641\u062A \u0646\u0634\u062F`); + const rash = new client_1.Prisma.Decimal(line.rashWeightGrams != null ? line.rashWeightGrams : variant.rashWeightGrams); + const wage = new client_1.Prisma.Decimal(line.wagePercent != null ? line.wagePercent : variant.defaultWagePercent); + const discount = new client_1.Prisma.Decimal(line.discountPercent ?? 0); + const computed = line.grams != null ? new client_1.Prisma.Decimal(line.grams) : rash.mul(wage.sub(discount).div(100).add(1)); + const flat = new client_1.Prisma.Decimal(line.flatRialCharge ?? variant.rialWage ?? 0); + out.push({ + productVariantId: variant.id, + quantity: qty, + rashWeightGramsSnapshot: rash.toString(), + wagePercentSnapshot: wage.toString(), + discountPercentSnapshot: discount.toString(), + computedWeightGrams: computed.toString(), + flatRialCharge: flat.toString() + }); + } + return out; + } + sumTotals(lines) { + let totalGold = new client_1.Prisma.Decimal(0); + let totalRash = new client_1.Prisma.Decimal(0); + let flat = new client_1.Prisma.Decimal(0); + for (const line of lines) { + totalGold = totalGold.add(new client_1.Prisma.Decimal(line.computedWeightGrams).mul(line.quantity)); + totalRash = totalRash.add(new client_1.Prisma.Decimal(line.rashWeightGramsSnapshot).mul(line.quantity)); + flat = flat.add(new client_1.Prisma.Decimal(line.flatRialCharge).mul(line.quantity)); + } + return { + totalGoldWeightGrams: totalGold, + wageWeightGrams: totalGold.sub(totalRash), + flatRialCharge: flat + }; + } + async applyRevision(revisionId, opts) { + await this.prisma.$transaction(async (tx) => { + const rev = await tx.orderRevision.findUnique({ where: { id: revisionId } }); + if (!rev || rev.appliedAt || rev.discardedAt) { + throw new common_12.BadRequestException("\u067E\u06CC\u0634\u0646\u0647\u0627\u062F \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0642\u0627\u0628\u0644 \u0627\u0639\u0645\u0627\u0644 \u0646\u06CC\u0633\u062A"); + } + const items = rev.items; + if (!Array.isArray(items) || !items.length) { + throw new common_12.BadRequestException("\u0622\u06CC\u062A\u0645\u200C\u0647\u0627\u06CC \u067E\u06CC\u0634\u0646\u0647\u0627\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"); + } + await tx.orderItem.deleteMany({ where: { orderId: rev.orderId } }); + await tx.orderItem.createMany({ + data: items.map((it) => ({ + orderId: rev.orderId, + productVariantId: it.productVariantId, + quantity: it.quantity, + rashWeightGramsSnapshot: new client_1.Prisma.Decimal(it.rashWeightGramsSnapshot), + wagePercentSnapshot: new client_1.Prisma.Decimal(it.wagePercentSnapshot), + discountPercentSnapshot: new client_1.Prisma.Decimal(it.discountPercentSnapshot), + computedWeightGrams: new client_1.Prisma.Decimal(it.computedWeightGrams), + flatRialCharge: new client_1.Prisma.Decimal(it.flatRialCharge) + })) + }); + await tx.order.update({ + where: { id: rev.orderId }, + data: { + totalGoldWeightGrams: rev.totalGoldWeightGrams, + wageWeightGrams: rev.wageWeightGrams, + flatRialCharge: rev.flatRialCharge, + revisionStatus: client_1.OrderRevisionStatus.NONE + } + }); + await tx.orderRevision.update({ + where: { id: rev.id }, + data: { + appliedAt: /* @__PURE__ */ new Date(), + customerDecision: opts.customerDecision, + customerDecidedAt: /* @__PURE__ */ new Date() + } + }); + await this.ledger.syncOrderDebt(rev.orderId, tx); + }); + } + notifyCustomerEdit(orderNumber, mobile) { + const body = `\u0633\u0641\u0627\u0631\u0634 \u0634\u0645\u0627 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 ${orderNumber} \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u062F\u0647 \u0648 \u0645\u0646\u062A\u0638\u0631 \u062A\u0623\u06CC\u06CC\u062F \u0634\u0645\u0627\u0633\u062A. \u062C\u0632\u0626\u06CC\u0627\u062A \u0631\u0627 \u062F\u0631 \u0627\u067E \u0628\u0628\u06CC\u0646\u06CC\u062F. ${(0, brand_1.brandName)()}`; + void this.sms.send(mobile, body).catch((e) => { + this.logger.error(`Order-edit SMS to ${mobile} failed: ${String(e)}`); + }); + } + }; + exports2.OrderRevisionService = OrderRevisionService; + exports2.OrderRevisionService = OrderRevisionService = OrderRevisionService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + ledger_service_1.LedgerService, + sms_service_12.SmsService + ]) + ], OrderRevisionService); + } +}); + +// dist/modules/orders/dto/create-order.dto.js +var require_create_order_dto = __commonJS({ + "dist/modules/orders/dto/create-order.dto.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CreateOrderDto = exports2.CreateOrderItemInputDto = void 0; + var class_transformer_1 = require_cjs2(); + var client_1 = require("@prisma/client"); + var class_validator_1 = require_cjs(); + var CreateOrderItemInputDto = class { + productVariantId; + quantity; + /** Making-charge percentage negotiated for this order (may differ from the variant default). */ + wagePercent; + discountPercent; + /** Flat Rial charge per unit, independent of gold weight (e.g. stones). */ + flatRialCharge; + }; + exports2.CreateOrderItemInputDto = CreateOrderItemInputDto; + __decorate4([ + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], CreateOrderItemInputDto.prototype, "productVariantId", void 0); + __decorate4([ + (0, class_validator_1.IsInt)(), + (0, class_validator_1.Min)(1), + __metadata3("design:type", Number) + ], CreateOrderItemInputDto.prototype, "quantity", void 0); + __decorate4([ + (0, class_validator_1.IsNumber)(), + __metadata3("design:type", Number) + ], CreateOrderItemInputDto.prototype, "wagePercent", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsNumber)(), + __metadata3("design:type", Number) + ], CreateOrderItemInputDto.prototype, "discountPercent", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsNumber)(), + __metadata3("design:type", Number) + ], CreateOrderItemInputDto.prototype, "flatRialCharge", void 0); + var CreateOrderDto = class { + /** + * IGNORED BY THE SERVER. The customer is taken from the caller's token. + * + * It was required, and the route was public, so anyone could place an order + * on any customer's account — which lands on their gold debt and their + * ledger. Logged as SEC-02 in docs/parity/ISSUES.md. + * + * Kept as an optional field only so the two apps, which still send it, do not + * fail validation mid-flight. OrdersService logs a mismatch and always uses + * the token. Removed from the DTO and from both apps in Phase 2. + */ + customerId; + branchId; + /** + * Which sales channel placed the order. Legacy had no such field because the + * two channels lived in separate tables (orders vs orders_orders); the one + * Order model carries the distinction here. + * + * On the customer (app) path the server forces WHOLESALE and ignores this + * field. Operators may set it; admin MakeOrder always sends WHOLESALE. + * Default when an operator omits it remains RETAIL (retail list builder). + */ + channel; + items; + }; + exports2.CreateOrderDto = CreateOrderDto; + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], CreateOrderDto.prototype, "customerId", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], CreateOrderDto.prototype, "branchId", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsEnum)(client_1.OrderChannel), + __metadata3("design:type", String) + ], CreateOrderDto.prototype, "channel", void 0); + __decorate4([ + (0, class_validator_1.IsArray)(), + (0, class_validator_1.ArrayMinSize)(1), + (0, class_validator_1.ValidateNested)({ each: true }), + (0, class_transformer_1.Type)(() => CreateOrderItemInputDto), + __metadata3("design:type", Array) + ], CreateOrderDto.prototype, "items", void 0); + } +}); + +// dist/modules/orders/dto/update-order-status.dto.js +var require_update_order_status_dto = __commonJS({ + "dist/modules/orders/dto/update-order-status.dto.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UpdateOrderStatusDto = void 0; + var class_validator_1 = require_cjs(); + var client_1 = require("@prisma/client"); + var UpdateOrderStatusDto = class { + status; + note; + actorAdminUserId; + }; + exports2.UpdateOrderStatusDto = UpdateOrderStatusDto; + __decorate4([ + (0, class_validator_1.IsEnum)(client_1.OrderStatus), + __metadata3("design:type", String) + ], UpdateOrderStatusDto.prototype, "status", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], UpdateOrderStatusDto.prototype, "note", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], UpdateOrderStatusDto.prototype, "actorAdminUserId", void 0); + } +}); + +// dist/modules/customer-auth/customer.guards.js +var require_customer_guards = __commonJS({ + "dist/modules/customer-auth/customer.guards.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CurrentCustomer = exports2.CustomerAuth = exports2.CustomerJwtGuard = void 0; + var common_12 = require_common(); + var passport_1 = require_passport(); + var guards_1 = require_guards2(); + var common_2 = require_common(); + var CustomerJwtGuard = class CustomerJwtGuard extends (0, passport_1.AuthGuard)("customer-jwt") { + }; + exports2.CustomerJwtGuard = CustomerJwtGuard; + exports2.CustomerJwtGuard = CustomerJwtGuard = __decorate4([ + (0, common_12.Injectable)() + ], CustomerJwtGuard); + var CustomerAuth = () => (0, common_2.applyDecorators)((0, guards_1.Public)(), (0, common_2.UseGuards)(CustomerJwtGuard)); + exports2.CustomerAuth = CustomerAuth; + exports2.CurrentCustomer = (0, common_12.createParamDecorator)((_data, ctx) => ctx.switchToHttp().getRequest().user); + } +}); + +// dist/modules/orders/orders.controller.js +var require_orders_controller = __commonJS({ + "dist/modules/orders/orders.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OrdersController = void 0; + var common_12 = require_common(); + var orders_service_1 = require_orders_service(); + var create_order_dto_1 = require_create_order_dto(); + var update_order_status_dto_1 = require_update_order_status_dto(); + var guards_1 = require_guards2(); + var customer_guards_1 = require_customer_guards(); + var OrdersController = class OrdersController { + orders; + constructor(orders) { + this.orders = orders; + } + /** + * The customer comes from the token; the body's `customerId` is ignored. + * + * `me.id` is already the right customer when a sales expert is acting as one + * of theirs, so such an order lands on that customer's account and ledger with + * server-side pricing (MON-08) exactly like one they placed themselves — which + * is what the reference did by lending the expert the customer's token. + * `actingAsExpertId` records who actually placed it, which the reference could + * not do. + */ + create(dto, me) { + return this.orders.createOrder(dto, me.id, { + placedBy: "customer", + actingAsExpertId: me.actingAsCustomerId ? me.adminUserId : void 0 + }); + } + /** + * Unscoped read for operators. + * + * Declared BEFORE the `:id` route below: Nest matches in declaration order, + * so a literal segment that could also be read as a parameter has to come + * first or it is never reached. + */ + getAsAdmin(id) { + return this.orders.getById(id); + } + /** + * A customer reading one of their own orders. Scoped by token; someone + * else's order is a 404 rather than a 403, so ids stay unenumerable. + * + * Mounted under /orders/:id (not /customer/me/orders/:id) so the existing + * client paths keep working; it is the scoping that matters, not the shape. + */ + get(id, me) { + return this.orders.getOwnedById(id, me.id); + } + updateStatus(id, dto) { + return this.orders.updateStatus(id, dto.status, dto.actorAdminUserId, dto.note); + } + }; + exports2.OrdersController = OrdersController; + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)(), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [create_order_dto_1.CreateOrderDto, Object]), + __metadata3("design:returntype", void 0) + ], OrdersController.prototype, "create", null); + __decorate4([ + (0, common_12.Get)("admin/:id"), + (0, guards_1.RequirePermission)("order.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], OrdersController.prototype, "getAsAdmin", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Get)(":id"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], OrdersController.prototype, "get", null); + __decorate4([ + (0, common_12.Patch)(":id/status"), + (0, guards_1.RequirePermission)("order.list.sts.submit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, update_order_status_dto_1.UpdateOrderStatusDto]), + __metadata3("design:returntype", void 0) + ], OrdersController.prototype, "updateStatus", null); + exports2.OrdersController = OrdersController = __decorate4([ + (0, common_12.Controller)("orders"), + __metadata3("design:paramtypes", [orders_service_1.OrdersService]) + ], OrdersController); + } +}); + +// dist/modules/accounting/dto/post-gold-repayment.dto.js +var require_post_gold_repayment_dto = __commonJS({ + "dist/modules/accounting/dto/post-gold-repayment.dto.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PostGoldRepaymentDto = void 0; + var class_validator_1 = require_cjs(); + var PostGoldRepaymentDto = class { + customerId; + instrument; + rawValue; + karatPerMille; + pricePerGramRial; + note; + }; + exports2.PostGoldRepaymentDto = PostGoldRepaymentDto; + __decorate4([ + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], PostGoldRepaymentDto.prototype, "customerId", void 0); + __decorate4([ + (0, class_validator_1.IsIn)(["MELTED_GOLD", "TRANSFER", "CHEQUE", "CASH"]), + __metadata3("design:type", String) + ], PostGoldRepaymentDto.prototype, "instrument", void 0); + __decorate4([ + (0, class_validator_1.IsNumber)(), + (0, class_validator_1.IsPositive)(), + __metadata3("design:type", Number) + ], PostGoldRepaymentDto.prototype, "rawValue", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsNumber)(), + __metadata3("design:type", Number) + ], PostGoldRepaymentDto.prototype, "karatPerMille", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsNumber)(), + (0, class_validator_1.IsPositive)(), + __metadata3("design:type", Number) + ], PostGoldRepaymentDto.prototype, "pricePerGramRial", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], PostGoldRepaymentDto.prototype, "note", void 0); + } +}); + +// dist/modules/accounting/dto/post-rial-repayment.dto.js +var require_post_rial_repayment_dto = __commonJS({ + "dist/modules/accounting/dto/post-rial-repayment.dto.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PostRialRepaymentDto = void 0; + var class_validator_1 = require_cjs(); + var PostRialRepaymentDto = class { + customerId; + amount; + note; + }; + exports2.PostRialRepaymentDto = PostRialRepaymentDto; + __decorate4([ + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], PostRialRepaymentDto.prototype, "customerId", void 0); + __decorate4([ + (0, class_validator_1.IsNumber)(), + (0, class_validator_1.IsPositive)(), + __metadata3("design:type", Number) + ], PostRialRepaymentDto.prototype, "amount", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], PostRialRepaymentDto.prototype, "note", void 0); + } +}); + +// dist/modules/accounting/accounting.controller.js +var require_accounting_controller = __commonJS({ + "dist/modules/accounting/accounting.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AccountingController = void 0; + var common_12 = require_common(); + var ledger_service_1 = require_ledger_service(); + var post_gold_repayment_dto_1 = require_post_gold_repayment_dto(); + var post_rial_repayment_dto_1 = require_post_rial_repayment_dto(); + var guards_1 = require_guards2(); + var AccountingController = class AccountingController { + ledger; + constructor(ledger) { + this.ledger = ledger; + } + getBalance(customerId) { + return this.ledger.getBalance(customerId); + } + reconcile(customerId) { + return this.ledger.reconcileBalance(customerId); + } + postGoldRepayment(dto) { + return this.ledger.postGoldRepayment(dto); + } + postRialRepayment(dto) { + return this.ledger.postRialRepayment(dto); + } + confirmEntry(entryId) { + return this.ledger.confirmEntry(entryId); + } + }; + exports2.AccountingController = AccountingController; + __decorate4([ + (0, common_12.Get)("customers/:customerId/balance"), + (0, guards_1.RequirePermission)("wallet.list"), + __param3(0, (0, common_12.Param)("customerId")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AccountingController.prototype, "getBalance", null); + __decorate4([ + (0, common_12.Post)("customers/:customerId/reconcile"), + (0, guards_1.RequirePermission)("wallet.charge"), + __param3(0, (0, common_12.Param)("customerId")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AccountingController.prototype, "reconcile", null); + __decorate4([ + (0, common_12.Post)("repayments/gold"), + (0, guards_1.RequirePermission)("document.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [post_gold_repayment_dto_1.PostGoldRepaymentDto]), + __metadata3("design:returntype", void 0) + ], AccountingController.prototype, "postGoldRepayment", null); + __decorate4([ + (0, common_12.Post)("repayments/rial"), + (0, guards_1.RequirePermission)("document.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [post_rial_repayment_dto_1.PostRialRepaymentDto]), + __metadata3("design:returntype", void 0) + ], AccountingController.prototype, "postRialRepayment", null); + __decorate4([ + (0, common_12.Post)("entries/:entryId/confirm"), + (0, guards_1.RequirePermission)("document.list.confirm"), + __param3(0, (0, common_12.Param)("entryId")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AccountingController.prototype, "confirmEntry", null); + exports2.AccountingController = AccountingController = __decorate4([ + (0, common_12.Controller)("accounting"), + __metadata3("design:paramtypes", [ledger_service_1.LedgerService]) + ], AccountingController); + } +}); + +// dist/modules/accounting/accounting.module.js +var require_accounting_module = __commonJS({ + "dist/modules/accounting/accounting.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AccountingModule = void 0; + var common_12 = require_common(); + var ledger_service_1 = require_ledger_service(); + var accounting_controller_1 = require_accounting_controller(); + var AccountingModule = class AccountingModule { + }; + exports2.AccountingModule = AccountingModule; + exports2.AccountingModule = AccountingModule = __decorate4([ + (0, common_12.Module)({ + controllers: [accounting_controller_1.AccountingController], + providers: [ledger_service_1.LedgerService], + exports: [ledger_service_1.LedgerService] + }) + ], AccountingModule); + } +}); + +// dist/modules/pricing/pricing.service.js +var require_pricing_service = __commonJS({ + "dist/modules/pricing/pricing.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PricingService = void 0; + var common_12 = require_common(); + var prisma_service_1 = require_prisma_service(); + var PricingService = class PricingService { + prisma; + constructor(prisma) { + this.prisma = prisma; + } + async recordQuote(karatPerMille, pricePerGramRial, source) { + return this.prisma.goldPriceQuote.create({ + data: { karatPerMille, pricePerGramRial, source } + }); + } + async getLatestQuote(karatPerMille) { + const quote = await this.prisma.goldPriceQuote.findFirst({ + where: { karatPerMille }, + orderBy: { quotedAt: "desc" } + }); + if (!quote) + throw new common_12.NotFoundException(`No gold price quote recorded for ${karatPerMille}\u2030`); + return quote; + } + }; + exports2.PricingService = PricingService; + exports2.PricingService = PricingService = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + ], PricingService); + } +}); + +// dist/modules/pricing/pricing.controller.js +var require_pricing_controller = __commonJS({ + "dist/modules/pricing/pricing.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PricingController = void 0; + var common_12 = require_common(); + var pricing_service_1 = require_pricing_service(); + var guards_1 = require_guards2(); + var PricingController = class PricingController { + pricing; + constructor(pricing) { + this.pricing = pricing; + } + getLatest(karatPerMille) { + return this.pricing.getLatestQuote(Number(karatPerMille) || 750); + } + }; + exports2.PricingController = PricingController; + __decorate4([ + (0, common_12.Get)("latest"), + __param3(0, (0, common_12.Query)("karatPerMille")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], PricingController.prototype, "getLatest", null); + exports2.PricingController = PricingController = __decorate4([ + (0, guards_1.Public)(), + (0, common_12.Controller)("pricing"), + __metadata3("design:paramtypes", [pricing_service_1.PricingService]) + ], PricingController); + } +}); + +// dist/modules/pricing/wage.controller.js +var require_wage_controller = __commonJS({ + "dist/modules/pricing/wage.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.WageCustomerController = exports2.WageAdminController = void 0; + var common_12 = require_common(); + var class_validator_1 = require_cjs(); + var guards_1 = require_guards2(); + var customer_guards_1 = require_customer_guards(); + var wage_service_1 = require_wage_service(); + var WageAdminController = class WageAdminController { + wage; + constructor(wage) { + this.wage = wage; + } + get() { + return this.wage.getConfig(); + } + /** Nothing is saved: the draft and the formula in force on the same sample. */ + preview(body) { + return this.wage.preview(body?.formula, body?.sample); + } + /** Puts the formula in force, recorded with the sample it was checked on. */ + approve(body, admin) { + return this.wage.approve(body?.formula, body?.sample, admin); + } + }; + exports2.WageAdminController = WageAdminController; + __decorate4([ + (0, common_12.Get)(), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], WageAdminController.prototype, "get", null); + __decorate4([ + (0, common_12.Post)("preview"), + (0, common_12.HttpCode)(200), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], WageAdminController.prototype, "preview", null); + __decorate4([ + (0, common_12.Put)(), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, Object]), + __metadata3("design:returntype", void 0) + ], WageAdminController.prototype, "approve", null); + exports2.WageAdminController = WageAdminController = __decorate4([ + (0, common_12.Controller)("admin/pricing/wage-formula"), + (0, guards_1.RequirePermission)("config.wage"), + __metadata3("design:paramtypes", [wage_service_1.WageService]) + ], WageAdminController); + var WageQuoteDto = class { + variantIds; + }; + __decorate4([ + (0, class_validator_1.IsArray)(), + (0, class_validator_1.ArrayMaxSize)(200), + (0, class_validator_1.IsString)({ each: true }), + __metadata3("design:type", Array) + ], WageQuoteDto.prototype, "variantIds", void 0); + var WageCustomerController = class WageCustomerController { + wage; + constructor(wage) { + this.wage = wage; + } + async quote(dto, me) { + return [...(await this.wage.quote(me.id, dto.variantIds)).values()]; + } + }; + exports2.WageCustomerController = WageCustomerController; + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)(), + (0, common_12.HttpCode)(200), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [WageQuoteDto, Object]), + __metadata3("design:returntype", Promise) + ], WageCustomerController.prototype, "quote", null); + exports2.WageCustomerController = WageCustomerController = __decorate4([ + (0, common_12.Controller)("customer/me/wage-quote"), + __metadata3("design:paramtypes", [wage_service_1.WageService]) + ], WageCustomerController); + } +}); + +// dist/modules/pricing/pricing.module.js +var require_pricing_module = __commonJS({ + "dist/modules/pricing/pricing.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PricingModule = void 0; + var common_12 = require_common(); + var pricing_service_1 = require_pricing_service(); + var pricing_controller_1 = require_pricing_controller(); + var wage_service_1 = require_wage_service(); + var wage_controller_1 = require_wage_controller(); + var PricingModule = class PricingModule { + }; + exports2.PricingModule = PricingModule; + exports2.PricingModule = PricingModule = __decorate4([ + (0, common_12.Module)({ + controllers: [pricing_controller_1.PricingController, wage_controller_1.WageAdminController, wage_controller_1.WageCustomerController], + providers: [pricing_service_1.PricingService, wage_service_1.WageService], + exports: [pricing_service_1.PricingService, wage_service_1.WageService] + }) + ], PricingModule); + } +}); + +// dist/modules/sms/sms.module.js +var require_sms_module = __commonJS({ + "dist/modules/sms/sms.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SmsModule = void 0; + var common_12 = require_common(); + var sms_service_12 = require_sms_service(); + var SmsModule = class SmsModule { + }; + exports2.SmsModule = SmsModule; + exports2.SmsModule = SmsModule = __decorate4([ + (0, common_12.Global)(), + (0, common_12.Module)({ + providers: [sms_service_12.SmsService], + exports: [sms_service_12.SmsService] + }) + ], SmsModule); + } +}); + +// dist/modules/orders/orders.module.js +var require_orders_module = __commonJS({ + "dist/modules/orders/orders.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OrdersModule = void 0; + var common_12 = require_common(); + var orders_service_1 = require_orders_service(); + var order_revision_service_1 = require_order_revision_service(); + var orders_controller_1 = require_orders_controller(); + var catalog_module_1 = require_catalog_module(); + var accounting_module_1 = require_accounting_module(); + var pricing_module_1 = require_pricing_module(); + var sms_module_1 = require_sms_module(); + var OrdersModule = class OrdersModule { + }; + exports2.OrdersModule = OrdersModule; + exports2.OrdersModule = OrdersModule = __decorate4([ + (0, common_12.Module)({ + imports: [catalog_module_1.CatalogModule, accounting_module_1.AccountingModule, pricing_module_1.PricingModule, sms_module_1.SmsModule], + controllers: [orders_controller_1.OrdersController], + providers: [orders_service_1.OrdersService, order_revision_service_1.OrderRevisionService], + exports: [orders_service_1.OrdersService, order_revision_service_1.OrderRevisionService] + }) + ], OrdersModule); + } +}); + // dist/modules/iam/iam.service.js var require_iam_service = __commonJS({ "dist/modules/iam/iam.service.js"(exports2) { @@ -87631,7 +90066,7 @@ var require_iam_service = __commonJS({ } /** * Admin return URL only. Must NOT fall back to the customer/app URL: that - * sent admins to user-app-v2 after password login whenever + * sent admins into the customer app after password login whenever * `IAM_ADMIN_BROWSER_RETURN_URL` was left blank but the customer return was set. */ adminBrowserReturnUrl() { @@ -88357,363 +90792,6 @@ var require_digits = __commonJS({ } }); -// dist/modules/sms/drivers/sms-driver.js -var require_sms_driver = __commonJS({ - "dist/modules/sms/drivers/sms-driver.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.postWithTimeout = postWithTimeout; - async function postWithTimeout(url, headers, body, timeoutMs, method = "POST") { - const controller = new AbortController(); - const timer = setTimeout(() => controller.abort(), timeoutMs); - try { - const response = await fetch(url, { - method, - headers, - body: body ?? void 0, - signal: controller.signal - }); - return { ok: response.ok, status: response.status, body: await response.text() }; - } finally { - clearTimeout(timer); - } - } - } -}); - -// dist/modules/sms/drivers/relay.driver.js -var require_relay_driver = __commonJS({ - "dist/modules/sms/drivers/relay.driver.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.relayDriver = void 0; - exports2.serverIpv4 = serverIpv4; - exports2.isPrivateIpv4 = isPrivateIpv4; - exports2.resolveRelayHost = resolveRelayHost; - exports2.resetRelayHostCache = resetRelayHostCache; - exports2.relayConfig = relayConfig; - exports2.relayRejection = relayRejection; - var node_os_1 = require("node:os"); - var env_12 = require_env(); - var sms_driver_1 = require_sms_driver(); - var DEFAULT_RELAY_URL = "http://185.231.112.101/api/createsms"; - var DEFAULT_RELAY_SECRET = "f21debfb-83ac-4624-a2f4-f08375043181"; - var REQUEST_TIMEOUT_MS = 15e3; - function serverIpv4() { - for (const addresses of Object.values((0, node_os_1.networkInterfaces)())) { - for (const a of addresses ?? []) { - if (a.family === "IPv4" && !a.internal) - return a.address; - } - } - return null; - } - function isPrivateIpv4(ip) { - return !!ip && /^(10\.|192\.168\.|172\.(1[6-9]|2\d|3[01])\.|100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\.|169\.254\.)/.test(ip); - } - var publicIpv4 = null; - var PUBLIC_IP_SERVICES = ["https://api.ipify.org", "https://ifconfig.me/ip", "https://icanhazip.com"]; - var LOOKUP_TIMEOUT_MS = 3e3; - var FAILED_LOOKUP_RETRY_MS = 10 * 60 * 1e3; - var lookup = null; - var lookupFailedAt = 0; - async function lookupPublicIpv4() { - const attempts = PUBLIC_IP_SERVICES.map(async (url) => { - const reply = await (0, sms_driver_1.postWithTimeout)(url, {}, null, LOOKUP_TIMEOUT_MS, "GET"); - const ip = reply.body.trim(); - if (reply.ok && /^\d{1,3}(\.\d{1,3}){3}$/.test(ip) && !isPrivateIpv4(ip)) - return ip; - throw new Error("not a public IPv4"); - }); - try { - publicIpv4 = await Promise.any(attempts); - } catch { - lookupFailedAt = Date.now(); - } - } - async function resolveRelayHost() { - if ((0, env_12.envOrNull)("SMS_RELAY_HOST") || publicIpv4) - return relayConfig().host; - const own = serverIpv4(); - if (!isPrivateIpv4(own)) - return own; - if (Date.now() - lookupFailedAt < FAILED_LOOKUP_RETRY_MS) - return relayConfig().host; - lookup ??= lookupPublicIpv4().finally(() => { - lookup = null; - }); - await lookup; - return relayConfig().host; - } - function resetRelayHostCache() { - publicIpv4 = null; - lookup = null; - lookupFailedAt = 0; - } - function relayConfig() { - return { - url: (0, env_12.envOr)("SMS_RELAY_URL", DEFAULT_RELAY_URL), - secret: (0, env_12.envOr)("SMS_RELAY_SECRET", DEFAULT_RELAY_SECRET), - host: (0, env_12.envOrNull)("SMS_RELAY_HOST") ?? publicIpv4 ?? serverIpv4() - }; - } - function relayRejection(body) { - const text = body.trim(); - if (text === "") - return null; - let data; - try { - data = JSON.parse(text); - } catch { - const trailing = /\{[^{}]*\}$/.exec(text); - try { - if (!trailing) - throw new Error("no json"); - data = JSON.parse(trailing[0]); - } catch { - return text.slice(0, 200); - } - } - if (!data || typeof data !== "object" || Array.isArray(data)) - return null; - const d = data; - const failedStatus = d.status === false || typeof d.status === "string" && /^(error|fail|failed|failure)$/i.test(d.status); - const failed = failedStatus || d.success === false || d.ok === false || Boolean(d.error); - if (!failed) - return null; - if (typeof d.error === "string" && d.error) - return d.error; - if (typeof d.message === "string" && d.message) - return d.message; - return "rejected-by-gateway"; - } - exports2.relayDriver = { - name: "relay", - missingConfig() { - return relayConfig().host ? [] : ["SMS_RELAY_HOST"]; - }, - async deliver(mobile, text) { - await resolveRelayHost(); - const c = relayConfig(); - const reply = await (0, sms_driver_1.postWithTimeout)(c.url, { "Content-Type": "application/json", secret_key: c.secret }, JSON.stringify({ phone: mobile, host: c.host, text }), REQUEST_TIMEOUT_MS); - if (!reply.ok) - return { ok: false, response: reply.body, error: `http-${reply.status}` }; - const rejection = relayRejection(reply.body); - if (rejection) - return { ok: false, response: reply.body, error: rejection }; - return { ok: true, response: reply.body }; - } - }; - } -}); - -// dist/modules/sms/drivers/trez.driver.js -var require_trez_driver = __commonJS({ - "dist/modules/sms/drivers/trez.driver.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.trezDriver = exports2.DEFAULT_TREZ_URL = void 0; - exports2.trezConfig = trezConfig; - var env_12 = require_env(); - var sms_driver_1 = require_sms_driver(); - exports2.DEFAULT_TREZ_URL = "https://smspanel.trez.ir/SendMessageWithCode.ashx"; - var REQUEST_TIMEOUT_MS = 2e4; - function trezConfig() { - return { - url: (0, env_12.envOr)("SMS_TREZ_URL", exports2.DEFAULT_TREZ_URL), - username: process.env.SMS_TREZ_USERNAME ?? "", - password: process.env.SMS_TREZ_PASSWORD ?? "", - senderLine: process.env.SMS_TREZ_SENDER_LINE ?? "" - }; - } - exports2.trezDriver = { - name: "trez", - missingConfig() { - const c = trezConfig(); - return [ - ["SMS_TREZ_USERNAME", c.username], - ["SMS_TREZ_PASSWORD", c.password], - ["SMS_TREZ_SENDER_LINE", c.senderLine] - ].filter(([, v]) => !v).map(([name]) => name); - }, - async deliver(mobile, text) { - const c = trezConfig(); - const reply = await (0, sms_driver_1.postWithTimeout)(c.url, { "Content-Type": "application/x-www-form-urlencoded" }, new URLSearchParams({ - PhoneNumber: c.senderLine, - Username: c.username, - Password: c.password, - Mobile: mobile, - Message: text - }).toString(), REQUEST_TIMEOUT_MS); - if (!reply.ok) - return { ok: false, response: reply.body, error: `http-${reply.status}` }; - return { ok: true, response: reply.body }; - } - }; - } -}); - -// dist/modules/sms/drivers/index.js -var require_drivers = __commonJS({ - "dist/modules/sms/drivers/index.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.DEFAULT_SMS_PROVIDER = exports2.SMS_DRIVERS = void 0; - var relay_driver_1 = require_relay_driver(); - var trez_driver_1 = require_trez_driver(); - exports2.SMS_DRIVERS = { - [relay_driver_1.relayDriver.name]: relay_driver_1.relayDriver, - [trez_driver_1.trezDriver.name]: trez_driver_1.trezDriver - }; - exports2.DEFAULT_SMS_PROVIDER = relay_driver_1.relayDriver.name; - } -}); - -// dist/modules/sms/sms.service.js -var require_sms_service = __commonJS({ - "dist/modules/sms/sms.service.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - var SmsService_1; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.SmsService = void 0; - exports2.smsProvider = smsProvider; - exports2.smsDriver = smsDriver; - exports2.smsConfigured = smsConfigured; - exports2.assertSmsConfigured = assertSmsConfigured; - var common_12 = require_common(); - var client_1 = require("@prisma/client"); - var prisma_service_1 = require_prisma_service(); - var env_12 = require_env(); - var drivers_1 = require_drivers(); - var relay_driver_1 = require_relay_driver(); - function smsProvider() { - return (0, env_12.envOr)("SMS_PROVIDER", drivers_1.DEFAULT_SMS_PROVIDER).toLowerCase(); - } - function smsDriver() { - return drivers_1.SMS_DRIVERS[smsProvider()] ?? null; - } - function smsConfigured() { - const driver = smsDriver(); - return driver !== null && driver.missingConfig().length === 0; - } - function assertSmsConfigured(logger = new common_12.Logger("SmsConfig")) { - const provider = smsProvider(); - if (provider === "none") { - logger.warn("SMS_PROVIDER=none \u2014 no SMS will be sent."); - return; - } - const driver = smsDriver(); - if (!driver) { - const supported = [...Object.keys(drivers_1.SMS_DRIVERS), "none"].map((n) => `"${n}"`).join(", "); - logger.warn(`Unknown SMS_PROVIDER "${provider}" (supported: ${supported}). No SMS will be sent.`); - return; - } - const missing = driver.missingConfig(); - if (missing.length === 0) { - logger.log(`SMS provider: ${driver.name}`); - return; - } - logger.warn(`SMS provider "${driver.name}" is selected but these are not set: ${missing.join(", ")}. Messages are logged, not sent. Customers cannot receive a login code.`); - } - var SmsService = SmsService_1 = class SmsService { - prisma; - logger = new common_12.Logger(SmsService_1.name); - constructor(prisma) { - this.prisma = prisma; - } - /** - * Reports the `host` the relay gateway will receive, so a wrong one shows in - * the boot log instead of as silent failures. Never throws and never delays - * the boot: the lookup runs in the background. - */ - onApplicationBootstrap() { - if (smsDriver()?.name !== "relay") - return; - void (0, relay_driver_1.resolveRelayHost)().then((host) => { - const source = (0, env_12.envOrNull)("SMS_RELAY_HOST") ? "SMS_RELAY_HOST" : "detected"; - if ((0, relay_driver_1.isPrivateIpv4)(host)) { - this.logger.warn(`SMS relay host is a private address (${host}, ${source}); the gateway may not accept it. Set SMS_RELAY_HOST to this server's public IP.`); - } else { - this.logger.log(`SMS relay host: ${host ?? "(none)"} (${source})`); - } - }).catch(() => void 0); - } - /** - * Sends one message. Never throws — a failed SMS must not roll back the - * business operation that triggered it, exactly as in the reference. - */ - async send(mobile, body, options = {}) { - const { persist = true, audience = client_1.MessageAudience.SINGLE_NUMBER } = options; - const text = body.trim(); - const result = await this.deliver(mobile, text); - if (persist) { - await this.record(mobile, text, audience); - } - return result; - } - async deliver(mobile, text) { - const driver = smsDriver(); - if (!driver || driver.missingConfig().length > 0) { - this.logger.warn(`[dev] SMS not configured; not sending to ${mobile}`); - return { ok: false, error: "sms-not-configured" }; - } - let result; - try { - result = await driver.deliver(mobile, text); - } catch (e) { - result = { ok: false, error: e instanceof Error ? e.message : String(e) }; - } - if (!result.ok) { - const detail = result.response ? ` ${result.response}` : ""; - this.logger.error(`SMS to ${mobile} via ${driver.name} failed: ${result.error}${detail}`); - } - return result; - } - /** The `messages` row the reference writes for every send (`Sms.php:120-129`). */ - async record(mobile, body, audience) { - try { - await this.prisma.smsMessage.create({ - data: { audience, recipients: mobile, body, sentCount: 1 } - }); - } catch (e) { - this.logger.error(`Could not record the SMS to ${mobile}: ${String(e)}`); - } - } - }; - exports2.SmsService = SmsService; - exports2.SmsService = SmsService = SmsService_1 = __decorate4([ - (0, common_12.Injectable)(), - __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) - ], SmsService); - } -}); - -// dist/common/brand.js -var require_brand = __commonJS({ - "dist/common/brand.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.brandName = brandName; - exports2.brandSiteUrl = brandSiteUrl; - var env_12 = require_env(); - function brandName() { - return (0, env_12.envOr)("BRAND_NAME", "\u0647\u062F\u0646\u0627\u06AF\u0644\u062F"); - } - function brandSiteUrl() { - return (0, env_12.envOr)("BRAND_SITE_URL", "https://bnk.montzar.ir"); - } - } -}); - // dist/common/mobile-owner.js var require_mobile_owner = __commonJS({ "dist/common/mobile-owner.js"(exports2) { @@ -89641,34 +91719,6 @@ var require_register_dto = __commonJS({ } }); -// dist/modules/customer-auth/customer.guards.js -var require_customer_guards = __commonJS({ - "dist/modules/customer-auth/customer.guards.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.CurrentCustomer = exports2.CustomerAuth = exports2.CustomerJwtGuard = void 0; - var common_12 = require_common(); - var passport_1 = require_passport(); - var guards_1 = require_guards2(); - var common_2 = require_common(); - var CustomerJwtGuard = class CustomerJwtGuard extends (0, passport_1.AuthGuard)("customer-jwt") { - }; - exports2.CustomerJwtGuard = CustomerJwtGuard; - exports2.CustomerJwtGuard = CustomerJwtGuard = __decorate4([ - (0, common_12.Injectable)() - ], CustomerJwtGuard); - var CustomerAuth = () => (0, common_2.applyDecorators)((0, guards_1.Public)(), (0, common_2.UseGuards)(CustomerJwtGuard)); - exports2.CustomerAuth = CustomerAuth; - exports2.CurrentCustomer = (0, common_12.createParamDecorator)((_data, ctx) => ctx.switchToHttp().getRequest().user); - } -}); - // dist/modules/customer-auth/customer-auth.controller.js var require_customer_auth_controller = __commonJS({ "dist/modules/customer-auth/customer-auth.controller.js"(exports2) { @@ -89692,6 +91742,7 @@ var require_customer_auth_controller = __commonJS({ var common_12 = require_common(); var customer_auth_service_12 = require_customer_auth_service(); var customers_service_1 = require_customers_service(); + var order_revision_service_1 = require_order_revision_service(); var request_otp_dto_1 = require_request_otp_dto(); var verify_otp_dto_1 = require_verify_otp_dto(); var register_dto_1 = require_register_dto(); @@ -89700,9 +91751,11 @@ var require_customer_auth_controller = __commonJS({ var CustomerAuthController = class CustomerAuthController { auth; customers; - constructor(auth, customers) { + revisions; + constructor(auth, customers, revisions) { this.auth = auth; this.customers = customers; + this.revisions = revisions; } /** Step 1. Always answers `{ sent: true }` — it never reveals whether the number is registered. */ requestOtp(dto, ip) { @@ -89748,6 +91801,27 @@ var require_customer_auth_controller = __commonJS({ myLedgerEntries(me) { return this.customers.getLedgerEntries(me.id); } + /** Inbox: admin broadcast / direct messages for this customer. */ + myNotifications(me) { + return this.customers.getNotifications(me.id); + } + myUnreadNotificationCount(me) { + return this.customers.unreadNotificationCount(me.id).then((count) => ({ count })); + } + markAllNotificationsRead(me) { + return this.customers.markAllNotificationsRead(me.id); + } + markNotificationRead(me, id) { + return this.customers.markNotificationRead(me.id, id); + } + /** Accept an admin-proposed order edit. */ + confirmOrderRevision(me, id) { + return this.revisions.confirm(id, me.id); + } + /** Reject — stays awaiting until an admin force-applies or discards. */ + rejectOrderRevision(me, id) { + return this.revisions.reject(id, me.id); + } }; exports2.CustomerAuthController = CustomerAuthController; __decorate4([ @@ -89846,11 +91920,67 @@ var require_customer_auth_controller = __commonJS({ __metadata3("design:paramtypes", [Object]), __metadata3("design:returntype", void 0) ], CustomerAuthController.prototype, "myLedgerEntries", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Get)("me/notifications"), + __param3(0, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], CustomerAuthController.prototype, "myNotifications", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Get)("me/notifications/unread-count"), + __param3(0, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], CustomerAuthController.prototype, "myUnreadNotificationCount", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)("me/notifications/read-all"), + (0, common_12.HttpCode)(200), + __param3(0, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], CustomerAuthController.prototype, "markAllNotificationsRead", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)("me/notifications/:id/read"), + (0, common_12.HttpCode)(200), + __param3(0, (0, customer_guards_1.CurrentCustomer)()), + __param3(1, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, String]), + __metadata3("design:returntype", void 0) + ], CustomerAuthController.prototype, "markNotificationRead", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)("me/orders/:id/revision/confirm"), + (0, common_12.HttpCode)(200), + __param3(0, (0, customer_guards_1.CurrentCustomer)()), + __param3(1, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, String]), + __metadata3("design:returntype", void 0) + ], CustomerAuthController.prototype, "confirmOrderRevision", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)("me/orders/:id/revision/reject"), + (0, common_12.HttpCode)(200), + __param3(0, (0, customer_guards_1.CurrentCustomer)()), + __param3(1, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, String]), + __metadata3("design:returntype", void 0) + ], CustomerAuthController.prototype, "rejectOrderRevision", null); exports2.CustomerAuthController = CustomerAuthController = __decorate4([ (0, common_12.Controller)("customer"), __metadata3("design:paramtypes", [ customer_auth_service_12.CustomerAuthService, - customers_service_1.CustomersService + customers_service_1.CustomersService, + order_revision_service_1.OrderRevisionService ]) ], CustomerAuthController); function readCookie(header, name) { @@ -89883,6 +92013,7 @@ var require_customer_auth_module = __commonJS({ var passport_1 = require_passport(); var prisma_module_1 = require_prisma_module(); var customers_module_1 = require_customers_module(); + var orders_module_1 = require_orders_module(); var customer_auth_controller_1 = require_customer_auth_controller(); var customer_auth_service_12 = require_customer_auth_service(); var customer_jwt_strategy_1 = require_customer_jwt_strategy(); @@ -89891,7 +92022,7 @@ var require_customer_auth_module = __commonJS({ exports2.CustomerAuthModule = CustomerAuthModule; exports2.CustomerAuthModule = CustomerAuthModule = __decorate4([ (0, common_12.Module)({ - imports: [prisma_module_1.PrismaModule, passport_1.PassportModule, jwt_1.JwtModule.register({}), customers_module_1.CustomersModule], + imports: [prisma_module_1.PrismaModule, passport_1.PassportModule, jwt_1.JwtModule.register({}), customers_module_1.CustomersModule, orders_module_1.OrdersModule], controllers: [customer_auth_controller_1.CustomerAuthController], providers: [customer_auth_service_12.CustomerAuthService, customer_jwt_strategy_1.CustomerJwtStrategy], exports: [customer_auth_service_12.CustomerAuthService] @@ -90237,33 +92368,6 @@ var require_sales_expert_app_module = __commonJS({ } }); -// dist/modules/sms/sms.module.js -var require_sms_module = __commonJS({ - "dist/modules/sms/sms.module.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.SmsModule = void 0; - var common_12 = require_common(); - var sms_service_12 = require_sms_service(); - var SmsModule = class SmsModule { - }; - exports2.SmsModule = SmsModule; - exports2.SmsModule = SmsModule = __decorate4([ - (0, common_12.Global)(), - (0, common_12.Module)({ - providers: [sms_service_12.SmsService], - exports: [sms_service_12.SmsService] - }) - ], SmsModule); - } -}); - // dist/modules/admin-uploads/upload-path.js var require_upload_path = __commonJS({ "dist/modules/admin-uploads/upload-path.js"(exports2) { @@ -91449,1641 +93553,6 @@ var require_customer_report_module = __commonJS({ } }); -// ../../packages/shared-types/dist/index.js -var require_dist3 = __commonJS({ - "../../packages/shared-types/dist/index.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.PreOrderStatus = exports2.OrderStatus = exports2.LedgerSourceType = exports2.LedgerDirection = exports2.LedgerCurrency = exports2.GRAMS_PER_MESGHAL = exports2.STANDARD_KARAT_PER_MILLE = void 0; - exports2.STANDARD_KARAT_PER_MILLE = 750; - exports2.GRAMS_PER_MESGHAL = 4.331802; - var LedgerCurrency; - (function(LedgerCurrency2) { - LedgerCurrency2["GOLD_GRAM"] = "GOLD_GRAM"; - LedgerCurrency2["RIAL"] = "RIAL"; - })(LedgerCurrency || (exports2.LedgerCurrency = LedgerCurrency = {})); - var LedgerDirection; - (function(LedgerDirection2) { - LedgerDirection2["DEBIT"] = "DEBIT"; - LedgerDirection2["CREDIT"] = "CREDIT"; - })(LedgerDirection || (exports2.LedgerDirection = LedgerDirection = {})); - var LedgerSourceType; - (function(LedgerSourceType2) { - LedgerSourceType2["ORDER_STOCK"] = "ORDER_STOCK"; - LedgerSourceType2["ORDER_PRE_ORDER"] = "ORDER_PRE_ORDER"; - LedgerSourceType2["REPAYMENT_MELTED_GOLD"] = "REPAYMENT_MELTED_GOLD"; - LedgerSourceType2["REPAYMENT_TRANSFER"] = "REPAYMENT_TRANSFER"; - LedgerSourceType2["REPAYMENT_CHEQUE"] = "REPAYMENT_CHEQUE"; - LedgerSourceType2["REPAYMENT_CASH"] = "REPAYMENT_CASH"; - LedgerSourceType2["WALLET_BONUS"] = "WALLET_BONUS"; - LedgerSourceType2["ADJUSTMENT"] = "ADJUSTMENT"; - })(LedgerSourceType || (exports2.LedgerSourceType = LedgerSourceType = {})); - var OrderStatus; - (function(OrderStatus2) { - OrderStatus2["SUSPENDED"] = "SUSPENDED"; - OrderStatus2["PLACED"] = "PLACED"; - OrderStatus2["ADMIN_APPROVED"] = "ADMIN_APPROVED"; - OrderStatus2["SOURCING"] = "SOURCING"; - OrderStatus2["PREPARING"] = "PREPARING"; - OrderStatus2["DELIVERED_TO_AGENT"] = "DELIVERED_TO_AGENT"; - OrderStatus2["DELIVERED_TO_CUSTOMER"] = "DELIVERED_TO_CUSTOMER"; - OrderStatus2["CANCELLED"] = "CANCELLED"; - })(OrderStatus || (exports2.OrderStatus = OrderStatus = {})); - var PreOrderStatus; - (function(PreOrderStatus2) { - PreOrderStatus2["PLACED"] = "PLACED"; - PreOrderStatus2["ADMIN_APPROVED"] = "ADMIN_APPROVED"; - PreOrderStatus2["WORKSHOP_APPROVED"] = "WORKSHOP_APPROVED"; - PreOrderStatus2["READY_TO_SHIP"] = "READY_TO_SHIP"; - PreOrderStatus2["DELIVERED"] = "DELIVERED"; - PreOrderStatus2["CANCELLED"] = "CANCELLED"; - })(PreOrderStatus || (exports2.PreOrderStatus = PreOrderStatus = {})); - } -}); - -// dist/modules/accounting/ledger.service.js -var require_ledger_service = __commonJS({ - "dist/modules/accounting/ledger.service.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.LedgerService = void 0; - var common_12 = require_common(); - var client_1 = require("@prisma/client"); - var shared_types_1 = require_dist3(); - var prisma_service_1 = require_prisma_service(); - var ZERO = new client_1.Prisma.Decimal(0); - var OWING_STATUSES = [client_1.OrderStatus.DELIVERED_TO_AGENT, client_1.OrderStatus.DELIVERED_TO_CUSTOMER]; - var LedgerService = class LedgerService { - prisma; - constructor(prisma) { - this.prisma = prisma; - } - /** Posts a ledger entry and, if confirmed, applies it to the cached customer balance. */ - async postEntry(input, tx = this.prisma) { - const amount = new client_1.Prisma.Decimal(input.amount); - if (amount.lte(0)) { - throw new common_12.BadRequestException("Ledger entry amount must be positive"); - } - const confirmed = input.confirmed ?? false; - const entry = await tx.ledgerEntry.create({ - data: { - customerId: input.customerId, - currency: input.currency, - direction: input.direction, - sourceType: input.sourceType, - amount, - orderId: input.orderId, - karatPerMille: input.karatPerMille, - pricePerGramRialAtEntry: input.pricePerGramRialAtEntry !== void 0 ? new client_1.Prisma.Decimal(input.pricePerGramRialAtEntry) : void 0, - note: input.note, - confirmed, - confirmedAt: confirmed ? /* @__PURE__ */ new Date() : null, - postedByAdminId: input.postedByAdminId - } - }); - if (confirmed) { - await this.applyToBalance(input.customerId, input.currency, input.direction, amount, tx); - } - return entry; - } - /** - * Marks a pending repayment entry confirmed. Legacy's confirmed toggle - * (Adm\CashController::toggleConfiremCash) is bidirectional and used for - * post-hoc correction/rejection — legacy Cash rows are auto-confirmed - * (confirmed=1) at creation, not created pending. This system intentionally - * requires an explicit confirmation step before a repayment counts (see - * postGoldRepayment for the full rationale) — that is a deliberate design - * change from legacy, not a faithful mirror of it. - */ - async confirmEntry(entryId, adminUserId, tx = this.prisma) { - const entry = await tx.ledgerEntry.findUnique({ where: { id: entryId } }); - if (!entry) - throw new common_12.NotFoundException("Ledger entry not found"); - if (entry.confirmed) - return entry; - const updated = await tx.ledgerEntry.update({ - where: { id: entryId }, - data: { confirmed: true, confirmedAt: /* @__PURE__ */ new Date(), postedByAdminId: adminUserId ?? entry.postedByAdminId } - }); - await this.applyToBalance(entry.customerId, entry.currency, entry.direction, entry.amount, tx); - return updated; - } - async applyToBalance(customerId, currency, direction, amount, tx) { - const signedDelta = direction === client_1.LedgerDirection.DEBIT ? amount : amount.neg(); - await tx.customer.update({ - where: { id: customerId }, - data: currency === client_1.LedgerCurrency.GOLD_GRAM ? { goldDebtGrams: { increment: signedDelta } } : { fiatDebtRial: { increment: signedDelta } } - }); - } - /** - * Brings an order's debt in line with its status — legacy's rule exactly. - * - * Legacy never "posted" order debt; it RECOMPUTED it - * (CustomerController::updateRemain): Σ orders.input WHERE sts > 4, i.e. an - * order owes its full weight (and its rial charge) while it is delivered — - * to the expert (5) or to the customer (6) — and nothing otherwise. So: - * - moving into a delivered status twice never counts twice (ACC-03 / - * MON-04: the old guard on `deliveredAt` let a second DELIVERED_TO_AGENT - * post the debt again); - * - going straight to DELIVERED_TO_CUSTOMER still creates the debt (the - * old trigger fired only on DELIVERED_TO_AGENT, so that order owed nothing); - * - moving back below delivered, or cancelling, takes it off again. - * - * It compares what the order SHOULD owe with the confirmed ORDER_STOCK - * entries already on it and posts only the difference, as a confirmed - * DEBIT or CREDIT — so it is idempotent and nothing is ever edited or - * deleted (the ledger stays append-only). Entries imported from legacy carry - * their orderId, so imported orders reconcile the same way. - */ - async syncOrderDebt(orderId, tx = this.prisma) { - const order = await tx.order.findUnique({ where: { id: orderId } }); - if (!order) - throw new common_12.NotFoundException("Order not found"); - const owes = OWING_STATUSES.includes(order.status); - const targets = [ - [client_1.LedgerCurrency.GOLD_GRAM, owes ? new client_1.Prisma.Decimal(order.totalGoldWeightGrams) : ZERO, "Gold-weight debt"], - [client_1.LedgerCurrency.RIAL, owes ? new client_1.Prisma.Decimal(order.flatRialCharge) : ZERO, "Flat Rial charge (e.g. stones)"] - ]; - for (const [currency, should, label] of targets) { - const posted = await tx.ledgerEntry.groupBy({ - by: ["direction"], - where: { orderId, currency, sourceType: client_1.LedgerSourceType.ORDER_STOCK, confirmed: true }, - _sum: { amount: true } - }); - const sum = (d) => posted.find((p) => p.direction === d)?._sum.amount ?? ZERO; - const current = new client_1.Prisma.Decimal(sum(client_1.LedgerDirection.DEBIT)).sub(sum(client_1.LedgerDirection.CREDIT)); - const diff = should.sub(current); - if (diff.isZero()) - continue; - await this.postEntry({ - customerId: order.customerId, - currency, - direction: diff.gt(0) ? client_1.LedgerDirection.DEBIT : client_1.LedgerDirection.CREDIT, - sourceType: client_1.LedgerSourceType.ORDER_STOCK, - amount: diff.abs(), - orderId: order.id, - confirmed: true, - note: owes ? `${label} \u2014 order delivered (${order.status})` : `${label} reversed \u2014 order moved to ${order.status}` - }, tx); - } - } - /** - * Normalizes a physical repayment instrument into gold grams and posts a - * pending (unconfirmed) CREDIT entry against the customer's gold debt. - * Formulas preserved verbatim from legacy CashController::store. Note: - * legacy auto-confirms (confirmed=1) every Cash row at creation — posting - * this as pending instead is an intentional design change, not a mirror of - * legacy's default. - */ - async postGoldRepayment(params, tx = this.prisma) { - const raw = new client_1.Prisma.Decimal(params.rawValue); - let goldGramsValue; - let sourceType; - switch (params.instrument) { - case "MELTED_GOLD": { - if (!params.karatPerMille) { - throw new common_12.BadRequestException("karatPerMille is required for a melted-gold repayment"); - } - goldGramsValue = raw.mul(params.karatPerMille).div(shared_types_1.STANDARD_KARAT_PER_MILLE); - sourceType = client_1.LedgerSourceType.REPAYMENT_MELTED_GOLD; - break; - } - case "CASH": { - if (!params.pricePerGramRial) { - throw new common_12.BadRequestException("pricePerGramRial is required for a cash repayment"); - } - const pricePerGram = new client_1.Prisma.Decimal(params.pricePerGramRial); - goldGramsValue = raw.div(pricePerGram.div(shared_types_1.GRAMS_PER_MESGHAL)); - sourceType = client_1.LedgerSourceType.REPAYMENT_CASH; - break; - } - case "TRANSFER": - goldGramsValue = raw; - sourceType = client_1.LedgerSourceType.REPAYMENT_TRANSFER; - break; - case "CHEQUE": - goldGramsValue = raw; - sourceType = client_1.LedgerSourceType.REPAYMENT_CHEQUE; - break; - } - return this.postEntry({ - customerId: params.customerId, - currency: client_1.LedgerCurrency.GOLD_GRAM, - direction: client_1.LedgerDirection.CREDIT, - sourceType, - amount: goldGramsValue, - karatPerMille: params.karatPerMille, - pricePerGramRialAtEntry: params.pricePerGramRial, - note: params.note, - confirmed: false, - // pending until an admin confirms — intentional deviation from legacy, which auto-confirms on creation - postedByAdminId: params.postedByAdminId - }, tx); - } - /** - * Direct Rial-debt repayment. Not present in the legacy system (its - * rial_remain had no repayment offset at all — a gap flagged during - * migration analysis) but supported here since the new ledger is symmetric. - */ - async postRialRepayment(params, tx = this.prisma) { - return this.postEntry({ - customerId: params.customerId, - currency: client_1.LedgerCurrency.RIAL, - direction: client_1.LedgerDirection.CREDIT, - sourceType: client_1.LedgerSourceType.REPAYMENT_CASH, - amount: params.amount, - note: params.note, - confirmed: false, - postedByAdminId: params.postedByAdminId - }, tx); - } - async postAdjustment(params, tx = this.prisma) { - return this.postEntry({ - customerId: params.customerId, - currency: params.currency, - direction: params.direction, - sourceType: client_1.LedgerSourceType.ADJUSTMENT, - amount: params.amount, - note: params.note, - confirmed: true, - postedByAdminId: params.postedByAdminId - }, tx); - } - async getBalance(customerId) { - const customer = await this.prisma.customer.findUnique({ - where: { id: customerId }, - select: { id: true, goldDebtGrams: true, fiatDebtRial: true, goldCreditLimitGrams: true } - }); - if (!customer) - throw new common_12.NotFoundException("Customer not found"); - return { - customerId: customer.id, - goldDebtGrams: customer.goldDebtGrams, - fiatDebtRial: customer.fiatDebtRial, - goldCreditLimitGrams: customer.goldCreditLimitGrams - }; - } - /** - * Recomputes cached balances from confirmed LedgerEntry rows and overwrites - * the cache — a self-healing reconciliation, run periodically or on demand, - * unlike legacy's recompute-on-every-write (Customer::updateRemain). - */ - async reconcileBalance(customerId) { - const [goldDebits, goldCredits, rialDebits, rialCredits] = await Promise.all([ - this.sumConfirmed(customerId, client_1.LedgerCurrency.GOLD_GRAM, client_1.LedgerDirection.DEBIT), - this.sumConfirmed(customerId, client_1.LedgerCurrency.GOLD_GRAM, client_1.LedgerDirection.CREDIT), - this.sumConfirmed(customerId, client_1.LedgerCurrency.RIAL, client_1.LedgerDirection.DEBIT), - this.sumConfirmed(customerId, client_1.LedgerCurrency.RIAL, client_1.LedgerDirection.CREDIT) - ]); - return this.prisma.customer.update({ - where: { id: customerId }, - data: { - goldDebtGrams: goldDebits.sub(goldCredits), - fiatDebtRial: rialDebits.sub(rialCredits) - } - }); - } - async sumConfirmed(customerId, currency, direction) { - const result = await this.prisma.ledgerEntry.aggregate({ - where: { customerId, currency, direction, confirmed: true }, - _sum: { amount: true } - }); - return result._sum.amount ?? new client_1.Prisma.Decimal(0); - } - }; - exports2.LedgerService = LedgerService; - exports2.LedgerService = LedgerService = __decorate4([ - (0, common_12.Injectable)(), - __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) - ], LedgerService); - } -}); - -// dist/modules/pricing/wage-formula.js -var require_wage_formula = __commonJS({ - "dist/modules/pricing/wage-formula.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.DEFAULT_WAGE_SAMPLE = exports2.LEGACY_WAGE_FORMULA = void 0; - exports2.computeWage = computeWage; - exports2.computeSample = computeSample; - exports2.parseWageFormula = parseWageFormula; - exports2.parseWageSample = parseWageSample; - var common_12 = require_common(); - var client_1 = require("@prisma/client"); - exports2.LEGACY_WAGE_FORMULA = Object.freeze({ - version: 1, - variantCoef: "1", - customerCoef: "1", - promotionCoef: "1", - promotionPick: "max", - constant: "0", - min: null, - max: null, - decimals: null - }); - var D = (v) => new client_1.Prisma.Decimal(v ?? 0); - function computeWage(f, i) { - const promos = i.promotionPercents.map(D); - const promo = promos.length === 0 ? D(0) : f.promotionPick === "sum" ? promos.reduce((s, p) => s.add(p), D(0)) : promos.reduce((m, p) => p.gt(m) ? p : m, promos[0]); - const variantTerm = D(f.variantCoef).mul(D(i.variantPercent)); - const customerTerm = D(f.customerCoef).mul(D(i.customerPercent)); - const promotionTerm = D(f.promotionCoef).mul(promo); - const constant = D(f.constant); - const before = variantTerm.add(customerTerm).sub(promotionTerm).add(constant); - let final = before; - let limitedBy = null; - if (f.min !== null && final.lt(D(f.min))) { - final = D(f.min); - limitedBy = "min"; - } - if (f.max !== null && final.gt(D(f.max))) { - final = D(f.max); - limitedBy = "max"; - } - if (f.decimals !== null) - final = final.toDecimalPlaces(f.decimals, client_1.Prisma.Decimal.ROUND_HALF_UP); - return { - variantTerm: variantTerm.toString(), - customerTerm: customerTerm.toString(), - promotionPercent: promo.toString(), - promotionTerm: promotionTerm.toString(), - constant: constant.toString(), - beforeLimits: before.toString(), - limitedBy, - finalPercent: final.toString(), - wagePercentSnapshot: final.add(promotionTerm).toString(), - discountPercentSnapshot: promotionTerm.toString() - }; - } - exports2.DEFAULT_WAGE_SAMPLE = Object.freeze({ - rashWeightGrams: "10", - quantity: 1, - variantPercent: "7", - customerPercent: "3", - promotionPercent: "0" - }); - function computeSample(f, s) { - const wage = computeWage(f, { - variantPercent: s.variantPercent, - customerPercent: s.customerPercent, - promotionPercents: D(s.promotionPercent).isZero() ? [] : [s.promotionPercent] - }); - const rash = D(s.rashWeightGrams).mul(s.quantity); - const total = rash.mul(D(wage.finalPercent).div(100).add(1)); - return { - ...wage, - rashTotalGrams: rash.toString(), - wageGrams: total.sub(rash).toDecimalPlaces(4).toString(), - totalGrams: total.toDecimalPlaces(4).toString() - }; - } - function num(v, field, lo, hi) { - const s = String(v ?? "").trim(); - let d; - try { - d = new client_1.Prisma.Decimal(s); - } catch { - throw new common_12.BadRequestException(`${field}: \u0639\u062F\u062F \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A`); - } - if (!d.isFinite() || d.lt(lo) || d.gt(hi)) - throw new common_12.BadRequestException(`${field}: \u0628\u0627\u06CC\u062F \u0628\u06CC\u0646 ${lo} \u0648 ${hi} \u0628\u0627\u0634\u062F`); - return d.toString(); - } - function optNum(v, field, lo, hi) { - return v === null || v === void 0 || String(v).trim() === "" ? null : num(v, field, lo, hi); - } - function parseWageFormula(raw) { - const r = raw ?? {}; - const pick = r.promotionPick === "sum" ? "sum" : r.promotionPick === "max" ? "max" : null; - if (!pick) - throw new common_12.BadRequestException("\u0646\u062D\u0648\u0647\u200C\u06CC \u0627\u0646\u062A\u062E\u0627\u0628 \u062A\u062E\u0641\u06CC\u0641 \u0628\u0627\u06CC\u062F \xAB\u0628\u06CC\u0634\u062A\u0631\u06CC\u0646\xBB \u06CC\u0627 \xAB\u062C\u0645\u0639\xBB \u0628\u0627\u0634\u062F"); - const decimals = r.decimals === null || r.decimals === void 0 || r.decimals === "" ? null : Number(num(r.decimals, "\u062A\u0639\u062F\u0627\u062F \u0631\u0642\u0645 \u0627\u0639\u0634\u0627\u0631", 0, 4)); - if (decimals !== null && !Number.isInteger(decimals)) - throw new common_12.BadRequestException("\u062A\u0639\u062F\u0627\u062F \u0631\u0642\u0645 \u0627\u0639\u0634\u0627\u0631 \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0628\u0627\u0634\u062F"); - const f = { - version: 1, - variantCoef: num(r.variantCoef, "\u0636\u0631\u06CC\u0628 \u0627\u062C\u0631\u062A \u0645\u062F\u0644", -10, 10), - customerCoef: num(r.customerCoef, "\u0636\u0631\u06CC\u0628 \u062F\u0631\u0635\u062F \u0645\u0634\u062A\u0631\u06CC", -10, 10), - promotionCoef: num(r.promotionCoef, "\u0636\u0631\u06CC\u0628 \u062A\u062E\u0641\u06CC\u0641", -10, 10), - promotionPick: pick, - constant: num(r.constant, "\u0645\u0642\u062F\u0627\u0631 \u062B\u0627\u0628\u062A", -100, 100), - min: optNum(r.min, "\u062D\u062F\u0627\u0642\u0644 \u0627\u062C\u0631\u062A", -100, 1e3), - max: optNum(r.max, "\u062D\u062F\u0627\u06A9\u062B\u0631 \u0627\u062C\u0631\u062A", -100, 1e3), - decimals - }; - if (f.min !== null && f.max !== null && D(f.min).gt(D(f.max))) { - throw new common_12.BadRequestException("\u062D\u062F\u0627\u0642\u0644 \u0627\u062C\u0631\u062A \u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u062F \u0627\u0632 \u062D\u062F\u0627\u06A9\u062B\u0631 \u0628\u06CC\u0634\u062A\u0631 \u0628\u0627\u0634\u062F"); - } - return f; - } - function parseWageSample(raw) { - const r = raw ?? {}; - const qty = Number(r.quantity); - if (!Number.isInteger(qty) || qty < 1 || qty > 1e3) - throw new common_12.BadRequestException("\u062A\u0639\u062F\u0627\u062F \u0646\u0645\u0648\u0646\u0647 \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0628\u06CC\u0646 \u06F1 \u0648 \u06F1\u06F0\u06F0\u06F0 \u0628\u0627\u0634\u062F"); - return { - rashWeightGrams: num(r.rashWeightGrams, "\u0648\u0632\u0646 \u062E\u0627\u0645 \u0646\u0645\u0648\u0646\u0647", 0, 1e5), - quantity: qty, - variantPercent: num(r.variantPercent, "\u0627\u062C\u0631\u062A \u0645\u062F\u0644 \u0646\u0645\u0648\u0646\u0647", -100, 1e3), - customerPercent: num(r.customerPercent, "\u062F\u0631\u0635\u062F \u0645\u0634\u062A\u0631\u06CC \u0646\u0645\u0648\u0646\u0647", -100, 1e3), - promotionPercent: num(r.promotionPercent, "\u062A\u062E\u0641\u06CC\u0641 \u0646\u0645\u0648\u0646\u0647", 0, 100) - }; - } - } -}); - -// dist/modules/pricing/wage.service.js -var require_wage_service = __commonJS({ - "dist/modules/pricing/wage.service.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.WageService = exports2.PRICING_SETTING_PREFIX = exports2.WAGE_FORMULA_SETTING_KEY = void 0; - var common_12 = require_common(); - var client_1 = require("@prisma/client"); - var prisma_service_1 = require_prisma_service(); - var wage_formula_1 = require_wage_formula(); - exports2.WAGE_FORMULA_SETTING_KEY = "pricing.wageFormula"; - exports2.PRICING_SETTING_PREFIX = "pricing."; - var WageService = class WageService { - prisma; - constructor(prisma) { - this.prisma = prisma; - } - async stored(tx = this.prisma) { - const row = await tx.setting.findUnique({ where: { key: exports2.WAGE_FORMULA_SETTING_KEY } }); - return row ? row.value : null; - } - /** The formula in force; legacy's exactly until an admin approves another. */ - async formula(tx = this.prisma) { - const s = await this.stored(tx); - return s ? (0, wage_formula_1.parseWageFormula)(s.formula) : { ...wage_formula_1.LEGACY_WAGE_FORMULA }; - } - /* ───────────── admin screen ───────────── */ - async getConfig() { - const s = await this.stored(); - const formula = s ? (0, wage_formula_1.parseWageFormula)(s.formula) : { ...wage_formula_1.LEGACY_WAGE_FORMULA }; - const sample = s ? (0, wage_formula_1.parseWageSample)(s.sample) : { ...wage_formula_1.DEFAULT_WAGE_SAMPLE }; - return { - formula, - sample, - result: (0, wage_formula_1.computeSample)(formula, sample), - approvedAt: s?.approvedAt ?? null, - approvedBy: s?.approvedBy ?? null, - isLegacyDefault: !s, - legacy: wage_formula_1.LEGACY_WAGE_FORMULA, - history: (s?.history ?? []).map((h) => ({ ...h, result: (0, wage_formula_1.computeSample)((0, wage_formula_1.parseWageFormula)(h.formula), (0, wage_formula_1.parseWageSample)(h.sample)) })) - }; - } - /** The draft and the formula in force, side by side, on the same sample. */ - async preview(rawFormula, rawSample) { - const draft = (0, wage_formula_1.parseWageFormula)(rawFormula); - const sample = (0, wage_formula_1.parseWageSample)(rawSample); - return { - draft: (0, wage_formula_1.computeSample)(draft, sample), - current: (0, wage_formula_1.computeSample)(await this.formula(), sample) - }; - } - /** Approves a formula together with the sample it was checked on. */ - async approve(rawFormula, rawSample, admin) { - const formula = (0, wage_formula_1.parseWageFormula)(rawFormula); - const sample = (0, wage_formula_1.parseWageSample)(rawSample); - await this.prisma.$transaction(async (tx) => { - const prev = await this.stored(tx); - const next = { - formula, - sample, - approvedAt: (/* @__PURE__ */ new Date()).toISOString(), - approvedBy: { id: admin.id, name: admin.fullName }, - history: prev ? [{ formula: prev.formula, sample: prev.sample, approvedAt: prev.approvedAt, approvedBy: prev.approvedBy }, ...prev.history].slice(0, 20) : [] - }; - const value = next; - await tx.setting.upsert({ - where: { key: exports2.WAGE_FORMULA_SETTING_KEY }, - update: { value }, - create: { key: exports2.WAGE_FORMULA_SETTING_KEY, value } - }); - }); - return this.getConfig(); - } - /* ───────────── pricing a customer's lines ───────────── */ - /** - * The making charge of each variant for this customer — what the app shows - * and what an app order is charged. The promotions considered are legacy's: - * active, inside their dates, scoped to the product, its category or its - * brand (customer-scoped promotions were switched off in the legacy app). - */ - async quote(customerId, variantIds, tx = this.prisma) { - const customer = await tx.customer.findUnique({ - where: { id: customerId }, - select: { makingChargeOffsetPercent: true } - }); - if (!customer) - throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); - const ids = [...new Set(variantIds)]; - const variants = await tx.productVariant.findMany({ - where: { id: { in: ids } }, - select: { id: true, defaultWagePercent: true, product: { select: { id: true, categoryId: true, brandId: true } } } - }); - const now = /* @__PURE__ */ new Date(); - const promotions = await tx.promotion.findMany({ - where: { - isActive: true, - scope: { in: [client_1.PromotionScope.PRODUCT, client_1.PromotionScope.CATEGORY, client_1.PromotionScope.BRAND] }, - AND: [ - { OR: [{ startsAt: null }, { startsAt: { lte: now } }] }, - { OR: [{ endsAt: null }, { endsAt: { gte: now } }] } - ], - OR: [ - { productId: { in: variants.map((v) => v.product.id) } }, - { categoryId: { in: variants.map((v) => v.product.categoryId).filter((x) => !!x) } }, - { brandId: { in: variants.map((v) => v.product.brandId).filter((x) => !!x) } } - ] - }, - select: { scope: true, productId: true, categoryId: true, brandId: true, discountPercent: true } - }); - const formula = await this.formula(tx); - const out = /* @__PURE__ */ new Map(); - for (const v of variants) { - const applying = promotions.filter((p) => p.scope === client_1.PromotionScope.PRODUCT && p.productId === v.product.id || p.scope === client_1.PromotionScope.CATEGORY && !!v.product.categoryId && p.categoryId === v.product.categoryId || p.scope === client_1.PromotionScope.BRAND && !!v.product.brandId && p.brandId === v.product.brandId); - const inputs = { - variantPercent: v.defaultWagePercent, - customerPercent: customer.makingChargeOffsetPercent, - promotionPercents: applying.map((p) => p.discountPercent) - }; - out.set(v.id, { - variantId: v.id, - variantPercent: new client_1.Prisma.Decimal(v.defaultWagePercent).toString(), - customerPercent: new client_1.Prisma.Decimal(customer.makingChargeOffsetPercent).toString(), - ...(0, wage_formula_1.computeWage)(formula, inputs) - }); - } - return out; - } - }; - exports2.WageService = WageService; - exports2.WageService = WageService = __decorate4([ - (0, common_12.Injectable)(), - __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) - ], WageService); - } -}); - -// dist/modules/orders/orders.service.js -var require_orders_service = __commonJS({ - "dist/modules/orders/orders.service.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - var OrdersService_1; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.OrdersService = void 0; - var common_12 = require_common(); - var client_1 = require("@prisma/client"); - var prisma_service_1 = require_prisma_service(); - var catalog_service_1 = require_catalog_service(); - var ledger_service_1 = require_ledger_service(); - var accounting_hooks_service_1 = require_accounting_hooks_service(); - var wage_service_1 = require_wage_service(); - var sms_service_12 = require_sms_service(); - var brand_1 = require_brand(); - var OrdersService = OrdersService_1 = class OrdersService { - prisma; - catalog; - ledger; - accounting; - wage; - sms; - logger = new common_12.Logger(OrdersService_1.name); - constructor(prisma, catalog, ledger, accounting, wage, sms) { - this.prisma = prisma; - this.catalog = catalog; - this.ledger = ledger; - this.accounting = accounting; - this.wage = wage; - this.sms = sms; - } - /** - * Places a stock order. Per line item: - * w = rashWeightGrams * (1 + (wagePercent - discountPercent) / 100) - * mirrors legacy ApiMobileController::setOrder. Debt is NOT posted here — - * only while the order is delivered (see updateStatus / syncOrderDebt). - */ - /** - * @param customerId taken from the caller's token by the controller, NEVER - * from the request body. The body's `customerId` is ignored; see the note - * on CreateOrderDto. - */ - async createOrder(dto, customerId, opts = { placedBy: "operator" }) { - const customer = await this.prisma.customer.findUnique({ where: { id: customerId } }); - if (!customer) - throw new common_12.NotFoundException(`Customer ${customerId} not found`); - if (opts.placedBy === "customer" && !customer.canPlaceOrders) { - throw new common_12.ForbiddenException("\u062B\u0628\u062A \u0633\u0641\u0627\u0631\u0634 \u0628\u0631\u0627\u06CC \u062D\u0633\u0627\u0628 \u0634\u0645\u0627 \u0641\u0639\u0644\u0627\u064B \u063A\u06CC\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062A. \u0644\u0637\u0641\u0627\u064B \u0628\u0627 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u062A\u0645\u0627\u0633 \u0628\u06AF\u06CC\u0631\u06CC\u062F."); - } - if (dto.customerId && dto.customerId !== customerId) { - this.logger.warn(`Order body carried customerId=${dto.customerId} but the token is ${customerId}; the token wins.`); - } - const quotes = opts.placedBy === "customer" ? await this.wage.quote(customerId, dto.items.map((i) => i.productVariantId)) : null; - const computedItems = await Promise.all(dto.items.map(async (item) => { - const variant = await this.catalog.getVariantOrThrow(item.productVariantId); - const rashWeight = new client_1.Prisma.Decimal(variant.rashWeightGrams); - const quote = quotes?.get(variant.id); - if (quotes && !quote) - throw new common_12.NotFoundException(`Variant ${variant.id} not found`); - const wagePercent = new client_1.Prisma.Decimal(quote ? quote.wagePercentSnapshot : item.wagePercent); - const discountPercent = new client_1.Prisma.Decimal(quote ? quote.discountPercentSnapshot : item.discountPercent ?? 0); - if (quote) - this.warnOnPriceMismatch(variant.id, item, wagePercent, discountPercent); - const netPercent = wagePercent.sub(discountPercent); - const computedWeightGrams = rashWeight.mul(netPercent.div(100).add(1)); - return { - productVariantId: variant.id, - quantity: item.quantity, - rashWeightGramsSnapshot: rashWeight, - wagePercentSnapshot: wagePercent, - discountPercentSnapshot: discountPercent, - computedWeightGrams, - // Legacy app: rial_pay is always 0 (cart.vue); only an operator sets one. - flatRialCharge: new client_1.Prisma.Decimal(quotes ? 0 : item.flatRialCharge ?? 0) - }; - })); - const totalGoldWeightGrams = computedItems.reduce((sum, item) => sum.add(item.computedWeightGrams.mul(item.quantity)), new client_1.Prisma.Decimal(0)); - const totalRashWeightGrams = computedItems.reduce((sum, item) => sum.add(item.rashWeightGramsSnapshot.mul(item.quantity)), new client_1.Prisma.Decimal(0)); - const wageWeightGrams = totalGoldWeightGrams.sub(totalRashWeightGrams); - const flatRialCharge = computedItems.reduce((sum, item) => sum.add(item.flatRialCharge.mul(item.quantity)), new client_1.Prisma.Decimal(0)); - const isSuspendedOverCreditLimit = totalGoldWeightGrams.add(customer.goldDebtGrams).gt(customer.goldCreditLimitGrams); - const initialStatus = isSuspendedOverCreditLimit ? client_1.OrderStatus.SUSPENDED : client_1.OrderStatus.PLACED; - const channel = opts.placedBy === "customer" ? client_1.OrderChannel.WHOLESALE : dto.channel ?? client_1.OrderChannel.RETAIL; - if (opts.placedBy === "customer" && dto.channel && dto.channel !== client_1.OrderChannel.WHOLESALE) { - this.logger.warn(`Order body carried channel=${dto.channel} from the app; forcing WHOLESALE.`); - } - const placed = await this.prisma.$transaction(async (tx) => { - const order = await tx.order.create({ - data: { - orderNumber: await this.nextOrderNumber(tx), - customerId, - branchId: dto.branchId, - channel, - status: initialStatus, - totalGoldWeightGrams, - wageWeightGrams, - flatRialCharge, - isSuspendedOverCreditLimit, - // Legacy `'reagent_id' => auth()->user()->reagent_id` - // (ApiMobileController.php:601): the customer's expert at THIS - // moment, fixed on the order so a later change of expert never moves - // past sales (owner ruling 2026-10-08). - salesAgentId: customer.referredByAgentId, - items: { - create: computedItems.map((item) => ({ - productVariantId: item.productVariantId, - quantity: item.quantity, - rashWeightGramsSnapshot: item.rashWeightGramsSnapshot, - wagePercentSnapshot: item.wagePercentSnapshot, - discountPercentSnapshot: item.discountPercentSnapshot, - computedWeightGrams: item.computedWeightGrams, - flatRialCharge: item.flatRialCharge - })) - }, - statusEvents: { - create: { toStatus: initialStatus, note: isSuspendedOverCreditLimit ? "Credit limit exceeded" : void 0 } - } - }, - include: { items: true, statusEvents: true } - }); - await this.accounting.orderStatusReached(tx, order.id, initialStatus); - return order; - }); - if (opts.actingAsExpertId) { - this.logger.log(`Order ${placed.orderNumber} for customer ${customerId} was placed by sales expert ${opts.actingAsExpertId} acting as them.`); - } - this.notifyOrderPlaced(placed.orderNumber, customer, totalGoldWeightGrams, isSuspendedOverCreditLimit); - return placed; - } - /** - * MON-08 step 2: the server's own figures are what the order is charged, but - * a client that sent something else is worth seeing. An ordinary app sends - * exactly what the server derives (DECISIONS §"Report — MON-08"), so a - * mismatch means a stale app version, a promotion that expired between the - * product page and checkout, or a tampered request. - * - * `flatRialCharge` is included because the app hardcodes 0 (cart.vue:179) and - * only an operator ever sets one — anything non-zero from a customer is a - * client that should not be sending it. - */ - warnOnPriceMismatch(variantId, sent, wagePercent, discountPercent) { - const differs = []; - if (!wagePercent.eq(sent.wagePercent)) { - differs.push(`wagePercent sent=${sent.wagePercent} used=${wagePercent.toString()}`); - } - if (!discountPercent.eq(sent.discountPercent ?? 0)) { - differs.push(`discountPercent sent=${sent.discountPercent ?? 0} used=${discountPercent.toString()}`); - } - if ((sent.flatRialCharge ?? 0) !== 0) { - differs.push(`flatRialCharge sent=${sent.flatRialCharge} used=0`); - } - if (differs.length) { - this.logger.warn(`Order pricing for variant ${variantId}: the server's figures are used, the client's are ignored \u2014 ${differs.join("; ")}`); - } - } - /** - * The admins who are told a new order was placed. - * - * Legacy hardcoded four numbers (ApiMobileController.php:740-743); this reads - * a comma-separated env var, as the complete-profile notifier already does. - * Unset means nobody is notified and the order itself still goes through. - */ - adminMobiles() { - return (process.env.ORDER_ADMIN_MOBILES ?? "").split(",").map((m) => m.trim()).filter(Boolean); - } - /** - * Legacy ApiMobileController::setOrder:733-766, brand read from BRAND_NAME. - * - * Three audiences: the admins, the customer, and the customer's sales expert. - * Legacy's fourth message — «در سیستم ویرایش شد» (:734-737) — is - * «عمداً تکرار نشد»: no target path lets a customer edit a placed order, so - * that branch could never fire. - * - * `Notify::store` sat beside each of these in legacy (Firebase push); that is - * PUSH-01, deferred to the PWA port. - */ - notifyOrderPlaced(orderNumber, customer, totalGoldWeightGrams, isSuspendedOverCreditLimit) { - const fire = (to, body) => { - void this.sms.send(to, body).catch((e) => { - this.logger.error(`Order SMS to ${to} failed: ${String(e)}`); - }); - }; - const name = `${customer.firstName ?? ""} ${customer.lastName ?? ""}`.trim(); - const weight = totalGoldWeightGrams.toDecimalPlaces(2).toString(); - const adminMessage = `${(0, brand_1.brandName)()} -\u0633\u0641\u0627\u0631\u0634\u06CC \u062A\u0648\u0633\u0637 ${name} - \u0628\u0647 \u0648\u0632\u0646 ${weight} -\u062F\u0631 \u0633\u06CC\u0633\u062A\u0645 \u062B\u0628\u062A \u0634\u062F.`; - for (const admin of this.adminMobiles()) - fire(admin, adminMessage); - fire(customer.mobile, isSuspendedOverCreditLimit ? `\u0633\u0641\u0627\u0631\u0634 \u0634\u0645\u0627 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 ${orderNumber} \u0628\u0647 \u062B\u0628\u062A \u0631\u0633\u06CC\u062F \u0627\u0645\u0627 \u0628\u0647 \u062F\u0644\u06CC\u0644 \u0639\u0628\u0648\u0631 \u0627\u0632 \u0633\u0642\u0641 \u0645\u062C\u0627\u0632 \u06AF\u0631\u0645\u06CC \u062F\u0631 \u062D\u0627\u0644\u062A \u0645\u0639\u0644\u0642 \u0642\u0631\u0627\u0631 \u06AF\u0631\u0641\u062A. ${(0, brand_1.brandName)()}` : `\u0633\u0641\u0627\u0631\u0634 \u0634\u0645\u0627 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 ${orderNumber} \u0628\u0647 \u062B\u0628\u062A \u0631\u0633\u06CC\u062F. ${(0, brand_1.brandName)()}`); - if (customer.referredByAgentId) { - void this.notifySalesAgent(customer.referredByAgentId, name, orderNumber, weight); - } - } - /** Legacy :762-765 — the referring expert is texted too. */ - async notifySalesAgent(agentId, customerName, orderNumber, weight) { - try { - const agent = await this.prisma.adminUser.findUnique({ - where: { id: agentId }, - select: { mobile: true } - }); - if (!agent?.mobile) - return; - await this.sms.send(agent.mobile, `${(0, brand_1.brandName)()} -\u0633\u0641\u0627\u0631\u0634\u06CC \u062A\u0648\u0633\u0637 ${customerName} \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 ${orderNumber}\u0648 \u0628\u0647 \u0648\u0632\u0646 ${weight} \u0628\u0647 \u062B\u0628\u062A \u0631\u0633\u06CC\u062F.`); - } catch (e) { - this.logger.error(`Order SMS to sales agent ${agentId} failed: ${String(e)}`); - } - } - async updateStatus(orderId, newStatus, actorAdminUserId, note) { - return this.prisma.$transaction(async (tx) => { - const order = await tx.order.findUnique({ where: { id: orderId } }); - if (!order) - throw new common_12.NotFoundException(`Order ${orderId} not found`); - const updated = await tx.order.update({ - where: { id: orderId }, - data: { - status: newStatus, - deliveredAt: newStatus === client_1.OrderStatus.DELIVERED_TO_CUSTOMER ? /* @__PURE__ */ new Date() : order.deliveredAt - } - }); - await tx.orderStatusEvent.create({ - data: { orderId, fromStatus: order.status, toStatus: newStatus, note, actorAdminId: actorAdminUserId } - }); - await this.ledger.syncOrderDebt(orderId, tx); - if (newStatus === client_1.OrderStatus.CANCELLED && order.status !== client_1.OrderStatus.CANCELLED) { - await this.accounting.orderCancelled(tx, orderId); - } else if (newStatus !== order.status) { - await this.accounting.orderStatusReached(tx, orderId, newStatus); - } - return updated; - }); - } - /** Unscoped read. Only reachable from the admin-guarded route. */ - getById(orderId) { - return this.prisma.order.findUnique({ - where: { id: orderId }, - include: { items: true, statusEvents: true, ledgerEntries: true } - }); - } - /** - * A customer reading one of their own orders. - * - * Someone else's order is reported as 404, not 403: a 403 would confirm the - * id exists, which is the same enumeration leak the id-addressed customer - * routes had. - */ - async getOwnedById(orderId, customerId) { - const order = await this.prisma.order.findFirst({ - where: { id: orderId, customerId }, - include: { items: true, statusEvents: true, ledgerEntries: true } - }); - if (!order) - throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); - return order; - } - /** - * Short global sequential number for the customer, SMS and search - * (`100`, `101`, …). Allocated from Postgres `order_number_seq` inside the - * placement transaction so concurrent creates cannot collide. Legacy used - * the auto-increment order id the same way; the old `ORD-{ts}-{rand}` form - * was too long for SMS and the list UI. - */ - async nextOrderNumber(tx) { - const rows = await tx.$queryRaw` - SELECT nextval('order_number_seq') AS n - `; - const n = rows[0]?.n; - if (n === void 0 || n === null) { - throw new Error("order_number_seq returned no value"); - } - return String(n); - } - }; - exports2.OrdersService = OrdersService; - exports2.OrdersService = OrdersService = OrdersService_1 = __decorate4([ - (0, common_12.Injectable)(), - __metadata3("design:paramtypes", [ - prisma_service_1.PrismaService, - catalog_service_1.CatalogService, - ledger_service_1.LedgerService, - accounting_hooks_service_1.AccountingHooksService, - wage_service_1.WageService, - sms_service_12.SmsService - ]) - ], OrdersService); - } -}); - -// dist/modules/orders/dto/create-order.dto.js -var require_create_order_dto = __commonJS({ - "dist/modules/orders/dto/create-order.dto.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.CreateOrderDto = exports2.CreateOrderItemInputDto = void 0; - var class_transformer_1 = require_cjs2(); - var client_1 = require("@prisma/client"); - var class_validator_1 = require_cjs(); - var CreateOrderItemInputDto = class { - productVariantId; - quantity; - /** Making-charge percentage negotiated for this order (may differ from the variant default). */ - wagePercent; - discountPercent; - /** Flat Rial charge per unit, independent of gold weight (e.g. stones). */ - flatRialCharge; - }; - exports2.CreateOrderItemInputDto = CreateOrderItemInputDto; - __decorate4([ - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], CreateOrderItemInputDto.prototype, "productVariantId", void 0); - __decorate4([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata3("design:type", Number) - ], CreateOrderItemInputDto.prototype, "quantity", void 0); - __decorate4([ - (0, class_validator_1.IsNumber)(), - __metadata3("design:type", Number) - ], CreateOrderItemInputDto.prototype, "wagePercent", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsNumber)(), - __metadata3("design:type", Number) - ], CreateOrderItemInputDto.prototype, "discountPercent", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsNumber)(), - __metadata3("design:type", Number) - ], CreateOrderItemInputDto.prototype, "flatRialCharge", void 0); - var CreateOrderDto = class { - /** - * IGNORED BY THE SERVER. The customer is taken from the caller's token. - * - * It was required, and the route was public, so anyone could place an order - * on any customer's account — which lands on their gold debt and their - * ledger. Logged as SEC-02 in docs/parity/ISSUES.md. - * - * Kept as an optional field only so the two apps, which still send it, do not - * fail validation mid-flight. OrdersService logs a mismatch and always uses - * the token. Removed from the DTO and from both apps in Phase 2. - */ - customerId; - branchId; - /** - * Which sales channel placed the order. Legacy had no such field because the - * two channels lived in separate tables (orders vs orders_orders); the one - * Order model carries the distinction here. - * - * On the customer (app) path the server forces WHOLESALE and ignores this - * field. Operators may set it; admin MakeOrder always sends WHOLESALE. - * Default when an operator omits it remains RETAIL (retail list builder). - */ - channel; - items; - }; - exports2.CreateOrderDto = CreateOrderDto; - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], CreateOrderDto.prototype, "customerId", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], CreateOrderDto.prototype, "branchId", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsEnum)(client_1.OrderChannel), - __metadata3("design:type", String) - ], CreateOrderDto.prototype, "channel", void 0); - __decorate4([ - (0, class_validator_1.IsArray)(), - (0, class_validator_1.ArrayMinSize)(1), - (0, class_validator_1.ValidateNested)({ each: true }), - (0, class_transformer_1.Type)(() => CreateOrderItemInputDto), - __metadata3("design:type", Array) - ], CreateOrderDto.prototype, "items", void 0); - } -}); - -// dist/modules/orders/dto/update-order-status.dto.js -var require_update_order_status_dto = __commonJS({ - "dist/modules/orders/dto/update-order-status.dto.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.UpdateOrderStatusDto = void 0; - var class_validator_1 = require_cjs(); - var client_1 = require("@prisma/client"); - var UpdateOrderStatusDto = class { - status; - note; - actorAdminUserId; - }; - exports2.UpdateOrderStatusDto = UpdateOrderStatusDto; - __decorate4([ - (0, class_validator_1.IsEnum)(client_1.OrderStatus), - __metadata3("design:type", String) - ], UpdateOrderStatusDto.prototype, "status", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], UpdateOrderStatusDto.prototype, "note", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], UpdateOrderStatusDto.prototype, "actorAdminUserId", void 0); - } -}); - -// dist/modules/orders/orders.controller.js -var require_orders_controller = __commonJS({ - "dist/modules/orders/orders.controller.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.OrdersController = void 0; - var common_12 = require_common(); - var orders_service_1 = require_orders_service(); - var create_order_dto_1 = require_create_order_dto(); - var update_order_status_dto_1 = require_update_order_status_dto(); - var guards_1 = require_guards2(); - var customer_guards_1 = require_customer_guards(); - var OrdersController = class OrdersController { - orders; - constructor(orders) { - this.orders = orders; - } - /** - * The customer comes from the token; the body's `customerId` is ignored. - * - * `me.id` is already the right customer when a sales expert is acting as one - * of theirs, so such an order lands on that customer's account and ledger with - * server-side pricing (MON-08) exactly like one they placed themselves — which - * is what the reference did by lending the expert the customer's token. - * `actingAsExpertId` records who actually placed it, which the reference could - * not do. - */ - create(dto, me) { - return this.orders.createOrder(dto, me.id, { - placedBy: "customer", - actingAsExpertId: me.actingAsCustomerId ? me.adminUserId : void 0 - }); - } - /** - * Unscoped read for operators. - * - * Declared BEFORE the `:id` route below: Nest matches in declaration order, - * so a literal segment that could also be read as a parameter has to come - * first or it is never reached. - */ - getAsAdmin(id) { - return this.orders.getById(id); - } - /** - * A customer reading one of their own orders. Scoped by token; someone - * else's order is a 404 rather than a 403, so ids stay unenumerable. - * - * Mounted under /orders/:id (not /customer/me/orders/:id) so the existing - * client paths keep working; it is the scoping that matters, not the shape. - */ - get(id, me) { - return this.orders.getOwnedById(id, me.id); - } - updateStatus(id, dto) { - return this.orders.updateStatus(id, dto.status, dto.actorAdminUserId, dto.note); - } - }; - exports2.OrdersController = OrdersController; - __decorate4([ - (0, customer_guards_1.CustomerAuth)(), - (0, common_12.Post)(), - __param3(0, (0, common_12.Body)()), - __param3(1, (0, customer_guards_1.CurrentCustomer)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [create_order_dto_1.CreateOrderDto, Object]), - __metadata3("design:returntype", void 0) - ], OrdersController.prototype, "create", null); - __decorate4([ - (0, common_12.Get)("admin/:id"), - (0, guards_1.RequirePermission)("order.list"), - __param3(0, (0, common_12.Param)("id")), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [String]), - __metadata3("design:returntype", void 0) - ], OrdersController.prototype, "getAsAdmin", null); - __decorate4([ - (0, customer_guards_1.CustomerAuth)(), - (0, common_12.Get)(":id"), - __param3(0, (0, common_12.Param)("id")), - __param3(1, (0, customer_guards_1.CurrentCustomer)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [String, Object]), - __metadata3("design:returntype", void 0) - ], OrdersController.prototype, "get", null); - __decorate4([ - (0, common_12.Patch)(":id/status"), - (0, guards_1.RequirePermission)("order.list.sts.submit"), - __param3(0, (0, common_12.Param)("id")), - __param3(1, (0, common_12.Body)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [String, update_order_status_dto_1.UpdateOrderStatusDto]), - __metadata3("design:returntype", void 0) - ], OrdersController.prototype, "updateStatus", null); - exports2.OrdersController = OrdersController = __decorate4([ - (0, common_12.Controller)("orders"), - __metadata3("design:paramtypes", [orders_service_1.OrdersService]) - ], OrdersController); - } -}); - -// dist/modules/accounting/dto/post-gold-repayment.dto.js -var require_post_gold_repayment_dto = __commonJS({ - "dist/modules/accounting/dto/post-gold-repayment.dto.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.PostGoldRepaymentDto = void 0; - var class_validator_1 = require_cjs(); - var PostGoldRepaymentDto = class { - customerId; - instrument; - rawValue; - karatPerMille; - pricePerGramRial; - note; - }; - exports2.PostGoldRepaymentDto = PostGoldRepaymentDto; - __decorate4([ - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], PostGoldRepaymentDto.prototype, "customerId", void 0); - __decorate4([ - (0, class_validator_1.IsIn)(["MELTED_GOLD", "TRANSFER", "CHEQUE", "CASH"]), - __metadata3("design:type", String) - ], PostGoldRepaymentDto.prototype, "instrument", void 0); - __decorate4([ - (0, class_validator_1.IsNumber)(), - (0, class_validator_1.IsPositive)(), - __metadata3("design:type", Number) - ], PostGoldRepaymentDto.prototype, "rawValue", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsNumber)(), - __metadata3("design:type", Number) - ], PostGoldRepaymentDto.prototype, "karatPerMille", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsNumber)(), - (0, class_validator_1.IsPositive)(), - __metadata3("design:type", Number) - ], PostGoldRepaymentDto.prototype, "pricePerGramRial", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], PostGoldRepaymentDto.prototype, "note", void 0); - } -}); - -// dist/modules/accounting/dto/post-rial-repayment.dto.js -var require_post_rial_repayment_dto = __commonJS({ - "dist/modules/accounting/dto/post-rial-repayment.dto.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.PostRialRepaymentDto = void 0; - var class_validator_1 = require_cjs(); - var PostRialRepaymentDto = class { - customerId; - amount; - note; - }; - exports2.PostRialRepaymentDto = PostRialRepaymentDto; - __decorate4([ - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], PostRialRepaymentDto.prototype, "customerId", void 0); - __decorate4([ - (0, class_validator_1.IsNumber)(), - (0, class_validator_1.IsPositive)(), - __metadata3("design:type", Number) - ], PostRialRepaymentDto.prototype, "amount", void 0); - __decorate4([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata3("design:type", String) - ], PostRialRepaymentDto.prototype, "note", void 0); - } -}); - -// dist/modules/accounting/accounting.controller.js -var require_accounting_controller = __commonJS({ - "dist/modules/accounting/accounting.controller.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.AccountingController = void 0; - var common_12 = require_common(); - var ledger_service_1 = require_ledger_service(); - var post_gold_repayment_dto_1 = require_post_gold_repayment_dto(); - var post_rial_repayment_dto_1 = require_post_rial_repayment_dto(); - var guards_1 = require_guards2(); - var AccountingController = class AccountingController { - ledger; - constructor(ledger) { - this.ledger = ledger; - } - getBalance(customerId) { - return this.ledger.getBalance(customerId); - } - reconcile(customerId) { - return this.ledger.reconcileBalance(customerId); - } - postGoldRepayment(dto) { - return this.ledger.postGoldRepayment(dto); - } - postRialRepayment(dto) { - return this.ledger.postRialRepayment(dto); - } - confirmEntry(entryId) { - return this.ledger.confirmEntry(entryId); - } - }; - exports2.AccountingController = AccountingController; - __decorate4([ - (0, common_12.Get)("customers/:customerId/balance"), - (0, guards_1.RequirePermission)("wallet.list"), - __param3(0, (0, common_12.Param)("customerId")), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [String]), - __metadata3("design:returntype", void 0) - ], AccountingController.prototype, "getBalance", null); - __decorate4([ - (0, common_12.Post)("customers/:customerId/reconcile"), - (0, guards_1.RequirePermission)("wallet.charge"), - __param3(0, (0, common_12.Param)("customerId")), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [String]), - __metadata3("design:returntype", void 0) - ], AccountingController.prototype, "reconcile", null); - __decorate4([ - (0, common_12.Post)("repayments/gold"), - (0, guards_1.RequirePermission)("document.create"), - __param3(0, (0, common_12.Body)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [post_gold_repayment_dto_1.PostGoldRepaymentDto]), - __metadata3("design:returntype", void 0) - ], AccountingController.prototype, "postGoldRepayment", null); - __decorate4([ - (0, common_12.Post)("repayments/rial"), - (0, guards_1.RequirePermission)("document.create"), - __param3(0, (0, common_12.Body)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [post_rial_repayment_dto_1.PostRialRepaymentDto]), - __metadata3("design:returntype", void 0) - ], AccountingController.prototype, "postRialRepayment", null); - __decorate4([ - (0, common_12.Post)("entries/:entryId/confirm"), - (0, guards_1.RequirePermission)("document.list.confirm"), - __param3(0, (0, common_12.Param)("entryId")), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [String]), - __metadata3("design:returntype", void 0) - ], AccountingController.prototype, "confirmEntry", null); - exports2.AccountingController = AccountingController = __decorate4([ - (0, common_12.Controller)("accounting"), - __metadata3("design:paramtypes", [ledger_service_1.LedgerService]) - ], AccountingController); - } -}); - -// dist/modules/accounting/accounting.module.js -var require_accounting_module = __commonJS({ - "dist/modules/accounting/accounting.module.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.AccountingModule = void 0; - var common_12 = require_common(); - var ledger_service_1 = require_ledger_service(); - var accounting_controller_1 = require_accounting_controller(); - var AccountingModule = class AccountingModule { - }; - exports2.AccountingModule = AccountingModule; - exports2.AccountingModule = AccountingModule = __decorate4([ - (0, common_12.Module)({ - controllers: [accounting_controller_1.AccountingController], - providers: [ledger_service_1.LedgerService], - exports: [ledger_service_1.LedgerService] - }) - ], AccountingModule); - } -}); - -// dist/modules/pricing/pricing.service.js -var require_pricing_service = __commonJS({ - "dist/modules/pricing/pricing.service.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.PricingService = void 0; - var common_12 = require_common(); - var prisma_service_1 = require_prisma_service(); - var PricingService = class PricingService { - prisma; - constructor(prisma) { - this.prisma = prisma; - } - async recordQuote(karatPerMille, pricePerGramRial, source) { - return this.prisma.goldPriceQuote.create({ - data: { karatPerMille, pricePerGramRial, source } - }); - } - async getLatestQuote(karatPerMille) { - const quote = await this.prisma.goldPriceQuote.findFirst({ - where: { karatPerMille }, - orderBy: { quotedAt: "desc" } - }); - if (!quote) - throw new common_12.NotFoundException(`No gold price quote recorded for ${karatPerMille}\u2030`); - return quote; - } - }; - exports2.PricingService = PricingService; - exports2.PricingService = PricingService = __decorate4([ - (0, common_12.Injectable)(), - __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) - ], PricingService); - } -}); - -// dist/modules/pricing/pricing.controller.js -var require_pricing_controller = __commonJS({ - "dist/modules/pricing/pricing.controller.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.PricingController = void 0; - var common_12 = require_common(); - var pricing_service_1 = require_pricing_service(); - var guards_1 = require_guards2(); - var PricingController = class PricingController { - pricing; - constructor(pricing) { - this.pricing = pricing; - } - getLatest(karatPerMille) { - return this.pricing.getLatestQuote(Number(karatPerMille) || 750); - } - }; - exports2.PricingController = PricingController; - __decorate4([ - (0, common_12.Get)("latest"), - __param3(0, (0, common_12.Query)("karatPerMille")), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [String]), - __metadata3("design:returntype", void 0) - ], PricingController.prototype, "getLatest", null); - exports2.PricingController = PricingController = __decorate4([ - (0, guards_1.Public)(), - (0, common_12.Controller)("pricing"), - __metadata3("design:paramtypes", [pricing_service_1.PricingService]) - ], PricingController); - } -}); - -// dist/modules/pricing/wage.controller.js -var require_wage_controller = __commonJS({ - "dist/modules/pricing/wage.controller.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __metadata3 = exports2 && exports2.__metadata || function(k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); - }; - var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.WageCustomerController = exports2.WageAdminController = void 0; - var common_12 = require_common(); - var class_validator_1 = require_cjs(); - var guards_1 = require_guards2(); - var customer_guards_1 = require_customer_guards(); - var wage_service_1 = require_wage_service(); - var WageAdminController = class WageAdminController { - wage; - constructor(wage) { - this.wage = wage; - } - get() { - return this.wage.getConfig(); - } - /** Nothing is saved: the draft and the formula in force on the same sample. */ - preview(body) { - return this.wage.preview(body?.formula, body?.sample); - } - /** Puts the formula in force, recorded with the sample it was checked on. */ - approve(body, admin) { - return this.wage.approve(body?.formula, body?.sample, admin); - } - }; - exports2.WageAdminController = WageAdminController; - __decorate4([ - (0, common_12.Get)(), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", []), - __metadata3("design:returntype", void 0) - ], WageAdminController.prototype, "get", null); - __decorate4([ - (0, common_12.Post)("preview"), - (0, common_12.HttpCode)(200), - __param3(0, (0, common_12.Body)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [Object]), - __metadata3("design:returntype", void 0) - ], WageAdminController.prototype, "preview", null); - __decorate4([ - (0, common_12.Put)(), - __param3(0, (0, common_12.Body)()), - __param3(1, (0, guards_1.CurrentAdmin)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [Object, Object]), - __metadata3("design:returntype", void 0) - ], WageAdminController.prototype, "approve", null); - exports2.WageAdminController = WageAdminController = __decorate4([ - (0, common_12.Controller)("admin/pricing/wage-formula"), - (0, guards_1.RequirePermission)("config.wage"), - __metadata3("design:paramtypes", [wage_service_1.WageService]) - ], WageAdminController); - var WageQuoteDto = class { - variantIds; - }; - __decorate4([ - (0, class_validator_1.IsArray)(), - (0, class_validator_1.ArrayMaxSize)(200), - (0, class_validator_1.IsString)({ each: true }), - __metadata3("design:type", Array) - ], WageQuoteDto.prototype, "variantIds", void 0); - var WageCustomerController = class WageCustomerController { - wage; - constructor(wage) { - this.wage = wage; - } - async quote(dto, me) { - return [...(await this.wage.quote(me.id, dto.variantIds)).values()]; - } - }; - exports2.WageCustomerController = WageCustomerController; - __decorate4([ - (0, customer_guards_1.CustomerAuth)(), - (0, common_12.Post)(), - (0, common_12.HttpCode)(200), - __param3(0, (0, common_12.Body)()), - __param3(1, (0, customer_guards_1.CurrentCustomer)()), - __metadata3("design:type", Function), - __metadata3("design:paramtypes", [WageQuoteDto, Object]), - __metadata3("design:returntype", Promise) - ], WageCustomerController.prototype, "quote", null); - exports2.WageCustomerController = WageCustomerController = __decorate4([ - (0, common_12.Controller)("customer/me/wage-quote"), - __metadata3("design:paramtypes", [wage_service_1.WageService]) - ], WageCustomerController); - } -}); - -// dist/modules/pricing/pricing.module.js -var require_pricing_module = __commonJS({ - "dist/modules/pricing/pricing.module.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.PricingModule = void 0; - var common_12 = require_common(); - var pricing_service_1 = require_pricing_service(); - var pricing_controller_1 = require_pricing_controller(); - var wage_service_1 = require_wage_service(); - var wage_controller_1 = require_wage_controller(); - var PricingModule = class PricingModule { - }; - exports2.PricingModule = PricingModule; - exports2.PricingModule = PricingModule = __decorate4([ - (0, common_12.Module)({ - controllers: [pricing_controller_1.PricingController, wage_controller_1.WageAdminController, wage_controller_1.WageCustomerController], - providers: [pricing_service_1.PricingService, wage_service_1.WageService], - exports: [pricing_service_1.PricingService, wage_service_1.WageService] - }) - ], PricingModule); - } -}); - -// dist/modules/orders/orders.module.js -var require_orders_module = __commonJS({ - "dist/modules/orders/orders.module.js"(exports2) { - "use strict"; - var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.OrdersModule = void 0; - var common_12 = require_common(); - var orders_service_1 = require_orders_service(); - var orders_controller_1 = require_orders_controller(); - var catalog_module_1 = require_catalog_module(); - var accounting_module_1 = require_accounting_module(); - var pricing_module_1 = require_pricing_module(); - var sms_module_1 = require_sms_module(); - var OrdersModule = class OrdersModule { - }; - exports2.OrdersModule = OrdersModule; - exports2.OrdersModule = OrdersModule = __decorate4([ - (0, common_12.Module)({ - imports: [catalog_module_1.CatalogModule, accounting_module_1.AccountingModule, pricing_module_1.PricingModule, sms_module_1.SmsModule], - controllers: [orders_controller_1.OrdersController], - providers: [orders_service_1.OrdersService], - exports: [orders_service_1.OrdersService] - }) - ], OrdersModule); - } -}); - // dist/modules/accounting-sync/accounting-admin.service.js var require_accounting_admin_service = __commonJS({ "dist/modules/accounting-sync/accounting-admin.service.js"(exports2) { @@ -95240,6 +95709,7 @@ var require_admin_orders_service = __commonJS({ var table_service_1 = require_table_service(); var accounting_hooks_service_1 = require_accounting_hooks_service(); var orders_service_1 = require_orders_service(); + var order_revision_service_1 = require_order_revision_service(); var ledger_service_1 = require_ledger_service(); var STATUS_LABELS = { SUSPENDED: "\u0645\u0639\u0644\u0642 (\u0633\u0642\u0641 \u0627\u0639\u062A\u0628\u0627\u0631)", @@ -95259,6 +95729,18 @@ var require_admin_orders_service = __commonJS({ client_1.OrderStatus.DELIVERED_TO_AGENT, client_1.OrderStatus.DELIVERED_TO_CUSTOMER ]; + var ORDER_ITEM_INCLUDE = { + productVariant: { + include: { + image: true, + product: { + include: { + images: { orderBy: { sortOrder: "asc" }, take: 1 } + } + } + } + } + }; var AdminOrdersService = class AdminOrdersService { static { AdminOrdersService_1 = this; @@ -95266,12 +95748,14 @@ var require_admin_orders_service = __commonJS({ prisma; table; orders; + revisions; accounting; ledger; - constructor(prisma, table, orders, accounting, ledger) { + constructor(prisma, table, orders, revisions, accounting, ledger) { this.prisma = prisma; this.table = table; this.orders = orders; + this.revisions = revisions; this.accounting = accounting; this.ledger = ledger; } @@ -95318,7 +95802,7 @@ var require_admin_orders_service = __commonJS({ include: { customer: true, branch: true, - items: { include: { productVariant: { include: { product: true } } } } + items: { include: ORDER_ITEM_INCLUDE } } }), this.prisma.order.count({ where: scoped }) @@ -95332,16 +95816,22 @@ var require_admin_orders_service = __commonJS({ * so the ported template bindings keep working unchanged. */ toRow(o) { + const awaiting = o.revisionStatus === client_1.OrderRevisionStatus.AWAITING_CUSTOMER; return { id: o.id, orderNumber: o.orderNumber, status: o.status, sts_str: STATUS_LABELS[o.status], + revisionStatus: o.revisionStatus ?? client_1.OrderRevisionStatus.NONE, + // Legacy Omde/Tamin «تایید مشتری» column (1 = ok / 2 = waiting). + confirmed: awaiting ? 2 : 1, + confirmed_str: awaiting ? "\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u062A\u0627\u06CC\u06CC\u062F" : "\u2014", caj: o.createdAt, uaj: o.updatedAt, total_price: o.flatRialCharge, totalGoldWeightGrams: o.totalGoldWeightGrams, wageWeightGrams: o.wageWeightGrams, + flatRialCharge: o.flatRialCharge, isSuspendedOverCreditLimit: o.isSuspendedOverCreditLimit, deliveredAt: o.deliveredAt, branch_id: o.branchId, @@ -95357,11 +95847,18 @@ var require_admin_orders_service = __commonJS({ }, items: o.items.map((it) => ({ id: it.id, + productVariantId: it.productVariantId, title: it.productVariant.product.title, variant_title: it.productVariant.title, qty: it.quantity, grams: it.computedWeightGrams, - rash: it.rashWeightGramsSnapshot + rash: it.rashWeightGramsSnapshot, + wagePercent: it.wagePercentSnapshot, + discountPercent: it.discountPercentSnapshot, + flatRialCharge: it.flatRialCharge, + // Same preference as the customer app: variant photo, else product cover. + image: it.productVariant.image?.url ?? it.productVariant.product.images[0]?.url ?? null, + note: "" })) }; } @@ -95410,7 +95907,7 @@ var require_admin_orders_service = __commonJS({ include: { customer: true, branch: true, - items: { include: { productVariant: { include: { product: true } } } } + items: { include: ORDER_ITEM_INCLUDE } } }), this.prisma.order.count({ where: scoped }) @@ -95443,15 +95940,22 @@ var require_admin_orders_service = __commonJS({ include: { customer: true, branch: true, - items: { include: { productVariant: { include: { product: true } } } }, + items: { include: ORDER_ITEM_INCLUDE }, statusEvents: { include: { actorAdmin: true }, orderBy: { createdAt: "asc" } } } }); if (!order) throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); const reached = new Set(order.statusEvents.map((e) => e.toStatus)); + const pending = await this.revisions.pendingForOrder(id); + let pendingRevision = pending ? this.revisions.shapeRevision(pending) : null; + if (pendingRevision && pending?.customerDecision === "REJECTED") { + pendingRevision.confirmed_str = "\u0631\u062F \u0634\u062F\u0647 \u062A\u0648\u0633\u0637 \u0645\u0634\u062A\u0631\u06CC"; + } return { ...this.toRow(order), + confirmed_str: order.revisionStatus === client_1.OrderRevisionStatus.AWAITING_CUSTOMER ? pending?.customerDecision === "REJECTED" ? "\u0631\u062F \u0634\u062F\u0647 \u062A\u0648\u0633\u0637 \u0645\u0634\u062A\u0631\u06CC" : "\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u062A\u0627\u06CC\u06CC\u062F" : "\u2014", + pendingRevision, // legacy `activity`: one entry per step, `proceed` marking those reached activity: STATUS_FLOW.map((s) => { const event = order.statusEvents.find((e) => e.toStatus === s); @@ -95465,6 +95969,24 @@ var require_admin_orders_service = __commonJS({ }) }; } + editableStatuses() { + return this.revisions.editableStatuses(); + } + proposeEdit(body, adminId) { + if (!body.orderId) + throw new common_12.BadRequestException("\u0633\u0641\u0627\u0631\u0634 \u0645\u0634\u062E\u0635 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + return this.revisions.propose(body.orderId, body.items ?? [], adminId, body.note); + } + forceApplyEdit(orderId, adminId) { + if (!orderId) + throw new common_12.BadRequestException("\u0633\u0641\u0627\u0631\u0634 \u0645\u0634\u062E\u0635 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + return this.revisions.forceApply(orderId, adminId); + } + discardEdit(orderId, adminId) { + if (!orderId) + throw new common_12.BadRequestException("\u0633\u0641\u0627\u0631\u0634 \u0645\u0634\u062E\u0635 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + return this.revisions.discard(orderId, adminId); + } /** Farsi labels for the status dropdowns. */ statusOptions() { return Object.entries(STATUS_LABELS).map(([value, title]) => ({ value, title })); @@ -95588,6 +96110,7 @@ var require_admin_orders_service = __commonJS({ prisma_service_1.PrismaService, table_service_1.TableService, orders_service_1.OrdersService, + order_revision_service_1.OrderRevisionService, accounting_hooks_service_1.AccountingHooksService, ledger_service_1.LedgerService ]) @@ -95836,6 +96359,20 @@ var require_admin_orders_controller = __commonJS({ setStatus(dto, admin) { return this.orders.setStatus(dto, admin.id); } + /** Stages where admin may propose an edit — from Setting `order.edit.editableStatuses`. */ + editableStatuses() { + return this.orders.editableStatuses(); + } + /** Propose a full line-item edit; customer must confirm (SMS sent). */ + proposeEdit(body, admin) { + return this.orders.proposeEdit(body, admin.id); + } + forceApplyEdit(body, admin) { + return this.orders.forceApplyEdit(body.orderId, admin.id); + } + discardEdit(body, admin) { + return this.orders.discardEdit(body.orderId, admin.id); + } findOne(id) { return this.orders.findOne(id); } @@ -95917,6 +96454,43 @@ var require_admin_orders_controller = __commonJS({ __metadata3("design:paramtypes", [update_status_dto_1.UpdateOrderStatusDto, Object]), __metadata3("design:returntype", void 0) ], AdminOrdersController.prototype, "setStatus", null); + __decorate4([ + (0, common_12.Get)("edit/editable-statuses"), + (0, guards_1.RequirePermission)("order.list", "order.omde", "order.tamin", "order.list.view.edit"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "editableStatuses", null); + __decorate4([ + (0, common_12.Post)("edit/propose"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.list.view.edit", "order.omde.view.edit", "order.tamin.view.edit"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "proposeEdit", null); + __decorate4([ + (0, common_12.Post)("edit/force-apply"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.list.view.edit", "order.omde.view.edit", "order.tamin.view.edit"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "forceApplyEdit", null); + __decorate4([ + (0, common_12.Post)("edit/discard"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.list.view.edit", "order.omde.view.edit", "order.tamin.view.edit"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "discardEdit", null); __decorate4([ (0, common_12.Get)(":id"), (0, guards_1.RequirePermission)("order.list", "order.omde", "order.tamin"), @@ -98761,6 +99335,7 @@ var require_admin_products_service = __commonJS({ "showType", "isActive", "createdAt", + "categoryId", "brand.title", "category.title", // legacy filter keys @@ -98823,6 +99398,7 @@ var require_admin_products_service = __commonJS({ show_type_str: SHOW_TYPE_LABELS[p.showType] ?? "-", is_active: p.isActive, description: p.description, + tags: p.tags ?? [], brand: p.brand ? { id: p.brand.id, title: p.brand.title } : null, // Legacy nested this as category.collection.title in the grid model. category: p.category ? { id: p.category.id, title: p.category.title, collection: { title: p.category.title } } : null, @@ -98873,6 +99449,7 @@ var require_admin_products_service = __commonJS({ brand_id: p.brandId, cats: p.categoryId ? [p.categoryId] : [], ciny_ids: p.collections.map((c) => c.collectionId), + tags: p.tags ?? [], variants_all: p.variants.map((v) => this.variantRow(v)), // The 4 image slots the product form edits, split back out by role — // mirrors the shape AddProduct.vue posts (indicator_id / mobile_pic / @@ -98927,7 +99504,7 @@ var require_admin_products_service = __commonJS({ async listVariants(query) { this.table.assertNotExport(query); const { where, orderBy, skip, take, page, limit } = this.table.build(query, { - searchable: ["title", "sku"], + searchable: ["title", "sku", "product.title"], allowed: ["id", "title", "sku", "qty", "rashWeightGrams", "isActive", "product.title"], defaultOrderBy: { title: "asc" } }); @@ -99066,6 +99643,18 @@ var require_admin_products_service = __commonJS({ * for the two featured slots and one URL array each for the two galleries; * this flattens all four into the role-tagged rows ProductImage.create wants. */ + /** Tags posted by the product form — trimmed unique strings, empty dropped. */ + normalizeTags(raw) { + if (!Array.isArray(raw)) + return []; + const out = []; + for (const item of raw) { + const t = String(item ?? "").trim(); + if (t && !out.includes(t)) + out.push(t); + } + return out; + } imageCreateData(data) { const rows = []; const single = (v, role) => { @@ -99107,6 +99696,7 @@ var require_admin_products_service = __commonJS({ isActive: data.is_active !== void 0 ? Boolean(data.is_active) : true, brandId: data.brand_id || null, categoryId: cats[0] ?? null, + tags: this.normalizeTags(data.tags), collections: cinyIds.length ? { create: cinyIds.map((collectionId) => ({ collectionId })) } : void 0, images: images.length ? { create: images } : void 0 }, @@ -99160,6 +99750,9 @@ var require_admin_products_service = __commonJS({ const catId = data.cats[0]; patch.category = catId ? { connect: { id: catId } } : { disconnect: true }; } + if (data.tags !== void 0) { + patch.tags = this.normalizeTags(data.tags); + } await this.prisma.product.update({ where: { id }, data: patch }); await this.syncImages(id, data); if (Array.isArray(data.variants)) { @@ -99326,6 +99919,14 @@ var require_admin_products_service = __commonJS({ async brands() { return this.prisma.brand.findMany({ orderBy: { title: "asc" } }); } + /** Categories that currently have at least one active product — order picker chips. */ + async categoriesForPicker() { + return this.prisma.category.findMany({ + where: { products: { some: { isActive: true } } }, + orderBy: { title: "asc" }, + select: { id: true, title: true } + }); + } /** Brands in the XTable envelope, for the promotion-exclusion picker. */ async brandsTable(query) { this.table.assertNotExport(query); @@ -99438,6 +100039,9 @@ var require_admin_products_controller = __commonJS({ brands() { return this.products.brands(); } + categories() { + return this.products.categoriesForPicker(); + } /** Brands as an XTable grid — the exclusion picker needs a selectable table. */ brandsTable(query) { return this.products.brandsTable(query); @@ -99528,6 +100132,13 @@ var require_admin_products_controller = __commonJS({ __metadata3("design:paramtypes", []), __metadata3("design:returntype", void 0) ], AdminProductsController.prototype, "brands", null); + __decorate4([ + (0, common_12.Get)("categories"), + (0, guards_1.RequirePermission)("product.list", "order.list.view.edit", "order.omde.view.edit", "order.tamin.view.edit"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "categories", null); __decorate4([ (0, common_12.Post)("brands-table"), (0, common_12.HttpCode)(200), diff --git a/apps/api/release/migrations/20261028120000_product_tags/migration.sql b/apps/api/release/migrations/20261028120000_product_tags/migration.sql new file mode 100644 index 0000000..9666f75 --- /dev/null +++ b/apps/api/release/migrations/20261028120000_product_tags/migration.sql @@ -0,0 +1,2 @@ +-- Product labels from Setting `__list__tags`, assigned per product in admin. +ALTER TABLE "Product" ADD COLUMN IF NOT EXISTS "tags" TEXT[] DEFAULT ARRAY[]::TEXT[]; diff --git a/apps/api/release/migrations/20261028140000_order_revision/migration.sql b/apps/api/release/migrations/20261028140000_order_revision/migration.sql new file mode 100644 index 0000000..73799be --- /dev/null +++ b/apps/api/release/migrations/20261028140000_order_revision/migration.sql @@ -0,0 +1,29 @@ +-- Admin order edit + customer confirm (Order.revisionStatus / OrderRevision). + +CREATE TYPE "OrderRevisionStatus" AS ENUM ('NONE', 'AWAITING_CUSTOMER'); + +ALTER TABLE "Order" ADD COLUMN "revisionStatus" "OrderRevisionStatus" NOT NULL DEFAULT 'NONE'; + +CREATE TABLE "OrderRevision" ( + "id" TEXT NOT NULL, + "orderId" TEXT NOT NULL, + "items" JSONB NOT NULL, + "totalGoldWeightGrams" DECIMAL(14,4) NOT NULL, + "wageWeightGrams" DECIMAL(14,4) NOT NULL, + "flatRialCharge" DECIMAL(20,2) NOT NULL DEFAULT 0, + "proposedByAdminUserId" TEXT, + "note" TEXT, + "customerDecision" TEXT, + "customerDecidedAt" TIMESTAMP(3), + "appliedAt" TIMESTAMP(3), + "discardedAt" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "OrderRevision_pkey" PRIMARY KEY ("id") +); + +CREATE INDEX "Order_revisionStatus_idx" ON "Order"("revisionStatus"); +CREATE INDEX "OrderRevision_orderId_idx" ON "OrderRevision"("orderId"); +CREATE INDEX "OrderRevision_createdAt_idx" ON "OrderRevision"("createdAt"); + +ALTER TABLE "OrderRevision" ADD CONSTRAINT "OrderRevision_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/api/release/vendor/.prisma/client/edge.js b/apps/api/release/vendor/.prisma/client/edge.js index 76df2ef..8229615 100644 --- a/apps/api/release/vendor/.prisma/client/edge.js +++ b/apps/api/release/vendor/.prisma/client/edge.js @@ -285,6 +285,7 @@ exports.Prisma.ProductScalarFieldEnum = { productCode: 'productCode', showType: 'showType', isActive: 'isActive', + tags: 'tags', createdAt: 'createdAt', accountingStockWeight: 'accountingStockWeight', accountingStockCount: 'accountingStockCount', @@ -323,6 +324,7 @@ exports.Prisma.OrderScalarFieldEnum = { branchId: 'branchId', channel: 'channel', status: 'status', + revisionStatus: 'revisionStatus', totalGoldWeightGrams: 'totalGoldWeightGrams', wageWeightGrams: 'wageWeightGrams', flatRialCharge: 'flatRialCharge', @@ -334,6 +336,22 @@ exports.Prisma.OrderScalarFieldEnum = { updatedAt: 'updatedAt' }; +exports.Prisma.OrderRevisionScalarFieldEnum = { + id: 'id', + orderId: 'orderId', + items: 'items', + totalGoldWeightGrams: 'totalGoldWeightGrams', + wageWeightGrams: 'wageWeightGrams', + flatRialCharge: 'flatRialCharge', + proposedByAdminId: 'proposedByAdminId', + note: 'note', + customerDecision: 'customerDecision', + customerDecidedAt: 'customerDecidedAt', + appliedAt: 'appliedAt', + discardedAt: 'discardedAt', + createdAt: 'createdAt' +}; + exports.Prisma.OrderItemScalarFieldEnum = { id: 'id', orderId: 'orderId', @@ -684,6 +702,11 @@ exports.OrderStatus = exports.$Enums.OrderStatus = { CANCELLED: 'CANCELLED' }; +exports.OrderRevisionStatus = exports.$Enums.OrderRevisionStatus = { + NONE: 'NONE', + AWAITING_CUSTOMER: 'AWAITING_CUSTOMER' +}; + exports.PreOrderStatus = exports.$Enums.PreOrderStatus = { PLACED: 'PLACED', ADMIN_APPROVED: 'ADMIN_APPROVED', @@ -782,6 +805,7 @@ exports.Prisma.ModelName = { ProductImage: 'ProductImage', ProductVariant: 'ProductVariant', Order: 'Order', + OrderRevision: 'OrderRevision', OrderItem: 'OrderItem', OrderStatusEvent: 'OrderStatusEvent', PreOrder: 'PreOrder', @@ -859,13 +883,13 @@ const config = { } } }, - "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", - "inlineSchemaHash": "10ad1bc4a821d684d83386a2c37bcf3e456d62228210ecd06ea12b67f136467e", + "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n /// Labels from Setting `__list__tags`, assigned on the product form. The\n /// storefront shows them on list cards only (not the product detail page).\n tags String[] @default([])\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Customer-confirm state for an admin-proposed order edit (not a pipeline status).\nenum OrderRevisionStatus {\n NONE\n AWAITING_CUSTOMER\n}\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Pending admin edit awaiting customer confirm (or admin force/discard).\n revisionStatus OrderRevisionStatus @default(NONE)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n revisions OrderRevision[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([revisionStatus])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\n/// Proposed line-item edit for an Order. Live until applied or discarded.\n/// While pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\n/// stay on the current Order until the customer confirms (or admin force-applies).\nmodel OrderRevision {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)\n\n /// Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\n /// wagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\n items Json\n\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n wageWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n proposedByAdminId String? @map(\"proposedByAdminUserId\")\n note String?\n\n /// null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\n customerDecision String?\n customerDecidedAt DateTime?\n\n appliedAt DateTime?\n discardedAt DateTime?\n\n createdAt DateTime @default(now())\n\n @@index([orderId])\n @@index([createdAt])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", + "inlineSchemaHash": "c52b2d6375d403f686a8ae11239e17fb11b10aa2d23a5b856dcfdce24f83247f", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Labels from Setting `__list__tags`, assigned on the product form. The\\\\nstorefront shows them on list cards only (not the product detail page).\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisionStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderRevisionStatus\",\"default\":\"NONE\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending admin edit awaiting customer confirm (or admin force/discard).\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderRevision\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderRevision\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\\\\nwagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"proposedByAdminId\",\"dbName\":\"proposedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerDecision\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\"},{\"name\":\"customerDecidedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appliedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discardedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Proposed line-item edit for an Order. Live until applied or discarded.\\\\nWhile pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\\\\nstay on the current Order until the customer confirms (or admin force-applies).\"},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"OrderRevisionStatus\":{\"values\":[{\"name\":\"NONE\",\"dbName\":null},{\"name\":\"AWAITING_CUSTOMER\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Customer-confirm state for an admin-proposed order edit (not a pipeline status).\"},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined diff --git a/apps/api/release/vendor/.prisma/client/index-browser.js b/apps/api/release/vendor/.prisma/client/index-browser.js index 85baad2..1e6f40d 100644 --- a/apps/api/release/vendor/.prisma/client/index-browser.js +++ b/apps/api/release/vendor/.prisma/client/index-browser.js @@ -317,6 +317,7 @@ exports.Prisma.ProductScalarFieldEnum = { productCode: 'productCode', showType: 'showType', isActive: 'isActive', + tags: 'tags', createdAt: 'createdAt', accountingStockWeight: 'accountingStockWeight', accountingStockCount: 'accountingStockCount', @@ -355,6 +356,7 @@ exports.Prisma.OrderScalarFieldEnum = { branchId: 'branchId', channel: 'channel', status: 'status', + revisionStatus: 'revisionStatus', totalGoldWeightGrams: 'totalGoldWeightGrams', wageWeightGrams: 'wageWeightGrams', flatRialCharge: 'flatRialCharge', @@ -366,6 +368,22 @@ exports.Prisma.OrderScalarFieldEnum = { updatedAt: 'updatedAt' }; +exports.Prisma.OrderRevisionScalarFieldEnum = { + id: 'id', + orderId: 'orderId', + items: 'items', + totalGoldWeightGrams: 'totalGoldWeightGrams', + wageWeightGrams: 'wageWeightGrams', + flatRialCharge: 'flatRialCharge', + proposedByAdminId: 'proposedByAdminId', + note: 'note', + customerDecision: 'customerDecision', + customerDecidedAt: 'customerDecidedAt', + appliedAt: 'appliedAt', + discardedAt: 'discardedAt', + createdAt: 'createdAt' +}; + exports.Prisma.OrderItemScalarFieldEnum = { id: 'id', orderId: 'orderId', @@ -716,6 +734,11 @@ exports.OrderStatus = exports.$Enums.OrderStatus = { CANCELLED: 'CANCELLED' }; +exports.OrderRevisionStatus = exports.$Enums.OrderRevisionStatus = { + NONE: 'NONE', + AWAITING_CUSTOMER: 'AWAITING_CUSTOMER' +}; + exports.PreOrderStatus = exports.$Enums.PreOrderStatus = { PLACED: 'PLACED', ADMIN_APPROVED: 'ADMIN_APPROVED', @@ -814,6 +837,7 @@ exports.Prisma.ModelName = { ProductImage: 'ProductImage', ProductVariant: 'ProductVariant', Order: 'Order', + OrderRevision: 'OrderRevision', OrderItem: 'OrderItem', OrderStatusEvent: 'OrderStatusEvent', PreOrder: 'PreOrder', diff --git a/apps/api/release/vendor/.prisma/client/index.d.ts b/apps/api/release/vendor/.prisma/client/index.d.ts index 2ed63d4..9b6c3fc 100644 --- a/apps/api/release/vendor/.prisma/client/index.d.ts +++ b/apps/api/release/vendor/.prisma/client/index.d.ts @@ -168,6 +168,13 @@ export type ProductVariant = $Result.DefaultSelection +/** + * Model OrderRevision + * Proposed line-item edit for an Order. Live until applied or discarded. + * While pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures + * stay on the current Order until the customer confirms (or admin force-applies). + */ +export type OrderRevision = $Result.DefaultSelection /** * Model OrderItem * @@ -386,6 +393,14 @@ export const OrderStatus: { export type OrderStatus = (typeof OrderStatus)[keyof typeof OrderStatus] +export const OrderRevisionStatus: { + NONE: 'NONE', + AWAITING_CUSTOMER: 'AWAITING_CUSTOMER' +}; + +export type OrderRevisionStatus = (typeof OrderRevisionStatus)[keyof typeof OrderRevisionStatus] + + export const PreOrderStatus: { PLACED: 'PLACED', ADMIN_APPROVED: 'ADMIN_APPROVED', @@ -522,6 +537,10 @@ export type OrderStatus = $Enums.OrderStatus export const OrderStatus: typeof $Enums.OrderStatus +export type OrderRevisionStatus = $Enums.OrderRevisionStatus + +export const OrderRevisionStatus: typeof $Enums.OrderRevisionStatus + export type PreOrderStatus = $Enums.PreOrderStatus export const PreOrderStatus: typeof $Enums.PreOrderStatus @@ -879,6 +898,16 @@ export class PrismaClient< */ get order(): Prisma.OrderDelegate; + /** + * `prisma.orderRevision`: Exposes CRUD operations for the **OrderRevision** model. + * Example usage: + * ```ts + * // Fetch zero or more OrderRevisions + * const orderRevisions = await prisma.orderRevision.findMany() + * ``` + */ + get orderRevision(): Prisma.OrderRevisionDelegate; + /** * `prisma.orderItem`: Exposes CRUD operations for the **OrderItem** model. * Example usage: @@ -1588,6 +1617,7 @@ export namespace Prisma { ProductImage: 'ProductImage', ProductVariant: 'ProductVariant', Order: 'Order', + OrderRevision: 'OrderRevision', OrderItem: 'OrderItem', OrderStatusEvent: 'OrderStatusEvent', PreOrder: 'PreOrder', @@ -1628,7 +1658,7 @@ export namespace Prisma { export type TypeMap = { meta: { - modelProps: "city" | "admin" | "adminUser" | "appSession" | "adminSession" | "salesExpertProfile" | "customer" | "customerFavorite" | "customerAddress" | "branch" | "workshop" | "category" | "brand" | "collection" | "collectionProduct" | "product" | "productImage" | "productVariant" | "order" | "orderItem" | "orderStatusEvent" | "preOrder" | "preOrderStatusEvent" | "ledgerEntry" | "goldPriceQuote" | "walletBonus" | "userType" | "permission" | "comment" | "setting" | "accountingLink" | "accountingOutbox" | "accountingIssue" | "promotion" | "promotionExclusion" | "branchAllocation" | "branchAllocationItem" | "smsMessage" | "notification" | "notificationRecipient" | "newsletterSubscriber" | "customerActivityLog" | "uploadedFile" | "customerOtp" + modelProps: "city" | "admin" | "adminUser" | "appSession" | "adminSession" | "salesExpertProfile" | "customer" | "customerFavorite" | "customerAddress" | "branch" | "workshop" | "category" | "brand" | "collection" | "collectionProduct" | "product" | "productImage" | "productVariant" | "order" | "orderRevision" | "orderItem" | "orderStatusEvent" | "preOrder" | "preOrderStatusEvent" | "ledgerEntry" | "goldPriceQuote" | "walletBonus" | "userType" | "permission" | "comment" | "setting" | "accountingLink" | "accountingOutbox" | "accountingIssue" | "promotion" | "promotionExclusion" | "branchAllocation" | "branchAllocationItem" | "smsMessage" | "notification" | "notificationRecipient" | "newsletterSubscriber" | "customerActivityLog" | "uploadedFile" | "customerOtp" txIsolationLevel: Prisma.TransactionIsolationLevel } model: { @@ -2962,6 +2992,76 @@ export namespace Prisma { } } } + OrderRevision: { + payload: Prisma.$OrderRevisionPayload + fields: Prisma.OrderRevisionFieldRefs + operations: { + findUnique: { + args: Prisma.OrderRevisionFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.OrderRevisionFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.OrderRevisionFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.OrderRevisionFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.OrderRevisionFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.OrderRevisionCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.OrderRevisionCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.OrderRevisionCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.OrderRevisionDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.OrderRevisionUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.OrderRevisionDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.OrderRevisionUpdateManyArgs + result: BatchPayload + } + upsert: { + args: Prisma.OrderRevisionUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.OrderRevisionAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.OrderRevisionGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.OrderRevisionCountArgs + result: $Utils.Optional | number + } + } + } OrderItem: { payload: Prisma.$OrderItemPayload fields: Prisma.OrderItemFieldRefs @@ -5581,12 +5681,14 @@ export namespace Prisma { items: number statusEvents: number ledgerEntries: number + revisions: number } export type OrderCountOutputTypeSelect = { items?: boolean | OrderCountOutputTypeCountItemsArgs statusEvents?: boolean | OrderCountOutputTypeCountStatusEventsArgs ledgerEntries?: boolean | OrderCountOutputTypeCountLedgerEntriesArgs + revisions?: boolean | OrderCountOutputTypeCountRevisionsArgs } // Custom InputTypes @@ -5621,6 +5723,13 @@ export namespace Prisma { where?: LedgerEntryWhereInput } + /** + * OrderCountOutputType without action + */ + export type OrderCountOutputTypeCountRevisionsArgs = { + where?: OrderRevisionWhereInput + } + /** * Count Type PreOrderCountOutputType @@ -22384,6 +22493,7 @@ export namespace Prisma { productCode: number showType: number isActive: number + tags: number createdAt: number accountingStockWeight: number accountingStockCount: number @@ -22443,6 +22553,7 @@ export namespace Prisma { productCode?: true showType?: true isActive?: true + tags?: true createdAt?: true accountingStockWeight?: true accountingStockCount?: true @@ -22545,6 +22656,7 @@ export namespace Prisma { productCode: string | null showType: number isActive: boolean + tags: string[] createdAt: Date accountingStockWeight: Decimal | null accountingStockCount: Decimal | null @@ -22579,6 +22691,7 @@ export namespace Prisma { productCode?: boolean showType?: boolean isActive?: boolean + tags?: boolean createdAt?: boolean accountingStockWeight?: boolean accountingStockCount?: boolean @@ -22604,6 +22717,7 @@ export namespace Prisma { productCode?: boolean showType?: boolean isActive?: boolean + tags?: boolean createdAt?: boolean accountingStockWeight?: boolean accountingStockCount?: boolean @@ -22621,6 +22735,7 @@ export namespace Prisma { productCode?: boolean showType?: boolean isActive?: boolean + tags?: boolean createdAt?: boolean accountingStockWeight?: boolean accountingStockCount?: boolean @@ -22672,6 +22787,11 @@ export namespace Prisma { */ showType: number isActive: boolean + /** + * Labels from Setting `__list__tags`, assigned on the product form. The + * storefront shows them on list cards only (not the product detail page). + */ + tags: string[] createdAt: Date /** * Stock of the linked کارساخته as last read from the accounting software @@ -23092,6 +23212,7 @@ export namespace Prisma { readonly productCode: FieldRef<"Product", 'String'> readonly showType: FieldRef<"Product", 'Int'> readonly isActive: FieldRef<"Product", 'Boolean'> + readonly tags: FieldRef<"Product", 'String[]'> readonly createdAt: FieldRef<"Product", 'DateTime'> readonly accountingStockWeight: FieldRef<"Product", 'Decimal'> readonly accountingStockCount: FieldRef<"Product", 'Decimal'> @@ -25802,6 +25923,7 @@ export namespace Prisma { branchId: string | null channel: $Enums.OrderChannel | null status: $Enums.OrderStatus | null + revisionStatus: $Enums.OrderRevisionStatus | null totalGoldWeightGrams: Decimal | null wageWeightGrams: Decimal | null flatRialCharge: Decimal | null @@ -25820,6 +25942,7 @@ export namespace Prisma { branchId: string | null channel: $Enums.OrderChannel | null status: $Enums.OrderStatus | null + revisionStatus: $Enums.OrderRevisionStatus | null totalGoldWeightGrams: Decimal | null wageWeightGrams: Decimal | null flatRialCharge: Decimal | null @@ -25838,6 +25961,7 @@ export namespace Prisma { branchId: number channel: number status: number + revisionStatus: number totalGoldWeightGrams: number wageWeightGrams: number flatRialCharge: number @@ -25870,6 +25994,7 @@ export namespace Prisma { branchId?: true channel?: true status?: true + revisionStatus?: true totalGoldWeightGrams?: true wageWeightGrams?: true flatRialCharge?: true @@ -25888,6 +26013,7 @@ export namespace Prisma { branchId?: true channel?: true status?: true + revisionStatus?: true totalGoldWeightGrams?: true wageWeightGrams?: true flatRialCharge?: true @@ -25906,6 +26032,7 @@ export namespace Prisma { branchId?: true channel?: true status?: true + revisionStatus?: true totalGoldWeightGrams?: true wageWeightGrams?: true flatRialCharge?: true @@ -26011,6 +26138,7 @@ export namespace Prisma { branchId: string | null channel: $Enums.OrderChannel status: $Enums.OrderStatus + revisionStatus: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal wageWeightGrams: Decimal flatRialCharge: Decimal @@ -26048,6 +26176,7 @@ export namespace Prisma { branchId?: boolean channel?: boolean status?: boolean + revisionStatus?: boolean totalGoldWeightGrams?: boolean wageWeightGrams?: boolean flatRialCharge?: boolean @@ -26064,6 +26193,7 @@ export namespace Prisma { items?: boolean | Order$itemsArgs statusEvents?: boolean | Order$statusEventsArgs ledgerEntries?: boolean | Order$ledgerEntriesArgs + revisions?: boolean | Order$revisionsArgs convertedFromPreOrder?: boolean | Order$convertedFromPreOrderArgs _count?: boolean | OrderCountOutputTypeDefaultArgs }, ExtArgs["result"]["order"]> @@ -26075,6 +26205,7 @@ export namespace Prisma { branchId?: boolean channel?: boolean status?: boolean + revisionStatus?: boolean totalGoldWeightGrams?: boolean wageWeightGrams?: boolean flatRialCharge?: boolean @@ -26097,6 +26228,7 @@ export namespace Prisma { branchId?: boolean channel?: boolean status?: boolean + revisionStatus?: boolean totalGoldWeightGrams?: boolean wageWeightGrams?: boolean flatRialCharge?: boolean @@ -26116,6 +26248,7 @@ export namespace Prisma { items?: boolean | Order$itemsArgs statusEvents?: boolean | Order$statusEventsArgs ledgerEntries?: boolean | Order$ledgerEntriesArgs + revisions?: boolean | Order$revisionsArgs convertedFromPreOrder?: boolean | Order$convertedFromPreOrderArgs _count?: boolean | OrderCountOutputTypeDefaultArgs } @@ -26136,6 +26269,7 @@ export namespace Prisma { items: Prisma.$OrderItemPayload[] statusEvents: Prisma.$OrderStatusEventPayload[] ledgerEntries: Prisma.$LedgerEntryPayload[] + revisions: Prisma.$OrderRevisionPayload[] convertedFromPreOrder: Prisma.$PreOrderPayload | null } scalars: $Extensions.GetPayloadResult<{ @@ -26148,6 +26282,10 @@ export namespace Prisma { */ channel: $Enums.OrderChannel status: $Enums.OrderStatus + /** + * Pending admin edit awaiting customer confirm (or admin force/discard). + */ + revisionStatus: $Enums.OrderRevisionStatus /** * Total gold weight incl. wage across all items ("allGram" / order.w). */ @@ -26551,6 +26689,7 @@ export namespace Prisma { items = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany"> | Null> statusEvents = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany"> | Null> ledgerEntries = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany"> | Null> + revisions = {}>(args?: Subset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany"> | Null> convertedFromPreOrder = {}>(args?: Subset>): Prisma__PreOrderClient<$Result.GetResult, T, "findUniqueOrThrow"> | null, null, ExtArgs> /** * Attaches callbacks for the resolution and/or rejection of the Promise. @@ -26587,6 +26726,7 @@ export namespace Prisma { readonly branchId: FieldRef<"Order", 'String'> readonly channel: FieldRef<"Order", 'OrderChannel'> readonly status: FieldRef<"Order", 'OrderStatus'> + readonly revisionStatus: FieldRef<"Order", 'OrderRevisionStatus'> readonly totalGoldWeightGrams: FieldRef<"Order", 'Decimal'> readonly wageWeightGrams: FieldRef<"Order", 'Decimal'> readonly flatRialCharge: FieldRef<"Order", 'Decimal'> @@ -27018,6 +27158,26 @@ export namespace Prisma { distinct?: LedgerEntryScalarFieldEnum | LedgerEntryScalarFieldEnum[] } + /** + * Order.revisions + */ + export type Order$revisionsArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + where?: OrderRevisionWhereInput + orderBy?: OrderRevisionOrderByWithRelationInput | OrderRevisionOrderByWithRelationInput[] + cursor?: OrderRevisionWhereUniqueInput + take?: number + skip?: number + distinct?: OrderRevisionScalarFieldEnum | OrderRevisionScalarFieldEnum[] + } + /** * Order.convertedFromPreOrder */ @@ -27048,6 +27208,1080 @@ export namespace Prisma { } + /** + * Model OrderRevision + */ + + export type AggregateOrderRevision = { + _count: OrderRevisionCountAggregateOutputType | null + _avg: OrderRevisionAvgAggregateOutputType | null + _sum: OrderRevisionSumAggregateOutputType | null + _min: OrderRevisionMinAggregateOutputType | null + _max: OrderRevisionMaxAggregateOutputType | null + } + + export type OrderRevisionAvgAggregateOutputType = { + totalGoldWeightGrams: Decimal | null + wageWeightGrams: Decimal | null + flatRialCharge: Decimal | null + } + + export type OrderRevisionSumAggregateOutputType = { + totalGoldWeightGrams: Decimal | null + wageWeightGrams: Decimal | null + flatRialCharge: Decimal | null + } + + export type OrderRevisionMinAggregateOutputType = { + id: string | null + orderId: string | null + totalGoldWeightGrams: Decimal | null + wageWeightGrams: Decimal | null + flatRialCharge: Decimal | null + proposedByAdminId: string | null + note: string | null + customerDecision: string | null + customerDecidedAt: Date | null + appliedAt: Date | null + discardedAt: Date | null + createdAt: Date | null + } + + export type OrderRevisionMaxAggregateOutputType = { + id: string | null + orderId: string | null + totalGoldWeightGrams: Decimal | null + wageWeightGrams: Decimal | null + flatRialCharge: Decimal | null + proposedByAdminId: string | null + note: string | null + customerDecision: string | null + customerDecidedAt: Date | null + appliedAt: Date | null + discardedAt: Date | null + createdAt: Date | null + } + + export type OrderRevisionCountAggregateOutputType = { + id: number + orderId: number + items: number + totalGoldWeightGrams: number + wageWeightGrams: number + flatRialCharge: number + proposedByAdminId: number + note: number + customerDecision: number + customerDecidedAt: number + appliedAt: number + discardedAt: number + createdAt: number + _all: number + } + + + export type OrderRevisionAvgAggregateInputType = { + totalGoldWeightGrams?: true + wageWeightGrams?: true + flatRialCharge?: true + } + + export type OrderRevisionSumAggregateInputType = { + totalGoldWeightGrams?: true + wageWeightGrams?: true + flatRialCharge?: true + } + + export type OrderRevisionMinAggregateInputType = { + id?: true + orderId?: true + totalGoldWeightGrams?: true + wageWeightGrams?: true + flatRialCharge?: true + proposedByAdminId?: true + note?: true + customerDecision?: true + customerDecidedAt?: true + appliedAt?: true + discardedAt?: true + createdAt?: true + } + + export type OrderRevisionMaxAggregateInputType = { + id?: true + orderId?: true + totalGoldWeightGrams?: true + wageWeightGrams?: true + flatRialCharge?: true + proposedByAdminId?: true + note?: true + customerDecision?: true + customerDecidedAt?: true + appliedAt?: true + discardedAt?: true + createdAt?: true + } + + export type OrderRevisionCountAggregateInputType = { + id?: true + orderId?: true + items?: true + totalGoldWeightGrams?: true + wageWeightGrams?: true + flatRialCharge?: true + proposedByAdminId?: true + note?: true + customerDecision?: true + customerDecidedAt?: true + appliedAt?: true + discardedAt?: true + createdAt?: true + _all?: true + } + + export type OrderRevisionAggregateArgs = { + /** + * Filter which OrderRevision to aggregate. + */ + where?: OrderRevisionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of OrderRevisions to fetch. + */ + orderBy?: OrderRevisionOrderByWithRelationInput | OrderRevisionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: OrderRevisionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` OrderRevisions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` OrderRevisions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned OrderRevisions + **/ + _count?: true | OrderRevisionCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: OrderRevisionAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: OrderRevisionSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: OrderRevisionMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: OrderRevisionMaxAggregateInputType + } + + export type GetOrderRevisionAggregateType = { + [P in keyof T & keyof AggregateOrderRevision]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type OrderRevisionGroupByArgs = { + where?: OrderRevisionWhereInput + orderBy?: OrderRevisionOrderByWithAggregationInput | OrderRevisionOrderByWithAggregationInput[] + by: OrderRevisionScalarFieldEnum[] | OrderRevisionScalarFieldEnum + having?: OrderRevisionScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: OrderRevisionCountAggregateInputType | true + _avg?: OrderRevisionAvgAggregateInputType + _sum?: OrderRevisionSumAggregateInputType + _min?: OrderRevisionMinAggregateInputType + _max?: OrderRevisionMaxAggregateInputType + } + + export type OrderRevisionGroupByOutputType = { + id: string + orderId: string + items: JsonValue + totalGoldWeightGrams: Decimal + wageWeightGrams: Decimal + flatRialCharge: Decimal + proposedByAdminId: string | null + note: string | null + customerDecision: string | null + customerDecidedAt: Date | null + appliedAt: Date | null + discardedAt: Date | null + createdAt: Date + _count: OrderRevisionCountAggregateOutputType | null + _avg: OrderRevisionAvgAggregateOutputType | null + _sum: OrderRevisionSumAggregateOutputType | null + _min: OrderRevisionMinAggregateOutputType | null + _max: OrderRevisionMaxAggregateOutputType | null + } + + type GetOrderRevisionGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof OrderRevisionGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type OrderRevisionSelect = $Extensions.GetSelect<{ + id?: boolean + orderId?: boolean + items?: boolean + totalGoldWeightGrams?: boolean + wageWeightGrams?: boolean + flatRialCharge?: boolean + proposedByAdminId?: boolean + note?: boolean + customerDecision?: boolean + customerDecidedAt?: boolean + appliedAt?: boolean + discardedAt?: boolean + createdAt?: boolean + order?: boolean | OrderDefaultArgs + }, ExtArgs["result"]["orderRevision"]> + + export type OrderRevisionSelectCreateManyAndReturn = $Extensions.GetSelect<{ + id?: boolean + orderId?: boolean + items?: boolean + totalGoldWeightGrams?: boolean + wageWeightGrams?: boolean + flatRialCharge?: boolean + proposedByAdminId?: boolean + note?: boolean + customerDecision?: boolean + customerDecidedAt?: boolean + appliedAt?: boolean + discardedAt?: boolean + createdAt?: boolean + order?: boolean | OrderDefaultArgs + }, ExtArgs["result"]["orderRevision"]> + + export type OrderRevisionSelectScalar = { + id?: boolean + orderId?: boolean + items?: boolean + totalGoldWeightGrams?: boolean + wageWeightGrams?: boolean + flatRialCharge?: boolean + proposedByAdminId?: boolean + note?: boolean + customerDecision?: boolean + customerDecidedAt?: boolean + appliedAt?: boolean + discardedAt?: boolean + createdAt?: boolean + } + + export type OrderRevisionInclude = { + order?: boolean | OrderDefaultArgs + } + export type OrderRevisionIncludeCreateManyAndReturn = { + order?: boolean | OrderDefaultArgs + } + + export type $OrderRevisionPayload = { + name: "OrderRevision" + objects: { + order: Prisma.$OrderPayload + } + scalars: $Extensions.GetPayloadResult<{ + id: string + orderId: string + /** + * Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot, + * wagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }] + */ + items: Prisma.JsonValue + totalGoldWeightGrams: Prisma.Decimal + wageWeightGrams: Prisma.Decimal + flatRialCharge: Prisma.Decimal + proposedByAdminId: string | null + note: string | null + /** + * null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision. + */ + customerDecision: string | null + customerDecidedAt: Date | null + appliedAt: Date | null + discardedAt: Date | null + createdAt: Date + }, ExtArgs["result"]["orderRevision"]> + composites: {} + } + + type OrderRevisionGetPayload = $Result.GetResult + + type OrderRevisionCountArgs = + Omit & { + select?: OrderRevisionCountAggregateInputType | true + } + + export interface OrderRevisionDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['OrderRevision'], meta: { name: 'OrderRevision' } } + /** + * Find zero or one OrderRevision that matches the filter. + * @param {OrderRevisionFindUniqueArgs} args - Arguments to find a OrderRevision + * @example + * // Get one OrderRevision + * const orderRevision = await prisma.orderRevision.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "findUnique"> | null, null, ExtArgs> + + /** + * Find one OrderRevision that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {OrderRevisionFindUniqueOrThrowArgs} args - Arguments to find a OrderRevision + * @example + * // Get one OrderRevision + * const orderRevision = await prisma.orderRevision.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "findUniqueOrThrow">, never, ExtArgs> + + /** + * Find the first OrderRevision that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {OrderRevisionFindFirstArgs} args - Arguments to find a OrderRevision + * @example + * // Get one OrderRevision + * const orderRevision = await prisma.orderRevision.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "findFirst"> | null, null, ExtArgs> + + /** + * Find the first OrderRevision that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {OrderRevisionFindFirstOrThrowArgs} args - Arguments to find a OrderRevision + * @example + * // Get one OrderRevision + * const orderRevision = await prisma.orderRevision.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "findFirstOrThrow">, never, ExtArgs> + + /** + * Find zero or more OrderRevisions that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {OrderRevisionFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all OrderRevisions + * const orderRevisions = await prisma.orderRevision.findMany() + * + * // Get first 10 OrderRevisions + * const orderRevisions = await prisma.orderRevision.findMany({ take: 10 }) + * + * // Only select the `id` + * const orderRevisionWithIdOnly = await prisma.orderRevision.findMany({ select: { id: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany">> + + /** + * Create a OrderRevision. + * @param {OrderRevisionCreateArgs} args - Arguments to create a OrderRevision. + * @example + * // Create one OrderRevision + * const OrderRevision = await prisma.orderRevision.create({ + * data: { + * // ... data to create a OrderRevision + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "create">, never, ExtArgs> + + /** + * Create many OrderRevisions. + * @param {OrderRevisionCreateManyArgs} args - Arguments to create many OrderRevisions. + * @example + * // Create many OrderRevisions + * const orderRevision = await prisma.orderRevision.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Create many OrderRevisions and returns the data saved in the database. + * @param {OrderRevisionCreateManyAndReturnArgs} args - Arguments to create many OrderRevisions. + * @example + * // Create many OrderRevisions + * const orderRevision = await prisma.orderRevision.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many OrderRevisions and only return the `id` + * const orderRevisionWithIdOnly = await prisma.orderRevision.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn">> + + /** + * Delete a OrderRevision. + * @param {OrderRevisionDeleteArgs} args - Arguments to delete one OrderRevision. + * @example + * // Delete one OrderRevision + * const OrderRevision = await prisma.orderRevision.delete({ + * where: { + * // ... filter to delete one OrderRevision + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "delete">, never, ExtArgs> + + /** + * Update one OrderRevision. + * @param {OrderRevisionUpdateArgs} args - Arguments to update one OrderRevision. + * @example + * // Update one OrderRevision + * const orderRevision = await prisma.orderRevision.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "update">, never, ExtArgs> + + /** + * Delete zero or more OrderRevisions. + * @param {OrderRevisionDeleteManyArgs} args - Arguments to filter OrderRevisions to delete. + * @example + * // Delete a few OrderRevisions + * const { count } = await prisma.orderRevision.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more OrderRevisions. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {OrderRevisionUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many OrderRevisions + * const orderRevision = await prisma.orderRevision.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise + + /** + * Create or update one OrderRevision. + * @param {OrderRevisionUpsertArgs} args - Arguments to update or create a OrderRevision. + * @example + * // Update or create a OrderRevision + * const orderRevision = await prisma.orderRevision.upsert({ + * create: { + * // ... data to create a OrderRevision + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the OrderRevision we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__OrderRevisionClient<$Result.GetResult, T, "upsert">, never, ExtArgs> + + + /** + * Count the number of OrderRevisions. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {OrderRevisionCountArgs} args - Arguments to filter OrderRevisions to count. + * @example + * // Count the number of OrderRevisions + * const count = await prisma.orderRevision.count({ + * where: { + * // ... the filter for the OrderRevisions we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a OrderRevision. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {OrderRevisionAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by OrderRevision. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {OrderRevisionGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends OrderRevisionGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: OrderRevisionGroupByArgs['orderBy'] } + : { orderBy?: OrderRevisionGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetOrderRevisionGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the OrderRevision model + */ + readonly fields: OrderRevisionFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for OrderRevision. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__OrderRevisionClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + order = {}>(args?: Subset>): Prisma__OrderClient<$Result.GetResult, T, "findUniqueOrThrow"> | Null, Null, ExtArgs> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise + } + + + + + /** + * Fields of the OrderRevision model + */ + interface OrderRevisionFieldRefs { + readonly id: FieldRef<"OrderRevision", 'String'> + readonly orderId: FieldRef<"OrderRevision", 'String'> + readonly items: FieldRef<"OrderRevision", 'Json'> + readonly totalGoldWeightGrams: FieldRef<"OrderRevision", 'Decimal'> + readonly wageWeightGrams: FieldRef<"OrderRevision", 'Decimal'> + readonly flatRialCharge: FieldRef<"OrderRevision", 'Decimal'> + readonly proposedByAdminId: FieldRef<"OrderRevision", 'String'> + readonly note: FieldRef<"OrderRevision", 'String'> + readonly customerDecision: FieldRef<"OrderRevision", 'String'> + readonly customerDecidedAt: FieldRef<"OrderRevision", 'DateTime'> + readonly appliedAt: FieldRef<"OrderRevision", 'DateTime'> + readonly discardedAt: FieldRef<"OrderRevision", 'DateTime'> + readonly createdAt: FieldRef<"OrderRevision", 'DateTime'> + } + + + // Custom InputTypes + /** + * OrderRevision findUnique + */ + export type OrderRevisionFindUniqueArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * Filter, which OrderRevision to fetch. + */ + where: OrderRevisionWhereUniqueInput + } + + /** + * OrderRevision findUniqueOrThrow + */ + export type OrderRevisionFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * Filter, which OrderRevision to fetch. + */ + where: OrderRevisionWhereUniqueInput + } + + /** + * OrderRevision findFirst + */ + export type OrderRevisionFindFirstArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * Filter, which OrderRevision to fetch. + */ + where?: OrderRevisionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of OrderRevisions to fetch. + */ + orderBy?: OrderRevisionOrderByWithRelationInput | OrderRevisionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for OrderRevisions. + */ + cursor?: OrderRevisionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` OrderRevisions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` OrderRevisions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of OrderRevisions. + */ + distinct?: OrderRevisionScalarFieldEnum | OrderRevisionScalarFieldEnum[] + } + + /** + * OrderRevision findFirstOrThrow + */ + export type OrderRevisionFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * Filter, which OrderRevision to fetch. + */ + where?: OrderRevisionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of OrderRevisions to fetch. + */ + orderBy?: OrderRevisionOrderByWithRelationInput | OrderRevisionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for OrderRevisions. + */ + cursor?: OrderRevisionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` OrderRevisions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` OrderRevisions. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of OrderRevisions. + */ + distinct?: OrderRevisionScalarFieldEnum | OrderRevisionScalarFieldEnum[] + } + + /** + * OrderRevision findMany + */ + export type OrderRevisionFindManyArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * Filter, which OrderRevisions to fetch. + */ + where?: OrderRevisionWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of OrderRevisions to fetch. + */ + orderBy?: OrderRevisionOrderByWithRelationInput | OrderRevisionOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing OrderRevisions. + */ + cursor?: OrderRevisionWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` OrderRevisions from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` OrderRevisions. + */ + skip?: number + distinct?: OrderRevisionScalarFieldEnum | OrderRevisionScalarFieldEnum[] + } + + /** + * OrderRevision create + */ + export type OrderRevisionCreateArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * The data needed to create a OrderRevision. + */ + data: XOR + } + + /** + * OrderRevision createMany + */ + export type OrderRevisionCreateManyArgs = { + /** + * The data used to create many OrderRevisions. + */ + data: OrderRevisionCreateManyInput | OrderRevisionCreateManyInput[] + skipDuplicates?: boolean + } + + /** + * OrderRevision createManyAndReturn + */ + export type OrderRevisionCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelectCreateManyAndReturn | null + /** + * The data used to create many OrderRevisions. + */ + data: OrderRevisionCreateManyInput | OrderRevisionCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionIncludeCreateManyAndReturn | null + } + + /** + * OrderRevision update + */ + export type OrderRevisionUpdateArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * The data needed to update a OrderRevision. + */ + data: XOR + /** + * Choose, which OrderRevision to update. + */ + where: OrderRevisionWhereUniqueInput + } + + /** + * OrderRevision updateMany + */ + export type OrderRevisionUpdateManyArgs = { + /** + * The data used to update OrderRevisions. + */ + data: XOR + /** + * Filter which OrderRevisions to update + */ + where?: OrderRevisionWhereInput + } + + /** + * OrderRevision upsert + */ + export type OrderRevisionUpsertArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * The filter to search for the OrderRevision to update in case it exists. + */ + where: OrderRevisionWhereUniqueInput + /** + * In case the OrderRevision found by the `where` argument doesn't exist, create a new OrderRevision with this data. + */ + create: XOR + /** + * In case the OrderRevision was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + /** + * OrderRevision delete + */ + export type OrderRevisionDeleteArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + /** + * Filter which OrderRevision to delete. + */ + where: OrderRevisionWhereUniqueInput + } + + /** + * OrderRevision deleteMany + */ + export type OrderRevisionDeleteManyArgs = { + /** + * Filter which OrderRevisions to delete + */ + where?: OrderRevisionWhereInput + } + + /** + * OrderRevision without action + */ + export type OrderRevisionDefaultArgs = { + /** + * Select specific fields to fetch from the OrderRevision + */ + select?: OrderRevisionSelect | null + /** + * Choose, which related nodes to fetch as well + */ + include?: OrderRevisionInclude | null + } + + /** * Model OrderItem */ @@ -52280,6 +53514,7 @@ export namespace Prisma { productCode: 'productCode', showType: 'showType', isActive: 'isActive', + tags: 'tags', createdAt: 'createdAt', accountingStockWeight: 'accountingStockWeight', accountingStockCount: 'accountingStockCount', @@ -52327,6 +53562,7 @@ export namespace Prisma { branchId: 'branchId', channel: 'channel', status: 'status', + revisionStatus: 'revisionStatus', totalGoldWeightGrams: 'totalGoldWeightGrams', wageWeightGrams: 'wageWeightGrams', flatRialCharge: 'flatRialCharge', @@ -52341,6 +53577,25 @@ export namespace Prisma { export type OrderScalarFieldEnum = (typeof OrderScalarFieldEnum)[keyof typeof OrderScalarFieldEnum] + export const OrderRevisionScalarFieldEnum: { + id: 'id', + orderId: 'orderId', + items: 'items', + totalGoldWeightGrams: 'totalGoldWeightGrams', + wageWeightGrams: 'wageWeightGrams', + flatRialCharge: 'flatRialCharge', + proposedByAdminId: 'proposedByAdminId', + note: 'note', + customerDecision: 'customerDecision', + customerDecidedAt: 'customerDecidedAt', + appliedAt: 'appliedAt', + discardedAt: 'discardedAt', + createdAt: 'createdAt' + }; + + export type OrderRevisionScalarFieldEnum = (typeof OrderRevisionScalarFieldEnum)[keyof typeof OrderRevisionScalarFieldEnum] + + export const OrderItemScalarFieldEnum: { id: 'id', orderId: 'orderId', @@ -52889,6 +54144,27 @@ export namespace Prisma { + /** + * Reference to a field of type 'OrderRevisionStatus' + */ + export type EnumOrderRevisionStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'OrderRevisionStatus'> + + + + /** + * Reference to a field of type 'OrderRevisionStatus[]' + */ + export type ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'OrderRevisionStatus[]'> + + + + /** + * Reference to a field of type 'Json' + */ + export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> + + + /** * Reference to a field of type 'PreOrderStatus' */ @@ -52903,13 +54179,6 @@ export namespace Prisma { - /** - * Reference to a field of type 'Json' - */ - export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> - - - /** * Reference to a field of type 'LedgerCurrency' */ @@ -54395,6 +55664,7 @@ export namespace Prisma { productCode?: StringNullableFilter<"Product"> | string | null showType?: IntFilter<"Product"> | number isActive?: BoolFilter<"Product"> | boolean + tags?: StringNullableListFilter<"Product"> createdAt?: DateTimeFilter<"Product"> | Date | string accountingStockWeight?: DecimalNullableFilter<"Product"> | Decimal | DecimalJsLike | number | string | null accountingStockCount?: DecimalNullableFilter<"Product"> | Decimal | DecimalJsLike | number | string | null @@ -54419,6 +55689,7 @@ export namespace Prisma { productCode?: SortOrderInput | SortOrder showType?: SortOrder isActive?: SortOrder + tags?: SortOrder createdAt?: SortOrder accountingStockWeight?: SortOrderInput | SortOrder accountingStockCount?: SortOrderInput | SortOrder @@ -54446,6 +55717,7 @@ export namespace Prisma { brandId?: StringNullableFilter<"Product"> | string | null showType?: IntFilter<"Product"> | number isActive?: BoolFilter<"Product"> | boolean + tags?: StringNullableListFilter<"Product"> createdAt?: DateTimeFilter<"Product"> | Date | string accountingStockWeight?: DecimalNullableFilter<"Product"> | Decimal | DecimalJsLike | number | string | null accountingStockCount?: DecimalNullableFilter<"Product"> | Decimal | DecimalJsLike | number | string | null @@ -54470,6 +55742,7 @@ export namespace Prisma { productCode?: SortOrderInput | SortOrder showType?: SortOrder isActive?: SortOrder + tags?: SortOrder createdAt?: SortOrder accountingStockWeight?: SortOrderInput | SortOrder accountingStockCount?: SortOrderInput | SortOrder @@ -54493,6 +55766,7 @@ export namespace Prisma { productCode?: StringNullableWithAggregatesFilter<"Product"> | string | null showType?: IntWithAggregatesFilter<"Product"> | number isActive?: BoolWithAggregatesFilter<"Product"> | boolean + tags?: StringNullableListFilter<"Product"> createdAt?: DateTimeWithAggregatesFilter<"Product"> | Date | string accountingStockWeight?: DecimalNullableWithAggregatesFilter<"Product"> | Decimal | DecimalJsLike | number | string | null accountingStockCount?: DecimalNullableWithAggregatesFilter<"Product"> | Decimal | DecimalJsLike | number | string | null @@ -54677,6 +55951,7 @@ export namespace Prisma { branchId?: StringNullableFilter<"Order"> | string | null channel?: EnumOrderChannelFilter<"Order"> | $Enums.OrderChannel status?: EnumOrderStatusFilter<"Order"> | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFilter<"Order"> | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string @@ -54693,6 +55968,7 @@ export namespace Prisma { items?: OrderItemListRelationFilter statusEvents?: OrderStatusEventListRelationFilter ledgerEntries?: LedgerEntryListRelationFilter + revisions?: OrderRevisionListRelationFilter convertedFromPreOrder?: XOR | null } @@ -54703,6 +55979,7 @@ export namespace Prisma { branchId?: SortOrderInput | SortOrder channel?: SortOrder status?: SortOrder + revisionStatus?: SortOrder totalGoldWeightGrams?: SortOrder wageWeightGrams?: SortOrder flatRialCharge?: SortOrder @@ -54719,6 +55996,7 @@ export namespace Prisma { items?: OrderItemOrderByRelationAggregateInput statusEvents?: OrderStatusEventOrderByRelationAggregateInput ledgerEntries?: LedgerEntryOrderByRelationAggregateInput + revisions?: OrderRevisionOrderByRelationAggregateInput convertedFromPreOrder?: PreOrderOrderByWithRelationInput } @@ -54732,6 +56010,7 @@ export namespace Prisma { branchId?: StringNullableFilter<"Order"> | string | null channel?: EnumOrderChannelFilter<"Order"> | $Enums.OrderChannel status?: EnumOrderStatusFilter<"Order"> | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFilter<"Order"> | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string @@ -54748,6 +56027,7 @@ export namespace Prisma { items?: OrderItemListRelationFilter statusEvents?: OrderStatusEventListRelationFilter ledgerEntries?: LedgerEntryListRelationFilter + revisions?: OrderRevisionListRelationFilter convertedFromPreOrder?: XOR | null }, "id" | "orderNumber"> @@ -54758,6 +56038,7 @@ export namespace Prisma { branchId?: SortOrderInput | SortOrder channel?: SortOrder status?: SortOrder + revisionStatus?: SortOrder totalGoldWeightGrams?: SortOrder wageWeightGrams?: SortOrder flatRialCharge?: SortOrder @@ -54784,6 +56065,7 @@ export namespace Prisma { branchId?: StringNullableWithAggregatesFilter<"Order"> | string | null channel?: EnumOrderChannelWithAggregatesFilter<"Order"> | $Enums.OrderChannel status?: EnumOrderStatusWithAggregatesFilter<"Order"> | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusWithAggregatesFilter<"Order"> | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalWithAggregatesFilter<"Order"> | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalWithAggregatesFilter<"Order"> | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalWithAggregatesFilter<"Order"> | Decimal | DecimalJsLike | number | string @@ -54795,6 +56077,103 @@ export namespace Prisma { updatedAt?: DateTimeWithAggregatesFilter<"Order"> | Date | string } + export type OrderRevisionWhereInput = { + AND?: OrderRevisionWhereInput | OrderRevisionWhereInput[] + OR?: OrderRevisionWhereInput[] + NOT?: OrderRevisionWhereInput | OrderRevisionWhereInput[] + id?: StringFilter<"OrderRevision"> | string + orderId?: StringFilter<"OrderRevision"> | string + items?: JsonFilter<"OrderRevision"> + totalGoldWeightGrams?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + proposedByAdminId?: StringNullableFilter<"OrderRevision"> | string | null + note?: StringNullableFilter<"OrderRevision"> | string | null + customerDecision?: StringNullableFilter<"OrderRevision"> | string | null + customerDecidedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + appliedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + discardedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + createdAt?: DateTimeFilter<"OrderRevision"> | Date | string + order?: XOR + } + + export type OrderRevisionOrderByWithRelationInput = { + id?: SortOrder + orderId?: SortOrder + items?: SortOrder + totalGoldWeightGrams?: SortOrder + wageWeightGrams?: SortOrder + flatRialCharge?: SortOrder + proposedByAdminId?: SortOrderInput | SortOrder + note?: SortOrderInput | SortOrder + customerDecision?: SortOrderInput | SortOrder + customerDecidedAt?: SortOrderInput | SortOrder + appliedAt?: SortOrderInput | SortOrder + discardedAt?: SortOrderInput | SortOrder + createdAt?: SortOrder + order?: OrderOrderByWithRelationInput + } + + export type OrderRevisionWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: OrderRevisionWhereInput | OrderRevisionWhereInput[] + OR?: OrderRevisionWhereInput[] + NOT?: OrderRevisionWhereInput | OrderRevisionWhereInput[] + orderId?: StringFilter<"OrderRevision"> | string + items?: JsonFilter<"OrderRevision"> + totalGoldWeightGrams?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + proposedByAdminId?: StringNullableFilter<"OrderRevision"> | string | null + note?: StringNullableFilter<"OrderRevision"> | string | null + customerDecision?: StringNullableFilter<"OrderRevision"> | string | null + customerDecidedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + appliedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + discardedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + createdAt?: DateTimeFilter<"OrderRevision"> | Date | string + order?: XOR + }, "id"> + + export type OrderRevisionOrderByWithAggregationInput = { + id?: SortOrder + orderId?: SortOrder + items?: SortOrder + totalGoldWeightGrams?: SortOrder + wageWeightGrams?: SortOrder + flatRialCharge?: SortOrder + proposedByAdminId?: SortOrderInput | SortOrder + note?: SortOrderInput | SortOrder + customerDecision?: SortOrderInput | SortOrder + customerDecidedAt?: SortOrderInput | SortOrder + appliedAt?: SortOrderInput | SortOrder + discardedAt?: SortOrderInput | SortOrder + createdAt?: SortOrder + _count?: OrderRevisionCountOrderByAggregateInput + _avg?: OrderRevisionAvgOrderByAggregateInput + _max?: OrderRevisionMaxOrderByAggregateInput + _min?: OrderRevisionMinOrderByAggregateInput + _sum?: OrderRevisionSumOrderByAggregateInput + } + + export type OrderRevisionScalarWhereWithAggregatesInput = { + AND?: OrderRevisionScalarWhereWithAggregatesInput | OrderRevisionScalarWhereWithAggregatesInput[] + OR?: OrderRevisionScalarWhereWithAggregatesInput[] + NOT?: OrderRevisionScalarWhereWithAggregatesInput | OrderRevisionScalarWhereWithAggregatesInput[] + id?: StringWithAggregatesFilter<"OrderRevision"> | string + orderId?: StringWithAggregatesFilter<"OrderRevision"> | string + items?: JsonWithAggregatesFilter<"OrderRevision"> + totalGoldWeightGrams?: DecimalWithAggregatesFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalWithAggregatesFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalWithAggregatesFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + proposedByAdminId?: StringNullableWithAggregatesFilter<"OrderRevision"> | string | null + note?: StringNullableWithAggregatesFilter<"OrderRevision"> | string | null + customerDecision?: StringNullableWithAggregatesFilter<"OrderRevision"> | string | null + customerDecidedAt?: DateTimeNullableWithAggregatesFilter<"OrderRevision"> | Date | string | null + appliedAt?: DateTimeNullableWithAggregatesFilter<"OrderRevision"> | Date | string | null + discardedAt?: DateTimeNullableWithAggregatesFilter<"OrderRevision"> | Date | string | null + createdAt?: DateTimeWithAggregatesFilter<"OrderRevision"> | Date | string + } + export type OrderItemWhereInput = { AND?: OrderItemWhereInput | OrderItemWhereInput[] OR?: OrderItemWhereInput[] @@ -58077,6 +59456,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -58101,6 +59481,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -58121,6 +59502,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -58145,6 +59527,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -58167,6 +59550,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -58180,6 +59564,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -58195,6 +59580,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -58386,6 +59772,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -58400,6 +59787,7 @@ export namespace Prisma { items?: OrderItemCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -58410,6 +59798,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -58422,6 +59811,7 @@ export namespace Prisma { items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -58430,6 +59820,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -58444,6 +59835,7 @@ export namespace Prisma { items?: OrderItemUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -58454,6 +59846,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -58466,6 +59859,7 @@ export namespace Prisma { items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -58476,6 +59870,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -58492,6 +59887,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -58508,6 +59904,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -58519,6 +59916,117 @@ export namespace Prisma { updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } + export type OrderRevisionCreateInput = { + id?: string + items: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + proposedByAdminId?: string | null + note?: string | null + customerDecision?: string | null + customerDecidedAt?: Date | string | null + appliedAt?: Date | string | null + discardedAt?: Date | string | null + createdAt?: Date | string + order: OrderCreateNestedOneWithoutRevisionsInput + } + + export type OrderRevisionUncheckedCreateInput = { + id?: string + orderId: string + items: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + proposedByAdminId?: string | null + note?: string | null + customerDecision?: string | null + customerDecidedAt?: Date | string | null + appliedAt?: Date | string | null + discardedAt?: Date | string | null + createdAt?: Date | string + } + + export type OrderRevisionUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + items?: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + proposedByAdminId?: NullableStringFieldUpdateOperationsInput | string | null + note?: NullableStringFieldUpdateOperationsInput | string | null + customerDecision?: NullableStringFieldUpdateOperationsInput | string | null + customerDecidedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + appliedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + discardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + order?: OrderUpdateOneRequiredWithoutRevisionsNestedInput + } + + export type OrderRevisionUncheckedUpdateInput = { + id?: StringFieldUpdateOperationsInput | string + orderId?: StringFieldUpdateOperationsInput | string + items?: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + proposedByAdminId?: NullableStringFieldUpdateOperationsInput | string | null + note?: NullableStringFieldUpdateOperationsInput | string | null + customerDecision?: NullableStringFieldUpdateOperationsInput | string | null + customerDecidedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + appliedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + discardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type OrderRevisionCreateManyInput = { + id?: string + orderId: string + items: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + proposedByAdminId?: string | null + note?: string | null + customerDecision?: string | null + customerDecidedAt?: Date | string | null + appliedAt?: Date | string | null + discardedAt?: Date | string | null + createdAt?: Date | string + } + + export type OrderRevisionUpdateManyMutationInput = { + id?: StringFieldUpdateOperationsInput | string + items?: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + proposedByAdminId?: NullableStringFieldUpdateOperationsInput | string | null + note?: NullableStringFieldUpdateOperationsInput | string | null + customerDecision?: NullableStringFieldUpdateOperationsInput | string | null + customerDecidedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + appliedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + discardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type OrderRevisionUncheckedUpdateManyInput = { + id?: StringFieldUpdateOperationsInput | string + orderId?: StringFieldUpdateOperationsInput | string + items?: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + proposedByAdminId?: NullableStringFieldUpdateOperationsInput | string | null + note?: NullableStringFieldUpdateOperationsInput | string | null + customerDecision?: NullableStringFieldUpdateOperationsInput | string | null + customerDecidedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + appliedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + discardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + export type OrderItemCreateInput = { id?: string quantity: number @@ -61706,6 +63214,14 @@ export namespace Prisma { productId?: SortOrder } + export type StringNullableListFilter<$PrismaModel = never> = { + equals?: string[] | ListStringFieldRefInput<$PrismaModel> | null + has?: string | StringFieldRefInput<$PrismaModel> | null + hasEvery?: string[] | ListStringFieldRefInput<$PrismaModel> + hasSome?: string[] | ListStringFieldRefInput<$PrismaModel> + isEmpty?: boolean + } + export type BrandNullableRelationFilter = { is?: BrandWhereInput | null isNot?: BrandWhereInput | null @@ -61750,6 +63266,7 @@ export namespace Prisma { productCode?: SortOrder showType?: SortOrder isActive?: SortOrder + tags?: SortOrder createdAt?: SortOrder accountingStockWeight?: SortOrder accountingStockCount?: SortOrder @@ -61943,11 +63460,28 @@ export namespace Prisma { not?: NestedEnumOrderStatusFilter<$PrismaModel> | $Enums.OrderStatus } + export type EnumOrderRevisionStatusFilter<$PrismaModel = never> = { + equals?: $Enums.OrderRevisionStatus | EnumOrderRevisionStatusFieldRefInput<$PrismaModel> + in?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + not?: NestedEnumOrderRevisionStatusFilter<$PrismaModel> | $Enums.OrderRevisionStatus + } + + export type OrderRevisionListRelationFilter = { + every?: OrderRevisionWhereInput + some?: OrderRevisionWhereInput + none?: OrderRevisionWhereInput + } + export type PreOrderNullableRelationFilter = { is?: PreOrderWhereInput | null isNot?: PreOrderWhereInput | null } + export type OrderRevisionOrderByRelationAggregateInput = { + _count?: SortOrder + } + export type OrderCountOrderByAggregateInput = { id?: SortOrder orderNumber?: SortOrder @@ -61955,6 +63489,7 @@ export namespace Prisma { branchId?: SortOrder channel?: SortOrder status?: SortOrder + revisionStatus?: SortOrder totalGoldWeightGrams?: SortOrder wageWeightGrams?: SortOrder flatRialCharge?: SortOrder @@ -61979,6 +63514,7 @@ export namespace Prisma { branchId?: SortOrder channel?: SortOrder status?: SortOrder + revisionStatus?: SortOrder totalGoldWeightGrams?: SortOrder wageWeightGrams?: SortOrder flatRialCharge?: SortOrder @@ -61997,6 +63533,7 @@ export namespace Prisma { branchId?: SortOrder channel?: SortOrder status?: SortOrder + revisionStatus?: SortOrder totalGoldWeightGrams?: SortOrder wageWeightGrams?: SortOrder flatRialCharge?: SortOrder @@ -62034,11 +63571,126 @@ export namespace Prisma { _max?: NestedEnumOrderStatusFilter<$PrismaModel> } + export type EnumOrderRevisionStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.OrderRevisionStatus | EnumOrderRevisionStatusFieldRefInput<$PrismaModel> + in?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + not?: NestedEnumOrderRevisionStatusWithAggregatesFilter<$PrismaModel> | $Enums.OrderRevisionStatus + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumOrderRevisionStatusFilter<$PrismaModel> + _max?: NestedEnumOrderRevisionStatusFilter<$PrismaModel> + } + export type JsonFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> + + export type JsonFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + } + export type OrderRelationFilter = { is?: OrderWhereInput isNot?: OrderWhereInput } + export type OrderRevisionCountOrderByAggregateInput = { + id?: SortOrder + orderId?: SortOrder + items?: SortOrder + totalGoldWeightGrams?: SortOrder + wageWeightGrams?: SortOrder + flatRialCharge?: SortOrder + proposedByAdminId?: SortOrder + note?: SortOrder + customerDecision?: SortOrder + customerDecidedAt?: SortOrder + appliedAt?: SortOrder + discardedAt?: SortOrder + createdAt?: SortOrder + } + + export type OrderRevisionAvgOrderByAggregateInput = { + totalGoldWeightGrams?: SortOrder + wageWeightGrams?: SortOrder + flatRialCharge?: SortOrder + } + + export type OrderRevisionMaxOrderByAggregateInput = { + id?: SortOrder + orderId?: SortOrder + totalGoldWeightGrams?: SortOrder + wageWeightGrams?: SortOrder + flatRialCharge?: SortOrder + proposedByAdminId?: SortOrder + note?: SortOrder + customerDecision?: SortOrder + customerDecidedAt?: SortOrder + appliedAt?: SortOrder + discardedAt?: SortOrder + createdAt?: SortOrder + } + + export type OrderRevisionMinOrderByAggregateInput = { + id?: SortOrder + orderId?: SortOrder + totalGoldWeightGrams?: SortOrder + wageWeightGrams?: SortOrder + flatRialCharge?: SortOrder + proposedByAdminId?: SortOrder + note?: SortOrder + customerDecision?: SortOrder + customerDecidedAt?: SortOrder + appliedAt?: SortOrder + discardedAt?: SortOrder + createdAt?: SortOrder + } + + export type OrderRevisionSumOrderByAggregateInput = { + totalGoldWeightGrams?: SortOrder + wageWeightGrams?: SortOrder + flatRialCharge?: SortOrder + } + export type JsonWithAggregatesFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> + + export type JsonWithAggregatesFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedJsonFilter<$PrismaModel> + _max?: NestedJsonFilter<$PrismaModel> + } + export type ProductVariantRelationFilter = { is?: ProductVariantWhereInput isNot?: ProductVariantWhereInput @@ -62238,28 +63890,6 @@ export namespace Prisma { _min?: NestedEnumPreOrderStatusFilter<$PrismaModel> _max?: NestedEnumPreOrderStatusFilter<$PrismaModel> } - export type JsonFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - - export type JsonFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - } export type PreOrderRelationFilter = { is?: PreOrderWhereInput @@ -62290,31 +63920,6 @@ export namespace Prisma { ipAddress?: SortOrder createdAt?: SortOrder } - export type JsonWithAggregatesFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - - export type JsonWithAggregatesFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedJsonFilter<$PrismaModel> - _max?: NestedJsonFilter<$PrismaModel> - } export type EnumLedgerCurrencyFilter<$PrismaModel = never> = { equals?: $Enums.LedgerCurrency | EnumLedgerCurrencyFieldRefInput<$PrismaModel> @@ -65522,6 +67127,10 @@ export namespace Prisma { update?: XOR, ProductUncheckedUpdateWithoutCollectionsInput> } + export type ProductCreatetagsInput = { + set: string[] + } + export type CategoryCreateNestedOneWithoutProductsInput = { create?: XOR connectOrCreate?: CategoryCreateOrConnectWithoutProductsInput @@ -65632,6 +67241,11 @@ export namespace Prisma { connect?: CustomerFavoriteWhereUniqueInput | CustomerFavoriteWhereUniqueInput[] } + export type ProductUpdatetagsInput = { + set?: string[] + push?: string | string[] + } + export type CategoryUpdateOneWithoutProductsNestedInput = { create?: XOR connectOrCreate?: CategoryCreateOrConnectWithoutProductsInput @@ -66025,6 +67639,13 @@ export namespace Prisma { connect?: LedgerEntryWhereUniqueInput | LedgerEntryWhereUniqueInput[] } + export type OrderRevisionCreateNestedManyWithoutOrderInput = { + create?: XOR | OrderRevisionCreateWithoutOrderInput[] | OrderRevisionUncheckedCreateWithoutOrderInput[] + connectOrCreate?: OrderRevisionCreateOrConnectWithoutOrderInput | OrderRevisionCreateOrConnectWithoutOrderInput[] + createMany?: OrderRevisionCreateManyOrderInputEnvelope + connect?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + } + export type PreOrderCreateNestedOneWithoutConvertedOrderInput = { create?: XOR connectOrCreate?: PreOrderCreateOrConnectWithoutConvertedOrderInput @@ -66052,6 +67673,13 @@ export namespace Prisma { connect?: LedgerEntryWhereUniqueInput | LedgerEntryWhereUniqueInput[] } + export type OrderRevisionUncheckedCreateNestedManyWithoutOrderInput = { + create?: XOR | OrderRevisionCreateWithoutOrderInput[] | OrderRevisionUncheckedCreateWithoutOrderInput[] + connectOrCreate?: OrderRevisionCreateOrConnectWithoutOrderInput | OrderRevisionCreateOrConnectWithoutOrderInput[] + createMany?: OrderRevisionCreateManyOrderInputEnvelope + connect?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + } + export type PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput = { create?: XOR connectOrCreate?: PreOrderCreateOrConnectWithoutConvertedOrderInput @@ -66066,6 +67694,10 @@ export namespace Prisma { set?: $Enums.OrderStatus } + export type EnumOrderRevisionStatusFieldUpdateOperationsInput = { + set?: $Enums.OrderRevisionStatus + } + export type CustomerUpdateOneRequiredWithoutOrdersNestedInput = { create?: XOR connectOrCreate?: CustomerCreateOrConnectWithoutOrdersInput @@ -66146,6 +67778,20 @@ export namespace Prisma { deleteMany?: LedgerEntryScalarWhereInput | LedgerEntryScalarWhereInput[] } + export type OrderRevisionUpdateManyWithoutOrderNestedInput = { + create?: XOR | OrderRevisionCreateWithoutOrderInput[] | OrderRevisionUncheckedCreateWithoutOrderInput[] + connectOrCreate?: OrderRevisionCreateOrConnectWithoutOrderInput | OrderRevisionCreateOrConnectWithoutOrderInput[] + upsert?: OrderRevisionUpsertWithWhereUniqueWithoutOrderInput | OrderRevisionUpsertWithWhereUniqueWithoutOrderInput[] + createMany?: OrderRevisionCreateManyOrderInputEnvelope + set?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + disconnect?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + delete?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + connect?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + update?: OrderRevisionUpdateWithWhereUniqueWithoutOrderInput | OrderRevisionUpdateWithWhereUniqueWithoutOrderInput[] + updateMany?: OrderRevisionUpdateManyWithWhereWithoutOrderInput | OrderRevisionUpdateManyWithWhereWithoutOrderInput[] + deleteMany?: OrderRevisionScalarWhereInput | OrderRevisionScalarWhereInput[] + } + export type PreOrderUpdateOneWithoutConvertedOrderNestedInput = { create?: XOR connectOrCreate?: PreOrderCreateOrConnectWithoutConvertedOrderInput @@ -66198,6 +67844,20 @@ export namespace Prisma { deleteMany?: LedgerEntryScalarWhereInput | LedgerEntryScalarWhereInput[] } + export type OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput = { + create?: XOR | OrderRevisionCreateWithoutOrderInput[] | OrderRevisionUncheckedCreateWithoutOrderInput[] + connectOrCreate?: OrderRevisionCreateOrConnectWithoutOrderInput | OrderRevisionCreateOrConnectWithoutOrderInput[] + upsert?: OrderRevisionUpsertWithWhereUniqueWithoutOrderInput | OrderRevisionUpsertWithWhereUniqueWithoutOrderInput[] + createMany?: OrderRevisionCreateManyOrderInputEnvelope + set?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + disconnect?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + delete?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + connect?: OrderRevisionWhereUniqueInput | OrderRevisionWhereUniqueInput[] + update?: OrderRevisionUpdateWithWhereUniqueWithoutOrderInput | OrderRevisionUpdateWithWhereUniqueWithoutOrderInput[] + updateMany?: OrderRevisionUpdateManyWithWhereWithoutOrderInput | OrderRevisionUpdateManyWithWhereWithoutOrderInput[] + deleteMany?: OrderRevisionScalarWhereInput | OrderRevisionScalarWhereInput[] + } + export type PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput = { create?: XOR connectOrCreate?: PreOrderCreateOrConnectWithoutConvertedOrderInput @@ -66208,6 +67868,20 @@ export namespace Prisma { update?: XOR, PreOrderUncheckedUpdateWithoutConvertedOrderInput> } + export type OrderCreateNestedOneWithoutRevisionsInput = { + create?: XOR + connectOrCreate?: OrderCreateOrConnectWithoutRevisionsInput + connect?: OrderWhereUniqueInput + } + + export type OrderUpdateOneRequiredWithoutRevisionsNestedInput = { + create?: XOR + connectOrCreate?: OrderCreateOrConnectWithoutRevisionsInput + upsert?: OrderUpsertWithoutRevisionsInput + connect?: OrderWhereUniqueInput + update?: XOR, OrderUncheckedUpdateWithoutRevisionsInput> + } + export type OrderCreateNestedOneWithoutItemsInput = { create?: XOR connectOrCreate?: OrderCreateOrConnectWithoutItemsInput @@ -67465,6 +69139,13 @@ export namespace Prisma { not?: NestedEnumOrderStatusFilter<$PrismaModel> | $Enums.OrderStatus } + export type NestedEnumOrderRevisionStatusFilter<$PrismaModel = never> = { + equals?: $Enums.OrderRevisionStatus | EnumOrderRevisionStatusFieldRefInput<$PrismaModel> + in?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + not?: NestedEnumOrderRevisionStatusFilter<$PrismaModel> | $Enums.OrderRevisionStatus + } + export type NestedEnumOrderChannelWithAggregatesFilter<$PrismaModel = never> = { equals?: $Enums.OrderChannel | EnumOrderChannelFieldRefInput<$PrismaModel> in?: $Enums.OrderChannel[] | ListEnumOrderChannelFieldRefInput<$PrismaModel> @@ -67485,6 +69166,38 @@ export namespace Prisma { _max?: NestedEnumOrderStatusFilter<$PrismaModel> } + export type NestedEnumOrderRevisionStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.OrderRevisionStatus | EnumOrderRevisionStatusFieldRefInput<$PrismaModel> + in?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.OrderRevisionStatus[] | ListEnumOrderRevisionStatusFieldRefInput<$PrismaModel> + not?: NestedEnumOrderRevisionStatusWithAggregatesFilter<$PrismaModel> | $Enums.OrderRevisionStatus + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedEnumOrderRevisionStatusFilter<$PrismaModel> + _max?: NestedEnumOrderRevisionStatusFilter<$PrismaModel> + } + export type NestedJsonFilter<$PrismaModel = never> = + | PatchUndefined< + Either>, Exclude>, 'path'>>, + Required> + > + | OptionalFlat>, 'path'>> + + export type NestedJsonFilterBase<$PrismaModel = never> = { + equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + path?: string[] + string_contains?: string | StringFieldRefInput<$PrismaModel> + string_starts_with?: string | StringFieldRefInput<$PrismaModel> + string_ends_with?: string | StringFieldRefInput<$PrismaModel> + array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null + lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> + not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter + } + export type NestedEnumOrderStatusNullableFilter<$PrismaModel = never> = { equals?: $Enums.OrderStatus | EnumOrderStatusFieldRefInput<$PrismaModel> | null in?: $Enums.OrderStatus[] | ListEnumOrderStatusFieldRefInput<$PrismaModel> | null @@ -67518,28 +69231,6 @@ export namespace Prisma { _min?: NestedEnumPreOrderStatusFilter<$PrismaModel> _max?: NestedEnumPreOrderStatusFilter<$PrismaModel> } - export type NestedJsonFilter<$PrismaModel = never> = - | PatchUndefined< - Either>, Exclude>, 'path'>>, - Required> - > - | OptionalFlat>, 'path'>> - - export type NestedJsonFilterBase<$PrismaModel = never> = { - equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - path?: string[] - string_contains?: string | StringFieldRefInput<$PrismaModel> - string_starts_with?: string | StringFieldRefInput<$PrismaModel> - string_ends_with?: string | StringFieldRefInput<$PrismaModel> - array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null - lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel> - not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter - } export type NestedEnumLedgerCurrencyFilter<$PrismaModel = never> = { equals?: $Enums.LedgerCurrency | EnumLedgerCurrencyFieldRefInput<$PrismaModel> @@ -69186,6 +70877,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -69199,6 +70891,7 @@ export namespace Prisma { items?: OrderItemCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -69209,6 +70902,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -69220,6 +70914,7 @@ export namespace Prisma { items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -69401,6 +71096,7 @@ export namespace Prisma { branchId?: StringNullableFilter<"Order"> | string | null channel?: EnumOrderChannelFilter<"Order"> | $Enums.OrderChannel status?: EnumOrderStatusFilter<"Order"> | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFilter<"Order"> | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFilter<"Order"> | Decimal | DecimalJsLike | number | string @@ -70057,6 +71753,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -70070,6 +71767,7 @@ export namespace Prisma { items?: OrderItemCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -70080,6 +71778,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -70091,6 +71790,7 @@ export namespace Prisma { items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -70162,6 +71862,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -70175,6 +71876,7 @@ export namespace Prisma { items?: OrderItemCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -70184,6 +71886,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -70196,6 +71899,7 @@ export namespace Prisma { items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -71084,6 +72788,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -71107,6 +72812,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -71257,6 +72963,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -71280,6 +72987,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -71728,6 +73436,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -71741,6 +73450,7 @@ export namespace Prisma { items?: OrderItemCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -71750,6 +73460,7 @@ export namespace Prisma { customerId: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -71762,6 +73473,7 @@ export namespace Prisma { items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -72184,6 +73896,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -72206,6 +73919,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -72370,6 +74084,7 @@ export namespace Prisma { productCode?: StringNullableFilter<"Product"> | string | null showType?: IntFilter<"Product"> | number isActive?: BoolFilter<"Product"> | boolean + tags?: StringNullableListFilter<"Product"> createdAt?: DateTimeFilter<"Product"> | Date | string accountingStockWeight?: DecimalNullableFilter<"Product"> | Decimal | DecimalJsLike | number | string | null accountingStockCount?: DecimalNullableFilter<"Product"> | Decimal | DecimalJsLike | number | string | null @@ -72399,6 +74114,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -72421,6 +74137,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -72590,6 +74307,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -72613,6 +74331,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -72673,6 +74392,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -72696,6 +74416,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -73184,6 +74905,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -73207,6 +74929,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -73286,6 +75009,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -73309,6 +75033,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -73344,6 +75069,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -73367,6 +75093,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -73455,6 +75182,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -73478,6 +75206,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -73962,6 +75691,46 @@ export namespace Prisma { skipDuplicates?: boolean } + export type OrderRevisionCreateWithoutOrderInput = { + id?: string + items: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + proposedByAdminId?: string | null + note?: string | null + customerDecision?: string | null + customerDecidedAt?: Date | string | null + appliedAt?: Date | string | null + discardedAt?: Date | string | null + createdAt?: Date | string + } + + export type OrderRevisionUncheckedCreateWithoutOrderInput = { + id?: string + items: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + proposedByAdminId?: string | null + note?: string | null + customerDecision?: string | null + customerDecidedAt?: Date | string | null + appliedAt?: Date | string | null + discardedAt?: Date | string | null + createdAt?: Date | string + } + + export type OrderRevisionCreateOrConnectWithoutOrderInput = { + where: OrderRevisionWhereUniqueInput + create: XOR + } + + export type OrderRevisionCreateManyOrderInputEnvelope = { + data: OrderRevisionCreateManyOrderInput | OrderRevisionCreateManyOrderInput[] + skipDuplicates?: boolean + } + export type PreOrderCreateWithoutConvertedOrderInput = { id?: string status?: $Enums.PreOrderStatus @@ -74373,6 +76142,41 @@ export namespace Prisma { data: XOR } + export type OrderRevisionUpsertWithWhereUniqueWithoutOrderInput = { + where: OrderRevisionWhereUniqueInput + update: XOR + create: XOR + } + + export type OrderRevisionUpdateWithWhereUniqueWithoutOrderInput = { + where: OrderRevisionWhereUniqueInput + data: XOR + } + + export type OrderRevisionUpdateManyWithWhereWithoutOrderInput = { + where: OrderRevisionScalarWhereInput + data: XOR + } + + export type OrderRevisionScalarWhereInput = { + AND?: OrderRevisionScalarWhereInput | OrderRevisionScalarWhereInput[] + OR?: OrderRevisionScalarWhereInput[] + NOT?: OrderRevisionScalarWhereInput | OrderRevisionScalarWhereInput[] + id?: StringFilter<"OrderRevision"> | string + orderId?: StringFilter<"OrderRevision"> | string + items?: JsonFilter<"OrderRevision"> + totalGoldWeightGrams?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFilter<"OrderRevision"> | Decimal | DecimalJsLike | number | string + proposedByAdminId?: StringNullableFilter<"OrderRevision"> | string | null + note?: StringNullableFilter<"OrderRevision"> | string | null + customerDecision?: StringNullableFilter<"OrderRevision"> | string | null + customerDecidedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + appliedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + discardedAt?: DateTimeNullableFilter<"OrderRevision"> | Date | string | null + createdAt?: DateTimeFilter<"OrderRevision"> | Date | string + } + export type PreOrderUpsertWithoutConvertedOrderInput = { update: XOR create: XOR @@ -74422,11 +76226,120 @@ export namespace Prisma { statusEvents?: PreOrderStatusEventUncheckedUpdateManyWithoutPreOrderNestedInput } + export type OrderCreateWithoutRevisionsInput = { + id?: string + orderNumber: string + channel?: $Enums.OrderChannel + status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + isSuspendedOverCreditLimit?: boolean + deliveredAt?: Date | string | null + createdAt?: Date | string + updatedAt?: Date | string + customer: CustomerCreateNestedOneWithoutOrdersInput + branch?: BranchCreateNestedOneWithoutOrdersInput + salesAgent?: AdminUserCreateNestedOneWithoutCreditedOrdersInput + referrerCustomer?: CustomerCreateNestedOneWithoutReferredOrdersInput + items?: OrderItemCreateNestedManyWithoutOrderInput + statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput + ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput + } + + export type OrderUncheckedCreateWithoutRevisionsInput = { + id?: string + orderNumber: string + customerId: string + branchId?: string | null + channel?: $Enums.OrderChannel + status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + isSuspendedOverCreditLimit?: boolean + deliveredAt?: Date | string | null + salesAgentId?: string | null + referrerCustomerId?: string | null + createdAt?: Date | string + updatedAt?: Date | string + items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput + statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput + ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput + } + + export type OrderCreateOrConnectWithoutRevisionsInput = { + where: OrderWhereUniqueInput + create: XOR + } + + export type OrderUpsertWithoutRevisionsInput = { + update: XOR + create: XOR + where?: OrderWhereInput + } + + export type OrderUpdateToOneWithWhereWithoutRevisionsInput = { + where?: OrderWhereInput + data: XOR + } + + export type OrderUpdateWithoutRevisionsInput = { + id?: StringFieldUpdateOperationsInput | string + orderNumber?: StringFieldUpdateOperationsInput | string + channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel + status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + isSuspendedOverCreditLimit?: BoolFieldUpdateOperationsInput | boolean + deliveredAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + customer?: CustomerUpdateOneRequiredWithoutOrdersNestedInput + branch?: BranchUpdateOneWithoutOrdersNestedInput + salesAgent?: AdminUserUpdateOneWithoutCreditedOrdersNestedInput + referrerCustomer?: CustomerUpdateOneWithoutReferredOrdersNestedInput + items?: OrderItemUpdateManyWithoutOrderNestedInput + statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput + ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput + } + + export type OrderUncheckedUpdateWithoutRevisionsInput = { + id?: StringFieldUpdateOperationsInput | string + orderNumber?: StringFieldUpdateOperationsInput | string + customerId?: StringFieldUpdateOperationsInput | string + branchId?: NullableStringFieldUpdateOperationsInput | string | null + channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel + status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + isSuspendedOverCreditLimit?: BoolFieldUpdateOperationsInput | boolean + deliveredAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + salesAgentId?: NullableStringFieldUpdateOperationsInput | string | null + referrerCustomerId?: NullableStringFieldUpdateOperationsInput | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string + items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput + statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput + ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput + } + export type OrderCreateWithoutItemsInput = { id?: string orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -74440,6 +76353,7 @@ export namespace Prisma { referrerCustomer?: CustomerCreateNestedOneWithoutReferredOrdersInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -74450,6 +76364,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -74461,6 +76376,7 @@ export namespace Prisma { updatedAt?: Date | string statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -74524,6 +76440,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -74537,6 +76454,7 @@ export namespace Prisma { referrerCustomer?: CustomerUpdateOneWithoutReferredOrdersNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -74547,6 +76465,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -74558,6 +76477,7 @@ export namespace Prisma { updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -74611,6 +76531,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -74624,6 +76545,7 @@ export namespace Prisma { referrerCustomer?: CustomerCreateNestedOneWithoutReferredOrdersInput items?: OrderItemCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -74634,6 +76556,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -74645,6 +76568,7 @@ export namespace Prisma { updatedAt?: Date | string items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -74718,6 +76642,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -74731,6 +76656,7 @@ export namespace Prisma { referrerCustomer?: CustomerUpdateOneWithoutReferredOrdersNestedInput items?: OrderItemUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -74741,6 +76667,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -74752,6 +76679,7 @@ export namespace Prisma { updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -74978,6 +76906,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -74992,6 +76921,7 @@ export namespace Prisma { items?: OrderItemCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput } export type OrderUncheckedCreateWithoutConvertedFromPreOrderInput = { @@ -75001,6 +76931,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -75013,6 +76944,7 @@ export namespace Prisma { items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput ledgerEntries?: LedgerEntryUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput } export type OrderCreateOrConnectWithoutConvertedFromPreOrderInput = { @@ -75243,6 +77175,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -75257,6 +77190,7 @@ export namespace Prisma { items?: OrderItemUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput } export type OrderUncheckedUpdateWithoutConvertedFromPreOrderInput = { @@ -75266,6 +77200,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -75278,6 +77213,7 @@ export namespace Prisma { items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput } export type PreOrderStatusEventUpsertWithWhereUniqueWithoutPreOrderInput = { @@ -75606,6 +77542,7 @@ export namespace Prisma { orderNumber: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -75619,6 +77556,7 @@ export namespace Prisma { referrerCustomer?: CustomerCreateNestedOneWithoutReferredOrdersInput items?: OrderItemCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderCreateNestedOneWithoutConvertedOrderInput } @@ -75629,6 +77567,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -75640,6 +77579,7 @@ export namespace Prisma { updatedAt?: Date | string items?: OrderItemUncheckedCreateNestedManyWithoutOrderInput statusEvents?: OrderStatusEventUncheckedCreateNestedManyWithoutOrderInput + revisions?: OrderRevisionUncheckedCreateNestedManyWithoutOrderInput convertedFromPreOrder?: PreOrderUncheckedCreateNestedOneWithoutConvertedOrderInput } @@ -75828,6 +77768,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -75841,6 +77782,7 @@ export namespace Prisma { referrerCustomer?: CustomerUpdateOneWithoutReferredOrdersNestedInput items?: OrderItemUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -75851,6 +77793,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -75862,6 +77805,7 @@ export namespace Prisma { updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -76385,6 +78329,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -76408,6 +78353,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -76611,6 +78557,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -76634,6 +78581,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -76817,6 +78765,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -76840,6 +78789,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -77032,6 +78982,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -77055,6 +79006,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -77476,6 +79428,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -77499,6 +79452,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -77561,6 +79515,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -77584,6 +79539,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -79722,6 +81678,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -79880,6 +81837,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -79893,6 +81851,7 @@ export namespace Prisma { items?: OrderItemUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -79903,6 +81862,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -79914,6 +81874,7 @@ export namespace Prisma { items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -79924,6 +81885,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -79941,6 +81903,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -79964,6 +81927,7 @@ export namespace Prisma { branchId?: string | null channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -80089,6 +82053,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80102,6 +82067,7 @@ export namespace Prisma { items?: OrderItemUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -80112,6 +82078,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80123,6 +82090,7 @@ export namespace Prisma { items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -80133,6 +82101,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80169,6 +82138,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80182,6 +82152,7 @@ export namespace Prisma { items?: OrderItemUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -80191,6 +82162,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80203,6 +82175,7 @@ export namespace Prisma { items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -80212,6 +82185,7 @@ export namespace Prisma { branchId?: NullableStringFieldUpdateOperationsInput | string | null channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80592,6 +82566,7 @@ export namespace Prisma { customerId: string channel?: $Enums.OrderChannel status?: $Enums.OrderStatus + revisionStatus?: $Enums.OrderRevisionStatus totalGoldWeightGrams: Decimal | DecimalJsLike | number | string wageWeightGrams: Decimal | DecimalJsLike | number | string flatRialCharge?: Decimal | DecimalJsLike | number | string @@ -80735,6 +82710,7 @@ export namespace Prisma { orderNumber?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80748,6 +82724,7 @@ export namespace Prisma { items?: OrderItemUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUpdateOneWithoutConvertedOrderNestedInput } @@ -80757,6 +82734,7 @@ export namespace Prisma { customerId?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80769,6 +82747,7 @@ export namespace Prisma { items?: OrderItemUncheckedUpdateManyWithoutOrderNestedInput statusEvents?: OrderStatusEventUncheckedUpdateManyWithoutOrderNestedInput ledgerEntries?: LedgerEntryUncheckedUpdateManyWithoutOrderNestedInput + revisions?: OrderRevisionUncheckedUpdateManyWithoutOrderNestedInput convertedFromPreOrder?: PreOrderUncheckedUpdateOneWithoutConvertedOrderNestedInput } @@ -80778,6 +82757,7 @@ export namespace Prisma { customerId?: StringFieldUpdateOperationsInput | string channel?: EnumOrderChannelFieldUpdateOperationsInput | $Enums.OrderChannel status?: EnumOrderStatusFieldUpdateOperationsInput | $Enums.OrderStatus + revisionStatus?: EnumOrderRevisionStatusFieldUpdateOperationsInput | $Enums.OrderRevisionStatus totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string @@ -80904,6 +82884,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -80971,6 +82952,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -80993,6 +82975,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -81014,6 +82997,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -81082,6 +83066,7 @@ export namespace Prisma { productCode?: string | null showType?: number isActive?: boolean + tags?: ProductCreatetagsInput | string[] createdAt?: Date | string accountingStockWeight?: Decimal | DecimalJsLike | number | string | null accountingStockCount?: Decimal | DecimalJsLike | number | string | null @@ -81113,6 +83098,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -81135,6 +83121,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -81156,6 +83143,7 @@ export namespace Prisma { productCode?: NullableStringFieldUpdateOperationsInput | string | null showType?: IntFieldUpdateOperationsInput | number isActive?: BoolFieldUpdateOperationsInput | boolean + tags?: ProductUpdatetagsInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string accountingStockWeight?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null accountingStockCount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null @@ -81656,6 +83644,21 @@ export namespace Prisma { createdAt?: Date | string } + export type OrderRevisionCreateManyOrderInput = { + id?: string + items: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams: Decimal | DecimalJsLike | number | string + wageWeightGrams: Decimal | DecimalJsLike | number | string + flatRialCharge?: Decimal | DecimalJsLike | number | string + proposedByAdminId?: string | null + note?: string | null + customerDecision?: string | null + customerDecidedAt?: Date | string | null + appliedAt?: Date | string | null + discardedAt?: Date | string | null + createdAt?: Date | string + } + export type OrderItemUpdateWithoutOrderInput = { id?: StringFieldUpdateOperationsInput | string quantity?: IntFieldUpdateOperationsInput | number @@ -81788,6 +83791,51 @@ export namespace Prisma { createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } + export type OrderRevisionUpdateWithoutOrderInput = { + id?: StringFieldUpdateOperationsInput | string + items?: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + proposedByAdminId?: NullableStringFieldUpdateOperationsInput | string | null + note?: NullableStringFieldUpdateOperationsInput | string | null + customerDecision?: NullableStringFieldUpdateOperationsInput | string | null + customerDecidedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + appliedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + discardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type OrderRevisionUncheckedUpdateWithoutOrderInput = { + id?: StringFieldUpdateOperationsInput | string + items?: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + proposedByAdminId?: NullableStringFieldUpdateOperationsInput | string | null + note?: NullableStringFieldUpdateOperationsInput | string | null + customerDecision?: NullableStringFieldUpdateOperationsInput | string | null + customerDecidedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + appliedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + discardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + + export type OrderRevisionUncheckedUpdateManyWithoutOrderInput = { + id?: StringFieldUpdateOperationsInput | string + items?: JsonNullValueInput | InputJsonValue + totalGoldWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + wageWeightGrams?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + flatRialCharge?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string + proposedByAdminId?: NullableStringFieldUpdateOperationsInput | string | null + note?: NullableStringFieldUpdateOperationsInput | string | null + customerDecision?: NullableStringFieldUpdateOperationsInput | string | null + customerDecidedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + appliedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + discardedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: DateTimeFieldUpdateOperationsInput | Date | string + } + export type PreOrderStatusEventCreateManyPreOrderInput = { id?: string changes: JsonNullValueInput | InputJsonValue @@ -82499,6 +84547,10 @@ export namespace Prisma { * @deprecated Use OrderDefaultArgs instead */ export type OrderArgs = OrderDefaultArgs + /** + * @deprecated Use OrderRevisionDefaultArgs instead + */ + export type OrderRevisionArgs = OrderRevisionDefaultArgs /** * @deprecated Use OrderItemDefaultArgs instead */ diff --git a/apps/api/release/vendor/.prisma/client/index.js b/apps/api/release/vendor/.prisma/client/index.js index dbf14ca..0818a83 100644 --- a/apps/api/release/vendor/.prisma/client/index.js +++ b/apps/api/release/vendor/.prisma/client/index.js @@ -286,6 +286,7 @@ exports.Prisma.ProductScalarFieldEnum = { productCode: 'productCode', showType: 'showType', isActive: 'isActive', + tags: 'tags', createdAt: 'createdAt', accountingStockWeight: 'accountingStockWeight', accountingStockCount: 'accountingStockCount', @@ -324,6 +325,7 @@ exports.Prisma.OrderScalarFieldEnum = { branchId: 'branchId', channel: 'channel', status: 'status', + revisionStatus: 'revisionStatus', totalGoldWeightGrams: 'totalGoldWeightGrams', wageWeightGrams: 'wageWeightGrams', flatRialCharge: 'flatRialCharge', @@ -335,6 +337,22 @@ exports.Prisma.OrderScalarFieldEnum = { updatedAt: 'updatedAt' }; +exports.Prisma.OrderRevisionScalarFieldEnum = { + id: 'id', + orderId: 'orderId', + items: 'items', + totalGoldWeightGrams: 'totalGoldWeightGrams', + wageWeightGrams: 'wageWeightGrams', + flatRialCharge: 'flatRialCharge', + proposedByAdminId: 'proposedByAdminId', + note: 'note', + customerDecision: 'customerDecision', + customerDecidedAt: 'customerDecidedAt', + appliedAt: 'appliedAt', + discardedAt: 'discardedAt', + createdAt: 'createdAt' +}; + exports.Prisma.OrderItemScalarFieldEnum = { id: 'id', orderId: 'orderId', @@ -685,6 +703,11 @@ exports.OrderStatus = exports.$Enums.OrderStatus = { CANCELLED: 'CANCELLED' }; +exports.OrderRevisionStatus = exports.$Enums.OrderRevisionStatus = { + NONE: 'NONE', + AWAITING_CUSTOMER: 'AWAITING_CUSTOMER' +}; + exports.PreOrderStatus = exports.$Enums.PreOrderStatus = { PLACED: 'PLACED', ADMIN_APPROVED: 'ADMIN_APPROVED', @@ -783,6 +806,7 @@ exports.Prisma.ModelName = { ProductImage: 'ProductImage', ProductVariant: 'ProductVariant', Order: 'Order', + OrderRevision: 'OrderRevision', OrderItem: 'OrderItem', OrderStatusEvent: 'OrderStatusEvent', PreOrder: 'PreOrder', @@ -860,8 +884,8 @@ const config = { } } }, - "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", - "inlineSchemaHash": "10ad1bc4a821d684d83386a2c37bcf3e456d62228210ecd06ea12b67f136467e", + "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n /// Labels from Setting `__list__tags`, assigned on the product form. The\n /// storefront shows them on list cards only (not the product detail page).\n tags String[] @default([])\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Customer-confirm state for an admin-proposed order edit (not a pipeline status).\nenum OrderRevisionStatus {\n NONE\n AWAITING_CUSTOMER\n}\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Pending admin edit awaiting customer confirm (or admin force/discard).\n revisionStatus OrderRevisionStatus @default(NONE)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n revisions OrderRevision[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([revisionStatus])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\n/// Proposed line-item edit for an Order. Live until applied or discarded.\n/// While pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\n/// stay on the current Order until the customer confirms (or admin force-applies).\nmodel OrderRevision {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)\n\n /// Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\n /// wagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\n items Json\n\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n wageWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n proposedByAdminId String? @map(\"proposedByAdminUserId\")\n note String?\n\n /// null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\n customerDecision String?\n customerDecidedAt DateTime?\n\n appliedAt DateTime?\n discardedAt DateTime?\n\n createdAt DateTime @default(now())\n\n @@index([orderId])\n @@index([createdAt])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", + "inlineSchemaHash": "c52b2d6375d403f686a8ae11239e17fb11b10aa2d23a5b856dcfdce24f83247f", "copyEngine": true } @@ -882,7 +906,7 @@ if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { config.isBundled = true } -config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Labels from Setting `__list__tags`, assigned on the product form. The\\\\nstorefront shows them on list cards only (not the product detail page).\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisionStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderRevisionStatus\",\"default\":\"NONE\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending admin edit awaiting customer confirm (or admin force/discard).\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderRevision\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderRevision\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\\\\nwagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"proposedByAdminId\",\"dbName\":\"proposedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerDecision\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\"},{\"name\":\"customerDecidedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appliedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discardedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Proposed line-item edit for an Order. Live until applied or discarded.\\\\nWhile pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\\\\nstay on the current Order until the customer confirms (or admin force-applies).\"},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"OrderRevisionStatus\":{\"values\":[{\"name\":\"NONE\",\"dbName\":null},{\"name\":\"AWAITING_CUSTOMER\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Customer-confirm state for an admin-proposed order edit (not a pipeline status).\"},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined diff --git a/apps/api/release/vendor/.prisma/client/package.json b/apps/api/release/vendor/.prisma/client/package.json index 7525063..99db244 100644 --- a/apps/api/release/vendor/.prisma/client/package.json +++ b/apps/api/release/vendor/.prisma/client/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-d98bddf3599c950eb3fcd511efa7f226c4ef4c5c3cbc261683fb1118a763a924", + "name": "prisma-client-886e29037ba1ecb825956ac60d24f0b8a065941198844408c48cf073ba2e9962", "main": "index.js", "types": "index.d.ts", "browser": "index-browser.js", diff --git a/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp19856 b/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp19856 new file mode 100644 index 0000000000000000000000000000000000000000..d46657bbe62046c1c181fc2a3b507c48cb98f401 GIT binary patch literal 19261952 zcmeFadwf*Y)dqY9GLS0a3@S8Y)j^{MZ8g|dgTCqv1U&;Y67TUIL=kP3D2b-^!i34- zoE(ovF@33u#!_2awGBlu5QB;0Bv>l}Z?U!-FV!=~Y80!{TJt^6+Gi#Spj>Re_xt0^ z@0ZzU-_~Ax?X}ikd+&AjiJVuf4c9a+3;%t6n%0Pre*yXZ=AUejrj0&u?P%@M@BC## zqbK~A31`l|V!prZ+Ig2>JL@X{>{(Y|J+It<$z}d)E3Womakal_<{AF0=3RQ(kvTbg zw zhaJqYSd}~c#UCH~G~$FeOwxaJ*bx#QBjM>+%%01wvDTl z`lrTwEZ2Qq%5g9q$SBm(DyLS$6CEGCLg{*2#_aT~V*mW(C8N;*-m}*W(fhoS^un{49W_H-lx%f>-3)}IN zk?D+F(xDlRUI4;hG-Qr6V$Fo5>D3nq$eh&d{XCO4hpjk)r7l2GYf4sIoGtM0geZRW zST-ayA&KkAEUDwcUqmfcKumyC$UG%?i#~5k_LiW&;FN5mk&WPwZKgg#A^n_Bx9I0x zo0YnPk;kSCOZ^Lw&{pc72&J3SztaJ#Bh=b8BIIdD7kij#+PxCQHPj88@oWUicn8wP zfu26Z_-Dj7ht1|(G+h2&!wv>OHdfPD?;HE~I6XcKT}Z}HLAD1pzxx-JAYf@MO8YglpiCbSOe{EHg#7QOlxK+CXI2d#5+Io2oyQhK)N3*uBh zVe4l;bgUSU03j)pd-duEQ88>kSc~2pc5^#|NuTPzfM53+1wnmGIM0XQtUN#>G{a}a zT1XO({v3UQ9YqC%@iNv2>In4wIzrR)m)0{Fb8&$_<{UrJnCZjMNW=WxDY?w68GT9M zK{(;by%o0tCUHuAmmQgn@q8D3tC`|4)*zLCU;#atI3+vv9wPc`<^VkZm=kI{g*4Yv zLN$He6i@0mh#J&o0v>p#39&(k2L#&HIZOJMsDfCqCC2sb|HXS!|s(PG$~ zV6+9ZNxrZ-%V*fD$OVSIv=V{K%6;L|L?v&jK0Lzr1c6Ys#o8NMgeF9{!jJkzO%uI z7ZvCemvYL|C)Py~fZrlz_?cFU4wCWoG3SHF&LEG?Add|XAO9eGRdNZ;5uuH3Apy8fe3)O~3TA+;C*QSAD}={|kpurS2!;m=tvXWBpzU(Z)Y z-ytzT2hJn~x=xirv`JD>SLD=abnTHSX@df8uhBR;&uRbTSZz{^al9I0OZ4eASAe%z zHnkd%%+?b$@SGld7b&f&5z!4T2_anGNu#2Pcq@vm!@rgqhYkm2zL@lC*!;*azX+K< z&fKRqLa>miHI4@pQF#4R*IiU8K@V+{I(#7 znXSKVRu`h(3!Oc5Vk_uVe1Oa;K5vX(n7A5SXz(3I?YpL z1+&b$2M{STpYciTi{bh$Z-T&>#oqsrmcu@G7@lYP-ZWyp z2UHY*A?HmabIyy5o}-uNoO}Id;85f6bg$#b`KA?F5W=)LvNTAS~8Wr8prAFLr<@mpGQglN!VRPUW3p|OZbsUt`-l#C? zQ$w*)dWiO4HWrihr{#v>c@4rwVF{VJ5W@H?86l*C5A4xF*{4kEzBqN8KGEgndGSs} zNn5gdw3)`sxbjhGp#v>CH+Oo`qaNe4&TIAo>vDQtL+gKw@nGuGFZ%j0rUD3|O#m3# znHaVOr(mMJe$Wtuy=XF!y$HqGSO@l+01&OIy`md>`pGbAAQ=YHh15`Vc?wVKD1J5G zD=$t@V~KlLgBq{|j6F&Jwv2h#N@+Q+WgBU^9@EPLU&y>ZH?@TN!CcDTV;req+}apU zza(CnHV#4FvtJbQlHO?@_pS{cmoW)RJE)tN&UG~wLG+D13Ja6eDrTvcGEGd+4x3lf z@Jz<1qNE2+YBRUV%VULx7nxH$=Jc#EY+s@P`!`qNfR5$NQ#g=q(%ozy(Lp6JNPm-g zND2z7u)b3DkbqjGrq%-;RDt!av@*D3N_M}I{l!cDM)t369cW~y_V^d{0OZfZpO6UQ z3-gr_{!Ky=!j==14A#JGLbq$YB^Qz-!sdI?n{P%; z$2n*nrakkbo{)K6Z^S$jGd25?v2Sf^73caFAqLhe8F0%La|(rCm5=PO+0N(aRireP z3;&{_$*p?z3!n7$r5OrZQCg1AWnc*&$@mlwI5g0K&%utK@b(=VZ8FiNP;U7sNvi}Y z1$fkb-sfNK#$+EaL<~grzJMqQ8aD{ijF(7ISIR(HmPjPlh)JtvoH`0-s-R*=+A%01 z=;0M3w9w;ejU1kQS-T!TihZ*xIt=T=&aib=SJ=ADF|3N7G@oOwL!jk4SiSpfvU=ax z8M8Nocj3Yft$k z);ruV>nQE|EiL%PFllECYpWPBRO&gqHVi~em&-4BJ7 zE~cHHbRRqXc0q3Y5 z2!ZtodjcUM1k7VB9+~_PXlp{TWg3DNM|5>xv0tBf7Hr-K!fBZ4-37W5vlq!*88I^` zWs zFhQ?A9Qzi4!-(_rZD8kpnE=$008SuFy2d(aUVuc(Q~NR zY0unum#f!PKuWD#Q@=tP)eJDtc{oe@(L(CjBJSz#jL^`XK{FI_WEIqHK z9t3Ekf3v|{Rf$rO_=fVmK#7k}BPB4C^o^Z)(Pm)tQR;md6PRaMDrEjA^&3RDwcdaK z80?X>V%b;eylZ@EopNu8I>lAibx}YXu(nnzy?=_LHgjHhu78RWgH5mEb|kt=Jiy5W zGDrWg#g%LD_Y|nuVQSk;WCpXppEC{l$DE$;V&@#6q)9K<;{bI$8T$pRM0LhrBYiAe z1lzRR(ds0~g79+4)Ix26Y$Smc0WQqQT1MNH0zZW9YY&-|+MfR%zNeZa&>smJA{49A6$x0-gmuoU4ffSJp+ns^B z&;6#{)I}W4wAxxq1_6{#2_Ec109kY-*4!hpRlO24Yb0Y#3~H@B51i6Ib3YHJ8g{GtqpsuBCQ0TV!Q}6fnrC#Y36{=c)kga1xq;)$Ia5|rb23e$v48m*` zG0Pw^4oFM|5(8Sl_k7a(->DEPN6b&qPo)#K80J^0A0bipp1OxAxf}QAjs2EUPRDb! z+`O|kI@;RrllH%Tcca#Ql{+I$+R&}Lk1)jqjBDLG8=pbBX&CKwmt(Rui}En?IfvsJ zg4=Y@W{xxWT-P2;phv%h!nuIvbz#V)OD&K97=2H}JTuQXXuCM}exYIiK8niv#B#t+ zj{&=1bn2k)FFlXeia^x!rR@5`K^sgv1D&j?m5;;3lP}|v^Lm7h^o>0U(03QC%fkC4 zyt@s;U5%8p-(f+?HQ4&bK6vi#V>S@%zrusac`CrVgS?yljy7{JwDN->-&8KK_F=K! z(dBz@rR?6_;7v2)ZZ^W!efI+?`_gFdihFqRu<9%cQb=L07t7~OGn*6%a z+wnN1X+TXfER7jCuW#)6-vTo$XO%Iio1?!4Ft?kPvEA>cYuBe2&cSTw@!Q9K4a@J4 zXxnV1{qX5;gPH7^-Lo()(Yue8Y{FHH`x^0ZxBZ5jUak9YJM801Phu&B4F(q{LFc$1 z{1*GLO!*q{JDRJb%_6(9K-MVGxBl|$20*5Kbvm3cD5%q6Y?{;q6&?#4)^SF>Pp`fK zfWqceA@gO!d=B|sV~mDKC*${X<_?>!&ec7Q+W!oz7>7(I;jb;uV;KH*=PvhDT*HmX zY}00TtK%~z*RW2ZMJsC-^Yf6|*;mXntU5MQK3ZYoF<)^W10t+dG0JEgK_pWT;|Hfrgn$NJWdOx$Ucw;Oms2qw)_Xl8SkoK~ zW0WgrXUk3Cfw34`_AlMuU!9MCk9CWAq7h4SLvLW-N6t>2L_Db3kZD$r&ANyU}g$ z(Na7K!P;X8d+|OU+Oz%a#bJ!Sj|GQVZP8{Kmx^)Fy)st94t#Q!g}rDXwm!cfdWNM2 z1Nl@s?No%(?I*7{2dr?Fqs8AngeOUTy$e zC>Mxl!(eyoylgpD2~B=oucp^Z$b1P0dXxyBjfSmDu+aJZft$c`8o9iHW!Tm^D7B za8n6R3QCcI4Ub?Ww_nKlU=~LJC7nMm2Mfi%8llJULMCyI&w;#l&%%m#2~jm4S&kqW zyGa{`vA1l-oW?u7nrZd8>zeF}BGy1Uuy(Q0t%{F+5KqtbL;1Wn__KTUV zPb^d0QL3*im<-I)LRO#z3;AG;F*}$rN+Whzwh?Q|htEVKnhu#+d1(EN3(v!2Q63n{ zJL2bWf?aRBzDZiF#1brxj79{c%lflGzk4U}v78s`OAQrOpkabFSUoC;coF_SijrDvf zrsvzN1m}~0A3p{CqsZ_f;LzbQ7mpNC{hSt@N%@%{ z>qU!8g$1j-&=Is!%ygVhNl;gc0IkertSw%KK={BuqZCclGnIn8sFQW=(+a}&(pt0- zG4~9aQ*mBN z)F52T`{G6!+${Z;iAb**dsh24gXT zN!+alSD~i7PoT~L9%S!eD{XSv0(3dJznZ^$gS$Ul+%XFQSF}<`I$(SQB!`UeUaIaT3M~7UOZbq?KTj!GlxyZ!a=rJ}|72 zMw^C2B-pG;&1~7MYGSH^iKWtVm4-46fA=`2_lvFS16y#JD6U}hC`3ZBzGKS2haR*L zvaD}pHu}qb8?|6F$3A(=ER6VqY^{9nFqcbKPHUmsM42!RmachZ*t{9m1nf;&)vz|s z=AByspuv+kyR%PCfwOEQ_Cb|7=D%KV|qd@7Uq3Nx3g%yBC7woK;Z%#5nc&!3ex%}nO~$n2g2 z%wAVH=VWr?%n2jsX_a$UCg&&2IT|?+shoo|Ij1p)6Y3o*=R294W0AA{4e)$-DV3gD zfA|Ztf8Eq?KxWoX+ghtG)6x9f*6`e!dY25_oq9&B60Cyts7%{o3r9v)&h5u2j`?uP z=H2UsffY-eGJV{&iVjd!66yOQp1msn|KmsTiHH z%uoe)&z2t3%> zi-=S3%l^LSA4Cr)M(h z8C~W#%o1oISl0GgX@WN`p?(%@6dEMhZzQpfD5euXa_&H4113E=uufD7^Hi-TkIAOb zg;?t5)Zuj?CwHT$e3Q@5KDRNmp(I=xd*7edfvS7SC?QcP`O|Qe8ryzxta?<(p@0;5 z*zqrIB^f&cAueK0*1k%RcT{>S^8fPAH6q13s-_zG>oxOsp>&~tFiHb=3L4udfII#) z_c_g&xPE{<2av4f8GEQNgv`I_s~3vJZRh-F{Xmf}L_usB=)R)7O8kcNO0m9D`z0Z( zD6cGp9hW5>YdwEd9)56ei{A_Kune0R&cnMF6VJ>G;P-;OV*FO;HDJID+nXO4{EA^R@3ti9v_R59!FfeH3w9eXSVu~|~N(Ro9tZJMT*ZK-n* zhRoMOc6DC97(a18Y6bPxDju@$b%Ev_)!)m$E^JQq`ccz*G|x{BWL4*N0U;P)1#A>i zM@4;zV$Xs=Q&*!T?L1(|onb24?~&(47uDB^JQ8PT(>Sjd>w_wq0F9=u<%S%s}nKWxOh#rQSrUgfXdiCVu(7&LFq%VVFh2_|D>+Cll|f=w#vr*whn<)o zu^!IjiZEn7F3f~geW@Qy(0sd0g1RV!iFFMJGO+6drIv#En7RJL}d0ZNhV8T|QM?T^TOCU$go$D5F)FPN@ z$*&wKhB6v-_)nw$g)fp10o^m`NQ>mV4Q!3{~OvjtecCAtec_jPYqaSV~^mG z4v-UjSZbh`wj<_zc-3lcjrPpl#~YK|P=Xvje^eMQD|kqaLcffOZNbSeyD9VcmQxtn zs_WYrtZHM;BJ=Z!o2owNqrUJJ^ula!b-rU<(Gr`Hr5UZxVTPwoUsw(?zoLbOCbp(l zvaf0J%}OnSOE1D8 zXhD7IUy984CU4TKe}^?&k$t6ST1{5or%!sy_e6T|)0SZsZ+2gy9z7K=L)XSgU`*&; z>oOAw-rO`l3t4+lv$%d=MX98>ww=>khKXLQU!$$j1<79MEA?pANhf%~MOIr_zdd?KxY;D-TUjhvoeMg3)1CcCERe@D+h z4Ptq&ANi`bT?Rc4AO&m}{>ccywE+oik{;^KC&5xbf@Hi4y+-9D`^_QkMkzsJ4a;m81WPDGBQ>6>Nm@I!%>b2!q>CmrVvwdq6| z#jf~1NX_hupUwVnyDQE%f&E+r*dQvCpstdMZSg1q{$U7e{jBYstjW&H5*0ghtil!W?~MD~S`K3B`zQk2yNe~vO<@TB$QK)>V>r`> zpemM43gZoL@T5+ZH^{ulKZ=gw_!rf{ImEvKk2N`8eqU{o-_6AI7Wq^;4&e59AhSh| z&9ze00CEF54lvtxT)Ja>1AQqr!(M?5=kFsOR~=J5#^w}ft+sdv0@d-lPNv{URw~so z-&y*)bR29+i~&(&fWu!2Y!VjR<@F4(UC#QDc?oO>0XC_nHyJ?##YWpumDnvuHh0Sz zj2W(vnL%4vpqo?u!A8HZzfD!a<3aON=cQZuF2z?NY&Kz&uROfmQ$8^xE{P>lK3Xq9 zvCrsx#)!SyV|X?hu~r{Wn$vPMxL{p2Fz+ia<*S}(2`~H{K{v{eFvg;!@M_Odf91d` zmdDKf*{nYRArw&Zi#4Ghe+>Grf9$CgF!orTrcT0Zm@9?@QEX3%wFQ%{7cHhv@Sujd zWgT@5mY1Ao&<3YLw?r_xh!dT`6I zQznL?2MwWL4g%-t#+}j%^Q!zpZn5j}{{^533?#Pc z&SidpQ4^dGPc({41c=>^cX{1u?MFZ(V;ZDQ2oFr-@^e!+p&1y>G+{Xj(OOTSl{rD! zop<5^T?I@|AmBiymg}eq9s4aVK$((LF=0iP+Y7gwiR{dz?M=OhCQz9=EMsu>0& z4Q=36iY}|N0X0o*vspvT)tye|-ms6GS$`CEiA+_}Eu!E$wdJy;<$ys)vnK{zAndVA z8#%>{!g_mC-y4lID!RRm9tJv&xw4C7ugS=@0)7{@u(=0bkHV`c(|tIs9Nbvg_TF(C zTxV6AY6@|#tLCf`r)tLF`eiucN?*r0B*-IH$*34+$tcY?&l4aUUhX7)Nih~vW(fq4 zmD2W#vQB{7fYF>|()Z(Y=diH@x}2y7D7BEESuG2BmlVs9E^GO{T|^8!!8GU41%kH} zvl9s>m9*aq2Dk~PLPa(ZDewbFeGFg45R)lnPVX_ zJXt7Kt#3!a2kqgyb1=rW3$UI0AK0JWCp#sh#K5zT>zD>lcX_&`Epr~;VCV9QD>`@i zGz(1v43&ZN(0KT)>T|20H;>?==9g0Aobm*sTn*C!-CmadD|6w*#Eg` zDAmWex9yxmPKU8ji#N#dyf2@NbMLquV(as@Ozqz z$NFai&`(xjgEl#0Dmq zOI!Ss{_v?tf1T+o2BqJ{^jnzzO99{=emUl&9rYl+Jb>pjhyuQCmsZ9efXdGA9>u=( zse{D^m`!0z7p`%4yPH?Z-uYQbRQvU_nZw=gWh&?ROil}A@N>pXXeT#N z#c&hp7=><^63jKX>@pZv1orAv=ZzNa;m%3q zMR2A&prU(Y%HL{dDcLW?yLtp5+X+tg#cD@OoV<3jQ6>HlWA|iN2VS*#u6NgKu2K_I zvr92o%gV$ZYr(|bJ6vDfDzo)nE!pkmQ$SUgi8hM*FF(zVLkqKxb8J3_!EElK2$`#B z6Kv-g;oD_z`=$gmxcJ-w7d32DfV(>`tjrm_S=(t|gU;w{@J_&4EZvySuooLy%fMKNo@RQ>B4)u!*R zFue;Ux?KC3i9K@tE^9EwqZrHtfI6qO+`7vGC0He+ocOn8q=Ea*xYtRnSNG&-P7&T? zu177rcPDLC*3{9_|A_e2Bd?4SjW?*mi4D36?x6rD@r3`o> z|8r-0>74*K1B>k0g%R@~p$Si8Z*cM){pyxEdTGnYdRYr-S=IxLgaC$pZWp+PB;em1 z{W`u=%c0tGvOX^>A8!uML(TFec95x z_(~t{&asMN{(r<%#v7_PYFK^!PtZQ4Z%)yK-k{l5@f5(6w*lzOE%BC$`DltQu!=mi23JCe=j$N0x8k28*|KR*nhRI(x8_m& zx>#WUNCtQ(n4fQyf{o>tC9psF9_-&Guw1^kdl=h_{aGT-{wjah*#G-+m;Dd=2KH~r zN`05hRlLRxyqsshFkEh3D5+`M<-;$!bTGF*0hY%;>Wz8iRU46r70xS(SQq4#MsSn` z9~?L~Vsi^%goff z6MMpw{%Tl7C-#PMThM23hCLgMNt=vGxDTuKyVzI3+nHhOXpA^+r29Fz>ZzW{q}Nb1 z^w~Ruio&nki2d7l{buo58LXjFEm*E>mGm(5De&=J_hbAHzb@c%ujR9f3ctkRu43l! z4|BsmEGp~`n`rQ@OoQEp6@Isbz8WmoA=@|Xk^Y!ZUtKh^uR9BuzqO!is#nIOC*8{I zRn{06+$Lz9xB=W$U-4+T90vKGL9oue1AewtTE$w$$xgx@~5 zXVRx4>`DzpCVU|BUNA`ByXH)bzg=Dgf&Vh%`7AQwLtJrXw033TB?@C=t6_OW=D#a4 zuhb~zJ{A?ZKPCvD{Jx?IT|skw_v(Riug4v-isw@~isNyd(m1K>MB-l$wZ5C>CQY}_ zEbPTIm7cqGSct_2WyU$KT&=OmEn906ddw^e#TrI#^%Z>B#xsC)_2oBn|GM+cP; zFnt-*?^WsffCH)UD{zyUy`I@Osq8|PU7)hZGy6eiU$njKe;NeCQ#y9;xvPb^87G%8a~^=>m(3UH^ZtwA!$StX6k|j)UMVe1yBu2RXAbRO>P;1zpkMrM__Fs(IG)Yte!y~C)1+iWZEHVQLesYkE#FXviFU&8;4g= z?=emaIG1c0B1V!cZ!meXo7p924ha{mYC#Bly%E9I4n~!jd7%5l z4`j?UW&o6F8!kY0g@cnoxRrNN50c_Vii4w#^?1m_tF1WXz>~A_11wzKN|sb|ha{b7*Aqr4)`rEXf^9dDx!jnZ zA0@wJVhQq5CRR)K0*wlMT>s$8)`_^fb>awEcRsAcF*sdVAGmBLGGNkQh#W>9W{7dQ zHSZ%PNV_l$H#rBO9P>YBegv*dq{JL}4B=n73{ha9k6;N8YDerp z$?zo>GKg3;94vSYY1lXjnRhaP$51wd#KHsuxB|7HDc38g9gnd0$UyWVA};2_P6R03 zC9yvVg67@C&&A1g6)IsRJ60<=$4e!)vKE|8A0ci4!D}Lqv8Jd>>{2C*RXsnc3l|v_ z*`nY4git8T<09-KkWya~~ z*&_2zIvp+h4xNrJfz#0l`W%f$viKamm8t*l_Yq*AxFIdTMd-~ zwLr?yBZ*Mc9!VDo+r`OKpgOg8=GDk{G=Ntlg$b-g2WmyEXeZm&^Z9SkF}K){BCHKL z^$8*3rE1cfD}kMhM92i^Ja}4i`hjCoF@j_~A6dY}`?n>^BT2u7gJ0u)wsspIBwmFJ zO8g2r&W-PF5?7rqQak51q`?R2(q`p@^mj=eTZvTchp4w2XNh{<=FMF87M-4p04uyQ z3F<1D2p=Q_{KM;8ZZS?|hVA{st0`8hRj~~{5?dm%xD>&oeQSOxqX zE6I1P$JS~ocd}4S(aI@oL4)!`;w`Q4MIrHn{eDPCC_kioZWli!HaAQfh%d)uO-^~X z@mbSLrT$22woxp~U1&OZ5sMx|r7% zcMy04x4IrFZ7cfKG2a>8ByaH&Yg8!(S-_rB0Pe_0#Lfmu3ce|3p6h}M(*ZF|W#B|kh7AKq{I?bg+SFyuw7@R?G>z}`h&9)cE}SVcB}jdYP_pQ z@HIYBy87y>1cBOPAOD5O{zAjkk-s?1%}UsK zuc(0>=XY~BA`Y8{-GmhSY+)NS=<+c+9JXj=TPWoCQQ1?RE&E#IF>R=Tf{4iJoVJ)6 zmQ2|KxC)apZ(T-gV?s8yi>1Ip}7~I9GVoOlbMFsD5O3gYM zt{({2aiWS!C19UqtQ5a#;*xw;olM(U+f2C}cZ`Wl=2Yy{Fg(}{or{t(M5(u>jb24T zk#kVxFPD-kHUT*IHD>{dBUpfgGIrU4U6{^(<<~6l;ZSOq8P=#nN(5k5YqT+nC$0Q+ z%R74OJj0SRN#0RYVtGFtDOLALSA7z~Dt3u7sxfVDI_FJ@VnEHv-G^D;$5oa7){;@S zhO;v9IAX(-ur;UFaJbu&yssGDdG;hfpM`I~n1<){jGLhFShbz_bvjSvt)zWC*gw^0 z^ldO=Z@|0pb9y)8>ls(K%+W7N&e1Puo1@=|qpQQ8!S^pNYX4X-Y41CmzCgk%IAYo> zEc>`v2wBe zHQR=rP8?jDzXt-7UJ7*KnGTVDLCx+J)W{Cb##sZFQ|Wb=>txAGa=DVH(M}IbzT7Mx zmY3i`d00w!(i%3i!H~a}PL|Y@X(vl|$L;nYC(94f1elcr0FtqW`{LiRzzch4wXBC5 zz!CJ*sZxN+4CUN=e*$%OVP{bHohs@=z#5*%{?z*?T+Zw4HRaBx>6@ zSq^9nLOlF}?sS{VEOy46&nY0@!`{JzRt-p;$Z~zgK|wC@N=9Wln~ZYR>k&80COk=H zmV!}>QdG#S#LAlLAeV9=+<*c7>S9hIA2~mIA1|jU=+H)GptCw`dG|c=vvjG!ofDBY z`dLbvonV@??kqvwO=={o>~pslY;Y6)FU%$?L;)*oow=RvE( zRt$$C@ww_ik9YIXQmK#BKD3VQoPXqF73Syra(2!ue0~9MX&JWnkkiHAQdtq(_*>3_ zhX!m!@wludJ#gg-0%!-t(qj+6g+R{daE(qKj&TC)2Tw#oBVecYRS9=7;c_NqtAzbn zsbQtR1p`PZykd48BBk8PJMdqCTmgwmLvJOqWL}VgPksk_nbM@&<*X}tU-XUw8kkL5Xp+^Yzs)wp6n~04m%&1FBMxbhJJ zeKjIx5|_akCYX3nzU7?F*Fav4k(u6h|$oyYSZtkmA>d|viFcsxRvgF=Ly zleta81-05zk+ODWHmaC)8X(~|1*c`BxL8OkT`W#@o!lFSrz}>$DIQjsa36?Z!{~5y zS-dOwz%y{we$Ijg86^9<(wDfT3Q-74(*zm}s}~G=phetOs#YwEU83Pk+T?mr@Y_0A zsj`<5^TxdVP#cyyJiccv7hVK#xs3Dl6Wit{Vrlj z#|ds_Z{;|_tz9@yu%uge(B-{&{*l z_y#Zule!TEai2pVi(gU7hEp%7(obP-GTw7)`gRUKy5?@T74Xrn%l0y`I}y0AF<*t! zsdsQr?qZ5T=iM;)-d3YKl4w~uM)26+L=+F(H!TCKGMo_y8^>ZJh%e3_f{e8PM2d$G z`ye5G2TO*Hz?$SD>G~0PNZ0?u`A0rwz`;Gu&Aya~&X&S0X zJByfAyrBdY-b4^F*GS{$9hAI~%`Z{K8$p+ly|z{;y)a5j;tp0xyn8ufA$y?@rIENC ziTsGO{YV1i3|``>;=AZ{5~%Z`*W2?B*bFID-T@=s8%bR6fbJX9t^u9U81fndHaxDp zVSu85>~K4fu1UP!V6SNw-wUT-!0hj1|Kum?=e$;i zGylXh>dgNmwr1r#gEXA^mn~Ii{;x{v*hi6?IrHCR`)B@wlIk&zz1dB0gLJdM|DdZ& zxz?r>$>37%Zygd_LWN~MQc0q~Q2>D=qn%)iZ8xB09CRo88fhTHY@2oLJI^vm`p*GgyEJ;V0Cu~A~Ghtf6FEo5F>Jb*w^ zpw7S}_MM?ZndcmKk2>ZjsqVz+-*}6XPw+gJX~ccB7OW4F!*jaT=s+ zHfw{3y?~2Lxc%6*W?`I=vMP)RdZUaXVBt<2Sd)8jVl4sg2E&bjuC4G_+6noycuhCW zgkvj4H()Z8K}a=Ici>$+aCkCGk@BSP=jM?#i#y{Cndym$bIM7$qx+;|+`+Q46^wY!tlOTA##8lpSPf?8t;Br4-|rfdHK#?iNBrm(Nz$F zSQ~}F1+G^=!7O|~7+Lgxxtp?($rNp2<*Y%bVY!!kA1OX1gD&?@kkVjq3F?+0z{YSr zV{P%}2>6HlpU3-n4R4(c9he1UhPGLT!v~_^>X%jZc;uNFNa>)Pdi8^f(S%Fj!699D zIV4`pSX;aV0U_~35RbSks*7#Q<_wLIuc;Jnv7>N;+KEbOO5>tDf>1ij z+4L+=P+4D{ph`)%2zGLj?xcQzlRs-3s_=3e|NLDzH)Zd(IX4~91ZL|S|NK1Zz?RfJ z?!0n>$sSXx!R9_73l+_L9()SwaS~-tTU3!;-Am)Xd?w{lt$@{VO346UkY_bzmxF@_ zjNWrocwU-vHn+<@ydrk`cG1LO&Z)h?qb_05C`ZCQT>opZf9}})O#kqYa!WhCM{rB3nJpOB zV`9nL|C_7$l`BMdwRtDtByV{DSZkaGw3I4Yr&O3dpyXU>Q7mL5RtT+pGl5x4*+STg zaV3X2~V$M;StfN%c50I6aqj<;BR^KQnlrjAJ2?YJ;9QD$7 zWR4Q4#$^B?I>2+1AyH(Gk`GXbULQD3&0&k*ILTzD1QCl>t~L0Fc`|E=tSD;_yf2fW z9hVtN*=UCCeRMB17qB|^55O{E^KhBF+NNZK*x*pCZ7`Xlqr@50l}s3m?&pMY|7+vH zUqVez7`2FotOO?v=f-=;Es_QI9hpPg1i}+&iaDH!Iqc>8yT!s*)E)ARUr|H;#6LE% zWEV=t3VBbzf`?Zlh>Cn!iFwXZXR$5eo1}POW0(dqJvf-t13EZ>``$Ydd>Z3SB=;qa zOx-Tu$sJTr!R&ql95fX}=*+2rjMzEH@_D>Gdw+7YoZKsgz0JwJT&)nqhk}|1s5hv~ ze~bVG*1 z2iB`2m)*hF1@XT}&)j`1zNwpI+-_d;#<%F^H#N|JuXpit$-ZyXfUFIjbDt7}!<9+u z3=APR)*zuBi0%F`HKMlj`RV)bJ_ym}(MFls)mQBZawR?+_<2R+ zhhHBwCE#8O7cDg<6vBX&DdBrSYx{`oO6vCf1hyyp1N;tlPXai^PRCyJz6R%=$3w`l z{VwhV5ZQNka@KqcVO~Wxg_-E`uCkJ&YL#WkZJ_$%CvhpLN588zdsBHB1I9AZHDa}w zm&STWmDBG~D%uHFbZ(vi9#gA0Of)UuAP2J2`!AH)_E>xS!%p)-4yJZ%*wdZlD%Gie zd!XoZ#o90W-_+$DqsrPKvjQpSTFHe%Z3Ax>F%Rz8-vh}mP*+ZTi$NOrH4Vj@SmFKQ@ZF!K6^FYY_1M0^Zhf99Tc;1_(JX?G z;exmy3A}5}r@~eIsDu%FJ8GD38RkP}jJ3u25~Mos#K$r>sgGX}0t}uTXJ<|b4D*aa zysxnY8DTSKfUEiG%&IEHvB(bwLS_&b3IhkB~L6aW(@l;$8!7 zUg?9A;w|k!2;oTmwo|{$Mw=S2^&GNJD~njcO2f9II9YS{y`Cokv05IsnXxDg{w?~v z7_&g6SQ!@pZLzsnQSq-45CKwe_10XBC7x~huo5#&EcT`bP&WHq%rU2y z;_yVCaf?3J>==~&F3AiE&v)0fBROKN=#Zd_r|m&&MGJzEC9gb1tl!lm7O~bWm&7XB zlQySTrc$JleFq1V%`gP~du9!SU)6(JsXHKXA$vucTa;nMuF6+6emS_tngDaH6@-Vz zSqP1DH!f9zj-nn5utkPwaq{5$RosY5{g}F9>P(O2eFxUlpm%8CR8Roau}X4AHfqkt zC$9p%TedERcVAG5BNxDc81`aP+1-58Cv8L(d+RD;t6l&%;`pC`3qq6Ehs|XqydJB< z+cF`$D9>Z%oT)0NU(Ffy4Bj!5iq@J!LChli4Q}$@0;~*UeZ%zXki2$dseM=%D-NRb zGZwL8mE=zg_jt8|L%u?WmGc&i8<3#C!LYR=fF^oEeIxYS&c}7kyrm3XZ9rXIIwo(= zP1?*O1k}f^ydBRnG*9cq&e`dH?llCv5Ou=lH9dwI>;F>R7Pq+8i^2Lc*8@?5s48`6-?@vbO zKiInSA31*n25gr(I|dFy{_{d381oZ+DRnT%_qiM& zO9*q!D8<(ed$FC%zqQr)$$S@mOgUb2lCPnMtsBblZe2Zc!`4rVp}m*O-O{_sQcFeF9 zCT6TmV%}%*MK6Vt=&qao9F4k)Gx3_q19t z-mr-aMv(*=R!ih#;Ls{L+Qs4h)xl=JRFLm*AVek?7O+kw%Tc6UmP0`1a_3YC0p*N7 zBnVs~D8ysPRFkVIlWTfHPE?htyke=eq67hKvuhB5y#t_#=w@!zlKDBj!$Q`g24sWE z6b>+IRDy>R5;WDS*b)`1SHW@#M3Xegqfn|5j{wsmDa+a=myV7k`#M5qi(z)8 zd0p}N3|Ny@rBdRKxvXO~8H}YTf+r(pZ(nh4*m{V}fVZZOt=PX|cwz*IQOa9jttG_1 z&4Z0BE%hg!T-%EsvW<0ZJ#Nrnjtegv;7-v<8w!jzrKO*zr*wdS$k52|#A7W$SW~*p zSi3yD4bu=0$aIid2BfShJ!WjZWPSq6Pi6KZlZdpt?F*dknh$Yopc@K< z$+$=f6cc-b8uidb><~L59iqN+jemQwC^t3I&mKz0xOf>LdC-k6L1UT2w#}725^L&J z0T1?(n2msQfCMXZC9%oR0JEHP1z;PvQpJ*Sk|DE}ar6vJ#u5Tj25@@(Zg$6tu?rk2 z1yqzHWLaWOQ2{!&6!{4}I#CVwi(+(hF}d7j0?tuLXCJI84Zn)b!5-NzbOu(HU&Xor z3$i3CjI`-MJSln$h2{rR%?dM;5KviKC@B%YO8TWgZvwR!QAa|hEh2jIZdwFioDp2DsW4??ol*;zESrnF@CXUR z)EaZtBZaMp14x)#<0)OeUms6sKv)Jq?y zmLh*S9s!2{I9JIGp%%=@Y>{%JE)gReS)ww7@K=&Z6u*ePfB>kGt5A*;sU_MISzQt# zkq~(s0m{u)J$T{b|BPbfimRa^nx-e>q&?hMgNR| zW#r4@nwZS}rYA)hwxTji7t`6|*j70JzDXmI!d@yx$Y!GlM-L zBfw&5c*@4aDX&9{Pr)6-U_xnrW+%2S*g@CGJf|H-Vn^bXPL_YgFlVNWwo|Cgl*cw4 zJ!`x#v|xQyk0h)Pd;YVED?4g)Bygf9PvTLp#wHy|(q`Bzg{d0rk!s*VWcU%*OyDBv z#E^9=ws_7i!4fe7hvmt`??ft=S2qW=ihV%%C~L^4c8iOh(MP+}h_^}r#R4R`Tga*` z2wP>iM*Ux*3I8%$KbUM_@r4VOaVN#VtJEiLkeig-rd9$3+OiD5kn5C>!i(wd_38S{ zJ@HS=C+m+V!yYF*0hcv*c|+!xp^57w$KROOQ!zGVotfuwNMWcrCt-Gj2l^HE$$fJs z^q9$tHe3Q<=~)B7TKV??_2rgH8?bz?YtG8e2H))}Sf3(?WzGekFG z`O|;ddIY^PTT|1qGeLj!UX)dmT!iOX6UQ1Kp@&CAU@f&KS4@3l?@hwIg&mMB8WV1b zE0>^H1)MfyU&PsSoT*vvq#(-3&xT=|U0H~S3}5(%CozUIjRC`_WRk2$#@ zY@TcsnWq*jhBQw;Gi;t+Qe<9K3TG8GXP$hiVV*q~j{IdbS2LubYQOP-jj~2v6h%R} z^Kh>gw;XWmmbV;mE7!0eEJQHKyNBA20tW|mb|GX{5$V*UpYVQZr3h1($Tb7PZc}Qq zMpm~};`*I=Bj_=cTsj>&@q_%8Ns3A(-CpQ~-S9V}UitQplcKi;+bJ)&l z$iiNXEz`}~V^PaFY$i_iZ{--+IeR*r;6HFC7&cen?6O_{SHcn(AO$7ukY>#dI`5T(^_JQ*&F@yNC78M&9;497?|aHgA0NFlw03yXr~oG^!iY-??`T zoDK%+s=M&L&9tuSX;laC5Gh=fuzR;8Y<;!3i_97-1lc5`mc_pQiapBr1ml*vn`ID) z|N5oiiVXjEEraG<9yohl=Wgo78fnaE_^u$9s9{UK7Z2Sz=24|PuYvoUYjAd;7^nly zZwYH#XJ9^9+=bM%P0dHx(<}#jS^`TW` z*ZRAf#%<;K7lyQz?Q9~x)SyJ?nC2nVTp%G$cc=UY<*+gY$`MU)A>cd{wkfz=lGcm# zh!v=0O17<(OvzH4GWBg`1vjRH33T3`Lr1wldg6#R)dISv*R`al3i^Vy@^eKwm;SMT zzG!KJu{UIjJ8cdr>)3f)r>VR1CNhughhnTSXE|@*IW+g~rzh^MH!z*{cj$W}179iH zU8V-wD40$;H6-xpP7Sq8H5V^o3K&TR%T;271XiO2u@(l~-NhWjQH_ajfI13jqzP~3 z_#RPGT()NDq!?QObbV0_R3Pn&bjg9S+VH^wDotcVJq93&wC1=-MKE+!vAj{(VcRpE zhptW7hhm~yE2WFr(?O@hh)K{y!i245Bo)6y@k5Xf=VA%k7_egv7&e&3izQfDf&f!~ zsRS!aP{e7yUA~dA6Ggvm55G=}xeM%Heur+hB03$SRR6zjRT+(R2g2V1W3nt;uk$6R z&ZGgwO$6t>`?KhnF@($r#^4ZQi7x|cHF0>s7&6#k6U4|7cr9RRVYD%TqVjQ;40||F z+jw!`Y~oG^Y{GmIpeEVDFjsQ-;@gfmovSc$VFQh(jC{e!ow}ko%#_QQluOT1_YJ8% zg40xz$;2@bc4E~d&T5oeH8EjZa$JN0I8=5IkT8E)F{O-SON1R)QbXgALG-n?lG+>l zAxfVwi%RUFN+}|5cQJE;&t!3Z3Qn22`(AR9~W~UN6DQXG|OE$WfGP3`KDdr%$fk(#g*k3%O~B5k|qP%l+6KElfO?ra-?$ABS*@Q$Dtc3pkF9`7v%`_^NF1$ic>Le z747hHNP#HV1R~D+SIbc4f;Z7gKLT_zUxJkd2zCZtu=Ka8zdcX&o!XEhJzWVGDyuOT z+N&|f9F>bU`j#`*c|Md&K6w~EdJ?QG6qauaNU*XPrJOH1Wi^MoQYqRf z=iKEu)DW)b0QPSZx}*61{c04$52r^_D&guaKpeIct?t}_>>k}Lb_;?korJ#xdv2{1 z0$5EXhZ9OrC;uO5odUtm%9miV9{~=fawW)|(gQoS>0&Nk4)SBg*C0Wx5y4Q>PVJ6b z?tUpP>V;@=Yior#iBQ+$0Yd%vrHUO+_r>*s`Lac>)|;ysLZ1YCIGRjSss2E(q%U!xO*$xq{j@wE*^LiW!BZfX*#_`-s! z5wb(j!?xn!zdDy2jhgvXHNO0SHk^0w`@Ewoe))TpLRT|KAqW~9X4-l z_nDuEo`1V1{GEE55J1GoX5rot+n`!zyy64+MpXO=xf)_2OB|L$Z4yIkaN>{shUNZ) zV&yq~#o66}-EMr=dCj!IWAHZq$T|90?#sqoP&kliWPne&SFI-lsl(ulf)`(iJA(cn z>b^ccs^aQ@16c@2yh}AU_)?;#y78@vS_P?^#YFDnt_Bs1KBDmrQL9GXReV7=By0BO zdNo$#+ha6+T3T$i#+OJyg8?)NR58$2L2Hd~^~U%Tu!TU?{J!5aceA@8AVGhBG#}Wx zckaxYGiT16IdkUBOy-xXv7YzAak5VOA)g<>bHFP028|5AQIZif=D{1(-G@){rP#mX z8SP$-71pKjq{sci*c;K~MME~=4KQ!*0-U=6r)RH3-_dS1#Zp>TNR zXZg+=A#i8owz+s{X9J#K_s>tpJaL)tb~zP4T$C;RpxQxk$}WSbY+*J?FG!d}9;VpB zi3DuM{;WF|u65P!Ix>~>y>PGyn8o=3^$srn;-=my!-Juku`SXH1V-$7(Pp#(8EE!^ zdL*0x?k=?bKR#eM6)>Ax0Y$e?_uBtB)^bIbEyt@XbbK5nPg}s^pumSrMmNj+*Mq8> zXa9BxQl+-RpzUb3xGW6Fw=%p^z6EevqwyA`gAV@(91X|yA+TB1kpp5*H|k1|m{&$M z6%q(9h<}+a7BGL$wuB#4^#aLu6IiUJ9DOf-H)^c1LOzIR7mjt9gg&CKG_v>oW(~Ch zZm+?`kMVmSamq{KD8%GhB@)z?A%K&>%Ej*?uv)?0zUKWSl6 ziB-)&w;pc=9MG)nhyj`n5G!CVZUjBL-592Dyc8Wqx}V4(W{*LGOR?~(Q7h$kpv@q8 zFGz;Xw0#T|0qj4$HIdKjftLOEckxW$DBYX}zmN{Sva1(j5_gO(_lW;kKlT^k)Cguz zx$K8A_H*NK*$=KB0$Om&Frus}2R{Tr66Hoa@mS*yKLYnMWT1Q5y>E$onO0Q|0Tnd< z88p5|x_p3WbB&Focz?+iK(W4;@XS-zi|dtcfP?FpP>1k?Pl^ZLd0pU`MI@tfPc7hU zo>Mxt@zoJLipO&cS+6+uwBoO(WZpuoVy>oMP#DdWU@l7OrQ6nkRVb8kJ`Ww-oQUVzM|F>U1OaPtD^ja|g==G2*_XDiA?QT}YSkCQy;r)VZm3IMaiEda zB#mwSL~lQpZ4EM=idajC2?(Q~u0mGzYU0!wYy>lBc!JirS}+K+o+y>5D}mey7?^VK zgvzP#%9@_78|UTd#`WH|=ouh`%g!jM=71@XEBi25%~eJ8G*xcygXE& z9HnoXLrJabT~q|)1Pg-{{Nh(i3ZDKr&KO$3Pq;-3AaTM}AL-_?Xb#dmb+i#_o_a5X z@%59CTN_{JmB7lDAeupt*e8pi#%)2oF3kZz@c9#eb@==_4;s;UHDE1dq9vduGT?~K zfAWY;t0_VN?W5SJAYlf`=>Y)ZLTrHxD*{}~na*lym4-V9O?d`x>>Z8E2Z^$88S}8m z;6)gAo4xjDDP+^C?nV-y<{6FuXW)oJ&pA2xxiBBT!RO~r!tdF+Ui=1fv+-M$i{_A8 z1*Qm!;X`#E8LSgVGYj*HHx-zhr$`>Q2fe~cE0EUhYi1T~9JJ?d zK_BREL-W-lS@$ez$CWLesE^D=qO2JjXU4s%ah|Eiw80Z4dBC=ftUd0`VgNaVz-e1t zGRCIE2|#2jf92OFh9?3OmA;8=fzt_?-uDtYuHc=X^U>FB5iI9*1WQF%jK0)gUZV4TO4``xn zsYGTG64(!f)j?VgIIZeq5E3nQC_Xw#?Q&h6`6vZyRVyV$mK!N_YbrLBNtgGxOCR;O z7mCF28-?iaPEi&c+IF47V>%tIDd>Q;Xbs(a2wqPq@n0{BgjJVK+FA8;p#=Dv8(1dJ zQgi)V1hr7vp;6u`>mi}h(hhY_>BA$3hPDVv!wP#?Vbh{yu^&4Dw;<2J2as&)zNmtd zSP-|QY!?cx$-M7A9(U?s7cPL8d%nXIdiw~GMD0_hmU5z&GxGlW)a|P$@Bp?!u>-l7 zr#Bz~<8b%{$JDAeC5fPFv6rbf1&0QKFld~4Px|j&_PzVwi(Kw&e$)f0E+ogL*M%NL zorWkpLl6~Wep!MO=2M1L$#?^%W9b^Mfn+egdLGE5 zjlTzm7@{l48}~fKH>0{if(K<>wj?F$CrxImH=L>&DyBRJ@_wtf7U>tIg$}}DVi7$0 zaWWVJsH`4;e}^9$NgxfAu;refJyTQQ=F%GXSO{~cHE|NK6m3RS(W3A9jb3a$1CB(% zuIYFRCmoW=Cxvr-ZKL7MAJs`#=P*UQ*AuJmF^qJ^FE!T1k6+znKeh>@qZ#EOjf%M# zIN;xd<0_b@E(bWVH?0AUYuuMZq(M#*ZqRy~gDu1rZS<#8AyZE2!_M)(f>vKlx(Wiyl*D-8K{lQ)sUL^oLva^Y-`V@@ z8B@jrjbJ$>N1@=*fr{8Cqx3e}%z=yT&=pP@-0+1(Q6=HJB3zzjm-7M5G7gNL+`Qi{CHQS!}B(82iq-E+Cb>m6Lsh^p1 zZj?u;d37#!4`W1Pt1gZWR70cvl5a4%(N~g2IlM{J;vg^%T%M>4m4J}z5|A>sp$n|% z8|JRW0~{Q!Kq53%2OHh|iQWtn^Dm-LUa3Xb2=hhRI|iC8x?a7hR%_~#j1SI5zMxrM zjsWp@d3xkUcTrjidM>T%vu(UBF{-nX%*^wvmD2apebC6);uAE}QTTs4_0(B8 z4rnd!Ovu9N(0fNGY9EW9Pa3GE3>vl_IO;C+y{Fi+5V9g;%ob@|Q?a?()Wyn} zEj9w`W(@Ki6)j2y1#hIdy0CsSSSw(N>W*20qwRZyRhu{kz}z|q0mesB^1MpP8z1#D za=bN(NpKG;0#y1m0K-%ON;9pJ#h*@e`LBAlJdoB0&?QKMpj3i|Wz2_zni#Z4%MtJ| z82wzUx*n3kZ%r%5XD0TWKh`U^jnb;lllYs^BqBxQ6AjEV{N@>DX!Ksta#{%#f-bZn zThwo$(OQW25*7ek4iXo%`ll4yz* z$^`frG7YJhZr)455ilzp!9iT@2ag&@9+Up&aB^JDi4vw$d+3M))@&(bq^YhlP*1O1zPok&p5UZ{%sbm8&-b z!y6@Aq(z!3wC{HPhke@q<89SY{Q8SxEu?yzC<<)+PJVpsgBY${*^-tjd+%@cwQz%2 zQAS@FQ}d1Xo8zLSuHu4N1+~Xm#r7j25>U~wkN(+qqvDifhZ+_0x(7x@44I2`Yi7AK z{nGG-B|ma%x|Cc`{!^yISfyBgOfgRejJ$wx5$q637d3nkP-;*&d@wp(mxB{zywEct zF=sAvU_WQCq2iVhSzGK9<^`z7{k# zv65!}>n+u;?nX66z5N_){T8;T0lhVR_TgFNzZmH34`5gArZT5COVOBNuVI`YPtY~P zH|dspwp2#s1FPKb6AcU@`!{YjY31#;RK}7;bk_06Wlzn*#;9+k%JqFDnU(q0^FU+U z0f_%NCH`f`{~zODm&zz*05flr0;7!O{_4!TNIH%}hi!+FqOUIpd68%a=<5^uZikmf zy#BB^)P!{+@)3xcD?jSiMW^eCRK`f!_?^$91V)uUVu;s1c^=y%o~C zvhPH>CzQ|jZL=ze2@VyJoPYm&j55TTw~C2pcv#WcpspjOiNJng9A$SLo(ms`RZ9$v z9_CR~GshxfpNP9b+GJ@2dSsJ`h~Xd!pkjbavG3?sjI(b0RWA^BY(2vQ>Zq;snTV^b zPu!+BWsEW0PJ!kS$sT+sHh5A#9HeUMsrnYyG*QR`rVP?s-;QBbxk;3!dYR`B2PD;V z08^{09k-@*{sUv|r7SD0O_c6oHnw9CJ?^pFa4Q_OkeG~f!{V6DYG@1{j_S(Dw(W-M zK_lOG@KOiH?LH6XWH%s(VJU)I<_aISS=7+9(2>c?PqYIcLq`A?KG^S$jJkS6ZRXn< zc-y|yZx)p*E%Y%c&Dp9e^bR;mW~yf9IkzZ|T72hPSI^3wAvUCb71yY`ewy4XrH2iR z2f&@|D}N8sl=VG2w=%fB{_yt%qs}>1-8s@M#>h}EXfC38?0QHv$Ar9nC6#G;`}pnM z(gs@GRC(gkLyC(ui;-AL6}h);w1^RrGuuN~@@M<_ot0`)&eZavqdp)|PiTe@XPQPO`R$ykn&p(R5cBG$N@5cKh*z-L9S{khq+D@MLegt7q9x zk#L5WSxXY@%2h8<9ClS?)f25LbalkVYggd}87FExe0QeyI0o5Ao_%V#csO(2J?=Lk z@2H9oThLLzvHyIZG5nG_E4TN0__iIEJjg2}1}CogrKgy;@?3Fs`fuX4(`M+wP*;C6 zZos<$7NtI%57^(ui;lR&t8SiIiiEt&la@)p70S(zdtvZenkDk_uH04$@6T0>&UD|f zYu~}T90xG9EKV}&~ri%B@0prJAhnwKBBjayarzw z$*jbcdBNbS7@SVWB?6d;`R=dm$31NEyFo{G-y+kyx@LUhN+FJ-<4R!%^dDdIdZ269 zzAdW(L=N5|f}B~)0_?JXbIa>Eql>%Tv@Lmr*WIqJGt zPjewt`z;4qLypU*mANWcwbb*{Qdj`yEilqna3O#xCed8a3uRbOaIsq7=i>f*8{l+c zJ{fPQc)NJx?c!DKf|i=riJvpN@N-Tt>^>e&ysWx1l;>+^W8zd)`(8i`So0g4Rzoqg zl;FcWe26C#d)MWN01wzu=pd#z#^t3|&8y=Tk ztc>{p8^iwQiGkK?i%>{`7aQ3>x@9pWIXg|RAHA8tPBDVL6vo2@!h{Wry1@Q*0(PWX zV9Qkn(ut9o4G`L2bS*}u7B6>UMVg6;OqgP_-cyD{x_xc5z{>?;IME6V;Fn~>N}q$K zOVpIh*pq>3BNhon>cuKVj90uufuB0}$N4+|2Rq5qabnWhi_h2K`L&&n*p4Vl6<5z- z)pUE6bywgxq`dZ=;R8^eF7K$}=ZtrV-lDqi+yNgMjWq%rHZii);PjC-KqTwl5f~mvtaV}3PNSOTwoH8&(TMRBJS)*w# z-3OiOz2Cm>((_(P(rY?#jQ)UL^EbGee!y;OWt}_n3zvRL`T{+z6KmidNTnNAEdsfS zIQkJ%rKLdu5eH$6Vo_0B+M*xwgWrsb`hn$7y!x#$?7l6L@y=L^fwZ`$r3+ttHTCZ! zm;*S)@*AX1GcyOP^0j+&H%FcoQDL+kq22Xl6Gm^rCTJ~WiGFx25s*>WfuQOgt?KXK z4p`Znfhrc4S`lz`6TJMUMSM_^MpYjfr()5M843R{9$F5su_Qe0YfvJNaQ7K+!I5PV zb6HUtU6ax&Pk)etIKqvCD8qq~HPG@(dbKsvp>m^+BCo074&od8^C7TaCpU`(l;{100Amp5t6w zl!2?~+<1icg2V)^7M6%+ek5(6nftq(Dx&oW-){9{N&(AFvj~ zSUgx|ctBWJj?fRsYynlraScP*TnrCr<`TAyQLiJgpMPr<3V)9W=VLLBSD^Ue>X4EK z8QIu$ud{Ec0i3!{zM5C|ZJyeT%LGaVcvBfhgt%+UMtfu@1~}Y*=Sf6vvcGskMm_eA z?xVmseyc7GRmPWTOWw7!RF!l@ZJx^8GfpB1D_p8nGCIv3PqZy; z`(R!A2m+)yC{dTThyrXzSe9(*!I?5q5d&6?arW#^v3N47E%G5^z>qO^NsRG?Xt(@Y zMt_y3kpiRJ3uW2ql(-*#peHvecUyOj`k@j;1KoVAZjmhIya;m6J$d<0vu+xfA~hyXsd_yuGR4Ymi#P<8gbAPnXp zN^z`3WTPeB8~u_zB?An*yEE>^(uvOHB7U9_GK?uQ_gP^D? zc|?>>Fj;kiY6N~uWIC$Do+8yDhL`{kG%gP(6|~TLM5_Rv$X4S(Mypix6;qm5+HFb~?6|+LjDi9Vs1OzJcah7`g z7jy!um)OexWQIpKj_h6|-82;l>Mz1VF-3CyKj$o+oTBQk?B61| z+aesHvH0DXqo}X=iM@{EHg^?0twmu%S@TE*QxJxWNqG`6uFb^;Ve=@s@L*)Qf-O_| z4Q?B#CvCLoFQwrsy)2=!bv0ZlM{B==hiRW1hm=(<$5?~}-S8$DRH5zw$$;%|WPdZ# zN~EyGk>whew2ZOPX%coV-j#q`xZW%-_{b3|#j%CbB36AX2I#mv!jcs`l=P;BY&S4% zAX^#@D-H%9U9ZSKT_px z&+Elf{CD&Ewu!sL>ub3bfze5gh>0#n#`<#`yh}!d?^;;txIVR&8b>2O>Bfcd(b{M~ zuA{sBFX>@ei%_{#hVOm@ECX#wdOf$ba?hQ^CUxwx=mRmy)e=GA@WTOS4J(#+pmJO!!WW1M4+1;TpHTa7aw^Cr>f?dneFDIGv5*i84=R(3nLKS!CN0Yu z)e|bVefKM1o>6Jt=ZO|0LMHN}2fP4T69nwGN||=xlxPt-DHS{udAnyw^)s)jh4E%1 zHgG}IUd-o(vYBgP2jz{GdGfu8T8F6aN`MCIIq`=w{uadZEa8?em3Uh`f6uvz$d4IW z!jwhG-iMU<)+>Q!t9<8SXQ+KOlN`9CB*!z!SR~Q*pe@U)OVZF)pSN#Y=@_q6b9_Ka zS@8;I_bJA!#0bIOn8YJlpKyd=WTsa21i3lhFpb%uE6P;eH$EA$ZrB(Zq7fvEyqJOZa)l>!UoV-Q2A4=o%OuXE zI%M8Q%1}lqN;f00FRI7BFkE}8RURZM6~ncQUJa*cRb0x+mk{ zjbkj#S4`=Zz>z~%4&SWI1uy`DN!h#X%C*gGU=C130s#yIO8hl3LCO&TqV+=Eqq?7T z3IK))#$bSJ7BHLa%QKqgj;VcEw}G)(a2lXFQR6_#z=#sHcne(i_Wtq4R275Fjj>IE zp|qRP!UnSsKE-k7>%d#AaxdTztK6HInCi9_Q!Xh&pOWr9Fv%`Na@2VeVVr?!1;yaN z40{p^NlM_*i9-I)OShk4M^A^~a0us+5yOXCHpmy5g85%7duvOE3<=lv4a|D1rWkZ{ z6yO4#6VtRykvwTqX>7s#f};gzcC4bxGN7;$vjSuZnhPn9{FSfla7s58$tdpQCJC=& zlJJU2f~JW=z^8&M?a7BIFkS4}@xYoD0$DM!UDN1=G3@CCTFS<7|rK?pXi`DkX#|t9%k8m9o|| z8ERbod6cgOFp&N}>88oq?6JrLSC1q{iM%LMHCNZbJJu*%mM*xk$zxPQuniP zi3jbdn?Uw)1d6LD8*LBr;xYs1CtGdriBxg2zMLo9-IZc@I7nt6|Mf&{8o%PAL7T>% z?e3v7O?Pncx5QTWP$~8rsn0`gbN}R7acyO3{UwDkH0s8iJ%^g^|C9|XZHO)En6D|5 zCYVYM{sd$1@vyiOP?p-0AIGyJ{$Zs@ZLs>qI{o+|?y&6-&7Pxc*R;;jE_O$+=Mlo^ zyDfyec`7bOxUJRM)V@hOY&Eu}j^;kHP1*&Sw;;(Tt+bKP(W-viM|C>I zQnlATP(ANr{La@9C@2y1;rQ!Gl2&4vU=MMpi#+VS_+U%*V`5-1rd8Y71+q|agC3%US`EP2?*qf zmO83=7{00I0ew;P2Cu>FoTU^Mo?Isbw?hSj2elg+7*SPb%5XotBATcgp%JMlB^r@x zfxR!BqQD??rKF}Z2E&7`(4W0`aw7_~0rYnRsNz&p@oiiAL9o!=r?1e3&v7vB?-bgC+@Cs(SW{PP8<{GE?CMC#8Guuz-(_tGJO?INQKwlg_uchgU1?A$~&LW?tfobD5!Ut^VvRDl1hGh3}Ec5vz9Avo`j z8mL(4vUpiAGrw*7S=N-NSeA3v4wo>K&)UHRFJOFX|Ll!U2%;tzDB-{2by??3+ZYG6 z%}xUxfB&oShsi*So@!!Bps@W$g@|U9A0T~m7?|~J8olyAeI2qVHGKBq5=?L;Y($kVfPoLkX5&csF=6lPz5^LUQb8cMw#ob$9MbCr(tFlHsR(- zB5I#c4PSPH)+HtU_D`^p{vKImKXAcjF;WZKRk?KWEm-9@?#f++r+D4K?)R&j!FnEJ z(krT@hKjtsgwQAup3kNGqu+oBs)X=5mhi6JPK4cml!|1&bPG(Rhki`kMrI?Q-}wm7 z>L9TQEWSNsNrW5u#Jzx~MMAe#kjx-J1-qOx>#A7J7yJIFIc1a{ts4`tQ57BMI&_@t z;5@iIM{QUYB8@=Z#chxfV-@WCnpa5(Y+prOiUC%i+@@6>h>oCJce1K<#AW>g=CTM- zfiJXMt4fpa55yQ@J(~Lv!lWe$t_^T)*jYYU@D!IIs)QQ4rKge7qzoa~3WWP}vyq%j z3=A2+9^aJ@`UiM|IgLHbDT0g4^k}AVLaUQmo#py$lw{vfEzVY~EY@H2*w>8y5FyUhZ z0<}U%wwXw@jD@8@3)q(tJFAZQA3FVoF& zKP_dg&GhAtJqb%!(N&@IO!wbaf}t!*pFbuRC6x9%pF*iA}kVzW-(A>guUcW z8DleGue3k8ODsxc8X!fcF>A>)_N!54QMzitqI67|vM5bK_#GA{FOnoIN`e9`N;%Sx z_Z>`9HO$@c;*mIwhz&AMi;A3tjZc~<+K0L?K{ud41)J*ag?$`69huBUKFTlu6fD0X z3}><%^2z=~9bA&HSi^?(kGxCdU21E0J%QHl#|9AvLM=D453rlDuMl{%gi5$|zllRj z2wx;%dzJKCpy#q53Q}Ve;pIpz-CRN}bn_Vs+JN~Cv2+9*De)pJp+yUL42mP#miz(7 zIpoN>DA9a2N&G0L?&Bn~UbWMU>jA08eVC3T_E8DC_wT8~%(V9>K06T7~UT$w) zqzuBWS*%jY0FyPaKM07PDPXOb5N*^6>8=+cA6(t#u(YbJ@6t8CT85$IJX&9em@nZ# zl|MvSA6$2qQ?MEPE*%|)jBC%qBDE96)2(wbvz(MFe7_51oOkyJq}>FOj1{#2`!J~M z-w&%u3v20;&B+v&Sj$p6Jf7_p_wF{TP_vVpJyrhA9k|<0n8Fu zl2ZVCk^LVSn*mw|0r{|-1vunxi%<`d6V-R48#od&eE4P=kJ3UxbPS3~`#v308fm8FQU(ZiGdttc0kPE_QvzcLaH8!hUyo&WJtwj>L%l z^XSA~>r$1U>AJ~7@vv7LrwsCsBBaXY0+#fISNb$z6HE-=Q0vo%=I; zZVR+RDPDj>ynK(>_ZWSkttw~3`}kfjSrajETRTxY%N%4FRB}fr(TqogE3*H zZTewdsR*u9ojQso>rn@e0hHyhV0|LVC5`T z_!_-(MXCLMIrB;h7p&Bq^VhsSf7TX_r^1SfZdkL*4X z74k3ncl6exbI(0(mcL-Ff9cwP{QTdageP4XEKt=Aj#;f$Wg(qjIe9epOEiD=@HhXt zzv$s5dO@du$&Xqm6x>|7XnwF@xqr;^@U2n`CP3%B@~Nx)JrbjN(#ubNzUtFIy$mcu z)A0KCb?29SlrxU6IeK%;U9WAKee$YY;&_>Z<6d3+<-O8XbZO6_dh=yREx&$c`>fmj zlUs3LT;=kN?kYfa5-uoQ^w`(WzjPcb6AI&Fsooqdn>+2x(UDX2f)#r6q9rH2@yo5B z_4^B2am3Y_P8b1tf_n43c5L|OsPRss`;n+nRn=I%5-s4>nG1E ztX$fM31eD#e=}?A)Ir~L^H(0|Mm}&LI=?rK^t$_nqnC@sQ-1Ju6sAZXrX^|x~vb#d%W@Z@^ z>1KTHF>ZC`5{2|c(_N&#B~4s#H535!!#Q-NnfcSfS@rgcINre0xR;o>RS4F2W6qUO zj!9E9%k~W-ND{GL8~iPaSdH6#`(cPxnhJM-SlvH{A#p&Qn2IUQJ0C(NaFTt%9OZ}4 z>=IPX<=2WkBFkbzShsGh?m1jUVPu)XsPF+y7&Mlnc~(c3)iBPl6|JpAZ_tX@MwT^7 z#&Nu51D+O;h8L_Xs(Ij9#734qgWt69kCsrh`Zljf3+-FkH!57%^EU)O+#xIR)rryK}`B9bR=Dyx}xWr+4sf-anV+3J2&8Tq>X1+8yy@NvNd^59Q@Hf43iS(FosOD}`-prcMB=LS3G}AkMHML|)Ut2_Y zGqP=DXqwSkwJz)fVNR^Mla14Z>J@DVdk6-1I6Kbg(r^Q#AMS%#qYq-595b`$q(KBo zqUjrhzkN4N&CEx(%QQgIV{XBblaG;uV1J>}WN$EZRcm-`)jQ!)HFuK1;$yF}tvlEF zL^!x5uJPdY#-HlMXEEMdNHZ9=cwjdI^4YO@OEKe4&&5PStJ)VSph7;x6z0MP30f8*(4#kJ zXi+-q!`9b}Gtc^Pid?|B7)S2i;?a#;vTXx!A|Is1>i)&#u!Tvm+qn1jIeutVaYPa=>JN8sO5vh1ov zceC?>fWWS2=E^pxR>20ic|mU5S^D=jIiDL=QU zW?m`m##8j1>pU3N)L%q5ipzUE@Yc)$h;pc8cJ=e6sCrYQARrgTV82}}-il&Pt0ZXY z;5W0lTsMRBU>T3_)ll^}gzhktHz2Ytx*5MPGy}P{x#vQemqge($*-{fu@KEG(6J0s zsO8Pf$I?d*7C}5*uqZCk+lxyxkO#l^OSQlPv z+|!STeWMJIuy4!>iIH5ZnlD@#_AH_G1nAllh+POf#aF|bS%z!fw7TSrx*p1`Q|az) zRgoPCdVUdvb%#&>$!%dY-Uj=HtIx%u{lBEeKl?^PqtB z2x{us#P&~D%|cAD!=8UG54R0v;swWa%v^8(^dfSV)hTJokM`CMN!x4BNTlsUT6`&6 z3V))CSJ?BEc|`6%vb`$d9@0~`+3S!Dy5#>}#tV+zp*c8p?*Ib+06Rhue=8yo|0v@R zWc+Hx_gr9qP%5Ya3Z%f>_FW2!rBeTisi~#gk1};W;2fjAJUIYo0l)0i7TtnmX=0O> z*0JA)5jN!%Kj#cT@ZujLNDId4wa>YdbyGUN?|h%S*ePN4**;5$oja^7GJz**D9&Tw zc&*IZ<$YHR-Brd>6o?DW@2*Uwg=n}!xO5Ac{rwtTGc7%8FodCFlO~CSh!kmIzjTH6 z$HcxC5B3!;Y8{sIr~$Ngwf3n@dUo5a;WSrDXUHC2UW%1la?ahZxPgfvCXfO1XupX~ z!H|@__N=Y+2z-2C1_|rFADy?XnnO+qD?*r6A|2wWq>~mGbf1EcWWV_I@En<)aEAGY zy)S6z%t)cmNp_~Z@Ph74j5|lVelbF;`UFLBSmYEia_ech+3jz5(yiGLlN&HLbD?6vb(9z*Wt@16Um;g? zb2h}u{PlYDI*ff(iZJ%YhaL<&kX{`7uFtkDjM z7r;q0XxGf#V&}i&2))?ZgM?oG`Kq&*3-M>KwCAW4xIK}zv_1F^39|vq1dvo0UmTZU zIoRS7Kdr+t1LWw|m7qLCYu2133336hg;UZaC7pxW11pob7fE-i4cA`fw4rHCOGp4IgXV zX&de{s0puL;WXi^XAWw@tIr$MguhWK;!PODcQoNX7fKVphn7@>&}?i!*dPN3q&xMGvAG{b>8CaLigWN&U@B5*yKZ7WLyI>VAjR>(U@7No01uiIuOa%jUY_d z^A|y$LT}*!(DZLy;b{UzoDR-B*sY3r?YHnFYef0s{Q~ASIl6hf*Z&f}@-G6NvK3*^ zZ;fIyOI49}!)i}FIxG(aR8lsM(Cw!Uopc2@@Z-_GdkF^jcSu`7`s5 z^cuGtm0DVkFHoWnj8|(S(t_@!mTr#0s`guta7}mb)sV*j!lU0D*Wq76c=!YH^c;Nn z&F|#C5iizX^TCW{odyZyCQBUA-paS}g_E@Lx~`2c!Oikg?SN4@7YmuH$~XXAZmTQF zmQ$p3!y*HtRvrngYy_M$M05Dw9`z!?Kc>h>SY$jk34zf+sl@MS#U2we`s#NJaw*IAKG)V zYB%-`R@7d1Ikqlb0rCaRt8vk5*yCjS9J|n2TxezxPFb<#ND;cE#y#yYvLrX_Uv{~} zl1=!8&D25TUp=SE>MXdu1h*lC4hooaN|%z%`pfv?Uqm0k>rn^rMi&C?OS2`Aqm3XvC??AwCg%o>%gTMYx&+QZ3MsvED{jyULx9u~ zoL2Q3!Qk{+3DnFnK4q+9)zSNV`3)|BQf`#>1~5`5rSnG^VY!blCBH>ud~1)^BFGfb zE!m8jB2qid19CI)ZhyGXSeEYLx2xWmMES=@*+E) z+W7Pgy&t=b1Tam)IAjPZig4>Ng34_fTGby=vgRo+)jYwu*zzWD@>B&VarhSjt`6ok z=M2UiYofqzXw36|FwCLR3+CvS>{69m-2trFXhm(C3o~%^o73kg(2H<02GsioRO8(CTmjL#G~58 zqiE?FvQ2QosRHaYh^dg?mJ!;wxT-&tr8qbieUUg=!BYF^>(U`kbi8JS_K(OJC-A3^ z3oG1F3Y_gsB!bzbf%u!%5{T7At5|@j8uyP6fwV8gBc%N?mpGm5e87aTX8kbEv$hb{ zUJ2?aF&JN(4|xra(lKyL2h+xbJ{#<(zf71@Tu2E`M#^-W%D9&U7$P}D}dofeZ< zPqwB%tOO~Xh|66GDsG6GGj&f^P=Vj5FMog3&>g|6K#o5jJ!Md*Km!O&HJSpNi2Is4 z4yJZ^G4x(5ILU5>X@w>iDv4^=JX_f&obguqzi|AtzxrR8KV}!K>T$~*5mcvI88zK$ zBbBs}Njn&SG?MP+2tPdT2azTjo#b{U6J<&i-C;v`O|hbEcYi@mJyn3ziahzkEVw^V zUx-g`&-XbsNHQF32MT9yvk$5Da`p)OIWbG9k<$d};&7kI=e4)4A)G3!XwZ~!#}1}XPlOsv{wc(kmkXVoi3_sj_8ZH}^< zX}Eiuz54vC>7F8;d@#Pli{4pl#>K{wn?;I+cuB^?6CC!5ON&U7fvtYjo=W~c& zJ=zh8>RiEIiCbDzJ!jPlc6TEcNAtp*pm~#5<_optG$Y!;zzWVw zzKe&q8?_f_=ipOYan49(7c1_=yb|j#?)zciMwG{Ij@GTr8yhieiy!NRiP5sVJ|#Tc z*G!$kz9;ubFr_2DIW_(!#-ED#hX&$-pv%6H@kb%PDm8u@tvwC&8ZarTEb9|l!Usj2ioU;8^K(6x!`o~!0NJ#M(e7igPOut|;!LCyClfqn(2@)=oTP3OL9T+yd6mzfHp%W^`54*%kZO zuqfZ=_O#Fxy>k8}R~YvZ1Pft@(BYT`*HP10&#LyX4*v`F%ts#7lje_^h1&R|9pv{U z0Ig~RA;MgM+<*|)i?qcR>ySGzx$OqG-*~OZ8!&&(F3%}h)gw~=3T^Q-Jn9M-oH;%? zOf&rr>jT!QxTAGlXyO@G`YZm5R^s3{F+-||W3v%ciymCA3L_E3%BRs3FctmeQCG}sARt0WZU!HZtUdZ38o0$&^u>Pzq2eK={eD-$EQq10z z1ctT=TvN17NS^fiPjQMlHga^=v)Wdsc^@LaV8mS#;hugJElTL{`1rz+pQ8t7PJ`*3 z$Spk{N$llVi0io+U5?bxy%#St`BCmRbboded!x!d50H?1%q6he9?qQA%;|+R{3qbX zQ=O^G`0%3SGG-56>>C&#!KJd?CobTi>pa|@gZX-d$eWo_T=QA5u0QMJoV6gt?)rcW z>)bt&wA?)qmGf;hx6?`+aU&;jn(=*b3g+8+r|-z`bEpA-Fr6I!yHt=-{MR~h_lY!^ z@Z+3H{_=akBnM~zWVflV?Gd-$!xskERDi>_Ije4Wt5rO45b1MP-5$IuZo_vLJX2TR z!~x}9a1{*qvI_S`fIgz;xo|+i%Ac&b;at}%)oRW2NXXS1uD8H`je!E*CbG`9@2n(S z_%p(#!Hxjz!!XNXq3v8Ov{f@UvCsww6F8Y%k4f@**>*0nr!LZ*`AhNc2>nD`e1?u} zjkuX_jxn8gHD7otJKsk8jt#V2tL3wei=4F=|KveyFB=P!)?S>oa{FMF3d{G>yb~D22x2c*<2PPq}O}bMu6hWsQWV;r?dk+k?L$zpSntZDuap?pwkO z3kxk`%|Sys4p?xGsr*lWNP`zfhQ8%5`hgpIM(SfWnC_cW!3?ab$hyKN8;c=Q$$SWA zcrUB<;Wff+3xzpuFQHGI``acsq#d3LE2S#h;BQG)`6_!536d6yhOSEgKvmw-58TSC zY&G3arh*x$N@H3?InITyGc&7G6D4rWG2K_GZ;6F2J>l3%$G6i4=S{+M2cDg(^A0#( z+cZ0xnIi@RihGx$&HsrD(o;N7vJSqB|R+%O`JNQe^niI-(6DKXpMnGR(%_hlQ|GB38XI|o%Xw4LWh+l|h4!E}m91N6 zW%OXqQ5R#^fu6ithd?q~5hK75)AIABBE0tX5XhU@s-{&Pg6GPU;c9Rk46~;D*SH8h zWrmcrWEma&EoriLMe4U*nXCoO%duqH#U;zHVWWRvEm^)MOP2d8aB(l<0gmjhh2a~P z`BqUn7xJ{#fFcUqkU$hJ=iOUEK|D$p+(JC`7n2>5#B8AhIL^?d1PMehf)2s$K`P z;%S5y{YLtF9r1-qtX18N5^)oGhK|iMK*Rp%3={#a2G4@qif*m;yBXxC z7Dj?u-8bBW+gi1v-flUo52q2LbgJjzLOI@+M#i^JmMokCVAW&7IA)ZO_V2XwT-_G~ zl;&|y1|<0Ybs^PP+O_U|@j6GlBg$OeCnJfSaT;$~Xu~ZFHSXVPFgfP{9wu(B0mtNg zDR|Q%IraqL@UbsjztZjiBb0lJjCo-FtopM!BA$)$;-&fToN()_o`*m3zx>6WpFb9w z^U--gRs2Yo+mlZN!d!_hL5~Av6oHoOxCtIK>OV6(P|y`9*rtzJp+#-XQ=xD&NwHa; z4W-jFRw;Pp`>b{OD!vtuma0*NWM!Uxri`55AXs`N(6=vn463%9h$j{nF@xLx?oVA` z`Lt`{XN^19v4BFd#L0m=5|5fX7HUuYHAi$|UONPLP7FcVWoOAY2D6S_Z100nJYZhs z0kHXS;opqqd9qT_I5rnOsy}P<-duf6&&6C46OLnXaTqpKdV&VDU2f1%1NGgB+jUOGrBbIxxHFmeFLH5?i2}R<%*0|E}(u4j^g1C>~;2WrOGGxn6{|IlR$qR0|Mcw z6Qt&!!?k=v;Ux&sNlFm}jn8!Rlx(64kT{9iQ>49c)AZA<;zobvt0Q94 zp{mwFf^-K)&dtDi7Lx!fVAyh=MFt#Yut~&_)Qp;y`CAmt5^*>38 z$c!E=iN#67ul9`R(p|+>u&^9~H@{hwTLyUn#~2o*_7C{YKb}a`ax*~l-vARIs*$=bt7x7%Nf5V^XfD=8MRS@e!KdU34ExDc=2|()Z7<&PL!ldK zq3A|I7W;)(^<#82(>)_|kUkY@?qIUe6x03l!QVDVI`J(nbS}<+82k;o)_Q#GUX0A9 zd)v4{VA~=DD@VY@2n6i->|ZfCG-|u}X2clu9AUa!2j_&U&TnY!h=h35sytv4h)&3_+H#!GHLPMn-R zlhS@Is{N!R%DTF=-J-O2lm=i9Cha!0EIpTm5&Lb*#?a+yYh1J zqY-8{b76RYrU`vfT534t2^{W!HCr ziLLpK&Md~)>>*T$$j}^K+HkFCk#J{mw5V!+*7EMjK~Uo^bwiiT$0Kyf&{T)GH-n@g zE~W$2;DM`$wiRD9)6oxZKLA#EpkVi9eiD*q&KEy#4_ViLc<=}M%fXDl+;QlbuP%Y8 z78k<4AZ#)Jpaq4hCDk0zp7kaR4XBoS!FpX(%kUjMu?Cfo7rGTYfmHIh?ME+z|DTz; zuzvz%BMxju zSLtz$bnSi6NN+%;<7rgmfX&DX_P9xK22t~xnmSH(?8hDu1(d|JzdB?<0riqnI0u!{ zbw{DrMlWp9Imn@TWo`=x2uhR%7 z6afY^k>1*P87e_l;ThACsSsQ|$wATS8KH9kmoN6olK>R=3=3Gbw_TZVqZse0wz|Vpd%tbFdRX&N?8IFBMGc> z2DmX=0!zM`b!B)%wV5lR(DNHUOxDIAB{SeH+mCJYK`1AFbBui;2r|^P&0nevfqM@S z5A)ns`^f(+arNxs=xL}68;=d?%pTsqpFSyyDtX6C{YiOEfsoipFd z6V~ZNuyi8w*l*U!UZBIvF(YL*=h#{Q&r>*|nS>gT+c2D(n*v$&Rzc_a=b& zR!|=5TypsRIpR>k_wNn4rk-Fnuf$;(Xfk#zJ6K8I9GqyqGw9!$V3%8#lF;6;fD)f& zrhV@!ZB}q_&bl*8JhrEFXI1&$1*XcYg4!Q~qa1-Z>F6J#`=rRzd++%n@Jk(XAI?`R zec!8>({D)exY7ca&LAKDAY48e^o9TbK&Suz1N}tF4@MAl4e58Y0P=hDe?mH?az*7) zyCSE$n_vVUw9YUIQ?d9uLlF!`4VXx1c`daPG(`|VU6_YJtv7J3Er8wjruz@yPDnNT zN1AO46&y91Kloc)MDk%W$t3)PJ*L0a%+yuN#QYJHLMDMX#uf(F*ji7s;aqtv$@VXcPZO|m6g;puV9n|(E_er;ynCKTE&j$;{+Hu( zim#?>*X}(E-`<9nzkW`U_ST2Ru(cNyYcIWqV}AVy;*6M8@LP5VjlcQxUJp*5?+T9! zP7Y^;j`HC+rT#fZ2fpt!UJJj0>}xSWSRGxZMIXZm5lma}uWa@BD_45_2X^*6=-;vd zM+dw0<#2bme7%Tc(dj7q##P9>oJDs+IZWSE-tbZkPo6#I6l*Q(e3hHD9`_vIQV*%g zdiv8gR;&h_xU`qn`O?-s8=2#)+@{?$O7AbsdA2{c_nuQ@XOHse{kqq0`g?IYrB*eD zim&PG1NF*CDI?0;ar#SOdG8ApY!b`+IyQwR-Ysg1M1C-vRQgT!&80F$TChn?k$U^H z-ut$b2Pt2RYJ}Wl_f&Hv-wSCnO~Oo%xZ-3THZ(kmF%21j?qN}2wVwheA>7FbKHN<; z4CYg-5p7H}Y6IIEi$7Y`MpU6KdJ|wmY29kSe44YWvH|hBi7iP>h4GOblRqz#L1q5t zQ0Seo9^=i|?AQV)@kLzgaOYhHUO*FBLZnASopcT>^UuhL_&$`5{4PQ>tWLava$;05 zn{3Xj;1~tpqzVIA*SIg-JYis$)~&}l6JIwo;Ydj-NYAHv9glS3mq0L$`|WGvInjx- z9E4Vv3I!)jehMeyN7wOF0!ImpNWqnGZhQ-t!YA4*XvsQRHz!+2DJ^K$vBmBBJWMy+ zqns`C508xqKtdN9&S^6oE^$55g32{@>|*w~n9N8czz5$#j5;q{W*_?kd`xOsSDW

r$>3VJATYLdYqVhe;zODqEuoev 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 z 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 z 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%0DtBkntSLysMK0r3}N3_!C!rp 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

    !$G9*+vx6MPNdTgeLnxt-Cveq%eg znkih>@TaSbIC!XhGQrBcT5i0anAKK{q^(BC!1Sw*8#Z!kHxToUZw3xQEmffX$=>R^a zEt-X&EbkmR3PQcXIJ)GA4)a3rlqeA$F&Zq6QiLiJyb&Dd3v%J6O$Ru4GI9CsU9iuA zJZz-{`gP)Di@|c^)Z8={E!Qto>Wpzp8F;i@yF5p-h>2x}n^4S$piK12wi(}HlCVR} z64hMMhMG%di}79r=5K>6Y$Q)B$y{BC?Q-K^{gu1Jk@>O)tS=>S7VfMhCQT~2{Fq0g z!*T>1l+FAB`}UpC$KZ}|Vq;lgH1=4%FTau7_6781N1=|Ay)SIzwgwbU_WmP&Q`FC} zYroXlwF}2!FL3WZsU}%>QEdQW!7jeP3U+Z4QEN#_DB)C*c6&^_EsoV zcUdP2&7UHh2rP0^(QBx^Y$6{9HN)Gm*Qq4=^xT%UmWgIyC>^1FzIZUp9EP77;%!D- zqw**G5kHk_E6TKYP(2}*JR3{}Z^CBd?NuIcg6ouU{R)&tdK2JMKmi7e(q)+N$DU(? zGfGYvDEB2btg&qi;ywlnBtlBf$*`wqZkkRWLY)couYv*gWsV9w1$}b`K*<}|wZ-B$ z(4*D6s{$0AR;u&v`hoicTdhJ3!M}dL1d!KtzX#HgGTN}6+?ThRm%PBUZ07Sx9 zXMlM|N62(u(`4|RTW#%Hu z15(v1X1=eOD2$4IYfbDvF$5zUi;MX!H=SGG$&m3Bn4>*lZUY#`cz0vx!A@_0mha|c z6bFglUhN)c$@@wHZN))joa#uew?+6aSCGTE4CfOD!xn z`f030KaB-fw5HoyXX0p47P3dF8MKrv)ys{)^ihK5IC<>CJuT?Kybf(8_^BFC_+p>l zdxOt)Rkr7TVkfarOh$pDXH|}heJYghoQgd>WrMh7^6ktfni71TbqPh%?+xmsYRGqZ z9!vnE?)PbRaZvC9&!ILBoO#gYEQ`}~IlOCscc9h$0n>6j3U)hDL{MntF4>Znol$9C z^o+zRTI6wpiPD-OKEXn&>UAO&#>h4p|CxkTy|?72?SSve@{^12oA}ucG+`Z|-F&!C zSjO4p@kcuLab%eMPP3YP< z&|65!jymkJ?A9B5S!0saBhQ$!yBO0iS$6BYR~6l?ih5G1z*lzbq(65O>28+YdgvBg zwtrsPt&KDMBH9FMTOw+{{3Io`J7u?4i6FXVw@#=`E4#Hw8l;uo`VCt7#Wh3Ot$UYP z9^0Q)cFSMiYKri?z1k((Fn0Q<%8@SWMEp*WHE#meib?5f-o<-ZJT_h6%xT2)*1C5` z2PW9-#^7cf+y4X^-aHBIW!*au20ousYoF}4aGli49O(c?Jh%t92tdJU8)8B4W+$@t zi4-M6?`5xqeYe3VLYE9pcQY(7L?u}> ziR)P5P3h8-=!wmx#NX-FQ_Umr0fBcC<=erjP>(yozF5kdB3eybRMn?i8J-B>fWD*= zFYe9*X7Pmmp2gGQ{P5sU&@qcr?I}w|f-OrMBsW&hD?fmxSX#F+P-oyx4Dm|(g-vnZ z8lrtC53V!*+DsiF4@PvUe}S-2N*7`aNgKHWWLI&aAlkDPI{gxC^5TYF&CVP7=L@U44gQ~Y(yY7TaU9{2!OGbm8nP(3A5(jG{B1guz(D(2Lqy8Hm= z@C^F)wCM?)d z0$pms(v2&!tB)?*_#Bq2Qt|r<6))Tg16IUPT?r9y0Xt|(=5v=xvb$Li>Dw5dh-Ww9 zCu;@tT{CLHx!@T6h^312R#@n|)p7mzha13w>IIu?h?<8Q?*MLe_P zwIz0Grbf;bww!P5%K>cfdd?xw<@(hK;zJe5Fj$sJjw=91J-*twM?HXM`dHQKWUCdu zbmdyj6s_U{TN#r zVI@S^Zwg{Gn~ZB_spUey7{0PAl%zcX04u{|@Br+p+&OnYgbYU9K+9W!j>J!O?^f;Y z+{S5hK$7sm1V>!IC@Zz6=jUDJd;8}h_&KJ%V!S(%TR{0XrnNCVeb-3RI31iE$;ZYiRQW0}(lWgAxlEuB)YF%G*LchOFQEoOCCF$tETfl=K0 z@`5bmt?}$N(TIojCG+sVD3%NGa2c;RLJnnA+hFblO}{Zb24E{NZ(9djO0d^@z>2&m z-WA|`0R(7C=&42`8_`9DsTvG{x?IeobS5*ZU7Mqw-rsY|3NNDUoAlYufDqASHZkwi z7YJvXnmP(IjWG#KrB(YNWe5I;%Y$Y$dWBNqlQ^ZUrh|l@hN)61pqx2FrmBp;8Z{x-`^Yvh=Ab^ivAGZ8)oq*#alS8Aoj=IBp`3Y+Lt(Tnv6abs>g+v4`V8 zyGh^@>u}M`;^rqA+7Dx}I#rWsJUbSi&5xjtF~=Sw!GUDk3Vk31=96eAH6UWi-Z#I* z{ax-ir_+5@iD_PK48kB{C5Hy;-eDn}qgUumc!9ArRF^8rG%M5- ziHkE3sLJ=m04yqsq0Qn91j2>bdEp^s8{}4-&u_Jb2tu*hsQT`QzRfk;Kn|<-Cs`#Y z+57d2=$}JyT(T0YFPIFUC`$RpnJ1AZ2L$S7!^vqL$zC#e$greXkpuP>k9)r8+6z~{ ztvpKp;CIU9MJvk-3xNq{2~JtpG#&gU7r&eFgFnOnPftz~kO9?FoHN>)FQi>yrke<8G<$Ij3l7qBhX0G1V5!hsKNPTjQ;Jws9d!F}Qm z`w4VVjKcN>@(@81OZA+27MPTMRh^&!h!>@4=<$!*SBXPr~>-Y)l;o7A)R_EC?dlQv)Z>i6Xbiqm~+glyK2BA;nS5^k40bRd3f(T(4YCmM3yWb!>ae-XfPhG(IjQq?!NkPb}0=^bH<~y;8%`^CzC3d3wy> zQw(C;ysNLrzmAd~+pR;ERd@_17*cc$6l(<=O!TfSX7>35v2JDne|b&{+3TUZ&hz1U z6u_tM>Owc1H-=ppkDRB%S+=4F?As@p080-|8N{m?1cMSd?7Uka5?wIVs|#?O;Q-`Q z7tUmjSQhj27>O|0MdFj8en2+0tLG;e#nw;exrZc!J0% zY{v4!Ni-TEU?Tan6k#$}O{KZ`JEdSw!^~O=hEaZ0Fhi+e)Dy4Z31KfY3SNeSC3ri0Tb z5L$IVtSCdwLoqrc*a;*KzRZIu|5*Qlqm3S`wx^HK{O1Ytz_poxK--wmA^`H~Iben- z(p1e9yE?ij%gf5uuN2;T2*m81tKTfHg*D98XH7X|j=01s6Nd=0Mr4|teEsJDh{vi3 zY2X6mPuaKN8SngqDf`DVU&iHjW(dXg%k$$UpI4s&GaFm2@On?`K5nUmW56(Z=Q+mt zMPvN<6+>#2~g3Da<=Ou+9}w9Txyl4-(#ux=dmhmFvdo~r!#8| zbuxF42jCC?Ql^J*>{tT{(F^UBXIyB#0WAejM8+aslJxIIe~72ISypd;1=lqs2j#Du zT^gK_5y(%u-{RODSVWBWNO!bfkfOJ(v$g)?j`qjJS+LEH_D8>50gg}?YZx2XiH{FH zil1@6#d&?LF{L}&ZxiU9$Mj1&+W)LvB|OLH>3wHMyLnZ*>#)1`TMV22%Q)JTSn<4P zVcgo=j`lO}?XIK!(WfXLuA}{%^B(wx_-G1Kv7T7;Tb>M5uSD}S6ph-}OUOFk;q=Ut9B_HzA;!1m80vGh+KZX*fIH-{YrM<(`FH$zu5U5H zu{QL&ClHmZw=!VGtYPl(naCYJ!3jyt-j3~aAASPIQf~5ar%1`w#s$4B?ytap1b*gH zS$>uqcYID~yeEVB-w2VSJ03gvLuBg`p9Dun0T6+{AA@l9Al@>CI0vuh4d~y2w#L|U zN~SEVGx~8=KtQX+q$CKyKes^ye}H@513^lM$E$2?;@d4;H^wsEdJxX-N^#h-sh4^>c7b!)RpB zPAD+0+Iv&S3CUicM71puU0SHfJR`1MgdEz7m_v&&k{fFw7*XvyS`raY4s9R!t_*x< zu7@8F>qVO#6}#H_oJV?8tMMEU*_InSf0i~0LjEE&a>zDF$c7CFW@9#I1Ct^%upNnu zUeY3vR~uK^ot-5Fb7uU3Po=XA3AM+ep{EDWbfx|jNlMLRW>>8{1WBp?fY01BcW<7k z=FUCSu>Q4X_HQ0!{s$!v>QOXy5>IoA9njaW`f z<85e&u44YK`lG9IZGjN$eR}#c^fk)v>k)rnHCA8lu$YF-c*6QF`?BWcQgjuV(9GVD z8fHhzt~Nf-vW6AKCc`tV9nyy-JWz;67!pLsOFbD&o__|`-Xn)`abKP^536AN<;#g) zG0e=E_5v=(4AkDqhgE70FoZG?mi1rb^WOzD%2cWBq-3xdg{3r?L?#ehHxGNEh@N}F zVr7CTu78zGgBaC;o*z%T9fzuzWle-)C{g|r9o6aH!umg!3S^kI&)Q?^Cgt+CB* zLu*Jnj_@varTvE8GX>$swaF0m$*7YfPepVqT61ecFa2rP%|b6_E3Tuj)*%E)Y`ml6 zaHm>C47b)uSgz<$NE{5**%S;*(VB;ouwEK66MG08ZsuV^-Si0Z)kc!1pwui3U-fX+ z(;s#c78vAI?q37Fu7u@bVX!7g9Vi}9j15+y0*5wL7>hD8=Rh1HIwJbC7Ss(X2qb!8 z2fhRNh2OI?@ z=dQ=ER(|fxf4T{bx8hey%8w@K*0ce4WATxn0&yohSFwhho%=*YLJvz3m&pEje*4)m za7T|8;`H8aA%lG%R;b`OCE2_EaiW3>q{-gL{NBNY)&ge28|`~ukkP)B7@{%QgN90^ zRG7puMBK!e%q{jKVoU-S*kw(^^r|HvXA$nQk3`BWVkn`tiMP$AHA)kvE&>{ z#iXd7d)wodP9wcKLK~JMUYOBIzaDx{o{iXbjk zA#ukxb<)}w9Z51sd)KH&CN|-~dJZK1C4*)zYnxT-3%SIhwlg?Am8H&kym8j8Si7uy z1~*mz&X>Y^3tGD=tVg1ylQ_&)sT^=Ulo1E`o> zn=SNF>dt&xJU|s7a$oZnys!O`2k@o!BY7FLS%+`zc;i^WmlqQS61H#@?0t~ zQFb%A#8NDAt=+f~VB^~UP##T>QjZ{#A9|#65wt*`=*r;|S&i2M%n;gL8^n9k4YMzi z)ujj!WMuU^XohAm9%TZ`-j1whM_9QGytu*D?;NkB(HKyIV<3AK{ZYlDObdxq4mEkq zijL4lPa|~16K06Cmb(4r=n5h^|4AhJ?kbUKD@55KB@pkJF20&YJwRy)teh)8yX&g(u#PJs1_M|>J>@1FtcYCotqpX@fBEE7`Z z`5+q_8K@(4T}EiWZF1)Ns8CfcJd54wPAVx+{k8_4wL;6?1^9KSn=IjIol2elW2mu*OBzzcpoVajmQxbdKEvh(V-QpP4^!b- zlLrE@8r#HWI|CmyW|K6hPSh*ktDYMIst6ZO`vu{{ zXDtTKTk)~l<7M%-)`t|=hcVUz@thOoY#nNPBc01C%Emd-&f=~0Lb}d|1ZVR{i!wp_ zDUQ~+{%sk)tstlE?_?%h&$sczPja-5gpaNp5zWI_c^s|Dx7h2?jA+ib$CU19Jw%}Y zZyl|JWc2Hk??D?#2)*3j#i%rpYg>s;ddvZnKlF!Yo>7Kg7k3a#;+}*c|?Fn zgbkxkAT}?*E)49Njog|roS9MU<_xqiC=a-C&1eKZsMqZxthfadA23{g8Nd?f{#VBZ88p#y4i4|j$@%&_4 zCU7r-da4aiNnnGW!Lu5kN>tmD=;wFoFYrb`_mT^GvC!1OsoUvx-ZqSne^wM4Hu3fN zv?4(#MmGBA26~U1Iem#neAO^#9{zVXUb5+8-Dlp)yB1^S!6KueGXPp=Xn(;vZePqx za1mYL!HR9dCp#?K$rKalCyC1@UcifakGl-Sa4+VK&E*;-7xO+apUZ8yprNuT4ZDNz zygv|{7xNzPN6_AhZ36oZI|uhm0v$5Yf8&D?Uqyf4qwsb^vdyP3Ky@qcALLYg zA~;}Uq74K^G(!@+nh|J^JxTsVBbqfxY`PzG;%+=xKbz4TynVL~ujX2A0~`e}S4#CJ zcvxm}{hC79Cy8|C`N(+w0JeCz5db182tJ~M;L$mS3lG)u#WC=sCC?+C8gOAEp$6M& zC^0tZyT}Z9rC=PE;IJa!J6W^GfVTV9(>|0w6hrx-@rD=N*aF*1&l$A3rdWZH`GGGi z89JOGKEB=oVKHS?drt~K@6EK3Ts&u8-$@7Y`4C?m@%=DjM@1 zg9VNFTE$rykKg36@8v=<_!olm@MT;^v}79_<1&T#ps%AdFprqXBSHAp7)V6LZ(D|b z<#ohjZX?>eQ;6b!R64?M2UEKtqngJ5ra+R_IsmB33rO|=JGp>j>hZYtJ+Ch_|3fFo zLb>uyT_*Q1U|WTsCEPjE58H1mO=E#@s6M9|ZOntI()BsDc<+~jx>5|&k~k~KwK@)= zYhz0kQZM%m6I9GHzAF;9Q6t`Gl)WR-laf7af6rTk!CA8iP%aOyoYEkXRrO)dC2#m? zjJYFliRnJX&jHcE9S`7XD}w+bjC!(Jpj8$DcrhZYhvM-9$Xuzql6a6CR{fzHR*jgt zY+h9Czm7OO1zz_?#K)dY6zVI1tIFQ-UO#-z1-N>+>KtqxX5XdwU&hlB`syK6h#Q@z zJd&Z^W-NEP15BJ{Jh#7)P2r7z^s=zrY~){s-aCRl93Gf}MMQcp zi`SqHg2n`h4Jg`(7Cyx%$)HnZV^xGa{~`djl0mD;I2rRWunc1>H^vyV0@^sPSn{-5 zV!wp&%S5$tE$=A<7y&A?s6yXBaC9)$m<}^O1%#X^bGZQOojXtwAlH~w2{+;XMr>o- z)%A_?kVj!Z=i-LE9YVBklT`Y`CcL)BSoj;V=iEj#!g5c!#;U;ivv^iK13bw{(-(+3 zO0==HHd~}18M8Mf(n9b$fNV_@GZzbdkGRA5uXJhtx$3q6FM!d0sd?b$Givs`9&R)N`_LBiRw(&xMj)%bpb5t=DAp3cw1^3 zFgM68HOk?l|Hs~&z*kirf8YsgRKg8vH15w9HK4qyg>a1_oK2y!A%J)9{o19mxHXwH7&zQt)c>0k|L=`)-11$h>UnYYHM_$?ks z_<^vfnp-&O*UXEDK~_KGboCyt$L?DJGGr!C*YFBqCcpR>axv65|H_kWg$`083GJR?v?rjYZKcFxw`fX~ z16!Pb*Kv?EC(@tU3YMxwi{Zoaa0KX=_%S_n1nAB#hSc26*%#iGs?$l1rCNecxQ?a5 ze5gO=RVvO!W{{gCWGvg!D&8=EczR{=3FdjjyFr64GULOcEU;%C=Mjv>%S};m09QWX zTWqK|1`@Dwt|n87N-)&nRH7m0(GODGIKQwdn&%j?*YJcsA~cUF$42Zc{K6A9A+$NG z3r}>92)!kfKO-o6{v^C<8?ha_AaQ#cP5^DFLR?4eBX)}iTl(z91KrNWQ}MzLkjmq* zsxCVhAQnL-)UGb92_Ec;1TD8M1TaSvg~vnFZ%80l^yIyv?#?oo13dr0wD9EP=spmD zY7J=eO-JpPlV zt*nBaA(iJuqElCVJ~2T7I6|P zu+rJ50H2O7A?gtfGYDAnrddAupmVy}uZ{ zY!9+|XfdXjdJWHoG+*jX(QQpcnU6g^9$(Tj5d|rRZ6~6PxMJHAQ3gEJRwBwjOC=HI z1xN-r7IRec<8G|9`VvMMrYi)03yCOa-xx|nDZy9pc8yL%xfCr#<8x}Zkce`@?=;h3 zZ*cYP?M_5F^0&0O3o$)yv|ro}=6K127sLElQu|OB%*v0_n}<{Xzfo#dEf>g z{hqqDc3ExMB=u09900QFk0}M`R3$odH!R`kc!g`ma!aOkECc1oC2#dC<(47i8k6@& z*Dc45t=bIV{OChxsOO`d01>5x3=NqOIwi@PV{ZmHcXq>mZaQEAr96y{PA(M zA!mJI9H3S5+x#EL0u z8y<8qwps2&E2>hW)HYmkR9K8?>g#;2@y?AXPmRIh)Cud%+mB(0WZ*Hsw&C)*GRZ9B zl(jn$3e+}SD7Sokn~WrUlWH4Y2@!@Vm&UMyt*UK!{loAIZn3uEIe5xjDQ~&9;Snt# z_cO%ymkhDv8F+hXv~nAg#PYxjDoO11-XLOflGvW!?M&X@)+8}*f0~KRH|K3BNo?3F zTJBEU30`JD<>s>YLeKf!;@a#K1pI`7FBo$lElV1O+QnT*s7QHAdJcgkZqN{@!_OF5V9SL zhdi>ink3en#6{9YizKlzZevMFVil^fa0s>}KD9GR?17&Uk-G$r(!jt!yjN>UVsE1t z82Hwc#F#M04utJPR1bPd6Dui6?76=t5vv19VjlwQRBiQh+e%6j8>idyLN9P=swAmw zIZ5m?G?gkz?3ovJw~7(K;Zbmv{rN*l-4Y(i#Y3PTM5jfPSax^>p1g=`-n*SiV%205kKr&wZ@QKEawewQU?>9c(`hcB(d`jX_vIWin)p@ zFDX(&4cx+Cc_>Nj^j@B{Gq8HgNn+=J(v;$)hMyrx?C3F=z-P-A{+5!&enY|rX~-n8 z+rGk_m?zY2DJ)ZJHCN@J(*dr!^?@X=DvawSu}vTyI4fmFrAiWeOmH1T_0MS$?83lc z>`X${c1l^Y&z}&_55}wiv6xzn@LRz zc5ac>w4$eQiDDT6G*Tvt^$a6o9|J64yj!&1X-}fqv0dAw>2ZBp&~$2#_Vz}Hx_F6VGv;W$Mn%$`U26pr#jZbLi-}@a zTt-c_^@(C7=WcbP*wWc8G_;IZYzDeK4M6t&& z7e{A(I8kg!7dKJt`q^Hh*sce)KT&Mg7eDA=qS#+El{DI)plvN(?NBU%M6nIC1ExiD zcHwp0gym)q{uoykOcblE*dB>uSA<)91JM;+Vs_vVj}U%3QEbD!txpuQXNA;ILB}!j z62%sVL48}%;m&!WP7Z^5U@Jfc#<`md&Bnmu{LhroLVF@xNHf6Z2%^z@mW_h)Lb0)4 z0IN4{)`@Qdn@@u?iu|F9pM=6atBlxR_~4WHkALL|g2GP7&@4njA@8Y&vjR(%go$H) zaAIJ8S+;b)x0EaIUX^D0%H|Jg*CegOzPJDJjJ9o#k~h55*?#;peur)21)C$wl;^Wy z!EEr!){YAth?{C9O~1}=zz;Z%$Z{eAK6rB5Xt(9-W!dAkd~I^e(&)Kduw)_32lZBb z_&pqTsy)u&+Kh@1Fhre?K^l@(6SQCgH&WU<%B?%>vMnFwHbIc|z>d#s!&mTJ%YhKDHBYrq>cUfdx2Fqt33AA+ zKm{;`L*Ot?ccIF|u4MO^wTm7>U5wUF4}9aTRBO_$K0VO<;y=w!I;lgQ((?4chAUDk zu3ewhgq6jePuRf=6=8X5oaY!}CRW8&WYZQ0eX0{USx=qqr#csK67Fs3T)^v|(AXrM z3%K+SwZiohx^u@I7>&jsu$IH0&n zE9V0C45MKmLmd7~>6NL@1Y9+RE01n{ zi{hvB&F}-m+%o~oPEL6q;9aL|;XJ^b5#v0s=^FA5s(Cb=jq|EFYdDj>V-#syC;GuI zK$uhDw7!O4@S8r~Z#Tw3-PX_zG?9ns3Q+avK0BW~5#EV@gTK8GrfiB>Zunc;I?=Bh zU=TL};K399zWL@pxPo}1-@s|!iGI)T39fACiGI(o;BunfC;FY6t~kN|1G>@b_y-`R4y+

    I&W_7qT9;ne_P!FaA6*AaU2QfheYN-W&b2_~W9j@%~#A$)d zuRvu7Ne4(>+2NBMYEG}R!$l>uUj51r7gFh|$`0cYwspJrwB%l#pr4KgDmxqp@k~|O zf#rr)qp}0bI@F3bRb?F-u5N!#hYc5mYdQ?M9E{v*O@{*z%;(i~_{%z7(;;_$VIA;D zuN=AqQ2BWZIt&4xDGNH>bQus%9lGA43`6r&EwMGt*=OKAZ)>;11s#^UkPx)hCncn< zDd^A*Tcs%jmX5fY22o3sf6J9~XDer#EJmM!`OLp^RFcJF6leNKH4_QLSc%`kjb*n4 z0+yb>iLH9E7}a=$VTgwY!w^yXUF_OckErXvME5B>Hs=UdIELGIHGzjcp598of(6(t=@bZspv5(T)ZzB|fUb%hWNlpM7+ky5u@MmEYvB*asZB^@9l5;x*~z| zTjbrsET9dPM*uzee&iUYeVqx!PQXf8ha7xWY2061NaJQvAS{B+jG|{;Y<%97yzE3B zaEMwSx zHIfUC_;3>+71+WgkWp*BefKC2q8V2prrMIEj@0u=F!I$VAp z=OHQT@a7E8w}lz=$3r6ntv}!`RmuSe4InEEdF0VH(bAOy-2P^tpM_NarePj}`dl*U zGR6Wm1cYjFMK$amNo|KA$QBFI&pio^CET)`41l~xKo-`_A72YZ!(dS0p*!$a1s(<^ zfeH?VF_kgxG8EF=2T7y28b^hZb0lr&WzRAYaTdlMi7CE*HewEZ3`KdXjaXMWTwzsV z*h*170mx&}T8z|3_NXghqr@K)=2jzx<~UNof+K|;$Vyy_^ZsMRE(b`{T39PT7Z22R z88*3f8Qh}FyL3VQ9PUZf&5Kv;tFqyk2+{Q%ZTk#t&OUn@!_3j;KOp{! zIf4b&2gN&lsz<`PpLOrNREMIxe;Bc67=;CLN3BMoIPAbyDE{wRTcmioOYvolEwdJq zApvm96pv?uczYM7qB#031J^3ykL0`cL%esB2)~aIo|t%qA2YDwLXYCAeu&33>;i! z#1}5dH|I}KN~ZN%_*V=s8Pd5DH?dJn0B&A$pW=s+*IXUeq0UEn*pRC3RIZZe;WeF9 z;tYkxMJwzT()YnlldvmQ7=doZcp|4QQQXI`nel?InGx;>oV}v;iBWBUqmjAieF-s9iF-d z_|<8o)Et<8Boi%{LV-UF9Uh8gE2&MeggXwZuHUgB%*kE zc9^`b+N&6Oc1$OpafZ^#x=Kjx`HRIQxrRI(c;k8Fw-@23;@IbibmhHx=F$4i!v4+K zzsGA1k5GjQvtIMX*5$x#P?O2vm`eH!syHbVrqUEpW`Xn@1y-yvvyd(SwL4c^o9#Uy ze|UnN!l}AqJ)nSds`1_HzF48~1P_Igb07x3#C~-bkhc=L%S=>ps#2Mby`X5oEne-8 z8mqV#wL6}b9Q}vXlqR!svIqqyv4gdxSA+z@c;->3YtnIWo3j&>p;WDnS{JM03!9@m ztoQfwp)-8a7_pD>np?ud5=nJ6nn#0o?OiV6T&8r8vZFwefC3Q3_PK&Yk<=4)Qe6+$ z0eY=RvVI$Lf~SalB!l|xbprGio4Ctypj!}-XtZ8Fpd^iUtDxkS=@?=xTVJ%p^Q^LN z6;9#lvXF1c{WLJ}_*r2F#=KGjlYIhG6TsqQX}TkWwTJVN)Ef}Bhl10r%u!&y+OWTc zxnKn;pp~g#SHoj6k-`QORW{UktHLOj{M=&Lg_vq4rJM{K7m}0eiHno#YZO_}qorDQ z*ncg{eXSh7H)l`9YpkyU8u*-mA;gPhA|v(*Oi!N-EL2rtitIcjfL+6HOosirZ-dOQ zs>aJQi+_j@oFDsgMJ4m&dDyB`mY?;mJsmIkL#>TQXj{JTvZ69hrAAhR`k5lC80xcN zVX5+N$qd!)I5L!2qJAqLL!sc^#?Vci) zeXXa+N2#_F*qcjq|7t8Z4Kg=5H86|pL;sDfAfDEWQCK297K0qtnM^`)IV0Gath8HP zN?Sm$mE%cgfs9RP*~0#;N}e=!{{X&^+!m{n>_2aQ5;z5?m(SmC$MoX#!7;7c_H%7T z>qV`3(8{=A(G7^!7%EyK45@>}70xP>^Z4*XIkmFW6(WVV*8@@#H#VSG(lOw@@8Pe$-1l&&=dNutj~bj++2i`Jl4x- z32KvrI1OrZj;KxNa&Vz0W7Jw{u5=;}%Z2(4yCS!84$h4hR2QWMP!*9gfvQH(C5(dA zuoqRU%+nfrk@e4paq$F|XlmlQlA|VfHKYeYzfh4tm;P`vN43~mqgErQoXt^{n<(~f zuKbXtmI~&6#=1pCJD^xrkTdqj`%lUH7>{znfCfkwU;s(}0R376VkL2gg*!pTx(4-m z_;#ZECnt+C`1F$+R}@uYpzQbBA&EXnh!)J7fc^(Mb!Y)=6`8Oyy9?INt2hP)w>Y%U zVbJy%keR+H&2m8~Xaqoe2{Yvc4EGcmNHv~1-)uMKc?OanVI^TKe+PHAZYl+_?%}NF zNyw?UFWkyICH8ErliR&l;g+tE@m9kx>;F+onz;l$dwd7>K3sU^B!@q_K3Wpe4!yP! zBvG88L6WDQKC{Cp(*7KYg>;80B?FyQH{#8anq0u8KX3tSXnrt*1L*pk;1BLtts>Db zJ~b!l=JZP7nKL@v`ylt1lA1faJ-~oZ2fQuxAibkK5OVnZ^_LMoe>Iy@{H{myY$$`qpa&}VM>cYd_`brNR zMEkU`4j|T=s{T+tit^Y}gXnK~Z$J%xZfdxeWt2`K5P>)oRx2Q7un9m7LOd-DF$a+A z0iqUH8`m0vd#kHq%{JRU}v0oIg*BFZf^s1J``sT`CQR2*GUG&Np~Awl&b zO+X-Me-Y~AF|Ti-k3j?<1&U>nhQrY~PAx7(z3_Y)A6)U-%qg;FMvAPGT+`olvijpC z&mAN9>gw3!6}^_cpUzoQ(0H(WHX+5jr(X*AV=PfJ;31< zYsOGbgMzGtB*bjOprPv*>>HNaODOIMMaE`{4`pubukXI`te z4;T?Y_5!Rs;=4(bv6r{tpG1jjQg;Ew5bs!X>iQ_Q!LjkdenVCCcB-Ls!snao2JG(+ z*ZUJV-`pz$j@=4+HIplwbY1sP0a|1sRaihf**PQpwy9`oHC z6hkko7lb|N!qATmaUo;<2SDNq{gr5iwKzf@3XAhO|H{dZ4JeWr?B@x|_&{;Be(<^O zmNa~9py69fQb|&KA#EJ&ccC~Xq!4${-5^$1s_KvuqH=*$qPhUC?xaEk-`j`Ab$rT$ z!an1{sVMQb%06Q{<5N)o!RG1>2n1S5CdZZ7z>uhw)6B&9tWeZS0*<@Z zi&M?VSg5F#+xRJwZOv3sEB~BEEOeMx*+~sor|QDg`ML}02u`mHx2czXcSl@>*i|nIYAEiIxXq6hleNH`hYrgu=X90h$oW}FMB3wNP z*9hM=x(OR26rr+&Z;tNbN2n}TuPnzawWKxZ48$^=or%r(`guQeGZJ^nxMe^5`La+^ zDKbQ`)}d2=po3!!>JiQ|=Lk^vn&9*HdAR9tOV97SS2IVB!c_aR|H8zd7+-B7^w~No zqi_JWQVN$u5el;=pV{%ycC)ey#5##4CP8grzxZ8y)0;A%XU#9n88Uy`9{zA3+^MYZ zqV&?q(PQT&vDMg|y;m`3aCo};Cz+C^k%mI(pc<-AKwAPRcHjxr0EGwT zU%&wDzuA5wm&}SYEj=wy-$|?-(C~8_m?8ooY9RIIgWSV_sX-Eyk~#Zs31<>K15@Kt*+8?w3`!Y=kuq&$a7; zlRcqThB3(P`)iEY&fFwQbl>#hvNR_XpCu{GQdQSB+xLCC8Q=pmgGy_Q35xO2P*QTD zfQZaJ-3V!+y2T_Q;26jaqmhTdawkomlU^nVP{u2CC;JmCjm0Yasq@*%02c8xbowYB zgOntdWs~`7a_g-e;I{G%ymUS($4DzF(&!fAv6ijK6e4}WnWENjRu9Smtc~{GI9Szj zFgXSjEE`I(4_%GkCwKUd^K^&z3w8L#$w?jd(jI?8w_4&NN5VRn23tk`DpUm7Ff=o) zlu##kct3ib!@HBOrswNf^RF4w%nslix85CU_4Z~}(oAW^h48Bbs6H__o|IAKYf#2@ z#|Ojv08J|A$Y8JcyS2t#204;0DG*x#yFe4E1@D($tEqGh(DDcDZk~dNyvG*lc`@!d zJAL?YqI=}u%kU0{2&>68gCgjE+T=A|x}>ijl$-7h#N_G?R4TNN`3Txbja>`0-k+<{ z>PBAkL^88Av?|t-bn!6}L`Xp*5sWH}B$YL|3?n5~l!Q+Z#aggD3#igcD0AC+Mo909 z{yh`f{eb9;)Bhek1K3Dx#>n-PG8kgHV>$IJ z+zKm!yFO~a5~wE5tt)|)38D+0Z9PHsZ+C2;1W_`;M*HZa{?jb3oQSE8LgC>bMsAE) zQ!R3ag|=)s6nyjUze0RN^|d6uvdfx5Tsoyy4$39KbH}TxI9bjx6}uAh&|9S5E`AC= zL?u4B7n1PH4#yB!J6eOfxyoZo&JWEE4@X656B8h$V(GAii!|JVX)1yRW`K8glgR5{ z4uTz-j zq~TjBG;v*GiQ<`sfnWtA@c!ySIXkT$v?qXVwBP&=IlZ@G^2D*&Y@lG?PrZ!4_(YkrvGFV|t`97*-;fMIqUJ7Y7?g_JRA(2&0T|j=9>psAcdAY1P0<<^t zVqr_HdZ7l;oM=Ljr3u;i3_MxW@esO03{_h}!8)WT1nW(n?&0zpy+iAbtU)ey;DF>I z-0bibXQ9LQF%%)u{hz;<%vir$j~(T8>w8SuswwfYi2Do*4hXr6 z-x`)>p7#buBHXQp+F-Zrz1gQfvNK7ku|!3s#@cWVdL-`+WNQ!gQe!{yaBDj=)+2d! zMH?g^8N!VupR+>jxQI5-q4AV`gV-QcZL1~?5TnNUVZ^^4rPkMS(t30D`h0|`nY@+Y zi2xXfl8h+4t{}Y}zKJ*pryp)Zi6%{dJt{|JIKAb~@#y@qs|WW^TRphfPFNn9?(r_~ z+ACtPtgg&J`$v!^5^#pN1b~g+CXvFKn&@6$?+#!xk>KtOqz@O@*>mT)Iiz)_ zrH+i}9st&O9v>Dr`3INpyG91n9{Y4#WFiA7D|q^mibREQ3%+<_ctI7b7Gmxu!E_0J zv3sH>l+ztQFtyiHbeA5gO@Yw}6&Q>(0=sN45;etSzhRzCQpputoktMT0wJnFBWh%0 z)%fVg`C-QF;rx~lS?h6#eZ#R@;BLbq&DMIICww4GV0jNexyRTy^a;wQn>XCEAD0FC z*^Ty2PlD$U6BH6PXcu#YDgY;Q1R39Xo7?y)mP>(r+G@O+CR<-QM}!#f;uF;Jq64|H zft68=a7z)vsD_~8xQ^G^S>X@(oB{rTzjJ(t@zNqDy*xsL(&820HfSIB57F%Sl+cpa zTD6=>v_EX}5aXIefBe7?u?RmH*R04=*QH{vuZcBb&f{uq2tqh5sKQs7+BHG^W^lZ& zSc}`pM5+V9*T||R$YAPBZ=-j*n6&foBQdi2V*w z{Wkcr3mxmZckNN)01%tjcNCcMQz1^@8?op3vgApsBRsN;$J2NAz5R#N*|Gs$&F3ms z;yDPx20-6r%t$m5#dsC_waK_+%ez1TEqb;)D5DzmhEH zS9nA_;Dji92vK^14A3mYRD#muf|Lvr2{3(qvJWn{KbKT!fe*$L^|&~v;U^V90oRz3 z;DHcuk4<>jbEm}?^C+d1fXVyVqXRNaDT;vurtWMjtBJ)(LaXvBVxN1QzjU>=v2;^|NJz4W{p1L};& zi@MF-ICBycAB@-qeC#-^hV)}*Jl%Y<@AR^1=T5pLY7W5mKv7roN%=No`uXO7*G#^3 z6yLhqe~ZA&%BBMNvQgdUeKm21RYt`Ej46LVZ^lIT_euPHVjog7`_j5)h$L>Z|9;zj zX-EW%eaI=`bA*J#0`V7L zRfzXch*wzXkGivy?$U-^rArl~;geH$*6Vj(mpet)f1=iR#nz{q{Zyp7Q-{uLJXrD3 zd_oUHkqK;!$FV&=cjNR@bd~rl#c@yy_W2t2WxCZXJ$%OLJ7?-USsp%9^qoO+M>BQV zIZk(>zwi-sTiWCTqjV)cm|gj)cCzsv{=L2O_~z!cw6Y_eo}dYsn}n06jndV|~J_aj4UQ@j2LKSjWvy|v&I>H&cMIXrqSo5fkvOfxiI3WSkQm~um(pUt^yuc zfe*ELQWpN}YFgMM6{NnRc%mc4(070S7nJjIzg-dEQfLsz-gL=6m?TzE8exR)u8iQ{ z_S5q!0W@cSax`niz=8u&1QT3EMIxiNk%%R#s1LYhf%$Vd=ygpOXq-A~oI6o999yGI zuHxy#IMdOHv086_`L|G3D^A$ee)>Sc*nr`2Rc88x~JlRZ&@iD^qBxw}6+crS^jIFG>`O zdP3YN>0??|q=#|+6@UOw>>m#dD66@@QCjLO+;cwL6`G<8WIDkS~;B>sNp z?nL%Ai1xoBX`41O1u0SXw!#~$i7M6Db;t5 z%W>~qqVJq8cQij3F&oU`r0p5*7u5`iAJQ^w*%|ADsP#jUg+SWRJY>FlQBf*gH(Bf< zvrgan>_&y=z8*50^qqgmog(YUsD*l1|2C~ndX6m{?eqY#Aue59%`-fe<~h`P81tGu zCMsu8YbxhV5Er%?r3MV0%Zv4)-2+uBwodyz4+zQH2L{$z~>yd&cyj4$4}IlqXIJc%?4Yg~jCGCLFBqSlI8{LzX{kZ-Xm@-0!$i?0~1*f{*)e2ft` z6Y{7D!|4g=dAz!2lX;Jkl@>Qq7QoyUik+hnFX?Ml^%p9d*cwjU1`)t*sO<#3eE0}0 zo>-2L7+rH5RCJ=2zxRpF#094@ygMMdq!>2JDJ@^#G=r0;|!! zdq=u5dYXA_%aB1GHJK%Mb%_S0S)xH>^3^2E}xch4=4NsdLcvt2(t7-z@r3udZp5U$$d`;17B1BU}!Qpn_9va)LEYX*0v)2OlkRQ@RpDLlYG7;uW5u_J*AMlv=IcQ~R` zXJ}c)}zhIf1TX)+&;^2+WxM z+NaIsEBGVKxlA^hs8T(O$!N$<_a$nlyZg;~lE|{pqc!d@**Dw^o>v2H<{^A6G$Ivi z_f;Jw1GuaU!U!2Cr&KE(DWzWZfVp<3^EBR0Jz%%*=}`a=2zz-HfB+;@U>&Eyc|Tzz zF^pdJf%5wfM#Z`Vh!6lvy1Y;R~h(elW}$T_m9Jz@+I$U9@Wf# z0nVd$X&_OVVb;Mnjs-+b#3!D};7BOz-YDm33m(mfN1#rq{y05>i@M++>|>~c4E~qj zh#v!q1X*HEirOz}GU1$%MiR4Oz}cm-i4(gv@p$Ny6Ru5p~|7 z_z5eDB{MFjM^w#Lap_5X>5sfgpHVLKqaT4I9>AtxQ?y7(46*1ji<16&2k1KSKz$r%@4*_C!fGvne9Me{hDT$op}GA48Ke$=`G z?s%7#r%Lcl=E+NHTr$|t{)Mb8{l`+s?csssj1b=d4}lk#Mx1}pj0{t95}fm`Fa#yd zXNVfM;xR-W@6Fu-CMOiHJeZr{6XCH0U_R(Xk${z&mUDtW7ez#GR!Sz~S|i3f-I%1< zAZ9U4Qq&6$$XR|Obi$74UOVVH>S$37T^_D+iD6%Qmq$kYBW+-cg=5pgv^Syj{=&Oyq%Lw*N}n`Q7OucT!D=6L#~)hSnxKoy_Gy<#{8B z1LY~~q^6{#u|5kswjReSsZlBz&^;A=fe?{l3gMm`bH5jAX!!0lOZK7#Czqw{kSWz0 zM20>Th7|GuG4+fXtxlibcreU~X<&uG^xskKG`C6wR{IgeK6Gt@T$uLhe$7X|c?pbNOdC03mb-_k}(q^HtL z$UyN}2FD1i1>T#R&R!_2O=~Gf$R!%gcs{5MDQEuItx52vb3CTwX6&hWr55na;*|fy2{UDm!FZ+B&iai6N|)oo1epc^xj*ZJr^LbB1~SL5xWIV zf4dUucePL$1P}^06ePhpWdXa~+CY`{=OBF`AfN>Wgts?N0|-A(^?Pnd+kbWC>Q9%7h7%7>J4lYn#v0 zp|ISI*g9BMLG?r))dLGgP%`UT$nPk16mFb@X;-|9PzFuwIJ014wE}1qVw~u@7emeN zKe;t4IEa*9dZA_xIJ^aJz9C%Cxj!W-9v-|q(0kUd;+m`r+^i)uV( zy88BjJ&e2pwKS>t1}*}2lw;m;L--v!7*bN;r($ow@BpEM5Y$la92Ta)KGdFK2+Jbf zL$4wtzrzqdS$%>bJfEM!hVbS1iH7i-bgq=_uewC0)S9r`H?W9W4++IvfO0fWILfZ_t(S;6&pO7>Xv9q-8UK;?`13XUU#Z+c}?!$C|k zL@xldw8s!lpiilrpKwx#XqnOwodBweA-V}mjdswp_F$ps?7M3`dalPNk2~pj1a-$L zwhD{h)O5XtiyP$$3u@CTs=pIRGHr-{C>ufACVPkvxQ1wr+)2e~gNFx*qfC{yl-D29 z2vp4uYF2Qkjf6nAfAI~mRnE7t=OxJ=1=s#0w4^=is(`t#in~F>cMVZ;8AL{UY$X|@ zt|;vs?0d)_eGWUfRC=j3#P!`n8lvGARKiclevR`Bm}{-S_(eB5-;}aY&Nut7cp3h5 zaA7@0MHy_$tPJ|&-Zf%5l>0Uf%%j^x`mUW?w0(q+xMnhKcm@;&)Rh6mXx+$;f^UMp z+h$jv?dsD=Z^L7ctfoqO>+T#X@0_;8&G^s=My8wtm+Yu^xx+)u8Hos#)S^3ExJf$} z+ORu4SYi}?xg+3h$pZbUB&99z3vRW+&V26zY?R&7!L_mCcX2Y$^) zmV4&u*{wIS91~a)mzixgqKw!6(g6PBUwP}s>noTG**L9NT$NKd;1O$Sz{X|v)H)`i zL{e{7#Ax+4;D~U!3#Ftqkg`IprMwHCm>`$bdl=zmDNFb5Y{oMm+lhNBMb=u>f6rka zW$`Tg{$sKEf?*=C_zHm;U&!|2i33fY3%sT(Gnf+(My#nZynX!!%v`oVV-ICtSW3@sm! z)d=DzupluLh1kMI{m9Jp3D}87QD=NS?EtcoD&T4DDCP=F05DmAjnP|-?>Qi?Y2WiZ zoZ*s?LcwNYjAZ$ zR0-I+n*5Sg(BH@^%7?yNz^{E`<+yNurbUCRxXkD<8i(&>jVZXIuXVg&zLtx4pfN7_ z_-5b!6(0~?=USiME&yI^#52HMmV#Vn%cc0<=K?eXz$JoLK?L0(2qdND zqWjo*z_K6j56{7W%v0-PFTFUW#_g)7Iz^~fwjmD3Lwe-&z+kwEDkv|jTy1Ep0gPS5 zkz2@cUTvgUi8}nG(QR#?63Gch+k3++T|tC8MJ| zX}WX7Jxg$cY}ZrRvIGNs;(OaOR$l2&~ei@R4ju zkwT^xu~DT*lVEbZ6=>OBg_NttWz#jK5BChgV@{LZuN9qK?DR2?Ycr~fp8FC(K~jx z5&M9}Iv9ufY)3WSl1|Wc5patAlg-X=d5sXZ>ME!LT!mLJa*^Q7Va&Zp6yEy)O@+7l zzGQ{>ZhX5aymd;Bse!?TlyES*yNRfm97*a@uWK;U#1!l~j+fXAM#Z@*USw?-Etu?( zvl=e3u$H4{)*880J=X+1=VC(9n*anMdZBGi=L;Z@8A7z+%1<_-6TXn`O4{b-r4PBFt z`U4g#1HR7GZ|FEy8xh_{dxV2Tf^hmI@jW*;h`9vc?Qx%q(DSpn$Ugz55c%c!4t-e5 zOL+MtXWX*y&PVXhu;3o_r` zGG47)_L`g+jdFrZHVHK2*hc?-(wrluf%d|3HmEV3$=-Ewxr^1*&L@yD%>HfHEa|qQ$v)8wty#pwN*@i-a3wsiu6E5d}73NuuNbZW?@rS zFF>(eOS&t#KWs$9impg!hW<))uYX33!--dI%Q)12WH&dQm1>-GH2i;Gxh?Rg06utw zTFc2rC$wp9h7>QfE+++g{V)DY3dO5#ZnXOtqIhKj*|Oq=Tg_;%;{BCYyzVU3ipHHC z)VM+G(tHAAsaZ=@v^#LawoaZ0eCW$FH@Ef#80t6j4z6Bc5@m@KoUp1dyPKhO_&9YX zZi`yfUE|MN(2`m`&J&+DA`Vt69eKzuSFg3IBO4Bejy$;)Zn_E#L5;OqpTsrY)0A_#Ai&-c42qa7Zo^br9w% zZmr@kSsfg{sf9Xt?Mc_x1Ti~At_^vuQlgf1YuXJQr(UC0U z3>VG3jk6IsUv?1pwfgRkeXZV5-N-gcJ9@-9{IJaIGH>IE$&5z7kDhKX2!u8T7Kqg7 zQEL^IN!1E$Rk*Qqe*qoc$xIt>nA7|Kq{z;)Pw`s329K%5#-MA^S3E0HbhU^LV(LmK zV(`+?ik|-|kBv&ulpHGaY_jo|vV>ch2T8Fu+K`mVr{Q>XJB3B(nVV{gS}t56d?9u; z+oCEkW3L;re!#_fu|a8oU{YYv5~f=K`12)Yg*v-}%tiB>x|i*?oCyg>c2S86l8`VC z3l4J)YX9LG%srV`WqH0>dvv)FNfBhLeJDs_sRu49mG&RsYE8rWxH1gJ=vrC#ABctfcMJJ;crrE0pU3mYjWzj^)%oQ=!PUQ%2j4%=cjFS1 z2i_^iYgCDP0QJg3=mHf!g+RA7e!<|g;@HPV#RxQG#xr|LFOX5@oPs7>7`cQEtBZ># zce41_L0yMLDW0~(cT2=3;u}>s{kF8liM?{psa+K-$a4W)LrjJjm1(0^U9Wv83$J_8 z9Pm8*8&cbO7-NgsIR_1Z4Uhy-wHCjW?XjF$FyMw@7EHzKh+7OY#D&gdzSLa3%?vT% zTkr!hNg7g!0g)<2#%$)IuZebZc1AiBpF3CGT$7)HbJ||EG0?Bz^(3k%TfQyFpj8U0 zNzu6kkmKUfgzx|raFW<_Fevej1NK~Cz~JJ26JLi|F}mVGQa0Gyh=r%!Bwnug{xcb@ zzikSM#!hKakRQk`*Plv`Mz?7M(?cZf2Km`pz{lIxyASpO*few~wcb6B@g?4#r`Ef* zXi4kceU=CG?j0OOy(Cb!1J@G1-d)s7^zLcb)p#8ABB$nLy}Pz_{I=;`Z60U?M%(@k zzjhUF%G<$uk}WkYIn?<}hc#^`2-}*b{gLAp(6l@I`aK_y4(HY1%ceru`SX=xW*%_ZLko1FcQ1@_Uk0Y!y}PVPB9}w?V~vV-XCikdvs6 zR=V|pM&eD~x)5EV*ii~`^(McKhalOUJ^9D` z)10gDoAx?s^-At(MZH##>H#k3^|7yB*U`Y+wml0`ubdEElUYhTocg8a1tQj*z2t}c zsaJ(p46Romr(P}DAfsDH9Q_HD`iApV3Wakn-l8=(A`@CAAGSHa6!6PJas8!=3Ld^5 z(3J{+GUI{;E_Z4gP`pW679}h`BpxwDub~uY2Om)o;pBQ^VC!8L%M0#?|j`Py6blL zem!1k&i?w_`#E@kg8vB-3FZWk3mR)z73g*$NO~v)_Y5O&DG*p4<33EM;6aV8@VL>@ zgrc3?oZaw^5Qqo3`3o6@;gbH_-AH;a;yZ)%KJS%% z8sfcIzUqXYyGv71Q(u1)LZG-)5YUS*l*d1$1LXcTM$t$wJ;}8Jr2|L09Z<~s+l?Kf zU>oS1e%8|;Ya?h z5#TU1XYbfa2>5K@-$g*Nz17e;6z~yv_=C_8WONb&{$k`X7XdW{*RSs!3iuY>L+^)p zphu@5pj{F3u-#(hVr6CIVqt~ihgetP|LwS}(hcqTvp1xxrio#5`oAk_=awhKzpVBQW|c zt--J6n%Ht&)X5uf!B3F|3nQACGZXoM_N?A4Mz>Bs+rSJtF^Q-8>O4RyEJ!C9?>=#mj>y>cdV zKb$Bx7F92U=;zL zfTML&l^zmD>pOY+&Q2Z@h5F8ZK_pNjbG=032*Y3lWJ@J7@569w_L8UDE|Hl}!UAJt z(@tOD@x77N)5tS*9-9mv!of^v#8bw3f0Nj}cIjg_r|KrX(ieDh;vJRJ_tln zECm)S`JfoJF)y&-Hutyh^JIsh6nl^F*iY|=y{vgFD1(S_+Fykrk9kY$U;=2){_98B zx9K6b5_QtUD&c0Uirj?MS5ufO)?dEG2FkZY2`_%5RxB4kIKM>9EO6zc*m#&3E=h+f zb0lUR>C`V#kBctE#?%2rRa`4qA6an?1HoTeajjZ?WW}{5_z3#X;xBz9kRRK>+>{O# zTr0s3&ND!!1y$ibCwBC0i?FB>z<97j&f(;8H%I>~dtWQS46^s8nE|pZ+E1mOB`Lwf zAlyh|h=7*BO=zLg%+QLo>6b8jflTeUxA^{_;4PQ&Lq-slxOVe%!Od^sIM6>qonfCtgRlAZO4o(qi5 z1=o2!2lEgln5PC8lx9fL^INE_RgE&?g^D7iB;W_sWY}GOLQRH|{1mRqa2$T(24_Az zJBB6j&QW#(QGVb{G zXiyE`h)v;)9w-ZeQii8NxFMbtCQFT-p8`=wvilTUDlKZkU&J)0ImevUTRNQ_536~IAmYQQ5 z(m@U0o%Ey?&HL7he75Nq6f37v@kcV#?@luJM9^cOd-}`hy4;h`dvl-XxQ3>3cLK(# z1$@Gle8J2yMaSqF^DFy+yE*Mvk+5pkjmMtGXTM;W6bXBUZ3JsLWcpt?9>JkQf zW})nT6YTs{Ji){5S(@Q=a)4i&VGfNMpDzCr4j1IWCc;{7Nig!cPZv@NG+4`vC92h! zJ3&(?{Et^T z(K)C2(4f#1A|j2>!MvkMt#aLGO5eO(_X+&k#|;m0bKXTi(;~^mZCWS;aRpY@yg*yY zMa&l}sxPnVka8IcHuBOwsX@@sMYtGqqnK}2$Nq%RO#AFQUD7@|R65Un-6%1%NE>a? z)2iYFw5ljA#FaE7?i{HWD;UPC+{9_k9hMb}_)GZ~lBGCqlrFiXUIe*wrCxSPMT?JW zx#U9NQgil+|AdbvQ9RRryJ>GUBkK-8+mDKv2A>l6;p7{S#~Ji zP%nxT2no&+$hW+eD+?^6kE9hlCo4eX1iGZ1!!nvB-xgN#(r4ikKBAXesBs|QVzL}d zf+(vk@I8~LK_+QmEyzf8{unH2p}h!YN2!=*ypV-)P)XT!e3(hue#Ho$&zv9-bxs>X z+VENA&$Rx{s5Z+sEtIXu%-+Y#&Yt!W!v?F=0=cbP7m0xYW-p6Mg0?)KsFI(K8YO{e zHnfLEP)G@b1;4 zXcQ4hyF#jpOsMph6*~@}ojycRt&5;;s__%3L3CSN&^>=nN(5iVn{MHi1@gM!3iheQ zH|HnZcBd(C`X+^d8l}-$mLVh*1iTEpC3rPzy$FL&>kGTrMUrGE2&!oa9bNO_JRL(d4xE!83uZg`#>jOOtUpVF#8nS3pb{B!uA%5z@Ac7o}4x%ffp z5$6ofn{ny8t2=^uc6?H|<6H+L4&zjdra=r7cUsttS~>ZynYeNgC=U%YB4QQr8#re& zWKEk)iaJ<}N60rM1{G$1T)l}KBVCT~_SN@`sPJ==H=>)ujYG(q54?nyU8bM7hZB04 z<2+YABP3RKB%9~g!0K1)=|FO`jJw~RiW?;wF!SnXwOfm0>MW5#($bb<^3@c@Xp{F_ z%mbRS?ISkro#q^@!VT+ySjve!49jWe+OFf2?YpQo%I?~dvi;QZRs{>UO6T49q9iv9 zgTqmwlAF(%$1J+E z_xK5o;h`QlSHW*SVO!u=0zRn8zBqfc6KyBfjQ#*lp&c*FX}X%N08$z z36XaaF=cYtw|x%t`MZUS_>*=*lvgqtI* zY3GE@Tx!{`R(tMT6PVwX&e0Ph++=)TB9@Gb%b7tP&phvG64to`5{U^c2MuB9nfsWA zkF6xFX5?s&4)PuE z##iJ!a_sbE)7tRpahWIHK95x^-e;+cc;*XFhFJa=YoIt+$t`y=O@>8B7ob7R^Ljp` z4ge>JHGCx=rzifcwRpFRR-NxV8IKdZL12m}V9>I{IdKznQ1lU5=p)im@7~21x;8GZYHL)l z-l-ggAR*76vw+JKwa{{V!I2YH98K6lTzlW6d<@M4-Y*MACh<}PGoLZXfUNo z1>0P-Tr*c1ernEs{yATkMBhf;`%2&5gZt>!&z?>~LMQ}ZdOXDaeSv`T@BI9D%wI@9 zk~^84^x57B)#vomxdeD|S%?6?e73VkpeT&MU8_0+0d2;0IFy>>qe7{D7OGqtqTq)s zJJf;B9qoTT7Q*%Dj^Vm>3c)i{19pMTupd2MWETOY<^TRnXH(#lM?w@hp;HjhOTni$?+st# z&l$(-y7{?)`C*Cf=@J?1Q&w~askxUBuWxrZ#}temd+KO&?uI3ph24l#b4_6`14^UT z8q<2iv|foO%50vC{AKi0oQvGsTn;mse+UU!Sr&;GHd#YaR<#h7B!`CF_dT3z@sw#5 zN7UWI99)}Bs}Lswjag(`r(+-e3Vp2KH!sM_edypC;89#-Kly8}D)6SR`B@u{7v>Zh z`88M@lgn_m&CJ1fE4=z-UPsV)=YFCp~!K}Ad=&% zz5^vd0R^6F?1{&aFg&@l^ijYdhyXDBa;7z+uaPyRZxjb}?uzgItr4IT8d9zFXt?d? zi8kKxBl!1Qi8lVrgDTqi)R!p)(~m!!S4JC8)*mvb;e(F4{AWKfjT`u;V;RIH1M``( z^#8+X7xIAXm;Hya#?HF8N6 zh1h1a@eikVAlmqf8Zn`|{-y>tgWCKk{gwD;IT#^Maml}Zqm2(b&>J0enLP&qTJQO` zMjO8l2T5|YapW)`1xwfI(VkB7AUKkqPWU}VcyPQ3DFbgUf83U6-lhzcZFjWs zz6X1qNcJd~b7;L`U%>J9hP|5iwl>;0@0VViTODoOb7se)jb}V9G>rV(r{VAWc{GIn zmhlVkMgI)Z#wYwD(Dks2>u|L3XZr+T{oh0zkMczznR_B3?n$9EwlUiHyB|31Zue;8 zN<(%%sP|KZ$r`ctMH`=cD2JwVqmAbr?y*DIeDGyhMj>cSv@_ax$912;SOrP=2j7Ln zHW{%tqKy}S$I%h}l!A;~j5hAlyRA|9U$n71512n&wDEj7wzu6@ZF{4Qs|u2%jmr)Y zL#qzlg^ffS^ji}N@pD8Qm)^l8mqZ)Cwg^5JdI+b!{J&^p4%F5~8{gN6wSqcXuX$;Q zqK(Z+i)iE3ePy|1LnT4eWC{NiM5yfWOX_Ijud#3Pe;sZ7S=W^7rE<;qx#$N3Aa!=; zgLnwWEoB9vUX&Gdmo}~!(y$$(jZcL^o~@bf{(P(oLA`2MOqg38 zZQLCQZ*8>k3s6L}AH4FvCffLx1*GbKakTL_zaxU% z7Hynf;WNQnY!JeB*cK+(LbUNL_IPJU8*jcY zMDx)%bpp*{uu!9_jEdPV0vv|s?ALGX90b^!LZB%YqQIz5LcpiM0(HOd3<~Jj zi{e+>9frGg^5sTX$%LAy(4=OBWOMeX3p%Bz*h|>wv37S;SrR1(k~NkM>W!7xFXuI- zmtEmU%$kYp6LYz>a#i2l0;$N>uy^S0-u_*r4a0-~z5UwxaJA;`SGK!}(As=N|K>3G zwLgMi8B*IYfIpimC>XUijVzSi)M3F5*@0Rk3G)XXAB!m55=P;MqGac7fB|$--wB9~ z*2Q)i7_GZ89o;ZuH9%CyO+ z#qsHgqn=Z%YM0rui)_@eILM5T%qaRhiG#m#Gd>Klzt`jx=lxhV5rNnYzHTf$WI9^7 z5G}ljXQJ`4#%O$6lVboh24Lc!9zzM8BX9>No+lq0b^VLB9tca6^CZfP13M|l+CF{E4+JfbXdP%b%oJ`n-wvOPg zMFjU+H-g*WwvD3`c`J?IK1U2$z~WYXaF+2~BKw#y#M1#W8lQyN@o9DF=UOv9r{0W@ z$3bZbLzk@B(p|9lA2nCWPGMtn_CtyL(?BgFcAP}O+dSi8uVB9RP_Ii->x71as5K2l z-59k%MGF<=n(X{ZV90rMn$k-90`@oMF6?Aln#~8~qcKL2Phk}KnFZqu&MG+D3s66` zU~GYBe&?Er3nnC?{YMXUbN08tRgiMq3CX8tUSZQ!dn$ZMi^2fVKX(wQbecfY0zl48 z31qtq*ZPcY7q0tT6|UT=?GP^HKNL3k!u2LuGCsbE0_NdT2pJg^uFEnYR3cmuw20Gy_8?qfLojzD`_Q>`ns~xBQedYRu6c7BQCr~w!8dcr z)tX_Ok{J^W`@8vA$0f4s%0sX>;j}{~W@UBgv51-A%A62i%+}9wAvb3a1t1Z#BSg#^ zDQ5dp;aKlNhLT%$Hk{)i9VOV|6Ox~C^Ey(BO%RRq0%-i*>X_J&Qlc{U4FI_!C6Ew@ z&)vZ7+(3d&zN*;%wm*r?kV%AEZS^otBKt+-S7H(w)~m?+LgtWnIfoqa&veWo$ku0U zV}X%1G{fjuSj`VP_^_lXJ|fq&iffFyH_2!g)_!4-;jY%V$go(Ba+WHcNCg&q-!z;tsp6f#Q7b3VyvhH>kFm z1jI22>&HZP_p8CmmZPVjen1k9<84qas}LL0#YiAhR0~5(6xZ3;UGh|pd2BQTg80pqe5EO-*+ zXfSf!z)<`vH?6MDkpjA~S{JBW!vb~Ba494Y@WVa4x=4oZ92ps zHS&UEdgT(cc}Y~Unblo(iY8*^{J~04Xp5|jA}gN^_3}&u5A8VZ(mAY3Az||E!w%UTCK6shQ{8 z4-5er4j}E&%mrn>Hd#2gqndg2g<3N&{1H+_ ziQ!*4=d6%sey`MT|7 z8?o?!T`{KG=rhi*$2)rfLqhM_R+aZNV(d z!+T9wkf6(Bu;?BObAAlWFDyz}@qqdDNZzNJa?R`}*syb-BlVO)Lu7s_$Yig-lqMZl zB%AILcEXC`x8r=)DDOf$UcbB603F1n$VzfjH z%CGK~X~c5y(M&9zi5=d8<=ya(tlu}=GuT~}iHHx)C|cnzBF*^NtZ1HN#5VG+d7HZ# z^WMOVSUg>L`}2I$e*89!QoJ|b;&T;`<1P%(t8if?aiv_Zk%C-^6aJd-S_vB$n7jDj z8HcVA*L2_-jn9Bfhd%D{}?P%vr(pH`52hXqFGnX$*?Jz&!5j`XBEWidp z_|~MpEs&NH83ci<%KVnsXjHt!yIHX;{0u8RA{PmgHnJAx^IM;VtiX+u-Q(nvFy#^( z$O{hAzy7=9{w%%{SEqKwmlCRr0-H)S&e1WCvPk$(Z^$~p8-yurOi2Z}T$Gj)G}{$Sq$u9K(M_JEUyQi z02I`Ln?h1y^OO&wVjM2cbG(ztE}520qnRVwkUC67R;n?Qi-N;J!eHwat92x3%W<^- z`Y6JSp8-(tRcLI4F-@zAV}tm7jtw9yj*JPf#N`oGd&jMK6-5zSy?hRjlY#M#!;EjY zNl%3TtVAWgSXI(F^h)jw&IRale2mN8xZK6-0>v7fgO3CewFXD90MD>a%Cbi98d#lM zU6BY;P65aj)yA^x)%eP?>)Z%~DyB{hIeiMA0mQVz0dOdCXNHHq2g$3&X_vUhz-U)=V;WI4xG|Bs@vSJ zW=={=+hLUv`z7z6l)?7X%_sF~fl+e+oP49Y7A>E4?xahiGp3&(9k9ye<6mPWoZInu zs&g4FP%+iHj5ATk9Qgftr)3b@Cj0X@?oFfAE+VYES>hwmv^rXGRQICglP(!DqwL&^ zCb><|=Hv8yrg*$Z(eg`%OgeAsv~w#qxGD$ei_cue0}uJ8Q9L*O}m=T5ofBTzQlc^?l! zBGM-p7^N%mp{OfA)lN3v!@svz9^c%Iat6)qwCgH?R&D$X5hhT91#>yn3Tz7;k0Ke>(z4 zFOD^hth0FNqMW~YDi2;9$#WNnAjK#JjL)1Z37MxZj+8?edzuOL zu$;N5W+#}I`9PJ@QG|Wyjk{x(%Daaep|qEad(mGJDLiil1ql<(csW-w^P`EOY3bOD zvDg@dTQEW43)eGbRcMAxP`f&1QhHt&EtQ|3PSk`d8W|$nNWxiF)Yeh!o_cF-~Dm<`ybAd-*}@S!$NU zfP*M7E5{~Ki^WI54POAGq>6T;J@HYQF8LIuKfb8Z0wS6KM(l1dxJv=nj3q`zPeW4+ zt(?WU-2w+fv_HS2{hcoRf7p8y_$aIEeLO6IpukMjVBDuR)lgi5O9j^i5}1Jrpe$k) zi>MT<2qIBjki=v(FXLEhn~Dn->rz~3aS4k`4WI#c(5i@9GuoT~UY>Gp zSuhm)J(wSiC3*32O{@i`I5B+y0>RD4)p|rEM7o&?yFfaNLk*RMu-2-$IBWoPpeo`F zK!$kNs3AhRYM#3{laugA(Dvo*C?Oe=G2eo7nyZ!1BAUp2_Zn`RyN&<)X@{}jG_mUH z<;g{RRiPdiXNBV;nE($$7aSi6p5s%buIR+E*IRil4*1MFoLRxNv2~0)b->>vV zNwX31<*_#j;rW0(wFO9&@`E#=P3;Ja7s9X&n(DFH#o~=0J6Hsy9JQeF-#}vu{tDQ* zN^$NLaKce2C#I&Bd}i$-^r`ZK+gpPBhzrYV5ec8)>d;TilI0d40g^=t3K7b-)Yi)D zoBar*pwdtOXpMo=*)bG(<%WU0$xR0&>_7T{+yU5~}1i>R`INLWZ56sK(mRn*F#6?b2Y#$dJh*TZ? zHD|+Hb+7?X*;bGZ_-tLZLr^E2)vV*D4?#3;!WhMbGu38+rA(J&B&l z4sh1#K9u|keb}m-TG$M>cJ6cT7R8#u%P8uD;CHgysah>5*xgE<2Kwa;!{>r&J-ShK{DhQc{MUfxmG)Fh$CM?TD-c?31~nWNnh? z#f(-h3u+^r-F|LYs+UpAH!xSGdPB?s&Z>*w*`HrnqbP<%rha*rPu-1<=ROr%-H!|y zAU@oHJhQglLhL|>*F*%Srcg3!JEC`RCA)3B(Uue{ZAcIg1cFYH!VG@RmP&Y(Z6SQc z)hQLg*`*diZ3*O7h}&Et`OOd&144H+el*WKl@IJh{(PcdSBspiySDt9f~l#Goe6kZ zp74V2YVBFoz4*7Kmzj8@A54Nxg^Qfm=vI>h{HeT&ixw!WS(YP?HWoHgr9 zlBZLXjbj6hqX|ZGZQMoW#6@4@1^1mq)bGLroG(c5TGZUTbuk zRS-gr5L2@uC*6tv*cYk7FNsnf{IxtdDXssD%--Aqb||P-ig+EgIPd&P7hn+V@z{2O zg^`Yxn=b6KEKqe4e(;uYnuov=XE9Zlk!f!WPRO31My|J%B??7;JnU#)g3U{~R1|>C zr)yb4c#=7T&(&w^UxI~6DtV0}SXxHBTp?%c70$fO5-5KN&wC4c-GT4c+rp!EAs-uF zJzsk168#3F*`?`{9j0C;>G!ER4&8*~-Hwn^lo}1zr|7boh-TY*`LntB9n{f|CqBZ{ zMxv`mWr(N-Fu*AjXC!avoP3X>g5nRA>US*-hd6%C* z2}G~}J%R`pMLJe&5_>%8Ko(R_O}DwlUOM0#=H$12Fdg8WedSW_$y8Ke<4{coY(JS( zd=B(LO(yDieae7hPpUF?kJ;~$d>SXaN*gB|^H3m|Pczll*=T^andc^=E1x0385(_1CU=WlPSuld*mnFcU2(v z0?=aXr{TnO6Dzfp)#7Nvs;m|Tw5O~Vg(}@kwpNe2S~ap*rvvKPHyslP0T_Q_K5ffIRcZV22_(l z9#@hRiyf!VTA?(7I@NVp&E{NugW|J*mux9`2mL1>_iVk^3ltkAP(fS)fdWe0jFegGDZ=J|JSSAKdpX3k+hw!nY)8lHdW6415?IA^eLRjNI+t!Lov zK|TPEYZCypHqz>9Tbv(NZObL0{rv;Dd{nD2*tWBMX~c)@l_OgP>uw4Jjchj{#SHtP zC~6ZZv|?2@t!>V~Q=lmkvwff*ElDPsGkio_;9PHHMaW*|2jJD=Z3BSIAx#5(^L=`o z0HEW0UjF?qpUd8D@?K0Wz$Nc4_Hc(`^-kuDJL3WPbAQ@$TjE)l$-b#X<63q8@#$?b z*|cLGShmZEP6^jE!58+KKnd3zh94wcvydMUu34b2wIM#aGM0;r8;Cn$CA=SQ>}5@% z=wxdcbC`D%bW$9!?;AF7tbHpYiZVpYLcr5wiS{+uw(c_ZmCI zOD0q{b)1evIC7Bh;ElBi$Lode%*>wH<9lq8ovbn#wvnPQjQ%U@zQw|R4n7&}5Wqy0 z6KW_Six{0F#!#Fzx^FF7fzQx<>q?1r%HlJLF_WW-`2-T{!tn*;IC+Vtk98 z7hjKeUXsTMsa5fz9Wdxgm-JpklSB`~V{8M|TR&D%AFH6Q`i_Ht=mtLRzrO&a*};?N;9hKdFsxT_ z8wLh~2)Zg~KN?9HeR)SH3YHE6yemi=Mgu)U#{`)Yilt!pgklY!lj1oRjKhbWpN!nwtvxAKo%C3VRh#GN zW@0C#W-<{cYc{T$nOydMvpxvdO^B*tU8{Z%Rr!k5p~G8+wweS@&Qy|L;%^KOcg+O zh4fpi+1+ zzxywK{tb4GHKa$S1H?t`a)Z_+LTwcL@kXds<9S1T14ism_-vIoZ+gYwzo!F%P0vh6 zV$WfC40n2m1m(t{{fQLh2lBM>_(=hY28CLU)iOu56hSVIh%w+JpTHO*%L5fJlhzch z*v)b_Y#e1PB}u7F)|qg$rPn*^u9H?d5Ol@vwcg=&ER*A1SOc-8vTBIl0X{*@w~AR~ zD_B_7xgxW4T3XHHUEwiNJglDFH2U!|?@K9Q)dFVAE@y0755DHcrWK_$aoGGFO^zyJ zb(A#Wi9=(DDh`eFZ+on)DrzOcSQjEDDC#QcZXUm7$8M8Xgi@-76&k~iNYL&nt*6KM z1`-465DTM*Qw9E+D=m1nc+BPk{+O!1+iQT{V@%yE9PbuAmir4F9ZKdra2mWdI zlft0nUSLKf1Yrp+REiWido!kq5wD_IdLYo2FP0%3ek*{y;NiDIbxjPT{HS=w#Km{` z4Rjk4Y>75u2r4zrYYAl3J}h_?J;Pc?-=3x^6>e7t&^_UH3-}fMfeVE^*B@ME#iOuS z8u1L#h|%{(+=lp_Ef=+I(R$Y%2jGq^&UY?;U&O#vsGXMPdczT@VEB1`j3K)WylZ@2 z0`EwVI`Hm=C8FRG3*dZ`2j_qfa1JOX0JmU=@Xz97?(`cn{d5`rn~bM63piL3g4V|- zqDH@bhllb0pj`aNV-W4l+S}7I@O2mn0odWz;X#fzF0qW5CBh6YBB;bXAv7ca!Vo?& zVt3*vt22C>_+2Ue67Q+O#jzNM#1dTJF_T}sm=?h2(YF$O2o>YJA-+yc-&$O(Z*kie zlg?72S(Q(e|k9f7Tq34rJPd3hIFQ=yWJX&)V3TB)+&=J(ppd&QLpjYqA*ufWBzFj zq6-g|4tBLI>lrnhvxuNp;Pr;RTEgpF&GFh(?dE!ljA;?eZ}Y{4b@uMj31?jT8P+1O zK=dJqEpIrZP_znXBn^O-Ne|7#87aZc*Rv7MxSo$`9k3OHy$$c;wKPO@B4AeGk%nX% zz~Uu*p>qj5v5&(+HA2qV)(df~Xf3E|>YL&Or5hWf4k#ICjclT#)oQ9Yg9KO^Ml`4T zw=4m`?XWq_8T>2PY;H4e1EapwR^AT59JfJD#j*!}$W#mhbdBexo9f#eRr}}tp!Pov zVDyHZ@3!{gAa)#rSsR8Oq~&@^dsClR);ld!Aj>(6QA0v75BuU%*W7eJ@MsgT65gOn z&&jVx`pfom+){UY`Pu?mjY-T5ixlbN72s3HIBK4#av*Wv8m*^`;afsRsY|tMU@f5pB$BHVx57aT^yW$U5{AUG^`5PqJ2fY!Q58=D@XTGG=Oi<1OeB(k9lq(X^@UFed+Ton} zEi_U}YB1V|s($z3N>yKLoru<&En_4Ey|1vjdHa_P#pH(3NIWi(Oo~ zK>>>fd15jLvojA7bUnZ&f)D@kgNcAekCeI+j}ahvhe7p(M@ljbIgBVx=KTE_$e_xl zoaGD^l^KY=z8SMx#~=I(L+ZlT9Pce*&AJ{LG3Y@Ds)FbdGc*1dK9YaBH>BU!n|RCKn~-2JP^!9)b}fvI z8E3!N-|;vt$d~uWyQ@VpOJ|?DHpF46Mc=Un$Rg@EYDAs(O1nVp8KBwTM}<9Mq4KB- z3!MzeJYk_ih5oS6?(~@X4FPAmZll&3k5oJ;d*#NCiZ`*H)yDZykyHE3CzlBe6w|FFHrOFJAqn^ zD>q#X7|^lKf?IunMzx9&djIgY87aem%$&iy90uyvL2~n_mR}vrn7T(e(I4@e z1F{;2*7pmxE5ABBV=A)7=N$Jct=Li&X+QMUxEFrw=>7&z0CbscW<8How_FMd*-u+4 zg@kPVs^-zIX2~B&^~v3A_if88`G-$(vgH5fAa0U&IZOVkyMAbv{QDmk+r>Q2_|mzu zD_bSlZ+({hw{tbIHlcxJ&T+qhcIalwuMay}@;i>()hzkz&f}AIa#*!srR0$HX30Ox z55c2(Za!dS$scuQxMIUx4$e&joa;m%m&~ir2!xGc2-quxI{}$?jpgRkXCS7}Ek4zE z`l_;=ncRE^cu}unr9i{P|zOk&&&eQmwir(g# zi+`rl_|8R}QkH;Oe8&hZIe7q?B^^hzp2lu@e zKa|Ho;zGdmO;{?=tfEs0xowS=QRAp$)F3jh>xyDC0Q_8}lN%MX{v}Vly`xl4Fxsmu zBT_-E%($Xg)R+!r<(#mbLcDZ!k>J_<=eAEU+KH=+QJ1W=@5g1mS(qRk@1GUVD(<;y z`dIze$II-uDCNy+&s*{7@8F#VRnQDYa^fXfdzLg!Jpg8o8T)L;2u5c0el;2|fpB>< z1mS|*)#xY?I}Ttqf_J|$vd9n^SiCGNWn?HY1@|$h+3!9UtgHe)`3~Q&0ZNN z2OcaZYBX4^3uf-EL>@sZ21vH7a%&N!(Ag?Zjw62L9DyP=7ETJs_m9TU4+a(v4ke0` zl}&pEZhRijvT&l?S9{fag7*`^%}Q=+;R1%M35a>i>~J>NmZ!U)M{sU5Q5KeDu*=P3 zPW>dw`bv&fX0sGo;?aRBl|{640?Y;lfD5!V8gbMieB2D1L@ut@bx?Pl*4CMSd}N!y zHECxJfsB_913@C5I>rX1_#P?-=6YW4_EgHtcDbjGkvKAt8zZq?AWH87M2~!2PeqY1|UGMK(!bI8_#3g%_i|wyNiMTE+(ojSjEa4<+wUf zb*OaXwCkAxOsdS_Q!tlG8yN zV_~hzM1%?y!hI4l7FyD@|V-X*Z&)z?pTNB&7H+k`Qfj z*_<==u-<^j&C}J3C#DQbhQtg#7!vrxi#-|3Vd%hlf1P<7q+lf89qWf@f>}wEWy<6z zQ-Fh)B58q&4}s;#5@4Etvi{o?2kafPj%v?qkYHw{bvem=cMa`Tz=WV;1<+<;ZKNY)uYIbo`8sfe*vNjt!;8 zc(CL6X~>hvx5Dv+iTe@b=5o2*P>qYb%mV@#s6_}EH_XDVqWT*s@f}1YMuyGe4?js- zh4cc(OD9M{1|{mioj`C6k*DRMRpEKnSO*-I^nT84yuDq9mBIHx9I2!@eWa!j3$Hr! zyWD)ZPYQjM#4lB3Py2XFWItc#71njY1hb1wZ(L2Ug!YR((Niqq+D`*o)>y+qE?AT| z7FB$YhS~)xx5&6gZme&Q1q43{$1WeCLBCH(b2=6fMBOeoH=RJxJG*kH2#OE6DE1-D z+t$^1x;Q=&VJ|X6MU~%m4V5mj|<{6F(C8@pv>3)@F5^VRan-7MT`vY zMU1X_(i(z&|MeH{XiCG#Hpl*`h_$Oh3d7&vIdpb>w?$}az5)fRS|W3A0i}eHj9%QXwxy;ZD!O1M&x{yn-IrO#3%(cB`iQT*bj(#&7Ziv!Vx1Qrk2|h zq;htaTm)7Mv#Q#ae<8cayH)S0w^V%qyw!l=P@xL<>K`mhlzxk9G;)-`OwD1U&#t2KDIBHO7yd)^<#v^!hW{j^@7w6>{SMz8WwGS5j-ByA?l?%S$ z`<q>?fG6(ECfgVCN1;ZtM}5yh%SoHO_W7wjgiTC!egSnnn#e+F?BFAckL zCk~i+uwyP7qY;{K$F;L{XjVMC=kn@Tg71*Jrd;y+!Y<~*z}UFQDP>*G5Oxl$aL2cEFtU9QF2;($zjD0N_=+phWoyrJtwX3T~+BOm0Z#e7*Mr8I3n=MoTh%(8xJK9juG7U+_)8ciyd+k)te{xNvpE zI47^EsJ=L_QwElPP6h)AwTMb%8*eA?c!=?9-knL`N4Qfxn;y7_(_Wjq|BBZ-3+ z$RJOdc++FGkZ7GED+h>V#x+E!OR;6dXA&LfZ7u1=ylK?C$zoLajI#i$n%Q`11HPJ? zav&wu3T{_vJnVKQNz5_7zaR6dm-(Fv$)%irWe>lglNKLrIGM9_FYF9y-Z&5SSFAH7 zXtcTGvyZ)*gInEcX@7r9m!lAyOX^s6_e{R>>*Q5$B3%tzE^ohbv*{z1a zX{yxU)crr8srGhLB->=p*{yHNL+T=GuMNSa!Pe9i-rdnR?CrsH!&W=#5z4YO)-GP( z#O-s`SSc2!m!t7S*7lvg`aJ>6oZNs~5IqiJWsD z5n)uPh0%wm2&1}q$*O4IZDp6ykODh|84vVaHhq}qy)5TF5jPLXdn^bh;-(JE{c2ci zP=U8oV?Ri@hA5;0Y%W2MtZ5u!pj3(bvlL|q!@r1^*J@LbBTsa>FoZuH4C?uH2ci)a zJ62IFi?5@`^+N%LPS3C2+R_@MAt}gSIo(tRXuC^W7$i!_|4ug$a+^)9Ia)2N)Wdn@ zm{R0*V5C=yUE^Y(UE}wBF41j5d%svHo0wmv_25PRQ(9q zbaCTK`)WF9yV=kdHp5h3KjhGa8G_2?DB1 zlIzUkTeta9G*hGK9vl-!pWD*S4g=9arJS8=g`#Kiw0GXunbRzerhBQ+0z?A=Oa{t8 z@E#2<#&f8m4s^1uK>6pOYG_1@*?vM04s~k*zEP#-QHlEYna~A>fBhJGD=9FS-T3Ve)vS5HMq zaUjPr&WLWuB>L80<%P`s@1YFVbb`Xr*oNUuYX*Xs+qbLlm*39%y~rHT#F&LcVBESJ z$Rn*Z6D18L8ltDbcV6@^H@gC&X7(4M?LU!6<26BILZ#KlG%87=0&dmB0a?OUdjfW4 zI4bZNjxIpo5!aDKL+zMmP~4C&B#X5P$i`jt)I`juvNL}=gGc^h1A+9LxTg}T&= zqrMmbgvy$S$YkYk{J{+0U-KUdtyF^J)ZWTULH^YDolpQtgPMB_93 zRF3r-eo*_4kEGatAj{dtjtxK3Uo*px(6AyS^YBUF+6rP!tqs`gV47s+u%s7af+;XH zYW2cl^^ud*nbYSsBS%;fGZwU~Zojf$N4%C%-48ATh4~6*ye|~aU7l9>RGf2Nw)78 zmOZo6Q)*Mr6G*Zt=gi2SS1dqMUS*xR_E`#d)fl;K_hurW8K(?#B!C zX8g_fWHS!W0jsmdW&!Oq>SM0v;-i2Np!kT#_}vvBK^*Dg!(ht#ez|+r_uC&g)m+`( z8>`NK{nYMS;T&og#8N1rZP?F1F)?~cglYC?ihY5{?J0WIPV1Ng}RaL zo`^7(l7BS+g%f%qDonCOt;S>c2|UQZ^4@ih9qA1msExf2bim><7cGPhII85hV|^@% z@9iYQ8~0&JW}`>lud>NYcOwhT=rLST#NG!ckr5*zmLrbO&*B9lHTD2HSb#od zL9~7@`-Y9;h&>$4<>}hD2C7jfTI_mFZ>Q^Myw=k-I%>e6F?K>gX+r!EkVcR=0oiWd z1tl5eb$8Rk6!My}#U-y5-i5F|X$7r$?UFE&D!Zi6R@Ok5wv=5mmAoFEnMz*fdow^= ze-&_T`{GcsFMfdTN(`h>gDs8bMa2SQUW|WkIp)Q``C#0Mg;BsfZ-5J?o)fPXw|g@f z$pU=gXX%ZRxi~EE5_#k) zw8+15ShYP956b@K?PPVK<|0X1Vn(kMkO%|>uA2XvRMPuB*LtHQgzaTM)Y;3?7XT-W z0DLVkJ!1>d0^F~4xLA339vrUJ#rA>Vpg@cxiMp5N;S*Ow?z$3xwT%=7Nvksw56P{)>!#uuCC7Smd^9p<6Mm`ze?I9^(Zud84!QXNRP z?}%Yri<)k9DAzn<`VXW9rPoT_c<3vSPMgfRDno2Y1?CK-4YPRk+?GZ-PXjP**_X)K ze|9Q8e0a?d0xM!9ts0O=1f;2!do1u==P|`36o_y&;flhQN*Z|@v%x{1fCbq1PX zD9p$Z*hMgFl;oqq20RosDD`lVWFFf??OXhIS+SB&Ao0>$Jwu|3V_u|&q)1$gI8EZp z3`?O#M+Bx0B(Am%arCFQoB&xVDzzK{mJbd9qayoSbMYEf1Mdc5o%wbnW$M1D(2bCc zp;BzNiYfTOGg){E%%X50It+U8;KwomG0Y_eFqaetf+L3odP;w~wkBQ`{9H>&l)gnP zc_CNS*^RyOK+vLuRreDEc|Ps0_F8M3U=gk8U4X@I4vruajHD2NgZp)+UpineEM-55DKy`wWYrIiICvS0e>`7jX1jSO+sHv07oK?7B za*0Kv0N<={@Lwv9Y&ua>AiAQpKPVdOQjq=I*pu^0snjK=69_@#jL8qztjDo6t)hc+ z8UzHPBMAY2Ya`hxnbY^Xc^Q#4pV$SHmdnq0o`jgpIRJM7INMYnZGb{7fx;I^gMuxt z3F@1o8WD_mQlTlKMlbN;Nsj)q322lbU~L1b3nFJq8$i4ua;8FLTp=>95jhG)nQPcw z6v0n;H>(=uQ;bpB#nl7$E;fdsIy3I^uN|dmQS!3Mov0hsGt|^0`Lc2Ro z#_NCfzAi?`U&-sD`V$kW3#2$CvKsps*&yxJ;F1P#$;LqTsE}=$JQlC`%t%9UYXGtj z4#_g$l=7k@jPNgW*!uUAv*0434bX2Yw@FM)PGEe_BnVDZx}I|(U{9lpFe;~qlp!+q zxf0DK`N^F3x6jKcUuptLRO}Y8wfOYhK-J%2<+tKA^(*f6*f*?;B-*ggC+7rT|)z?a^Mm@Bkig58xAEmtc=wdnn= zbBkybk}S2g8+=P`cXZlHCkvH0Y3g@&Q%bI^Xliv+P;tyVig&|bqaiRG^c;$Emg`PgJ+Y1l+6*}gr2sp zo&3wo>FavDjiMyQBh1EyH7P=f7p@^$sR{j z#fHgj&<)rmvnt010zO{R0h{nRHEHj_rF|fi64U2mlTY3GxW=tCl&EFSHd@r74Svpr zGQxEPh5)EavRSV9Ma8jEely^9^?B)!2q$t*|1$+!X_Iz^t$m4$ z6Ba(laEs6iSW3$VA@{EG!b4xmN!HkJ$(r<6d5e++!(z}xur$jaP~+i7Hp;+Eu#W&Y z9*HM9;t9CPhGOOMqR4r*USVY2!t7rDk z-C6tHlOMbgc?ySyDTmRGUta;aq zJL}2$aA)-d)Y#B(gfjWlxwEG4%N6B6;?8RCcD>u~tXJPnb!RPj+a<5BybIyZ-C2E) zaA_;OJL|(qspMq_FKoR#>#5gVch*`TjJx8_x}}#3CO2c)k$Bx%r!|9-EO5~UKgd_` z!`)eHXDk7$Yj>7dt)`zZAd$Xd!ffK62|4C48m}kyf7zXN=#e{iXJx+SxU+7#VMl_n znLF$EJzML}>N(M&TyxC0A4m%xch>1|d34%j&VwJrut!tZg5EoEXRVr^N)P*-_k+Ot z&%3iqitAEH{PwXP5^oE4R@XHY=l`4TtWhuN-PGK31#2|g|Nq6EwZ|J|Bg8*{;B#kv z`MTyVWkihPE*9%LAm;zvSviM7S8`SqacAAXgw(%_?yQv+p4Y{6_*;3s4c%E4FZ`75 ztc9;B;-NchuZI6xcUIuERH?b=+5ZFXtkJK!*nRxpZQ;&ZzeWoKIvJ8Vr=io_>8@@k)uJbX8r@+dUrc54dDZ@se{ zs9A0PZRJns&U*J1J>UlD%*mWzr3dlHb!S~<_o*mm`P=ExlH%H!1~0wGp|ufYyDKMk zM!n*9Z6J~h4KeI93;#1WLPZbAd0I&Sq+A;f^1GZNpT7+WuF|_UF5$x}RukK%wSWc@ zaol~tMWq4+Bx-~wb-2P>SK)a%snY|eIKqj{&!)h&k&Vwf!kxWpU)-E4TQCXY(1he0 z3CT&FIS4F*%ML%bd{U=g;_*fX?J?u4j5(2`$9$POf8zAM++5PM9`+zl;uXiW5mDz) zHlPiRm0K)~bu~wx9eV~BI7~U8IH@BezEMt@H19jx?z^izu#|o4lToLj@3gLsk8oN8 z(H%SJT6V4~gv;tC4NJ_Jds2rSXm&DSWa=#QED?GL3fCznZXy(k=FpzMkH%F0W|;c@ z)@GQ}u8jkB6;mqcZHzjpLkJZ>JgGC{VNlIEDJWWJ-hO@yt__~O0g5b6OX}<_la>WV z)ruTh{trh2MxhIkZv1MJB zQ5lbYfyd0?aOmS+?}iM!Qi8EE0#z3w#u!fafiGyOG#Bq!L)BrO=DhnXeUIeb&$|)= zFD-5QTG3Jq-i>AQLgvItvQ;J?7>nHEVI6mF%v+bhn7=|D)@csWu{K27yWwDXx%nGF zv_tPk2GOXZjqKPwoDV_NTq;60A$S?fe}4lpWeed z(wNZ+-i^-)g)*CITOgR5gn-~Ty{IYJB_htc54;LvTZVdIEiS2KTSGCSnlNOIur9+p zIII(N4(n8iRGH8Dz+oN2h8Pqc*7=o;Bb|5SUaWlPS=GwB(I4x$9M<8?sKYv{k@wk1 zq%N&@<6J;7QzC7=hjoJbu+A?Z_IWqT0h2zgGmGFMp+>AX#RsyjO9ufo#0m%9{yc|uWIPl81@Fc`fqJ3tY>CCjVIA@h zVsVAJ5_&BvM0BG@3owJA8~=G7_8&3iyv`UT2zpUZ)mH5TGV3K$GgtyB>Ku^&Zvf0d=ZBEq$$Pt`r<@=MW@YdZdO&hj)lXL&g7zOy_Yl0=N!ZR05kgwl%^Q=>P_2YKdS@nT#eHoTO1 z3m!#;_hf{0Pjk=m5JmvLikF_Txg17M2@SUn$MX;X7JmxbXL$}G*Jz%nR*8_eLom|S z_^4M5tzhc2JnHR~&4N-#1wGZWyjW+0OiA43P6V>5I?KbsVg0Wo zYSeKpeK5vRVMH77o#i2+TO-kgoaLDesVSH>N~S?_uEw-EXL)9`brc7~Z#>JxD@go_ z^F2et&@;?A13e_JMVuyaeL53DZ7-5+oFuLSYUAin=~)1o0{{w1=~@TFsMZqDd+?e% z%hSN_mHH7_jIBkA^CK7h3KfU4lrgZXC2|mY@!&_&K7ccV2nG$|lmgCbi_XVWa(Ec8 z3VxUiOs}x|EKkrm%R@lCXL;mEy(n$cKF*V&eo_cjV5pNYE~*ogVd(<2-eIMIGmv zi;pu^RP!Q*$e9X}afQgZMx-3)Au?NYoTm=YNt-V4N4AcY(Oe=IIV(1 z9p{;i?(O3|4bp^roaf@5ALr579lgZG?&Hs<_&;Qz$Z!qxaIk8zsFrO(tIl}fM8!P3 zuTE5~U#x`zWeEHq=(N?|hoEZe4!bF~p3M2`nN~NIC=Hq~26w~%p&{7M55bhyLqMfe zw2+q<`Gn-*yU~;f%jI@!3d?V;*bUUIGXM7X*84xWX+-&Q{0|vVvH|rF2z(QIa*p%7 zyHF39Y6<)w=|OCz|3i9G$9V{XI?lr%6_PKq`&1OOe0e&wr1(E5#$EqMNdcW7Q0G_q z63Fp5kNMpsTE9*$WvX7s8i*X+l5+`(nM0Aj$+8o|sN@heehGzGWE3)$=7w=x#;n?i zU2fm$O=X8blL}(7*a%Gq@~Whvr1xiy7ho01$B&`LtMRis57U#!LwQC9kM=~?#J?a%gQ9X6d_XR8+l7$CPV$zroha_d_dw#jG3e{f^X$H4vAbIOA`T>Bo<1ie3G<{` z)_5!lO+6Ww?TL?*-f--c6Y5>3knwIw-8@+42n;gm`2YzUr>1#j#g676P&G|<_LzZQ z4{-)^HZOimBj{xGZ9Y4jg%74TVXBC7kb$6_b54|#9Ojw7`X>xMaW<6ZTqg1c*~gRS znO*TDMQFZvP~L=n`jk@T2IsZP>G^7P9sQVM!je!j=kcc%H~8D}9d0WiBfE#&sGyM@ z!iN8F8@7&{XaxKN9%rIjr)slK;2$f;i~P(JZCr=JBp_~4rC=l}>j_~o7eDJmZRPlg zLv4J}J_8mtPP0Da_h3mObeLh#Va5i6V{lGw44&cfWE@k@#&Ko6>f3LZ%)=e*GL_b5 zFb8tUTt7wg3|rziLS;dHhHal)NzusH>p8>5Bx)&V*iLfZ659OtpZQivfj+~gHYNH{ zo<74icL^LU8DEC)Yy3Gzav(;MpK^u`0|hzEHQRl20M^NhXE+19dU9>9`NDR-wZoHZ z%(Us5QdXN(Q~Cnx^EzcE41ft^VK~w4`A2+yU3EUic5`OoF-pSw=})A4=pXncoT!~l zx*<(0H(!05#ypRk6B!ebypl;6XYygYXyss>`;%Imf$YIx@BUfXf%OksBjNZGckW$K zvcieXgGa)hdz*Z=d!gOpfT8r(c@k&wtf8dM3dA+-L34K5lNr zKT-?JxohFTT?c|TBj%=9a1;Ydr8WDL7uT`ij0@R##oKKB9$c1!jLyxF zvFBQaTwehSCP0i$!t7b^(jb(`yy|qy(Hh16%FEl_t=9N+JUOQMlYrSx-pGKFQ@{(> zd2j$Xr_T>Y?mB(mi+1gkw5jw7GUOldjy&G*hDpJg*M7zI`pSZ6{In>O62>P%ML-TY z7KZsc;B#5DDZDu)c9vPnhP5@RP*B2mtsAdg|qORQ*c5f2_-`oAZPnE;^tEI zdu_kq@DNrr(kulb#Yfl}oNpELN#Ps>RHU2WBj0RFiql$zn&Y>om`-li^Q&0arcV-k zuQxcq9)=eQ{Y%gk>~PaO;;bjil~APR^Qz#o7SIW+rd?!O79lhrISDZ!e^s|Q3|~MH z!I^A>v!24ikv|0I&evNYx2k1)HeNGJR+!;fG-BlQA5hq zxsMFbG6n~Y{`**D5xjhrXJ|@NXS1DZG_wv*Ac4H{U-9!RmAAd7GZ?!c#7D`$#l^Ka^OSS^gaf*h&S<6yq1`^>w5Gj?h;G+B&eNY z>BKPk$m9F9^E7@4zBSMNopSw-?gHoX$|B>KOq>Lb}`S-xb8^NRc1k@6I znGRGw zvaF9qK~Z;?P&}!-dy*NgRk-OesIZ8JIuPuKrIPF+Iiko4|3Jze>sC)|wv0rwNgd;X zr&iWu3vd~pLeAc-NUs6Ggi5g&g)~NnJs2+}#U6>OJ1FUhztANoM8$DAINMdC%GkOC zqWZ^)&4}uqqd`>H0|n?iIFC+Do4hyQ=aBaa!@ZC!2Bm@2V5xFyq=3E||KnsfFt6I; z0Yl29_{sYhen`xb0K+yeDDEabdXz^_omcdBfIW&_fS{*+K-Jh9o^ii6MX;x2&O?vR z%doalpD^Z3KwFh{-@-zB0X{K*oletK5H`YDz3Xset&9nd@}exv6<#WWe_#%QaBKfz z(lH;aaN9iaPh3re=?Z7oQk0hV{Ui{(7b|9A)s{fj8(cc$wR|=lXO+FT$ia91(RmAl z-y-cevWg2pBp4IHNYhES%{y7`LG)I}5F? zM#u3i6yQ6eXfgLO>Yd;4ov!XXfKUOkHN5PLP~%~&q*tpZ>g&j|&+tv)0a&>Jt8q$v zsbo-dfaR~y^~FG>rFUG7XH5fCj;XMZh*-nyJbv#cNVnG|g*3;Q%-Q3Sd649&8lfIp z_DQJ7_&U<%J9aD>=m#7|mVKO67+6>z?PA)fawp-iO)%obMRK{M5$XF(Sp;(;tHZ+B zjX>+NhG1Y(B8E?0mW7wSA1aQ|ufUf`mzTovISP1tk)F-ppXvdO;jg^${2$a1$ZRg! z3&3L?3}fdwEEEWihC7Q9O>k}Xq-$$TA;?H3p(V^+ea|LL-04Sx_D8OjIoUEHoZBGVvLFlqDCPU|%YbV2C077|6!BvN67Fj58YxtfcFTo+M`e zvaXuH%!Bi=uw0y+9PS{YO0sW;ia=PfeU2nin^Io%u$SP1FT$6No8x~e;w~uo6lI1# zL)>v9xK~am?#P(R0{Yv#wWw2^R5u^=kdVPzZ%I4pHK6`k)q{i9T6VE8M*pc|jOqB~ zFa}j8#Te!I5_Xx<5Dz9k!um47Q`W{P8CD#RQP66bs8W1WO*2Z2^MUfI zfvQJUOC)@~rAAj1_$@mEDuVE3Zc&e_4Vhg!%sgZ!QoiM}=@hBcveW{LlWS0ibaY{L z+1O%Z;(0cSm;6@K_rwds#+V5(&Q4}{hqqhIqgorxf2?BB<)wrXq&Cd9`B;A@29%ns z=-GI$@e`<2uIkJ2Ct)q5CXQ-P*xNDZb=d)w$!YexYT@CN;~Q{OpHmXfegJGg@T-!+GVHtYXH9 zfK+geEx6$+QHIesQ41NY&Fz7?@9K|XnW{Cx+Nh#6jDfV|@+axY z$6xvQz@+0Zcw%10_`s#7T*7N{U{dDg`a`#?@d1%B6VSB8-flNv9fG$J>d5wVs#b(L zvPmOR&c_h($ZxL6hb7cFB%$BIppFQlXo#76P4@1f^HjPmtx zyj}Q-yi3a_j=OM5G~9c2I3DQ`enP%Yy7af<-fO~qE5x^s!8T04#m39ZE<)oAPw!Z{ z`GPLX168a#$=}bPbbpKNm{NS<`4>$*?-Kj1^Z3@8fDb{Q?5il= zX-VGYS554_3iTK|V6>Ai>AeQytYV&S`aTjly)?ML?Ihqe2>HOPu$Ypw%z>pba{~+5D0b(1mVl;85_oL zJriT4(IHsalzP^8ZJ_E7yb5D93_nBq1cIZ&f#A8LQT_RxJpMl-FO2`Ad42FdiZw#r z2m>gp5-k210(VN&xJuh!76oQR^Mbsv<|rQKQv@twr|aePml~GYaWGcpzLJA^Dx8Mf z%(3quz|uG5J8UeEl&F(#+iunJjISkg&bSvF%e~}QA_Kp`Zp9lBV^l6`NQbz2FNOax zVhqVgc6Dn%3@wtt(WXQ#g^iu>FuWKn&cAXPldKFp1ZgB<2k5(cFzF;l%E3q#7FFJR zg+(x+2oOUd(=SIDDUG*?=7>=UtG!?cxGRK0Wt&E=;e5*NvEwD*Q9ol>u#Qm@VptSe z03(g8I!FjDF_{3`jns_AH*?K;QS{Ql?1d5pNgM}aqhS-bClI6Jh`$WXfa>>TP@~7< zBTgsV&2tA4w$>u$_ac81B*Ac;TYFver5}iSQoHei8STwew|tcJsIh$&y~dhgss@L| zM&ngnMM(vS67!3z1VCANei)yKI50X3fM65b>onL*K$Ib>kNCqt7Z66HhPaIw8_lN& ze4H#-$xH)Pn*a=8SHp-2`e}zjoz!|3b;>;T9}HdWwlZG@*`g)0&w;Yl;Dq=V9O%U) zTYDy|9!1koJ2~|nCc)G^>&{EWVKz=uijHpmS%7nhxHgO))kJ}oWO0RQk6@%lLXgW* z<@X&@;i?BA;P)>2glXmXS%KJ#{B3dM((xBvdePLYB7H$fOYqZ|f$K7>X!f~V{C^H4 zNta}_FGY>hmPv?7Rih=(V6<7B2qm2Y6*tLhs>RKKe4ALk(q>35g$-GG|X6p$<|HHYvr{xkyreV?Oy;ZXL<+ z0JpQZrL(0T@dPW3n&71^Pw?xqpwS&;9)9kpNtBqW+AizqeM*c7Rl@*4Hi#Nmd#F0= zVWH|xzi_E~+WHs+q@W3i4onIjRnZZ}y!NlPgYn@~$cZl(>5_wq7)XuT?9NSI^|BH2hJ7vPH zz+d@kSfM@v)4-UsGXy3d6a+5Fa}oHnTnB*wT?D=#gZJ(XgXLscmniCsJ>yahsud(X zyWa-Fg3J@h4Ou!oZT+FYr>&i@M%M`$t&;KEl@u()7#6c(olyDT@n z7>vNbau|fHGu)M3E#sqdt>M%)-J$+UhAN63no=aR3?=xq_}nG2k}c}1h!yzONi)Mp zOZl>*>w=#ifx;pL4>BOsg`)rX?_m9uB@^_tNb`$5GhmB&HCH zp+g>sKNiy0azib^TGudE%jDH=#0xI35hFmb633#@1S%e+rewfrW?Tsqr$SoxK)7+` zKBIK3GCtzs>0RkHjl$q|G?pEC^%GS#3XKp1r6Ej;*jfX$g+Wjopfb!@lU8MzPo%^} zW3aaQx#XJjsb`5WNQ2k1izyX12~M$u$y_y_;vGvSXQ##2kKmN-LCGd%x$u5@%9KQn zt+2FOzd=MZhHnYFWvz#PI3$Gs24q8V%_^!M5VVfeVb4MeHN;WGfQi@DC!ymOqDD{H zV|I!d8CHAuJ**{oh>G!m5EWxvDSodBq>KZ;-lh?|?lg_wKjfUKN6SN~uD=@d_TyZq5;X-UhB2COudy6hf zv~i)MT148H_~ex}i3eh4lYnpHgzMN;g?nWX=luQ4EnU?`Jg(G`%%;kC2@ zx%d|_LoLR0LVjU;1M)avRnko#lTwleE{DZv%vz7zwjflihjkIA(Oz4Ztq+B})az-C z8qY(0(9>R^mxW4~PVtM*@35RI zl|s}=MVOrD@M1@!+=nu5nHloyXkpjsAFmPhlCgbR);OhubG)f9U?Zx~<-9=8v{isN zFjr0ThNAB5qBOe~TPfHN?n>QsAVwRPHRvmfD78R4yTuSGi^w3!kHytl3xLQ4_--CE zQTD(5oU)=Uf?xqi90VlLDqeafLUIwCzE=jpP9&qU9{W;g?h!tgt+gtzibHs~JOd6T z4!nEl#r7T=l0)bZp6}SJfvQPp6nl}M-Kgyvq7avIMr{6UF120Smf#m5WYb)DK!&xq zv?j7Vow)bCXg#TBaxy@6_uxCn>N^*=gw>bQVRfUzD(Tc!r5v2T$X6ED*$WBCrM^9i z9A@q}5cS_c`tv$M%020_vZ~P)A3&KjjDQ>c2yrL;L(M2#83-qaW|_wkPU8?O3D5Ly z5YN}YYiXEA0cMqL(1?WzgI(WE9Rygsk0uz_$gpV|OOUPTLN*y!Qb{Tl_y>mK(h9Yu z5xWQKAOTewD>N+r{X-TYPGweDNrbFHkD9xMS>M|TY$@EL&NF0JB6Depnu`NFU@n}< zbL2?ioFZOw$8!-$49PO*UGzz^@$7UH-Bhd^f4co{H$E7RM{vBM2SHzaq&7uFj>Q_X zFq{>x+;kO;xMhdaBC-EpVUY*`Y?yd6jvsO!KP(KluiP|bJng(4shK-FAj%Cbx}(N& z?)BnfxToQF1YR67&>UdVCPsUFulz4wr%o9F{jN|JcR_S6x!J_fag z(v3WXwU$+O2WE{AypgiJ`KJ~ug>0^roM}9TT{M^0{--=A^z<&qz%u^^wr7x0vHdY# ztN!z3k`j&^8p1?zPMAXY&r=}AW!28s0eB=**_2tmnZ!!H|nEgeAT)$UUFXDP7ya9NG1Tbl;O8^79kO1^{S~Nq1 zAT(ET12ZC2K~sVgdT+4-SB7nXOo*UVfaVF1oUC3jgCHk!f;YkPSGklNlM(n+U13&z zAog}6=9Bdbo8g)>3X=jkmwPl~8WsbuZNNt=v=rQo#^SPvFcNCDkhASj-3rl)DnV%s zmDza)KaiU+IegM!M6^5wofiFI4ROeaYm0{3KiWXmLFf>3^2&9Z*r{zKbMoVmeC_3y z>|98r7+xLvA;CBlYOVN`e12W#CwJn7kNgISOOF8_l@5t_sp|k43vdCPlm{3T8%$BQ zRsxguekz=p4tLdzfhL-fM~#6^*cK1NTaGs-QMN!#7HWUody92A%|NaZ;SqsCty;Th z^118+(y;(6TN+Wi=+2R?y$lqWZH z-3eEkBW)9OC<#2|@WCN;EHI-uuK>uuHV@s+n3^{X6hzKYaTR~LR?|xXeoE#vRl9s4 z!gGdwU(wTA+y}5|1^=@}_~F?+F6ay=q$c>yc+O20T+O4{Q$gvLt6l#m+-A?FYDC` zbZ?1qe%ehP3>tSy=*g>mB(zWK2GEM`cbgwwWCv_m6~9f0wE?nSBLm?GtH9v^7L)6z z5pl_!531S#3Y*V*%sZfsIqZ%reH`{xWm}B4QhZ^G#rL-XApVm%m$wlBF4f(3g%1Op zuWxG%Msx4ir4dd8X>$j6cjcQaO0{GV|{3$O_lTe!=nH0ocg~T z{r6%I708zR-hKZI(SJv3a4-6|fa{6=yHwv9s_(ebf2I1)@p4DU-Tk2GzklT@q<#2q zDiqJ^JJ0DmZuH;l`p!S(j)tP`qW_L;&y9%MvHllF|8@E~tgYVYzi~^_ME`v=$tRmf zT#GI0PaFOBHwX|{D{6pzbT_`-uVGK7H@@6Drfhs8aEJi+ytC`ke~&-I1EX4G?L6M1 z<>Lq#AI3^yt42HaJMY=!pd2qGcrfNYQ^c z%mjC)MF0KkD;E-#Nx?BAk()q9|MsX7s{Zo3e>%qc3pSCeWxQ!)*IFC> zcmKu~No0YKMC$Mj9cOW;isaC|*ShGx7c8fzU5S}Y8~t}1@YkB?zjl>^z(>Dz5%_bc z(i(w~4kDub-n-UD|9vSG=vR7oAoF$@{dea_9vtm_HEQeVzfV6Uc>n3>zu0odXZ+aF zfBU|{@HEZa!e42k)B>^HivD|hGx4U|ZnNmWufBGO$*(Y^$bIkPxQo$$6%V9U8RknM zMcU}UpZ$}1R!ex@Y4qP!|Jq^j;QvMcwHW=^_3MxRpN;;T_?|=IKW6mbw9cu~f1?{k zm(0N82Ul-%*JztY{~h^aTIT!TjsBbXUD^TtWYK@iJMSR+Z`|eo7ySoG-RkJS<4Rfz z;QFtN{`>iFv|WQnZ>w}SqW?awdaq!!ii`|RYYm`>=bBm!k1qjQ%_D zYFH$8Kl(2bYJK!ycA4z=mVfT<_m2HQmTubR{xA9uNMP{Sl*`@VugHgjpWRVy{FXGV z84|sxqyPSSmPg1YbM_rSZwJwTw;TU0(SMx%0O9vZ06%H; z-=k*|WYoX7z>RYHe=7QK%_vRmW1&$bbAEX~BwuTy|E#HaAtn0njyIgmjk|rPO%9W# zogiY9^KajO?C8H6-XRqK7yXAEk3VAc-`yiLy%by7?9&;~#eXjvNp;8NWkLwp$c>ep?Jf&Fa&6b3GDBLLj!zuQVR2FgWm+I&`9 zU_eLz9X5TJqyJRo->@+9<~@lsYy2xOzZxZIj<4^R4}Gj(ZZwXg0|_Jum#q8C&F>0e zV(fcJ+0Vl9;=Do}TFDIr5nae*_Ki50-~Ssq$6_4ZxIZ5V<6DRi;EV{8ec`MNQpt8g zRR1tU^{+tCVK}g`Jpu}G8)w~^Hiv%*8!XC_grRaoUH#GyZ-rM>Hnl6;D|~*xj^V_J zyaJvyM489N?lb%0a65ib1tPH#>^YkI<>I`f%|~CmFQd`Z)jk*%@^$t@K;m*XY4yU0 zcD31KitJ|3MzhSR8D238!vG>)mXS=|mrdo_5CUroLLh;83q}AD+59EbfjM8n98L^j ziugb14h}cBzlz<92P4E<;kheDa>^<;R8w7c>-}Wlt1b=`M$TNGcr9hd4ENwk-%e$} zL>k*ZNIeQoUpMHxh2B?#3?)em52Kll{LAS zjCKewMsc<3J&LQ(Xjg0u>S$M<#C)wXAH5z$E1W`bD9^U44B|>ktRba0ic_&D`^pkd zJ2Ir>msL`ZvuDXhJY|LrN%jp|n7$E5Y!js$&38_PnHMdyPjlZ2wBBNyAd!s5gLl+s zSs(P$6qdZxBeTLtwGxhx1W%6&DcL#%pHD?^^UQ}%XMwSbXXc_!Av?k{Okl~`S1ci= ztBMv&X|qpz(GX4GDUkJmlsImDOdT@;$`J+bQtLc(u(Xe$Z8q+S6nCWE{+xpWafo9# z%Y)G!Cm9>B2*LdLKgk*>Z#_S05?dBoNn@5eCwA|8K*Q0$TX%8p5oiy;-jPUs#E5hwoB^xlusQiIt9VZ?aXUQ|$%pnQPIja+O z#xFRWI9V^3( zPdO(tpSK>*uvAHyG3WvH2ezBff7pZ`_I7ha#Rq4_`*)QLQB!yhJuz~!r<_$OLambQ6vMfnR2N1%>iEagrP3HPMl+fzf0ub$NARh4pQIHBm{A>loO)bJ;oSS9MLDque znaC%VaF7=Lj7akgClKt0XzT7 zt+PQ2^#ii@vhtZ7fd?VBgC$8~-jj2c_wS+cuur=P>%69YEbwrt`m6@uQSZ`nn zW*ot47JEkHc-l4S#fKBAxe=Db3gG=xV_5{b)+#PRmKL0M`j@WOgv^KultIw=}IA8PEyco|jr;=@B`$NRP<2PHawhDI}@?NIQc zp<}dN12R}m#y=Fidb*t588?zkJ&GYu=q#e@R)6Dc{IAin$sGOZ`lL0E9DvG7{5=k? zz*;1AD40|WXVQO1IVu#dN?bJ~`aQtrQsQbPk_ERflH@fMGlx{`*~<|Yb7pVI#Uxda zxD-j*gqeegnP!Wao|0QfvcTl)kD%Ab@DzoeNSZ9dWgff@^@r|Kzc-iJx8JCNV16c# z%zo~71R@OyRsE3vDXAxC60v=i+Sj#uKoA@Cg(w^*_-A$s3FTU9E0- z2E)0^9uCr!p$RY#mptnW;#8qLYIH{<)BuDT!p4x0#rV|Xcv-Nh^84EJ+(nRBq@C|+nwqZ{ON&v3O_rkI|PD6jidO@toDOqOcZ`9<$zns z>cm&6WS35c63)K34*hoJeHqq$fG0jCSn&;hY!|59m)J;@fdDBL%`4t*N=8t1bSXpx z|H_MIV$;*t48$rRI?daXTar~+LPvlbi;Q}yVzm~@+wuDQeEs()q%C3f5gwNkR>jp* z^Fo+MfV-^-BPjbhwyJjhDg~#Mu#yB#((QYA6&s5Xhai;0Dprc3yoIbbnf2#=n`|77 z>c0?9oiT@vr{S~ItlA>)=G=yrS=Fl|-Az9fj_RIR>g9z!xR?hUyF&fq`to&YqIfgA_aR53>GDZeA{V zd5CqyNe;2zW;!s4s^{G^qA)Y2n5C&?s?GP~-nvw;H6zxhZu>T9uv> z{QB!ol}+|kzyUubMy@p4(|1rTB0MKD4K5+ZrpU5SvXF%7*=QHgw#uhP6hD?rL@E>q7LJ)w99VSW^y2vR zt01KXydA)Gq6^n^eOa)nh9IG6lTor7uX9-N{}aA=$?9-i?rJ!feHbk2@=j#gN1@U# zpSTk*0KW&RSXBO9k3iKtv`}0&z1&GApmi0(+=Lu;?wJ zi$~G&^M@0h!b=B#?65FYEFQ1Gp1NNM7XUcOQ#`SBv3YRyJIP{{n2nb#wkI!MT8FQz zoE1hA*tlk%#V;tPHovIbDK{@A+Kvd%_M zCfr4anbOIyOClW`Yl9c}Ui1Npe_i)%sDxG-28FWJC_>s4?N zUYRUak~o=Y%T{Kv&EJUnNYDUaE~6YN4Vp`^hqOLnI@g6IGo+qV>2$l8)AXw%U0z8` zyVi{|JeIWBx4wm?M%1Zr+Qdr@Di-R61heoi?n1mosfywS#42(zQM5)wlhwRg zx3#uZZHuK=E4JEFD~R`SF+gi;u+_#(+o)CFx3M*-#ekRne`e0RyYFrS5-;ud_dNeR z%I?1JIdkUBnKLtI&YU?=0xE%irO0Ft{Rli;=(6^ZSZ}ky-qw($C4Oj~AK4E-kx zBGysWT<^5R#x=)WyY5Y-U^mL9CwlDcP~9-5ddT_qX)@KrvI$|ls=*p35S-RCo~vQX z%lY@T@(}+<%Y*zos63K-GHTB*k2JPbjM~r@Hv%HuN^N9Ycp0nGk!|CPiurvH?^c3E zD?2PKrlfO|LVi1Y0Cu)e$?ulw^YS#G$3Em7e6k^aX@9D%cXqBY44GRkZ_K6&17^ld zFZj$1TT)OZwT6|9FXLMj<1#aN3o!ZXx)J76DjzG7m&qCTFvx)wXAIYMg_RtZeD;BY z_%pS|jax}9IFoiX2R1LR;ze6Hh>ImA!yjT$98ppdAmF3c*f7hoXMqjpj4-!d1_C2u z<8YFdr?3ARaT3CLAf!K+Jhq}-S+taMM`Zo}X4CnFqP-hkpl^M2}rAy|3HdA{Q@ToGGWghD^V2CEsayDLQUt zAXoz@P3t%j4m!S^e@{C;#J|zwgZx`{d_g4DMmCRDYD5~>Rk%c-2?N5k@mmZO_%GH& z-fmH#Fx8ciB3i}1|l)$P}0_uWj z&0xcIyAC5UK4ikf5UO0sx`#<3X=oh#U~v@e6iJXQ^U?G=JCZmZBd0SEKUOAPwMn&0#ntIs;9A_JcrN&dFlN3va-J!pK#JUJ|S-oKqBNenlQ8 z9+QVwVzCr)zig14HR-oF7|2*irA-Jjp`D*U+@ZU%rc2h%^6=Q3e$$z(&$W`fxNvc+ zYf8S4uj>P>@P(DnE?>&7T537tbeC0%itr=*2Osp8wlEM?sbRbz6U4F)dx-G*brBHj$%UE*?K zH{u+W)3x;C3I^%~_YS(67#h7`l}D|k5ArzX^rDzv<=I(x48&Y2Y;n^YD6EwbNd6ik zY^2ZQMjIU>TZah5mx1g`_YMjOd7ueCE2!a782T{aH}RHPzksho3FG2R7~&+9I2fl( zc!RfSq__%C*QJ^J4o&+-9iD?wpzIX>pCnFI(CiR2o4Pg&_u?yyC1%o#%Yr(x17%Qi z&{drhrcRDRQQaO*j<#NTpkUOCR^$7HwHLI7L&LD-OW6u7mkX!c!W98Dx`jfnX4%=H z8ok4LG^!fC6C^{-71Tpb1@gFBH2N6T=wno)k5P?2#;iXbk;PrNP^W`Q^=m{TS}6QP zTX?SM@})eR$Fm2SAq}+5*C+Ve%-5Fi+-7BBp3URgcX^fwUuEmO3OpFDpJ~S>mvT$^ zx@Ofih~x%-Q*?=ZBoqq2mg+BW1a&-HJh(}Pxkx4|?gE8Y)shsw6-_K!A|G~5kgo!P zuOpjf$sH@SYlgB~4-czqjs>a?{U%fTx}pVBT6md=6((wi0*jX|v4H17ABnq{b;?lt z^bypXP+ZkKc~74PR=;5WG+%?f`q!a3b0;`lSC>p%UG|wF@B(eP5ATMf@B}W0rYtj+ z5R4$)IeUQ{mUO6nEPOKRf!Yyj_fs|WnzG5#oGJVI(Z&ewm$nHx4;|BQOp>t<=c0*y z>9#yYG>a+bv%@+W*Q_EU{WWW^-|`6uyyChFVs+Dp(%#C|s- znAq=#&z7;177~Tr18XOL$=9?9jCCMNJHc+xK-2fAhvTNm2siHhmV(h_Y-rf799U_O zU~qz5xs7Azl~w-?HrMO}<}>!Pr|pZL2q6SZ5#r@ABPO*N`ISdliMr|5v2|A62qlCB z1#nIS?}T%tj~?eV^3`74#J_M(GaqoyP5NuO_EyH=wDDrl_}Ei=UH4@MTZ9Y4giD}i zy|b^*C)P>6nY_O402HV~GTJ8X#`OG*UHdXDX~&~TI=F8qATDrT<3f}3zeFA-9IbW^pOJ8hPO?uNFGVDFc{QPvIh; zZc6M;9DuApIz3Bvw--~o_Q|Y0Ji9-<#54NC%c5g@>aNBHS;A6%S)eS|&f>gPwt1sv zo!0SY%LrBUr9X=QKGtc3t#i*{k%qBO47KRkEp;=j#FV1Mh_co7Rg`_<59zXECpz_7 zR;(g5Nw5sX$*r-!UE?z?n|*KLkgj9w5j<`Mp?2NYhjB2|yAFVx-lTGm_t4XuVAbmU z`VgVp!nHyi!%)P0r9&zuR;^O0mlM&}>RhF@ydbf&B}{DEnml8m84k@-J6^y~A$XPj zdkF@!{}^uCPw^oS5d~Tro4cy z`v#k$Qp>ld-Rdl7T^UIXXC>KdP5W{neup%oYg%#PGa$c-nlfu>m$MdscMNW3E}<-=TSum=Wik+|uvHYLm} z*=XWsY~5wxD#mkomneu{(5gJV)%m&hmGygOH5P~;sK{ubi1X3&{uP-uc1R$8=^$`T z)Gt6{Hqg4egx~DA$QJ#L?dV>!QF|PglkIp$Q$*CE{53Fre4Dc|dp(O)hZn5jrbq2$ zw|>qH1C`%Ww8>y|85<@l_z9`FxPX zlseOc6qUsx7f(xbW|g9FpAc}ihDS&BhPQbvkxejkpHP_{L1!_Gg04g4D~r)t&bMWa z(D+yfpbKi*^BJ~fUt^PpXQhg3%7|+wjDVhu)D|zH#fZ3b%bvFuvT?*7^3<69iwf(F&fTj z;UqTe{G*|&RJ-w21+l0T{23%c-F+5o#JC;;3n$B^(TN(~p*V%v<*$J;_jd*=IXz#X zk~Sk&hdP(Y^wUgfZKfPJbRQ!>R?TxEm&@ItDZ|tC)fUGEpv0HfrI!oN&;mw$&y3+C zQ%tlkPA}r<{HRE{iO9GdEo|mTyR0lE)R>)bE{8Djl1_=65kQ{m`u9f? zH8*2!Vw!2UQ&3FYXDWwBCW^|Q4|E?NRMxtpP!NJ6hW!%#D88{>qQ8cXesgJobJ86|*^K*G0DI*C zxX1u_w+jF}0|3Sp&{4ZHI`-w-y{u&X9)4zb1FjRdzGbg(NiLOQ;$2+@Vhvjc1e#*7 z7#l@(!rjs@iV1%#l;{UV%Rf6ZUGw^4Z;g>lyh4}L@g-6_p-r$RR9I%^=ES>rQHY7*s|{|4TeSVU@)@>(7-!9Ogs6f1MB9DV9rMa^&U-zF|USQHSD(q&P6{F zlEjw)g*Bjb8MKzkhY`>Gl1}lflMhAf19)Xwq5Ea<;q6WOR^17ig`N7Lm@pok^-{z~ zn)nhPxX%@7TiSPzj#6IfC@UcOYoL?a4iv{9kvWiD!W&~qIG6g-Hz#tkroCA>dlXgA z;rF3v|#I+wO8vkHr6zIF_Fg z`*&u1c-_hGc^5}*6{=MTJW*Lp#dQz+dH^y7&M$87H2}SPpesM^!8kDr>_tX))Xc(T zCrw3dA_OFO;4)?>CkE1|jV6SUl%?+9OsvOs(qnAWxqOZgQQAB?*fj@IWWzRNPr&}{ zK>8J!D_d|EnW-bO=SFWiY{&;%5=oQyGy zDRpw?0HQ;h@sE3ai99gGaQ8Q0T6q-JsNmCmWS4;pWt+97NvOqHMG^ac&n^WXiv89hVjzfT|_{RAd1*ey8AG^Rvg3Vnm*B>WU^F@<`X9wjF->|RTNhF@VWz;jyg|{)>KB`RYarg7{y{F^) z!}s1{NIyTH5Hys%eP5yMEIOisA`mac{&V-_AG@gQ>O{>oed?jKxHoqaeT|KfSsCp; z?A3rodDc{qdWPkWCn{3KqiG16zMAz4wCfPsB&fCOm5|+G4Q=wa0VPcyjP_!*y70xr1Q= zjfa^A1qR3QVw=;lp}V#PIqvgZ(w3+&mP=Ae{uP{76$(&U30xWqO5-#>|%{o~n<@U7)?R z)GvRN7P6|wkCV1)Sf&H@CJ=^Y3<*4eqJxzYC>n^8wH4eY679RaO+aHpI^$-Tkj4J& z+8O!{?te|sBr|hV+!d2{)yaTxO%?xqWWVyoj5==-U) zac7TOGRMgO^+_=A$Y9>+K@-gX{)Jq^rzdsBAJZ?STeP3eo@@+P!0+8Oi!ora2%LM! z6B<96#eKwfqSXVKf z3HJ(57q7ay)MHl5_)?-yM@AF#LxB}Lo$TrY(Ff-rFtsam2fD^%hYGv7mZA@u9Dx z#?r#Nuk(!3##!-Co+$*sSjfWJ>fHH=$Xz)%EK3`)mt!He(@J&mUoe2vBCR}j+>7aJ z6#GFO64j^(4)_y0aFPbL*@jWOL2-RsxOG6zeC~yOvZghf44;GH_1Xvb7dU_VHq!rF z2EtN-05;3Shy~K%9fkBGfn)=z>)4iXQFC||m2<_)cF;ISDo3d-bigt~yFmjx#&6jU zj;&N$T(7in&r`!UOW;77z?lUjUJNBLtBKXWP(>H?)~oks+Ngn3!l4YECjjLBLiZ`5 zLb8Unq*(P5t@^a=Y@zF)#(ZP5c)Tp=Tlr)`KdGph6fnMF9nf`>jwfhGhmYQ-g!C6dMF}sqReIwkFJTDX>Jxatr*|$=T z*kj!vQ3IooJvMca2)|Hq<-7@m8THsT-K?B(%NE~vPns}lZG6vQ<`JLuHH259OMEL6 z0;4g^d99irK|Ly)_;S`{9`28e8LTixDnn5_QrcBR0s2=%p;LG(A=L93N-}HMlNidc zMK-<`i~kE~#*TYnkVt@3@g5@(<+`%eb;n|TES*RdZwZRLTew!{evZRgTA~OvnFUR% zN5*Umnp8j&%eS(M*cg!YJ=y^^9V@*ie+t}&`fhlvzPhfl>&N-i93nL@%^_0pjZBo| z4EtqT7FWHr&gV)#w}F9-<-RJcPAduK2(`vHOTAMfE#Y&U#g!=0e@L4IDhTQP<;z7< z-Z;>clqel1(5C|EmuMD>D5Z}|11?Gxe+R&Reg*+g>=9zn96q;S>Qt+Oe`s^qDy-d` zF{m~zt{UKVg|XeQ&#vUqXW^Smg$1)hKV*b{O{)YlJjOfuYp{~_9oek~4jD3>K@8s_ z@Zd9y)Aj&-yIUBhR%h#PbR)W>C5%^kQy{((2*=@YevMD$_hdMWI!1nf1<4?AfR_v7 zY~7sdpll~1D#)k9GOb&8Ga_0kw$!~^$6R7c0}GSLFQD{^QR;y-v}v6J35YmB>lIql zXaSOtog6|?iK{Sfglm~rvOP1|$LzA^NYn@2CA5!ldD+`Fm(>XZYjROD+o(FDeH~m+ zr!SOC$CMFOYX4J7DcZR6dFf zTgHrDac8s9tVnd(+?chIgm;_g@am{Lnq#XHL@Ik~uStuVe{ z;<<<38IpH~5wx*wF+pQ}yGXoc+UgXq)nD%-67Nw!)CcPtx^C+=J(9&g_*o8p4!i-0 zH(4a!_RP!h0nKuFRkVPZG3b|!-1_rJ(qZX;s<@oyKdrGW{ZhI0%{1U;sp7xvoF}(3 zQ!EjFv^ji0Kjl`e)meQ)!626dtvQi$Ujcsi6~$7p+^!1dp|JW z0g~hiMA3vkf#|b>ovc745PMGhQdHAhS>qPzQ_cTYV8xZgsh^!gDQ&f; zo1HF4LIyA@g`hWuo?&%76rv*1ICuN2Hpk92=vFwRUX#^J zFI;;-3rd0K2?oy!gkblf)xp9uiWZy!ZWO4gc4e=~9KA4{@xu?X;n)3LJ!FXIa3{hY z9Tek$ffpVo7C@j$Pj4iKJ+jrC1+L{QL~ zP+ydd!i;KI(X^4e#aRhNmOi3s88TVtppX6Qobg4?teJgFlL1{=NS?qTUe}PS_>7!} z-3Dzq1n!Qv)G^$UKB(@4Crcg6eGvp`JOnK)hRw+?b-s>K-Pcm*9%_hknYPlhInYj+ zi;4!8DHZc#ECQ=_xihVT3G(=lJ*qJD1tHA#!%%alml{wtPZ*cfzwjD zOi#u{?Wv6U)L_)MQ1%s}s9jy!buQhct2Gq3nm1=M*Uw}Uq*pyhT7=yS#guUw_?4;& z9(*sW33eZpu?Tj9r+=)kxDB24&%kZ3f3(f0J&88SvudA`ZPQ2I0m_5I{bv26pi{*^ z1+H2D5Gc<8U=iF3Gna#?1s|q|wdqHG%I$U?20@7mPFX$6Dm;dfgg?cc->u*iE{3y_ z09}k_OvckpL48`Yo=MX#rI@6hw6#8;|9Qr9xJIU}eKK9E9LaYepG^1WLHx=bix=)O z9dIB07(*pH7mweZmOl7D2jp1~xfJNvvMMviI=+ATkJk#q=%~-ImCRD=igW{rlxGS* zyKZC}DE2ilZ<`H#g4Lm}b&<-ti;sTB^vKwZOWw^+iw_ER$Uxejc?xh#fU^*-HVaY9 z7-D16?W{}{f4|Rm^6V~+L&z*do(q}I)_V%&w;k5|w=Rv()v(@7$hJAEx+M_*DM*^I-uvYnan>Od)_X8bZX>L>MN8K7 z>cG8U^E%LqcFOHQ$9{cxpy^hM_6qCuA7H8|(gGr{SfwI3H47R`si1ohulzy18?~pt zpx&N9{0v2H93uRa#jjyAI5#T{amBFy)=I?Q z20_L~_G?7w!c+N$4roW0boeciGzpzI_4eub5;_Tt9Qxgrq2GC8&k{W3j%C^!4yYdu z76)J)WHYY~1ReJmG?)#9g)50(kmW!Alkf1#u*@=H8Pd(w5|enk;FJz zpA`8)v4uU4)1x8+%(deUS4mr?7|bKWb5Vw~I0rSIZD-sSNds`J^QXUL$SnS)rXNuq z^rWBJV0qtRnd$C7=qu*jbS!Y9Of_!C>MOjoQ^HFVzxKjQCwt+gOsv(4p~fmi#5R;a zqD-U7`EX=a&hwnWEntv#T{3~DkdMxPhz1vRJRqMu{g8#zxBh(|#{Hg4qX zE-OrgK077S4dDR!YY@9e8Z`UpvW0U%X_m5yyA0!`12SdKc;^5)@WQcsVBzB`P@%r+4-hSKTt!V^L=yRc?vF%}XBh)_fN806+%or@S0d+fX7e$ip~4EU{eLX7wl zP~m29#V*Sv8N%hQ&LU7not9F(MoP5sUwWNh;J0 zG*v1x!|r`kgc3e4(XoD?mz6rGr{`|^;l&Mm5pyPf&l4B!R%tNXbB0%kF5NNhd&qqb z&|ZzSTnXoKhdGy)EFOJR{y5AxU0Xs++Y~TOIe6$H{t9Si!5IjNShYJ;noHvugIfp= zmLr352*XY`NH3DYDiX*jVeBl#G(m`mbqhvuQc~TFr+}Q?myks$p;3$+Wz-PH@K|ZC zIW{J;u`|X7p}3qTcX=W|lq&wkdv~KvW|!Aa@2dAiGK^RCo%{}$UhW&qaCP2TmXV>Q zj1*-?UUz*D;T)nXW9X80S(ehsuzh_pEbyo7OdIRel`%7_g-iIv;*O0mHa@(_=8LuD~ z8YA&MfoLzzzY8)Q6=<4I0F8U-$DMOe#>$;{ej%9jYrP=)`qBPZ^Q-guZdRTD@js%@ z{R+E(=!iLvr94tY9rp47>qJcz&j)rtd*>bV1Y)snVy$zsY9F zC(+f;HfQIIk@mdvo9Bd`21YU_Z_7z|4Uy8aau=gZ?cGdrm3BE-grQbWHBGJ}TPNWj zlB@(Z`Nt1s^4Yj>5|;;KW&e&W6wCg)D-L9CoV`fqMy%aC3i9exdK9Fc6uKQ$mD33m zi{udarurF_-YrvlUqCv`z0z2ota$YpbytKL`@C=8gH%(RBk&Eu!KbVA1f#oAp6cGj z>~6Q2A9fMbrM2s1&H(eJGyRTv)Z=-^4x}fn%7>l)hI+<&)C1p|D*n|w!XLVcyWS!V zW|iG-4eby*NJoeqlv;a6>5uf+x#g9QQqi&X?R8%Pw!>WIfVJe>FefXSv@~e8pim&P z^>MHSaCaTZi*6(Txd$N_!?4jfyexv8EFG$5{NNius>l0EA$1Z%cLnM55i73{GFp|f*a@6*cU|_{b zp=2c&#_Sfj;d&X|g^v))8t*O*j52UC-%8Xit$V}8QO%0TH5PV$3QHs$?PvBi@$ z-MNe8=N;=Xub*2LNT#1x2J-qDPF!Jn`78zD%k1p|$x`X*i1@yIRN2c%^5Nc0p}v}X z{!p*E6L!rZYmwL7!_Wx6pEr@8WCc1*hq1Gul}iw0Jc5A_ZwDdyXYd^1YySv!OwVW->^>;H*Us;%}B+o6I3QUary$5wgH3D*JT~|rwJKNhP$0z zzk$KxCE5%$y)8$!62ne=#mE#*E$q&bbs3cIHM^cE^Vr~Gs%5ZV?Gz4EQcEhXEY`vX z@f%?Zcbqhm99)0BCJ(`2$O#teZoH z&6jdfczYK`LDu+90baoa*%;_F4`@?g(oPFWm;pOW+B$ALGPA&bmfoK_w3l#s-`*kN zvVneWL%0NZ#a}~2E_B&Kh7`H);B8XzBZ$iJw^(#M!qotnf3d_xtmc&zvBVshaLUL? z;*5|ppepAE1mf+5THZwnF?;4*{zu`*IwSVC8)z$HUoR>-dl>?4V}WT)_Vuy~scgIc zRz5N;0G~MDk~<%&i+E_HGnRX|CyPl3SGbvg7qF_b2XM)eUtZl^!Zk1V$ec+tmyRG4Q^uG{ zX_zZ6@)n$h@!YHZ#rxpJDqB^KofPSet4kr7{Q1$ua)IOyf-o3Y-IWW)JI5UW(_kis z95En)m(G0c%8=}~c4f;Hvtc}oNOWh>Ps|+vn-PYU_PXXpG8o=ihwbiYayEcm0kjaW zN`%d^2z!h%2{4iE;qRaeTXX=Mt4d1cR)CPO8*PX2lw7z*awwq9f)k6-d)2}?m`ym) zIz3(q#Gg|Vu%t60f%^bhKKU*K@aDlG!_WpN(Hg15yDJ-0+{GX_0g!|<98ZMJD zxV}X^C^M=f_Mj4eUh$G-*sm(VJR97?E7L+BcQKrw$&Kyd?xYTT3B;!qiB3iy7zW+7 zM4=%}@11LodLT)wnK;f%GuY=5^26)hrkS1dC-O`0Y)-i?qH>gdS;r;dp(k?9!W6w`VJ;1YZSLbBTY+4&AS|$}u)u+TaxyG1E{j-xdUVBW z-FTT@GIfM~oevJl;?@UZ_gt1mOjzLg3)BH%JSlObRkA16jRlE<3DN``Yu)&Au7#rL z+|Cy~ohwY1DjxgB-39Iis@yk;a$h)Fbc1i1!_p#IyyjXVa^_&^KyBO%Ax?${A$vNZ zh0EbXX*7LS#aMWc^QeXF7s(oU&_wTIm*O8u8TO2eZGyr|A!tR+z!8GFXRVybSEOZo z#NNNMZNhM*_Jmz`sgw*ONdgC;#v7>X%EoIYYyCf@b`nQ)Qno*F0T2FLhl`1?mla-; zu?2cfOCn%1(~`O?olD9jWj*&2^pUb&d?R`J>WgNZ0dmHj-;a^;WgegSyw4a)6)$;> zB^BLszV^cpQ?A6W>!eH;f3-emEcQQdhntIRd_5N5>`6k#O*kOXBnO(|i}fASy!%f* z6Y04hb?m%?`3l7|QH@^NN6<3>IpEk^{~+LHI5qQ@N_lVP@PhNBjcT-r4d*513^Ylm zV%$n13o`8BS8DG0dKgM#cha2S%}N%7%3OqC*xpSFTO#G#1`O${6hV2xDkCe$7j=E5 z;bqw!nA<$5ux&s=*O%lf7nP)}y5#!Kfn9;DY@H-`kRpa_{*Y_ajyV^v`62n3nmK1L z@=+mes3i2Ar&qJS5hy3R+S9P=Cb?awlw@pjyo^obQS35cp0&-SJYP+YOcD(D5hGVQ zimU$i9|Ho&Vj`xxjNEAgHFX?^oXX$gopQ+;J zSMDz8`mv0iZ^7Z7!#bV;Guqs&o3YiVWA~Iw$Bi^$&WfNkhjUf^PXhPx!L|WAx%&x# zK0FwGUJ~%*XLF|Ne_l3TjDF;%7m=*l{!dPWlD^{q?LR1y5nuR$ac+JR44(e8*BOIB zY5y_Ebfzg6)L%RMPZys+JSGiISeW?tPY2EUQ_h%G_8*#f*)smu+tT0+)!zPlUtP^} zKZ!ugx}SV*Q#lS*nm!+8W#Yy#4O+8HKC(SZUjB2|bkS=7(F=5R=&G z^!D1L(jcas7TxM}T(6U)mCbHEi4y07%wx}14X$@7O9FllTD+`wfJOr5+X0VUp<<%d z+x~k0Owm2!mYpGCk?m<T%7WNgujRU|S_;c!qL(C)9<*Rj4E}I8)2|fVlls zhaUSFXZx9om4HqaulQ?UPEf-;UW&W9;%c8OH`W?|rG&EmF}v~0@rsq%t?a1%DzW38 z<~W7pymFHsr&!q{46>HtwPP@V)RSbdD^{X@!`3k_AsEpQIis`1iSTV=e9|jz#JRa`LvM(Liyuf zLYJ@whi#yl&?jp%QTrGkIk>s!8h()^f^MufM8`7cgR;2?zcCm5WjlNBLAsA}ov(ox zUo=A-$^zo1a&v>Nmz;2$Fk_DM{N*Ol-CsRVrik~#CsTqMe>Sm`K0z}2;@b(gP1d(( z*X0rWKYQuCbIn5Gcb7$V*k)zj76qbtY^L{ z_A81psoNz&;N|GpS8Deni5u1|O21Ijz_9*YCYz%g8^F=b-vI%>jHORds#C?5TqO7u zwmOqI*8_;8vdE`g@6>V`iI`DBNFY55qJ{@Vk9+5y-#{A`8Brvol|)2mF{CPY5=i zNTa7B(spjf?nI0xlflmuX%{~) zBF#q)>>I*evCRgs!V%jnztYD^ElINFZ4uu2ls9)!#|1Rhd+R2jJH`0QZn(%AKo~S9 z)#jO+YV%Ahslge!I}Tf%=XUpezt=0M#jSMN%eFb-JxMj(M_Ark%D87!J``e{;#ygDY%AO5UDAkV+k8;IC5unovIY*{%iZBA#~Jk9-%mh7_+yQTZ^ zkSxKI{yv-lz`pv>B+0p0S%@OV^6rq2yo8%SHzmxg2_ZQ^hU8hrz~v~2?>j^DZOVZ!+i<{R5<)19C23vbH;6UukR25+`ZC;s z$7QsXmxA*glY(>G4f^BzW?&OJoA1l?$(LGke;mx@%uy02l)N!75vT7F$W&w!aWV`U z`ez~lm%;b1*3rsM+DdpCxUU5FT+jpqu472NM4Yn?;Q|Zwmh?o;7^G+g+Int|4EBwT zvvG}xb{*#YVR`IUVG<$M5fIDr(rK9yai8$z~i>S0E3mfFzIog|q#6-n4Wlbkb-QZ$i?&ZYOl2a=q#188ifhM0;> zN3mPjK=a`w$vJO@&;4S1jhRB78nC!58?e{_ED2a_`kUD8edOn~5@&H1i2R)RFu+-( zF&oar7sd>eX$8%C1V++}UaDEt{O*$) zgLBZC;^NY}Ch5>=Q$%gWmq;5Xqb|T2_=U()m?J#NrMcDIeT~HO7YHs|LUCk&D<8hp zni2coGGI4d-#fGB55z(FFvaCBlUY-`D`Afx@abjNoSKyd)otl!4%C!J3+meE3k(F1ktG+A$qe0UlWR8U=ME zGn*Z9@+i#>oS>eyGR*~*8vfvXIjTI}DizJGUfF;OE3wE&Hnj}Lpb&`>aBa$C_eqp* z$jp5&k7i2pFPV5*mbb_TF96Ks0ZjKub7uDH5uUIf;HLRl0!;27%S`<&hkylt0R%&3YLb(DbVYiv|jLtn^Yuv5+Uws98Teb)%OxDDS_^ zyfaxim52tid#R$as8j2xEYF^=zbs@JEa!av??E2Cmq-O$77<)vWb3I``Vk9Zby-~U zkzlzAwj{c+|%it z5X`5Cq13d)l=~Ve;Zf@AmQrd7Pj*0&_y^A4oX0Hg^JWYM8uq0T87fXl9@lA_Sg#*_ z%aJsgWq|RftkyEN0Me&bDyMnGo5zbyGde>Et?f+fTvo3S+?}z~R9Q~6T=HBF-LynRiR0v9s!_#%N zu71pn)(ac%<`}01yQp{xG<`^hO~0ap*oG9U6d{bX#~ko8sI4nTZ%%nL)t4P~xYyQY zwB^eV`rf17^216MpDM3%4S}>O(;)z;w96h%h_5mXd@aq`uj+Rzaw|=CP(cl&@b8bP zQ5dYoDAeqr6TzV)ss$K(=i&{OXHnW>FRRUx~XBm=e2 zsp1RP3)!dBXI%yb;{U*&akr{b)2CUNEMEWRe3iKNM7IA|=vHHv3rM9bD{OBD@pT&v z;i;2TG&DV50PZ?n6;=b?_5|QmX=|%wgEXc>*3^+1!nEn+Bf}QPTF9s*_XS-HWqgx0 z>6=kX(>Gju6W}ZYIePnSd>+W&H9ZPzYCzE(`jHWtt+AaPWIxTWY4I zir;*)FQ3@<>6`WzSU$Ax1P;?RL)_lxMt|tqqMdA3jm)yY8aC4Pgyb5;wP#XTZCIHd z+k^V#{+(c9s;2kL5jd5AdXOE;R(f!AhsZE|I4l8&$5zR@z zN5tOo&&1vcZgsxu0hUZ%3RII2;Oi%ghXP*$lu@m2(760F7zffA`&W62F$T;}&JVSzL81hHPYG@E(jW0MT7*R`Mw z02PCpWH4ygyu`ww9n78!iN?zi<|_s>2qVOoq+VnKlF+_iKsGq669m{J;r1Ai$VoDI z9_kQ_*RBj{lELv5pno+K+D4K=bH*^-sixAD2V{z-ihtdT&{M;R*(Vp}rF!(v&+uSUS7C*h>+&gvT{={>vmP zV#b9-S=l{Iai=Stsp5;D=u6=AQ^VDJ$*>-{-%|?hsp24j`<}pw@Jr3yciulCif}?m zll7t0WPK<%KJ)SE7CF*$`{R9eB~NxP73R#!&JY6t9cx-YdHTVct98HpQ>7pLCil8B zMjh}1^WxK{A3Qt*?f+K#!ElXAR?-iuWc}9|6>TDGI$?YjB)Z_;PWr(Cxgbt9AbO0` z=D(eO@X392MyLC;pVuFDfxZ5GzUc=i{Mv}1pFffoglf+op^ur}OH;)Od6gikSRd&J z?>#jn@1PxdDD}YKwV`b+R!P$bJd=K~{a2>dazKAf`oX*Q&Y{np#~|@OP5QwaZ5m9N z?7w-qugTs&p^`~I_`!Xi+*(HdcL3+eEmV_ceIv`rCrdwg;whhB`oZyO%o*(4AKD?3 z$NM z8I9+%}Rs{ z)@&cC3t2S?H zCyQ6@;iu!Oazy;z!q3|^O{X*y`GL)ih^XMxmo03*B0%4Ww)^7)J0#Dx*A&4OUS{mQ z(txpf>j0c1;xp4W5q`5dJf(kHL}t7(O~)A1w8EICci-(Pm5x;Lz&^XeviI1+c|)zn zRrpHp=lIpjw|A!U#Ix-EXYExz4;z`K77UzQ3q;ww;K_);Jp7^5mD2=m)QaNOd_Jz z+?;`j)4v%O!TEd>AM7;TDjyP#(Eo_2ALK+t@hckW@f6v8#zx=f_nXBZK6Dkg~Y zkLFCDKA(uFjaV(twc5((6cP2r?f=Dys8jrnefo%~%O__dqRzbGbBu_Z|B(1uKAVWB zgB6xWHQ}|EX~4FXOoQ!3MD6`k-Tc~pbY4W%_(Q}ZiZ7x14s2w9f{3VV&-*V$M1`hm zL{#BC0-F9__6Z`Q-akVDw9W;ldFWB5HuY+q$CK|6pIY{~wEp`buT~ zAih_kz3F5?jdM){XFlJEsHGK(MFVYmtn@pBg*^HHBcjq_(5zmY#`!2^wy6%(@md0< zc0iH%S3my`L`2>3t&ElSDI%i2@Iy1>ulPBZWNt*%`?ncG(`*j+84*=Mtxpya^_S!G z2kV_L>R=hR{;x$uoxRXU#ZMLyHE9$3TmPMis9Cp~(OQ3}xFSB^h^P;4F>ReqTfT^> z*Yq*Y2rE@wDX(%3flnO~HTV`a3O_m|9T9bO2)+=1oBTEWPa>i={lJjo`UPEZ%-(5J>VT_z(hoSbX%S(4e8z& zF_)iZL{xdYMS>)5q{ZIx+j+9{vyX^6b@r!^h`RU<5wo9FMASYRX#ck&qE;NCGk^#p zm8>uBuA;495mA@tf*5B&{Es4{-uz0sKPnJ+@%r=MiikS8#fYHq{~#?0)t=o?A0zY# zlDSG=Z6hM;hhGWFyZ%N*J#L#;_XqUHL_|Gxcn*DT9)ZOBG!aoJYSSXlQ^h}7)YoM1 zuiR=ko7ewr_5>mkQ4;{1vjq6m5mBQK|NJ7N%F~!L*f)NEhe(nq5Ib^>Nq_>)vgR-Bh~=No;rG|H*RAy)OvLlH>k676b+Q8nETXEe#&h zcMz09%mhL0s=>~Z=q#{Mf}jAB(+>~W%AK|y1SJ5Q*8X>bpu&eR0VV85!T z{#=8g+ROZnE*_?hqWu5oK~Tr15mRYB%^(If{#QXzwM|Bn{`n@6-`fp>ifBqciU|fGy724PN|Hr&LPT6M0CIu+`2x_sZ7pkZiagIbFFbMXuU-L`o)N zQzbho@rf2Eg$di-iCnJ}iriKOGYv4$ORllALOp;Pm<6K{{t71mp@P6kYLjItQ3JHo zL+)?s5VuZ`w2~PJ?T6$+;BGldN8V{AP94eF1mrvMhi!5+J}Ktwi9yqgiR3>V7#IQ0 z8qx{i2KN9hRnu9y5-cIn7U#+JUiT*nO4;te`^&uUE8Yirc&G8r;O`yjU86v1dQ7Fg`rjw-J|4{-u}?(yZvE{^K_fnkJGRoe53x+J$;S(5fq{ma4Uo=i+930O0QDytE48{ z$z7+QGGuR^B{wJOwTM3EPn=4~?1>{IV>bli4>52NdsRfzgdeF1KsNO?oR6H(a#07{ z+@InOq+Z?}x%bOEGDq$Zp5N9S3GkA?2FvEo2${NapTr$S(uvEOgb_rAU zq>;?LkhAvX|D+}*2mMQGMGGD8+K8xq5$P!|BIVZ;4ZN`I8=B=~WikKqC*Y&@gAxza zcEhdm1U7?_ptOCPNN>uvDV-`9HM{fxHg z4bp07_|iPStx8;O823I3_QAMS_7z3$UxoRRe^EPgeXHiBLL9oQc*g;kh3_*++~%Oi zXPHQ3l&W0GBYLpKIXR6@HM0YonHXs1@@l8yZVCR}Da+xN={sl+pQqT9jQv%tkVl$VUC}~>IMmGYkq}@JzQX6bALS`kz0g(Cv{GU^Nc%$q9*Jk*AR>#yd^r2|T#-)B+ledj=L3N`=k z#cfmQtGTENg)SVZrY@RKGpvqD>(amoGGNqq76h6u7xE>Bee-H#CTMbrRPmp$CnjgA zyb?6iS<&p_ZWYg3Vx7))$C_I~zD3U~?Y2t$FO_x&_bR|>FH6I9mrHQ+ppr=9w34Fi z(dSsAiu-WojH=8}xebIXL264v9`!3>f|Jh`-_;Nb)$Yp_=)nXS31d2%0Ep$5D;XNN zT}uYEZNM(BWKE}SpE}wyUp!X>5h1>#1jxi73bt+^nc#iQ>zTiOjf6+sERw$6(_By6 zb-HP1NY__!hIMxBULslO$25=EEc6HR$hy_AmL#Dc&@}=ZMvgbsj7jIEhjqVwnQSwA zY`e+1zu+#Mg1vEA!!hxd5&OEH%C?C+6>yVP^Ta`wc0iOz^ANyH1Pts1bT7x&)`;EV zTnMx%w=5?I-+iTv7)SLc2OoWq*uz7tbrXwV!va1-eDLU8Cf&r545C146+E4z*S|3Y)#$C(=aEc1I!&{HZ8s2y^LJP7M=rv8)ymZ0& z!dUJ|cyAl$6vm{pU^M!`Jbz^t%xJ)fTeTnA)1}d$j`;*h*E>!2gEPJ6y$SN$#(rZU z^G!3z2XaBp`V^qnUXe3x_v;gs8u+K5ajLcO&6PUv_m(us=elsYvFtf(_Q!D3hT2m# zvFoXDMSH$kR`9r|-hQn@p-UC`YN!0CdD_jh$}}5}E9V_FqidaIcbROip3Q#MWimzc zZgghCA{$6(_;bNdv$;MX-;%|3KU)LuKJTnrBF*iRIFXc`n*vRu-I;E?BGt$b=D(4^ zT_kAs(T_2YdHooj(~nsSxDV@c1jTwcq1L6O`{R{lCL8I$W_@p-YbsZ-uiwzVsyGrM zr14X)YQO5+MdPe42PM@@JZ!MW4hb~9VLE0q3J1kd`KK?{A_8HlR4f_2*+@#fH_J_p zWsss(NP)R10#mQlNK9*Qe1Fh2lYxT3WD0+DvB;x3=686hByIfS2X_`^FSm$|J%Pmz z@EX^Apm|caB3_*(XJb6w%~J!d{(Oezm{2-++z3_SE?FmN`t4o5{<;WMk35)9TR$e|OFuCavs9b=G!yeD5A``QpZ;;* z{b>3OCgw)%>$WFm+2OSPNhW4u)F+&ngX?oAW^+#-qxUf}hcM6bC+6aPw=*&4*Ys~< z&b>yEG86N?_i`p?jlRkXk`7*PZ(^P`^;1qv7YXz66LSrv`Y|!T->Y~HQ@uiNaHz=M z;LvU*PC-CO)I~*5oI+01shTr_dk4l8)b525easxsMCryhshGw|&>O#L%!G=xYyfb` zN`9jPsbuO&P})bArR$}N&-7}9sFA%vek_S{ms}-W#jRKmi%G{Hx}yD>y*OD|yGJxZ zYWu{n$(AAYbyY6nFVb0Fmw?gu}T z+LDBb^giptnwg33(%9S()!M=f2J*XN)Moyzwvv>RJKmFnOXgq_+u>POGARwq&0>X* zIH{)AKzyVw^rfV(HE`zQSC3&FWA@rxIfPv5>~S_IA6wTtcQ08UCu>@r8JeL!Tw#sv z2*ht@-D_S1otsf9+;mY<)iT41jQx8cegcCKZu&={X)nHzdj|4f3FX9N=IrAYCI-l2 zpsT^KTq}*DY}CGMsi2y;C>SYwH?ok`3>Ra6$)76xYkRXR_4|{(76C$KE|nyejNFU; za{a+3<+tKiylF2A-|iKb7NhnX)~dHcT_GE9ifPO4v{pGRX=CNAXT@sjnv-344{6S4mmwYx}7 ztW{UN!9CcW*3celQhQw^jJK+@s4}qPDQoB|P*4IW$%Cvhnt|<9-n|9x4p&6%zeD`m zV*)E;Q&znk3_Ms98~QtI)hnSyEMg7aXi1*$gj^KIeIM!|meeJ&>HG$dbuv7;eUPMY zw_oB}$AYdUb~&C~vL|SgZaSnrWXrjON@o^yDRgTSOVY5M>7}*fK99(u`SKBsTU~r1$^ZT#YAUSUSmRK%~ zvxPmpkfYJbVdo-DqRF@zxetGpf1I6I;Rbfuft?*X3oV8nqsXR;e^A%gKFjvu7^c!_ ziMM8D`+QRWLFG(gQ7=D9!(+<6U)yiga^T5yn&QDz$&o5v+9$}$)6I%=z3_wm$7te6 zzlU~!CFjWHufejTC8d$EZFL7(IEO4T)#Xd6m57!w*i|KrGTS$1`$KLL`b!`M+N1Hm)V180}uw>fKiV8p3>o>UPSabmfZ1gvxE{LL8o6EX6qun=KWXN0(xCzj$S zDQ!{jaMV7k`NX;E^?kv)?4Ye!^b0eo%+6U;c}C^wm73eDM%K?}y8R_09r}`$m>)!~ zg+!)TmCUW&+*(+BLS*3c^D&}24vLO_wT=m<%Bjx4t9u}txGreLp9wUbAx{zqNXc;- z(Wfm{t_0(PO4&wW5ZSbQ!8!cQc?Fg};29PO8)Lhe`U(#xXta=|DKEv!K9CV)WS@!# zPQ)izRZ=0SS<*r^bpd#3$<#>VD=}`K=a$PrlO%{SJdmg@sfG@4#T7@$5;S>QNrjUk z#7fH9s~cY#_)w5xD-X$DM#FJM2i6w5Z);T~xEpHRa$q3-iuvty zU*V?Q17#5jJ0sE=jINW-_rlFqS(`qI;O*}^)=J!{*jULyqpY#(tiXgGYv2P0sj=@_ zfr;-4{ZM+fP^|2a(jy$L^Ki-i5!R3{&#Jx9N(em**G28?f}7#T!n(twV_(xju-2^x zkCYV%|Bf61bwLJY{w`L0gO%KMs1>k&r*klx5XLEc(%m46EB;LFt}ulRs>@x4sZr02 z+T1lPdgwK<+Ge?Ez+NqZFW&7$(^&PNT{%rw{%fp+;1H-e2&rA}lT&7D!KJWs0~ILXg6;pSBWvM-x}0{w9$srYBOi z9t5z9Pi?=G8GWq?Ev&gY5X8CS;AmoIFk1L3_dmzVUblog|AabBv+hXaM}>8}L6Cu6 zds-{gr0Dt*N*+VaiLbx2AXfOFs68hbD|~nUKC!VMT)9uwo+;gGOkZ+lM$s9%g-$1j zZMsO5;^5t9(Tg(3>TKLh7tGSa8%zZ7r6tp|Df@0xg*#4D5zk{I>w5w3qacG8Fpb=ml!teJkjvE&snvdGaJh+d(y^t zW8L&DJT(!Xn(mnh1gMl!OIEufe;bW&T7eYqCLF9r#4bj5Z zRA7 z6m}hL1)dl`plgtI!T3R@z~#k&%i4i*k#pl(3rmYRWNOKUyn9R&ZmKFd!Wr@go`jcp zRG4{mt~}b1w`yG=vN*eH?FJWFwMOix11omMj+;QItP6H+whC9JUX~@gJkI>ite_+I z5cj9DeV&*EN|E~{uQP2Omuc&D9=8nMDbrR-Zd*_D+TD%P z?*z^qKgbb1d&K!_{aD=12fl_*)=*LmQjqyLu3$=& z0tUKG3G&Yn9=A%JQUjsXKqyrRygzp;|C|AOBc_1p2<+u!7q?TtZg*%QUz~^kDr>^W zI{0oiwuK_8wbmuSpKBFvsa!c%upl78*>g3#n8GQ(xRYY;y|UYv7|&>oAE`m9tFaz> zG1l+kG}5_9BY_cm)=?^}k7p&X#83b&X;$ryWDT{*j{yf0Ye^We2Ryw+?^UWv^ML2myFxBp*dbik;kQF zcYlFVY6iPh2b-Z+>Xs>WW$8*098RtB;Zf?ZjS^5`9wm~>l9EL_XIwJtSYHrJp}R@2 zH8+iO61fzr6bJ@Ey~v%RVMRm8fv?IC^kcO%;Lg1ZT-gsgp7@Z0%fGV9-L+vur|FWt zN;>%RxP}c4%}ME*>Ei&tJ^-AMx|xBuTHgs= zH&OV%9Ev*k-}n!_u*+vLm^gQ)Mw5?C=W8^1&=qH`EtnaYGkO3Xs+obyj^9~6s{(Td zkMO<>8_5?hSp2QasGf*x)r0|-NX`|QcCs0?@bxW_U)e;BvJMmuin1mk61`y{r6S4j z2UzFP~cxlOxByV^ve@ZplnFPJl` zJ@8;;(85h~XA~3+UBz8@Qf&FInPOI=(0aJ!vbx#l&zK*zMzvds$Uy61{Wa&Zi>y%_ zaX1Fz;-hs_C>I~_y1I)2zT)ITjc;E#bakNV1YS#{7tFaZ{d|TzUlgQTviOSke~Yiv zaaOOnvp~#(HmL1(b3cs-(vL`$L1eJ?@QnFYbL!5&bVeExkq_=wLORpSK57x1HNR@c z1sBgg@6vRwGo{v(D7k22xzMaKvC~5(mtQq|)cVTAB zXd16Wv8WvWV8+RZ{Ha%D=hFqTEzYHKhmM&G9PmJOi^2~IKbIv#e6UyyF)hmFYp%kV z5ChToqV7f8tFj+))>Pb7ge0Fd28R^B8&p{$uC?tGL(EWx&8GrqZl4t7pMh4Aa`*s3 zGDDM#WUiC+PnaRbrKWcbVKJ0d1Y>pP))oo+?=IdO4gHwV5|{P9dPUN(RKl6pS(ii}#6xIN(9w;~*dGNs3WY#2Pdd zG3vaxK*8yw#3B)!kX0oe{Kv0sZC#>Xy9dP^KVr|=-$bD492|T+9~x*n%zVQ@zfiud zj9fPJ;>#|sy(%&m`{QIDy%V^0aCjaB9~0tzG6$QBv)Hh8qe48fc-z<8u4tN?mQlJ(C8lM4vP0HOS2(w6SN8K+^)GOk+18-v~5S@+Fd-SRti_CzBIHRw{n0a1NV+e6SNWMApW`ue`!a4twIXwb>I4ygGwL z&wW!V))rp`>_SNF+<=U8H_%`taRwfXiCD1tMNS>hM*PoB5u8^O+1bc1a>ITSflQHJ zucBw*}%ajfO~@+hC~QE4Jo%*>`!G9t%drj^`2yh7)o-KdYmdfgV^9KLF^u z&6V7bZ)T^fDskUl{D=(w0|maEDR7Xlz+GR|0#AAPwJbKWHd)H!JY)x)z#}_pnSpH! ztoS{Py`sp_C*dzXo?6%kbQbf|bttO(IOi$qJPaisEak1=6l9R^i6f%PkeeMC&k_ zuxKRMaZ@E!Sx3JJ03b6Ki)1#) zU~Ku|)l`EH5ChV%yR>C=pf~IBUS@URf*Cpzg@4bE#QbMuB$Q=Q_qoImG{pdjO{qBY zsZ(br6GM1aOp^k-AQQ#dM`pfc>?3!SqLb701JBQNou#ozq0H=*j`2%oCv&x%4_PtD z2iZ@BxffPq(c?wXf~83*A)L;r3E#`$k#UKF?sIZ|Wc*wf&)SPHmpX0_EoRsTHK zB8f#IDq{gkr`(@u$v&0*87I-Ar{u@uR#7G2#+T1Y$)Ab`UzPkMzVt)Me>>*m{j`#w z4jJ0wKcJ_oDM1CI3u0D8!IEKX40iz5*(W8V!lJ;Rq+@*0U-#Gn$hny^r^u9YijPAg$KvB{Y* zi`l$Djzh70s48Lou*rGz7-sN=dPK?`jN;jkhVzWQ%S}=HmF$Y(spAk9z#D@0W0{eI7L?<`pW>+=7bBU0oi;3{bgPi*aC*i$fTUB%k_giy)V% zH=>!y;#%EXE@Xcz4Sq07aSsyLY@(rvb(1cLuonyQ0#uY~Rtdmg2T0}Gigxtulfn3# zFb+3hX=yHULk5PC&G|%4@QI*OHX;ecvk_YYY+fHcvmq;Pc-=$QAfut#MDq|e4Qd`* z%HrLa*${A^Gz91)AjzpMY0ue!2W@E&#&-Td7>OSzY7E7GGu_Q)3Q2gKzO!JQ~RB}fu?SR>zZ^< zLV!Tg2s zo{h^KqMcJQKj@K#c_zHeO)~`R0W7Wzmcxpe%Eyt>a$IO1urF~HQ-fv>yMw?Ad74c= zJfe)TauJqB{}-ZK`%hpJu*e=m26aj;*!zfj&e+uJzd-OuU!IRBS zd-d-g`~hJL`v^gMG^|iT91yweVIr3{CE+E)2*02zX`i_`DqoT195F(OkNMzAV78>Y z#4B6q)Aj$CDJ8h!qCCN;AE4S7LbQ6gRa{{I>RQmfN9~`W3UD^{sNGRJxX|b9gL1J% zBZWcwdFL=^%SaEWgVOQ--(^MPF&s|DaJV%G%Vf|koP5=dY#xVN(K?)CFO6Sy^L;4T98QsD0Vu7LZ&lLGEH z3GP)H;2L8xzN~*m?6zAZ!W)*eV?hrHxG%}6g%1Og-0~ZD--jv67n|ev zkR%~Pk=#oeBzHA5A_(Mf0cw!kO!Sa*8f+|dvP*KKzm@Dmds`b;R+{1)gwaR;357*3 zu3m3~4RVz=#!;-anEOw=(Ijn;-&j4rY8|ITZ9 z;A%<`($HQ-NWWVCc?junOzU)CI8gal?oj2Q^tsAkdl(495Jkzke+SN3xAOk}&3=yF z#jW7GGMN@si@iYS)D;+iX41|#6V3*zZ&JotgKc8GcrFyR?8R(i28atcgRN3hYLL+Q4TQ!VFyW>xJL$pGyX z1shFo0GvyP`!c6)87<;hT#P{tf z7mK~4XGgY8spg84w<-UV?yD}qfPM%A%8;>+69NzQ+NlYFJ4DSHd_v%iDj7a{+LQXc zeer7Wqf%G_jR-4@LELMh7D^~h8>q?9E?sF;t^HHEvHB{RnNpBc1&GmOHMn%2#)^c# zGUk3VQ)SrI92Z!ZD74tn6aB#$^u-1E!#?9+PXI~4l+r$RjWTW;=zy7&N3Q#uDWb_$ znUX}Kj0{PP#)*90eWNm`s>G-Ek5V==Z{&#-+=yJ`EXRvrq&KJTpcbyWIw>0g28Twr zUCNHNjzMB?V+G{QH@+uwW(MH0v)4$cDEgKqAZ#Z;_3en%fRY-U#T0^?@7iGKUBN!L z(a1n5AzH2+4UKr z-U9Uld%emF+snhdV19Ps*=d9sLx|bQgqY%kkP@w454j}dobo=zEJ9%+2~dS78ckDi zTX#qc7sml(D<`KG$2EL#OeWH{7p0K)#H!DYH0-|4AW5K(aOu%D5GTQsbCk!F5_O6E zUz~~|#~ll`+uF)=v8-U@3243v4;}Ol_Sa`HucFhH$t0tN>8`wLQmzr#J`qs|42hYd zmVQv0lg`ylp`G_#YzHhB;|5EgZ^ai_cFW`LEK37qK#Pd8D(%al}^1Gg1 z>9K};)OmCTX>WIPMSJfZ>$4tYpv4o{U=*TP3=2V&cMm(&nh3UXlWhb)&BfEQEF(G- zS7)W@6?<-Nt7`2G;j%pohM$Ot<69#>JB&B{0a z_-Ak_zlBDnT;#Hh3ezZXkv~p;As0EV)TFH@IxRJSHZU<+BN`sTH&2`@ISS_?o!-P5 zKeAtyz?N|{CgRdL;b5X;;BKYk$Nu$|d)2LVu&=ys)u92STaPV~ZauQKPq$8aP-y(K zbn66^juNj_B|fn>=@)^cA@Kl;OFHJ0E0XU0Zz5sJ;ySZc$T{hP7r)F|XjZy77oUL^ z%?3IQagjNT4`Ped+^pFo4wUHAE~;v0>f@SvfS%fmbZdMeB|RRn%CVOh*O&LLO5A5K z1jb!bE&Z9eU<}csj~yWcp1dHRbg}@KJ!T#wtv;w&@c8_iK6o6)hMUpPf=3gz^&|e8 zf20vVsLE&Wygy0&F757-2i%FDL8e!dtN?fw4XXJRv$Yfyx-2WW`Ax1Njot#ZR2lC% z_u;A=&tQO6-<><~LgpvO{5u$bBWJQT;yV~+Md$ODAswO{*TbJ0fPm!&GB|*nDMq=i zd4{`8_mXy~bLM?~UD0^gOk7fg6D)g7i$;L`&^TGbB%7@`_S@Y@V$VJHFflo%+9t+| z&Il&3&%2dFI40k^x_=L|Ty!zzY}QRU+GK)LH?X7GWiD9U#tpQ%S-t)ATtnU80x?tcLdy7XNl)1$z1P>n4^AM+X}+YgA~qp!{^&Gq-}xF| zR%$E$tF2g05oboPU?nS?uf_$Uuuvb4ExckGVF4xq;EXlDMbyf(T5Q(N`-T*Wjo@%S zB=VzU=zi&isw7B@zvhp>0g?K0XgC5Isr9#p7}qX#u~3U-=X?N<8wz{5NSRD8hK%*D z9hk@;gEB$4#ukuk$aoDvPz7&jt1a`o50ir61|f^#9d1Y;gu~1GxfEArJchD#U@DRS zdMN|>*qB|$)^p>PSQ81$h;C!6APVA6Y0TQe2RJCJjp&ECt%xn}<;7_I2p7)zGPFxH zfrlWX4^`vCr}E)0ACay+tf101RM;qP)|lwpW|aAj=mU7Kt&B1cYFI9*SXeB&68Av3 z6k|kN{~4#HN1yquKpjCzXx z)cHBZ0k}jyriQKziS}%UW!-dwKrL*fCROao_rekPXJ|OOITcQ`a>O`R4ek2i^@MXP zKA7d$(#&S@cUl;Kv`84Ha!g(-jnFw;N+`#&PtR?voR)d#^sn;yKcmX;3{d5{!{ER> z0v{0d0h^o4hq|SuMaj+WUtEmEy@|mbTX^6u?^FNt$MY@GETSaQ_-mK~ z{JalboN@2W8Nip@Dz`ma^k6t{kzEEixKb&?40lPajDHZ+!fI-lTK8D67-DzK z^#_v+UcB5H+0t5~3eb&Rdi>o&rwprE5mTWLl@o#6V4Jv9>~-+0yMe$?x|TiCVR-0{ z{t0y^yax#(H&L1!J|DjzHi@gGZ|DySt<2=C_7AK?LMW@=T?mavjU>7dSU)hch+j#p~fNS^?6 zx?V~o_JqX)*%B*%XMJ}TN0qRHV(dvUH{RV_aS zH_KB~jF+U}R%`hF8+2FYtvoDEjZ5VFi!n}O9R`|RgVOjz*Rto}`V9-B)IzoMShdkS zlV6PcNLE0?i;tus0rmOpNA5`4B!e0w-eNV^XhB7)>+TYrIjL>S;;nbMA;5E}s%qhJ zLG8}-(82q;)r?2_y49Y$9c%xN>z8oZO?{c*uSn=JflK3iY=GKtHHa})VS2l>06$w6 z!UjM^q9kHkQ?FM=->E$qopSV{?360wxkUbgW2v!LF`(k7*g%62F0Qu9&cNanYOCZ6 zJwsdFdWhSrWc!fud?No8loK>|;&279KTdsv3Qg0fJSO(g?$y>=A;PGk zV~><5)p*P72-=T3X2rMMfL2o8gAv0oC1z_Qu^Gm-1%L48*AONz!zJ&R`9r9nHtSMb zO0(dj8kh=*9|9{0LpB$9rk{=%Pzi`PKDF9Z)v5dWQ&?A|xtIF=|n@3rUlLq?tZb5F{bN zt~GcSmWvcHW*2hdUIn&9R>UTcLgi=WSH#XcmI~g(upVF;$ zQAq0+nBqHt;z+k{mGMa`4hkl^YbS?F-azcy_`8TJs5YHvwL^1fu|b38$0@(aFhAN@ zN!pGIanEVdj{uv|OzdG$dK(vv0z`55kG<~6SgO(JF4dsJoz%?D)*vbFz9uFMaV6G! zq#zlvV(!Wf2d_xM@8Ajwevc{CkY>ubYPPcW%$_arX3txoGV&L8-D(($(I-ah+xYAJ zLgqreA&f%@RXc(})lNEGt;;ebri9T-W^yW?A+vb;G{-+SK#@zzL|`dw5K-cU5OB=Z zL6&7XcW`Nv(n#>MW@jQ%iCrD>cd+-9UMh@HN+wl~`6P@9=wIPVBc3V6*URN26zwME8FzZp0Gtw$@o_R}hG6Z{; z>}`t&;2AAi3JcBaM^wy4G|J4G*+d{ovV;jFOEA$9gehb;6Bw_b0UNtLCbGn6q6$aC zrN#!rrMHkW8UzzEnyD!{KcH3g{}MDFWo4l8-ro#}#xi&9h@y!ntlpuE(iIz*@n z%jGVTn@6Tevda)g0Gx?Hi=vDtolk5{qu8r4ac`SZR%wWP+a+!|wn?jvQP!_~<*pn} zNmqwsS~4VEIaF9LBpq?B;;mhbyFd%lVeJB^Ycjj$iDU3etyy#D@sb@xG^c#l923x8 zsx=b8NUNWY3cZ;WT*VVZVNI!?9Hm|LKxtFXv;R(tTj-yZC_&@-D&rr{f42?tAqydu zV5v}qc(8juwviOhgv&S+;(8W*l7RwHR;hrBP1-Vyx_(RL91*{zY6=6%tJytwMZmjL zpqY67%A5h3rWK2I;q^4GLbh6oh!N*NtiJlP0hKxK%5*^Q!2>f>MQEfmzw!o$~6w9Lg z&p%g`zKDO;Y`A4f%kUYH(Hg}P0K?+mlsPCcEbhUuoPr|5N-EAlfno6%oJGz98hr#6 zfgROTE}#0YiFCF=^g$GcLB6gt+RKrg%<#J~WV`i`&q`K4KBrM;zhdL}NmeUHJNekY z{my}u{KHj*7Bx~LmoN$14Dh-q;8{2+S$QF49ZSR2^SUNCCs1D79q%NSd#dy^l-LIA z3oblohmTLI;nm|Wj3Kv6K6{RH!MMlRvT+UgC(eNzqS2Kk=WoP{3D;$!%5PHi(8Tfy zDqScf=uhwryNQ8gp#Y4)Thu9%Q`r%!lbwq?lM)Ca>7m15adB%6^7?9zmYCalk$qf> zpNqFu^e(+{Am>7N!a;@U1-x|5erHdGoZhdH+xiyr?H)3yEGEDiDtf$|kg!f4Pr1zd zWSFx5IVHA6JZ7Ld95+pq|KHXtAO> zcf*LgR#~_l(39A>x9__^NUBX7!TYv}we+gmlr-w+{ZmG^bEjzj9(q1kQGZ5J7-wYZ zjXRis;R7Pq2iY%8N}IrAAn3lh-orRk34D3Rt)e`pOO1ciCK zhPX_~j!fjAMpsg4#A&YJwHMo%r-V@J(EN7^GkekI}PZwcgIM0sm>qP(v` zDtNJSSqs@I87r6Ul)+!*D#c$v!JT_(mZBrq%VK}$O<5Jg7D5Q5P5dYqySe$5S zDU8dLRygp;Ul=&9I|rhW0vF4JC>~m{eN?`I3lxWlA?lnaxOX{8{9HyWxeUpe8^aZ| z8_S2{o%84Qkb!D8l{WMnh5GPzPjyo}=egVBxusk{A=7VetI!hmX%Ktl>PGc)i@flv zn%@E+tIUHSz24pfuT9;POzUJ+U|1XjNFhadqQKw?feKU! zG9hM)0d1rY5NQK;hO;P%Dm5Rmxl2bNV-0fp>?~4hBLAU03=)`PJ^=5^TNNhCdP5~_9h1l&;*9lPiaK%f)P|mf zxx{|-Y$Fs{$hHE)(=Zkk^S)$V?HIft%lr6S!}P3mA;b?==K8AnN$-kzwS zIg6KaF;tZ!GpsSKSmF_D#S)#k0#d3C7{*nC7b99TV;ZN2hUem_F#FBSXdyd-E#$C) z#tqa$V2%LTf#9LO?nPcP%FZH^`V_H8<|ixJ+72-5EigDRV?Py5YLBXD9ajGKJJLLX zNb0j27GZ`u`h0Sv4jRvejK`gq`NqmCUC;{eT}~XA)!$_DecSI;%Imk&^Gu^YA z5lebOs0h9#Z2=Br!6<;3Irz(id|an=^ut$ROyPxAjBlVIq{Cli!buS`Gf60Q2u3oz z_g+;*60r~esw(>Xf4}S&wSZ#zW1Pbp(CCf8RodEt$3A%v;>eY%iTtk(zXxi>my2Ox zs?{HS*$sDT=FBg>qCH^vCm&~Ece+DYgFr+EZlz|Wv zsRm^ZosYldJ;Zh=BjWM}a+qg55jx$2ZmvN0r(u1dn<3B<^q7R$`)Z-P_ahf~3c4YE zp*uGXI!5{ZN}%H?BaW649&}qEuoC%~=6v~NMa4^1{_|cJHIyice0%6uS@{8(mH+fB zt-NVRM$6wF^5wUj9jwq^;8i|V`g|5DhcHidOYim!;LiLCfJ;^Wv&_n$&A!KtwDaXN zMq@K0`gmHx$D!wl>{llA43Mym2p|C>?y^slt?aAxH%_`d9x zyGG!SEwhf>OKoL)lmwAgJ1K)>Fb~={WY<0` zoIhvZY^bT!7a1`bnQz#B_gA3VyFU289kSOgoqi6^V%E7XkB1i@ z!1J$z`najNwG(t}a=DI`^wwkq{>COsEVI`U5xfvH#P-8SXKte2rw)F19L}v9Qwn%? zeKF3i&+RTq_u5R%I3;&j_n|xz92HC~WCr{RL9VOAh5ojBpvk8?|9 zi#cIDmf!-KVnP$gw1}K!ztcYWtq zII1poRxA?7_bDo82QJEOygzeh9BmkRdoB-wuE8PD?wN(p0I-V2uOkl2W2pSjx7VkR zSZbV*6`Ppld<(NA=7gcf#Gy_RZnc#Yva5}W+0May@K4Ak>YRP?fHR?Uolnsa-NJcu z<`1x!bwYu?>K6zX*NwLyAo0)-kb0=|V&6nN=f9e8+VK{L$WF+`W>XZo5|1JCCy34c zrXGJYXAI)ObYX$yxVnJef`xAUEx;k{*J0!Q`8aeJ69<>#^wuWiYRm~yg5i|lo%R(a zJSBJohDvpC^(w?g0rGd+fuCUEo(m)awzr}Q-IeyeY>83Xi*KN%sx9^!L^kg}$o^&D z_jlku4wl}6gQc-buCiAfiG3X-k#}NlMeGE0%-jrLdB8ibR<}S}Mr9}9T^2Itwdh%| z@Jw!ih4lEjq3-SGAP!q zD{7!#?DK|_43(HU`^o!v@BMk5l6&LpsobMKV{WTz88OQi*sVGL8Q|bf@pm??UnpyP$hxWxkNge>nzsb|`-749vSwctEZbgto?doA?wkb>9*kmM zf}^8?*7QOwOSX^TeWbk{-3f9PvcTbol}kXC%QQbuEB0T|3Bvf%h*JDLdqg2gWrUE* z2oOjvB2t)DpxLS(g=mnlzp{&DT>mI#QU(cwa!z_mC%926*#XTWF2q6xgJqM(9>0Zz3g$Vp&GhU z$offnFoDQbL)5_oKMww+B8pzL6J6Sh2|TA=!|ACaNV?i9x8Mi@oCY~<3lR9bS06y` zypyhN_1S;9+?zpkHr3>Wq9*b7GeA=WL35yd(poh@Y&BJ zd-o40b)`NLszzm>`o6B}TVIFz#xcXu=|zuVWx#}z)vWAHRHmErFcbn+{9#IKg9`gj z2uz?yg-e=Oj;Q?J83G&GRtP8T6%@)iOckQ7s60;2l&cy&9N{Up7Mhhuan~S_+*nzN z3&^&zm~^O{b)|i(T!%6dFaz}IcOn#iDTs{90_SRWao_O8)0T2~O-8tEGzHE2=omtT z<$34irh?jQ{z-^<4=GvJ!_^p_4Eq#5nodq*nywXBw&7%JigsH;IuE<@s<07$+EV+p zA{19vSD-~p*m7dUKsT6ZkTC&^VSk27Pjdc7t=g;_n=HzxgeafZ1yaKBLb*1f5Z5h8 z(*?G(anLC84$+P8oD{DrP)k(o$7gadn^&-Bgon(l ziU&aUKTs@|-pQbj;=h?${DE%qZl~?0mSpkf1!EnxW8;Fcc$w>5tq?VqjYeakc2z;^ z`W}YNA$nw{r;Wzh z5b;+F%__AJv8Hzmx(ikhDqed z-@4n^eTokJOMbN8ICD6On|n(F8UROVm^1T|^%{snQ&}FvDi-61g#%!GJsP+C844{h z3QpL(_)-Xw=OM{*UlK`n`7Abk9tis*#Mt_MHCkVGiWWUw4(O-^tyk(!3(q>-ouDTH zNPqnPC9m@n`8#k*XMf4R+j9Eg7@nZ~Iqc>NuUK^RlFwVL0Q&xmE};HI{*-}BjJ!RT zs{aT*vNNmh@b*A%R`*c+O{Wec3nSZDsQo;x$e5bj?qihcf4(S~)oOrQ1Y>T1rrQ1d zZY=0zM zFvxfgU30HMXzK3q=J=uASgC}C%*HxWP3`Hrb#_sy8!QFM(>@*3{T*%P`0VaH#Kst( z%`%SFR<;>|-0l(jPsR`Bi+nt#@rATpN6V8%GKj_}TiEi7qHozh|1lc3tdx<}$3w;8>%SJoan z1ju+Y{N4Pz0uDq7lU*QI-8%GX>4nbHdQ=U=0&RHiDX&?_pbhEE#fC{*ti^)SYL16w zX7r!@^A_KO#fR7jfk<&(yY2Yb55z!(a~#i;j(-9d)$s?;LB|KCPe11e$gYQA0J#?P zFTygg7%^VTHr3^a%t^VSZ{QT%aW`=aUW;_F+OkbrWFc=%d8?PjwMF|;K9@kaejl=M zlE2D$GFZ|cD%%#)#^V&M5A>|{+QRL~6M~ksD8bA_eqF&1~c;6Y64i^>7 z8LAr>6@-SYP{70L-u<&uf#*gpPBOhhA5F%Y0A4dzdh8e^LY!CyI zp*O4UP(+*qr*4C3iyew~{!VAqp4M;PHA>N+8@w`jLPa#OK{H5oF0=I6KC{q@MhvzJo2ji>A*EARAG z!lE(fp&>too$pkYeX1=y21RNOPqD4Z`r>%1h*fJnct zvMZ}@zsBrXmc$k9-j77vdn&q;A=ezc=+W7}s;nKsvc#NyJ>crF0&*Ivo7T&XnAncl z6yLYU z4QZ8KA!DoUfA!tOsd-xTLA(pk8{wnGf-(%vA936%yNpZy?UhIR5}i!_@|$)-7zj|n zMF6FM#F?&!K`FSZGyE`n9I*)B$5GP1%YT4AUBR;@KGvsSbX-`k%|u zGcbwYvVV0IJ82#pfis8lYVUu93_0!n2Yjosx!GqAxf){!BI)M*4qu?BEzvOmZNQL> zj|>HwONhza0nnjWOnyG{+gqUgYWwX@?Fi31(pNhYf+f>NMZf#)U%p`{y8qM1Ts;?} zU3YmMi!WQ-U~A#Jd>PHt4bi2zkp0CI@wje|37Hq?2CYz$9*Epnq-WLPG{GB-uuk|X zduV(%QJ|OgUON&4$GbSiC(wdmWxfZF>%J}!Sz9y{EzDk>qx*a<3CLt!t5{cMHWY2a zYb-*aQ=wxA3hohC2fI&jP-_bhY(R04Grd9U4@HcD8Z>V!TE;|W&tLm3iI54}ZL^2= z&hj}8M4**_%;T(>=XE`hZ!g-6IG9Gevk8w?kX5(E^|E!^Z`yJ@YR^q&e{2V%W$uSq zzt@fr0wh&KhqmZK?1T{rCiSZQ{Q-A<>kA~MwqOmm;R71}!eDbPdNDG1Fb2(=rEwhZ zN;_6ZZib2FE!zyg{Ay#3tOTjqo=?uof((h8hpqtiMUdlFW zi+&6cv9q<9n9g#ck8Z5nFVNmlGyyNO=*hGeql%!_P}GGtSohwG+<`{*$PTsfy2^a0 zsE4KC+KVd-U~>PdqqOLpv8*L(69Fh@Cf=i%4zx39JtX5LU+d~MSH@#q&$my7!w%Qe zDsW|Lz<^7bZBu908PS_j0=9d~-<#D3ZXCk*a(OpOz2o$k5gnzz+^Q~}>e8z&J-8Ur zvsH4=BdZN#h_UIDcgsuhE`0hZplSwQ)PB7^${mcKSu<;+qlG@fUzDQ2-Q3oiRR`f*4(S5>Mp#I=#yLYf%l#Afd(N z+E8>Wt{7ETkrXk|bOg(u&~CaMVV48pwMBoB3ZoYR??H2IQP|BxI6&QVG$({JzexCe zGluKl7XuuRj>$0#HKfo>dP&nunJo)0Aa{3Gl+qruq74`RTx7_&1&l1iYy0Dz+2XmP zx^N`h4MRkW=HsrSu{2;!d>dx89SDD#BMNebHh~Y2u^)hFIU!JuLm#w;gOI)ts;wp| z|8FNJ(H(dMVLNqaaAJuQg%S5DiU#+5}!uYuUH9Yx-KOXP)qv(CL zhJT@=Nbm5vd}GUKe8Jp8+i5;Pu0`L&7q3aeTW*tz(IioS-a-PjCtHhl;SPt60Q4ak zE2}AQ)-`O_qR--eb-XQCTiIE^GcgH?7QK`z)x**AL)`-ZLIfeyMBD+#i=2olP8HL6 zY%F>T`8EDlakbI(ZQL5x7{1sLB_H#b!qE&g0UK*5YwS*xkKhLq?6BHsz5$;qV)xxB zm*w2k4qB7+*tth)qzmd=j7E4plV7o!2d@z|wuVnbTG`)~4evmafC%Z}yGU6!By3?k zX5}HJ7Cm2bTV$H>^#LI0>mVKMRh`eo<}A1c&MXX>XTsL7q(%eIC9FzdPETuj8_;c>Cz%kA{UBK(onF7#@@;%tdz41@kB1g(|Dp=n6Pi!~tnl;m-9zMuSWb7mN`dORh=|CeGgg`vwUc zzz%g0RKeiDN?=6OgP<}=5yGXc^yuUm_Kk<6vKA5t2CjC-G{5O*Y;KtvDYcs>vw}z~5rm2aHL{KF zqm9bdh{?d||GXPgk14X9jp{Tu5}&>y3mpMO!{LJoe)PZn-_!9d!z4b0or%=_AHgku zVdpHW6>b>MyhMmV0COe1z9-|8wP&9Y$_44;HKG5JaQ%tpjQIGht((6_dW zh#u$c%0ZetD-9H_?R_fc3 z{@;ejDwnlaF3oo7NhUEC&YtbV{%*1}LXDA6wUVl-m=Gz4mIb#Z1Q^g^kA-#(9k8+- zf2!b)iSjMB2I_wN0Y3VeddE=Z=q?E%K!-`(L3hbMK@?-N z58$lEt?DxRouirk)qR+1X;#0MB96OD_@EOhDoqG(&>9YxVP1WKVCQh#dV&y!(3YCp zl0EOi;ceTcS{U+@zV?UEpBIyEjMh?KgnbmD2o^WUHfX%?Rd0xP0iQ!5RI&0e8xE2- z7_pvC@W;PE=fKE^G9X!5qPF@jHqbu@R>{yJmH<5S4agorC>h?@3AzFBH0DsS>Zquwl+Y*f60Qj6I*9yb z!?YDDh^v+VqsQqb8qug{ZBFrOVk^j^gFOTp`W+Au9&1o92cdKpRsA&@4N2&EK33~? z;RfMRwh%cm-lHfCsN__mnGHY~E@=FOFe$&3{;%-m91p{oxM7j%$fFpc!O(74L|AGx z2ZlK$Ig=<|)KC^!R%|~t3l_85tIa+@MJx^%mqIz31dYcSfGb6s9Pk0{Tvnh+Q-k zD%EUbTN-<9%U~})rPzy4U@b*b3jZlFm;_vg3{U!N4KjaY=IvUa6#eIS-tBY##A%%r zIUH9*au}@V`;@IZ2f3F5way(thC2{?5=sr*fn|r=N1)sovUCbl9_{aBrd}XSYZ!|j)a?r zB5Fsf{@{??L{&*yEF1&iskLYS@KtR77kk=`%;z!(h@U*!&-jJ#F4-IqK?v`Cys8Xt zSuraR;f>Pw+8Lp&w}OUiG8=8dl1^>mg?)i7!wU~6xBu&Df(12PzF7%fh!K+DCh`8 zK7u#kF0_h40NHAHID!--DzugDNHS83K8*}+OmsQPEwXVWh@wWlWux#k7f-=>S1E_G z&~VHzZY}IHhUvqJPxh=QQ(#x&$tBvrN;-bjxb|vb+0c+BHQ4`m$82obSGl|qU5|9+ zU?!sw1qn`#%3`+#7(y_pD$OIl6@zLVy~M`g0|4qUMPY$_=9iW2Vl-A_x=0B*qjGG} zoLJl*Jqw)zEy1$UxJ0LV_Qo7I&;!dbw^>za4*_f>Vsaa<$^&Rc*@&b*<-7v~qk=Tp zNo&lK1YZc`bF@Gi+g>AtvQnZTiBdmM%4+SGq#diElR5omPbvRc{)z0Ren6~mMtjqve z?+Ofm3JH23L?E|&sX1(rm_}q~xB<0>=kQJ@DXIZRq<4rWLE9>fjqn?>MrDU=0STd; zvA6_{4mBTx62i_FoU1_R;2Fs6tGl|IF8Z;!&#C)yF!CvAsJRzN1_lJaUh^lvpBhi|*usO0f=`3gE%W&i=8mL8OWCz2zj3SK%^p+Gcn%K+-R zNaQ&WnaF;4+bqfofg>F~^u9I4#g%y5y24H2o#;Jr3~SMkkxzz9Kn%fJC`}lFzktQZ zOZ}@dA3sjQJZX`u314K>{w+95jess8zA;6!jO!kvOY!7v!JmPkD+F}?A zQfp#%;GqLgJ@mT$<&^Eb(8udQIz?ERd)IzwD8fySAf}Y^jk?%+Pw}uMK$-o@`?E-U z*(x)V{q(Mj0MVwlM zQ^P!;5;lfajIW5uiNE@qQ9wI>VdpuXnl}IqtbQ*^1AUMkcwoO(^!TFtwdkKff7*)D z$gb>i?Y0e>;Aha(6)3MyK~liqr2t>`s-wYDmDkw<9}?wMFYl0anh5kI-5k zb!#YVUE`CK7ggREGrhhn`nyO zg}-Tb+Z)ZZ#lOVa+N|=GS>-Eo+oQK5%_v7Z0uyY2)FWdFlB!!d&sO7*2Sv*+cpeiB z-xM%917b6AZB`*tZ9xYI3@or%E}UQr3*h}&yiYaL`54tK!-S;F!vr4A!y~5Suu}E5 z*IGg4O&TDoG@h+6CD>Ah@uXwq12C-EdRiEZ#hFbv<8Sw6&_TmUj$G72AOS79?<sc<(%1r^{myq#BqIB9LZ`x5ht#V;xvb>lu4E+@vFHy_IA{ea z{gSc`-dIEG)>b@?p#+LWlcX8`bYS>8=&5a0MyE0)iH#uEnDp&mcx5PApe~o9a7^h~ zY@L}mW2GoFwExAX4jE4-^8dd6ZWMyU(zZF(NET%1cK*T`a@g?h2O_=G=2u!%{}9bf}~w5wV(2(7^9bki{2*Twgkjg|cW-@rKjLrjE zTJ#}gt6r7wbN+%GPQhG?E2ll8zmqRn2)r$CrfUria&w**T_B$h_Bosbs9rS+hg-?b zfj;LF++^}rN@9sWh-|BOA(XUM5b!A2pOoK7WeN6Ii<$BJPnj*H`siZ%5e?hS4>1##^=n!kWaJO5G z&At>CtFfFWzY?ZMO{hTYN|>&PgD9zji@mMYZ$m#Q`HIO;!8JXR6~_DVw+gC^4}$UT zLU=StTySy+;VlRnADSYnoqLgW8MbH$=dL1-fuP_04G3C|Gy9UTSCB>3eGQ@%^A~p3qbs4DByzOq zkN4Dfe``!)(WN^VP+%?{PN%Iv zgSWdO^5BBmnIreN$wF#k5?V858kEK!!J6yO>!Sb&JN^7(Z*~(hW)`T~!@GH38pfS% zV1?a+bN4jPGzeR|bcKS_O33IEZyGI1|9%D+Ke&(ES?EdCS>!?Ktb;HTyPb6syK#5O zIcLt^(a~}e%RqEw$*d^WI+|x4h6NS5NEa}s4ha~nm-B5TZ^~zNHbGwiIQHJg^MLOtm3i`oM`5Z3HT=-y=|iOn5E8>1XTmCpDn zdvO3PJ~*-xt4h{z$iy$~oJ|Tnu0p~;nBU=Qxww+GQ0 z)vg-{;#JlTAcV;tczs~Gk8YP_MwIdiPr@*;gVhsd9q5b_4TGRGCs1Gp4@0peNMrI4 zYy;^_j%kG07`+I|V$nNPaWhnL=K}Q)4#yPaS_MA!s_pt3$UoJZzu_(=z9AtgzCT_H zeMg-Z0mY*nMc_099TzA^DBby#l62K@pK~YDSL6H;=l60m)aU$CZua##hTQmlPFQY+ z__}YXh6dSPTfJ(Sulwq1#Cq(WS&f}!-9N5gwU4j+N7bti@O4kGUNyqkJ+*pOp09gy zHHPHwifRlh-KUS)*!|t=RY&-`Pp)3|HDC7$)vFHobr)B!Iug5os#hK5>pr}C)nUHw zgQ`~@;=@vmRS4s_Z}qA|U-!`JRR>|d98(S(;ZS#tHf60D7FE4DqXG}?zlzJebSvkT z+c9wc6(Jj!WtSKC28@mXvX+N;WzkzCF2M?{`v?s0aq$U4$MFx;_KfA!K8+5wZpb-C z4#nGzC~l7I70K7XhEgkx4(N~G(2RQw&Cq5sG(XOvxeDeuh80k(8djcjegx@>whqp4 z3y%07q)fvf1(rdT0uR8hD&vWYMj0KPr}rf9j>7!AtFH_+#HO(cD)&@^deY=xjI;r+ zffKB_N-c(OYDUgDfR!moAot00L9A8}np2O2M!t{YAYn+;6Z!5iKvn~@asX(IUWSJx z-_2BC$age7YVfG7Y@Lluh1pb#3s`9`E&8prkFSM6MG283u^GlBw)l zb~XC;3PD5Dm4dQncKCog0rm$-w_r|4={htf@C!S~q@c|h!v`*=@4!S`S&DfLe>3tw z=&2z|^$M`@7nY6a17Y#A45Xg}PXo3L=BT1uOxA$3lR$%X1ZbCcF>Tg{&ydGBDSbN* ztZ(5{WFC;HTT!~gz%p&p3(dv21mpkl!xI`BzBM@fNmw!Da!3`$A)ebdM z%hIKg02Y363|ztU9;iXO z{_@|x<=$C7Wx2VwhbyQtV=xsE!@k7C<~E8F#lvG^N5^v6*>+y@?ilf8m2sTz*6G~G#SQJT^5t|_5< zMa>DT<0#Sjs&kgJb3(>^Y{S_f5=z9fVX0n`13gd*g><7ueJEy8MkAf-72({y=@m>D zkX*3AoZVunZn4~Mxr&_tEGjd`r~l9LECtY6_TIQutp5tk#-_kVZ-?JAmVx(83t z)Rq8rT<*scXRVgtTCLS?;LH_^!u^xg+P`s3)bsJvNUUn~aHXnC%C6i5H<2l3x`5vy!N&`M$EL4%B<+K%>C^?b? zi_i^dk>m?M=rb-+L#GDCcH)Wj1v19-a7y!a)V2e|+dMyL$PiCtEh5+FO}qU)bmxu= zK;;Ibf(;`jn*{)8<8-S zr<07NV*l>O>9{og!Q8fd%B1DX;nYg6{!P^?uT`{W%sA;q)P+}Gj=RmQo zy}TODJ8=o_c+u?(w;yIrXHPh}f$&G!-s<7#!GJL)tB_)%?zW3tba;F8PLxZOQve9A z^SoK&V;hpVcFsZ*0xfN*&P}RY)5`7pbFfECtxxu*KrwmrBwS#R z2rrFIi*VuK62letnG7;9>HL`W3$!@a#JEc!RSsJasK4hW*2MA3c^g$kc469EP+x~Q zP|Ml&WpA7IJSKVr*Ut#X^r6EfsFf5mX<(&WENV0ap(x?=g1+&+~$?80* zR*lY3$T$}{c5jm^{|3Acy6bg7pOl}=j-dJlZhZ(BGmxuX54xEJ)O7Kc95ZLS3YQPn z8P*Vib~#n?2eb7xNX1{+smI^FG9fu2peJ1uaxtDf_a!wnd`WMXDYiBAOjh15Cf=|I zhr#kD3fXAE;TmM*FN`&e7}s$&vb#zk%pOzzcxZ5z#&~EIv;A^#w!7Zw ztqIs=ZG6~wX}a(Nx`RA`s(Vp`{V}GVj2$?(m$Pr!&%Heuf47j99uwgzd4M4%PA;)R zY?N|sWhHhsMJv$U#>$Ig(TTVTe>|%0V2~YleiR~m3;u!3b~#1uT*KFVE_x2e*9^Jb zM^OmHy+$srvv9$_u-Uj^7eOs9zyS+K9d&qWlnP?e>u?Wne9{CgGDO6W=#@yuH8jO| zY2OCljs9nBk4V&N?kB8Gv_tpWAaAB5$q*83vpoRb3}+aNQVZb*S`FnP>S=?rK~_>z z1a=`8*9(!8xZ%bYfMj^%V-FsK7B(HCKKoBHu*)uCy9xJ!#)m|NmTzy*sx9J3emauF z++V&JaMfKB*xn$^o3d(uIHt{c^U*|tOEBf5^8%h4Wto;jIj}_K$?XYOR46+FC;GTD z17u=f(D_2bY`PU`ooVD{EB~cmJ>cy)9&NvU@r|IvcIh&w7L}0f%3~)sikyp$&w>vF zO*O`6qed!tP{nvovJxl=af0I#@fNX7uvBI_^}2L|{9&N~Mu`k+L|B|zu>mL%{t6Nz z4q+1UspwF1;{*;ug>VZJ6xcxo&bf?x;jNs%;M8IJ>XJLb(z59luk4$-&?0Wn{ra6g z=R{PK`t*c+!e-HR_6;ZC>nMChj_JQa?1>sHQNI7JL}!|`VDt?)qe(T%A1IaJK5 z@($oGds!Tg;@*^6w%I%I)pnJwa8(38+n<@V388Ol}QW6f0HcMJdCr`%h3QW6ge(7A%_yv08!y(aQ|e@{Y9 zclGQRxX)1KQb-CF^!l4p7wTS&x)b?PRQZKe(%4M6w=0{d_B(w@=++G{Bx21pj&@tw zUL@JuMu%G&8^DJn1Kd@UVs)Kxiz^vwr1gt_w>OgE3uIew1t&Z?QDQ@Y`mL2AuHOHx z2h$e-tp}+r2PE3> z_ze{!3i0Hdj2o);2ta~pQ}rL^B4^#!koikm;vut2|PniAAY`G@~<)f4wk)uNK;kX zq@7jfb#P{Ly?CJ({R7fenF|n2Z+(Sv9bz1xp+`3O^~kz{Ape#9yRIFM%AglH`24h|Ln~W$rg?x8Kvl~UHd*qlz zH&!>J-8=2S&y@{aIOe4`3b#`X%(Z((^C8 zz&Yg?NNUveq{Wgh+9#zvN_~Zhm0hYM(3cIRN}^U4BI|l>MHb?l%pZwmzqO^2-VwDY zMSAmU_v@}i%{dG!bE+P>KG#?K?T{IO<&pP?MiM`QoPPZ4yM6ew@0{H3LvS5hhbWc- ze~+HXtz$emzZ1?H;#-e~&O{XedcR++Pla>TE$qBc#2G7Z27(;{Rh?lhyf;Eca3xn1 zLG{dg^)4C@AwTdDvcA95vxSA;oivgQNE^;ClJWwMWj`{2GZP zv|_THZH=jN;*ydvF&!UMW>om>uTlxGk%XjA=Xtg#v&gnZsg%#(3FzvETCW4{jhJ>9furV*PZwfK@2e}=U`puLvnQ8 z>vymo>{38_F`nuVwiDt)?E~|F1RzdlyIavRB2(^zuZRkoiKtnposjIq3ne?3Avg`J zEHkj>vjPQ)%DJ`w*RbTpGJPJMn^{HOZ&H2HE`@N3W_M90V%Nk{siKmK>qguLPd(h0 zK;kp|M%(0x zlXYuqE~4v#aedwJrns+h!cnSc{yY6 zd;p-q`*x_rXuZC`SBt1s;9N7W=_XeU{P&l4`_@l$qj*xJl|!VdlN*>);z$Pz^b&?p z7>37WKzSX3z)?6NGxX?Xm3D2uo@m26M6jM!ZZEybUWUx{3|R$EF(h7jssNlr#88neNgfOulpXwaqOG;4n7V5^65Sn9swF`9fv}b;SGh0?pf#{uB zP>rBz#kx5iCi^wnn3e9(bHel$Mb`Q2u?-jc#Tz?7`qNRu!~*Ng#8I27jp@jF;aENK zxNhJAsr+?q?M8ja3%WHTs7G$>uo;%v8jAV*@*XtplLl$p^Lq5(burx>#vI?&Bl97` zM~BRb7$18_&K_E2miHp@Q<50q7Xp0X@;JasT=H>!hC87C?HH-giwKCbnJatX7?{_k zl^`DHhRO~#h;_2*X0Q-#ECxX6e}u*`&-LQ~f|ekBPzU~_+DC06GT-m38yT`D7OLG> zaJpZL0w7sv@v_U1U!P)7FYVF#@ znC%}-(ykeLLN!*>wPCuy9cR`&-&Gm?PwnXeZSA87cON>6Av73OGdS)??Y(scL2D?& z6HNuKssPd!dtA>Q*!xm@b^v2hqPpU!u7L4q9Y)q&Sr0?n`DzbE+0VC)*&b~x*P7b3 zwQX*pM&%MzR=YtyBWmQdVAiL>$YVh827lF2pGp8$P#lHrLNa4g=M+X=^+At|*IJ z2N~U@1dMHs?+G4-t!~0O8z2y|0c3v@0De|6a;p@Q$nUXK-p?jRawtX~GY1kQ zkmNObOWmb&YA(I%nmPKIj^L`RuDRsui)UYRNpQ^O;OdKKUwZYWmtB8laLlIQnmL!& zUjO4uF0BoYc}BNtd4A8ZkTD%|7E{1>7b0-v6o`}Q#S%MoA{5Svq%mSQLWP z2?T~@RI8CAkT6VAnGKB_@2`VM$5|>*;V>kOYQbFl__swGV2M3wqZm>!yZ}@3Eym^5 ztBlKQhiWUoe`t6<#zEXoJhU2NEN*M-er`JYO9}ll2xGyRnKx&F2;%%_%)5c%iG{&P zZ=&|_o?t@Ht;>ff_dbwEJGOk!8Wj#%LpKK_ZCe=V(FBN7 zbDfvrZ@25)V*+%2)Sz-+s1rPOcKG+sY75t&f0h@}Xz=d5cXhK7*DSrEthoP26 z=9l{rQH3Yu2rdcZ{~;AilLqvK)y@1!GIO2)5{Z}Fm$~_h2?bi$$H+vaZiJ_{mk11b zn{Q;xFc|fqrc&xs#~H*pQ6m&Bn8~|0nJke%3<(HV;qHq6lq!vxH#?cnE50K(K=I#8 zCQIbsg9K^CmwWo8Ya(NzS60x{8EX8X7J5k})Oe(Kl(y(mu}t!|FHGOA9=RbGL+_tO z#EnO9<-PJVwiw`)v$bUe2S)_ZX2sE4EFrQED$8a`;IzG;4JnDERjkG~)@4lVu|I{k z0OSEBHMRxs>^ZRbaW;sJmsLGl1E(3qTt)~SxsB(lvJL^X8HFEl6Xbq+ZCvx9uj=Na zTAmsa<`@8RxFR*0N`r*d)9>2OoS)Sel z+W?hIG8vRxF5OaFAZa6Wq5hIfP&0VYL@y4U2Py2+0har_ITJIlqu>xn@#L`(j^`a0+iL{p{N4R_MImAbb=qr{ws5yYxZ4A%gBT&UPN=(?) z{c8_FgR7+mSJaB|SsPK9FZb-uG~!nIcq+^Z$$W|YMmGm!FMYk!&zVLyB6|CJoUWD7 z8ty^giTU-z0vLa_KY}rpv>0}DR$24?h&)_(1mEpLD9WsXnOWFW^&9$z$Ek6GOo@Wub2vT?bLe=o(yMYEOBJrmzUa?cDeJo`PA547) z&^!~}1Af~6(znp$bbd-^_z<}V;iFV3_Hq>9rWz2ZeR`m+f8kJn@rQ8 z((IU}(wu`dtna2RcrV5C#(wl@DV~Ip%G#^4u645>&f+5vFNNIkL4mPu;hjB065W(b zX_Tzg&nGi)p_}v7d2XeJcrTUm#{NDk6xAQSM#7z1Vcx52r-pqcE@*M0#_L%acj*4TkKwv9A!~ zi7lL7tKA=ZYaNW6bp_7XQ6|nY@ooCuI2={{)3XXrMTDBASuK1K(BLRD&dkLroEx&B z(LujRmt*igQu%bfj|_N*M|vF9`6Ko>Fy~SQr(w{-DQu3F zbLw@p4o1WfEHSY)XrAM*GA9-2mQ~LF`THST5m@pr-gA4rT%uEP32>jS&p8I=VdMR{ zNx51*SNT<%_bpWxdI%Ue|ewY_tok8U9 zU%{jSN_7ebZ3!nEoFAgpzK|>*JP#~ypEH_y*5Z!8aF8c*jp;%U=SVa)*kK*O@62m6 z@H>f`y-&L(3$;Q$DsXPk?O*Y!gICPxGtOVBO0{@)QEXZP4zW9m`o(HLY&WE6xzIo0ZJdey7#*wGWyet;}X(iS&T(C+_rHrd0lapc@10?IE3ii14q2wWyzcqEg}YvaoA)a#IOaUlSgghrrP^Ji&(97I_X?Lk#& zn4rT96rwOCs{?SIMGH^>s+w74-V;N*D)W(Baj{Q4n$FR?hy^Sp9SC1IeYga+n1`uK zB2A&G5{|e_am?NY1sKc$(llu2tpbEU%B}%OUASPeO)iQzmlGOn+?Br7Ze88qE?@CHD33v+eEHGb1<4U<+ZE}} zMcfb|MC8UNv(h+Nf7sJOgJswGwdj~!Ak4CKg@!^jpxE9AFgV;}8CcE4&S;c{p)S{L z8BRB_F9I-0Fs&`f4Xk(J;@q3rs3j=C-r;uzZQ-l~GlXn8a&-GaCWRi>hN0k~C42~m zvymHA&OR1AUj=wb#~{+NI71d^RaX`ECB#a6bqNtis47AP39*G(T1}n=sOR#6i1WCB zUrCKA;;B*J#^QoF&HQWKh`)wK-wpDHc|nk4T#z>=7YSdg`J0yVsbm`d!C_T`v)9bl z7QDh1$~Ih(xkD~ZoxB*+Izy^2-TwrbN-EoxQVYCw?$ zFbSv__uv}$n+7rBLeT1bzu$ZAoh1v4{rdf%|2$7}x3j+IJ@0nj^B&Bf-@B76DvmFtwsRz?KSmT2#r4 zzNilu)LO%fLuwYWx%ftK;RqD|UvxYE>x&e&EV@g5FTjP3=LL9y+okHZ7q`vo7Oh#) zfm`2l`XZ>)qj91zNQ8jdn(YS6W6==1A4eh(ao9v`HcW>X{KCp_BQfXk$mv@!F|Wa2 z5RZV^Qx%U(+f#v&A*5oJ4U@`9Bc;ec;eUTx<^NF)q6dRFgI%yWAJNt=!X3Kmv7rg} zRgg@+=YV|s3w+CgqAA@i$lt#Sb6xB&SQmfco_+e!pfwpBzd=OGA%;=51jn&HX&43T z@GW5&O&LaK(yL)~CcQI^K8Ec}=}trADNA57aI`!a6|%rQc|99l#0{q(cH$B%u>Y3m z0C}NLE>bIC(Fho|gRCt9*f{YUkqZ-_`0vVF)XYo1k}VV&aOE#5X8~&K5O*6Jp=OX8 z59=`IH1*7e5a9NsQ9fhtn1Gx^0;xV47`xf`EXhO9!G7a6yCdcYmd{=s-ZMJkDXnLO z?^()cpdJdBeb_<1%WGQ8=N>=8xbM>ETMpg>oM&x-I6F&fhIc{z7eW03ERmj#B~qS= z`+E;I*1$KAOF_0AF&>Aa3%7Ph zG9h>ram$y4$PBy$ja4XYDxf$Vxf0)EG}hs`#1TVgDmEzce$h?%50m_98pf8GP5W0YAKRVOFRA8JK8EJt(2RnpOurYlM zUVHGGSc-X@rzpF>2v?AGKlYCL9SQ~b5ElL6L%<|M#HJg74*_HIAWUjP1cajx7ZBGP zUK9`No{1He!8bDH*`6ekIqqRqun|EMSox7!exWmkWAt-Oa)~wpS-O2N41mC6oOmy5 z!XjqF81wCU$^ta~a>q2W!=>4>!ju2r>2|RBPj&BfHlw}~t&iE0>J@p&JjU+AA1?bD zU0{jU8=voVTQCr^F5-s-mbvuT3W)BVZUGHl!U!s1I#c$Q7e3wD#z-OTh!i3{`t#2j zlt!!cvz@IQy?=Zrdk+#pjE-jScIi$JgOPcKQwGUjG`sDRoi2ko^~SwN$tuN8ObHu_ z`#u=7WpRD&f7t>)~b`|8{MS=}(A-Y5x z9KBGQaL->@Gk!s5pUC&wzNQSkfZzQp4f|xx%=0cF&a7xJ+VQjjw69lGkgKUeh!suOG+j1*I7cOiO7^Uf#o!pS}T<{0!(6 zrC{@$C|nnO{b6*LenSr3>RBh9BJ~M5aOlaIrBCn}rTgd;4#d;`csfLDqUtKeO+j&J zkhF(%SY8&hJ?3PTqUx~f3vt}Nc-6@Fz59O;rhka<)Y9eqR)Ogm&|D{HSo7*Wi~9;3XCl+CP^(V_kVYyX;gvoC@-U_O2_OzIoB~*yxY|o`M@#9HHsw+HPpKOR zg~vycHck0BJh5ssRAc>;Eft^9(gJXSCDy_6qP_viA#*}n_t%hDL7iUW$_k-=e-qwQ zKDXP2dwl|A7ji+i4+ISDQ%FTg62EY_f&W?)br<}?J#*ttqogSBE<-b5#Q{#RUH1-0 zyUa6SBu1M)o+raohT$pK5H`n^Ra)fAnxe6BVA46R{D~I0qH6QRzLImsac1oXFXQb^%i5oR@>O!pBsv{x2sO<3{dZ?0C{dTl-g#h_kqp|w>9 zFG#%p*6Ln~lQI2BrfAKF2vCQvIqp|Ff{H1lk@{n@635RltP6}1sxTv;$@ z3RYnTG$IZA59D8JpWra31ISoFQ^F;i<&&|Ziz&?APp~Zt=JZDE^=B7DI(za2wz)+A z=Lzh$tqm1^*Zn-kSTn>(0x`8+zR4JBIyN1->znY#m4)L`)-(WmNs<}%2{ijwp)8Z# zu-@%nJjAATN7e)2SR6XS4D6`2X6I$TA%vzMrz;$vc|m-7?64F`*r>^-pp*HiU7Bmq z(rmUU(2C6%zt`c3`U}SLM)nZCr8YsyvqI4>5;_lF03P7&C*cJJol>nI0yXv=1j?f! zQKNOq4WvBt!zj(=mL*akQ74cH^yZ8rl;uUTKI`f|zKrV6uuhTnvxb8V7J&?sd_vI@ zvgpAxYQ7EyS2xB;l;J0%1>^DeAzcB+nZ4Q;RmxLhA}DUAK25>AyF3o_AxTn#csbS1 z_t{0yYawofWLPB{A@opQAlgh4zPyI% zArwse+bvLKeg#lwP#_4^N2_oXYDU^JI01Sw-?SiXx=-x>o@S-38sE-mPW_+ zqAgnf_gc&M!?k5!Zc;zZ^(eNIyh3-L%eK}8Q?XlR)iTN*>^G=|-U?R?SN&`dZlDPo z=&{nlSojBJSvKF+B4D4?%N zWMl{mcx^t0y*z}SBoLMVat65=qM2DMZd-tGG;Ii7NJf?|jEwIW!D8!MnSlZeArQ|Y zu9O8Y*~A(GsqeuHr2==@<#usnK>sNa*_3+K_+W8Q)yZ1%oQkV|&B$*0+tx$$L#bUY z%`*HI+9mCB3slwp6~WZ4z9v4ix)Dz=PU&gFLcHo6v7{<`7nx2Jrg=z?#ULSNcmw} z3wg~mqGLBZGKF3rMq!Rfk?*gJ%M_URj!aQ593coYi|yVZ6n!8R(14qfHIUyKXz9bj z&HJvqEbr03K080?dK5rxCXG@M(CqO@ZHG%>Bc9lE2oP8;@odt6CR!zxgZC zOs|DRVU?Ie{ zEsNSznYk#>N3F<`*PMS5_q+UZvA9F*B6Mk@3oD=?h>7&pt?be+y z&6Fu&z5d2vb9b9PGZ%3(VO)sd);K7a1F3UAGF!t58=w4~p+ae$nSYYZe6U@!5uX$R z$XQO@Cg*+oPyGpij9~p*nfV3C#g<^kDQps4MDx@z+dd0>apv0^fc5Xk$dp$sVfn(B zl^{#jd^uW*1({BK3Sq01uxJnoI5_tCw!8&pqYGd7({L)5{ICJXkH!3lEj+;|GOBzc zM@SZu2Jwk(b^B^DX~DMP6ZsZ=BEcVUF4H^QQrq$|d?Hul;M*~r*8!shTY!vdWBLNc z!7*VFG6jZ33sF9dr+48}&26$dJ$r)dj{(;YW2aV7Z?&%7M0cm&VCu(8n>42{fh>bB zGDS`HDUiP*(6SX%^s8R=!xU{-hfGc~cYg^fcxotpG#voSR1M>a6=Q1l*_tXk@FvQ| z2h~2U61Qw4($x6OiE!rZ3q)TEVBb1o>*2jmZwu9b5eFNhrm9&>z@eM%yx_PvxlqEe z$I%(iMoA{KR+5UeA=;1#9P`)51dhw(mI4RyZpWuAj&qU9rMVWvJ`6dxgkNKbIQd4~;-Quq?V^aA(w3^0pcOa#cb+$Rp_dVOZ6W}KjAI)Yzpwo)Gv=^JbX z@Y1n^i&MObMVeQ*0Unv9UA`@^YmwC!I6i_eYQ`J{3h_4sgr8I&Xmfc0v5WrAKv-_z z_0?jz0(1F8!-qT!EWcTC zNGIq?oI?uHOY_1b2twPm)r6;i34ocl+NZy$MPGK+&jNLT%+-gE^x}$6i5w0N$$bT( zc3TbyNJI|rlxZ>hh1j&1Cbygx9E6>i7S(_%^_m1tUxL1otsrrk<|@s zzQG#SaAH)kv_NU!L{Au3?A=27>8Gv|7Pln4q z-UF2^!*-u_+^=P8iU9*={yMGY-|5yNNG!YWtH9N;=PL8X5`vjs=Qh+srYgY&TVGVm zJ$9q%TxIMx5}!3HFZ*hdxfm;m?Kn;&vq8#;zJ{&uo*uTEW8~~(ZRtwKUe-WrJ7#WI z!Zy~uR%7*+F^gocg6w6f0X>_Gh%mCDybS-bqnzPjJctT=3EEp6G|tb!w*T)KP$Z9A z6iBcOs*jel9S;P3v88^@XbUQLI1pKb>8!RZe1h!?LA@Bhf*F|AKgM??%)*S)wtS!& zs7Nyk0G*r^>>4DXj460?2D}tYqJ7q^Rh*$mAsPc{9&(AS*dmdI0!< z!fOTq*1ZlCjsfVr+=O2yoAApqS~ape#|}Iody5jrq(Y4eN8@^A#3ug&8zl^ec{no< zgwLAX0?mBB|>i137% zySoO^XUw1Y!~qLR?d#sKG8$FPS3-XE-{}jnkgIOSu9{KX3`i`2k0-si;XD14tL{bI z1x@d;-k|F-`3zEn=utuA#DIBA7$24Ur%wW4^oCq5Vk{?4y?!u0Mm{@WvU$=qEuW`j ze*g}6<3y?M6{YQ~z-yoM26t(6<1Ji$-Kd%|ULtFU^#)vz-NNVUO|+aGhOa4j3K+Lg z-w(9O6N*ad4MhIIbU#uA8XhgnXd4bCB&BCJRg)~D0D=XI#Yyy195|Pf@=|`1i-8Rm zPb}({8)+!<3I8}(g*_d(zY~TbV;6JkPg-ykW@hii)!08^ABG*k zK1GNU*i8*lQiK&WYG!u|FcOpwGZ5Y8i&}j4g=??@729C(Vl}_^q~X6imPX=d_uI#Y z9dJ)#T1k@!-)%h=`~F_7+Mhy_71|}0kha3qwJ13m^0oRi%>bc6OfKw9#RgM0=r|h? zXo`||?VX1O5H%oPfD)xh4$zTZEJD_9LX4$A(6o-gd&EeIRvmz}Q!=W_v1@-tRswoJ zD3hCXPKt4pp|-?xOF!oE0YCzxMK(&C)LXp~3=U0s#bV6fp7(*ZsnsXQVjXaT2BALi zHFvZOwenW=5C;dbhukard%M-LecsG$-}AYY<)iV=di|C!VxB1M4=myK?tccW=~p=W z&0SpzO8t^680{`1n~`CW3p?qz3#b_<_XE_UfjFQaq(VE9P59P{3o0rN! zO5Hov*e~nv6AX08@M1{Mnc4jhP(%V4_x6A&!O9swJHO=P*6cp3+RlNUO0vb&>ue5m zpbEKK#Y1@FteXUigza8ZLKfP9&wx2Ms<-1i>mImQH!`OeOa_U2B^%L!*{nP49Ndiu zU|<VHg@GLd@z%4l)mlC5vXyMFKX++3c4LY{J><00{+I z2Ed;aZv=_q(Ja&ENeuCY1Q!n9W8vpvBlKAo~fko z$rBC?Ez&fgC!_41Tu~bD$-5Z|J>kwh>BU;iP-lV;QohqUq;HUp6+LUK`9lx@_V@j5 zml*>C3l$Lj5&+s}BLp&4IDfkZo38m_U7nC7QQK}Rf_7uwTlu#XEq_g1=dNE0ItRpu z1^EH?TWhP8A;qY|KI5v>=?RJWo%+L#NLXSl8x40E%_x*@!p5!5s4{5OwsSmSLj?7= z{`^r_)QEK8jb5LE4hM}V8d0zjS%Uw1{oN==qb;g!7?Lno9yqPFJ17h8Gav_O<|29Z zDqi8#kA=*juV|3VQ(?(|HCNM_$k()xRYTIqy%)+o&dNmr&daYX7hf8YrIMz;5_w(j z2*CtT!*Z6?CQtML(#$7_*P6M4MJyxtr$LM60sg|89^v-|ksJcRe1d}xCypgJ2Uk+I zMFiXN5HuEZ@VFE-8e6l}*#q_-EpCR=Od|ysiLX?DDq2zaYQrMgequh=2-g$8{v40~ z!D2f*8_@5_gF=EQLI6(%c%p$Cu*Qz8K3s49^SkhYdn^NO^DW-u=WCenMM*((g$MOzh{px`q`A5VtS zg#YxP#zkKs4-N)-Fc{XSe_jmPQXL~f;dfsY3I;mNHSZzbA&3kG(wpR%iR$;0G1b>3 zMf{CL;E0JZ8YtR?5{Cn>mM3!?@QzseFdTcZW&w#KQdsHvYS$jS0uFSrc;z&hA;#Gr<6~ zfk0C|p@8+qpE#XlM&nzf3{|fcM6}Iraohq5;JuoH(hubMtK?ac_;M>dt@C|kB`c7v z(Pl5UFIs1__o@i3ZJvC@_qKT)8={|$oAD-%M=`DSkDw`owCr*0TI^mVp9X2!$RS$x zB@RsGEWswyE^r~a*PNCm?5%1e9HbnpG@ieOrAhyxVD#IE- z?g@R1j)Mzfts@yvveqSOF|jxf5L9h{FsWL3sq}L48kxHstJwJ^rzojlXO_}cWBv)u z5x$hv62&ItHX2*tQtfD~=cx0iAe9RKz2g;!R|s^Wyx9EWcr2t0(t@2S6H_7HB%;;M zHc3!1-lV@_+4sL~lH!2YnS&Q4V$KlowR7$_XwJc+&`?RBIBQvbaB!p`Dk3SgB76}s z_9_e*J2X&?brP$XMw9GxgA1?JHur+#EowlyO*JGvRbzrixRS)$$h@w=);lDk*c&G) zoE%))bh0z#8gv+^h$1N>nthj@*=~rpzW^WW@yD{iV_=VGg8lADkB_(0p(1FL;1k1n z`WJ$CK_S=$YL}~C9A|7rGrjx1`-dSy!4R678iWwQ5*q}n6KJfhPOQPFZMTYg1k+oz zYcVMrCR!ziRPV)Ptqw65L~TnL-(~MsujXpGgIvkF8uV7SYG(CS9lnOK!M`Qa1q2WOPshXKP}%K9T8c4@^8 z6gjK*)r@ckd%+c+8Tc5`CF$1-d)^IURgrIs@#*g0K!>;9B9#@1Ozj%{_%z<&T zqw(77LPjGC6QQFKSws4LECF)NQq~q|lLFX4G$o9SYyga|tIE}kTBd;A)f3Reye(`N zBbqc$Z>fG8ap8^3nj?iEzxDOPklqyDn>jSNK7oNXLrrD{KK&{ zk484Y7#nH?4!PmfSCG6j?R2aXOolVyaP5`uVDVOf7Mwm61$58BU};U5+5CmE4%O&@ z)>tb2Gcx~jgz6Y=JaCiw4BZio!8F+wup-*PC=-bM7_B-6qFgAW`tT4nNh9-O$%$yQ z3BH9f&j^@`9xh^h*g?OpMoa(?3>NFY#@SFS)+`>vy%ajIa3-3lJ?K0B!cOBz1o5of z4WvO9^BcB=q)kDX`O7K&v->zBKr8N;n}*nDbYH4EAZWq@Q``}Bo!Wxn$rZ@NKySR-3wvl z#UpG_h=l5`d%o&mc!smCQ8>Zk5zsLBQ|dQz`oS#xG?RLtO2wAIFTP%=75`BhTfZwN z1`s+vDt53idmoAinXKveV@YvGN#I@sNgxF8{{;zDraq|8=FMS%**X&c#4PForG{CQ zQTK@cv+`}GD0b22GR~Yt87b*N9 zB#q2jGVE%&4s5l){emigJ-@?VYTUz{pb^PqR^#|nQDMMn$`B}IZpf2a{AK_?{P1Xj zi8vzlau#cb(SU+6iz%G4S(qb^#m!mFv_(->9Z<>14K}A*Xy~y*lmzF5tYcrxP^c^a z$y_h4K`a{4C1AZ~3}XODhv?SMF?E8*@w1O( z|H4$SKn1%zSKolA96pVk=)U&Kkm@>|dR=v!kSVCo#Tp=}JyMX`d{(sqPu4ldh*d&IgC?_yn_j{KbHJ57`WHY zK*IggP4EL9skM#3aD#p-pkm+%V-h#}9Fki$fppGW$yIqLZXo9UK>EbS*1bbeB+;h< z#0lxJreA%zX52y;LR9it-0Tm)IFtsjW0XdcC`yA{hte=boYD+PBa{Yj6DbWIw?}D^ zL?{ieNt6c9uKJS|rJ)3)A`-@;MJ`Bx<}lJ$Bm-@I>o>}?;Xq9nBoW(=LPpS3q~T8q zO=_(TVlwB#_c27sER(G>ALp1w1X*LyzmOS(qt4CkR zL`)93sJ>gT;*%|`4pH1=?Y5ykQj-&nEo0J(Imm1u!eWt)8AmyQs$1Y>xcmE`(2}MDbqNJqet_7H2d?TVTLwXE?1&t;pKXe-lR5qrJjDvY;XVd8)x-oh{SgF z(9i-ImIqZ2)_;_p`NM(n_M9p0ktK;}_GS=CI}=X{;c-2xOV}hH$mpKq=INn1n5v3moOO=V zPXbAi-PXH~BswV{6zj*cAlA!rXRSq;z$ZXoZ-++g6(D7%*!jwlk6UI$fn%6*ShQ5HHV&va5)Pti;t=z$4t@0ax#b#Q_mVjLh3SHq}DJ zObGBBk5F(OBz`8wCf;AzS5(&%#zvE(qS;GOhBVI5JP7idXYGPM6Vd}$VZAC{*ak)A zn5&(z?KUjFIY5o~G?WQg5OCva34&yJ%sI#odmk5aK)_*byHwSHMSg26a&4;>rdDJ9 zXd}*0Ej1eisFc;WRTQKa8`kj-+3-Hd?oi}#1!&eZIGGLqu55ISxRzP_+|H>a=vE|g zpuOl?=Ii_0!zWDVD7(-h%rrH~2yu)y8p(X8WR7NUIV?7r2BEZ|58xY^46sQ(S2QdI z1%L#gsQv7sa?p;T(+;7Q_uB<}9g!1*0o_jqL*;dv!Mtv}8I|#7#8iZKz;PQ^lHEu_ zlC30Ms`?*TNp@64n6RHcAfh7NlW#*7=kO>M;V#bcxNog{F#R9|ZYIjXQY1F~OCrr% z!R)UYMGe9I9yJ7iM$fz0g9fi-M>jYYHBmQ^?q{wTBhzLu-2ltnq8mWGWLu~gXwh=f z6P#zqRl;_9bo2ylE{rP))Wz|GU#uc7SD#&L)4FSzn8Uou*4Z(#059lMP zA%viHiiW^;Df?0=PiY8DEgHfcY6y4=j4O3tTS*N8527J_j7%XoLW_pL6wnZG;SYYF zNg4uPI~oFR9SwnRW455n_Z5JOEvPRv?pLn*YOw>22pI6QhJt|9R1l7)f`HJhEgz<9 z=5ZO2_0x>f|L{P>++~b$_4R$Gwl%VK*j0N3qNVPhOwkUSumF$}>5S^b;USyG(_d6# zZZ*HJXGGiZ41A|r5XKebM!+Vh1vMW*Ex7E7?WzTA;*O{V?6{*A@O}`r0Iy?efh19C z0d5_&fGOf?!GJWP7T|57T7bvxsRc+PY5}fEY5|_Ntrq+pG-f#u8H8HUd`^N|z?^3` zyRyPEbD$RB1%F^yu%+5+0p3}ET12&giWjxtaS};7zeN6>OV&%?V z41>=hsQsA~4@{8!hbEkiCMdr=Abrr~|5|hTJFCX4Owb6q!LR!UZuR~b6$MSdmrPz7 zI=_rB+UB!(s*At}Hb(GaCX8&z`?mGc?FsfZ+j|)VSgrY>b=G}ft5p$?ozJFDR522| z#X3~C7J2wZU*B4PG;UHgtZU#Z-LW1nv9KP-E(=r)NoyU3=G)1vquiCqjNK@&*=f*9 zJK1n1)1Rx9;_u}$gz9COFWTm_M7x)48>!V0)X8KE!zGAJx(E{r?r_~jAT~s zgWEtf!)!zr%kxe$uBow5Fc!H$&@wW|JG^=~)T>zw-^P$}m$=s&`(|=pXJi^sFwC;F zIEiOWf`g1Yp;D}1G|O0bd_uu#ek0%tD*q$h2d=tGGoOE0keg|Ipu!Y8$KN=7tq4y*FjNh0tM$9*wJ}IX}AMYvAC*>j{1ftN4&(O!`HJp8f zCa2ni3`$oGQ=-uI7;1jO!2@&Y)kuFr) zugR|bNF(3o8|67&!f9D7>UCn2?c$_^9c(QDA^S zPdSDS0BFP$=ngVki+;B_MM7N*Vso`E{jmEtvD+=9yx+B@y6Px4fcv=`qDT)?gkneq zUHP>vfbmUkt;7xHLk9td`G9Rj>DBp^M;B5WTePvVL0E^U~75U9y(tW2as6VSwm8Zhy|O2`V(PPj!k6N z$VJD0^R`=X+X_J)9!-S3jx8&g!I-($oW0GI?lnxwE{@rmF3!u{UKfkd zz6I$g?iKIi8Pn`8E>?}3!GVf=9!5x_8ZGi=au+#KzP*-RB>U6!XTrz?~X#U11F8`i2jF#-4?md0!cD-lmGn zm}og+WIYS3ZI3JA#Y1=z^Wo^vK_efb3pl1v;A>q1!H(LX$1Zko`lhK&Lo^cNG}dV_ zE>1)LzbVe?(#y_D`v3pC6uxe53iwI_JWZn!khUJelQxN`%X-k@bI} zO{7MdxBV4l2~KKz!tJf@D`H0dtFDG`)rY$H1eBnEa9asvJ@9!Kd^2>If`mhw`ggk8Mh14uh;`~IR$lsTrDWG=kioM zBRDC@RdXQH1#;yDxw0^qg(iuMCc;e7OH+RZ$Fv9a31!y#7u!_oTa+6RDs}pKibRF+ zCYV5?-X0ASwH_~}!;E-KfpAAUoU;Fa-QhXEhdsGQp7P#B1MFSRj9{F zk-YHW#r8>&Buzc^XOg1R%M`JM-^1jx|Aq+tR|R3dNjFO1ZTGV%>VH*xB5D4w3JPC$ zYCn==OfJ`q(<`j#gbmT2&$dHzfFuW6BsjpB1cEbQMauQB+8LN05Das9Jj;o&(9u$- zSyezIm}mIlMG07o*$X1L{n=~n$_M$(PcOc&BC#~8sZ#Uz~ifqEt5qCY9 zQ#9*vG@*4qHb$XSvbg{o6lIUWFYrM%iuKaiTM*0i9n56$OhX%4f$E;51tE_$F3(=w zGPMFL%vx!6HNuT(0i|#pz>cmP`Vu}9y2^aUy8$pt$_O4G%P1@J7~Da#uwt5oY_MuZ z7RU-{?N5Pa@UP@=ZZLISAkwl&VRNXsU2~OiNzhfd0Y2!mEQo*;zr#*7oKK5I3^W;Q z+*5NP=y%WcZHQu+Wc?m$bxiSStEYDT6H10kWj*r7O(`y%No{6saIcPUm4j;d?Jg^k z$t)MKG8K|8^uhVXB9#^X@H-bDai~;W;G&b-8-(jTTy{# zNa0*spAqZJeo1{{U`+12H5U;fTZe%yi^eN`qNse@C=*?2ZU#)qkl|d{cZzHNdn`TD z)r==E4n%^eidA|*@*M1W$%Q~cEzf>l4ea$;CuT#+I3vL!OI1k45Ds$E8;FnKaTtSJ%A@s<+GRX~0+&N1x+Zv3r`H$}Q%&!<+gg z1SeubiJ?VQ`J0i{It$*|U^8ZB--wk^h12&QxiV!r_(_WOrFe?3U~8SKt0Hz)u;Xx) ztba-n z;|^|sTLN@G0k~z_43!bCEo|=P&G!KY(lP{`k*dvfAKONXJ9wqm#ETcC;2f&K8sE%9 z_fmxtPAF86*GylHS+%V~H(!K8yDf|j$Y6&piNGaOanb6K|k!h=8zcXW+}{NWkB4^a3SKVN8oMdw`qa`d!{=mu<GV8#T!Q2)kQRD~1l3t>yTYb+7%q5F1S%9VgP%s~`;3he(H!dW^ zN!;Uop=0kU*X$kZi`e?Q|AC4)@OfIC%d6kD40qkW zO4|jJ-8wJ<*JFEDe~x!m`3aTDw7=%KSY-zha6pk?cmI+-;|!mHP`t6Xb#^o8hihg& zGF-s;GA^ne_uVwZ*{uv89K7fbrGB#mYtjYM%) zyiHuX`vu@qhK)(pFlY^iOLxKpy=Si_ZaNv%E0k+k$dL}5N*1Y*j0@W^L*B3l$R(^Z za>|+(d7B`yOw>}>j7S~0AAx~RL^2zhs-EtLMem*nEc)BfSoHX_gJ97k+r*+<&IcCR z7VZinYcupVE^L-#^}=3SL+as(EymST!i$kc_Rh z)UB{r%smW$lic`sng{=2yUVJj9_Px^8|88?8fN;` z)-aI*M$#}_=yEqS%4H$@?sDJN%uD{vN>~2$a-0BChL(B(HvP zG7fP=%@B+ixf;eRcSQ1dbpf_PL$`40Zb6VK%-&x0iqoh2S-w(HFO%m>_ra9U&CISc zSbv`3)-p5mb>7d$J?4~PubFw}(#K&O!mDnIvhnw4@qG#2_gs&c&GPLYA}5NO&Tkd` zRzBccF~9B3ZzcHFsPYkg(a41=`)7|LNj{Tc=fU7fRx?Q}*r;QP=(m<;qb?!*;EPHl zREudgCGY1;APCx;3L#j zWHty2>MNR=K!1u5vkvSUlhQf@Ycq*&DLp6*P$FJ(lTEBfHNL$4o~Zzb##5{=j1@c5 ztWMrH5uMVi$xHc+&E#yDb>|0klYEM#W!nufR2ru=p$fv8?a~Mb>nC8hUBRrjF!>GE z0raN?wYJ$kRcvdRvtihF8e+0IYZM}YiNrND%xqHpGMuMMkVz_>APe+i_&&hx4s3Y zg8{nr`*^u+-TDofQFcPNz8}fs9ZArwuY<(_41=1T=+^Ijxx>2kF}={Oe_UYe)^~4t zjx1#bE=nV~%@DmjojEg;~_AzvHTSr_% zckH>$ZM}Eo1_XDLEG~5xr~TEHg(DoYD5MpLr6Sa|;P1+ehi zh9TKEj9=F6IG%ai1bv$gi&5z9m@$Sww*zL3F=EX6Z_OA-eIv8&R9w_-I~Wkyo*Cnu zBereED12lP1$5hHj8UimEHlRJuci45aZ$~mb>siej3IVY$GBkt#l(^zW{l4_OFJ@R z?RbCwHq01|ju5v^9J_fFy(W~M{9yAZ!fpsNMusGfW>+AQW5$3*%$;ng4uew4oQ=;x ziJ=T(PR!5NhiE%Uk(i?4CWDBvF!EB=5|b(%cC@zfe8enHFt1t!GJ7Ucl zmA`Fk&L`}lQIn{(;AIx2pu*s z&MVa-l?*HV6!9rVf@g{8Q|-F8vQSY^kFDq=q#s!M3)9fTF_kFm;PFCS7^_Lg(?2>U^~ZWXAoXEB|{hg|JaSs2_;vh3VCS1Q6;;#iHo;o=Mt zaE@=(p=GSx$0qt3W-++L=lk{h#G+sjl02bZZ@!CHx&_A~4qFk;W%9mL^8 zq8TE9Apu$yDzn~!fGy&)g{3Kg8_QF8t(K^Uft+SoT+*{U5HGU3O}KZctmhxF@IUqm zMU;@VI<^Sqhp{wq1#0(CA)mYjXK7i1x@My=oI7z*jPJK$V0&avnbcMF2WbW2_-HQ3 zOT>n?v)<(Q1_9@8KdI_qi#7Hb%syc|aBaUp(Xf?JYj3cGM7!HTlxY2p$g-3v;({z&s4Q;j!H)$= z8j0Etk_-@HPe3B;aX3=PZBU6zh-Rq6YWhLRu%1Lm@q|Q!H3TpfuWx!0RM2~&9FyG! z*LrK(6C$pT!GyPDnZ%slY@>z6ZQa0rph@yN@im^<Ax6 z6iz7?a%s7BlSV|_>4mf}ENSDYSQ|fqxB35SA+3knw!>WMe=j zu?p@hgy6#(cT(yZoyJkIrJfs5u{`|0kb1IEnP9hL792`eIp}dmR@wYTqEKL_U-}s+ zCSuO-sHie5NmRM2K!&tHc*{0L6%8q2;Hz@Pl##I(RVKAa1cS}i@?I3&j~u$@Z%ZCo z2!(5aJn{iv4wOeGL+cQEq;n{FB%ezxN}x)RMVSWtoz0yk0X3}NSt zU|<__rngh|fRh}QGE%h^>sTZq31M-x-5~sdLBkEhdjA6R0Ne^n9fAkIJE6B{g;;7r zeLYVm3Iev7CX`{7{V6u~;NIyED=s>yb>{d}95y--y^EI&Eh5YV=jDq(h%iUsg=ZTS;zZ5U0IV z;KkvUkIRc0xIg8Hw{a$Q3FHra)F2e!1Xn5E!;3hx3psfYCRKuiI@)lg3=MX?@j~sC z8xMk90)x`8x)Oz&nU%QsWcM96{lNA9o8NvO?f#x=5GcoKSU|_-!t`OZE23l%?&~Gr z-bmNIYS6@ICnO#xi6N}op=}L#Y#QV9fO0vSnVljX4#-06YV_8%;h(GEB>b<4y@jAv^8e7PM{}M^g6_ zpBhchKK=%2vJV%ZoQe*^jK%f}dSX8Af}tKe_i=XbiOU~P2^XgXT>fT63IpIy!{IWM za(qo(ufT`}q93B28rz8&Szb-w70^0fz6rDtH%qFF^0-`aYfQ`WsK5Wcg6S20c&^mjH^`xDRD_7RBpTi)s)vBDSTI9tdQUZi9 zDpeD-XiEa5egxocEOp>6GtkVQbA`bDJdCE(+ZOBd3ZUqb3PpptUYTZ@9sy2}(=6MI zTt10*z+uXp?F>^qc&<7?ireT3f;`Q=EF@;wS(q;De|04BiI|DDD;^^FqiqR z`tWLj>O&bb*hR0uG&VX3ZCPTcoS}+7)J7P#rL-rOL6Hp^&TH)q~ z()yY*RpYGyQ$wqM1y-6T)jF4(mL^Jzz zsfhDtyA^eO?hr$}B9~p!oih>$n-gCEsP-B>A%o`AVKyyZ<9<>j+iOp5%;x=LlRI5c zz|HS^*)@AohcHI>9EAyG-qK8++Du=4cJyiQq|udsnBWOnF=TpC0FP@h!~jb z)Vu@1R(Q=5`c8n%+BnhHk0`eJmwsFk9Ci0e~4da+y{;{6;P_Gpr{%4MuchjXY8!!p0p)PM{VPpJ}8$nyAteg8Br#n2QmU}J`ZkjkC+X50O``t{)kx>H5ifD7R$?q0Lj{?v&Xe- z8j+E#no}pNihrlIV~AB zB#%KO700o0{ZNI<#QI?~7Yz@k8ddFcaUE{w>?tyUAL^eNfV|->lgdIW2Gqc>8nQB3fsXcu!NhS7X)rTiup?-zL{we9c>CE` zPe=+-#mukl6a^drrJahbK&mKA(99m$-GWLp$G%J$$iP7Aoo9obeIjApE>}Mcr8s<5 z@T=FRs{^?Df2>$ag|X1Q)EShhhQUIAi8+v#fX2Uldm;KGG$?&_JhK`BeW+>{#Z#(k zM103djUv2zB?i_DF+4D{Kb=IB1GpSU3y?WdbkI09Xk3>w%Q>KPOGn6@<<`uT=SPkN z)}9NkCh}$KRa0l-Or8Ci3g^7z2-Vm*&uiQ#%PG&FZ0T@4+pcZdz~E~EbNBV=sby9~ z$3Cx^7M7Ltw;4?2wbMS2>Q>JKOH;$w=N6@K6Efvj303LM!#p`Av9(lSz4jrW5`>xh zBsCKlms+qix^+)Au&{?fZ_1qirr1Mj1F7w_hv0-rvJgOo=>Ft9^a#L4?`=hzr#7LJ z>2oi5Jf(Xi#YyDg@IZB94j=Hy8Jc{kQumyPSlYPaLx5 z3y=>OI{HN-4z^CFbbn1EoZO6F7&Dw^jFgI~T67;cu%cILhw9=eb}`p3JE3WR88XND zM{@66=I>r$(=u40@Q384E#5cYH0^xH{GdV(B}4z0LsoPj@}VNPRODtwUvg?ES2Sjy zctxAREqqPXIlA{B*rS)iL&4xvXOSjQd-2?2+A+xVKLI6@B*+;SVi378r zI%M|ss`h-zz8kaC39er^=kk?J5H8PoE~T4p;t3e}6Bvi{eT0C4oTPg%W=qD%7tSV- zWZVw2>q+S4lDR_x>6`NeNb}YbNG=rKb5XxGu8pg7=>}3OgF^RhNXwK7wTvIKmKRkm zW26?P&!r9$*a40i%X>YWs|uq%eU|k9!HM(`M9FqiG~|7&UouIcRNp8*P+| zTj%^RL+%{|X6DhD)BH$Az30>qATo+1Z!>DIh(8I8`h7(L?l_c#tL!E%)&|igu`3!a za~O5uT5Vj$mHmaBx(|u0!t|3QMbhv;@B4`(&8C;f(5M4HI{sIuWJ$ETn>38R{iFiG+`w2YWo_m*i{Fi*a-Ij=M zvL&K^fPNKZ&jIvqd)R=cG>SlY05lA@Tb^eM7|EEd%n?Ih0^af-5YB$`R6;neAlBtJ zqH4i@0C@nk`_$yiJA}}7FzF#1+Ju5Y8|%E|QU`!~@2pE#(${UDZ3f%=)V zW1x2Ux4Zj{kPa)otZ;y<8yVo~k*yiZ-ch1h`fe`|Wa&zrR9yWT9Ch+jCt%!Zt(dAz|ymQNT%-?{@h_;-0uf(%i4|j+d2inoxNL zv!Exx79Q~tF1{vmY`Z7Ffo#|PmZZ_r6m_o44dXe0VK&o$`Mm;j43e2>hXcvn;}n?V zwRxq11fW3DOn**QyH2Xz1I6}Smtzi$u#Q5aJisinFTwvyIQLB?nhLVWc#cgOkKIUK+*usFGYi(czo4{2vvs z4p9n_&tV%=%fK@{oE?pLOGQ1>QUuEOPdt&bDdkR)GKf-B&jBK!2B>qHQ$~?^!S2E; zD**UYT5JZvx6YVnW+MwzkTd*eQZi>y$RY@ZVJ{cyd@us`JY*Zx_?xlplMEpG^q@UJ z?2f}OzDp6EO9}Nb9gra?eyhge)OTXzrN$xqj5w7_nlfYKDQ(p*VKHwS7$Vlmgs-Qc z^!98a*FZpJFu3wVDy@oA|FA2EBu=Rl7xNU^%Kiup9-aHQ@Oha6=-i4^Rl8uyOEziT z+RTx$mo@{iiPg4{)}eqpUN|0#nV9Lp=^QNb5v;cYS(0YSLHOtlOPdIpi4413CI^Qi zHeF<`&&*ysOqJXU z94=e0&Hf`&0TY%8xtA4j^lP3yI5JQAE&O581`B_2c41~eaAH5(0U%A=!K^kc!KJj8 z?v@%f#s!TF#ey)BrU6m%{R5&=63ULpg_S?pLAxGeCm31VEhjXFq?W%<>l z(QE_4Om&XaU`x`MHPHT^1VhDivR_jCz$YZup*1&5wo8`t>U?s%tQcPefO?|wrK0#} z1Mtlo2LP~oAOOQ~WgHZMAoQ@u(45%v;Yh$SV5YgW^cuq347$QQ0M6fx7jV`qaQ?Am zP;e&Gqp6jN#3<52&M-&tKY{-m~S~}E#EfsYVNmyk^&SorIGE|GV^^P+uccGjBi;Yeb&t5 zHRRFsD$r-FM%&yIkSYgZK0t~SRqR|_6(jWqMb6%G7IT5iGZ%Ud(2`g~+RJXjC-k@t z7hjV@hR4|m+Kh%`X(^%Cj(gBh9e?MQ9q9P2tTW#6_H%cjc{w;m7rxFW&y#M>B>aVk(VJ8L6{ev&mID zw%{1C2|4sMDC5FEqYUa3Gc^5F_bmO)oS;6@6EqKgaTCOGbHA(RU56%uKLwE-ylt!H z#ei_t>OeI!)R0~zj0Tav1A1o&i9#pCPW1|Bh1aS*Md5A@)(CMHE6vp0v*1AtNKZ-? z0+y|}4q};61nNS$*bTNyORu0)W9_O+TyTtMGbR<>L0wN{ueg!LX$_|=Uk2^%!Y7e3 zjNlIebVZrlKi$%SaOdb#RtZ>TiK#_>V_RmGU}ZC~r896zGx1$Z?XZtiC2#?`H-iS^ zMH;_z$J9YH``J54^&o}F+5oUVuL1O+wIsI?K!{dd5xgWS`hj`;+X66nZ;+=0%d2vW zunHg_c~}mN`@Pn8Cw?9c)V9q)ud3f$n))4zN>vtq7}PYFZN$Q#)tFGHvhdqyEb1*w zQ|s1Nt?%jXC+1EC0jO<8D;>pMt=!Gy8xSzeQs^9t`t!LQSU0AOGXVA}+?R=%1ucX# z6iQ+C##3#i#r;BjjLYQA?h!9LYMA)^IFh1>VUrT+)qWyc*z9GyLexct{m^*Fg{W8O z{%^_t11Sz?OO&Ioz&K)&#wPoXCk;XNiw3t5eGA*+P+IWqh~&+Q1-h92N<5w7q<7j} z03tsY%my#~u6U*-Hcb^9;X2w%(mk=g{+_ofXnTKs#jvXMj0RsU(vyOZuBC zS0mi@KsKq2kTEtHdYUH27@Lgzv?0bOH84}D1lKTYHnV3vro2;YaKHbjwEV(0EHe-< zj-RY%)(qT_8Ats-!K>w|EP59!RrrJ}XgW(&h07hYuvbjEko7#WXlrJ-qfpGjl|DM8 zI2OyT5cbJP2oEBR#)ZLUh@rvXTx~d(2)Cvy+9u0`Km#-T-Q{9VoEJ##uvZ8v=Gp6g z7a+5ZoY}K~;TTL{)J3H9GTiMsWHDStIft+Y@OIA2my+~~Q0 z1=`LyJpN@bI~gPgTi|t+xV?^kmVN)~Q6dM;c~%M-PR}6;?f&FHAII9=)6UjNI?d64 z2%QRn4zlwX){gBD9W(QdW&JI!tfE|5O(bf%J+-D`6xA9`_kU2B>IqURgKX&Hp_Z1; zR95~&r6B0Mgipb*_p0??tyrDftA5~-iVrL&<>Ub!gGG^+4iix=oaCmvmijtfT-xp+s1%LY$owKr^)8U^+sEQ6utjHnkV6cNb9WId?+1^2&4o8bDpyqXL ztZ}e0(7KR^8V7eeJX(?p`9iuBmCklL%o%IONJW99%Mdigc{1sAyJ}-NAz*6yoVe4W zJ24%d4j*PxGkxY~vtwoLiZq}LU$;4)XK1BW&vdwE9<87scRB<_I*887fhyA@ZBY72 z$I}!~RO?%;U-;~-u)ERGqWiJ`d=^#g65BaGMYJNs-317)20L$RZkUy>&y8J}Z zWJ5fiJ^y3n$JL?QjePzDxc>UIi zk_nXNcV&3YQ<-LH`dQ_8+@QWz1obPy^?fx#eOVYy#h0Vkus8{&8`S@*WRmoCl3e1o z;_RkIcFN3t126Hk1W(HqU5W_;;C~*Zm~fJiuA9b@Bs(ns8mL`l`2te zewyo1M89amxr@iQK6)S2j-J%3aL~%!zLY9g&=`sR&=VJPKeR9UCX(g!yssHIz~UBl z)zz{r2vt`8?sWA4M`emTs-pM4|waNsmgDq!A2ByTi( zzMTtuswFTdm1nfa8;?SQ?cVxyi(4VLyf2~KR@SjGX4)t^^W%sH?(yb%M@F!{PtN?~ z0S?7g7zR1%51YMltWQhNOK6*hZev$CW(f`*ae_MYEb=)P&d~1Fihroedrpd%jpMs_ z#>y*QEs4cdP#v6`Ej_b?jdlA$dAKZb!`I1Yq39JE-F2* zENEOi14mR>odl^<3lz6i9UIK=)0V~XY|DoM{q;c0#x%Mndx8eUqwXLM1U?0FZUC4S zh`w08QLF#XwW!(au}(^@&JP+_xI^_{R3Y&V8FnsDQ2&s*c8TSBiMigX8W$}7y6TsK z{P*Kk2K8QzwZ0i>+2qs;6D!TC)>^6uk=3YmJ@Ol~%h5Y@>Lt~w3UsPcGyW3BW6+Su z@=n)kcA{$+p^}~N+EKAwKd)<>*axR;LF4E^;&5S}&&5nT4=}wp&*@Xnpnc-HLCcp8 z;2gkH{$!uD=*!MuhOLY>>AxT#2=6259_O94`1NOP^G& zobxkfSwJm5_cImO%qnrs1=XG9nv2B>SH9>^5+Te8pmAqlOL3p|J0gG%Y32q*;HjIA zr=W3&m?Smhnv8({ZD8zsT1!u{Y@VFux?=S#S9$YhS7kGn4k~+*_*xJa>{uo|3*VXL zx+Yo}{dyui`H$fGLh~$FRV!9aETHeNT+coqOtrMJy&42j;4fF-4PReyT#dVWFU=@} z8UanX&ziF9VjO$ss{02zYx<+J##;LG)i}l_nz|CrOR3ryCBM~N7_D#ix)!xzg~BeC zk_Eb4)h6Gu%&|ux^*ydv0t?)MvEO!I1k;^nz(D9*kT$xmxh9KER9g;Q&vx)-F80VY zgX&-%A|Hoqnd5u4v8^)Yd<|)%eGMhYxv?0MqqTfAT-)-tY%U1sC8PUXc>t~}4`42F z_FV&wo)(Z!^y^F86g9XiKzHLCR7EOb`EVF7FD)OzWoeugT|Bs9BW?` z+-(ZBtekSVWVUlM8*(!zvLUyf6S*Ywf15s`?3R}7px(?1wZaa-HYh7$ zm2jx0QGV9|un_B6I1q&!J^-atjgr*9?h1@czll_&7F><1Ks7FP2aVt7go?j({Q;-5 zZE@Y%lF?E%N`e*;+THiE)1VmUcnk(rAmbR zbwH^2+iUj;|B!z5`IF4u4AITY1bu7xg%8gcDb92uwBJ&4zQayUQ0LRfl z7(~|;CD9Q18q~{yRuyhpx|57OYaz4$_QsYJTj|?iX-6@Vj1snLH+Hbw@oiES7%C{wq_|2`uR)>K3@_N8_f0HG*?>R%$^V zrv)Mip{CD-?%?;d`b$#~9ZM#Zb;0i-NkIs4xe*iw;rn<}w-O+RAsvDjc3W@aTrvm) zz-&Ki^k<+t%yNYN)I%M(qAm#_gBgXOW&j)rAQI*=5yB)Ip-vn{0y5`k1`pnK;XbeD zAnT5cr3Z8Ni}hfhx{dXKE69<)UsR2b^o^*#qRE4<)4Vg;bET{2JlQ}Yj~SJxVep0* zNe7LR;oesNM5uc>!M^0oO=!A*30kof@z$CkP@V<>5~~fDxv>XXp0@gM->b0iOX zTL<-ryxv9I_Gxp6)WPJ}5% zDDo+|A~?E!Lq;3Ty>L2KgvG%63<%M+gC?|+OZvLA-*J^xnHWdB+g%$&$pZR|WUrD3K&p;6Q0 z^n!bMJK0-%E|3NLz2Lxe3S9ZH8MgUzI5mQZGb?ABhX9vJK&jL6LRcom(Mq7zHJIML z^aEJ%{>6YpoABo9tRxn4SRF)vGV1DH=ndf0?*+#G2r&hGdQKPEbXzi;E?i5_Ooae# zLz$t@fjqhoLhCr!vu(mnJ26z6d7M{k`7A9o?)u}ps`m`0eg@9aX*1~uh6#ze(3}Vc z-KV!zKhN=0AqA`URvdaQxcH(Lhe3B@(pZW78R43`F#4UY`dZbfzCh~pieEQ_U%v^CmS$w$xro>VP`dJ} zJ+8bt1z^p7FYuS+Lv%XVCt?#$_&oSEgjPgYS!=?AwA~>X{30$GzyqS4Z!!0PqLWY~ z!lJr|F)}I}A(i`^pkKLd*#Qw2^T#t;dw{NmV^>dXNZZ}tP%;LR!+1DQY=9~kfCQB0 z1S`dyYxdzRrnFxC52khDe@R-0)`V8_7gk+Q-Ci$j6(|uECH$jIJ|ziyL=prdQWE6B zO8}QlK=3rsP9yW8+tmbI(})RZ!&4G~@kxRSc7nx75R-Wb*b;D)$eJ06U{%VW?Z6jj z4JrzlF&?xOpgNqPzSfH>9#@fEkG8`*D^+{t-$4DG6wOugidKAv`)b&jOF{dipy^*( zmtF0UeF;yAaJ3zZtj`2X5B(qJ-UU9&;(8xX0)YUAccVt*J!sUVS`9@hQK<_O zFIc>ws6g?8M9f;WQa2{6d9$vit!b?-ZM?PEY8$ITK#>G7L2VW54KLM*THm*eHh^OA z!v3G<%)IYjvLJl>v!8!H%DeAnX3m^BbLN~g=bTw*R=kdYSe)&k$fO#BmMw$U*hMaG zqY9iuZ$B}TD+BU)R)9Rag8$&SNwUdkO{d**(8sWpC_fDJY=D-j_!_>H8ej((J`}gl zLOJjt$^?ze=~a~SF&)`ww~^didmQJRJUhCd06n*hdSKrz(?;t4b>B6fg4_z48n;KsFf@I|jZ4GFZ2T54-G z==1cNiVy22@!NrI)TXr|`GG{=W*Z++X^u`tKR@(?bG?98YNb~_lgsf62)$`05DoMy zedq^uE_xU40=;zu(7O?pNzVkm^QF~P^wzOi5502%$Xo$rC+J5%AA~u%5GwA77R?k25 zv>YQ1RG+FaU9AXNG-nbriEw9x>>GgTg(#iC^r_NrDyDsG)x&fi+Rx*Yoe^@;ZeSW< zq+oh0>+?F#Y$Pd|R_*mn7Dzy1#YD3ogj`A-S7yX9K1yxlCrNDt&rd?`OXyKCUgF#f z^qzmA7!(3J@xwe^Yxp4a8)a~C=CfMpibZ7Fl~_5!fRR@|O<(m&)_Emo;yY1pr40I6 zht;vLm(j2~uiC)zvVco#YJZJ26c-3I zlOY97Ei#v%gs$*^JSnc~o?MzerwX)_4J&GJDcBf|U^NJSs@gUr+kDdPdi^zlND%Te zSLP_U!2M;0_%RyM-0S?e;}^yzn)}YQ@zZdxMy9m|cyBY2DkNBdX7c%CL`u*0}*xXF@@0X~5@)LVr|F3oZ31Snl<;YGR zGZ2V|*%$k*&Fr4wDgt3Ba%MmF$$}7D*HaY;JxGut#=(YCQiKJXqE89v@m1$%cw>bn zO^wxBjH=KH%59O#x2*6a-eXT6!^z=8W)hx(9_4TQNLkS3cSOot*%2vVRl$T8ma6F6 zid=H2j=8N1AVx-LAE_$VjqoWlUgJ$E4u2hIK8Y{+7xG&tlu&>~Ln)FD=zyach|U8^ ziZyrTe@K$mSvZ%p6D1)%CQ~C!@cwL^3?S49B3zEbCQf~19oD;c^nwrLRo2?7ZEI2d zDHe~0`3Z93B`D;a$sUD#u#zK)!yT*~euk!k76a{aT)gn}pWmMqL37jyV9ROzJg5FLCd-EX2BJQy ztKJZ)++GDzDgz1N-@PRP{CEJ*?YCW>toeV1(W_SH9U}&r zbgZeQmp|bxgiJvt*h9PX&Jg*KfSWT|_B6#(z*>f(xI_Znqv-B5) z26fE3w08dGSJx+hu|U2EPHW$*YBi09&KCTGPXW~I?_bVO%@vo|&prFH`E|4XW6UAa zpcu@Tms}m3cj@c}ljNHPlV)Fb`MgW6^1dM*a7TjYDdLbQY)@1?Yus`r0m0Tp_uxE) z>HHYhfk`FjRP|KSZ5VV2w+WKX6<6E<+QYVb&%`2mVg0DsTz(*bl8;#v^BnHVx93*L z?ozC(eOUGAc3I{|yM3Rk)g$;T zul=T~)pU13jLXq3wAdck(25Ik1eXIJ4!lH zQ>F!7*rY7zI;6lgJUH%cW9m zo}gnjN6Jdn4%s4v$Ett!&=K&RiBz}ypLDwhZw@0YvToxl)|pigvdI4|q&R(;RmKZz zk^VSP(GkLpA(Iw@RWojI0wKx2J4{Cd?g_NpSG@yjNsw?wbvvy3(O|p88k*KS7%u0} ztjAZ~YxrvV4Bs^To&kaOf|*9a*|kQ&8BqKt0>wbDbw(*Hk-%(CIi6z;o0tc3h+TsU zmnRbdX(So^ajD?{^fnKCI1@#qA+#UEGzhohhY|&<(1;qhQW-a+%#V@G4p?LC!u;vf6W{ReJ2l)J)H2WT9sllFOg5%#aEDFt_5 z{y1gmr)7kQ+Ybo)ZrB8|8EAm=iru})x56JSJSJduBZ%&JpFd&>Ph8}2nWOlv;)y=z z6@X4ogWiZ8fSl&O2bg17IL)CUF4vM?;%kJlM@!bTD$J651~Fm+EB6*V=ktwmr&TwB z4A^2;U=zRY_n6rQ$0}x~iVxII1~9V;sGrPire^uw1=ueC$GJo&0Cla3x za_+?&R+sC2+m-z7;>5SP&Vjh$cp`nbH=f6R<{|rIcv5ra_&Q`W7}bRTkNrwEkv)sZ z7H6Vz3|vj5q$C;JYmM+W0AyzGP$R-X%(;I+z}XWXce9R2Mz)GkO$YPVZ627D_Y}(2jU?~QpzL7oLF7dUnh-|h;VIA@#exRb)X!@QQVA7}q z)^F#?OfMV*PeD0fl!0=7F%p!c#OGe32u2Oe(v|qhKSV)cgXQxBS4gC%G2vNkX?%eP z`x=dl@tQ+etkk1lUARi-A(j`Jhbk;>62%t^+8-THUra4%NAoZIuE^bxqx0`Si~}yI z(}q)<5*b?S{j$ozDkK^fs2^s)&G!58cih=K2?N5tjb6Y)X&T{dgN>W#pnJh@bGFps z`+&8k##-k`RL`<8T+`BIidm*LBK9~Y{DuqI0nr#_;dMKJHratcj@6n%H2;D$h*R}H ztjnGq3-XNP*F&%{dFEmrawg(MGU7Q)%@ybg|A2U8%h`UQI;%qRe3{$vVDANZ+&|d( zi9$b@6$_j(f9W9#i$K3%k%Dp(H@o^cq8|(s=W%jPI#G04pg;GhLp}7%xTT_BDYGf) zpS{CF|I?qOqrX45p2vF*30_DQ3h3WH3Fl>Cwk;(*kd#v7xltU>cX9#Ra-M5~zYxv1 zo=^}&_$FfQ(-0TC4PY-nm|!PHOZ6ANQ);xnJi!~ShcspYj9_NhqeUx^Rwe-smM9L2 zB$p?2{)(*Nl~|dI;Y@_>#wkTj|1g$4yOPqh;eRo-eOT2>%FdIFz(1M++oWa*)R3bv zAf~Rd=iw!>u-auiW<`JS6k_4^!Rc7APL7SmB>mly@Z8sWC|4{{dmCy2wL5noi!w4R zlGX$z1?x|g3#hv!gitO3_fPBj%9aO9dU011y<{->Oiqna{jR^^OK|4w1vAO@Fl)yV zz0=j?e)wwU#g_H<;}S(Lpu4YGZ*Rn61^#^Em!ucjr)=G_F&?`L#uY3{lUklAu?Y}b zE2*|-%Gy^9_H4g!_lNOHW7*T7>W&cdI$t)p0UlP2G@Mj2s;YS|`V6%4%lq-Anf;FN zbjh512OoIkLt1KB8$u)6Ify#JBKE<ZcnR$E64RIy(u z=ZS_*lwE}uu!H$rAd-XQVBp~n?=@+9i~Yps$UG1klC+{%^aV#vYJsr;^fo`N*7X>$g^!aI01O{HO=M_4ho>+lCLRITdF$Wyn{W_IIB!*oT;W>( zL?2N)+`36tH@BXt#ob**ulrzI)e6p28ND_3LRdekYkFE-6&y6E#`*YzdR#H&8jK=N z<)t1+aS_@E{ETXf)0H@=d`gM4R#8{7Itag6A*z)T{xxr+q7ik6AHxlR$;}5$&@D7f zcKIO8>PU540vu_ymmf#MRHk%MlmWt8*^K>j6pGD;sP?u(4S73mu1n@*v zQotuvCFk8l#enJh{RJl0AHs`3G%C&9lqInFQeX>C*Zm9P0LD~pk6om;*Jl6tMUYEk zW>!?U)mu=`+L8u4b_pIVg^pe1s_VGN5|uhV6e=@nXKi3nnYA<1+Q6V1vLgIE2##=-T@&+6N#<=vCLFl``w>_n%LvOe0KQMiK3oyzT~3Hm>5l zghd4POW8>N+w+y8{=FN;q|nCKS7I#q!;XE4g>VM!3Z1y){Lqxkmqw`!WRhKB6~8vp zW(!pD0c~EP+kEy%G`TmdB{6;tsSAmukvgFe%K(4ar=oRQ28wrCQ_B((P9~sUxmqFO zL;w|fFS~gOn@p;YTC27Z^z)5c+B^vjcnUTLLO6{EXZBj#vVw%Tn{X{c|USS@Up#^5pLYA)arx|2k(r z`f*xbW%IE(ajgf=tG?L2To`92vqHH11gw)W#>wDwaXgA3VsU>mOIrk#G}|W-i`0;U z+B0!jvY>Qa)e4cJ6=MH{L3a@=1{gu?(LNWkV?0~UKNE=cIk!tI8nJ9rXa;yKJxt*> z*<4)lp@-M)2XbQXj=A^=NhD3w{&TZJEp~N8xEzOJ8elO#n8ME~6n-!j&;;|U0LNGT z5~(c&sg)U#nglv=`VW9-&x_xqO)PFM!-h>ZDpeA-8TpM+XdwEiZ20)C{c7O(;O{xj zM|*Kq_i07os*GpDKXbLzNp0T#&X3-UBMVeiFuR704!uw*VGNhpbJq@VozuiXPbc{qyD3Kp;qH=|ET4mcuddx)$N5oa_*Pbrnf zqyQof&D3z3iH+<&Ew3<5sMM zgP@mn^wj0z2Zf_$LY}c~-K1z01nmACqmhjDlpL5h_R49-hFoNCEQreq@Ey~UY$<|Z zMeMn)j++V?ni}TFgdV6-BWmxL1D1lv6TP zPjk!_ROrhaj0*uNl4x`0Vsb!*^D# z;X8jObDY5lpC(~~ZI;@9y!Mm0keF|(nBr-Y$M}H+CziI{dMBWP4$wTYPSnCT?2&lD z<%(SphM|vO#hirYQmz?{$xMfpY(odJwxr~9mR zjoXJAjRm-coRHOAh2^Ol|8utBEI`Z>n5u8&4#Q+$&*Y-4tO9%o=V4m6Kezw=1q|KH z{TG?&gZk1Z1@L9}PETH)uq={PXzkduO1fW9u7d4XhN1;phCud+%CUtm7>;^zO zNI^p%c?EVNK4wjggO+dbR=DGsk=+4QB6=Mzp$#|kVkQ*D>G6DU@gXRg@@Tb-t z+ET|3VRP30V$%S;uB}9PwYyb7vqG=XmZvyR$E{LXU}ktB5V_PBx}kV@aPNdoIAHZU z?+K~D1YNox>#u$5BVR(!S=6R1)OO9BPp}s6uRP?io^Vq%%sI&4P^iOMXv8lZA?(A? zYfNma@jZlJzQPy9a*3AX0y&uCyc3X1RTTx*bw+_wydqHr zw%X>krp*nM^_p;sh~ISGN${5wxi(t(xleSPes#u?-C%MZM2NY!2qNl>>)$zMM2bX4 zmUS)qZle5ez4A=6W>-o1>LTz3Fs^FEm(*azS6GW3jU)om;9TKX+!e3D7lSEm;0vtv zllLW`pr=bRdNB$DDni+i8K!2go%{15VcWexJK47EnRrSyr1~lt9yxQ0-JQ(Omaqn0 zy!&S?uJsCCHq8r{D@9^kzS^gR2?((-fXB7bMf5MVMAIO@I62_!P|F#4q7D2GH%-qN zO_G={a%doOB|IyFpil7lH|*n3tR`|4x4Ga%l?Uq%0t~;@nj#K#4oiR*)xhhSNV_`zLRgn#)dCDDh`v(R_lps@0hwt& z{zw!{qkAzY;Y7@a#e!fYTO-E zjjX%XI_s_(2jTFme*`Ct?tChMWF8Dq%SKe!Yn{m6n+3m9c)t0n8jzqH28fMSOyKJW z1`0A%Q-y#$iSFAA(S7e?nH-FLu}%bXKWjFwu|26+IEYvjDzV?t3rx6XdwbnS8T7>i z0fD#o6=}XXTZVq%cZimY5T<&0#B;*RqQoSoBq=XvMTW$+m(qzZ>P3y z#QqFa#t-?3s6f(SRxM=R21Q18<4iFp+>hHD>Km;@p zT85YlAh5rk0z~jwA|!C~SY;}?bs9`19z;M~-h}2;M*HL40qZ(3nmj6bSqF}qRtLmM z4AW%GaLk10f9~Ow`4@guE&nlYvAK{m`EkSr2O;4m#`T^HM2&?L91#`r!laf3hfQj^ zw5Vmm0nOn<@wR2cq0QlgldRm;r84o#Y%i4c>B&J!JxX0~1(?c67=}BCW#J@LN62hdT`H zMWXa~hYv#&*^E#qMrW@XEQ?yLI)qgAs6OD(SJ(Qz3Ii4JC(Fim2?9!}p;d);BNIT#TuiDI~)GQE-rFQOVuLi@q;iURUk%Xp?R|>Ot-c?K8Z$cc>yUlck=$X z;}h9s?2kW;chhRWW|L8O2dh=P{r7j?fm6S95BI$&-ENn>3h$n;(13n{E;kKwyDaTP zNm>n?T!t?1vlpk|L+o<5$e(ajLa==pLPZar`6JUXNO0hsjPLXy`JB=0UbIz-tKZ4g zU%HcHTf6YBk+95IXM(-a3p@9W{iN^M?#R7kM@ruZ5kH#JbUe*W#W?za-L z_TjHc=Xz7ev*}U1bE>e;ng}`&nAOOL!LtoJb$T3T4kfk__K_hd!*zQ~1Ee|ykXm3v z0Qr^d7Y-n-hd@|x0PbeuE|9iW`K4E#qVBFnxaoMrSQYvb0gb-_^nnVI#e-)jhW6oX zcW8$ZXBgV|X<{5m&EwE$AQDzX>ru=kYoq;LY~;qubd{5uXUQx%Pt^;O5_+#%!Rqai z#9pL24YT1*co|y7Igb$62Z>r`<>xeNlAVYZp07j2IwSlBL5=3_$Rh0CAi(ic`Vb8h zdCI4ubYGGPTxg>CuYc*1$Sz$PJXB(O{Q0dk`oQ$a#Xvio(Le%+*9jao;0P`b+y0di zho9tS!eL7*dv5oF={QPy*Qy(q&in(V?p9#|$`?cR(T%WphCZhv`-qduxP81S(eQ=a z-(C8sc>PsV;_)}rx~wSC_(!HG5gvmMg;tSkgTg3hyA*bA0y~!oTOxLp`RH@|<_|Jr z=T+F!2U1u|E33Evf#Yam$LU&IWT8+lUb)$-{sg758T&p!mVwf4MjN43TvPz?)3}(C zXs5sp4|t)pl^&(xY&CL~iWiOWR($d`l=ftSM``mvcQL=)ls4&&G_-@#e!U))HXJY} za9JX3E}7ECzMm17E%3re0OC5py-n88Y@_K0a7D$Hb3B*BHF)N^Cw8Nd_F~L&j)e&x zT~=IqG^Vj4L7^o@g4N(~oLHv~BMEwLY8^g71h{hkj{X!xq;h5D^F`H0_fM~D_PE#6 zaG^->wihyzU^}dwp;eR)Frt5x5fvu4Gv4vJ3}xG75$KXV6m zPk774uce_x4eTR-&p5EJ0o;}_r8{VFCu@x9IbSZ2*Knci#8^~`^Mkzuq95jbsvH(v z)FOi7z)JdMnkH33vbI^(z)HqpMe4W}y)gFs?D2dpZ=@C79t?TJA0 z=qt%XG`I!I>9+?30paDQyDB>J0 zK*HZCx=7}h7^$K`+aJBj3o-Ira7PGtqHp3t!5{XQZz$Iz>W?YbE)3jt>=jIsBj3Fz z2}?8a)c&Fu+c9S)pgMyO|HX&n6A#Do;fs7&ns_*h51-(}eG(7%;=@1Sp)n$pWow+a z(uP)%rn0ch=1JX%_GLd39Xduj)QGHW3D3O5R-}z@wHt>Qbj}^3(S2|Y_FT!=(IQih zrXc+u^8GdN^V~}XI3o0Ms1g1d$Yc4n!As9!6yiD8*UfeqU5R&tjPP}MhnT;t6H6`^ z?ZM1x+&pUz0{_Ana*=>Nq2+Zr8(L$XPjHVi!;SC+zS%{skSd@U@-O6EsjA2}!cX9Xs?fN4qv?D+a~{I2>h8VxwY=_< zdIm(UsGq$6ahwvr8E(Og%21pKpk)1#$DHJT`T#D*q)u@yO$tZbVlNgatyGhV5k5)x z>pEI>^w5kq5cCD3^AI{RpXm$gnxlw%P+mYes&@X^jhb1^?I-o{vm!b3U0b9iB_WNWx%c4RMC3 zKJRUW_d_cKW1DZBqhgzz(;VZDk}l?din?aVi%$~A_I4`P0R_g~XuwY&(=@E3xEkEW65?-Lq%ikFNu zauMK6rxE0}@m9XfKKjlL7$?{9rXNizYk$)}>dTE~Yq)oR4&4x4MW!B`gIe4@kksdj zyU(L!@^>n!sQ2y1pdRnrQMgI{mZk*n+cnAGUdJ0)=98Tm|F#+(RU-6lTh$0m-<461 zi%TUPvaWlUmU(4J*PeFIcMjY+F~SVm#On0sh0C&Hi_)8~Ni?6oN6mls%z);nW^Dcs z9END_m1thMEXQt22V&im9uAtf>hE%sD*Pm4aB+)62y0or1J1Pd2{!$x@U zgrp5E)*}$WA#=(HPz+>B0kq^7-^C%C-0Lb$gD&;6jCm^pkta$jh4zp_nzS=pENw$m z{j$Fkh>RTF=|6esHC5d28t&IoENA*7F#FM>{ubc$Rqz=JzznY6YLk2mS;n8n$zRK(>M>@ny8w^4IqCDm*4A(N1wJGI{DZ3=c59OY*S*$rzX-q$%Ifl4op$9* z(1rGs?90*It%o2AUp+TpPEv<-*nBY@y~<5&u`{+R*Z$|3>P(JenL4hP1Aj1tRs(Q9 z^37N;+CArPigV;}bZs|5+TwZ>T=dlFZD!-+>j`W92Qon=RPC|9?vMiS5x>Eq3U@s$ z`f98*;hu$du(8O)>>9gvApSFl(j$_IPUvE5WpF-L;dH14*@%&T4{jDJNO%JeMSEx5 zZNS;9v1>+ei_PQM&8mt1pmg*$B+d7i^(_b@5%U-(>w2*K8WLXcd^7u1f8%QMs;v40 zrK*k09XCut8{CK6_ixAcHY;`nA1AOofK@bIe;00$knWDo?9SNW(c4l`pn|ETht7Pg zoS^^m3t?9wjeTz4|6&re!>JzuBt{1@ZONolWvmxXF8c31l5F(e&#^O%`z z!?dI!m+h)7T#d4hK6bPxY~#XBWuz9|z$a`ux}LvuisgV6?!~QL^#lkAB*-%l(()=l z@@?i-9&1`1o%oUmZq!&`d8w6Gt;55C*_Hj#W&J>hQMu6XAo=jXcYNQA~*)xV)F4+einGgpE;w@C!iL)EWFiRrE9@9vszIWpxLi zOPqjk2&zm!0fBW{q9FlA-Wdpf3kTJN362pK#UhbmxdsWNkzsiXFm`(M6vXiN6v2mnZAIcF1KIgt zTkJ%nPao)@s@H{DK^MLI9>&WU%ivrSkJCgf4CT{z1dhH$ztHb2mikch2fReAkD^Zyx)w^i!XA*D>*XA?m1k}LSIjK z0@1+*{)SGWnh21F3TpG5Hy_&(=V45hZvP~rBM^m?7yZd2XVRgo{zw&o(S_hu_NU8k z=9L|f)bax)ud##g_#;_3@F*_`f6F}kc5h^mz8h{=GV2}~M}PriB}Zluz@~^(>3X0^ z9|bMdK#QsjIWu{aXOBmP{2C*o%$rGHWBk!da+dy6rKNb`?P%44KE}wlY!E4+R zuRjbRPsu|ZY9xPzlmVX?Bm%%o-NF#TSQ;i&C4Olif4J{Pc;>@q`vD44SYHcK+v$Bc zYo~EdAH{};(F{)E;^O^X>UvzrMnLvJLBEg3ugcGCLEA`?0@jYZXohox?kj%N+wUwN z-26xx_C?mFxNF`eM5H3fGB~t=2u`b<*dpy{_rBE66WB%BJUdUfm`ZCqLDa^v9L6L> zRZP@a2BOeRDlx%#kf71GD;p_I_q_qW5Tqf?VZ_CcKf;vdqY|KAyleTrdpM)TeMM@)>o|1{LNAd_<~BLAd1t zPp1#Nuk|owtVdWwET7bV1pIao+&-b4GVD-f7c3Qj#;RhGK>QW!>xVui(hi&)v;94l zm4ED-K9(5$R{;r7IMl^WsoT&SVoSSU?(TdBDBeTEfA3F2jj4f zeEguhE7ClZYH{cSe1>{qS3;0<^|~sf4DwZOcZ8B979>!{8#R({>(?i>XRSO2mD$d7 z331<@9(4e$m!du(oMziu^AsJB(DhMlSm~~U;-_I$Vn11JPc;`)9PSZ^1+2^d_S+F` z?*@I)zVI}wr}`6KVh1hFM%6vEE@s8>U6+#w#CO>~tNIfOF^EnBX}u1K9P@p2XXB#v zImWV@exrIFdbJ)t*1bCVZd+G&WZEb7!Umg!i+ts6&naKKtr{}<2w)r~ z>^b;W4jjOA&-^*l_y?h4xbLGi>+Sss?uZS+LoOi%;q!^ma+}2 zfR94h(|9L*a4r!BZB7j;P-QI3iLYzyA8OosI~id#|Bmr%5{W$!!_s_Op2GvyOyfxe zwBW=I>ulcfaE0i!bvph<5FO2LI$pwcc92AZD-f|mYjFgjGUMsiVcg7Z_T-Z7+08l4 z)zCWfPfsd&GD~uM+KeEkMi*uJjLb!iq@r0YTAWt&-n62K*U|94d|U$Frfl9`w4c*~suS9gMr)C=ILBPq%PIn6#fiJU+RJ>d{O z;otZW{xKT=2zjJg9#$zmbPG3qIPyFVC2|%IL(8S}xEyK2GnJ}~(Z^EIa5<|16?S&# z4DSw;LJ-KCZ=6DOMMJm+#%9_-V|TqM6tiL#-(WwIa*$5I!0BRzX$aubgP$~)o00R1 zP`S@O7`p~uu_r}*Qr|KlQ~4@lBv6cJq!MF`l?#zDO)$|DxiPxYNnc&x7mIq{$AWU1i(qC+H#cVA1Dn8Rd6Iz3hgOt65Cm6_k4;XkdvX9)|PP{no z6Ue#wXB|g*1patLer%$QyE_s%bxMwLLFd$fAb9cOy+1&QR`F}>drTE5^Yh(GWY`9x z0rJUNCs74VAu60aN1`gn|KmVZl^`m!yV|!O2&In0+PLwAxQy^04dNK@k^gJ9&HWbh7Uu{6cr7ncm-8p%&8#pgx$89yv zpD;LfI#=J=C@d7QgSj}yrbrmAe5?X#@yRkq)@pRA=;5&d0h;tMVT_Uk z_8`oT#YXILvCt~%uO>s|_d7)V*n?&x`G=M!tr_vcAD*zsJ&xqRadb)@WA?lb%uLNC zxp`~vXxr1Cq)y1L(R(}qiP={n>*I}wfY>+Rz(RH|vi~j#Sab@W|;77^QQFZ{y0Hjv}H6`lS z0|$WH`X>>piwTZ35pq&k;Ppkh#pB97QNfP=z2hKP*AOL?sT=$EGQt}*J|kwHB}I6e zuN9_I7Rd_mFLp$vKvda{r6P6%iSM10^H7xt->=&rpWYvLst;t{3$VQ2fN;SM0x!Fc zTX<0R$j*1+889+AsvE%~?-8$v%_D(e2ZL>)d3C1-QMMa6a;Alvts9ua2HSX}#&ccE zU$9K11a{hf?*XW)g9+4bVU*(i!~+IkbmAX(AETR&6(N7#;hNdX0G0~5W8;R@&y5?- z23%!&VD;s+NnX4lz29*hq<4);YxCB)^Fb?dO6evc&p_HR(QHxT4&ePt{y*}*Gb0w+yeb0zX(6{jG$M-BE))Q1UV4Uc7$3YilVG2(Smr!BD_mUr-Q&= zzOlj_ejYW=Gp%Cy?T=P}2?8~YTOSvw^8a#d5~DyftkFG;Q+_>p^Lbe$iy9lUeF+1nnhN9t>WN z%9ouvxN*y@VQY-0UQTc{3ZFvv`D{MVK?oJXEw5brFmk8b_G7m(S(XvDLFCS51zwfO zfJ{<=(ulezf4HUSwCEg8+*n@(EQAYx=C@!p z>kvE*SwYXz(d!~p2BF{cuNwU#dffDDP9Q8M(ZV%PDZqC`1n{O7#&pP=LAp!t>o=y) zeX~)Qc~;&8tZg;c4!;F+$vc{;(0|aRa~S%c0L6r7q20$u+Vy5%JtPD_Bd`!K2aETdJ z-zpooEQY4_Z%%hiyBhEp|9XTvC31jO2s;qpePPhQoP!itjjK4@Vcb~F0Fg+3`5{Tn zGhS$wL4&#vuUt+1Oji@96ri-qYw+tyK%3==zadVgBWL-#<*)HB=;HV6<7wAlp#oRC zX5A?&ESpe`Ens8#Kg$^g)MEBYW06+&*|b`l@hV_Fv=|qll41e)SxD}pck+@zhY}V1 zt6bs2X%GgXWC`nI9lF*d=|{><91a_qj_rlYeKGWl(R8G;#0s|&hUKW2f1#wh{(!nt z2M*bR2o7=q5k}CHP>U5NR8BYMjjPbRo%a-ac0L6g#DT)bwfOZU$4{^CSU6Z*mU+0X z^w~!*AGpj1k3t|a09W#lTI3=BB*~_OoMC$tfx9UP;P6Hq+NcD9B2jSjFaL8w5O_oU z4OCs&M8HYh);dk4extGz0y`W6K6^c2R4U;jlK-azNrdsj5l3TD`x<(3E+W%FBq#d4 z+xk5}PSfxCNNq1<$9AIM^OFJkeWD!o`vxE7pl~mSg!Zj4y6&tZJ9YsaD$bqfpCIDW z#D|C_k!i^rVQ{=gJW;@YU8+QyJEJN7X*{l$Z!J<|X%%oq0E|RSaATcO0&#O+{KAL(-c zqjAR|*cCb9U;!fcFq(c#0jY7vFr(>G^(!wi7mVObiEN)4Ed%n`KPAZah~H82R62%|penW}_v%CTDg_TXIFU6wZ-XKSEHzsWON$4pblJ3Zk}L!W(dLZj}kI7GyooCM7|r=h@@#6bIR)5b_2ie3cBV5HeUgNku#n zk>$0|esbf#;-OP9>F&ZBvn!hZw(L~qzr8d;(^G%r(KPTS)4k&LWTGCwACZwfxm}_@ z1Fa1p>XVSv4DyVUpEN83iTWqla@WHX(45N~CC~yp4_+g~!*O{70&>8L_7ewsoUK+) zEc?z`O!B5lHF;iOJX4`I!cmS=Dn%tix|ZPOfX=i)`~UjRT=^d5BpF<{Gakp(ol$*> zbR5hcRBSiGWfb|vJ(PsxuXx4?-!77J>q2~@1(fBG=lK_M){u>*QuyF+;gRY&mrhok z-fA+R{sI&O!G}mgMT&lenn*xDUHdMMa^*u1(Vqy1VvML?aBhJ&c@Ek@IIsL-8yKACea?<$Bc20Y*@A%dliHl94@TquyF%$g~4@L^_d zNbu1Ni3auea)x-^u#fK=7J^TJ0OZ3`@k32zXsDPUItv-+pyfz#BvgnMf;`7Li2PK& zNl=miA5omkYGsd{&%sCrP}6x>)W8ZcIjCCz#RA9xhCk`Sop!MRw6LlB?aWjRPX^9i|Bv>X-yOQT7c>L9Qe+}?GL24ik4maf2`On498yFzC_NyO zV1o6ekx|21Xa*iZDw!PP1#E+G6#aClbpaMD{)O_OQyFRa+jb%4th=Nv(a=jmYc6f`&cyU zvH@@5aCuCbn&GLefXm27pbWQPYW`yqa_EdQNo)bilEzNDPDsuX6%vXuilHg9zrbO|9t?rjXd+{pHG2(LL2BK9Yl?Z z9cNr3(cj=-D@yGchoa(vN@LrV7Ge;w~Z(TG72wh?5VG zOiAj39}p+k1xwuCMx%Ub=T0k1a`CXfaQ?y~(GI>;=i|6C>T5JhM5|$ihl@{s)+LN* zlZ0T?kD>`(_C0XSnaCVS&xZ7W6N*s@z@YyQ97Llv)9w2fze9bno!~{MO}CG1eGjQ@ zSIK>(gNA{~l1_Hm7hcPYi@=w0qY#*YKMUBhtIxrRS)T>09f69E4LL!kB}zRL!)Wpn zh6_g)Mg6A9r~_@ykOl6~P?{KQ7xLI|8Q@so=%0mfmqa&+r|<#+bC^i4MypbUR+S}B0931Ta15{Hw*Xtep|#n zKSpSXl3URm{0U%Om{_c0<03*om=@~*s#R5jfv;t~1yzU{8f{wF=UL}rWTf-<0W&~q zj{$xJfJJNS?5aj?9d4^XEr4Svl@YJT8VBpao40yW7LE9`enuyYhlpC>hfE$rP^a#M zeLxMwT}YJh{pyk7gL4OCsha)gKB-O@Pa|kc0qnwOWyg*{FWHBHMQ>raT&M;hKd_ww zXpaTJ)*kMmz=J_?#>knq;2E79SzlGT;qzBQBx&buLAZ^V0rHu=6Qv3ZZ6EGX{!Y1w z_65=|#htz65R!&y0dMNVr$wv*=Ecfo*$J|7hKal;CQAT73|ItaK`Yw||D&`X0ZWOdx3$`Bl<1!Vv;*D`pI7wbh15%f3+Iol}3p~MBJBQrCF z`W*YfYcei&8&MJZ#l1`d6gpG5jT#ZizP1LC1pnL`^lIvi zP*p5WL02()KqO&|LcDl_%zE6}Z~hzRejV3E0qAWCKt6#21#A{bvFMn~vHVNhPAxJm zgScdjy8cyc4(ryl0Q#aHLc8NnP`XU^QxhWHvxC7MUAF2LuXA~Wgno@Po1dmMgHIc_9(I%SVU}5ir z9mZl*hdhiBMNSy3_deJSCr&BZRU|S@Rt+ph{!UirDY9jVQ35`m=whj9d=xoe)n*=Qi6GaJBdpM;PrWC`VjRDm3F zuGZz%DK}fwVPJ~TE($Imr}8g z#EsVRP6Dj}D5kEccrH^=tdPqWz`{El!0Iqync8N> zW+QwNAWh>?A}=cFgf(e;aGGJ%$TS2)*QgC>>fx<<3RfmfFzGa1bufgejCnm_C3 zo;YW}a*Jm)16*2L?ytX8a~RDb+r(rArAywvG~ z8#m9UlftcRum}6+7<>-KANKcri|ilY3Rik>;}=t~SfF#|8Zw>Kk#Mn+4l=|$tRnsR zJ`K&{EBpRe1QZx2BZwD{AAWyUWz#mJDI5J5y{)pj<0Ce!*NM(=LwEXY3F}H7F(dS1 zABNy(ot4Gim7yK5D|F%Bsm0)=@nA(JARh7b$f`6VVuRLvx zz4R$lVy1cRZ2u@8C+{5(bB=SDL9Hdn1x*!6hs0Vhdvs3| z>q<$4QHlluqinK`87q2(HMt+wkvbIhPKr^MD>E9bbFEjSw>fK3PSXg8nbWt1-^Y$KZg zEA{eQ-pe|^T%t-q_Ilamr&f|Fa)T-fN0l05;{6v2apIu@?n%q zK8#BITaVCT&4*-pc=|Iv)yRb6g@+DKa2|Pozx$p;5HH*@NM*;UHA<0@4IZqMO3Lvs z8iFVJ++-KljPVz{1ssPyOBydtZM*@ED>DiGP|*|o3n=J=3NU#2e+Ng)5}IS&b#duY zMOn>DxKe)O4ZD0_5ODOi6h;`z`CnrHkDsPAKIj{7TuZT^ZMf!WqZGsY^)$9E%rVKX zpPYiV&7Y(IetPz9V{JE^&6Kcs4@tWw6~^CZ?KX`6x5hn@TkT(}li4V9tldgv#S2Tm zX$Vq=Xo|GzNu_^?--qR4w}$-x)_r#(zjJueH{6i6=g9P(yG0WsSz5fXYsWX;OD!`> zHm-W!^VK)qbEpuozA`_AxOSTG;}maP_;nr$jfO8lZL*b; zaPeH%r)alHI(7yEd+>lT*Rvj!(Y%Y+dk5ho|GOhocj4UOgUIU8dIBmYx_6dBz7;MG|B8{ zOya^h-!NKtwzZk_*;X9!CcB;AJmu;T3E}Jon^Fe(3LK{SjRWAZ2!wRpbmnfzCPq?LsE@uw#H3nOHOyrey8kLe>g&$(PgBqQ3rv$zU20a=mHxsnG){1my75>vc zGQ@csMuqO`skFVG@eXWxmJ^6pA0M!SIOlVVo%a?^dey}mgRoxk&}jr#6%29iLrI(> zgao$1aWxU-ioxmZs43fS{MkG4*Z~<|{pmquYDo+m!mA_5v(m7ZJxkV&ot`aQ5%_u< zvaJ0W=QvI&LQ-9S*N3@CS9&V40(av7b#V4r54za^lI=zDtjDwH&|UF5lI^|@Gbh2S zKeQ$HEAoP87$J7hw=DX$7)?8{*dWVrEKemD8vUjjt+q`If#*oN*HejVXp5eGclGFx z;QwSak(OJAG7_x`ziN;bG&&V1sj0;2=os3m^lb^082EQ^i9cF{sL`78=IS=!QfT$g zM@fc@vRY;&<+p_XwBof*Y#drVAvPt zu;-9K3B9`-&|Zh}nFA}zqRy=Pd=eU2guU@HcZgQ`M{rexKZr6Z{8(j9TZR(e$#A7)Y>T~I@dri$)@ zJVeW~fb1V0v_c`e>)H&dATTC&_J6j#4vS|~6dm&R8c*)b&z(TCT z3U%g(=sI);`xHbiF6(iJJsGQG10P4DdGdHP6IJE`3e&m<`3h#+2vIJ@2UV;2uo?wU z4$IgyHRAg~bZ#*MJv;G%NDW5QJUn%U05clyLLsc}i0I9dbD*WM=4dAyh>9O4wgPx( zFB9{;42< zUio}oAbWe&@;X$9#h}+7G8rp2ydtfRBD@b+wsR%p2^-hs?Sx8HW<5=$=Kxh^ghbi` zz*}-V$&;{nZn57!JcUS^iOM;Qh-HGqBnK@fGG#K_!q+bz^*mky-Ki= zYr5^cy&df;5GQB;|Jc1bwcFNR1Q1u3Q0(C8U%JMReh%=m)l}YTYd>X9OzK5!XheA0^$W z>tg&?p}#x_Mnzr!8o#Q9rBsiG7Z(%HFwE!NYK&JhV+vR|VZr;M&$ND6)IGU4%eg;u z!9%1V-tmvrT?$Vq zrmF+3E|!Z-FOom+K>oO(`gUF{p?Ost>#^_%d+N|$EXndl+6T?6dRQ`J`zR@hFT4=Z z<{f}!JZ#ok*B<9anir#BN^CXJsu0X1YZ7T58}Ei@yI*^u+59@CI18!bN3b~AYD@0R z8(mu8a+nB;^%G2sS-w~wb{{!fODA%)aL+#?9ixPab+L?A1{!=ygp62@nnNw;L8jl; z3M&Kfdu*k+1CqXG@3L?t|A2ocO^JBn0_VOxP5Twef90)|I*!}(I&l7`{qB)Pd)PGf zXHua{MZ-U?H?hNLh?ZLQ`GmC1qrC^Z(-r79?>>$Ry1m0aqsBhM;&&@Q19% z%*wPLybjlnPIAZ|*{)Smi^`saj8?M1p5;SkQk`zb7P?XM1zt*W*P4Ycc89srGTjV0 z6aTuye?YyIXy@8z8_YLz|2jNIq8Vmj!R~n*F8)>Cl#PzR{lhNWG*0{ltVzr@^IKk- zYvz9aBmY7CkX#;;(aA0lrw{Sx2G3l|YO%iY;%+G~5y>n`Yk&`-4Y1rKGsS|WiIQXn zZdXh3%D9!s-$B>B)y(dX_mVB(shebG5#Bl1F%TFn;rULI%$&>5wkfA;ewLi2W#>s| zidpJv@t5=}Pfs%Q5M2W^B$?U50QqR)kRLyc^?HMS)@drq%-=C8&Uqs}c#{Fyd6Jo5 zveeB2x89piH zLpe&dHC)$tfNtxTz^8ii#f=KS_#_2i9z<^SW`r*DfxH0}$RtxHxE7k(jZ89Ui~D5a z>s@D(nF45AWTNTmM*aQXVh()t86e;AL3Q_2X`jk}kWi)$6s0B%f7#XaU_=}eej@;p z69y&}FRu)xFD!<|xahnx<@}HdSw$S)vurY*7!S0?DqI0l8YqdlVPHs zX-EhwDDfka#SROSVZ}oPxgN{XX8ZhNxT`g;;#7qL^~XwZ+WM;I@Fco;Vcc;d)G)F@`m$v>8biYiNxoKSDlL_Kf}2uRJ3>mA_JRW}JdY z^s9QB7Lrj#geC>3-dG$dr9Rb^l>x5%)8P`jSDurGb z0mFMzW)m=9hbmK&3rKsT1FTslljq3A0fAUaupy&z7;smN3jkZkixn;B!_dB*_^N-q zmoY<{+&D`zX7D%MMBC+}f}B#Q3{iuMywC{$Le9lpic$ydn181Xnzu#*?xbE|Fol@3 z3QZsUhp}e5G_INj7Nn1siuO%p%&@sorZ)SilOSL(a4NmcsA^LpH^?nerHB|%692wYy z5o3(ARx*?I!DwRuS@Sf}0c0&GO3n))G(*ajJ>~=by7v5 z=#f^*3G7*;-e;0QsX5rH2c(~l}Mf8$IAg7`%-1_Nm~6heh1Fi zW7^m;;SX-dJl3f@rur4>5Vf7$Lqs@HcsPxaKf@i$@MNwGmZX!>3rHf3#&IezPDoVq z?N$Fu!m1j^^u|4+0^g1k%Q^y2M?NVMqsDf6!@DkGLqc#^2hWy;O86znM2ImZo5mVM z^m0GsvIJ#4aV{xK@h{1ykvtSlhjJy;tiUJp(dBCe(Q?o_)-|RV$y`8}VNy_?= zbp(kuBd6qiK{F&L)E~kn!6_H>VZ)Iy!ht5_L(hw}NFZ>RRDS3%0Ts%2vI=l3++pG1 zn(IsyGo`#q5SIXtkOB2Md*mFB?*`XoF4$X&uA!n@Q;E)mX#4{1y93H$r zV2qAKGKWlKBq$%i;9mJY!D%Jll5=U0PesBH;$O+7(MmNeIhTeHEnDIyZiNpfx$K<@ z6za3P56ba}d!T@Hg;To8G}-}3f?Vow2NbU31wkx)*Kjl;R1m>5N_uvuNr762y*yUq z2<}-dn>xJf4^zM@rkIqmL9a8&sc|fX&QmJ`lBBWCG_1(VA13 z)#FH)rk9Bf7zrMlgpK`KdbyWoV<~7Cz&}7pG|TjOjAj?D+z!1 zaCd>gshDaa8;T+#=GyoTxEXS7xC>U(-(~2MQf>(2z;<ok7jfcV>6Qb)S|Y5B9d}fQb82e0S#-nWSXE?6mb_bH%AI-$p|9z7l!PU#7nhWr5VCKMyi2IaO9|1=w#wv$ z4J>h;D1zxK0kG(gN?!lCF51nYmFXY zLmwS>#V(2T+3WE=!VSc1iK~kKf;SG9zvR6^rhX8TR;eFm$}IF!Kh*NJAY94I0AWJj ziFSZ>VKMF?K#Y@%XmalAde56XTMa$ll|eu*2Ap07h{fm&0@Lm!3L5T$cGMld9lx0Y z;{Gcn0|dLEGeCr=h=A6qAmN0-c<{Ze`zf1(mInsRM25+T0;Yr_G%GTXvVmY(Ek}i^ zlUW--oN)-QfsC&jmUY+tTGl^ZlhttoYCuJV%-Kq7i(+VU%IHNyCxfVCEs_kv zhhO%MGd&qQX|5EthN40$@0B@4|?J7wBkt`x%Unx!Ak zom3}~6CzdL1F4aWk~bjD2l;N+Z=niQOWE0bh7`=gds zV5k_-5-*^bR*vd=!x^f^zuKD za-itwQL{TPm;4WGUqb{MVBaPG!z-VXRs|JE8_RDH%*PATG~t5iH~eeqbrEuEr9uqf z=`Jg^dVm&pq3Q*9D**mdexHI!^pFodwMZ?Cp1uk&q*s=*?D3$WPm$~bUNNVw(Z)&w z?fg@uel6>M?Gzm_%k`YIKi|ARQZv912e6hakU7E0Z`GZe`~oDl&;gyGECF435&&_| z5)gM68b^+8&??Jr63d@|pCA^`=p@M<`Y6|>l1-U1a+N8zw=*Kz!h(|ALB`)p?(ji_ z$}CWSDi~>Uat9gwsG^BTRWYba7c5pLbogPo86Jv&MEmpmk>SBsGC(;AVK@7_2IasT z>R2STuQLI%n^k71RO}`#Y2#gTh6kCPda^5n16L`4h54ZdRjE%fE#jeO$A48utUUp? zP=M80X%*vOh6hvlL5cxYYlO1SXW$?snR6t=a2y&^!|}oR|8h94ybswPF4UvuW_u{r zwcq;R)}D{rA)yiN&XqKV?JVU(@Ms#vH@pR-I1{a9O7vhfjid2FS;R0^NeNiFIQ4XT z2Y(~eJMcLK(!24mON_3<47U=`>izO-V#Nuc>4|UlHtaot#7NPAMk{VAy+bF-PKoKM z5`*S@Ot~Ngh4`l#wz*^O#xVXNj~9GjQ)z%Rr=0ujjhFaf*X!Lt{3i(jDKNNZIyHlx7D>Jll2KCY zORLOTtCi~uT5U><8L~RufjeY%;CSj)WoLt?IfU*{DjtlceN-BbSu3=JqX>1?(_oSP z$YsHWi^Br-N>L60%s7did+|Bh>ou>T>_bYqXk%Gz>b&X&R;Se=R}do`1tF1{fPJuX zkw@1O(Ms!swZkL=$|RSAe4%nV`0#O3E(c+Q(GJ=KT+0a3Ib0-J2U5&MCEQ`nY};m) zz_hTovJAU`*UWaMGuOT=GenztQE9pKL+MvPRH+;~S*KQDHTU*XLMP2q&GwyN5phVE zA{9xJR{*qL;L?eyqjNbD1>xzur0-m_Mu1a^3u;l|sLT(p_^4C|SJc&6G{hJQenC?W zwb18PvWBC+D*+*o;i3XUzM7gy)-X)Hyvuvp%a=M?!=|xPa*_A)DZbRn8eUK@XL>Jx z&zB*Lxf#v>t9m)nduidNBx|@+y(#nF%;y^>YxuExV|Z_-@ePwT%u;VY#YOetWWHgt zhSSxXH@!Eb@aDfr)<7PoqH2ql>A6J45-+@FO@f=qqR`)wGS|+;`)@YjP)~hn{70#c zzuZNm9xWQ*d~jOJ61L;6c3-@|KcZK;{(a+7aV{?x1l;gw3ie;>{9j`Kt4C5AKldAN zT#F-nl&pbcqLMYp3Mg2clnVHg|Bt;lfseAf{>HPA4Tw)-iN<}bRFk@e;*#K&Kn9-C z8Hh^&wP+B6pezAq5Kwe58J#CjM{SjgR@=C>v~`KCVAMtvzz~<#xKyE58*R1EI4;2j zqE+Ype$Rbo$wDOk)&Ac9=l|vdGiRRXF6W+m?!D)nd+xbU?KRc@d#v5`yFSGI{K>t> zaWIe8`QI3!B`!d#t+7O~hW!N*-2eJ*W6+1O?|QgT^S@~QmYW|N$Uk^%|8IT%qEw-xV|;f^7e=NwEVzty>hiX0jZ`Lt;Lp3 zw)Oj>Z~YKA_j!^wEGi%SuLK;x7RDpH_qVsV{woU-+o?D@{D9rBBy+T2;^Y6NbK-RN z*6HiL^bM}W{Q0e~#Qs)RlQNux;++tpEXcn+D2_wYC3>({ zak8@qhr=D#K1cE}rnARix}T3XCzs&LWE|)gDE#RrY=9X&agDMZdg!teJE?u@`xU(B zd1%M1Ez@VE>#;(M4hnzV! zrs9aq>3H3VZt1h(xInB9o~DYHQ<1_t_C^|niTY$mylQp$ zJhD-75(p=}^cxn*(ybd%rf?A|=zq#%JDQQ8uv`V8I9blm_u@`~b?Z?MOpDl)s_!k( z0>{!I+4tlm4tH$Ew)w+2+H@HHAEg`9j@OMDCwEMV;zY-kGf)6rW%!9dzy6pFr06g% zqW*1xf2b!(S4iL(Wfja;uyvLrh1QTQwStOK+VBOju9IKJTj+`=K-P1&fd}eanFfUUCqA(!^n(rdwB3Z? z(E{@k$N~zN`pz^W)4((B;q{Vw9jigXZTLz;u$$MEt&L)h~lwUlQ zVvYKl7{2m=J4O#Lzfcsm3FxW8*s6+5hn4tVm}{P_3riLYx{hj-0a&C zm_`Bt4btCw_F+sFrmw29anVdq+1Fa&OKdAt_`ga+S&Bp6#jISh>uFpL^DZ*j2XxlX z$0l5(v$@0BjKC9G!}sBF6TjHXb2j`yaLhI}h~tjLmw$ec-@UciMCN1 zyeYsAYwym}9u0j3D5qU-f6D~FxRD$ayiddHa^gcl$DM5 zkx|j|YtYCu;NEMFY0~tAhbR^I=g*b{3 zNt$;ruDuQ9Nox08Y}O9iZVa%&Tl*W_Dfex)_D;4|n%Tf!)HZEZZNu^F>fTDjGGs#F z4n5M@9gGp!#YrLjE=*Dh#?nL8+14B{w%6Vi0~dBX%rg;ZVPYYumf=e6L;{CyjFhWn zaD@yU3JPOa%5((WD4!?Hs;nL~7gbat*1*i96~(Ns(al-&CZy{KOhrz5&mMBSn2?2`FsQ87Ta!l9WcnxxbLFYg zl#j422-%X%nVDe~FMY6HH$vOl{}RkhTTAZf-?s%<>f$28N-A0~U#3`>9K(xR{%1Vh zs(AW^#1h}1yQRNfWe7-oD{Ae>*1%E_Z~rH_`-O*7?f!3rrXzM73x;C= zt3mu}{6Z7)fMXc$bLe@e@jg*91qU_7*ROFP(>h^nwYGUND>@NQ$XSYz7myfr!=u6p zX@NUIE%4PocMD&=a3Xi@JXMdQrW7j`*drq-6d)C_XjMVBse!eXn7|+_l(OdsduGKp z5TiF{-p#cF`#%rT6i9^Neu7L8DvAIyW2||&@l#$MHL;x zybltyf&2yURSoc^aCd zN<+LATreV)I`u|RGp7^rqUt(0@A;8m%fGNh%RkqlhugTi zsLvXb7^BTrsqBx2)}tdEQ^y{9>KNY`C?nfJpT4e<1D}OUH+({-$B9vRs^Z=@@`CLv z5AnJ@I1-aUmGuf1cueF~7;iH%s>uG>Q^U!aGf)R2hG9%No9yFn{yZ%0c-DlKwFkvv znh+8i`G7c1b>nO}GvInMqoPnLaS+O#7|YNv4QPF41ztfpGAj_|2GNzU^jp`jzz$ZK z+;pb}b`!}Wi1|f~q*mP(Su>7Khs52g-H&&hMZKrFQ+K;V&MJ>lf+aicAaRutbf86> z-y>V9((+`cWP`A9%cNWE%=5PrQATYGd77;;ze;v+b(L-N9SkC1p77vGvFdW(-xdoU zwgPGwx(W`iD6fbi#U|tbR7an#L!l1qk(=L$hNmDov`Ne#iiDW0)J!ch2_}jZq1QSN z_3&rB6bjC5@@TK*3}PQymt1#WF){ac&;?7=(Fezj2TM=D$Ud_F$j)7+(xu1KxsYz~ zeXXKcWT|=?Im#S$!OvvCsdX$`@cUnJgGh;O!wG>Py>aDF-hkxD%vkn@6GW<2@_3Jz z#nPLX7(fndMIk~-iGVjS#?_vl4`$y_YW#NKry4)&cDwOScoHqx^h-8g^u}T0&pavK z63jqkb)^w{54V>VFpGt!357?7!}<4ub?v#ZZ-U{Fu2HnOpi=BisRyxk>%PByKg@ks z-)1+DOLVm0wfhDQ%`u$nVrsE$5*-#Ro|8zlU?qwlz|h!uN8Lfea#%Fg2c6d;e?Xuq z>fA9V~W5(Yq3KnJC zfUIOGvXTuJfK669Yt3DV!3KK@4X=aa4Ky9rSvPRLkOmCkjXwDhFI1X#|5!g7ix?)H zeEXTvs%x}{iy<_M4J{oq&fqq*7l*Q;>7iK<_pzRFS=uJc5P%fdAL2Gv#=)SoJC@yE zs1^ub)x}>Dt<=+No6K7AC?>YzfQcVPU^RnLCl-(NEEq@9v6$xtVKgnm8=RI>iMk-l zc4H}PgQ2Vok6>yD2HF6iLYM(1hMDPn%m_Tg^p84QVJQ2fq0yF-DGm?M-s{zovTJ&DVlfaXnjgvOPF zoS?l;VF(DtPDkYGSTitTT(V~hjJZW9@W4@^!1oTiJ0&s!ZQcWNRs*bj2PUBl%v!8_ zX5%TWBefuEs0|odGk-1?H;1R}T`h13xd+!l5mgwQDz!~wzjEa~O<(Zc+qJcmk)qMr z)#2@VKE3#S1MQmMe#}^VLCFxkf1~Yiwo3iTltx!9=XB(YX?Ff>?ADc*jnwvpxhq;NCh&RVxz~Ac%H;B(d$mVh7rn zoMQ0Ka&7Grz#Rc81dRCfkEI)q#C`^f?1B;KLUabV7qq|^CW4Lj8ARB3g*M_~RFDuIMF|2@arLIo$BM7_#WXIp!`2U2?d zCXy#?9gUuqhAP$+E!CzvEjbM@lL}@lnK!(iN;-VFNT?zi*9a}w4R-C4V6+CdySN>O zJqvtyK^@o*Uhk%a3&R1z6XOm%SRu5A#o!@D6E%(w&|pD0Us&(XZdP=WklsG^mZ(VL z87oqlvn)0kJngW4bQwkeHFdu4f_a!Z;!*lhz+rV*@5Bn zk~DYgP4+B777ag)hp`dS=q%DUd5&*?3zp&PV_~grf7@YtiuIfqp?#M?`!0o{svM(} zIcfED<@^~oBmPo+4&!;K;Hne)^xK?5)o<~^F!Y##Q>7o}*}Y|VlIz8HJb@2HFv^T! z-;Gq!f{X8f!pTAYB7Qci_|2Ggq0Mp*40`6PJFkI1D5i*>=j?^Tp(dC`I7RuucBHhY zDv9^QDPA{bZE%NtOjMa_mM1tSK_1~PB7;L_V65SyNwB*mX%Okdd!=Op_*3!g!> zL%Hj7MFT9}C#C@|IdU&FyKZ2ilpB92X$(aRcHBnsmow?`lrverg{_Z|708xG3xZN0 zMTLQa_)wyszg3V(()MU}QWH{eB(**Dd!Xbx`17IbB7P~}gKTlg*33r7*5FruI$VL< z&KaNZAoc$!W7txEf=AC8J_c&Q_2ob5pc~9SveiFtWsiSJ0t^tZha%db3{I`GM6}AH zSS{TsI9jkaUduo>P_++yK2+`gR>4?lH0*Jmegi#kP@|Eb{~5kuQ7JenZ8~cj_pHu% zYOIHEk$BS6vFSgb&L}nTcM#pfWxOO&@b?W(L=^mVge4SYa~-!P3E3`*2Q88C84#Mg zO>rH<$P70zi&1U4LgyfkeH7NVoo-x9V5LljfLkAXiAc~Mgi%gTaO0M@qmhFp>mYA8 zFT#OLj0pv`@FoLHq_15qvQQhQ*00^hOH$#@S5Y3KOd;!Y8!TvDvH1>n z$o0RE;IbMPFEmIwDKQ^J((5OvTOG1-t3x3sN!f-uGh5y2 z@ZDsqK|czi!1?f|iK$FFyjXNCUx($cJQa62ID*;q#c?psu(8>iPNQ9dz-3vmwwms- zrRs);%CSZ4fyf5ktQ=deT3R{Qq2;;9me_5L+}Ka=?4>}I2pnFApZ)aCb?if};Zlf; zqI!O^N7b_lswXg=QUv#n61Z=ac4X0eqa68hppc*V>+8Kyh5ELsA&hrP`lqq3hL}-z zdsT_&olrv&_@I-&lp5M;tDzh5C`k>al@j7MRpWVu3AS+D*Y&K%tOx1}LSCL-zeS3#>{D(Ee6 zx`2GiMChh&e8Mg?_qskaW$RA{XrYfHVfYu4y04;_K;_5hK&87zAqUjeer2e-2Rg>Z zKoBGCk87ZXmaY<2!$F*tONSzTjFvT!TB;&vLNcL)G8^?Q z6Ydbn!_c-^QvCwm?XB1^tXqFZL-(E1fK34nZ{aXqm>r*%EpakDs(4J>FCZ4z)nzqEnD`ow_!i~PqvE&%-@1_+*6|&iNoYA#5tnsa@teHVf_{kR%3eRzNkY6MHRvTZTxhY?(Ca zGv#&C!Nr^S86LgT=rv@7gJGow@IDJ4fde^7oS=uQd#yXBVNGzzw!~mg7|^u#;DkZH z3N?5xXP| ziAQaWp->?~tE|6_BnCq_0N4L^Vo(h*>fkueIbyeMYXL-26iOW+SZKB@MZBMwAzW8ED@*l48=07d$s4`lm} z-Dy+0F6SF59UDpm$QWx6qC*Q=#Qy}X=ae8s<^2v$<7--n5WWUa!#Cn1HY?Zz2+ITp zOrf=AH@O`@;#;F?N#gFPMd}&Kmh&U@6c~H`HNx1>d`Hww+Y97h*=&t?fspoC->Pgc z5cZb6DHv{-((JwaKe>(f^!E3-cyhC1EPA$v@69{eEzK(6Ie5PQ*wMk{M3eKjJPKjdZld zer=#F7^)(^4VSR3rmq`4+=j~0p3b(QqAuL(qhrz6@LEJE$aKqpXjJtr~ ziQ%jZFF=uM8&|a#hurzZkVy?hP{V5-`xf0o8pY-midKz07is36bhT3Gf7*znt}FOV zbt!Txal6TaJj>bnjJ?Wxb6tuVt4wsgm5Kzm8vi-|C{ zw%LSGYpwFW@MXA+=Mfe_+1^0Ko~uYjkFgb$Atj;(lMPa)8}WWgDNHJ40MJRgK{<4& zg*@iafs5gCe=Wth#hXKq7NnsJ7ra3Xu=GW6<+wTz@)FB2rsv1T&(!_Z_?ZrWjunIZ zbKtrshno{CCl&trVF60akWJPSInEqv!mA{EPA@9zZ_nxfEWG488u}Hh7_Wt2#S(7M zSoTww@rum?;ji)1Hu1*9F4Y`eoHT?oeVsJg7%|>(HrY-ZP;SIYquF-SXpyP#?eoC2 zWvwYdR|{-L8(`CFf=vr{t?D-0Nuv#qt+r3U8pKIs*5{AM)>B&F-c6_V?LH|j?wQd8 z8=TCE@YnFS5>aJ_1L*=7;Bl?YRkl@}G;l?d2OgQ#rO8ejw+n6N(d5ZpJ{3AB}?hUBdy80mZQPcL0O?bU21EthqyL+Q+?~u$;L=$3C~V zT`rBIg!hUR3XSI!xKB28@Ru^4>9+Cg_jr_KJmdIq72 zw&`re)nYo6#6=?g#dhEt=|t&iH>;na>Fkd%oxK2298MpyNg53JQ9dN6wfHjD8Th2> zEQD{E&ZzNVD)r;b_U^bFpleQLAjO?(MY~}%W4?~SA*o8e>$dLtDb%}v;UR`dkYCDa z<0gO*LDusLE>MDrc%@ZR8~50FLo(!+F1JVS%4oqY*NCCak2f)QjbuX^%SM4LH@W&> zoT?0ELn@2%4(8fdt?1+fW1dx%j_*LxbfuXEh3}vh* zxq|j}wxMhf2wXUqhO&d~>ix)V{pBhe$~@hTPRm{PmL}m{}+UxZ{n z0GSc%5!uzHZP4Ay!_{!QNNOwS)@gN4fGOy7jumq-QxJM`52m1llbT}fz?mi8RLzQ? z@l?vAdFTCTgZL3oMV1XP8oq|_jzDq&K&9KdB~ggVT4`>K=RFdmC+jHY5w7h`$ zzRB^vD|l(kA7Y$W(Zcer&fdGoZOoqt{fFx$_?x$AJO;p!BN@U9`=Kd`;;tVf{`Aaj z7q@E2;(UvZb>xxo3;57YIe3WSR*nV;bLaDVT#v(W78$dSVYl199B^$YGOLfl+<+Yl z@#er*wK07(%sAc9=I;>ZBE4wF>9$-SV4Po%hbWhwz_@Mv$`@-K6#Y-}%T^f;@sJ4f zA_Kcy(KU0INY^}_rn&|WHec)pnab8Uv_LKR&74(KY5I;)8Daz#KJe?JVKkuv-+XFf z#tQiMpC0}kq6K!K zIHk`klYuFeGy?3?MyDg_Tq&K#6@?^*g{8(OGg^lYD`^m%Q)a@#A`MlA!Pwzl3hN3e zbms=-`$p@EbAD_dgtpv7)QYO{e-@Oa0q0vjzS6d8|%P5W>8VKfzW+6U&re{Sxj{i=FHls_h$DS`28BM=R?({d_U+&J^u29 z5OCua6yKF}(Z80VO7pjh03eE>A5BOof_+xzavv2z^=Np-OCIGoKrRFmwpky0KY;)) zKl>LJ8~y#C57h>Hx5`*k4QA)csO$IxH4gdN zzpy>A#!wCRx3VbZDN#3sx&a5z>zC70VyMEPYc!!SxH;P*ow%c^&K^Y9*qcZhhoL;i zUXVx`wbtVh95Qy{OND?|1bCz~}7)9uz+#X+_ooC!({cFD9ZPwgp z4}L++H?@Ut#y4-sHu;wFml)$6TEma{0Nxu|?qGwSmtQ7_4Z8m7yU_S|HO?J(`YEQ zH&WvfT;av|SU;_s=IQ@`d$jy*@qg8$rDbWKd1YNYxFTjp#a5*?;(7?}!|`Z&rFsyL zmY>YAEsPY&q6Lv9|Bgq?tHs~s(enEFP}JwCi^*uP8Ky@|;dMiMw0wTv0FRb&i>Ro7 zYaT66Bhu2)jsgGQ^l16uif?My|Gr1dTSxwnJz8#ijm;b~tVkW$bV!eu*De;Nx9gL~ zu|H|$gt5-{^=O$lT?`Ra++rRrbIuh*gc<^SwF4FYA9=LAn=TqGQK)EvYfOrjZE<=0 ze;zG+@Mt;xub5T;9gmi4(~>9+cdZob=kI^z40~_gMl6`k*|{y%GCD=68_)d(Q@boq++s1i+A3? z;nDKi`69Z-JX%Un#(%@3<<9##nS`1!#UF$@>AY-y4sX z4__S2qs4r+k4MXxx5UONLwhegTJF50zh#qQNB$Q)T5_hnF-(t^%VyYm0{8Tz1zYC) z4?J4TssDM8mg`>m7Cl-PO}87bl%$SJzEzKwD{8(ykCuZ__W!C!%Xh17QqqzaEx2;_ zf7YXA%XxP3+_H!k9E{@sZ}Vtz*eKGY<*J%*-J|8mKMvc{+{X(qj7yXx^l#rCh#_|x z2J>i{_sjoXkCwyHj-g|V{D(bS?sE;{(ee$Z<>$b?FfH%AxQ_`4rsbdD1ue^A0|2ba zfwonPlTD%t+wqR62@~sYwnI04iDlAuO!Ktgd-CAf?oP_KoY{UB%QmM|FKhQLpuKos zu_fowlpIM17X2;8G`&82VZ!uk8;>WW>^{chYPsXgIhgS{vLzY6glRi13BQ+LqdZsL z6S+}s9+0R-2-aPbWZV6|jRtMI-(=9IhYYCxvy1vsJu*|Q`H{2HR9qxO8iMYVk`YYM zeXS=!_aDR%EMlfezL0H{nBXHL#O6L2<*vA30OgKBp?xTKkX&@NN6K*2dY!@xm zNRF_x_WeEEcN^1!;=Xxm0sPl>EdSmqFfHdlE0PdbL>M<_;IVbxL@{n`CmF@OEN9!{ zOwfrZaVzsS%Hk>Ehv032m8cvUNgTI%2|Tcu;WW}t9CFHZr@n=lCw2J068q17WWXMO z5MLe6Dja?kS0VgLu}(PXM!dplnU^20u12b|S9NXTt8oW-@nf(a;h`YhCoRRS%0s9+ z$XpfhJVrFQS#S?Z*NV?V?R0>iL}gOyswK$vxMpshKUr~B#_=q>ocKR<@P*6?R}`#rO-hbFj-0Vky?>O^mHC zz0dRCh0FJI+a4EY?%^J;&^Z5n{=IMysI3eCUK}!bCe(-EjJ5RZ$ObwotikkvA=FtV z`bhYtR$nJ-?TXFT`HbYQk{BM$B+j-*XI0Fd7Ul}(dkOgvwDKmj1WjI#FI2J;?iEdZ zVs0d3ffp%~0PQAz;Xe9?vzRTkCU4y9v3_F5<*ANC5%HVANi#TD;6J0ONO%rt`gw4$ zaA^4#!v$vszPZto#Vwd0V-V_5+%_ORh?;y&z>2koUuV@eqY69P{gWE&A3B83m`*L~ zK2{oW189>>(*2Cx5$nnFSoh+b3Dc%{55tE1-DlYX5_>RO@UI#7rbM!0F3`A{3{Qbf z9=j#I6!Ar7qm9y2xU?Myk?dnJ6-7EZj7`Bl#iE}hP{&66 z8uvPyM&esP*-G8&b%u2O1bow@{6~&|CO)HppRAUbsark3Q3uD2HhvYuoe9^RDX`ox z4)^M`K$TTd-B-7I8t4#F-vQ|BHaVA`SKY1USD`C-4m>3?)@{t^iGdQF7%0cVa6Hr< z`Zkm!vQ7X7g9vT?H};1r(C(`km(n@<_07W1OdxUm#n>#cjfQ2+Aa=IQm zE%W(SI4DQQz3v>h3s>Q_zn!i>_C426#`2#8#(GPC@jX5Itgf{_yZc4gwl;X?MO`mj zu4tPc`r%l|<0a&Lgg74k(-0=YQ{3iq#J9OHkI`2P+~!qdOFf~;cb~Q&G66;^O`{TJ*}Win(n&>oDyj_n#WmPQ_&w)g?jaVlNhu+;OLh zs8fo0VUcyh1WFW${I0@FlwugeD^7VAbb{U@igu z>ToVeeJq=a@M6j4yAUb$DgFeZAwggw9IqQ!X6xG~<*_8^xDOCt2`yODo#a5y5FKAw zj#jSZcv<$Y?}u35%GFw{`9;=%FDII-V-b)FEyRGB4VCS_4Zy_;pU4{cX!-s`DrI0MTt@cB4 zD6Oov)Q2N>5qs?tD!)QAbe8LcF8Sd1N-G3VF~9S%uagtj+`m$5C9B_oXkEwEmSEYXdX7;EJ+*4&{7 zC{kdo6*Pr?c2jW-AkBq2^ z!A&5Fni7l~zda6oR72`l{?*0eF7AQ*HqLia=E4vwbQ?YdFjLYd=0}WWdF3*ul*eQ) z6;_2ZDWls@akx*pj}-FZx`Ge^>tyzw+1f;eE`NTep89!3%S@nzp<8GLe|1-iE4mdi z^f&Omu`Aq$eusR;tdRQr_(G+8iB7#q{gN*uP{$-ik_0Ka#)FSHKwBvRXx)DxD3#>d za>v-{tNLk5ggo@$Z28&sMMn3mZx0mih;8H5&=Gjxk6cGh&fkbrpv_q#&OnXezS3l zuPgiif$PdpGY1bRk`%G#FfgF~WH@sL`l`^nd&&OlO0PaR4OP3pRk{JeuWVB6+dAm9 zHRPnJy08$4$9lCt=Dc#PoDs9i6E}->>ZS`^0(*y9g>eO$t5iRb>|*Klr4k}4_nFh} z*}R7`$Sghjy~EB@b9y;$b`zXXFuL)w@_0UaDE~N~FIw=ynJNdabrVyPnJ*WObI2(F z{|f0WtMmtpargrr!9VE6oxTjNL8zwPI{WdvzS(v3VdR6Q>1=m@OVjFv-{@wff!}E4 zQd*rZ5d#tg1`HP1p3Y6SJtd4|&QlV$r%hX7yyKw)F*}Uuh zO*kITD;CG?MGEB-My(z4mh1gj`dGi?mHR9&i9S;uTERwI~qmK^L-CRdVPnX$Xee4C~~gvJ4l|InC;-8 z8d>NzJiX|=?N;NHZ(`c3?sjtwZ9_OS%ueW%+_Wz4n&Tc8hLan2y!33B-LuV@lOflM z_>D2N-M%h^qv)(tVxuow@T)1b?09-z^<^pELp;0$!p!}?B)~LCQeMR2=|?iked>Wd zL~Wy`eMerODy#{KDk>!}h8#Oj#&*Aqy)rNC4=iC*DklQJmh91joTRLK-?!=Bap>C& zhUmquZ413;*7y2+bI=KOzFFvmI^PU*Lapy?biy*b^{Gnfmkw4L4hyN+5!~D403T@tt4!gZ9 zLCsyxK{{-eB#8G9I_w1`8%~FvoK(fll6P1g)>}#pqXjdQvhIC{W%#B`SJiossPA3w zb4gcC0+na`P6L(aa0HF0^^FrMAB?v?jvx$Bj3B(l2*POM2uhL{`i>y|iGCeokD%`7 zlRD%hbsN-PbV!ag7sIh9T2Na#NQYP_lOD+(aypU?r$c@zC8#RWB=4{~Q{+%qvsCyFKy#ez3iLWiF1 zGA18}|3|rusmHsF=_gloOpfm7+BW$Nl!AFm0_fl%+*{DXi(#;D#?yq#4V^)S{FlTu z1aD?-_F3jrlp(m`K|T|cy~y^q)qXvm#;m@O)7wx4Bukc$r>V64Lge;n_`tn6(LfVk z1QB_^NF^zHnfEw03vR6#Sv`oI*M`|yFJFc zF5^?T@uACj0}fE7c#1jRL3_j%qajTH8JQrW^Eon=+pn#s_>PfuIwUY5F2(#DnnO1P z-XAh$DA#!myt;2H;+!K^Sx9K*P#_eQY!ax@(cw<1A|O@Q_r?&WqPJ-?kIbfMmF+=i z5iI+T$cjO5d0`ZcT+4^kvQ%IXBeUCxxQx%-#=9QlQ(S0f^Ne?2ED1k7fg=icIzj(0 z7r%E(`099>%}ic|8@U({sX>VN|CiIL_IVtLCobo|PbQyiYJ>O`%6)TUQrGMfyEqOp z-+>*YMrTcjvql2&7vzXamJ2&_eQ4~kmhMBfL`bQd8dOQvZcfWq zH?zvI@6#B2F=n!NcB-p*V4P`2Tpy`Cd^_k`F2~6~1DZ)lJe<8(NIZua+i@i9IM)() zUg~eet{OF;l*oxmMUUxQ^t5bfrk|_JS`$sQZaz)4XFqa>FZq(SBn^M#HAKD3&{MIi z=XBtIk#1nq$v}wqZO(G!K)1fcJNahf<*Xt#U?nnDM_?BF3P-t?|GAkAdO`=c6g)NX z&tC8Z#KL5yv_=c$ihhjkJKJa>r}JXNvkp(muBuQJqvCKefc76O=AtR&sA$0mNwI2>s2}e=9>WRz;4o!=!JUkH8E$d-9T7CiEz*2k+!!N? z@GA#_uQE~H56}KxqB?Qb-r15=om@haINdMj`mbjV#*6kSvv*4suc(_IF-G%{CcHyX zvFF1*b>k0Yc}dsuc$G_^qwNd_iUos5+Z|G+gq#b?)>=3KhHX>>(Ok!A6JmN34w|$B z#KikFzYy%A(hR)ZRw7QC+pPAv4Ma!7l?rQcn0fjk zNO28P90o~gz!7J1J}tfu>o51i$G!wjQD_>WWAF;-Z$;H;HqR;RV%!#j!o0066h+^X zjU$UO#<~Pc32%vvZ7O3SGpa-oG}sxDiHSa+KTZ0aMc9tR_ilnl8Jl>a_wD+nFri8z zOn5C);4nX*Xn|}Q-Z29mBo%wR69Pai2(2@_5mt4Zh>V`tOUxR$hQdhLgfAOEARXkZ zd?^FV8ZB5jJZ(#cI;aQ~S|M z>hZUd4sy(&iz!M#fb^SA<~Fu-yDJ3!?6KI;c9lKvgW6V|ryEt+T!!T|AGXQtFz>SU z7>?MSS|pp$_D*j2A1re(n8Ln8)o$!5L$RN%xAu@$SBmvvLiBMFiD%B*?h>C7Va-Ox zuo9`5=l>bK80Y^P_qS5TT6G%d;u7R_WO0vi?if7fkzPDK*kzf^ji!T12M$_B@`_F2Zc5humW!@M5*B z*Wj#};`z3P0$i_LQk}My$n!?G-?`zD;m* z*tkJ3CvGR*5y4JA_gT>BJtO}hi+YQJ4hARpm$$`n+DVdPAACFG=2B&&Y{NiS#8z9hRDwNhYB0@n^V#~XIloizeEl2z@PrEL)`ZBAI)oUpWcU}>v{rOio8o71+m&3e%tx=%EY zZDJq-b!XK6bt=2Gx&juLRz6L%C_zTXguyU4BDEQ6Pq!C!|}{??l1zy0HC$J0c+Z^lJ0N8!0~*xNs=pT z+EwVTo5!`M=$PO1)Xr$Pzm)}~gemmE4#pbbsz)0DHg%@p%Y}*Zv4yjjduJ?L;MK=< zx=cMoe;jaan8u zJ)XcF*WQ))!MzI+(22V^!JAS5Xu!sMl-;q~ZdZt>wXw&8$czB;##6%dVX+Q_VQ~4g39Zk!UXef;_xm63)f#Vpau>naDrm-x^V6_^m2aIt} zet2-jkOx=VxWIzA(zGY3m#psZLugrOUlptcs=?VwrBwGR1!iIQ*erZjj_r-vzHBVn z-{J>ieI}+HXAk1L^@^2+w!{`7haX${i_wqqCK^T+Hu#=_QTMyu%9x3EZ_?95dlc=B}))P63@zo1VPW% z336Mcj3aen#m$<^v)*P#&ai&DfL`nx9Nna3jn#4_`Y}#I z_!#*{<1Wi=;1#A(4tH9r%OPbYLP#?f6dM}9M}ov?xbAVWM-khK78w*D-$Q%UMn3W3 z(o!+2gtJ7v5q~r30=k>U;$o@*l7=J%@%Ua5PhK>Neac+N{-C{r7c9bF5ycmV2z6LH zdguUS9>+a-tj4-wF@-C+aV5zvLD8g-I*onH{?EcUe2+>kDTktRyFqqLLrZ@aGYdTW zd!_Zq5*rud@gAMH=3G_=YsPvi{%pkn=g}DF3`fnz;=?|%$F3;; z58ga{#h>$4KW@5gY>Y+&F&)Yj;cpd=REoc}lb!X}LMs0Mv1TV<@LmYqhf@6c-n!!m zD*n}oUAFdp@_mx@O2dIIy~3-mi3eqtoIuvf(jP0pJN)^zyeT{ygso>6s#~5Wy7#n4G5oXxzJl>UFjln$&?`G9$`M3-|-&2KIr@Vho z_&?`kuR+BC|ewcaw>h_fydEoUoJe3yuK`Y9BJ#? zzR8^N5u7e7TJq2;C{c96aX|fmN%spKb{*~d@n`|Y_WUE0#O#)ZOXkdmmFLkjN37ks zu$DK#X@QYQNNvt}sY~8>aN|(2j7c5(zchIrYQwB*Kwa2uWz<8)2u;n#F0@2R??}xK(=ej9EcPv`UAAD( zG?bw~Hf`Bl{8)UcKK{%sl;oQYMCp>(vfR6@cJZa&`FdHJ&n=!L9=&DJ?3L4JFIzBM zvI=y`LbL-0D`Y(qsWK6)q-F7vWs7DnT(DYF;d{1s!IH&Dm4Q@V2a)PX%}FdHT-DIe z7i~fQw8%g4nH6~ppXrg;@tG0%b3grdH}=!w-9q!1_jr6}d-L&`3YM6#*jFlMvND>{ zTrIx3<+aPawR7EQ$q_K9MGgmwo+Wb^%v+%PAYqX!V2+NI^kn43=9U_HUux2&CQWKu z&YBj(h_=u_!RM#Jx^17pthl|{;!_Xo)0 z@f{-uJJ{gT=lWoSgYO({a2fMxg99hS2A5Uq6B}IiT-e~!2QqE_7l*bS%AVCGZXWPf z9kH<)7dEio1GVdOAv(DYIG4Q!_I>e)B=()R_KZcfTHt+1vFwKMdjLMsmSkz0rsU1j z7I)6mycwfUyf+2kxntz}bv%2m{j@07Ra~No1QmmD8m)EMm&F?J2!EDf)O#A3r6N+HRmom9%g8NB}MKmn`>! zBAcd-sNcDq$mgin>ESE@YtQh`zI3@3_*6|)-wA)rsSSOx2=;*5WqMf_yqb^>mh9Qf zmoHdRyIdX}A&+J+y97o8Ojt-Id(|LXMz~o@SYA74$>O=Qmx0Qtn^WB?(zfAgz6})| z{a~Cl)2~*f`LlX6Gx6qB^+t|iqv!)g)D@x+TO%JBUV`Nu?N z#qb|Z{4cTbzpOw0zT=QuiyR+IoyF9jmZ;W#Dc?!0^}5xRd}#8lCsQ({Tu#aopCcmo;4?3B zr>nm0YfPS)gqB0-$BOmjVPb^$yHeX=g!fNaqy^5$n`W%hshEj8fWv3vLwxKOXboRv z)7*zt#Ps^!8SsaLk5ql{M6kNN9|8W3;t}Rn_$+@WP$vAC zBLZbj(*kb^lzoX7cuk<3%e25B1sVxVwg@z84sJmZXtY-gJS0%=xmw^pf%aLT1%4)w zwpt7P7*KOzxB*{+{T!{~?}9y2`6N{;aJpQev}Iagwm|8qYlc80>d=0HG8SrqNdjde zZ<#<@z~p#=vO$CI36z8K4ibnM=L2fS`Y{TaW&jSS@zsR+T447mp&iQlK%lg_THx;j zr32a_&Jq&}iU$nn1ZIZ#!f~8)dbad(4fSS`GfZ*w?fWt5I6+63A(r~CfDG?+>VXKmY1{bWSeda3)`oEx&?8n3^>|5s0&9SfF&2`Zs|%^8YMQ z2HN$UK$(Er1B)8X2$Y64+$K;uhU|?3k)8p8IJB=6i1jZOC=0b-DiAqg7NF)FoRLATX9EsT<*Nzc zs!5WDEiDs>gYbBP(ow?q1R4Q~93)T%dMRI^OytcHC<}e_6-@cyXkhe-KwL4x0&x=g zn?UTjKMTZ3zf+K=rQXn)i(OQ1sJI9H$pki#X=fhhS5K+T$e^+Di?69I>h<13EH?@5|e^!Y&o zr6F~`KR0GEtY@IfCjxQAhXu+)O@9-JeDG(1a#o=I0&zWU7id%k+Aq*( zl=px@xyXBuK>J|y-6oKR95)J-hjuZL0mdWSFVMcIW2r#j0e)m>|LQToWtKn%NOvxv z=KcMv_XE4R0EZ{aD^8)M0;OT?I8LB+u+>Qf!M@MfwCald1jcW_vDG$h} zKNg6K9j{-aUx^l2BM?W#a)C0?`UL`I0^y4V;)tjgh$G@GfjAy21RCkm0zCWMd^i1nBiOG!}F}@cvXFic{|i#P06~)SRb=$18xt zFUqS_B!60t%fMxY!J-v_7})~Jyn z+ycPidGab1uPzXX3|u7;8F;cltm;&OGEn^w1j+=7sOn*PL1MWPo0H5Xv6}ZfPkIg!fU4AR#_rw1A-hjPS?!KoM91 z-xY|`*k1)A3XCbI2+=7J+wi17l*V}dlH!!#2*ky^Ngz(7KNW}*>5l~BM0zctW}Je{ zUF=&OSq+3&@Q@_TJvbzpF^7jFVIiskdM@7u%`gFF&-I-XIR`10`OZX&1-?q8@cPhv z7=%jkej*J>I7|rx(nv3zxJJ$KIWT7D(}0wFE)7Wghyh7k4FeKRedX1{fOO~p6A|>W ztZR7bt6$5B-}x z-RDLB)cO{qf0p^?qkoqBF5#T&`yu*giElck?R^&erbb}boz!2s0Nc6JZv6c*KAnPKvXGbI<1iNj=bp%|S$f zF{==sj&65|k;7mtQ-AYj)SOaiOhQbQbRO2Tn;q>OzLq6%ux!WB0e=O2u%71;8Ne}Z%O_E}&F znFQA>wNp~RW&;Agz}37NZYXzu{XX1KaR2)#`w*j))6cOg8y~~enPCIlktedh%bdOvCHtjILVRYu^2Ga5=D041hy60OG1Gy-h`VjbN4E-K#K+bh zv3yMf^KFRb;~au~%_<)sTXSRiX!h$@-%YW6Z7LrZA=Jmm)~|p0royvpV7`^HeA`vN zZk3OZt);Pi*1&uVnLlgR}!u;vI_!25{6WwU_g3Ly!hM()^ z;++@7u2Mhtl^<)=kMGEjtJM!mHo?F( z_yOj_o@5|JftbDmJVA!1MF8`d+PrQ9aSY5?KPapifraV^E!2qiB0rvd1V3E$PqyF- z`xpj35j&<3@8I}VVMHr~AGtz5e80LysgtvPu172K?H9Ulqnzl}1##qOtzSC=3?npsH|lu(6V<(pCwylj{BP$3@o>yMIHe>m_C{ZYi6H~`B2IQw3k zuSy2yD~#nURr$(QK0dbYXtBqQ&U|^vgUz`iQUucR1t!4_R{0Tsi^6Z_IzJxZ`-YqF zjXmjZ>_GRRd8wd8s_!r~ZzLcipsVJkDFT(_*YDW6mw>p1oE~#(iN~B?T2X&>IkKVa zXMzePNQSZ}>-1_N`~;GwMADr+0TkdyP-SpK2Oc$s$a=xxHi0=`1cNfp%#ek4=|->= zQzN=^JAP^T{vvvy;w+AOSEb%@2Ee;=^{z#|o3Gw+l;hn@^{z?Y>3$T*VT>1b>P1k! zSdSMgN@L7R5h=RfA1m+kD2A>D)HkvxI3ZO6!CbYXt{o;7SukGp=hZKHwD5hNQX8iqhxF=ZSfSGEInEAy9( z`ZpXOD=CB%i4;P>YQOK_Dr7^f5CYa!!!88m=iHPCZM>ep%-qSJDgym7Ww-=Fi7We* z=vO6v`iUy>ykVCp)T%)#LM;N;&G!zMT0l$hgI1M7YnF{xYxEwl)^IuzuIXfd-U}O& zInR1|?Qs3%fEA~<1o=x9R@**S#5!u&SP8KTQHl_YfHm))VH2yql@p2@GARnB6Ks@j z`TE}=6z5b`T9M4Ix$o{&4V*mu(rg**m}>?jb}Yzj5d$(Fr&G&$LEpBe3lla2oSOSg z^q)E|1u+*>cUUi2e~r4L9hhml+-19cZ^wH7qAjsfblvzCdqeYkqJ&Pk8Ap=KPn4^_p_sV)8s zo?p*1(p(86&6UI=&AE(D901ZoXJc8yS-3P^o3xqg`e-->r6R6k{nipFow&G{KsfZ= zS5X&~VYlJzv0lIr`1JMYre306M^oR$Sscb6Q+|7wmBij#|G+B_90Zz6#Q1g4*@zLv zE^z3fb5j|sw|-S2T$UnN$yn{)m5ga5q0%+E+E=kwT1ARx=|0~URI%oy=H2dP(@DH&1xM(hc zMFi_JRknARx-Ohkm?Hm^%JrxohO?Rt9{zGc7tjr!BI zhuS0PB=^`N>mL{olKS!ZTjV=AIiL2>vymd;V@`tsV+F&zei$$2(aa0l_ZZZnNz0%o@~-{Jgl#zLxZtH@@};&KULJxt|*33Q|vI?iz; zJgcj?-PMPVF4FN#w>hz#$kZZ@?onx6aawzr#^W~6$#cbNMXFrnHZLgj6u<0hk6;J% zp&gN`acw976nn;dF_IT~il23X!b!PE;VGaBl2tJoOPx7*vJ}pH(9;Vl?&PH_8$bNX}No~hD9*oP?i2s;@A|fMU1j|!ujN8a* z$p(=kE1V!TbLr;la_yEa75*Mv${qFQqe5LT{#tMUFddZHNoCNJ`j?9A?MPT9DbVJb zuHt{i+f2>KmHLTPh%VmMmEBe0X!E4LT!HXE_1y@LbO8OnrC;2}!Kq+xb|egIeqj_D z+M#Qkh2tCLD|8<3WIk`~e1vZvTc;b9V^`Lnk?uX3hDMzy2JvDCO=2U@=fOm9Fnb<< zbT@`)4ItgTo;oU~rxD%@^=$$f{@w;)V6&v*{4nuYzCC z99V(xoTT#fZCNZ<5B-8VN&Qp&O!pqeyQO28VqX1=RU-w#T`&n#oFLhj&fJlMb&R+g zwzgc$s~lUU6=Uq_m`-=^SUNhP5l0Z52}v-@5JLwk>R0 zN&F({CpSB|S%ya$2w-d9hFB`GV z3sr3Mk8>opxub7vbMS@4HZScT+q_6(oA(ZkZI0eUT-yh3li23qoSbao?G5A?Pcs|)BOmU)lFGVj(UHoL?!?~27TKM8sB>=zD{fs+F~))tFp-er}b z@(8#q_wqL$#9r7zJRtoz~T4H*+6(ZdT(2;nX~=Ay|!E zWzV>^N$ptpbaQI#K8+pGuTZK`E6ie z(JC9&=8x^}K|UohIb>=&!1^+83GhLD$-|1@aPM;PUQEqKH3$wX#HD?tH zZ`fagC=nWcA^tO*c{0m*Ea4YY6GiSK{@`vfQDH6u9^V^F!z6qYKkDzrQ!h( z_|(5&$G)nIiPoeA9DgNv@S2v27FZ{k(OS6(Eikj(^kh#Q=rm{KVV6j{757WvDuFq&I1nqeTU-mc|Ocf^k4)UUC4{fL>n;2-u#1e0&A!{!rsy0u4jIe*6D z(AtM|E~`U;e`IBF+~eX|qXmt27CEvrI7?fXzm6%)@WEs>wZv+a!@r2yYgSZI)P6aY0cFB9}QMItqmR-_WH zNJ>#bH(=UCymnl&F%biA0=_`niFx=g)LV{2M*e3&_l}80sq?l?EJ;OCvyf(o_4t&p zqr1{my@fd3ih+THQ>JHwUi_S%`T{294Uwb#Yr-kM!#bSdRGePjfK<(T@xO2&X{6IS zHPx4?r>|*&)D}gMQ1D~*1}s6=oRdS)Jf>qMhb+xm-KZ|I3{Fk;YaqI_EADyQ?nT`B z5dH8TaGnQK&Z1t5d}Tap>;X^$#Y#tHIW2e>@b{kIm@$`AnXH-Dj>VeE(;7G6mCNXG z8Gnsb^x-Ay9qgV`smfzmkXuN^aTf%=mZ;hXX?%P6oR! zc0g=^pmJpFj+H^mfE&@txDctqeV!(eN1Of{$>US7sxC z+VZ0$gf=@9d}mcii4s}V8drOd93Y0s(@QPG6&ih#+jtv6N3E>MFb}692D-1;mAcDi zL|w(Z!3&C0gS7^jCa9@v{K>zQQ~vS_0?WWKP@fC1XxncpJ^ai)Zn(}Qu7@;7p0 zw4f$37$-s_9^;*a&yn5(MLQlhZ|#HybG@tZwRkzsu0cJHoU6CY!|_1xM0E)8Q5;@d z`|+Il=p96qs?`4vb#ERYWp(|JCm{(z4Kt`{T&l5+ZLlt(RvU`7Gnl|LI?-4+tQ#&U zT9t?y4JtZeGB8gbAB+_gtxGB{)HSGJKqCoig4kMIs?^ptxU|nSe%h!NgWLSx?{n`n zTP6th_50(?OY_WgpSzrU?z!ild+s^s!tQ3^5cqu*z+LND_-r+nUI&#So<%M46u*y+ z%+?H{9~@xM-n`+qHw6qaH446Xj5f77%m41H>*;^TkUVgUOjGe-Sp{uFzXsTM4t*cq zOLOMTo)bLxJmYX|@8s9aOW{IuoOlbC_D(C=V*vZnEln3Rez&#g9kLYQ^ke6X{e^@X zZv)c1R|sxkipx)Megl5;cEB8T?mgzWd8h?0=r@2bUtMOHSC^-o5slW;f!x@n>b~i8 zjMs=TPYX|;3IEb-5k~8n@U;bV;7oY!sM+u@y%t7T6T{aQ1>s+MZSlFG1H;#jJ`drv zuND8&YsXv)|I%xBx-z6X-%syUSQ(@Hc98=y!}nS@Jyu7%J*%EoerX#Te}5;pCv< zSuwG3G=v0iqQ0D~8smu}CPKfFScjY_)SZ~K8qnA0kX7oj#G)>6jmfo6)5QGOgK-A3Rew(tZXuI|JQ_y0c3g zRBMUN402X(m{p?V3o8CgJvtR2^#Kz+s%Yo7%`m<}&?E#)!s|7+-3b2eE5py{Z-5gR z^e7F6Szz={p@tKIPo|XPfgSf0FMgMaq=^lGHTMPuGyVo139ZV<&UvS9mQZN@$Sbll zV>AWPV4tsq01zOQL2QDe60}I|4t}oAYEf#}Es9kXT2u=`V@3VIjsE89ia9ecgtaB* zCQ%xq>M&${)YV%33>U5&`0&(pQ=8J@UoCBmNbT%>6CzO21AcE5VmVR#G~<`C)+;GE zD?OWS%)S^#tSfjJo7KkmRU7+^*v6_w!`lcQV65Fs*H5h7dLi(*RedDt{Ud3_@e+oodYy~=nzV=m{3x*iqM!`B3XDoit(|Jc!T+AP<40xSh zAYP}Z^YjH^|9$3Wu)-tbAK@Kkc2d^yMrXwZ=he@?`0~cU;j94GY;b{{gCcbL{EjZW z3}uZ@k48fL;bawGVti0V6qktzSF ziuI@MdP{EOiNA2{47jw{2}t;L>}lhyDR!FCkC zI?tQiI1{+w=+Y}UZm7?Nunxzs9ca7r;PZ;kUe@n(c@07 zxC6peBU4OhDz2P+8As-_^JZTfzf67GSy{&?dl!`6v7f=&mtTb5iQ}s{LdU17BIw-H zKwf7BY!N*QEnm#}m#XffGRUUpQWxM9bO8kmLs^ z;wAnna-dc;Iz?)|;9OFd#^_8E*Fn0{j`P@gyzpN*&R+_gF;Woj)dJ3OGv~rGP^RY~ zAnvR{!~=e4!Uq@5x9}mp6xARf2!1_YLGTwhPK$S`P6C`KrEnGwE>fQ{^%wK=?1sjR zSvMTduXO7cp~v4_iG|D2DUgZ;LdYp{Q)``djk`m-a4rUqB@GlJ2kKzYEm?$K&FCRHcFrz~Mch!{Q|F=3fy7fq2SVRmj8Syv^S z940rpQjCCsCIRqPXTzz)KeZIjL3IlM?0NE#s~;~xm_#JglE|y0?$%Da>8?X4tPQ{Q-qYqFhM+ zfaygFy1z9^L8o4sIXOqBAo7DtQv3kSM$aBru7g6Ok)jRrGp5cYw52yt^XFu?H8L;O zjG*TiNk(u$Ad3-<#11q1&80D|-;bKfexIEM%eUw^D^Kh9Yt0$`_M{Nz6{z@1=4w0Ec8>%eSiXtz0IVfOSPl8ZbM;d~$o@GUGb zrQrqz6PUZK13Wh-rs@@i6rnR|+`KU+h$A=e(gkzvf-||f-UWYIpJaY#PRnF|gfTQl zwxZzsIQgkFaU}GSb02}hR&=eq1vGGR#9W#G)3c|9IeFj_fYmXZ{lWP;;l~Q7`jZT4 z{^UY-KvuvDQXTk)6%d>1_)oc&&b9qSytqWVim~~_K|mcuKr*!tweka9?$kwqP0u|& zhG-^atZ=+McA1@;jaA&lDX2tImRM&WO3(YjY$?RNjpR1Nk8%rALP5&b`uRvPY8 z6+|69gb3Tgy!gey7Y#9RmJQb7@tzE3WG|Lg$ur>><(>(MFFK)saMc4Y$KnEP!6|4O zBHyLRU;~1|pthiOeR)lOf24a1C*a9`)AuDcGg9)j|9*fjPK6uY@#y9SOx#S1fkm~f zv9KcWtXmy!mI@spsC4nL56Y6vc7?hoXdW6gzc(jR}EO(5SGbRhek! zJSRuS65jHSvS;diP$xpwHyEd`8J`0T*vj{#@csGWZNr@q=O z4zw2H-Ge*tNw&WH!8*^1{Lnve_Bz<>59D{`FYp^J-JugPkA293zHOwwKCsYNg_~Nc z0+tW691QNIg28}ig;5!T=?P5~aSmWr-6~3StaeZQK|Htr#Wnpw-qP zkG<-wGeD5fdxPdu5zYI;{J?*-8ysI}-pqHHA%>v-XPEu<1G~^DagRE)RSG0F1Wc(K zD(=DOxz4cgz(-;oR-Iul@?`#k+c)7OCLioLddi&B`GTuzdz;xvVas1a<3KoLLNNAx zq56!o;y(e)Y*WAW87NK8ATKIgkY0hcFiC+!PO&afc}7ly70;?>ZgD{RXTm}+bV7LU zi8$G;8w!mBIMbbff(;5d{(3z9RZ?*&6!SRJGpd~9AQ160K2^&n53a?oCU|F`75^1J z3aB(iP)Qd680`_80ksdc;~dKJsRqDLU}x}eX11oPikVdHP;<^IhuyNPEn&o>AXy+# z?fld2Jr4wAj$&hsa|q{P;yLnlqH%w~eSAp>{Ghb#d7i1@j0!E3pN$jo*?&|=Du{A9 zoNt9!w{wKZHbaw8XNhwcw;y0ZK?@3&p+w`pgMoxm5*m-HyVkL4)GL-pd+K^QkL}Vi zcRZ7~W`ES>*t-uTJo>)%bcRA}b?4`(oqZPq9&W>3;shUj)6Fm(T7v2PR)&j*G(K-~ zB=Kf=oo3>Lhcqz6kxwvIg6Fp^0Qce>Th7UL$Yb5=Fh~KfbEM9m8&Juvnqc-arzVv> zV}uxgHG71v>d6|RKl~v%LK%f~4ezAv!fmO-%037pZ<^^nQD#^;97rrO088jV(8Z!^ z{K`kTY%jxh?{c(r(ao)Zvaj4|PUJDuzZ4Sl1&5doSo&V5!f{mmvHR8N@I}vDu}Mm< z8o2XD3hhD?f+suNfb@8>#5VxgmIN@I1z>O6b^Z;B!h7}k^nvDS0joLu3kDKEV1ZhXj z%JDC3oq;PXVM_f5Ug8fRH){=DFJ;{Na8~%avuPDgTX#mJhmzF27KVk(+$Md5h@L2J zL_RO{M0)tk9{?L9JzLXsFCJ2!o=B7sj=>E@@io3psLXyRaDQ<2n+%Mph+jqy9k(n zVipZAekiqm1aY2JBT8cbIq}$U-<9o-?sPFajBUVFZ)P?u5~^aD@$SBcX1pyL%8#7U z5b_5$>I^#}!zZhm0hak$_34Xc)i4~MklpB_!p+?svpw_wx3319TfRd2g!1>i`_8P8aUsD;$+C( z6GK|FXOM&zR-y{5s%wAWow`ToV|cN$JnZs(ALD|GlHP(*9k}XcHcG^zm&;$Cp2eb< z%HLn%FL3!_Cvh3Q1aGtu{LK{H63dWX@b{D2EFEKi$q?!e{%TzVE+wmN4M6Duvv{-4 z0LQ|QFOGoyv6Wjt^CX4^?CT29(1T+zVsBamRUa?@%r{ zdj(E_OF&VN&v~lj?}<1MDA~o{g3-B3W%cf*r!#ujVQKfi$V`jL~yLqp4DXb@Y-eZ#Q42?VdO}`oByDY ziuU6Pt;Q~%h3mmKSC94L)w8U}GoRtR;!oj^alXPgIB2XK?`HP^_z$JvEjV3u5Hh1)%|pb#jPB0cQNzH>j2iy_bJQ>kHH5n;r(kq$)72qfOg|E|M(8cftBKv) zo*5vxZrH9nu_;`FqMUZV)`kX}?BHgSZWyhu4_Y%fLK50UdmrcSeFV?%6VE|~=b(8_ z1O9IcX5cwZgN_4zg>hf(31a*kVFJRtKyPu5k{U_Q@`CNaRL@fxnDQJAj_TjBDz4A0 z;`cwpG=PIEKyk+B?TJYsyeX}FlkyvjoX-<`Kz?d|flM+@{l<$E)ByAfYr-_o=1nB8 zAbL9h8y9W`(p8LUF7s+^QnytYlS&|$DPWxIq;>42GMe6IeR^i&<|eCjU}eUvu35JX z_r#E&3VG*dsSwGwzcpTvBK-L-sq8M|VB!`8o)H#(SCaFsdHCN+}VoYDcw3Y>Ab6|!=!hc8pY z88cayO-D&8weXdw+vNI5P$fBV+P;F{rqrGb@;|jD;8ytlvi?qe0{0y=*!B$901~b^ zSn6P~XyL@$K4m?Ya>w;3=q)G)Fbg`!I%+?2!ao&2`o%tzX8pf^LQRiaCo#Tqts0;i zS$mKfSn*RO?no=K8+Tu0Z$t?npS>Sy=wR|60frJ?lnaTkOs1lB)avK?hPYHV%U$9eJZEri(C;T_FHf{o2PA8C7 zodJokUSG^E&g?a<$3Sw_puFuoae7u^fdt-!{qQ|0!x#<9mXh&r;U$U0X)w-5JUCC~ zXj~Qtm^*1cfPdkDS*#8#xV-=Fr`!)r1I>y25&+4;*0;`@jX{ws9)spT>#U0)Af5o( z>a=oa)oyB?=RuDpIn;{p)R~tz;QuD{WmCXh6h>14a{(o*)RKs%wMZxTmvAf)Z;x3p z2;cim55hF0BzwNj`Ni8=gCJ=8E;1$2HX-UIX;`OVG?s8QFeoK>#0!N2a*X(@ExNI@ z1!2h%|KQKkSOAWC#+uaJ!(|?mkTI==wBZ`K*|2R2T=amM2*;`T1Hg5%2X8yxscP(! z75ZCIJx=~w{(xSfrU0mCx@VkShDtyK+$P6V2aaJkfhLz?0fZoH%cmOtrywCDn_A}_ zsNhdgY^`;bqSu>{5lsa%o7x3U)tD;8gc@WN`F*)e~hfrJ(r|yum$T21pN@a!V*M0X87BBDEfHJ9O1UT%2UUv9sek?Oga{ z*%DO(nUE(U zGv;~Ek;!>ZC}p1OzTMxCx-iG#z&1NI&tLI;oH*7lotGjQu}zaCG_H7q@Hm9S>9@gs@Y zbR5Ei)H(4(ls`hSJA9h_@nbzrc1NevsOsxKW$~0+>vA{r={!kvHEH5tfBnj(ww_i=0gH z-CWr3A%WWSK#g#CUFS>@*hi<>lfU%@nRd}95K|!Dh}>wA4c-k%&GlgIoZjjCX1QcB z&M2QX)@A+v$X7Vzk^%MD(~uS6cWR^mSL-?9QyeM(@l;;WdOztrU=~&&<;CS6z#^`u zq6EMHjIW$2+5`@5Lj^RY91qN+^O9C)Bvqc}e}3rSFdI+6b{&WLYMuqmT`HtDOsy}D zk~=VcdR{RoY2}Zwr#*r2+eK$Sv;v?!sz9k_%1;H9T0(NeDM?5)3L)4fLAeCYO~HDq zz_>CEjKKK_JR~z7cTl5?wa`PA&dCJCxp$(7elrYH-Jj{jReh-iAHfWT{YU2Y=OI8n z`Yv`DRNERqJjUy{>%N@S<5^S>eAk-)#?HC}rYT9B?n0a%(EffBr$0;e1Rcn*%glw- z2M*aLP9K~+45x2YZEtV%JomIvRSll@_Jf+IaZ)G7AO6&`yg2QSTI>3qk7s?HXn_nx z3i6wMF}aAk)T%RstuE{-3xlMB^?{hX5Kc3sEt2GoZyLdn)BtB%!FRMy03m_k{` z`~zsG7DD1PH@=7RP}e$*2V#;s7=xkIvME$P>iKX;BKHtI z4u)y3Wy6N){DZ*(PS(ZJmg4yLkruRPb_UEdD~9~NH4qB0tb%k3{opC&_Wl?*a4+7= zI_vs_b{AO(xC;GXpFp*BCSu7HeY%YNY#N!!{1ZFC0*V8ODn(X?XE`3ocfA+CiC5Ot zO_-he|9uN_CUF+X8#RS$!RgoIb)#lqU@K~Mga?_ATxH*CH5Hwc4&nX2!f}!Ro4AU) zYF!jEzq~I^rbvu`vV&??EGzs6FD)#dEeFwL6uot}Joa%SzOTFy!^eW!sL?Hs|C_%3 zIaEs3$nr@9c4Q6$Dc{`d|< zl&os!%&IQSKmRP#(N=ky}KH5EzIgNV2c_-d@@y5;e}3wT&}Z^YlA_1JnmQd>V`($spyPcUoSq1KP| zLibSDPIt(^)_jGyt!S>Y4m{};L|r#JQHA|1 z-CK?sl&pu>J&1*i&7&3;FO@C+cF0L>{c0~ zXeAabteShm=%{nX8E;{VA`**^W&hcxhO#RW5_ds6zG93{zFUpaQx9Q`AXT(nEfLy;zlCgE4AB3@b8@5DVrIe!e)175t1uY>5BzF!(p|lU4dX zU1x-K>cHyBcB_OgOA~jhKAwX-z}Msj^+>;hfeIwFO>-~b72VVD?ZNj3^&-l##0++= z(_rBiUYdcRcD`Aqck2eeUJf8IYOh?XqoNMeTa%*HV7{SAdL&yoJ;ra1oQ*>d%7SWn zvRE6YM*n_Jwe1=G4}POCQ%k@{82uid=K$v6=&#W8Yy`-KC?E@fAig1|L7TyFPErZ# zMjv?)jc%J%E>@lWW>OitLv?mK>l}ep-q3k|j66wFY4DIZntMnlj=6bI9TMp?2OsCU zFLmY+Kp?D_8nL$OKv>->5Y{@zvpNKDHy}Adpf|p+O>C9gj@xg-+3SeQtlsG4tzj zp5fqBygxAMYlMv2)L134EP^mHrPYD8%cx9{Qz0`DP6uT|e?s-;s=?gV11XUvbifT( z2mF*CFQ6vIKXxA}RdS#sZVu2^>A^b3jmRP6pqo&~KbbU%69mU4F{y15Vsh*yap|~Z zU(tksLH*8qeS4614ZK6L$zel?vB$XmP)>OI5$_Z#pAHs@^feiYS3>_`KcyHf{TM8? zoHn%__%RqMT#z@GEGb`1{EFh&;%&tEd$1H_0MCXWW(588w6u{{P$7r91URU?P0i=n zGGYlTU+{g2M247bR_RXq>m}-IRq88cp$~6WWrO(2c|O%()TD;gTJ}aS`X;8)&FyGc z;6@ZtlP~Bh*NFg*iHLhyL_}oFS}$N(8%`F+!MzlAcGbnmK3!?eh)hx>%zo8t*gEdb z)vq7vufJAbrCs%>0(3dQDzHed^W>`w)?3Jv3D(tK=u^&ou$zZ@ z^NswCiT+gB0ArHBWL`dfQcB{0N@UV(0$&ePWE^XO(^&P`=|HR;7IEkE#RL%iZ4h8c z#GQH#MlQYx=7|83JPBTxESDI+p9{D?*R9l>u*kpj;f048aoYE2EZbK#0Dn9NFO*a1 zY+%V3#{fvjsS_;MI!VJytND1hhWD+~SAxx*qBoC2A*ovJPB~?{0WD&xDm+^k7xUeH?eR0rU6R;TeXF=zLJZ zc~09Bw2pZA9?+91wm1O`VMS0wz(PC`))d*?Z%m5i0rEx!0uGn33q0!OJ%#~OW&WgX z;4gJ3xSVN-iP`cHS_?qxU}n#n{&M9siIg&=1SYpg)mPt8XLYhZgiZ6b+=;Sv=Ce`< zPFy?KVxUi|KxG0?7|%6@_>X3yp#MDPT;z`WABX2{Swn*{6Lf67^nzgzD0O2i<-50RLLBANV)?9j&bmzU@X~qc=1P%AJw4iB*h#j~XHtOJ5;8cgAuLB6t zeJmIk1iCZ2x$wxEKP#{Cw4mi{7&t1Kd6|qz?cl%!#0@XYYefA1Ddh-*Z68}LrI+q1 z`$bH~CVa)J;6sN?zrKm1!wwOb)9+O5H-|q6SQBpu;1cU+!55`qV*G)+NVY&&g*?BN zJY=ki@n8K$bM`D#8RV0y(IZyffMS>EsyB>Wq;zUp)%T|I<&JV{L{@LaRsfnr>~1&7 zrl7P)H!>52xxhz`E)YYPA?GkJ5mh%7S?z!Y7KBo}!5$_6S6t%9FxT*f313ClxQeLrlG|X z7JY>EMa)S9E;zWy3EO~=96u|;G308|J$$wq4ANsn`Uj2tJ|mL&519A_YzRy11w^IZ z!Ws&Sec*OQR$Ng}Jx%=ZDjC}DEVce#=)q-{xUk~0jfQ=?mp57LizI}e;q{h%yu*S! z1|0K%IQ}7bSjhDia*d=tD{;V!M*da|39qnlW}NhO!bG^dS3*yt>+rfmlPYwfa{p62 z1ZYRl#mIa8vXXByekcsz(=raz6IVSHMc&;X+diM?wimIAsc2>Rf?@t6nGDwk9O6cQ zgQTFfmJ38{(J#OP*OYUuc*(i^m4#|0ds7PafGd{=%}!>-@+0N@WWB;?t}R%pZ(?d= z5U0rGZ1~O9$1nvhm7`U1{2*XB6b7ht11VJ$Pv^)5q&3ncem zxDZ6b!%Kgiw$X5OP70Qhp6Z<5eLuBGxM@nyn{P`>k-`ulIH--dQo8ZLi~peY%9q(~ zh%$!T%x2k1K++NuI0}sj5pL2aQuY@xWU3oXh&M7AG5k8QJ;UawpJr`M-f?pZ>nu1f zSf$Hb)l@10Ab7o9UeyNr(_6`Js7OVt@fiRklZ*I74s|PU+)uZYR{3$d@`qWIReDrf ziw1G@8(6JWDY=cfeqdero>si6La)G~EON>HDLuW!g#z%BcS zLy?CDY)9*v>wfyz1o`F2V)AR!k(^?3 z0HaI@w?j7j`x8opE!^yM; zTuR*of@^#bM*TQkV1(tq#{(Q1(H;nXkp#%Yu&yF`n6Wg1g&+Yw_P50vpLpGFS^Z=# zWtp=2J{;KppJnwypes#QpTXBY@c~K7>MO$>7$vSZDRKSFTS)kJJ#r5dVYRpp;FY+} zUQk?T7>REb*O@s}Tt`Z#xQ+x7*Y84o8R9x~LR`m#|0s-x@yrm{@y!+2@zWL8nVJ;W zS1;grZojyW!W7phQCz?HrA=rtQ(TwT72^7dAGYJfYberR%sW?x%j?`#XnDQK->FK8 zyk3Ta{>VRz{gFf=Fq)FriT(IIC9gM8Bubap*(c~fqPjERPF{ahibEh5vOok9w3w2W zLFxa!S>*McpDC~JUI%%7^nTkXud_c{^14dero1ke*H!LG3}f73CBpg()pXWvTnKSJ zh#2jnr;5lpo#1m`e`=4s&UU;#SH>ifUsrRtlotw!Wd~SAweu))DQUfviwel4kMie2 z*;ZMl(H6yQKWJN)*V%#Z&v}_CvUWK$^EN3)i!aQ_i2PD#U4yIxmALuIC$jQ12vDU* z>u-1C8=9RiAUTf|yR!aKIOW?nXw_7Kmz9o_%;1T1RmM+&Dp1Xv@_sg6=4XZHc#9R2+@`F_1udI{y7 zRXSaN>BJWT{0%M3SV+t5s^&6XzDd=rwlSg${Cd9X)7j}YZ9Vb@0REPK0 zqU#n?s>4r6bxU8!E!D9NNOdd^sSXeRbEP`GCZ#&&&{7?Kx>6l;q@=oGc|@v1YPwX1 z*Kd;QkVT|AJTs&^ynDV;szWAc%~$QYF2pk+bA{)Yy#^5hYDpBDt-P2P94rh3NYWfF)0w@q=8Y&HnCjF zG)3;0;-!c7igI#odtSTo3{IN)&xf%$pe3bk$O^n;eA@P$AFsw+Jl|g!gUz-)<@8%Z>78WG% zzZqrp(R1IEp&NAA6=fTOMzOxQ)d0hQ(=u5VG*-kg?L$&GD>i?)5uZF0RJg^UiAt55 z3a;2Y7Bs5Vk^q-SHerFAa?T;_jyW0{$$nf#QzF_(>TZ?fw62xC413v23OZL_kGC?u zO`hhx`U>hJ@gf2awN!{)Un06lBvQD+ga2@bmLb=$yjDZvrz_VmH7VC@p2rb(<(lB+ zpL?Q>Tr1%(Vx54Q*~Ypl$@rBdvz*On#Urkk#A$Z0q8zsaBiV_**N&Puaa30)M;-1> zIBlBd9oS7YkOs{b_%Cck{(>cWKUkfVhzGo?gj<)Np`L-#lw%9*7(JB=-55+_pV9{R zk&q?U*FctdX1or@pS|LXDy1DI)UHz2aWWAxUKyr#ac)3PjyQNlj!g-4Eugc5$;9Ne z!G>wbFAoAfaBNDYJXuZ%j7KZ+?*m1%vhCQN%+*=hF89LKuHd3gNJP(r&An&M=RZee zh+;8{fVy!5bdQBspNQj=x<%bkH}2AEMHdY`VTkTpemD^qQbmFnP{ zp?KBtENU4IJT6^^Q<^57e(ZY(gJNhEl%ZIP%$=2oB?64Z3P>5ar`0z(`y#i@M}7D{ ze6XEUzhpN`cNV~8o6R)?yzAVB05NO8OW(hSm|(WVcpoz8p-*>CqsXI_S)P`4>;-jh zr=T$*EJlkwPnV%_W-B zlrOux)leY^a>c*{D|5?zTl#pjsSwBUW#FDjC=vAwb$13F?&z%}XJcf|uGXiu=%ni@ zD3M3K=}=Ir#ln=b^vC-SP?k zy6rvuddcky)do2gSaX}QaJaE0eK7?Rhf}kbJn9Mgfq;1tVa`uM=saiuI)IsikPJ?X z3hD8S{(a_~Vzx5EE`X9!9yu5yRg2hE;ykNMh!~#iU2{)0K*-s_rB`Ql@IR4M2Xl7M znGokfBP`mBYB8qZ%m;FGvnFaXOS(clO@gmXPSJa%baIN~07XwxQ4n*2QbGKkj9ZQ| z9XT(RhFINlObsy(*+e~zE0!2_Y?E`)XJ3kP_~pD^U) zVhV1Wuh5cA%f;~#*v*F(6ioX(SW|eS8>CyJanIub?2Ztye8es{n?D5l;mDKXBf6>pxaWGU?htPOb@-G>@!CwmIC!p zjRZ9@{s;}@2nD$H%>m;gf$?X65u$xM6pI9k3P6E z-R}9OVJ>MyMwo4wD`PBZ-qpZ|y>bSQ1^k`tKSTpYXg%-G?T~ZV5>-L#0m|iYcb-;- zKPUJMdx;Oip$-#kAOr_ao1Kd$73bC2kFx|Megypfk6}kUP_M_^&`@J_g!#c<;$TL& zQBW{Iuo3roeH|XJ(e3fpZ}g1&#h_>0vHgf1v=PySSh2@z56WXnUMU-$vJ?$3M>wfY zoDqAG1mBhQ0c)Weu&RK)wjV78?0Yx?(O?)2`a9VJ>fTy6K^x~8_w*)wtTmr@@TfB% z9AsAW?K<=EA^ZxMYiV#1FrO~r!(LcTOq$W~0jQ~0-tq<}XQg{q$%lY_n`*Z-*3#|b zJsaUbtTbRh?L`CrPALH~&|K1lCY*n~)ec?YgKT_aw?DRU5}F5)UOWI=xjdd`0H!+o z>4|tC3m-s!72kRn@&RSl=+^Kos3qwVwooCT!wld1J@FQ_qqEBKmOOxAuzgGVh^|ft z9C#x*c&o=Fs7MA6gNb_3cYlk@ElovTdHeIrN{-swgx#010)G@Z!q^zFMkW z#(?LpsRtyGBo2I1t6YA9bJU<&4uPT?UktO;hevNXK!5`{#6oe;sy4oYu%|`3f#BV5 zHu7=6uRySbtP}5QOuG2N*bqS|GfK)7HsjXz>_Gv>1;duYuq7CdKS*KF%4+!!^OG$n z-t7$=1dqE32DOH6spU`d-bUcDL0t|EfYIf97M+Fe0iB$48l8qk);R_zcgCa*o|Xqu zu%#P8Ywp2mXlv02UL?Ot)g^!>z=?Ov# z0A-MCotDxf)ObHrVWKiBRMmk)A)5$|H49l-HW^zC)NgaT;zzQx@h^c7kmoE;0@YKu zi%2D>(o~HNF4!COA7{SNj^Otf#r>n4 z%Fbe#8tDm|WFeTMfTT^$XTqNX99~1V@P7?;wSsz+%1hu=dArKdXY_@@CsS4Hy?Ocm z$d?77gVBzm%Cb2(SL*IC3^&=3+*pIW9KE1<5%d`=)AJ`s@RW9U_&##(dJV&8>f!5B z!?%)vx~-r-HGC@xXew36&N+MHSBXehxD5Lb4MgJsAQ2{{&^rsT!FPKG9?tEQDU#jE zYN+Hpf{OHpG}ghf$>Oon+{E<&sU+Q?*;S_M_OkAC!BA0m16^V4mBd&I+^$ZQ$|l@Y zfA8ot+7C?XMXX_SluQ?rNn8YZyQ^P8#cJJ>Xr)rs$7Wn6lySFAy~JYt7y~^Y?-4Ka5>GExYoEJ$~OG(Mef& ztG}~~K!@`Gjt`O|o_?B5!z-Q+e+ZX|l^L=MSLR_{+IjeoUnSya;#yKHVuwESSe|o5 zF?^@(((m&3f&9JgwVN|t8FO&Wb)NsAJum(W8pBFi$)4J!zQa25oPAJJd{stzCDWfT zLi*hVPD_qU^{C#^5;!=S5dsU6Vk7b#LdypadE-xAD~ zWLk(JL>8u7=nV@eGVB;Rk@F!zRD1|q1~2k`>&9fQ!Kz#@jV+mu2ZB|y^B4O2!jxF^ z5R7n%5Q=G&LLezs;qmQTY(QzXI2L^CO4LIBH{ju0SK%@^F3Zjj)S!n||A+-(zDd0) z)TFP?-?B};Xu-WH*J_n&kmK*XzmveAA=0#fs*ubzm+QMmP(XE~P1s|lR<0FwcAWN&j7Uh{gJC-ISC zt$R2VGL)0BxI>Yc6p2X*T_9amIl`F^d-%%fSS)Y=!-XUKd$8ox!a@I|N&Z^JL2}=qT+z zmz2XZ5|v&f4j2V z)oj3;eFz(AyOsMmho@ul9)J^GQ!YRnqN%iF{SaOqZxJl$k96~14&od*#(g`ecc;98 zBiy$wFXHXT?pp-qbUoAA${Fve6R_U!3cTu1M!EC&fz(BWhI$t~A?cB$)d5%uM8jn> z)U+Cf9z*L#FMz>BjDnx6xvpxI=?+7XvAy2#ldLDw=>yL$pcOe(mv)SA&f^-U-tbd8 z4+^E_VLgkI^{iCzjAQ|j)evM5)yT1E#3hDoA`=jJRs#kE=qQ`bk0{CBcR0h}hrkIo_)=DNWP`ixPuuUM<$@)N;$o_6J67|lERzM1Xq`Hrtorpiga%kZzWCz@E*C* z$9as36TJ6^2T&J&hTHK-PAlS)3C{1ICCZrZL*^SmlqR_phdJ4(zHGvhS?Sy@xykc! zj;5Nul4i-otswg+Y&L_#3sA&z3eX~l_UKFZ3GFe z$Fu?o?G30ywMKKV;4^8|a1!52QM0476WLHb8s^16^rwshcm(m95%xR0n!E-+i~jTCZD@BwQvq zAFNhnj(JcGI(LZ|3RpE~nCM(XMG@c0xZRb!#QC!%gXnQMt%m96JjctR@=RDst^()F zrV<=-Faw#Y8`7BU^sZ+RJq^HU${)-SGP~QYwS9;`?8CL0~ zQke_|%N)e@LDxo# z>m$B@ZcF8;;KkF_lsb?V2$>nx&XVtIyJOq%IrE4q^<}!VR$ho(p5w3o0rF*#n9k^P zrXl0VLvI_?oyL)KU~XN8s&)C{jLzWfleq3&N8vWEz&Zam%%3c9)OW|gr?l#Pt|yT; z8fU1Dc*i_bjX#Z2QDD$fGQk2Qcpr^`?NA%4mtqv6mnSLi= zLy&RVX$l>~e8m4BF=-t2XaF`%rxg0BdzFg+3rz*dvYVE_QY*t}d2TQ(4KV0dX zDaX=g)hr>5JaGJ{^mDATS)B@-RfIL?<_0#ahV`AX(xWgnddg;X9&J|nHhHS|>V`VF zhvTI#y2aD-I0`WorP!<@kv6M%@SkCMGHg~^UfZnVr)#syRIyowby?{lCkbDAou2c9 z!O2H@q9HL^9jnX|n^|>@XIb}^->EUz!5OpXU3g^`j%z)6TuJ!d{6M0cw={`IeE$KS zTh@g)6buwRF)BkH0c$n8^s>ESS~_DuTe4^Ig5a`~7Nh-=rEh$d47Ci$t zwWb`|U?lL?&1rU-EUD}=@r#Ztc<`ShIPKnxG-t)joIdFXC(R$0jYY*cVRZ5D8!0EF`w3{!f;?I?hcS3(Gw4AjW} z9@l*1iL(yc8X0!oa-4Ou4u2;*-~^v)hv~}kU~6mm4rE`_CdfwDnoz>i(j>+EGKzsA zI=iA|&@TEUfJnHs^!eP`qXaF`;efhog#vu)ab8>SCZfi&8v7Q5eX^b*q=>n)oVv$- zt`_Wskp%3t@!_JyynZ^4U5WM8_@CA{8o|IU`{Vrms%*?6R&h1q9%mcu@HP+|osJB+ z{SAL(OB(PO0f=X*GDL+M)I0FY*ZSmoJc8E4l!^k8uW+G-jCrmVR>@g!xDZQV`2{7Jkz72|pXH$P4&|@7Lk% zIXOH*Gl3C85b`P#f-Mv$^oa{UWaw75Q-NqNA?d5mbNpXg(N1U-QI-QykYyOAeFf5c zrw$ed&C7>c1&<8GjGsg!e{RKz4CetLn$arM8e2&4dl$9?kHaT|Ex3@0mpKuT+c^fU zwHDRZb0Xj!6X9Ijod|5i(-M~AX%hk2NZw;m5))y=)Z|2fNsmZGKjh~(B5x)J4sfS~ zZL^=warlE+Jo;@999Yp=h}-caiSowtTiB((Cv?p3Ge}V)KeK4{AWHiuKne zv-%+D*66JFA#3F5VuV>1c`mt`Kj8`7*$Ju1=k8h5mNl1Xy5GP5K{aVEKP3-l`*w<^ z?*mLNn&#elM<$KdcS-#lOS(w3c8tu?iQrFC$+R9X5)Oho52f#B61oS?!D&~!hg;}c zInTB-%2APqoqKZ+OE?E1vxX>pdoKzqX&VeLnTd+uq0x=|Muv(#(XlHCWHQhlWWxA$ z?0z*~g%;>Y)GD+=_f5UWaGluejmW&gJRWySDAj)FiFxQ6L3sGf zZIu#z4LW0TtHq8Z#wjKxTNpkgpv9()g~?CdJ8TkxS`cm+-FJSriH9IWi@!-YE_UvL zCN%?wmMIWqcBs!Rst;!^qse&_Ii$4Am;)QLXACicbq_w&s&XJC(B!o1dUNPpfv&$_ znVd>l0(&QkAt|ueRspXVC8a@_0$zvJjsL>N8pxOG*QE6f3SU<~@Jr|hhTya~R3zEp zw74D{w!Kg7#)fT|7(%GPU6J)mF@!#lYq#+dMqD$>5h~paA}t>no3grv`UUf6S~UVK zg~s&O9+n^PMovTag!lnox-nD~zlmwO{eso3P1=uaEoj^oZgcse(+xS0V2OdV4C^!> zd~*$u!A7U^!*@vP2m}=BAD9wAynXAm27GNobi$1^`M(VrAR#e+jKG3BVa!@=b(8#QX}w`asxvU#ebL9?(0WTq@@PB4iA&9DWBS>QtfbU17eRY@0 zgt~6T{_jAMcC@kFx+%sMtlPqP;B3E~`x-pU@N6*5v*Fr^>vGJg)p&aG^g(%JKm@F> zF)y566T5x}TyoJ)J3cQ*kpB(@`R~RiiA50Le`*=FQ4wS@<9~>T23{XNv0<>lxedC<+&)4MIjQ0@tkyQ90mGQqzg~);&KYybF=g6!gZ|X~ zUjG5uBBZ4GYIAwYVDfN?3C^hv$-|*;tj*3;_Z7h8SV4TM%v!IWyFGDJSza% z2-PML=PZ7I#7qF#jtQprojno@+XT*(VqwvGyecmCdcb@|k0lnDJ5KC&ZBXcvf?PC1 zsax*vg@?NY z3-*$YAex|cFHaR}S|4h|BVaEYLKYR8(>YukTeMLc3jqp2FQC{PAE1nH#|K=-*Z@ki z7I25+Hy1GG4?aDjK3ylDcn>!|wcsUSKUcyWa9BWM3ijvPM02t-9ril&fmz5~8+$Cq zl6?yZHh@I^(h)Sx?7RT%a6BdaoK2)5^qfot+<*0l$N9#&fB@&#txOK!`U5>vsx`BvpSr@fm=%{!*7|r++Fd-8G9!uWt4P~JksT^i3!fbpWq`m zEp7i*w7&!VPN4wWDD<)bTxW-ig14k2`<6y6NM_<{+dDWJG&Ks&8~wTZfYblx52u5q z(&i@nuI8rQji0^Im+%*AfkVNV*Kh(rEpY6-q%soTN~a`eMvs&CTMQc{$mSPVEyOal zTNgG|@pPKhsI<+gJ$eZmAs5Phs2^T^0IC}mIs!}Rp!3gN0kLAZJP*s@$V_mKyhCy1 z-f%fy72DS$sJp3=^1?HdRglq2@y~AG2D3}m2{|rZQtLF}6XD!*MTRpcyg0kzmq3If zR!PA8JzO~16_9pUu-j#JFp=&=u0((Dd$ffrkegIV8{GFF)q{epJXfPh5DLfdwzUijc{crk21 zV?ld<2_EPoAL!!0j!SkCipAy9#X9pJLF+t-JC`)X9ZW*Qej;BL;={1l^s_m;^tn`7 zI`!Svfznd;UI!V1)|x?iJT!zyJkE-&(QqT&3TRRKJ}E73go$@si>~+?@bg{dT*E)W zPwbjp_!$Q!6!3GJ;0Lmlx9BK^sta*r+4(a^MiFb>7K+y01r$AqOp&?X(dq`giLb@~ zhJ@ClKOF_wj>6A1`~%oNoSO?a6G~N%T_4A8>cRNgqJEa+=f&zLAwFJy7LN=oTiF(@ zdjM9fPak4vt+T(xdT=9M<6x|j_sRY7Ahnm+mOlf8LtzNbOnj0kH2ntbGdjV|`7a!t zd! zV;%Bn>*ixZw2cKO*zNLI(jnzymdRLBoT(y=o@mpMZK>H!Zt5yfRU@r0MjPT$JBIC zBpkG_X_6Aq6eEHz3bEEPs4i$K$~F~cn?l)ocEsjqOpZG!2K3J7-~518SmC+^H(rq% zc9`mB4s#wr!K@8hj}oY$`DlzdHdk_D;SuIT&*OL1Bsv{A)S< zabA+#I|?Mc>rb&Zq6zJ<=Z)swQEbx*iTcW)HBhjU@@;$>ev4vFys=~9pL z_3iDzqsvQ)r*voC%!vnR6(8l;ICtGH6R!}zHOluTd8wJFQT}^?$19ba_r;3hk2Lwv z-EsUGZkmzrX(`6f)}lx?ILcvYc@6(yOzsG2pwEFk0v@sXb21U%{`lFaev)%MB0q-# zKL-oJ6l{6tlx++6{-xk>N27T`-pXH#V8!7GS}`?tW6TYoy|!gtv1jo*Y_5y^5C{Dw z8x6}F`fg3@{3>+Jb-(j_e%%etmuGQLO-YZZWjsY%1l5oMY^x-@F~vj~p2jmUPkY0c zQ+j|GiIB3Ti9tU!eG6&8{kQ})F6*4RWR{?RlhXik0`8eiMfm+up+m%< zX%~&MZQbZZ)hMeI*WN@yXipTqZf_~d8Z>zh%mzata`2VtK!~*e)|gj=Z>&tqg^nqd zP-LY4wX^Zob`+5jabEcJOYA6?gN?v5S1N-x)3%v_%G=nN(lF-mTaHSFjc3MnisrFg7- ze~sDjC1P?rvstsoq`EsxL{GZA3U)1Jlh%0?wmV%LQIpyk@t1S$6S6a6J}p7Y66!bi ztq9oHRTKhIY3pobo}Oy9B?GyP=ohb{H5eLT;3_GOM?=@IgprKm)b> z^>hB3%wI?F*F+Jrm9J_A6UtS>VQAjjjS1SDmE+?SAmJPIZZ27Kld!`(M@5Blt6NUW z+|SOn3*6?;+J#5$OLlB0yOMKOPmZ*S>Rdxz2mJT=b;oKHjt2fIWTR&Bg?%Ci(a+RY zV;GfT-oc8O0vN?tcNptJp|Bi#Pu8gn%Ff`#JJeUr2od*QaljOz5~)t%tFpif$2FsZ z=N;@YvERGnBqq4ERua?NQL{@?-A(GOHpSWm z$XN$SM4_+)C54TLJB8M9F@SATzIR?mZ*tVMWB67}e!+poIjS12;qGlF3_QXaOr7cO zy_sVUoort|H#N}iwh5Y{5xEZ9r6SB8i$x4wP zebD(a)KY3Hxmq!G)E|@lG0Be2a+C8CGHQTaGYfzbM;r8K`k4#MafJEo=UW$41D3+C zjw-zRP(&f;&N;8K0@2rG(~S7{-&dFo9**N3s9RO&w%xHc>0R(Iqt)9*|I&9iBG{_rBuF;XXv%Q)zA;oUhJ3ZHuxu2Jqwmg6zos|UKok{Ex8 z3pc2Mfa72^{f-s*=w@9kIh1~}WEI?+9cKyw(-%t`sbhH5R;jGlajhhQoKQQ2BUu=t zakB{|R2hl7A>2I&9*0sn(e`}-H8Fm{#4NORRSx8sBcK-pOac^J&%^lI@M>z{ad?Y^ z_3sddaOV)ICh6XhhtJN`G1?o>jyZtLIY%KH?uG$;2BhNZCa3T?+6rVD-_Uo`~} z&y=by=ZqtaV78l3g)`Nm7>{>pbN73)ClJ3mU)`OYE;;8f74tyE4~U2fy7qq7ek%UB z);9hI+=vQN(hX}4rVcKkd8tra`5%k--p~M!m4|5Tzf)wWB$Q<@M1z0CAIC(3seNN% zufG~MIKl)6MkTK4(0CZn5x5adheTY*0R*ckahwNL=Jd(uS>>-nR~iFkxv-xq3LO)E zZYlaVDs*J$3_QUDr{{(C9H^XYX;DPvTqEWA1nZNgdeFcZrq7c+AE#sb(;+oLNX7Ij>f#X@U)DBBSZo1_!+w0 z7hR4A)?b_-MSb`gFyFvVXX#Pc-mjW}VF|L>rM*AuPCH6!N3KM_zqh4gCO+r+`&ue^ z3j_asf`HjA74>+-uNzt_s7&LXJmq|vH&#^RNt?6%(~h2QS$7nVZc8@8w2%gQPyQMn z9pt`<)y1ZGeUK035b>v_;sR8ipD#(+tNS3 z3uVxW15=$y^z#CvCZq?f#T8*Z>#S!hV)A^dqD|88lyY@uf1Pz-MFW!jt+D&iLj1B_ z@#hW9{P>Spz`ju`kQSvT`zg1@lQLUeEa_~S)e$X(ApQma>{^dMKZGVNXxi)m%oCR4 z5#KyK={g)DK^Mi(guWXvvCj2`ZGM0dJzMePu^I>b5derKI7Gm(#!v{TIB#ONJD$2G zg^^0;MxBGm9kA}K7{as8da5E1>2=m46(x8g;u$gG#ZSXpEzTa+igLWg-vP}8>^mz~ zdv)XdL1+jfTJ@${O#rJ;RSap+37o(6#)?klkMB~Y3Vp~#4kLfm0jau{x2uw{6X+W& z`th9zST4`S6&=j4hOLu7tyni6z-tpakGJ*eZHC})=|+`hlS(W{VtlU&Nd(6)K9r3= zD?lWnAwmV3Btrl1uq04v2wkjUyHUf|qF_VM2^bMf$m)P_!bAisXl|?^IPv z@uvV2m=tah>2MkWlmZOj2~4%5+w2nXyfg(&qCfr!%7U6W@*1@G&_UTrtek_KUOC@c zIf((Jqbr}CQMvs?KzAubqwTNY%|p9g+5>cZ)S`mD0AlDVgKaw6mQoJ7mTPpoGOh2CK>m~is87lut?<4&xrgvndPiFdlOkaw0 zXh1mgfPyk09=P(#qpJiD!149F$UKpmfA!6oUuEVORw47z8JRl)5NhrqT!?6?np>`* zto<9xY-E|8GRpWAG}ZE0S*4&UW9DVd{Lb0wpf{-o8ZsJ~r5bqu9h8~PGQZ0xvn`-H zSmukBC=<#klM|>2Grz*jMn>js0d)e)+`%%tXOzifKdmUa97bd)qd$Y{jne?%9Q7vj zX-4~1Uzfj!Y9p++>#TJA%*v>ChI-TEFkQXrYB~D=fUefyn_YS$t38<2UYJpByMjSO zyHvgDYTMMCt~RFLbhTl=*`=S8T>b=Suec|p+W!#=%UJEvthN(7$P|75k4Olz+J8QY zYR}E6_J2ger<~|*tac|<8vw`Wst;XHLE{ASc@+ZKCXSumH$sZn)S;A0uCRcN6f&?~ zftXQd-P{gA0s=fApS?D*8|Qc~T*60$1y=$Gn?~{=uVm0a z`AH54?eVk!`Zz?B#TCvN01L@v5Kk{!p_ntoG!yG4mTJl>UMzH!m-fLEJyU{!VcUb> z190XNb_rn(eeBt!n_w2v#Sb_t^t2oYCT!jHU*@w`4&ebShr9|rCPaNl$eUNa)#L3G z&+KS9UN7|A5S@W{V5kbOm?I5%L(oxa2)pp&r*VRmDDXs&CeOF*cC_5vd_DvbghE(B ze>j9B2m@9qRbqHJ=Gu1>mbk%bJo}+vDKTzs%8sHahTVJRW@mkh(N`}nr(NFM{AuMM*#t`YubT~N0n&yXv0xy z=v+AqZ#*;L@a+ntzW4=zHWN4=46`FGj{$B{h})4tc4XV2pL=f>=ogDPwcViqVea;U zzT{(o{=4CL%|`pSp?&9$ENJhBP1p_~djIW&_IDp)#{$1q;ma$N|kgh*1>U8-b6 zmAr-UaL-%+#O`?}oZ-V;3)HoWo>e_^?dFHlKh^#RvAn$af05ww5lrUuFbA-uJF}vk zC)H3KW*|3U2Px?A4LM%_eoyrrAI4$*oxVL@+H>WS8(?|SS}D;rO;A?qX@ zSU?kiQzCFDr+5um@G)gDbHp2p5CRkts=)x$aT{v`vvO?tFryuq9XJZdiy7^d-;c=e zXYm^=2q#bE84_zjBb+<7I^(b|U?Jl8`g_CN-RC2g2Q%;=?p>E6s9!3!rOG9&jJy3X z2{~YfXW-#CW3%MZb}19>PLg~&+5l~QkitHKUq=m~+g(eHY#S_3vwyR=T^%B*$c#||8Vx8{fL}L2ByGhd z=dYh6?nUFl6;2c#=nSh@^+Et(MrzSNzY-JRH9v^nSIA?0Pc5!Y)a$O6Q0g$1%DHWJ zr{@ZU+(Rgv3q7mW(=}>5H6t^CIe)B0p7AbV5&a=S@h+GA-;s8Ni41{>?8gDLY>FV^ zx!1VUw{g$rx%Hf5jbkHotMfx86T2gGk1D$1-em3Q3R@}Q04lbqo}4Wr+XWbleL9H+ z`(ecypQ=!-@!5)zc;lE-#Tzf)OY_E`doaMd38@y5ZbYmJTE8_=`7@l+%kx8E2E`Nq z!c)YF;ZE9w6@>Pk_!ob89u&v>2d(yMz!gZm5H#i2z-XN$#r4bxm`lB=vCeES!y}+L zXuxW#Vjo(?VywLVJ7e&=G#(~514K3s?z1E(hgPW1IU(kHaclawI|wwE@BGny>1g` zuht9T(SWx!8u;n~8lF8$B0v-dP{D6l)?C>@I<%rf3{BUFp%_v;i^C7HJ*$(jq?%|G z`N-YM#rURIqr0~DV-XjU^Y{4~)(dtPqvK<(`Hvi}vPTewVXdIQaj&LpYe~9| zyN0i=!+7qN@!Z|XlKRk>3}$mFlm{Yd1y^_%^vy0389{YC(C6PGX&eCp?s?+JR{+`j z@-3^d+VWExHK;jy%<>HIR+obR=H>n$i7MYsb39nLPJak*SJN5%7?V* z2Y>*S$FiIP9PH6YsQ$}rAX-E#a(j>_RQ|CR%>q}D%rscS8;zM!Mq#Q99-G3t?28ws z>Sc!JJDCA)Q_{hrVunnM6OIr{k)WLu4xIm9hyVhI^9_iSQWT9CryHD_s2J5~#A;Nm zM#bt7Oa3JrWklAZyS7V*cH+(qBIMcKBB4TNoWu^ToNO^!g1yC+W|x{Ob(1tJ&2B;t zuyRz@9Uwi#rm9${iWRF^4`OEY2tEDa1fuGmQYg=XKpH} zs(+J*a0pteomTg0P)Cych|=MzCMhLCEfl0wlQWJN*l5{@BL+HvZi%$Nb!HEK6Q!qr z$W4Axi4Qr0lR9%jU*r{ZPt8b^lYA3t3{gak_H|T8jIMqJL>DKgL>H%}ny-zs(N8gG zH{dfuYXBi!^M??iRL)M(cF*4IO;M%)Q#$l}la-tZ?B&Rb$01H#9XeBarandG`4e~% zq$$svL}PGqJD%D%zXH@_DcWlz?P0WWEVwgrgciq*=4~TM28{KA-eg|DcqY*MVPR#g zZ63ODL8W2MrFLnw)gl0T>JSiH^(u^p5r(k9fdCv2zcGvbk2M?`f8B;$q2)ktP;bxPJ;G@2r!K65nxO#VvrifF%@%$@p2V&hVcp&<1hxt5HBVVo~w-) ztBu#HjX&5o|8fA%{hwAFA66TiHJ@S)K1&MowMi+yc4pT~+IuiEFpN4SusS4&wsN>c zgb{lhe86N}SbhG~Ty|!vqLFDA6x@k=oti>Mdl~2mK_>^H(Oo1|)g70id9jpAij+!x zs!E>#K*H=nDx!J=LSTMCg7zTJXrnqEGTKU|vX}ARho@?IZ5UmJcnabw zJhM$0DDH=10alc}auo(C3ganKAw#!AhJQ#mYKB8b%>ahz#$1sM+fF|c(PbEXJhxy}4XQg?5ywbe%3EjN1r_#K#U-MQx2O1neQarwc$07Cj z5gt9Tl$sS=jHp*krjBi<1H#e%XkiC)hmnZ9dT+o3W1zsFj{5YU)&?%qs8kG28}0* z`z8KF@dkusjRc8=C@=v~z@ZjPUqu2w{k-^nJmK7_8;d`~0{}*n0PJWvX|oswBCsi9 zJb7-1sK3+&SMktsJv)!;Fcq=Yad3uU_Kn3#T6VEHm8K`~`G%?)>jRs5CWm121Q&J` z!Ww)gr)OY9b!ofk1NL3*#DmD*pxH?cQ#bdX!TXEAT$o;Ko=*sImbZM<%hES&^=i>| zKx$@17(J{3B8CITzV>#HXVX(za#oQ{nfk)SDzc#;I*C}_oE(Xl;YFU-{1IMn3a>{5 zJ5&Bhs#CyWGY*@YSyN_{T=nN$w`AxRT2wCEQ<`mLQCXH2{SG*LWYN+2+Rvxq3Du{a z{bRNXkmW7)7~8mQV)UpVLtgbQxsih&e`buGV6?PSQk!8O_k}%QF^NrX33DRiY{Ohd z!HiQhU_8OXK*`je(Z#Z_NSBqK&Ot*Wd>3mE$ElQ~C8}wA!!kZ|$wpQZJ^@-TtgMWD zC9<5}Iq-MTHNL?-)MdU8p8=)Il;BBeGT-6T>VCA&B@``sBr{}Cm)q&qv{SJA5nZ8% z93+CrUV76XU}cdv;?Ch}*A;~jp;_Qu6}<3DDj3UFlTlA*m)p0VjeQ00``O`LcY$$2 z_^m(yEs@p?$iPP#xcn!&PQ?@pioU91!iA#mBjPZkNH;kfd_XWTbUf*1{!hOggqRwc z_WZ7QW-yy^Sd=gT>@!p>%H!AvZP^qCMqJ}E|ptRQH(}w^Cr53uzp#s47 z>D@-VSguA@1z?$)qFoW*GLk$_m}*qC3CE_yY_dDWsNDhq^%-%V+#*dB7T}Oqaxz4O z!xcC~y%RJ?BjMhW)oPeVuSL!jQ3#)ad?d30=fx+rN!N@Pq5qv>iDP$)s5w!u5X}i8 z8XffFC(AynWnhF~I~6QF3~=5Z0+0v1^eZ5QT$ve$K(=E?yoZZd$VBjmsb7?D8^2HT zzyp{ZB|1xtA&N3Y77qS+D<%7S6u?BxOrTm3LY?bi5sFH2yKE64oI@}tjlw_)XfIxc znJ$`*=j!rLwCLf-AsYZd+z}y|rip@~>~(q{v{MS-kd^<$m8sbxbVIUl`-|&gj5K8m z*CNw!knd)wogm**bS2^31v&=+iTc^KW*b!y(xJK#;>5!b5dsejC1@8tvY;)bdQ2&Oj#^pJ zz5(NgtR6|BoDOhE6+}4{F*HOyERZos=ve@}qDO`r^_=AYa^kY1q)nD$pSu{Oy%s1o zm-M6eT3X1NHobK8ByHt-$h=Lx*!Y=FkPUT_)jWPNt8t#Wqz4aX%R2n(t6>@7UpQFa zDy;rnx+q5S%8*x}d~$RC;gM{g^cH}129L0Y-hzOG;!5w7hST*pdlr8n#)?G^voI6J z?y@#Y-V|?C)AOR=u+1XlT^V@}UOD3}6MD#9iho#^H-+zm6oF8D8+GXBu`o`F>>sm= zc9fT9<7qq-WXTx}$g&OqVb%%CQ9dWSb$tg*gl&bW!o4Le;xv|#P8y`V8X~*|swPFu*_77(+$&vRx zm*yOu)$mO$unq3bq73jevAnpYeH*Isatu_M5nB;B^vZLq4!=vffVDVAn}GS))Et6# zT(x-xG}W8gS=Ht;cGgzKIEJbzx8po6NBOjt=K-XExs1JKL}`}_;PPj@3mS2Lf>qUv zfTTn97`;LwHZ7(!+jhsVELapuj<62_hG?k-tw-=Bw(4UjVclW{bSI!_W^5y>x+FI- z#WOe!dxfhozM#j=VPMS8)eWuM>g+&T5i>(tZ|-g%4|4eP-RQtsV(7q z@Cdta2N^^xd^-ZP+z%!P1eTH4IcnEEck)^KD7K^v<>8nCS;sJc>4mzTnaS>glIGwE zrLJW4Sa*;%wK7*VHkNLa3*1=5${n}y(6he+U(#1rM=df!ovvXHGhB-RbHo)8wScih zg7@s7B9p@skg*<}oIo%LNh*Fk zZ;DblWHnU7H2_hiIB{aeLO3y#?7lYUgKdI52fRl#F7hC1U|5P##4O_|dChlII1gH3 zb`ebXJbMY##MXMCu*z7Wg3bo^gc0YePL&Z4BN(S>Q?))fsr^Y(U;{8EC{J>A=}J#jER(8b#Df&{adcD+;l9IdEVEhY9XL%DbOs zE?Kg3mmh&OE|vz((~9$|&B|h~uu{RW@4AIM!bD*4bj^_IPc6P0>J!Pf(k!bq&ngX> z-w&A=^dYgkM}`#iaw<5Ico4~1xp6dR@6X49HxImh(TB)Vl1I6 ztQkF9p0`LUC0B8tsTl-+Y55fpiaa+muvX_upjM%s_MlwOW00mEA2Ar%Ce&Gn7#U$J zhz1(fl10pl0gfoApooQxhuH}sCAph@kW?MnaU4y7*1dy z`Eh}liP2#KmmzS0WBLi+es8!7yt!I)KG~halavmoYOt?D@!&+1p{1nF54;( zUAUgHJxX1p(T7pGU9p)iZk*u-HZ1L|UT$D9SZh8EyaPi~x~6Z556>cJaP$i>mxZm* zteHt%UsY)r?n*ODBiHz{8~pH%^C=pkC4pp=;{5D9a(;zjd)C|zMCB0s>)&FLQd4-f za1$OYtJF6u#zO3U&zCb46_i z)R_L(p8h|}m_oRcqAMaQjv*Al`gsq+AiT3F`)7;QAF8&4vXB+`N~SJ;b6lF_lz64)K|%0^Ku-PcE6p?GNCf-`u$0heg6LS;8L(C)B3qJFdK4+I-R;ed0}K>NhaP8wvgsSn53r(hO6{}@;wY0 z6+UWs>@@0@>@0viXCM4jVE5Usu?m1b7TC_b=ghxN9Q6B7A`ywZUXr`T&;pKEM-nCv z#gcO@O2ZjVlW73LDzgvX0z|6>A+kw}jA)sPN#M%QKoPYIAHG044tQInKv^ti88GE# znbGNZG6K73k43-7bVeY*C3+y9VgYT;#@pp+^$Hj;?i{f!%jb(p=IRCBoPb2M`t&} z`$r~@7(6%jRAayAjcfDP>Q5pA|H4}HZOGy9%w#P_7nl0jXlJp`0FC6HfTjQod3Zck zfKh|Tm?U!?m@8q>t|(%G7)f5l3z3~up0P1=@lTE@Zk7&x+^93PefAZL2Z4rULj(fOm{(V>Wg3x>ul7FDLvJch80%nPeQ`j5k}qBAEM1E+(d0Nm9?K~8wG zJ98Yi8Hi1RC&6uGg^DOD&EPJT=E>N4-$uWXO5>E>D~&n3aLjt~69mOvJEtgQOak$9 z9B|-n+l}^FAF>Oh9`x5}6X20KX6noq*bjvO`jOcLN$`!zgi-ZXP^Nei6@{J!KzsJM zg$V*?!c77V<};65$FfIwix1B!x`7{&)Bg=;K##H|p|#-$qJXm#(OipDRn8!L__`$8 zslL+pVRW^Dz7L3TwSmLQizp|XTyKD;Ob)_q(3h3{@D1((Rkgy8g2t>8?*R{?|ocHNqP&f*lM7uA_IuaBl8(IHRi< zIm(h!X|PZITbPiwZ2|2m|0kIFB5^SeYtaMntlpL`$# zfMY0Q0Bl9;PY1!~KW~@bb1XL*mN`dFt3N0lXQz4^rjIv*WE#A3FP>&BQX>(O47z1f zsj^?=^~yMo4wBlOwIvau7KT=K-w!OUD!}uncPAoL+On`+TWby!fkOKt^jXZxG9na~ zy7l;T5_F~I0W_kZD$SH;%ezm2=I-cFSUN=xvz5v@Qc~4N-~%l~Pb)%Tf3*MBNa#Tat??9Z6vUw8!dGQJ--wGg` zs%j@f4z;+%o!z2n3Wr`bJPkPXs!`8I`F^A9Hgz|vvSBpeRKroB2j#+Vh{KU1)y8Z5 zVJ7YD9>%+VB;g-+<3z5c1*f@KOgLKeiIQ2Sh@79u6whemR61M^W6mn*71h`>p0dRZ z;R|BRg_lHa6=T)lP6LcNliaFl10%`ra(02vVyB2=zZ$hEFKhzsc-ZskQ_ewTP6GT9 zkHj1Ch;1Fgrgg-mZml9BaiJ&is2jf+LOXTiSHlQG#zUOZhKzgiB)Hv+KsVI(Wka?v zW5L45Z`LaAnNBqE7qO;1$u7w2YbxbSK#0VAk7WfV(=NFgz3Y|0bdr;Ss8ZS|VEf5157Vi-wNg2nc;v2;{)RvV}&FiKY{wSiq|oCBRvGC;Q0MbTE8gBev8EH7K?Sg>;I z(=1plniee9%p}T!wTB_9=KvYauulBJl$8;rm(@j?_#QxE| z4AT`8#e^%+Smmh9kYF3B+L_&oPj+vRnDT;}T}A09b>N6wVt~c4#eUQc{L2} z@9h`aynEwbiLf7f2gqDfhRnRd>>zYi>tW&g<`NpST9$AlfLo~{wc&CN zzfq@ofKhrBHlFLOaa5YWXF-+b%5~(b<{H*sX|AChFqh__!D<0T^Dg}iub{*BfXO5F zzKV4shLOMYRYa+_b|9WuN;dCFP6KHFq4i(|1X|cHh;+qI4`VO|&Y#a?mAYu$ax14d znFy{LxS0A&)7S!qREk%RDZpsqvsZxea&1;D>snI)3I&uS@#s+d5?v++EDHlZb&mnw z3u9TL&|z}e7m)1*m>puFK@>zx1xt&7nnXnzj;<1C7ED{vPq|mT{Qz200UL-~toX-6 zU*afaExHUg7jjl9(~`+87_1+xU7Rm;LoZC5uFzJ3e#aJsd3UB071iCU*JmV^;gE*EMw$M|(CzxOTS2nA;tYYFFL z@TAf1TA}#9qp@{lNP*>yIb6aNtl5AT!7(coL7;xoatF+mbgRu+@ge9irU=$Y$x=T2egOU$x z*xP1s>W9K^q9&-V#n^CXlA&;B!5! z?kksY=GA1#K~|uaaMYrWtA&L#*zF>TDLHuDv6O@EZevFdVsu2fCNX1u%#4G=b@K*J zv!DzW!2pG?=0ZeqckdzzeiLI*BAb@5m`__7jV9z7V3ScF;?M-k5X3A$ep_;X`{tl$ zbuEwq)A-uG9k=)A3z-fVqbTi^Y=*v(;50^r;t>q`?=O%+M<^a0!gMq<-hkw6#>S-h zSj>}AjBFLLy34>)otZPnBgGS(OQb-vl_ia;3)`Z}{=@FCj|93o#JN4Zc@=@Oy15a@ z_z@3A&nVp44B4cdqne1#7DKcGGcOhzRRxqBvOoF@MRQ6Wz+IXUZ+O9x1d%Pfeavp< znISG2Sa5z7-yr`f;SqaZ#T@w`{R~mc{~mlbqdBl|IU-xxT~flCeG03=Qnk}Du~bY> zIOUU`DB@C+ZN%w7SzSIPn<`7rCmhl%XQOGLPb7RT~`fx$N! zys*-^uV)H_N7fq){Xe8|$f3T}N^P_2ll|_!l_>AF!Q$e1Umqjy89v+<4BU!G6;p1j9;GB`~j=_#-7VOYw!sZT^?fd zIsOl8&AB)-0;_nB-NaSA*$3hA4)s`s$7Sk~Ci&b8@Qmi+)^*v!2iYdm{63lBvkG1` zg(1v|b($@*JfSr|Kk6o7m!Aszg(-{3qfmn@iQik*j7{M<9pJJ<*pge>@^~v6*OL2# zSJ4y@lV>%5(3DWYSWP(-q8vb%D4-9;W5H-sHnm9ur73UW*=Y(lzM(0iwDpNz$11pA z4j|JDsYj2whYmm@zzBs+_TaP``h}mW z3FaJgkDvmCOenn?`+yc9j6Gz3KaX! z4?ujQBIQBws!@@0HF_yiq=e%vEL+Z=5D|krn^CCUbqTZ?9uQIvjtF7JZ^`{~SZ%|o zK)~E^(?SwEWhNcKql<+Wm6NdP#~xng$_0}c(4(8b@*;@L%+sP>XhP(w+NoOfK0N7> zt7`VrmUQsZJYEOYp_?w&vlnO$`N6;6fkD@hd$NRY_b$-h=s9Ktj;M_dExA*{sh_+Q z*;exh1ah#p%oE_X!X z5D$Ix4zT#M{JL?KuJ;{ZBRQP5m`xmTk1H=*xB;Jx=>#WfGIg`Bx*Th83SXulCvxc2 z|I{%ZJUQWrACiRBem!6>3{eVs$O#(mrt(YL=m2_2E76Cv68`}DPG&pk6M!sQg=vYe zyrD0m(BNbVp+)~LxZ3wHD5zNoBG+s2 zM$dEzB?)?k#$=%^5T`qWy_`8ghNU14NwScAtB$S!@AiXK>@CNs#hbO#?G`z>y?cFX z@g@=G!7c!*rU>wfVIf`w>f+caNAV12v{IxAg2~MY4|RYpC}PQs@N5Uf*r-HAjyKhUht7__!3kPpODs>k|Z1#62QT(mR@96UdQi_ z5k}EQJ(tqrx5G<0@Ah^31B zaBIq@W50a{eLqBTY>84&-^wZIBQb@yQOe`^-L@Vc#B*bBUT?a4!-Z^_<3IAbJl{Yu zg_?B+$_gac!@dRz71u_HhXmVXDK)~1mVw_1;VaJO>N_~{nzJWMcI}1?9B-We?c2VD zAGr=kiTn?*XG4S^!9_+^+nv?>A`}j6SHMwX4jm=93T~ef5`OH*b1Ii?7<4v6sZE3E zEWj-5=xG`Z%ovu%<#PL)Lx3?y)jl)`%TzVMlbtYW)*6RDeR z79u9+3=~A`5u@->)8cE@;Q{JYf)KbIzN#|>40VQpI&>iUF41d=@)xqYSa3jGOW;q* zog7UEcR&G}H3TXLcey;nwPf}Xuvdd}9Xz;RBnKP}SB$7Cmzo&LB{#|_w?xWSr#Y#z zA63d0gwrBm+D-h4J#tV7D(K=iENoAsmWKWI#)tL?d_TI$&qzT7FofG;gx+!xdN^$d zq{4mp@v+%i$?TLa>#FV07oR9rEDa}gi`Wv*cE0hIob8NtinBewVM3hk*bCBRs_?aN zoV>}?u)hO@dze(37cH5Vee8K@IVB5Hf*(#wY}}rv1idm0 zbmroQtTdma!Ks}P7U?Ml|EDt>jGse=o=8&$xov9^Vq5ztVNFu<1!6hHTLCb65a&f@ zfaF#Zi;(APK6P3;E=fCft4q?rB%E!tDb1Tq;_mcqv%iE7RU+b`Q4H2{f4F<{pwcU# zfuJU=BkPgjJ+);G7zeBLtQ>6ny0ce{oP#LT7k`ZE3lv?_z5Nb29_~ZLt(?vQC6Cmj z^Tt5>;8m4obUk=|rD@4N8mle*14^hl@XV^9XO?p`%f)gu3zSMMI*4;39>HvtdzgLu zddSaTyvxQoD$#hoj2vV<_WQ?UWJJVA4U6I}F!4ii;WjJ?{K{T6Ebe;#4o?yb-~7ad zXXK^2WS_c$$Fxsuu_J(|2p2dJnm&ZE zv6e9?IK3D}oCp`DYiH&3&DsJr2L`p6xDLfcph2Ldx%)USLOc+`lYHlG>2}$c>>L*2 zc+4vQwu{BT4Mk^o%(@g3SSvDEtj zViFk9(=dX_25KZNY=2IkN_l^6^azAF#70~&F=NVFfS;f@XatJToqt&%-RZ~J35ZqJ z{@o)u0Ut=iz;?5BU>cUC5 zp?K^&@M-X3b;eJYdXH&@$8O>KdAgPRvsc%k81XE~|H~_DfVBKsy$?`NCP!ZlkWk+# zNPG}Fyi9d?sp@baI~+>du`FvhxOEZU8Hi}RjddL#W(@a+QJhvnTb0tq5@E{fNt%zZ zBJ0Ywdoy2VA&!`mvpgITb^B^1qO$t#0H>W;v5qu*>*y^b6D`7Ro(SEYEyS65<0i4u zll15>kpJi^)!3QaS+sWd; z``;}->%UdJV{+r10G@;yr_3rt-p${}$eSR=M`Tl{IuwU26|`0Rn4+!tQ&@#cb%$E} zahKP)_A}8cQ^#(GyXBD0#%b_ep<*PSD}1m=jvtut0CZ2I<1s&R@?$f9=}Oh2zplN* z<&+Zz-VqhNNGkt-q}Y^N65Hw0TiSUd8&B0b9K~F^Pou}oD4f|Jp z+b&n$q>kZfI0dqh(lO(dq}c+<$h6<}PKY4>3nYYXq|_PVl7|3lyt5QAvxy6w^=VUU z#_d+DZ$pz81<&ZBW;Zqlw~HlMM9YLLb^8@_>Ofg~B(4@>adn{#RqS_i)~)w=RMFi< zJwTixz+x&v&?gQ+ST&qyF*x<9^9u-vT6j-`qi#1v|BpEI|D?ddLm>c12ZD*i!QAKo zDND5*0Qga#ry&ghXMsQ00pJ`3fMCxMTuvB(C|M9X-dU4oPb8Me0yJiWJSiDUeErT~ zT5_WTmX*kYe_yl?Q}~^LR}f~kO3=0(0fsig=22YYz>hlG`~taErW#PX6Ag&Sg$rsR zuV8Uz{xuINI`~8P#I=TqT)?4<6$eT)|3IhMWjj%<*;S-QmQRBA(zF5Q>@$D(VCu&0 zb^L;bVhQA^iHY|~jnraES#TXk%;}RrLLHrf9$`;`q@>@lF$1v)*QY$w23ykAoI(M? zm8)JABgY59Os;XtouxivxWweOuh)ulydem=!yTUi| zA{@;}`Maf>Asv!Z4App29^?Os?s1rEI4-p|eAAv;GBS=XGGWw26`H#Q=`axq(%acR z+Dfe3XE)?Wdm6t5-op+U#Lc0C2)Jg@mC}C350^osT?ohM7K$;tc8XLaH<-DiK2@@+ zGaQ#wCDLuqLxf=#VNgjDVM!8>^L!7b!^!IElQAK4Va#Fq2B1qx-$u6#azlpvgpp{G zIZ`4^&`ri^$EU#!(dhO_EnUMZoa(Zy1h+0K&P^SiC0foMJDKh!`8+QJCZ^fuW+NWCr2 z1#QFXlpwldCp1OJ26g&DvKm8HnlU?H{X3<@?fWR_vfMQ|Uhi(Ncf#G0yCLl)#EsyX zqja=E#bVM?(SF7p;8vAz5!JQSY%kY1)VDqOKsEycLANbI`;dZ%5(TnQnAWY+MJE&p z;0MVB@QOq*;W|}2;nXFSwXx(;osb*EP=inbdRu4$(+tqWgzHnR;*D^+oavFeT}3Uf zVoo=7A~x~L76Eq|I-y6#r(4x9$=BI_hfSA?rnkMcbK>>aqkemrvYponRZpZyki&A6 zaMf6K8Q{)$4@xG{;T9tHKXk$azcU_ZpD=2o3e8=DbhBIaL_51@E1hrvy^^jIa^t1F z@<`DMg>Z~+p%|lUr$|L|Lt#+V*Y1#{LWAtnOxFpy3DiEEFt|FQBnij4aW+jSyziPc zolw3(!x$oc8)}dnGUO+Y#2z7FOYJNad5~Bl8yGQKeI#`({t~4Vw3fmjPb%mVJ`dy| zW*@(s$g_?7VsvdlFyZ1QH;^u6xkM-MHyq`l7MzcpPV6I#!Geu$X{pi0c8^!OH@YO9(ar?p;bnUeM7m2snM(MU2@lRcrb7we_WLJpKymgk{`ED~;xmL4C)%mbw!3qGmM(8wRYR9kv49Oh#T7de*^#PtD9!ei2;2lO z;zZdbUFc<}Y`RKUPw3CXUJ)Q6CVFaD_$&0(9Z9o&$aG@cRO_NHWNPbYnzG3qp!V7a z$l$tLIkd5d{wv1xj-=ThWMe2^>uyr&P4S&Oqj*tkvcD(?bN3>aePO1Z`?oczg3HP!8KI6t=j%3wo}I)%{$v* zwPB>(0cE@mBl+Ww^Hf2TpAj?;<4X;y`h6Mv*c!5-4GZM zQvyFG!rgv z$1i09K{)F@H6poP9h-7|!qvNGmO5#aYi6mHm}_RKVa(zE$3H2~RFd52l61JQ4heP| zg3=5Kd>IfFr9p7-E}|w$a-&Pq8SPB4(+~`as^;RrmY9o!0md90_!I<^9Hu6IfvE|> z&O?xa13Lo;18F$u?v`E{;;a9Nu`6}HlFSZa2_l8TM=S#eVjgmEP@E^dpeB&^CRv9PQL`B5N4nV27m_Q6fM$UI`j6YAc&~ua|D+Uv%4(?scX()6GWWk%4OS zu?{@oyxl4Ie-ieZRn@sCBLuB0iqdwo1QKTCKpZ z2O|k@(0XhI6I*lrqX#1N4&8>cI3CjhU(i~{9oh7VLM)Jwm}l^ape2`)1+1i~Hty!Z;q}#vZ(3U-@GXNk2BNV|R0N#hHO0 zf!?hAUj`ra*wYT^U>`5#^ZM`M+2|TZF1$LJuQuV;;9jFI_vXvn@iKjXhg$Ck-QFAa zAgdW=y@@cZodojsjaHgk=-noZY9w9M*bMZqK(S+)EvB_!+b74zdW?#A+cI!n7arwIFP*rqO!|?&_i9{%CAT)g#mjUWl zjz3u5@U*vaKRiB->OG+>o0n+e2$rBRWUv49HXhG$bikT5vY>MMP{2qucB8O{1d4v6 z2cBu(VAe;$$U3hcdD>e&eam2zZl2-ip}o-q!ANHG3{L9Iq9iQUd}w>6<^vvpqlIV8 z2Oa(}FrT!jIFjo(0%UW@=} z|4aubxp{gApKU&$z~@vE%UOh#zorsjF2R@NU#Pcl{rNV2-jknk$0I)zOaRa+0Jz{N z0*DGujHp6X{;MY;>o=Iy{JL3x#jLj!A#06fwMZ*C!JJ*g&2ZCJ^8$)Cz73hHNmNi5 zz3jKE*WvC8hqlZxX%M$nc1kum;8jv#^zlHVcl%k2(BXo<@Iz=3Z?9416upy;empJ^ z8NtyVHxQvJVInNlp9m8HkO}d)lpP;tfNK<@PathLUW=#)qu$NLI8ujen9S6@wt@1U zuQ=L=W5ARlU>~`TgF_lzZLT7PR++aiLNH@}W%-}9U-n{~O8Kz%%e7kNOW}Xvtdv0j z5;P4K5iozjVPt>u)KX8d92>N|i6L!CH(&~u^aaXay=<>)0NH#$UyQsMXj;dC7ASc& z(6oh5m+oI_4D{N&=;!rBPQVuXUi-jcR-d-yCZs>FN2Oh-Tg%k&lim**YJeFsz;r`K z9g@gEg00GZ|^_$D=o z#{d<#3KKXZN>H)>qQ+2{K#X}fUfTP1XM6l%5@Hu10x#HZF*t*qr8%_xJ>1$zz`lAioq2PLMMK1Rv#ra) zkefF-qqw0uXf`SK(9=*fG?IB#lQ1?j#_#q|51`5^Lw`YEQzzgA8k>aQ*bh#@uKG`L zGgY?zlX);P-NUs!E|&Lhh1et*jd zZj9x#*|j^d0j5ICUgsn%-EPoT<8(h^9g z2N6kYz81X|FH%@nC^-LnXy#J&UQrRxFd0JWo!LB}q%RwfcuwNP4Y$HX6Ir*%eCSa$ zQa4wztpH+(f!l_r0mM>mXxgA+strv&D#kVpep7LFPe75Q>Wzfz40MXrgtaepxeK|Y zFywCea-`CjXXwBj@pCxtRyiCRlj`wN>ClqM~r$Pr6?CQqx{!S7O=^)l5 zY8U1ah-7Zkw(`IH<7#wt?so=Odsgp{=GyO0!^GhTaJ4OKSGz-9n(~Ri3T0O8&MpW{B1~XXvkOO+bf?jy8aNg3w24U^nb4db z3EKJ*KpJmA0P7vjSL)<@qiux*N>OlTAUjxr)xoT0my}?3vpoAXREia|0V%X=BZIG3 zsH;w~1Z8Dh{`Ct{%GlI~eE^;-ngpaw&hs@P6aL_k*d3d{9Gy+=7`_|{aLOy$qcgW1 z%c(RMs4P3gx*mpaaB8BrgB7@p&KXnBPntjx>?ix%m+UjK)7D>X7ghWQ>7ey@u(=0 zLnK(7nam(Xa2$S!4XbZGDrT!#oWa+tP}=P9$8ECCRTi%@Y;Q@MTXw<&fpg1{foqLl z&{pymzx-Ezo|-d}7a$3zYp@4GUh$Zx9&gC1C_=O-WVN({hb5Nq*E9G%Cyog!Uq~t| zf5m8VBLhJcfRl1U)-Pj{k-vOX8nXV+pQ!LdeX=@GBVLt-jP^x%4B;kT38Fdz;g?Yx z(+)_!0S356of%*k;#|bAiWoC0a5!p34NC{FX99@ZS|Ho`x{w{uWcB#JD6u5Wl)5!X zM*)5*;9vIce>Id1N>1{^%Y-MV6X$$c1cz5e3Z!`Gn~cu#BsZc+w7C>$ECm`nFtyds z%4yQG`Z4vyw2Q^!xD-s6aa0o`_O)m1!yWEgbU$b`6f=VCScP9V=lEhvh?|&T5~l{j z!qAJe`*HsuYDiR+0xfQdMQ8$yHZYP*fl5i7*k$*S>bm)?Q_JJoVyqulGzVJTjpzfs z&`F3(9m;zkUI@8j&wYp5bUV8}aeQf(Ot5%&Bo4pLL*L_^L(9XKK$Kazv8VnFYpL84 znR__TlWCK_z!e~U6?teBtg0172#_2t=&L9ctXmfAw9okWJ3K~4fb5&Z?b4%q5cFY| zq|_mf6Z@vOq156uXFN;63dF&HLrS1I;tP1!Thj1OgePyoIc5M`hMV!TVHhRd#x8uD zjXl9DH_zHX3CqG(zl(I ztC;c-q;!q0TU$>pG77bsgJcd)%ZfqtL@Z*gAF+BBBN#e1_%cu|*43M~Dc6rQ_8ap? z1=x5gqf(mLC1qnDE6X<92}QUprx9lB=nB5Fba0sV<$Qz>kpx{a1oma9BQcq~47dHb z9U!AD06Lcx2lq|H!e!ZwJS>oPh8OvB8hK9OC;(kyR_S4tQ&6Quw^NBFSvns+E+xvx z#RTiYw9M5_$4%G4bSV{f+++eaW_N0gKKZhd20_|dj!zDQzP~t3dhUzzvJJ;-8Z=&l zp&8?JAx6lFOH<<%!fiQHQ7GY#vp}A``k|%3qs5oJ+{ic?Y%`drV;XnBuSJT>7qcFG zFyYsY`g*LUv${l>zn;PUgVriOVG*W@A*%Z{nyQZVTmo^^9Ygtc6-xvONL_8E65y=T zwYc2Tei7fo|AIZC1)L5Y$FDp?3<2O=#AOr77_?4al;Ue`i}1M`M(f9ZL(^C{xgDn1 zQ-t@k8sYu!{A_QQY;`?{M7p(jMankNr2y(8j6em;v@bu2m#vRX)|!KoEBcX0j7F79 z=Kl_KfrPX>tIGIUQ6SRyC35AgCbte~6>kKspA}0zJVX~~=;nUVOx*0=s%Q0%ya(K1 znnEd51Sv!#;&ZRv1`zUJyO{27u*Q!}JN#-KK9&a&60|OX92C6B5*5@Jn4E$*?_7_p zg$g6A-p*4h9w&B2o5NZEM76Gk!OrJnQ-2_-&<+o@+=VTKW@wR3}Wm2wjUt? z?I&(!t0)N-!r!#dK>Z@=SXeBu5R#6ADz$h8j1yYOZa#PL8Qznq2!&jkR>%TX$P^Uf)The2 zh-EJCeu{KF`({vV3r;+*?(AHK}NOIJ>C9=tVA7jz{23tj%?EC;4^`K{7BByvee zObTjvL0!mWW;`?+LWcGE}7QkoJJwAQI9 zP$Fo&E`nl767N8&r-xI_8?vGUFUiB#P(cbBYdR3%yqcwhc%Ov}c&}T57lF7^pFXkk zU%Jf`Xjy9GYaq7tLzdXor|c`6?ZCop&ng>(i3bnhQ!x8F7FTU8^)qHj5HN1iC3am6 zf@nIu_d2%?D)lJ^6A1&`y%XOg!vVQSxsz&`)PeK7L7^6*?W<9(dg?%_uWJO<`$EUxxI+OP(#*#dyNc~Y5f zos84RXJZm{MQNyfZM9ahF8KMzIo8xHePpd}%q!DJ`gH?&FIc}wH*@yjomij0Re!Rc z^#VjWB)qJ-ui^&HknuT039Pua1VF9ZKoBy9Q*rQXKffRwr>r&{%@gDUzv9sY0$cJ& zm`8)Dd+jfgK$I2alP2x-3um3b+Vl1vgOR+JNPl%R4_M&sCeqh=T&5$*P;=YspI zjsoI4kl5Z0G#NA!u;;RzYV(O=zQ(08>^A@#L(By>(DG<8Nt!pkknC|$MH!-s`t3bm zxJ_M)%%Opgec22{#$|cD4FR2rD-MlF2Os13;a?apHX=+!N|6@KGNPkdA>(l_H_hlV zB3#xnBD|KsAA6)9K_{FJ-itNKP;FYrL9I-(ic4AfKR5)kpe&~Yu;rKV`J?O(QhXTY zGZZQIvG(IV!0@oqK2Nw4eld2kie38e7?J=!K+a&6?wJWu1#!dLpT z8ZT?fJ?MPg^y5R5WL}P&egeP4L;_aFb8+3%xm^#y_T=~CF(i*T3HGudJe*o#tzg3W43h*AkHw9^jJOa{-&c1Bnk1sgq zY(V;L7gDj*Y!}kMt_P$AxT2VK>&EGMV*^b%>?{I3SE*`EAF=yJZIo4ulyrW<@qdZ* z7TTwr1ny@> z9;`Y#t0ACAH)+k+q3X!7xmxskJdC1SH>x(k6_Pwg9Vpz~qcuN`h_c*mlCxe+jByt(2=xzN7tdD3?kghBN}%rQ$fZxsxg z)u4{KMYy>G)uIf~U=0LGKZR=%%7K>O?`b$@tm0}^abWAI;`&kCMiggj1t()ED~Khn ztU=slQ{8WWm#O=DhA61aYConGz3{#q_=G3-H_U;$Pt1$DkI6W^rE-Ct#!9+{<^rhB zETih|IG@lcJx=uCp(X=ywQ6xNy`=ZN_RXw-@rUBNds#@KcTf;1URcEt&L3_w( zT-cD0q?r4|t)u8UL4S>dFE2hITcA+$pPPpZ#(q`KUyy%Mw*ruyuBVFL4zNQplbzXWEex8snjTH`Bi_XYC%V&gu<}yr+-!40>UI&l%hmzmo=Y@Qb^) zvp_TznDtX;tWEwZ@7)o4Q2XJF#bJhJb_T)tWE6|PaHzbeaXQo~Sz$Mt-jOuSTL}+E z?4$CU@UcIk$@;E`%QE*h_)>3y@=t0;4J5dtKijg^Plh2%OR+=YhFxfST`KfN=8 zTY-k9H%GaWfmM_n$O%JMM3womz0XryMv?~z+)r`^0)YJwV%oe-TEQbcgdUefR>mIr z9iAXmPd*AevkD#=KrCcD5=KINi!r@7@+Mwt1rdW~nWl}HZkWqek{*?Wl_E*6O46Z{ zyu?^vgz^plJR1E1-NCB%hBQHr|k?D-}sTqd6xuFbiT5`{?LsR{D zgQhNRcbZB7P!J2(yrwGlh9ZgmhI16Hptckq??rIlhlmBNxZC|2uTpY&?+!4hTX**( z5Q!=-=VQ?EtQ9FbzUuY|Jjw545lD>4tBFi|${V+N1~ql<0U@+Ey?$H9>_l0sFay3f zOn~KDfykf2*usE0841BYe#Tb&1jn@Fj9G#ik#0~u17?#r{#x;7F2WF(YYKL}C^bQZ zGgs`gYwdTc;4z1Xj6Fg-Tvqt1YvmjzlQd+vqO5Jpag<46g%=k4p%V-%?m}4*GI6H( z|K+vhUII3@x)i0Lq7>BeFkE`=Se{P;aZ zm9q7|CdNfM;>H!DX$7J%ZN7L5c$3l8$r#w8qg+8Nv7wj_seUB@_I|K-r)Hg_%ES47 zs310O8wAsRww6p6st`=!2cC1s=u|ExdR${?5q8k{A(zL8>!=L4iX6DMFGVdSK9@96 ze9kJvz7ai5aMpp|Qi78aM{w>N`wt4v)I4E8P^`oXI=EJK@GF?5iI+jI{`s3)_?rUK zd_8FDc|o%VR+p)#;6GM`s?kkV0JnM=iesMr;{Fx}dhW`%AIB(yriuBGdPIjqUpMAL z5v|J853U++*dHE!rEtE@)>q$mulm!q2R9_D=3z}72B6oD>_AafL(s%gR`mvy2b)#n zM)XL3sQlxG|5fH6ppv(<8daT|H;bArmiVCsqt}ehI`+VP@8y4Uu3(4C0cmgJ%lOof zIzU#{J@%)6_>dm~XH_A~N9aSi0d2ZgsG9?$&DAsi-7eR>-Cu@6kVbX*2VMOXkPuPx_MeQ zDxa^1%*t$kqUv;_W5`}Qb&#MA0W>I_a{>Rim}ie*YLG`();Q0;;N1^L_>iWH zj;*_g7tizXMo}Q-DCEh|+Q-(dNlMK(9pp(=&E+OJcaV-uKC-0;1c8Ap3X|ke2zUqXl03Z*2#8V)N&w)sPyMWXfqOc%B-SFT%H`(Ejyt z*+M&d*(I93id})fux@CBC(tAtSzBfs5}``o*UKp`r?*%Sd=Jyx&3iWN0Y#lfr#ihi<3%#i*Wno( zv#A;LT$rr1URa`>8FL2ajF;>$6PURTZU+%c{#;tCJDjxa>TNkGET#Cq%pL-}^|6m>7R2!cMr}uI17gFAb7h7)u z8$t!ub=UzmG-DICl#yEMWD{7Ky9q48O<)66(f1qv7n{JI3uSE%P5)T$eJ>|u*m_C7 zKC?Ej5lgJ#$JqL{(SD&@wtgKFuqunW_iG?vtZQT$*iGi_{VEJ*eIAVTVOEyF-mlLG zO*o||-zDl`Rlt2%e%Ku5c4Ch%y`j8NVLb^rKmkh|?AVV62;v49C2#=C=1G@L!M>nh z2-d40CLn5R^MJ(}#EFZ=&z@IU^i%;U@H27_QVU@L+Mpd2ugk2OgDW9Tj`$7 zK<5S3SsxIc+)hVy{t}vx*TZG+{FhErJ^;fb(+>L~XPmIwm^BNr*bPF&r1KlVZOF>M z^w*pSf<3kU8Pa2PMps_tZS=KN73L(5{?f1gGBJ37DjEyt`InCt{mL14c*IiXwa*I2LlWRzg5pIU>#B0Bnm zZ09TeZZUd9#BjKwMHpmP7nkC<0m^GejZdGbrrzH}jnsSn+*w#EI}3}zk85|PrcG5F zvYe)#^V(}8*k+FM@k>xDwTl7QHZ^R;Ib^<&#yP5n(1yhWB@Kp9ks$< z@rH1VU7k&&^XHyXbY55?+~QS4LDb^UW;S+$)Z@T=9}}6=`Vqi2B#5QBpR{qS=(lf@ zH-89DPdMCSF5yC9I}ziFR!qm1h})^9bg*Wkr? z%?GnY9}BZot)Bq1MC&)&x5u~3EKdw(jVNZ>rn0? zLGvvh09iwCOqtk5hY%1m_@pDRGY(z<>T!hn_QC`TRFuD1>KvK&?z|lsM_W<(3QY7| z`3QrSm(jjx9s<&LC47)Ecds;}#R%XzFbv+01@jfc-@7{5jVXncI;XNDUG81bH>-$@ zEc!mI9)Ujp7JNcIZ3BpM@#n4?SKw<`JxUE4M+UTl%OND9EZvbd(N=tdz(M(bC2;(O zSy)2PV*ysTjUZ&*9h2YzkG$++;UO$q;2Kk8w*OvB$rP23ph~Sd0038HHB@8Ek~--C z5A%w&lD1Z4#67ZM31s&XZ(_7$D~(+_g~hb9a6NU&nO^=>!vV?pfH!E)E`?#PbgM!O zP;kLX(A=kBSBgLjuWl59<|!|E<=2n%6EN4Y>H!%V>r^fKb%2xIi*?I+MSjI=wm-4k zcFo3k*%lnFISU;I-$_+j7c0ZX<@CtMI=BarVwW)Yc<_R91|`uU)QVVEly9_ z)%9{Qv^UHQS@N(|Ti^TFc)dA<%2K`g3z|#>!F;H%l9h|ogiwB{iC1CU`tDQTOR5H7CK}R8U>m`ejc9^LZgY)G zWAb0AR2tv+Prd`3`W&2{@zXNMMOt(GP|lFqhs?gYg5nz3cj~l)x%Ik%V+)MNqL8uJ zhefMW-JAtOSF{wA1(0qC)VAG!zcp^r+h%Ech_h1n9O~zZ7#_i_+BR-VGY+6S-nxU_PSjtD6OW86fK%7oJQngwRw>@Xr5Teb>)I!`SaS+O@$OUv+@!-dD&x&RxAhE!Go>< zE@WGF@JV+dgp6y3L&lLX8_~)I++XBPM5hn|fb*JHQk*ED76c(@9(g$hW2pS!nrxPa zx0-C`Qj*$itpz?R&F~KqIHh4g5s7yF3&M2xEV)ku@r24{6Qvf7qMJr*|NP~&+To-t zBRw^O?Sn_*z-ZQ@pP{l$ICQg>ss}D;^ll5ty63Rmbp|S|YgeX}n=POzy6l#)1;jdi;)J@^(S8gGv7=Xp@rpC=?`3 z%?7$(9)eYr7&I1{U5vu_)GI-Ep#*mqN$`LV0d*P%scq$c6$`6xH7eGsVs$Fkfgqg( z6n|`9iylQoJMq;%{P{nQBp;F&LJ@e+=3r?FYb6U;qy1_#neXqUHc=&YW0J@in27T- zc9X$ejO?u_%r1EP9d7U%AOMaYd*0*YA(PW6;QxaCA0}8H%5e)h z5rsG^L-M*!c;5Lw9zq|W$NgwFdYnClnA68Sh*5^uAxs{~x-GR$+?|(9a=Dl(3ZkoY z&V519LsSOT){9a0G;g}h4){&j(*@l5W(?`&T~c?nixgtEk!?a@=|`aI0F|gtHWK!Q zxBM}sx`4$sKPY*=hGtQZVn;QLu!=dFMXQQAnned=K6Su?Pfd7yYWm}Amv4?nP-1NW z5SSV%;om-lSn|uy1!aoNWr7A$U;G$=H=L@%!z z;-fgp6p_z>rW|UAPFQW&)y8}FXDYdLLuT@aki4oHE^eoyCiDb352s`ttB&gU(XYp@ zs}U>tqPr(YK1IuSL>F_XR(?f>O7n6jT27C6h*^**nA+g^{{fPB>hiN|QBP9*#wIm_mw714W`ovmme16H9_#%nY+^Uq8{O5cSw6 zBO^=~2G)^|I;`ex>p%c*HXu-(Qlyp4Va`c94V-`ZoVn*ienPnKCly!uKv1Q?AWEt# zcD3mfc2U!;4kyB`wX$3chr6DP@qp zY6`2T%23{)@`+m7!%t@ZAr2%zuW}%%!+R~fhho>9gV}qczT_95@nE>%%qanLc2QN! zxjwClo~UxBn$~<5L`Y@q1BixK{+upfI06H!_CiAYL?N9qj2Y2EWQN^B(l%XN!~>zU zC~SvdpS8%pYtRf8Q#IC_&qqswCRT|=1FPMGvC3kqV7n&wLn+u90)PRN2hK_8B!xDbBQ&nD2y& zrjWJgD6)Q3pdphqb)XZ%IjyGOo#r7}~GBzEN! z>3m&Y-SRNhrh`SF+qR||qcwf}{@1GMt;e^i>2TCEcCS7U*w9T_c8U(62gcTVVMw&U z{1&ucx<{YQ23t9o>%9Xxdbac@GPCj9I@=Ea~73c*ky|l@DBw@P9y5& z2g4GzS4^MGW&eK0PXTxjE`fBljJ5VZzB@`VnIiH-j1mVQ3(@(52dhXTIJ3%WgD;AHf2nO-B$i zqBSf`jVR1c$}JYIEnS3}yh2=FcAxNkHXSH+M2XXHcI`LOOA!I1R3A~Dfo+2*!@l@6 z=&xMNAkToeAIwle$eN%rA00H`Y1|2ix*b%A4tfe7z15h*RhuW$J~RM)hKvvG?A^yh z9}g!BnKWQujuE~Iv^~jf%)Tks(4=szW`;MZE@V=mWTV7#kN7=@S#&_fK7J4Mujqr+ z#b=?8zG!QT1}w>Gh#H6QF_MBM`@5V8hy7GMeOM3)_BS6KZ&+MNDpu17G#LA@d2H!# zRB}>PCVy#O4$hREtMWKV0x_`b?BD!iygD|L$3QZ%MdfN7nbKog^wBLN?#u_(qbQC| zyJnoC8h68vCDfI?elxOt9o397Zd6%rMHz@Ws#ynOR9~o@QPJq+SJ=Fm1&6aRz*?xh zw3rsQGA2plSU-o?!erwLCYnV?1rv9gyMoF4|EYT$@TiLGe|+->0SUXYq^9^5HEL+p z2CXd!>TXQnF79Hgps6o4t<~at(4@u}bd$}(-drz@FDP2kprX{GjW1|G13__vebH#O zqGAd4?XE$MST!m&zt88)y}O$?Bs~58pXZQl%ofyF(^~3=T2B)k9yGwz@ z_>}_v7r(F#0X=R3O0uL0N&Gx%*Y(h(Z6mBU^(FVh?&+&@>I2wk9;n~UBVdx zf|C=00_s>9tT8u2?Rt-ujzm;a5G4uiQBSt0EKpB2p^Ne4VAHUJ^}rm4ch+98gvGbX z3#A4m1V`zEsiQUREg7vWGo+bpXupeUe(GAKk zR#&TZQW2}~kko9i((7R%iSPV)q$FVNiJ{gaaGlArT|JQl;>&k;7RF}PBo!83*_z=8 zIo<8i0&Y+F*`Q0OplsV0#5flZ0yG3u1$KU^hxNdlEl!6^yeq{!Yb#%Hsf-uL@CE(d z;ylTM7YFl28(%C`FLL=}6<&1L;&TR{?&i})c={Ye&uZe+*?9VZ1JPI_3eB~AITJ5m zVU|nzG!;)9`E)LyeuSqdSpa7^XY<8Gyja1{UOtV()9rjZ8czwA+sb${(103Fu)@Vi^S z-BUyzBZeLQu%FT5U@mYNFotFzZ2nN0f$gHINZDUHe$vy@(rNB#Qqat{LDMqzt;N z3PTt-Sb2ItHJT#qz#<-)(#+LGlnyv0*D=Gx87ww~KA{U>@qp9+4(poYE?9@OX`|hB z+wc``{c!PzQ@aOF?HK7SJIQ3PK_avu0b_R}pY`yWTUpMWTZx%~TTS?efd#jEGi%4; z^ovvmvHEwn_BFJ-BlAIV&BRtQjvnNS-B2Ay5P6!itFK3hucoW*iYXTp(h}Ba8>9Ap z11r4NJiNdk>|$k=;y_qwU4A*elvgvWy*;{>TTeC`qaJ>(Fa8{L1$~(%%~;T)nKjvx z75T7-TYz2LBG?bSVn0aRWRuPZmpDDLl4YiDa5vma7^V;2L=sy7B!GQ_A3GwwNMO!E z6%iM51&j*|u!vsDkBHVJkj?#`C*FayZr?M^ier5Ksc*X*{)FG~O~Rq$T-E-L$P|=g zf0ahty!eU4Ema56b33f(j#Ax*5}_}VOEuYSD`sta51Yo;V=>(d!t*Z#v`E^(wAI8H zaZpT?KdjRp=<0(JkJ$Ue&*%Fuez7W$w$0aCg+i?AiN<>n96lDn)hR$Aj<`ge&{VU^ zB>+?`Le!|n2y292+=43#$IC16(2{C?GisatR`>v%(*lK;1-OF!)!ADIb}N?Y1S`3% zn=Ym0RKl>Ja`s02QgHfiv+K8K49~779hzjvbE zOhwN$Gv}IV5-{tnB8hcHW?1_(G|;MF%gGU$w;_X*IjAx}GBER8WFC5Q1dBVTR$8pv zPbH#u@TpyTB0I%GZDbi&^%MwKvW4S$yB`J{)#i4eseZAQo`S+YwnXah{f_%uqm9W5mL8_g^h(R zd;$57C+y+iL66X@Rx?lcYWgRbbFHT|Ie=4(FaS|}ap%s&nW9rP&A6=@j{!qAlz@CT zKv+{=*n*h+547V;sc{+H8h;0Y%f;^L1p%3@f)&;Tt#5qR93;Wd76Rn6NoBe zlvU|vn~kz+y=+Tp-9`WbqCE9sEc`njbS2)5g`AUsbQhAAwD=WliFrB>)(O6&6}|wz zID`x-_%6jG@NGr{eA!qlx(Q1?<2F(OU--&t$z}LbYOHI=t5V~F;(&1(OtGiqqMI27 z5Ns9LWMV6dlC9{nThSw}=#^INOtfMGde~`2FRMwkq6bfCg<5P&&@@F-)hVbGrv+z} zJ7~S$!L{k>@Ztsz_dfg$sZH#Mq&D^m9z=d2Hje1xeAuM2W}pd^d0C55mamt!8fE+G zWzU4xJpmXX_9i57*Ebfn;fHNRHWseN1L)m}1epF22{ow&XKVV$Yv57iLbOW5%x5>~ z#!5V6ZAWgv`SPWBVqB|$eyt~Y$nqo{vOKw{RKIwNW?nlTbAQDexHu^=?U<;1yCQu~ZG$V)|)43Dye!8Y328MoGc|Z?0qcpaDQI~2rkR;yGFsTV7 zNiZNu@)=@~*TbZ%9p^HB2YwGhNcI6J(2N8qv+*EglX|krN+Ks(CiDsD#{~3?ac_g| z?Py=sP^zC-jK<=cg#?XD^{3lWJVD7G!g44{*0d=J??W`K|D3%mK?-I&?c|XPKTMr$ zpqe_{@dJ}m=Dtb@|K{)!3*m4Z38bKT@C(qMoT#9Ef8@~6qPkgo(4s*&9Bt!p^I`vs z7QOoe)uPgoL!;1`bXQ8y%fxh>IF(7OX3C^O9^j;c2(q$BLk#?SO|s-P9n~+4;@w@K zJfb2p1}>vLa!~qO`H}|=4!i+MxqkO1fb*NTd65TMnYg+Sb6&vff^VSsl??zb#q_&7 zSz5n)Gm{Pp>WE(q3dywq;4yKv@;~IVkRoy;b$QL$3$6`(@w+iTTv1(gkmArtr&mvRK5b{(-#)0gaiaG+>%5c zDte_Uu&}tQLJ3-PUS4R2&OgjvnjmyOei0K1Lp&-ArCV@!jFj)b4wbQ}b?Hv*COUBv z(-0fq&f#uYh5|N8(~z z-h2`Av>=l0Lh12j5JALKaEOjRBh}Go%a7>K4x91XZ%8l6(g(<}{|4b`-bNfX9QRe+ z!stVvUUv`3B!~R{&!@ZAb6sh-G(MB|0z-ALA>A9_4;XW|o77%MxW4 z16dL)kz@!9wFW`>YCuyV+JzzQpozMQBO3mWqv~J^!Nyok+!#`QB3?BMf>AOucGuZj z>qlSbt2pZNhy_mpMf^|^GHkp=Q)J-VWMI->0O}W*loePnf0Zwbi0=eQtU|5Ap*8#3 zSYFT(B9q}5ND4-Y29QInJA1zE>+ZA{H-pJ1<0Ci#hlE(`#I}DztcBkVsn|;GeA^Mx zkcj4Nq|y90PZVTzyOR(4D-P^%*S_xs9F~Wr;wKDm?m*rh0rAd#US&=V;l30=Xr z=HpcuFPgrPfzhw@`Q?;mqFyp8vCor->h9FU^`(}Gv-+&Ti7 zjOZLUO~DV`@6<^TV@?10W|-c7Ux>B6?(4#%rRno~;1bk}a7jeKuKB&%dk})?gMAR? zg7zguxyYC+Q7+sK=b5uGMxQLcN&3${R`3V9E542|**MQg8dvhe?`mAOG;VB4 z;|`l+H|}M{6Pq(0c*AJC;c18_1W`RIgEjeyDFjdT3^nS#?f$maxLOUSd$LW z+2?58$yL^0KK`a}O#^^S=yc6EtrAfi9vxeaI3q99#EG!!O$f|Xjxk|NhBYDNUQ1$H zOHD{Qcgl-JcrmO@OU79O0ILmN%e1h3hkQ_lhQe?!%{aL-f#UzyfNa*V^!xsQ-Hgz+ z=MIQzVj3Lh*39MUuI>+p5wA{9f`1yff72(-lrx4wNNWAa)xAS z_>fStT1DuYoRl=4lMu%*P0t2=y#hm81;HDSIUbgIuA>-J2O9t=25D4MfCR5_Y%g*B zPO#Y8dJ7E$W!^-Q5-y;N?K=tgViA#q_z{9xn3eO4muZ#*tTnb8lHXj-^GPrsz=dPM zcKZei`hDVU+&7MjYugl*!)+L1JO{p!LlX30Wb!3c+x*J0sr!gnC?CyE16|5BxV`yx z^;vlgI+@R+! z#S<+1#2=a`5k`!z0sw?GrvyZxLq7S#z1{9bXW*A+i0823E#AO4X?e1Hi zjZb4KPvllY^q9?(ENPKsSv!+l^K4c+NxIFQyCk1axyy>AZhHwW4u06uCUJomy*>a_ z%H>Abkv3UDbMXjC-q_)bjZTZ-AYM{x=f;37qHPn4U{$ge(SjcxP0Lv1&p0E8NU81y zk4zep1>GqGn|UVKD7CwZ2fEvaglz18n^mlwD{we$1Hi$l&|mj_C6Rryj!D2=?v;!= z&m5G}(QvLHiTy?szxs`kh9v$ah=XWm3Rwq}aTVz>B@ijYBuQ}sz2=|*&L6P6S)VQC zZ+0R1qGU>1^(m!B$@K1XogVd=>}I&mbItAcEZf8+cNteKAbf!&rbiOl5dv!gl5Ucw z@lUWM@d*)nO5Gc>(noazRjI1fnC11GHy0t7Pj6&Wrq>@KNnE`?KiUDyi?4Qe_?>V4vzn)$yH4T7?+~feK!}qH~ zhx15|-I3iV+dtwLapmmvZb;f>M5RsM%tWI?s!@VFTE4rD`t)=(DpMNu5|9+$B})w5 zum+G|#0@*?ax`oUfUCViw9w^agn4JU`NM4*&-#J5*VF8FXVlqs>3}kpsnr#o%)UI?t z9EZ^wN@808TB7(mN9v~KrlIrHM37`6&)dze>$ zKRLwD%~C^reeS*B3z>CoO~<(_i!(3O3$V~H!9uoHhnuffG^1TmSMEmwj#AkJdf#U& zL>b9(^gr>f@|#PT-C>7EZ$-pMvrP%#)tm+s7JM63V?lX%eFdiQ^y-NSi_BkKB>iO3 zH;L9Di}S@?O;8SuGGhfRa}Xdp?npf{1fg>IO|NJ23;tVm$g8JYr%IbzU|wjB=(joeG+%@ zjEag&`bzNRLKMQZ20KiG=EvW%hcs`G>;}z&Z6+$~rzOWHs%G$mh$T@(?W@r`K3k!e z?`-sXaWbU5(<)4h)^Ro9H>z+>?lzhDjfIpjvB>NAAL{``d|bW?yI>1D@vN6sf`Q06 z_Ci4&y~T}dq?3l7F|!M`^ZIf4wac$E>~)q^7{N+o?r$8YB3-=Pb#oJP=u4E}xF}bu zR>Vhni|%QP1rPy)fDi$LNiO1^<|6KCE{=C$9}BOr8&_aYaj_8BG{8-(P&2I+0-){# z6Dx>-{w)TIvqYjj|6F7!)eq6a&tY4uMy)e6ed}i{Z~=@O6uxLg)?0NOxiagwqvMS5 zegZQ7I!@q$JW7>bO*ZaF{CM{_{4UFzju|^aRUllZrUu5y0DhP~>`B8ei5uNInfJp+?y?Xr7NHs>b(UWMNfSt|h#ufD$yuYQ47-Nz?irtxJ1Ult{VTTW>kUS7_Z zxT(h0+jD-*mlN?aVVoFp`(H$bqh4gxmOF#T-WPN~i;*A{YU2oSiKhicg7uR(hP;4#Brv}aQIRGvDQ&EWFHq)?0dyJ(Oh-QX-yRaZ zU2QrVtA#4Iei&}`0410BZ&FOdf78}TTfY4ei>bam&t90W^wru(Ns0bo8R-ZK#Xq8s zuo*1WDucWFSo=BL+6-*d8N1riZ~4Mn6dG!WZlpD?1ip=~%>Pc$yy_^Yg5e4D`~NBe zeKKamTa*fUM{bsY{EG_=Dfqc+Vzl;ZQk%Gs!b zn)8dL>JgCBdjb8+jQc8!#te3mjph8%iT=D$|SGc}B3G7&@5E%zl_^&K8 z0qyApXyJnjsZ=VI%}K)9@4Cla@$le0z9$ zLk7cXOzD#>sZnyiMBMtrIpzu00?p4Ae~VxHF@gJ}WaHkO(t?cH%ot_H{v7ql>}1aH zDmF0}nYw>9pteWxsk>@G+1GL}Nzi!0b&sMfckR0m9gyv)ls0Kn1)ZI^+k&l`!_9ZZ zV{r=Zsp&_jGRa9QLbBn0#x5EDwIrGTBCn$H%!1?lso*+XkLI4F;$OHYA^gR4h1kaX z%G&ug)T~zI=O1j;rOq8`^gp=poSmq)ZX@Ag^oaqVH)YuOxFwDE?IbKF(gw4jACOAO_im_8nts6w+=3Nn@bty!XjTT+(Q~wr9Mu? zJ-;4t&#yn*Ul-%~3C%3C!+WdSkjp74O>MdR%5HzDjDB+8Rn7F!+bY8fh zlsB;Vuq^0s<+ubL`nrOKlx76mpowdnZRi30b!@LH=qvHkZ-%%H3v>HQ06`^u!qj87 z5GF3&X2PcMF9a(nHE_S#%FYyY1GsDzp8^h0Dt7>rPcSfoGP|Y+!3A$xTW}NJ^z@p2 zA4e!IsV<6OBoeqVnh#$-@$55#Rn{r5FqntrfP;)?NR&O?KGGqxOc8uhkmGs~PeHXWbD@cczRyFQKA9oDN7Fj=%$1FuFd zsXIbktfC2ML-Yy!d^`;^_Oz0!s=X0?tjhYhP(>^eSkXI$AJs*FvR%o0WP;{Wk`x;& zLRz~o&|9yKP4rekUq}pe z<~ik0;JF*m-KX1cPT-q6_y&F>vW5n|)aoPRuyEKf2E{6>b((!wmKAxr8q zX21o^h~y4kVIEya^fK%bt0l{jx5Yr^aJ)L$c&f9C8NiE8M9K+EDG@30)XbOgL}9W! zfW_fb`hA+O3RlC}OkiqN)=v*fai#k%>S3q8D0D7_v4bH%** zt_wQ6U|TFfxrz~2l4pG_Y1Ri{q=EP+z!t@k1d>kSXE<|7E?( zaOOncT<3DyDO^buJ1Ysy!J6UsQqpBvuRyCtn2u~-bs28|7XJ0$mwW0o+*1douxb>A z&bTPTnBbZ^`(mhs<7H#kxX(Yt1um!*t}R7J+uk3&(zzX4>#1d>zLVyZm1_EE1b*_W zz)u?13U7a+)(Xe(T<#L}2I~|r?s7rPW|Vi|PMJ9)+g*1H0nxz)jT}&S{OQlq=zz?8 zp(lU<4$mY05CWS#hzEGQBT(`4#oC3Nm*Np8zkKV7rT-ZRrN*qE|0jw1rIT&ck5{M% z^a9)*;SVq96n|XrX5c)@###SnIpm-Pd4>3)wVj$?yBTR$U|O+#A<~!wamo7*Ai;9yJ(s*?coF8m4l;Ey@o*Cion5r&;c4#k$ zgZfMAHbK8xSBy>zMqUV*N4|Vmi!0zRvk;fs-LM|S;JvcuIW3@800U-2w6D*|;J)+x zfc{OuT+qUBRHa7c6vI1R`jdWE)}6@aGe$F?AB*VL(njw!zQ!_F=C{+ca8IlR@y76Q zKe+)D;R6|oY1yxD?du9HsB*a@*8`=phIieOyMRQz3QtDx3C)<>8o*si0Wdoj>9aF=qi*~*6dJbH(qyezXrd9C;nFvRw|yJ_YMlGl4H(95gh9>T zpGeN1%Z_@y1%kcyq`KE?o#b=ab;{@a~$4SyE~TE zi>gwJ4rXt)W+}pKk>YUFj9yR7w5zl6gpp=#f!UeDVwAh?Uu>hH4)vO5rDTwKloK!J z(E=ukd9 z=~HALC8E|N|4GcF{FazU6T(u{GccQqhmtd!l0LhdO$G2=08Y-PVm%u?=Y_9M2}*cY zT+KjFf4&?Xb$w+rD51~(vYcPc*>FOv>9wq9Z9WLMQhx$XV~pbM1S-t2%Up^w>?akd z5Go`%$G$rKvwWrcL)O`m3Z2g`lIB%>W_Afx$UBWu5O*2}PGh|_y_giJtL!>R;UY`5 z>4X2+SdcdJG4*boLT#ij#%Eh_|MHypuUMrRs2z)5vD6EZX}2=9i9fV~H#)%C&j=r2 zE|xiI0)R;mB=sKKOvsT-37?41Shqo1{O^5+Es-Du>}DXs%u{XMcra`S;i1AIIQQBv zY-h8LoOvH8@@)Dng*;Vm5~OYeNn@RoiV}^Sa8l+qFyXKFu0AOIb#`@L`0G(Mhpuf$ z)5|8e2c~%os`lwVbZrHmyAN1PLa5i-^U=9V#mcoF!{pgL&Y0j4Z4(B>cFF=}5{;q= z^f9BJ;R0ZY!+cQh!cV!Zm*x;JW#E|lzP|8@>Ab=!P^e9A4_%E*RdWsB^ls2UQ0TRC zFZ>4b0UwL?*|_f-3MA%|Y<)&%;$C)Elu!)kDA7~dU-WDS2`GAC`cRIJl{rAp%-OyZ z;^Mr_IxTIJrprDcryMNUBF!ifFmSECaSg)W{W`zVqv7Hoy78t#T9z6$D}6Y?>5hEP zR$@Vh?CvKCazhd%V43m-$~HxqxIt!}P5m;5MI+sDF)3Gk=?@G{%7fN8UerxQ>6j-Y#;CHFKOq5e-W!V`3WtHnS=<-6Y#Hw!z;npD0@GSxz;2 zNqJ~3bzRtZ+6cC0W@zmuKI6O$Yp*#Wv^Iq2%$j30vr&x|@#eu%m6iBzP27|Z#!^Td zCFR}Y;crCWL%V!R82G7Lk-OnuViIo0xSj>n>${Ls(;F=$7j)EriiA7A{cs+IA@FD> zqZ2gatBt0nw=D%EyAt5iM7Xf~5v86Eq9ohz*pn|u-WKLn2(QIYm$msMEHf3>ZcoV+ z7?`!x3lnEmx^wF}B?3iKBUaC@1>(wdHz@;$nRD!YFcDQM6wRM1>=m}f+uzhp7sdfZ=M%kv;mT5lK`9e zwEGw;1mKK=Vq&e6^L`@$pqh9eb}0T=O^gB+t0Am(gVa9s!CgYx86livSPRx(#4EG) zm#PnL%sTU3XaO%!9@QSS5Tgiw{a<3OUE`6JYj=rn9l&B5$217b%9|W!2bPgR=M;kb zjtekcoqh#$f)1D^zOv3aQ|)(q$wOf4=M?O5XJPHzZvk7keV$1ERfQoA<___mQJVfs z?kAt^+Z682axZ!enO3znt|jM89``{9L1cVz(vhZv2ez3mgax3(vai$N{vP=)6t23OAl!Uo^%Yc?%ms zFaWqikMajX2E_l2A2tSyP^K~K`vWmJ(!t;;g~9Am2@HO!eiDOy@iTr0Ai&#eB~a(_ zrdM*eVz!-)I04sd0qm>7@}QfWnaAzJg=2XWP{!BF6#;V}G`FkIx0(mt+zkfNe;WVs z55bA@aU%Gvl6cXk|rD*^rp;e+HtM=D2?^Y3y~BmVE5$b_zsF)ohfvLbs+1P>L=-V5`K2iL3hE?tAPX3=~1qg8?$N& zHI+Yp??7!*P|Fo4^2d}U)cxhBYD!1CG*oyUhfDM;@>6%?WT%B16Zn6N53TtW^-g}P zJ4<>4*NK9(zXde4<;s5BdU{u1S;I#)Kh(nCz^Sr=Bny9&RWotTudb=N!gtKLLhN_U zDa;J-IDgDv+zpJOOOHMkOE>FhfQ6Y4{lfk`erclrj^c+z|Kp8Pm&d_l>YXzM6$n&@tD%z{ph56o&Z>l z)#3%M9s*l6X1%%5ilyT)~LwGWtZ^=Jp0^FjVrAC^tb299@3n`^ze?V3qaJ!pYV}H#d#3LF!}Q@ zbQtF-py&T`D=wEa^M3KoD)d|q8;;{M#QRU&1cnXf$CMPN2XJ;TVVF95mD>o9gwMx7od}V`*h(y+3X)x=luHT?Vtts1>YWqDa{lz_5kM z0-*BQlIMRZU08(QDP71woq#UE%)NQIY204J<0{Ir{R%_Ux^Nb#)pJF$EihRD@(8nY_i{?PSw32I-<|G;~fPqcY& zF#&M)$-BFcOu+BxbL)T;H~|7LM=qSH=0N?-{P;WYr?fko9%AU5sEc%QhU?;69irsj zzz@mc8d8r1_HeCJkIrzdSC3wMxIWIu-5stP+F`wMw)Ay{5G6rVe%ei%rX9bN3qcOu zgry3*OK7BZ*l5}=;FF4uRm$Tzoczyu&IsNQEAL8JdAkDoOs}%;&Ma2e-I*B8Wr)u* z)1!~pPl1*9jO^}*mBF0i+Isy|`<${&2iB&U z%Y<=VGt#gW-_Vr-Rb!ugUZa(X88N36KQ;aohmKRRlEs#q{;a=mn`{ii(W&275_~Fd z0y6M?I^?5uDV|S8T?nr+avSSz#*b(njb^Q#5Pe!kT~t2d3NBwQvcNI~k%F|x`qQtl zKm_}7b~l*`RQ_}p4Scltt|+s{v5^&9d26ZVE`W_}bZ9**N~_+>m|Zk2 z%8IV|DOO>X)Nk^yguxEib{je8zNQR8>$kzeXN*o=duf#&Gm20Q8~38t)A%~+r#jre z;Dn&A7K1G-dIwt#<#!4?pAK|6`z^)7hYy_PYsMS3rmv@Hiq(hkKWc9jL8S-1+%5V1 zTv^t;8+3j%=4$rJ8cTQN&ZwCbT3ahW3PNj(@gozRXf{s4FYByU_8dwW^<6A1V*x*) z&1ps0d*SupdHi7J{b>n;-NN{S1hU2QwPLryWgQgU*=N*PVq|h*EP}p01lXPHEPdlM z$#h)v>-ChUNGyREC8uEZ-=m(Eswdil!24CmrrOxZ$stzXjQ8(Ss0xg80cDoK5>B#)6^0sYQw zB(eHj{ExlKXQk1gFWAP*6B~a+8->6bi31y>;=FLsSg<`{)bv20^&&7=3({;xLqnR6 zv=bcxikEePm%UaPT9oX8vFEH0(`e~tr=!@AMHXJwRoR#G%YegEnu$UXb8#w2q{MIJnBdyv)m!^;Hule&a@6e zGvZImUz^DoVhF$0g7{(WxNH4^6&hfyaXkDf!DIRwt`#;eUvOAH)IAP}*2)#_Zpd-Xa!s#p3GiI0g)Qq44 zpg(_P+0O=->^}M->04Lzk>FhPn9aR(XaYBwGAml=e>-6y#MHLV#oi6Cu{%5@?G6OO9k}_YVOAJ zz?LQeE;!4ikTTjUj*?M;DmVyS)dvcpdQu6+N@SQ%C;k8s3rSvS)N_gzK%)YYJ>SKkDl)#MGhk*xf!GGC4KZn?L|UA7q{7ApuG}^G91x!&uZkKD3tevJ1XQ zaZ%(*OnEart)0(9P^w=QQImUQhgd?!x;SjQ!u8G1{^Pz2>NE_ z-1+Z*q**)#xnzs@B>adUjHZOvQQ%9^=f#`wlI=~a%CaW;u$OBl3w*sMAMWp@xuISf z5?fAy-Ijq6+E4LYN`Y+v9;ZHytz1>DxJ6+rS1yW8$$9agh1|X9f)?Z_2KD?g|0-(+ zbd&DuQ^B5)%?x!HXD^6u;Tx2ou0it+^QE z2s$bpcP@Ef>$z(Hs3=8Rww~E7j06Dp1-`h9HF!%1BNZO zalhPLwcnK!u{y{`u2RXRIz{U{bQv-e>tVY{;0#AE_%Ik=8!K@`5Xys7pkE1sg+x%6 zbXb`Y$>%#1l84&$N&(elL(&Bi9qU@rRM4dQtZ;8;^)axb*IWb}F!)!Ez;c_VIRYO% zUPfR$zR4)7eG)SW=8MINH`imXBQHa0(i<7=j=zFT7@?BIxNQ^5st-H*UKOX4A&H|v zSW8gY>GmO70Q8%IpCf>OhTk};04X!)UkND_fMXiYC%}yaU#+)sn{GT4zkH!qYVfX_ zLoxqgEXZdiYQAT!n~sCGi0q)sXz!9oux@U>4+YWmSapFGURTKnaq*akU!eZXn42SlomAO!J6Ra@&M1_)+nA`I0~;S=R5}_?|oh&nJ!3j zIW0hT#iUM#VFrGpCfEl;b}iHGTJCyT4S?Z_>M@(BLsRtgjSAVh0Fy#dF-0u2srj;< zXY#JAiiH$CTNOR?ZJG&9Upg+uL1tJ17Yiw>w+=z|yK{C;^&@N~Z|qFcLzrzo6^!h7 z(~NKW;*%cFcMYjzaNhwVy@;Y~e+{M{C_X)yBdvSy61S=zXxzNv9UV-ikxCF$$7A2b zSQO!!s!FA1#jHN}^waRwOI_6q-%v+aWjA6Oz5iSNtWr4k;q%yLC~N@1ejJmP9fkyO z3U7d^3k%f3Qyeo?bp@ylHIa;%Q3Gkohmbr_YW0L_p<&Sw1-(Y|S~osONkI#Q*JFfO zXzGljD>L*NMJd*#w+AxszE=simrlRk)G`E=&FvXpv@zsKXZV@zUmsdjo< zQ%v|(?O`V;$&@T;&Kv1!sZ>Dd1GXgdAwiPHB#D;U&z_Wq@d;`4{u>Etq^XdzeO)mz zr=Y!So6%6scx)vT{W#v|6)@Iz;VGc6rEm@y_geCFZ#xp$dU}{B--dwkP>Xzfs8hZ* z_R6`13%$~xmTY*D1HGwL4UI295kxcE5D5WXeDf<;LX@NK&!4sVhvwGLsV z>G;_pCPMr`6V_4=!?;840$T}IdVLCafx6@_FqwuVR^N{QlT0R5!q6fK$!FIT)3HZr z1P{858pj4Ss(Ttpr(C+*=$UQ%<2V#}9X|a@f1E^ygg=h>$wcd9Sl4aj=%+y>xhY`g z+!unp`PZ2udv53NoAEovjFUW6Qj~P3A>TN>Ynu_0FcXHBp^B=Jkd14!MN8_B&2E&e zzt`5UMqDyD{i6}rsYXq53A>Ngi!nR|=4uc^Lt`&j?_;@F4T;#>wd7er-2KKAQW53pj7oPX2K~fuJX1(ygGg5*4d^%~d%xftFjf*x%?J@24HrxR z1}?n7>@wgRAf1HP35b#o!URQ;uSe=(40{rH!g;LfGdLc%bfnsFa;mDslU3uM+3s8Mx zb7U%RzzCwVH>0uez-W*ke)C2JOgE(_Gv}yR5GS^DOJyga-{Sv_RT2ra|{YP!9YKwTc-96GF{IbPA%$ z;3X|7PzY4!%|A{URN#wAT;XOJVlMbLGSS;=kytmalxY&)4177Q&I=OE$DX28gOwAX zQL;r9S;-;=kVrT^%mT56V%FdU+W|nn^+4AZFT|JlBj`gmm(3zsq*=FPr62#hSl^`r zWygRn(9(i}PzSuu#Qv%E`~jj45Opg9msiSU?hf6}j0!!+3Sug*wG|0b38EH#$g)eMWmka=mPNebI;1A+dQGzOP zhZ$+ZMmwWdMkz*bD~W+o-Huem!3!jq^fc*&o>o1z!}{a40gA*!^fxu+yS4HznWUx5 z23oO3TcOX?lwM5Out7cYKmsRU%$7U-Mzl8ndnqT*;7^GTf@RA%y&MC!0!`x!>)2my zfkTbmw4^*3HQ${q93MxT8K*v0WKyLtwlX;R!@wPVN*&vnWnz9G#;@9B9QW> zSdPIX8V`OwP+0EA*@g-4|^rJO)@jic27FEIby!f(Fjc^8WF1TShVq z5oZQYS{MmL(DC+wZ}d_yIfAh^ae&r-9>MR_SH9LGgc=*l;6?Mo7x=7X3@B2kCPBFW zQT}42B>>|#5@@(VL(e8k`aCPB*J8;iT<_O492WIzKE1r$*Ws-|QH-%MemRHYh5u=4 z?Hb|>B12!NUvJm+PJC1Y>tT_73X_0t&nY)iHi4g50!JY+JM@+3C+EWC_HI_Z&?5-j zqG5YdG&m9yK`{snQ3NHi=c5Q|1(~TN?`k30OWR-VQ!_2uhO09`1Gl=+O$g=dkz`o` z8B+-3%PRvb4ipH>*XHNN;sF{$Bi|y?K zLD-U55RQt!g)M8lU9k`+5l#Y}Y%mG5BqxFPe8i43?9OXz5h^rhA%{YAAxGc^9ShZ-Kzs!z6dQfgSf*G-610=v*$?f5J6=N1$TWg`3OUpCl5}fG zY5axQMN}OqA3R{IpniWLqlgfkXb$mvzT{!1Hfe!U1xUkibLzyx?jS|$`D1<_vP%ab zlpmY;gO4!H?C03)8KN)s>r_CR{Dsqs=o8Wk9*ejKAAERb!2|@g(<@>KK%2N2Fw&l`nAyf7Da0T8pNY1LUew_2Fu--rH+rEUjr9e~4aoOaz zg3~6FM9rWK6*Fq9RLnRzb26u{N`;I=fb$|{j~@y;2Qpzk|RW6jZq@ zkOq-fN~#n*zpfO!AoA7Xy}PcLrA?*gLHX(g2@~2SdWBl1Ydx!zHoU<{dfJyopDBC` z53D#O6++TW3P~>&-dea+(i;n#<^2j5$XgJiXZZHhX6e?jWv;^y!f7x%Cu zcdR1a*-N&ESl?md#MvM;yPh;-qY`El)tVcy=7r6N2pf&WyVR(ERnT8TP;d{|XJwY^ zCF9`3i^&mfE@8xz5{Q{3N>QR@D{Rpsa!Z8z7fz^CGZ7ESRE*!eOfbIo(}5TViE(1S zv!POVvo3#%$EQ~(+Y*@q?CkzW=u#*IuL3#y1>!b=CsG^CKu$2NsWvwVx~pFWV9nee zK+Y>35SGf_7KzE!q8Lf#^q;MxU_)lx%m6*{Z6B~(u00UzVW zk0KbJ9X=QtR87z?DgYZR`AXK5pokPeJZ{2|%oVj;H3`SA=OO0+jhZCt#vambRRU~b zErFRPUt2R&@o5V~gUhkwrCd~%Yf|O-+PdjN(Z|b)I&Q%x3H2H9&yNr(_oPu&(vc5m zaIsAj(eM-Bq5Mad@~y{fxhKtlfm-X;^x0m~HkA?7CY5H~MDdoK>Jb0N0?egA0cQdb zKcZGE)ho+w1yM7`!j}%ax85QQNeW%a97QEzUq?Z7Izq4OVq5f^xU#cHOR7pJqbJ;# zQ8T(FGd@=G2+x6)sN5&Uj#@s$jgDE2CV|$km#ofzJL=!590~Tq3KIm2P+(H(jVc&lpK4w*a4Hc5JC|dM_Bn_e(<6gSlo)1SCvM+^OK{# zRp80;1!7J{;Y#4>@D#{RO~GCg`C6&(0J3yYWe%@ze4?EUcV(U#+&U!oQqCa*;^K{bNFtSSJD6!@ZLtPDM{h2L_a4CF#7$c1u{>n%-%Ldkw0?9z zND!M2U*E6Vb>^e=w;>VW7$zz&?>1XZsbuZ5FMT28WoVtWT*XrsUYB6~R@TQ85)>bT zdbirO{HJAisYk)?Y$uKFE}>8dDj+o}o{;Uz1~=<%ZYNE%k9RYl&E9r|b|C=zRyG81 z8U|`q|9u!UC*uO_AuaaGe$toc<97*uPky2M_#}f>N^^65!JLKo3ZKpd^V#2y=QoYt z_LVaN$qeijiq=0IIN;ECBKTR#KGkMqj)jQrNHP{Bl;@tC%Y5&$b&ze{%0~4=BR1WDi&9roDVJa!#`$KK{raK;)=P zLTphG(`<;p+5?DfP2>ec?UY1_9%|((I<1D96vaO4!vGQ;-}>i1^dGT1hxxE;z{Pf2 z&3>AD?UyHN2m*zmDLI!eC*5$CyD#rA57QOLF2cMc?N2Fsf#ck$jcgB3jjO*!hTIO^ zW%n&1^A7Uo+{Z$k!=V^UwJ_9L%obt?()|69RgMgMWp*>#rbzdQT5mlLz>L_ySBTia zWMn{vo^WrT0!(e2qILUbI*~b&*X9OJ=G;abc@@fDb?-lAFNDJpU|N_M5gX{rkpqoL z8AL=7K+-+2dV8zL6bk8);ynPn8D;Ffui-YnwoXW}J+`k%IO}1PGm=BGkl^Gru6E>D zD2f$^|EEA#3nFk75$qg>?r(uBv{t-tD_Rg;8T@*0FPsfCn>1$s1>Vq#H*>IX5`%vZsQ_J^|0LqeRrxJKKH>9cY$p` za=(jHCt+D10y27am4L*wJr6DD%gX}f_*sy>=i`Q9g5sND^iKF2kfS}cH&d?mUblR9^kuL$~YoQH2-S3 z#YDQPbt#z7zUDTe0OZ)DAH)<2bq%z@)|h-bU^cnQqmZaAD7)=<^MAGRU0-H{1=b+MLTMQ>z; zZw{Dc*}e`J^I-dNr6xx0Y#auM4@0ordM$@m=b8#0a$nNkP*(14c%KmTWl@$e7F0H7 z9ry=CO!ndtyWP_^+or4ssJ7|F2!osrK=ZVYG%i~F`txwFMjQ^G2T)MHtQB9|>3@wQ z!YdKvTf!_oosW+Qme5HYfL6N|1Rmi9N1@xWz0 z4e{zuSKk^eJkcuDj*Y|6M8sz{E`{H~b^G@Q_22A|`!#Spz6R$xp7V6yjQAIjrE9BD z0?nv?-EIb*9Eh}eY<%@9WmQu)*>zwH7e_Q&83{4j@IKDVJ}hL3d{I3wXq*po*n;f9 z)GuqkkKI44M!8{hQQAH5d3QI|vk08ct~mArU)}V=A0Ab6gfDbmVcL54VuVWpZZE;7 zR-5$o6?y)?je)eU0f7M&eVqwjH|C2tU1I$%udtT$| zV&3=$*sHA%#5}gr#v?2UcZxeQq~rU8I0_)*%kkCMMgmTLVe%KYb*WbO6oEgYOd z-RjGm-AoCMSlI9e@#4I37tR~^z@m$|mG~ch>eHte`t<6;Ouv41VRjI|JVE`s!hD3< z;6UlW+BLIgqp@;*jp7544zbYva6!&F3Z{Ysge|0}t?S$ft-(eL|5}&g(Y@EMSKkZf zsk@CZfO3wMHuUA0_l$H#4=>10uSOWtV77Hh-jG*g?Mi*@-(T0i`^gYXy#WFx%Go68 zzv;pw1q!@Q{JhEoC#LFol1wvmsvk;t^={*; z1dNlhOL3AX7U@G?9L7M8gL7Y=^MpN+!Quj?{v+7Mk4N+b_89g_JTPE$_V??!AHah> zfJtc%3^Q-)9L90xr0NuZU_16~5#Tzy96VEfP-E5ww}Ay=f&aJF@DF>uH{uhvn*#bf z-Pu05*=h1ya9+n)4C-Chkzd{o2p?6CWdLqpV-Uve7DP%}!qv2lp?c!*;7pDD-=rp3^DY=Og$)Rp@RM#VUwwYJt0gVE zNVuzRBl&Q^c+L6OsW9W!9U;cRSNQu_{Dv_wON@GUm$IAwzSnn+&rlnA$W=WRgd<(F zFhb&Dn=eB8!eyuuSYP#fh4t%y7;@AO)?#+0tq5S4eb~HYWPshZ0Sa5UuNtck1NNuO zE(L&8n{tdYcd&KEFxh73Oyy*5$)pg1-FMkyMTi&g+$};3kSHrj-lRk+z+=BdLapcr zh?8Rq4az~=yn467jZarZ6r5sO}|BSoB z$dW(*u%zE6#91%Cb{`%v>e~UuKIIYr1zrL|0U*#nlX<6=QY+}l=Gt6v~4L7o)Dr{*IEaX!=6W#2U`lT=>r+R8t-+EYJl7#<+f2I_G zUnjG`b5=o-0tqiq7GOo{n}7yPKAB6}@hzYqj6EVEiajD59sxmeZI(oe28<;vgWf4{ z=gxvYH_Hn-hM0`A$^-hT5bz~99d|{ge$Bj&k}6~b&D^{_p|8A1`5&Tn(o=dJE5-Km zCMFQvNK&_#`3#@Hr29)o{D**t9f*ziqL~Y(Cw3vE>#<&E5vN-Uv+xAZ7jOnfC)@qHm-vBAfnG|C-l z!4vlO%+R}!Ey#%7$7V_7$|kx2;|ZInteu`~*KeSzAX|<q!~4A`yM65_X*&dcoG!b4 zFQ|o2;~xks>EO+wYwdf?Fb>`=_}b6Gn=h>GN88y43J_w_&%v87EbmMaAgl=j1oI2| zs$4x09-b2CSgKQueY~-^%{IDt{X`F`y#U+b=vt-fhnFYb7n&jJKOC@P+MiQ%EiT~02jjRud zlFh6K$MB4Y@UU}GUmft^SI4zNa(?;W|1x4mJ7B0?Un}-I*?=bh`*Ameb?jC7U^RP( zvPSi!ecBEClC7+~ZX+kK{!^}*Gi?^sk1q}pRpiI~{SbbC*EzQqwnA-qgFvl(GIDYk zsmXQzEkjPOyPDm@ZM~!q&)`d^1KM*76|_S}4h?&H{qQ3j0pffc;>$Ph0ef=tPD3+U2n~JVFLpzJ35!qyk7upkhuP2+ zJdCqcGp8dTl$7mgVlSEq-D>6pHd8;>6aPL*peQ=9o?kijEQ6nX3PGEsp7GjRpvb?F zL2|zAZnzft2G?^+whm%GA~4R`r0K`RPRdSQIx346W>a*Tf1Lw!Izlv8kp>b0-8%2Z z&(SsnG@aVxj+CLx8_PPo-$L+bbO7%7>%MZBHY|I=rd3{lTK#R+09utAS1MwCh7KOw z2;9)6U*(BgiopOHw6R0e! zQIIOkN|G>+x)=slV=pmWBuE}0^B5=PlkSm+!5O%88v#b$p#><6y9lV|VRheyz%B53 zgJULatg-Yg%{&G76X(2gBW~(8BOzq6uFl5%!%@q>kj7i`+E^MsSfh!Ek@G}|(*Z1` zo8w=B^23e4qc_>4z7xJ}DeUsAKateq5gaHxNe96@3)G8WDY>)WE~NY4+%D1a;nfT` zb9gtWr>DhAiqhh7P9sT@cwUBW8=MYXPLg9VwRfSAak59PW`tG#4E+>~bG*0F)=S{1 z8evA%lpagp%f{5|{g5z6u~dT}IH7mo@0u7e9du{>VBg@u@~OjjUtF$`jvHQFGIj(0LNGfiVT@sE-Jjis)ytK|0b^RgI1gvH zF2+zf8NNHG6no9s_?Hipsx$zgQhQxGHGSpSNsut zK!1`#JhpHt-zZM~%KFFc;NUI}3eF;ilJoi*1f zO7AGi1R-5fT=Wgw!`ll1c#)Jy2$PO|Nx1JNIUek9oHQ;lb%#5$Ly)T3q>smiOR*V4 z3RsHN2C|5nww9hjaCT?ykj|n=HS?;+62oAZuN9)uW$l-Bk1PIbVXeGh^#7EGPXQy? z1^%@lA9_HA-r&?v-3=PE!^jS%h9y!Mx*!0iUQ+~!xCuu19im7-#r{0Afczil&Yls> z)K57A%=#Y;h5cZSMG+nIvSWZaMMxSy2U$@kgx$=PadSpCK?GtNR8y(%j)CAW{Icl-$a(!&*FXN1xvqF*9rF)$d^Y1(Mv%dKlkS9fR(~!UZKMcVemG3-k~C%WFVi+24UQXBodfp5QPi zy_nM~T!(py)saHqq=WMq(hw~Q@ts+-2}3b91JY^6Fw*IqR2?GS9gYbs(bLX9ff8OA zz9x&3Y3q;-68{D@CI)bsHAo0zi2QtXzajD!Hp;+@UEqHUyp3^C*6WAZjl2rR!D^Ps z`xA3)5EjP7ogu-gZ&v4Gy&XjsyHA7MSjClaXUH7D;S--mBA9t^j_Ox!J*tgwLKWx@ z_ced+-%}r7mFTHs4o&ow@H%F`#O(yqRdPFl!)R9RCU(>8Y|Pjm?L6FBGoYsm$Mx$e zYYx%4i*)7`|DzcmpE-Ny)D7;%qk(m)4n7K^+tLzzG#==>s{ZZp(faI}dQOBhi~ z3XouI56MTbckF_X7Vgy#JMz)vE~q#njYL#*IjTP73si1agujqdeM0<=K})-qk+bG1 zrTRq3t9^NUH!OF>KLv&mdf-q>qBFQ)C_pDsm=*Ph*2=cvFCkduR_AyNUZXQ}vif!A z>b|=P7Ch8Xme!nM^G_1Ae|Pw2AEKmCoS6^QiXAbKJ9A3>C}J?2c-ABwwV(}cCs{4& zGgVmGz4#+xI@yu6>JERiFTMpYFq#JFvoo`!r+DIzOJ-ZK7!So_++I3_0A?86ZDcjw ziB;CM*`WD>l8^iFqR6Q`Hx93P2kS!Y;+t7d987`<2J{>lz$-8or^p=abv^q0Yj7Oj zfp)fNFuS8c7@nZ&Z`&zm?6fW|ooZB@)6W`Pt{cKK!0?okR01E{WnsUNx zmY&fKPvpc)%7IvVy1gi93ndo?zu5@_^cxw2*E-LkzikxBX=#qcEj7M+@=w`E_o1LB?nEGjrH=vKEjzCbUbwhgycNE7jrGdaOn+XJ) zy8=rTtuFkG-^`1ol{Ns4f~)v53P3WYaKy_PfdqJo-~*q;(nrNdiNRs;Zrc`7_b%)@_E8F`5Rg<}bQjp5Y>~45h7m&}H}Ohwy7KQK65FomC)bV} zITGQvWRq^`4{iJPBW_YEt;=j^Wt;o*mX92i&E6^u?Y^nkIc(yg7d62De(;-O;Tr+@ zb_;IJ{}J5%|Bv84f6)I89WEUb?p&XJC0->%WmY<&GUcvUxP|-`y7eaL)&T^<4CsHc zW}J)lE7vM;r|AhoaQybSBEx&Y_mv!c2#ot_Ce>LP#Ww5$#HFl+r0=m_!#9qR0+m<7 zbk=R}l-YMxA=wuP9yL5F+vAIxzGMnNhMz6Qf-Eugm7H4UKby&=t% zJ!bbLkV0(VI9=(P{6f@}mYUL1Q(9_!*et$@%|J`#))Z{&5FxAnJknBrH`Xk{<=2u%r#pu5-w5YFrGcOmemngsb{+=mLu4ZNC*hz;6Yb zNY468RKpHL!@hVf4H!9ju{$Zg9d_mdWWL$XyrWi0{^8n+R*{0%g`d6JH(-d_?Xg8f z-S%?iOW7jeDu=@qvciuo0sXIVA!`CpqBmDGq-+lOjddK8esggz66M>(c%fY{-;MYp z3oWSi{PXMUdhip+IcaggIzz7d^_#b`6tLWkmk3(iZFxj zPEtC)47o8nwjdi+#qE+T*(u4gY<|mKb{CULa^W9jL`a@w%M(se`FO%mV4c=+58|?I z-dfElY}lB)A1`syb0rISBGr;lGzUBD(zqhk)ZDo^`WwX2-?BM+4M4V0k51L`%Czp8Xl4=7HL0(c1E1821G-m( zNSY-0^NyV0N?RB{Bh65^BL+_5X#wdCNDR&K3wy)b_LBI8Efkii+eqfJCj~IjGe5%C z>*b?l8@7eN55aF|8`hpx9D#sQ&<-RK^B8=?eXe2$PQOVgnO*hgMJv?4;CJMajfi0Kzc%qFqyBu7)4J# z%Z||_wRrMAg;-|mZ$>G<`4mU9ebAlr_SaVJix_9o^$eu#GuCq`mKhKJ2Z`VKJ*n(4c}fqD^K}5!cV5 zH*ms`o#LuF45LcDmS+quydJ!XZ0EvZ5Ep58=XHpS^}JjOShrmSc7n^*jdTIrm7@Pu zJcwZM%)M5HEgL=mWb{Wf>P@)nKrq%mq_h*7i^{it1D*=HtP`!T@#9+99%@<=UC@e> z{DTC{=yu~%uYI4|RtAzt+)3r!pEKZQCxW#;_&PzhLDA4HVbg?q%2-7luDD%KT&K~T zykobm#h?QTFb>ReWWe5^Wo&`6%-wIDvm#>I{L_Op+>1jD4alj5zs9wzm&%M8>;&(y zoVDL#`j7D&Yq4yN~pu*d4BXs|BFc6>?jvQdoxh4k%?U*#2 z58P|NJ`v6ExECEEIkNtC9Yxl-CLAp3+eTxDD!HTyOzzk_ATWpum5p-_G!UGZ}`R^gt=%CPq!$r1}m;NoYi{ArtD7iCRImP!)g z87efLAqp_QTad&eq#z6|b6aBRV^PT+s01ic`an^Yy1x4GZqA{61+8HUlUyO6JJ+0t zC!nA)QPMYsrbD$U7GayvOg4(b64hIQU%cHHe~(z}b^1-D^vdjjmanU{z zTUt6NqBeTOE(S!G@};T-WbqOQeHIKl_TIB}1*mXK3e2zLFa{+V1v)lC!W#G!B5dUR z?ANxXg3$W%nl6JmEja{_k?>Yv^KtG)RGij~C)d00+u*MM4~Q10-lUzE$`}co*Y5Jg z`be-$^y(!NjPJ*5Y-Uv2>y^l&4k5kC9)t2BinAd zp8urpWHa+!ZeMC?y$OE$G)WQKYM0jwDW0JCqnGXL?s$Q{r!cHHGgQCJgF<~Hb z5J#|O<${*H`lB(Gl*-Py`>b@=#YswLpw+3}ZlBZq!yhNO;>V#PEa_ke7IuZ@lJ?Bu zkxg*>|0C{A;G?R}{_!MiK@4|N9Zg%SLyb15wLz^VYHbEGa7Sh!E+8&wl!9noqGS-Q z$k1doH`lRtp|4$Hqb+@DD{X8=JZjwGeQb-}n2Rd*|MngcREM z^Z)1bftk7YoadbLoaa2}InQ>auZbgIVfQX+bVDQk&cvcN=m0dpav0#ys&Hj{Oj zbucCJA8;eZ(IoX3mNnVjh6EW2-r^gj4SoZ%$Ox_Im3`1oT)-q_fELk08y)x% zx&vsJow0Y4AHDK%rctE4BHW4s{SNzqzw{|BBi;coc~r*_1l?tRnNVr4eow~kk(q!C zVQP{g7wo79u;uEYB)?g{w40Fb5=KXF$d|*!Dj*V1{tns{v_LP1+-O@OHpuPgxjn zo&c$6Cb?YJ7RCgGNZLQ0xgd4O6tmG?aw24YnhpPV-RTZf0qRKmRNW6Wtyt(X!^kg&nW0b`B zSpl*t=`LbS1}YPs_=#W=tu)&-^u*>+z5# z9V{jV6TyyZ_6dUTW1V2iYOXwY1nV2B`!NR;SXN4}RZ4GVh_jwWKqlbTVG^u2es!qi zu}u`qjQ1J_US*KXWkO5*v%VOA&AY0?#gpDnSYR!ih z>zTEB)ibf3=`T*$J+Djcv_&lE>IzaV4Zye8K_G>~S`=E|E(ix8)0_KrNfHaDRG1YTVvTMg@@S0AfX6 zx~Cvrnhjm!@IQ}7jv_NS_}R@Cuq30ytFv>2tCQy;vQ9Qc*=+|Gl@I8=N7c8;-K_$w zmBX8`3rbQEy<5Ff>TjmMkr`Mxx9EW!H5s0fM~ENY?zwQ*JpwDu&EVKdt|nzu>0EHH zBJL?|E@l7fKL99!PS(3y+%ur(G(JRE;%kUJu%0*ZzlTR>Mc|^PUyWV7OT;%E^=M51 z@$mFw{c-8**#oDiu}0j4R=-OmJydv?VC@Qjy=_oL;WQZw?Gge(g{N4daSdBgD)C-? zgT$Vgr8LLyU9ObDdD;QU>J13%QI`t*{+EL{l&4bICCj6*VcuZv`R(>%`)Dr@)o zAZ%<6kK3THwW^}#{IdDlwdj0Z=T5D@6Rp+vi3q~I0KXQ&Hi8@m5wuqE&#BsV!_Sx> z)UHGMhAwpR6|2Uu<~Le}H(VUj9{*Rg@U!r^H_u9*@Gn-TL*n?9Zif3KRU5U&dFWlu zI4j6Z6vH?2j2W(KDDuVDL<*rfs>OMJ4~-%v*v}&HU95a>?R!6CN0a9k>d$=;uIka0 z_b&vDrrDtUa1!Qa;&OO75!o5s-7`Og;eKhpc3qJ?2{%3!ht=2@T!y$wFvGv22(a8e zC3)!Ih~KF3PIUYWQS)3l1#SvzKUyC-{k-x@?T71wO|LbK3Gdz#&TN`tocDBpD5+;c z@X;g5SUT|{g2@Tfe|cC}-G4Zd_MrV3;H2q-|r!g-i{(oSW#YMpkQ3cWqFQ(yZw0!uNP zX!2lRIC%v%%eclVGiiHGFyPG~|S#>>{u)evOe z3HRx{U%UQWo`W&y1Iw~dt5C~St5EB#XC^iKp|-N5xc1WANscECu^d7%Hw6SpywCJ1Iv+SsN z?WUG^0u}eskFw*~53$2)K6q?T_n`ya9AKmE#RnX015l>)@vCH>z!w}a5tR0K07a*f zWCW2~zVj<#+wJ2xP)|M*J?x1QY6Eyy2XX^2y9(?Ifep8g8N5$s6d$t=9?ORS!i)2D z7MY0urdFi>%oAaD0x_@xEx|NS`xw}{AJAbjZ(!iS?4XZ5Qv(a|t7{qHz|sJkGcez! z)wmv_fRFbvMxv0AKvEo|G*cnXpzl$R5xpI3kXnVnMS(f9@gHo#D9-_hDpKokeKk(a zBm+Gey&gU=8ep{Jr&e0n9D+K)QRR`utrtGUnu5iM1Hu(u_|SZXnh#lE#wYG#rSZu& zd`P&_g%E)OOCBQ^Hs4|@I1|25J=FVgJ^>vNh&`V<0nm8Yr`{1OXjKlbr;C?H4EeW} z)6DSiAI^8xEMlmms41#v9UI5m-jPFLglZKcy!7ItO0D#~q5v`<6`_a2i+C6|Y%och z98y2UDb+!gxtt4KGBY^1nuLh8vx=LMybEz!7+C5eq9})wVnLXTtDDzwsp5lc70Q-| zF2{hygVp2DgY}tH0$8=eON=0N8nR+iD*-is%`pp?=lFw55AmSA&`4Yj;Hi1|F<6s@ zXcFkF#A{_bv$nw_Bz@dqWxwz_agtDFsr#`yQ5FcVWz*hX+N(f0U6h957R+>Gg+xaB zJXDZH;Hi*9!D)_f)AiKYOzyM7&V9VPeSjKk; znKn5=OGQexZe%c@!yFX*9k2Yvdp!rRUTl2}w0b9$o}0XNhrE1=bch0a$7~KT6NSq$8Rl`6%a&J}Zc)C8qQw zj4{x5p^$?-IIWw4zvcvIuq(j{BqAr`(|Rq)9H63khxoy5*Q;kuy_o)d9%r#B5qJrJ z?jTraX>Smsj@DcA&hE>k9s}GeIO^@K?vx@*r3PFAx_=)gjuJ4@Og1H&C_)ZQM090maiFV z%h~>8hc~y%a?KygE}@yihGUrffw|n;tYgsKeU#qE;~{50hc7f7y(__f6gC`Bgb%xO zP|W0a@_@*sMMO6^K5_<~Rq)c8FJ{28xIUT{hVt8(NnsZzg{yIc;)akdjN)uZJM&EF zW3e4Uv8uy|*tI>wc>$4m$&xS3pan9Nv6}u0hQ47WTEUV>h*u*VAQ`!_ak5f~hLEKF zm|CU3n(ba{kCrRoUR;|~XSt`&jv2PjYv48aV#LpSs0go9f;7AtMXK;HW@avQnK?wg z35d%~EWql~jWTG!mGErLMozlR>GO0u-b9kCXhm)*3O-5EIy7O|N=U6=#G9^>C^O>6 z@2^7b&|=8kalFSZrv+W1dKe&l_y+V>69&?r?HTzt#hqIGgn}DVXo7D75!#F>D33*tWkdi+6pzK9Civ{={r92{$$gPx&*e%%=$3{+H%@M~A zLFf3zD!J`&C>++*vxOXaSF4bC5XyWC_{B#tm*aUy!2`H7aumhH;YWotU2yYUi~`8P zS>0ZkdSigx8@mu3doy~V7$`IHVJBgdPzWtguJH;jqc&xQmX&<(3N3m26n5;?hs3Zu zpEx?;CIMH8WrXS}zdQ&yxa=vp1p9_}$K`YW0S&~CZC)x7Wvi0<;rW6Wz@CkKOZ~cw z9Wzxb0GMt03p=fr=q4~*pfwfgvHNOju(7dT-YCc{L-oRU>aA7v+-KP>V24QRN=PDA zGKyCX?z4FQxV&Ed7(Sf&+jH6wGRhh$2(C5*&^=3m$C0K#pvNMktYFvC%tADix|_p9 zrXth?QTpU#c|bl|D+$gNTf9~}U^5q7sLedi^3Irt-pph5IXgKK(462nyAm8`cATXc zCvBx%@!mar{ZQ-|n!79g@pwqQ4F#{Il`8>z8WHT!ec?pe(?}`Jt%893aSjC%TYbIt+o}I{`t$TQ!j;_ZhRcH6 zO~hCqHeNysR(uvv?wyIoPZgLEa1!ei`U(K@St&Zn7F7(c@Z zQV7#uq;by}EpZi|#3#J~CBUX` zM(bKa3-qczT4Fu76a>sBqgO_ax7{g*+mjk%A3Vm>pF`IXoNl*BQS~EMhD#2DGs8q6Z9iSnGEVB!~q21L+cMsL~+v6$3J4n>s`!)kDccwr(TC?uqQ+ zZ>PV0KvmvG7`SxxalqqW9MwDVsaN%DiOtw*Kvp;ehI%9m@c2+C@?clvcWvqds&O9b zZrpRY)^w;#vJvC&_VD2*4h*2r+cEd|Dt#F8VpAE`hNykPy>jorxOQ*GnQ7?1qEJqT z0uW8(=m^|=s~3z@dkMg;NWY~x~S1(od?QADNH(6hfVsv&|-XL zk8~40>-bO^ibUU0kLl}`XHzJ8b>gej{nF{sDL`qj&L^_v21N7fVN-Y;-~ImRxcr(t|^NzF)jZ$lhE| zoGR@mDL-GeNh!XC=Y=7K8*Wq>S+S*6z6j&HAmsqJ`Znu{Z_#~H?Rf`MIW8>iu!cjN z$||d?wP5mp1}}&1THgcR*>f$UJdmDYT~y~NIT{Y%B@|QGFxJs#R9mN^iMs|U5b~rN zOE7$Yd7K0Qe=hu_R1-CxlIVzM!fW3h87_PgBmhc1KM*mlsOTDX7*4;O^dFa9ceCb@|r;)`?fLPQ%=b`4>lyJ~EG}@vmsr`&!dUsDt|!dhrN{$ZAx@?GAOg zeP98YIkvxQIC$Z90R|~=J!}!eI9d6y*g>cqdn5HWm_x)^!ga^zSa*~hz&^nwLv8UT zm4`LZsBW$QCKA*jew8nM+^zHg3X$Vf=2uO25|C}udPs~HB5mD>q!1-1M?8|2_E6#h zls#kkBOJFjd2MrOv1DtBs06=I-3o&@*YHFN@`Y>iPV4MSNLrnIU@qr#l#*W*MxW)o zO?U`jF(MI%3ncQu=5{*qk}UaXJfxi`kCB`!0bo|~8Xowg*fV4|#gOV#Nc;it32C;m zU-eH{9n?D+WPFbfRbrU3``WC25vMKi@W!>*EmD)p{Mkml*JS~f6bVCt^kVvL? zmyj3qFSHPXaB7JeW3`SC713_p&QKhs|5rzJBgw!~H;JUAi+mb$rbv~DPTj%!a7o5@ zoZ}zd7wpw8Y%ukHf<@YHejxr9AZWiD4;7Oc2KS62fG3M=rl^dgO)OcwLNdAvOdDjk z)aOu5bF{sw?SFBaaU z?qyZO0)Nn!F_a^xrGe;NA`Qy&LXd=NaJgzQDZ&M!bl70-P)A9F%U9w}`s6{U={BIo zo~FFI_oGv|dIVX#=gm&R=^RHZ{_xU)O$9Y(E2lQ5=e3aZU-^BpN)b&#abvdr_^|AT ze1d8+j@&N)8gC|aG6UJ}Ef9j*@H3)S_lOA@tAMz}@3r`c910)kyI;jOXhmg=x>o%h z0`G|kJnhB=_24VcP(|=^X8Jb6wy^7Su3)YX%E`WkA7i*Ln&vrouXwo-S%<25#vL zE;D8CFt!YpN@A15E0R<0gkX_RDNbEW$p%>*WQ|{oXS3jSvs~7TF)N@1tm%$`m6|7| zMPLF65CTdk+5j70Q5uQETyf0ZQB#`g#6GCPl(>0giZ9hm6O{?JB!VdT4{xxikOxnA z)rc?k_`fw{4Z4deHV>b{e4o%E#Jczz*%}&ZbaPFww6C00)Jn%WTbMfSF~d*Au3@OR z_TvE!IYPf}OBSs;mYu*DPliy_gdr$qZ;d_?zs*n}C3@aDq!R;lL zEg9>SV$cnqjZ9zE96G8ibR>0o7GQN-!v+GlU{4#|QNeuSA-^J12_>vo5cAR(RHS@xw*EW0s1xs|}Y+nRP zdpy`S3fJS!;puI1L}HlvvTfbKv`ad|8Wi>X6?W0Z`sor7itRSpe3wkgS&I=c7Lin0 z*N;QO-yHbEKvo3E9rcpnrE}Ita1E<8P+x`vR$JE7!PGG!;#w17fKH}`z{5{w-AoKI z%0#M8gEP6A3;=}n=j#{}1S=Q4CBV!0&6ERh99b@w^LeKb5J1H-! zxS8F;)ZBP$Hlldp!W^rVuK`zxeTx7=7C!53m?b=uQzd(C?2FiRDTHFv<>soDPJ?D= za&hXHvV|tf@Ju%*gOqc(=4l}4VW}l7gaA}DVKoAL>Xs~_(hWT?v4Gc*k=M5=sOlZhx8^-sj--+5Z6@Ghl53S)t=-bI-@B3IEwNw4wd*sQV;Ir zIR@)zwxXm8e3i$ha!FH8SE(x?Dk5tVwngX>;L+rRXOoXc(K)l}8cEMcIz|H7tZd!! z)jleDrxfEqsv;?ZMG=lLr2-p4AlP!7k_==0ur!3TCZR~xXUvSG`UeFHVn>tFerw}* zK)D&7qLPVDyabB+AEAtEFL&2P6qzIp$sh404DPP{BVRKfq;6GkdO6x;OfCIEGen$= zGinS3^ii`yAu zLmI}xRiz&6w3hAh)(VG>hIuwW1PFl7_I(emVrPE-;KRU!OxlF!t-qm1SyD)}qdxcw zM+xqu^P@D`#)qYeL6JMy;JXqWJn+HMqa_Z*`t&fQlh`CQD@au7B=!@3vyZd!SF{rN z`zFCE{Sy$eSbnK9De@}_u}BL*N1X3+a!Ig3;9!&k@PYru@Ll~KZoXxe#x;Zr7lO~r zRFzmq*-M)MGydQS;A1DR-prY6{0vDXXr%2J>%&j&SAE*|-a)CHYz(;V8T1l0sh57KQiHnVC2}&xdLp5CSC9_h_*6ol-cb> z5<{(Wr@QmOrI<*fA5cI*bMfKK7QBS;O9?NAlSpD{n9(+7kr=&lYX;r{BGZ^ldZ0jV zgAQpWbV%*GBqzr0!$&W3lY2x8A;w7OaouM<{^5#(eJ1xnItflob@QJ%EzB7)beGhu z{FXe`BRvS0maxB0K(R*8w`01A-Rq+u+je|`)WW@nQwIKbH$K2?6nDX$BupY;OhXVl zF^4})4uwhXb9w3+S)}4s!wa*Jk6^PyO*dUhuUN(rE z|B&4vB&oOc+h2iOyt0Q?)#N4N)Irs9;|`$Jzy5{AE+~OpHMpv#5WY{r{7S5xjsHB0SxYc$YMQKUin_Sj^QKXiY1~{#?C*ZlapH3YND{-7atI%hZ;b zToNEVQhEUr2yQxc^a3u5^{OIK2(T&ZzDp0a_fy!!*tW3&583%QfQU+FAG?T6*@EL*tud0@l`829?Ti_`KuZ$;V%>iU zv<7ChttGTF&lE<%)3Gytaw1PKw&NU$Cac7 zOc*cv6_{Qt`O2IYz|>Xas}{dcHnnLWN98%=BUMhDh@ze7rfpxwsSgb*MYAF#SWgtl z3IVB9tc57k!@(Ir9q)-Jc(e$d(lAIoSdsp!J#f4G*6W}A6Z$-Ldd)R+{T<`COQjm9 z?6)nmH_w4w_bU+jE}>SoNpjH=-;$A3y5}VxCOhzue{pAqk?dtcwwv%uu%{DQcToyk za3?=tZs$Q)H=-4(I3A#s&NgtlI+UQAuQs6hW>;#Z7tPj6&&BB(_$q}sWcP6Tk+dC4 zI$kWG03Hk78bQ>eB?`J7Dx{sBE82w_fz#HkNH`fqHObv;X=2w51!~NB6*Xq;gghhU z6+n|(x2Ro^+T=|AOHtDq(ygA&$^pUWYUU4pE`HH7O4m0heIt%kJ#Y^KbSZ`dVg;lxN?~+GQ{LS8 zQO&11W(oQaM0BAB2>z^E-6*OtE}vav+;DMft2CxY>jHDgxRm!!PlDz0avw?`>OFN7 zrGCV!Nq^V9V(sHJDoj`{KNVarCL+DV7kbB`oY+rK#z=`I{3ibGf}oLr6V#Qaq+RX4 zlURfN^;d?{Ihnf(6{8Tpv2JT`H5pBkOT}tg%~&Pe=KE`|pDj3U z#-ogX?h*SZN(?3B+DM!E;DH8s+4%pWPOHJq-`Xz$X{Zr%JG9m1YdDYC#1!JPy2Y$; z_TPj^JzOTo>x^~TPe8q{1c3yw-ax6gu?o`+l=|cg3eEp6Q0i(=oo>4h?J7zxlYP~A zW>-;RY*<$jY(%#}N=o_{-{bHudPv>HPMM?38O7%L2TLsZc;xhmn7o0h2H7OC#;8bD zX9N7G@r*7CS_Miuc4T9^&zP07hDTyGuz8W~l9xcXQ*HmVHOtk|_My@?Z{(rIp8kd4 zF`}wZ{|RQC(G4fy|1q(E-eKEv&Vw;0+(D}jZ8?#XCk+da?riwFo(vYJkHm{BuekQI zhS&{}lZ&*6&MDR#ch2Lh$mn$qhj$@qY<4WjR6$cuL3&$PL1FrRWITqcrxGOKQ5vsA z_m$}P3~e*S)swge5x8=9MBvN0mKI;jY)-42=T|`BYXbnd9EmnrzSG23k%;3l!(;fN z3~l0>1LIo{jBmZTaiI@a-s9bzdZ?1?peU||!niuWW(fQ#3O<%ppraFMQq)Dd1!U$u zh#e040+*cvE(VPR|KhY6LS*p&N~7CDv@O`ds5NWkj;$D2sMEFrwu!f~>Ksb>tXVU; z*p@v-6kX~D@0}0pUckBBhviO`a*a;~q>y=50Q)uiSPkoz|KMM6>OY6(bObA8%`G6a zF5SSDXwTAchmb+$5B%EvWv9cU_qDF6u;^XxwdD=tWp~Pyr;lD6D?y3F)73~_w|IWT zIV~g3CA*Teb=OA|(9k2r^KR;ZC&>kauQJI_#r5|Tpw__=V<`-PHv&O7g1}q^(KZ<% z7l&bCeUQN?i2Tc>pAdf_?CJIQz-9dsq&k9;I2pxkzG|KJ;A`AxEV%9aFuV11R4biQhfeh2r;bn5o`MeD zI=kz(4+tAv)|i5r#@pif0l6KGNcJ8OXs1?s8|fARdvxQ@Hhy*GcH>Si89Xlln6BF> zWekI@+DFua?&fc}EsaM-Mf#)kv%z0nH-5t5po$V|aD7=-VFU83l>BHknPC|BdSx%B zL57$2{E98s$@I)w?@83R*Q&?O4%tL~xi{C?;iy~>NPJUWj0R4U1~UF10wf;yO1vry z^x6eV?E=@^Z7Py*a*#X5LQwxzbug5ppG*1*#G`6+F}t4ePt2>BljsWm5i;e7vc1V? zHGleMCfIT!;-T(s{WxQ+uht$yqNtMjUw*`29c(x5qIc#szkuI&xzqq}t^Tna$mg6{yz1LGSe*#WORtQvx0f`zDgD@bR) zFKS*}7Bv?ICMSoV(%1=qFx1Vh3R4g!ZHM)_JT;7J6z30P_JLX#At`)6rVv9JCiPuSKU$RGpfDPKA>poFJwbPiZ~{ zHq|M<>iDNc*m^j6N~s>qIm15$Aftt!xET1&$5$1k9>S=d8NoCJBG~!@L0mbB87xC) z8JWBJpS+m~Z(wrNg75|~BYY|_>FG{g3{<9pNW0?WHz5@&ME6-2;8*$_z;@<_pbPV+ z*9K`_JO1i|^f8duQG#Qkr^$v%KDLa{GJatTYtbP+^DL(-T=m(aDV(C_BPMd%kp6Us zrDd*C)7CY-vcR6VFs^P{bYhKBiAAdCWOfP}|498Dni4@fw zRkBs_BV2d2&N{J@JDlg*aC0)R4Ue6bUYHN%@rVuO1s;HNpjclU6biy=Q546H2hlE$ z9i8|HwdjG`hmlVr%~!@>;u9tusBVc>NbuEO8k>zz!thy) zjE6H8^yZnRi=sOA1Jx(oZ(@&>Lkxs&4 zmRg1#2*qK&6DTUpzUdpkX-PPD(7}!)h(eg%0r5maeC>Tg4E3Y03VZVa3kBv}ANfFH*4WWEq`^(q3>vP*DDML0PFM-#t) z6(zUhQO^40Jxp(QkYQs~>MGz>tqw=SOL8CgP&Y`MZ>t6-7fehzS9 z5l!(W9_6D`u!DoSUVf*Tsb2We!=PG$s?1bH29J5l+e}5~fL)P$fL#$fY-yc<1!Gw| zKGIiU>MHOUbH>N;!R?k0d5g{yL$-#~#THb8EAc#CmtVPc|0~1hK9TL(E7J}&Y09J= zo$*^^z$=og*^p$k#xhPl1$Kdoap{yIU3wjOIAty;OZwlrLsUydfPE)>GbDNtDxUyP zITR%hc9E*LwZuchvc-W4J!D4_Fi!@K9otP@`e{}C-7qNdT_y0Ga$5TCBi@4now4IHTDu2=)| z?h9*>y~ciJ&g=xIP$-mA`{E6$6~v~woV*19fSp7qpQuT}6seY$a~cLPmR#NdPOny8 zqK$>0>lMjw6O-GUCFg!jhLQ3Ac@(Y}e~6((S>C5w5N-z|P<>vmNWwO@D7n$bwy9i8 zI?!SML9r65y_G>SwbrY@--5jYGbt~ycinQh6C3x!-YmnaL>Khu-q91UNj{`U6(tqPZTzS>>aRs9rP!+^c;fxl;WSX6ay0S>zm*kPHzO1WV3HTLrU*_=16$ zdu(E+d^YdxEIo72YWfNMA#w>KE7SULj`2`5wn@NYkE|aa1*6F~sN7Dj7NjOeJbSxv zg=*Ywhm!={>K1(uRLN=JUmRzx{?u{wy~tG&UwS?8 za_kC6e}=12Nn@gQ|8YOb2Q zh$m48dUzU5@!PeSdIwaLdI=r&k{H5$6N~uF9zOept)mPVa9j0G$8bDW=Q#+6a-M@0 z6!jR+iN<=+fj-pl1^OUu&YZ2#di_-7+t5ApC6N7NzDJfBEwhE%Ki|Urf2JC|8L~0E zQh-Ev-z}5@`mC3K1sR}f_bp{Qjw)Q?TXxzj z93e|z&$Jb&fZW)j*x0!ubIrqM$?u%vuxbn_0G0R7&)U#SSa-~sy$b2@l>k)`t3)>t zqgS{@7&Z!0wWMOKH5<*JEp>)njP|XmH)C5I&LRravx!2W48X#q6U<#0Xbb}I**Sm< z^{g5ywS(g5P>hQCDUc`!_=R5pW?jq;`_1M1tfluIIG0B=jMmIqf3q7-fM$NSN=13* z4tHvP_G#N7EOej?+)#tuJ*U=Y>+km2kc%_^>OmpX#Mrp4o=G~~BCylCeoe5_`gC(DR1D9> z79vqU9hBm9o}gg~=Y$TNDy@h?e>Ax-63+d<+xvT*)Iz(d(|ztntboQPy#)<$LM{n7 zW3V#*TRv$kNKb6sGc0yG)FVe9%nRqr0T;D^qIy{OQZKy74$a)G8_4W~RG`q9Ly`k$ zn-#E&tnZpsOod5DSJ4<=>&otUyKhBM7* zH|*|Mv7HPM#}@T8410%~(btXXzV--S77O$=E%zDmcRk&diyy zG|ZC{(rH_Lz0>pVhwccg_j;$twR$nN@ zZtNU^4KL}xmJgD1V5Hw-T@C{{3Z`Z!oMx0B(jE=?jv$bP+jy!I>XBZaJ3B_MJKt(K9WKpl<|Ez=&F zfesyfN2KsA)U9(n^;X2_7qu{tyzHP?zcwd}gdJPhRW^W(LEZ-Fg^va{=Qa@VG=ORW zrxB%nvo>pOtIZrRdk~3#Qu0uL4X>tz6^nsR`&PhT(zLXM%XJS?+ zL9a%S!5qnM!M~O4j?S5G{{xGi4u~wV^9FVRdz~3wV9OHl`eY2Ck|olRESPbK{$5cu z=DMP}TQ_`CQk0%i0&r&bVYgoZsfW9L?-09v3#%C25T!ZLh&g9-I4j*pt6t6#<#qxl zZnNwWQ4WqPp*AJTp&e}Z6y;_^l&gm%r3Ww^SS$0yxb$2=(9sZTI6~J29-*rWa#CH6 zoK$cNHlLLB$DeJha<0-OrkyAwU1t+q|Hz?ScGcm-_f~c{W z5|&^CQWh`-5!3)uwx;|_ezJ?z4=Co&Dg-i@v#A8hLx~h}8iv!3l9U(V6O$`)Q-yor zp>NON=~VTf{s&^yf`MYw0uh@QD6wgjWi$6W`2T(Me<3!N*<#bG_if05jDPf?kcUp+ zFbNqg3md*7DVU$-I!O9=4&$DBv@8lw7KdY=mR%M5zvNlKT0_R4WT=nRgS@O*+y$6w zAGW-eu!>g(@Vjf$MCf6QC^|uI31B<9#QHsEV^W26%=>R=nmV<_ayFy*crli3zf2cF zFa?wwT8T~eWz7moZfWO@50{`?H2vU!svlnC@M`z)r2Qla`pFNIkv*g%qs@$XB zK)gx&mGRGo;rETiN)9p zTtPq_&Xp`6v4&x$4CY@PF$!^f_iO;kc`Mx;iz3E$-B{j>60lHlTZEEsC4YJ2ERLj7 zAV1Eclcgvw7sy*X&LU#GPaUi&=@;4vZ>TT}wrib!q8nzRIItf9p+vDR zJprK+Z_2Jg$;TPNGL=fS9Unt zD?6m_k!~f328c7RMk-SEtSiPqklzb%oNy|oN@1aB#&ZnBbuhdja@j_27{{irjwXo(SU-n7HWek{YD5){g$Z{8gFg}XF24e@++&pG^2>g3wWqAe zeW$YQ_eJg#v!sm=CH?6j9LaeD0T8rm>mjp;)2J~qWeunbdIQZ#RYhoS)f~alqfle~ z)sPCcf6Jo({1t|MD6V}V_KEl!sRI>I_wE-xy1wcO?|mjd84@W}$M_GpK_SN(b}@7IlX;Dpx+`LB;C76r!_m zV4x;+dVreIM=AhDH-?XO8-RMw^&5agL9ZASdM(2wWiERvjvBU$yUi3_e|AZwhIV@G zb0K6rr>j&8(kjtwRSO^|jscGH2yrdEeze}Wwm4Pr-u6tYp%!WV;e-zDS}~*DnWQhZ z>-RW1iJBMwys4c}Y|S8YqJ**She4HFWEQ3U_=M^Zx6D$fdkB6FGbas~2RIlNBghEH zjH&PPm{C*yHLLzIrB2k>BetWY;SBs=+%OLRkBlAHapl5=F~sRSe9rJ?JLla{P%wI3 z%r7xHXE5C7%6Zo|gul&zW@w-h-BTX!xMAM)v3Uy{&P8-j_z`^0y{>-V!pO;IjbMQ& z^130$XP7sVLt=ai8RJug7@u5C!g+#;P6v;~k8*nEKpSTsM6tz4cwyWZ0bUi&kw{cW59v>~O7d zI_1rzfAYvRkac!g-ybH`;L}~qf=v_f8k8LYWzU9d9tCd%0o`IC(R3?bp)W8=p)cRz zRU*|YxWzhuo!$2IV%H}aJ%LC6qB17kPOJtT2%2s3Asz}f$A8CHQ+Qpm)|}x(Q+!|G z1I!|+8bOl(*ng2QPLfJIQxkXI9XYk(@vRV;XZCnKsi|AN;V3)@4c(gUW-(QL6$ba`v8{|`6VA9%ArPC$S#lVd{3zhJ4f={DK!Y#++I9kKx zRHUf1L`~0x)x#dY7)~`T0)*GQ^Z_P~*@W>P0n~VjuNC;JT8QGd>kYAQp-2GFK_%3~ zN2!ac#HX+3__-kND~cCigePFv(;>~F6!YntC?za>WcoPt>@GrO5>`71d@)A0z%9yeF821Z#8{J?cUa%z$hhYIQ+rcU(d30xwv zig?bYfKgjr3OMm%sB;XKQL3Kwn|y~fN68STV~;f!?_E9K*h+tzEg9!li)esys zz7OIi1!Kly+@Ja&vT?NNn40VHf>!Kq^{GZmq1m>UqAdWbXIs{aiy$S>#e3A#bGg!D z6zZ|Q2x3ST62Q>XTpKa%x+VSYg`8zGtangxW+;$s{2l-u=nykhPwa^R5u~ioH65@( zXfI0fta|_XoFP zc~KowF5q)oHBv5AGQV$y^~USlG0zBX_01?_c1z!f9E^8n&%xPZrR*`oYca(RcnvP|Bif-C>#UmV;-{pmQM>*kY zzNYdXewI$gsGyjgR-D?wii0I#{6+anDf;7b_Ejsrqr6!@Ysx{ZszGbdYaHVgjFAZ$ zYlw=V}#y?C2Y=_3lM4fJ(@C96Gc9EX^ zvFbfC*64O_MkX~=8En8tC!=Dd>Qsj4VyXZE1|rNJkquD19;c?f8jrz0pu%NFn@T$} z+QWh_S)V7=^kWTrgqnK%#Dc_%#0(UL*Z8HsRH`0_9U=BPZ!(WzsU0w+BE(8>T!+M8 zA{&SX5_w>OWAq)T-+o?2imXj}-a~dc<$N%l0Qv;(EWqr`c1(47#&^~s z8)SE=B?5N}a(;4sSX1Hf0Fhv3pr$!m5q#ozzay4+Mzl#g^~Cd9(*ksMQgZmehzC7+ zMs>@GqhG|@MMUpjD_ELPp|%IJO`|I{nIkhkKrY7p==>qMoxgDwxh0|!!k9;NO!8BN zu{4qMv!)z9`~dPv9mbt&CHUL=9286d6m0*qQ4ZVxp%Ua!a?>+5w_$ah|6axRzlU9& z>)>2T;zj$>>p8jYt(}QpuOciPPi3At$#+3sK|6G^x#BcCTx;^1V}C1eHsZn5rxnkV%##G4ie zLn=YyejwnKi z)QZ8TyHfHWo=;&z(oI#j)Yn5e-3%dhCAR!__)&I1fa%0>7g@F|b8{dXAN)u84~Og$ zkUasbCuM>(pD4z7aAmHZ6hGexqC|~)+`v`s!*jg&5ZMKNC>O>hhn@gN#<*JdH}pdJ zy@Ic`#4;4u?Lac4n+^!^U+|HkEhfuyeEb?OSTP&?Q_IC5@?hvci!?L@yD zz6+TSH-Fey36QPJ@D*b}dN7LVN{|iOe30VE_RiNc>G4j{F5#GXozF5!+STLE9SWq^i9&@OQk&u$ z484bGH^aM4hi-lhy{cFelCgQKRN5P$DI7|+vzecWS@DfIjBm?JZP0g;91Do5!MBwI z^5d>!cv^9v%z%2Vus25FPd9XI_4QYh(HX>2d+ z&Oy(kFAge&4uS0W8V(pN=}r7U7*W}26gf;cjUu;Z>)yWC2Dx4WbT}+lze^agn?_M8 ztl53YVDdUuO`%;fscsrYR=^OUmTzar%#s^7aHJXkD=!Q>L}n5BnnS{^zWvG)v`gqm zrBNKv-YC1hEB4Xef1gHCvI{{pRlcFN%!VU4bfU?b?ds(Bz+-Y6>&9s;V;w#nk^%gz z?Gt7<4rH6{6DAmbpS9;IrOI8LZ>@*Z9^Y@V-!oUxOy~jY*mj-cml`qYrU{LxIf)(- z-ML<*BO$AmqciBpZtKpdbfh03PnY>Vem-Fl8Fsm8G|X+uj{>!eOs zQZ6O*3OU!Tvp!meqq8HVS35#F1aXg$t~)|{g_CyDhnohxEv<)(>bV$s{`^wQ2+zin zrmY^)xogrFisCnym1s@lu*|fF&hi|J(mHDXjRb+wRl)ev(3gr%M;xUHZ4A z@Yhav9AC+;WS$l9WXHN@I{lju<(fh~lUQbopgBLBTVlCBH^<0Ql!itCESh#0Mc*UR zV_POE!;CuHfZjW0kTk=jraESr{}aGhY$Emu_^vEqQADW4u)x_%WFHgt0TWwA%$t4j zn*#^M4i0Ap*7O9Zm9f2u7U_s@?xD^a$*YRp?3mDCi}eDgEiJJ^IL>5WWPHE=O$g;n z7oCBv2|R6PKX}&tV%d*&t7IV7$-m~gDBA5tOEB6MffC=vai|~GzdlnNzjnztJP@X5 zAu#EOwc}TWFz6>wJ5G-ZhUHi=+SsZ5Copvo*)r!g3+!PU$Il1=9Avan&kxC)#UI=eO^Z>Fo7Rr^V@9is>wt zsXW=Pd3&~|OyhAB~OQgTVPy|4e{@30s#^&!sp{EI`$Hx(I_y0xZfSQ5VH&@_WDDN_d&&rtp0BE)wE z%p8D08m7J0tP6Jl%rF;>Ku{T9qB?L{D{5$meDXg(;Y z$3vhr&n*K5^a-tfNG(=!4jw}8kx?K!W5qBeW55J6iUfc0)D$T-6Euci7I65TuujVG zFGC^E@VCF0H+<>$87!pS^`*br{wuY6>U{w+2$nB!nz=H!nPzDQG>LBJT;$qxzBHxK z;x;oDlv|vN^BtM!UdWv!3DTI8Js`DI<4CgjTX8n==ShTx$QP_5t?6B;$pATwDV%K+ z^Jws=W;Ae=J&s)a?jGxhg*LWo6uPTrme*Np-zBy@vus|ZNQDVU(1vZ+mP^^e14kN{ z6sI0T^Q6f9HcoWfsFea)f}A65XfB$FGmhhUHIBSC$Y)dM+if@(9PY7t3hWVFPpz*@ z?wNN6o9_q;q5C>18=pWE-8@Fxmoa5g{H$=CF%in$*;zz#ARnlav3gp9Dihwd;+89Sw^B|otEQ|ZH_za_zKmTrOX@n5s3Fx;K5B-9CW7r_ zf)5m?Mxn{Pr4+wxf0ojHTpIgYN}w(N#pNu*6;74pqDeG4F0720r^8zU+uL_Aa$1ni z4On-7aeD?TxDQ#2DmYw}gD5WCDqfF&FaSRp#|z!Ky_p}b)0;6WVmy2oo^^@&iIf6j z+hMKiL&~bSXvV>S5H$m~frTEz4hvSUw%t^n7Z)L@`v+MihwOvI|A_2}!VsQkhn!`! z&U*8$JQA-l7b+TGg@S|7c#W~BIQ25ui7>YTL6fOR@y?vnyX<33RH4>bfDf(*T(1-C zz;_^Jk2TKe%^6S|WA_EMVA-#;YSA0)zAm)|TVUg^>d~4GLqYT=Z&i7{CYU_6DR%oKz+~Ce=VodF<)TLF$}5Y%P<22m4$)7XoQsH}2DOx?w&4 zP4q$HG|5+vpXv)Hr+-qlR=cwTqpd+wS?ueGBFSQCEYNc6{ckxK`nlV+{lU<1>D@js zG%B}i+(u79?;v8-*)mPFv+d&6PMo27!4#;a15=pxpv@HeF*h0iuRCEaIvcNA;3PIT zww+NdP2a<-pwSgHUI`kTBguInDn$P6wJumiCz9diwAOf>nWC^@`NX5-PE@REzNNgP zrn#X!U}HLn3IF;}B~LO6H5`Hcu^*BFC% zEbR|=O&wVPHrzaQcn}gNwwdNpApJN0muGH9YPWKk0q00~Yn={g5d&UtBW``*ZK!3i zJts$uxfG-heGhVls?|0%fEsvoDOTH5d$r-PgN|EcieAdp7(10JQKPAwC?Vhz%HIcJ|ipwS0%H#U17b`GGL#KJS{ z{h>||)UvtezC1%COz0Cj6Fs8=38V7%BegUn&21C6wh@f(9e%X2W;jH2#& zBUGyn8+4frHEnFTDj0{C=T#uWzI-We!ESpSy>;R~DLaH0w{Qp^ff`^$5bZ}J1BW1jXbOuMuP`zS zkRrv?Z8-HDo}2XJv&ZwYj0d>@&V>|(Q!?|ybV}csK+@S`op=@6mc0)T;r2dCYucj_ z*9XL*iJ4Tw!iO*G#|P%q&YIu97S2cJC_-%NQdK%orJJ~h+(b^Dn#|tJ>1+HLo|8;A ziBoy{0w+@@h0A46ks!RwGWGZmw`QP#K!V#PC!zdf-tyKj@iO(HYRw*dmQPFW9F=Et zn*mkUoHiXy5NOj z-h0Ys97jbR(dS@qmGm!%aU9u=uW5(6B^hnEMm*CDzr$EZj(Iq`IV`r}Xm8knVK{1h z+cpee)0u7tplZ6DU>*a&T%|T12peHdGF9@7?la5^^Yzdr)=)PJOcPS0KAk1=_SP5umd&CtI0|zIQLTs1W9Q zhm|@RD$bkSck|_4tdH;M)437v-CJj)RcFS&*tniPgzO4r0&AMx8(!k)N4He_yp9}1 zCbwu|WYC0Um#T=~OpkK|CYxJhKAjB8zAK!~fHfyd%>y!|W(^55f3J9Ms5j$(;94Bbs49OjZn%QP^^eogKXYTBqZ{fQ)(bwls5Re?|a z4?Vn(r3*ZWyk9xLf1)LR#?nT#6GuZ|bo@WU%eZ?iU34_qMBgk?_Vw7xz8ml40digs zPA8kARiDHbQz2p&*Noq>1k#-UH`&sn;0xQOv3xg2jDPBD(}6V3J0V=w6@|ztS_Wt` zJ8X>fpHglm#Vg z)smjriGXckSyN8lOzw+*r7NXDTe{`RHewtL=l4MRXuRmNh5sH5lL}=Yh5u{^CH_gY z$S(1kC1;?w(oDo% zsT=X{gF-q0iv7{@|A=BghiV5%v1gu_L$QA`hosn#&UH!)#r}_7`u`V-o%owvioNSk z2Sl-(-v9rUVp~=WL9s7Au>TYrbO3>3TT$;nr`X-UcDj`DpF1cd`|_7%+o-Yf$jim# zcyiwjMCQMSc_j;?W^hg_gQcWUnew1gP>~it`w?V2(VFAdnkabtV?WQp?hmFhqe?}_ z61tcZ9BZ_4yA~%4WlCV_aZ=ii1XIAqRW}bU&ccC^_xn40Guhw% zVJ=*0T<-3(E)v-4T2C`r!8goRsQH4Jb6hYtp)=SV44{VxH%kxE!T!g28keD{+(_18 z00Kus?pug+Z{tu+CoHxdzp6ibwmP0ET3FwecwLQBA!6lS3K8>z8w!VW>|gzhXY8dI zr1jW@ENJPqHlEigb^{8!>C3|N7mZ~qtt8vFJGC8O)qA{9ol@yW{C#kG1);Vp^hQh> zz4gIQh-LZS60AI9ScBFQp3p2|;mygP0vOf;s`T+2sD0TerBopefQ%dx&n2IhR?aF^ z;j*QRlUOGom?h`j%SD>;|7lfQLHr$f_K{4wgiM^^)WJax25f{4Y#x9)C{g4(IE@(4o1- z&rKH@D2YoRlOxWBPXq6$tAvs*D0x0{H5io1j+$+TN6mI|`2zcR9xZw}QY9@y_@(ku_;f?v z-|6F#UicudmgRfgGs;T#b-uXV%{r04v7PAVEN>r^l6*#PPhd<6E?kG2e2w5OxjKM4 z&MT-)lQA4<*R%tJ;+rlpETIK(SI?Gn?>Ps5P(WtZS>F)W9j&v*L0f|t?3$HXgs9`> zY8H|v)D88ZLkmy3s%vqF(PkVL?TimtTj0A_u3`voY=qTYbx(oyMJOnr9&8;rP5gpQ zWC0dI%pKH6$Ju=9tYzrvAQavv{lC9Fj*;sd5@ql_)0E0K7me@p)NV>s~q}mybAXEsF`yMw3bmN6K9yi*8 z6(=RR2`}DFmb|-(3kRu*k|lR^U^kL{PzOB%)PaiOVP{)DsHVnmOlh(Jjaw_n(ejaC z?5V0U3A;~%uPAW90bncuKr>tqKv8(&r}Sfs)m^9L?Y@jdE2d?O^;BqYM&B^G|8scEg14>2m+KGl`h!X~^7J^}{0ZqgV&2w) zkFJD<7JzX{F=Qn!NMUd1BTf=w0C{adQy;!sCrti~gv`edGC;TN@jkbz_!-bNo>VE$_G3_CY0x=we^(+lAWLXX`K#_i>8=lH6hzD$M$OV3l4SR;J2 zY_0T=4^lPLpn4K<3qS)nyH)1YtA~0aTf;gWg$4Iy?zofD(WNij)=i^n)*UEOjh{q+ zSY$&?dL7pFAeV6Mv6j3AGG+8U6VU=mwIn=cru^+wcx8@t&6HFT$R%9$UWG9OTfgBz zxl#Cs7s}khp=eF#peRWDVv;uQ0_I2Qv;f?752YT_nCweULkTm%uFDNv$MOrW-bx;f z;c-t$l;H~!ELF${lrUIsB3ocAag-w!V$0~)jRYg#BFQxb=0@OB8JS#8Al9hcw{qR_ zeND>>hMtMhY$lX~p{94WCN_bX6lstbn*;=?%i?wufO+71{iNy|#Dq8%J z44<098$jsc=iZGb-jyU^7v4?TLXv*HIp9WayGUSB9x69M#DuF0x#F2<4zkWu$@tox*@+Xp0J$o=?`c56`?*Y)9c zzLH^o_BbFJKKtp1fAT!_;9F%Q!?im!&YOZ(pn;triHtmhPX)o48FrP2C?6STBEZSV z?d+sIGaS%yJ3GG$vy`c%<5EpAmM=XRu(W|oI7qF&3sAVn8IoxU(4|^--kBjuK;xEn zAuqXi+=e07^C&O!)JLB}rf~_UN~lFkJWmId0Ry>lGYStF$ap)?P8i%=G9n2s`v3u* z=mBmqOwu4~QanJHYw;^}Gg|gg;cLHOt`tEM>o;A5*H|M8TS-zBBKPZMEQvaz2(gOz zNIimfR5hydEA-?vaDV@{prih`Ubq=_;*QW5mg+?nwVH?`uBPQaz>gTG$@Y|7&80w@ z=)*>m*hqKPz*#{C_af$kdc|=v->aoImIee6RaI8VJk*YukaVF!!yOW`ie@0a#x^an zj&o@w#rMU$6?DE^Uk09)S!%E7MTiUWH%+20CP|34y0I8T!D8bRa}6;gz}kroq%z~v z;_-X5WQY%v{t9n>QRj5u1oe^e4;uv5D`DX7yYSlWfz(3O0>ZDvBQPZ!;T4>|(!}T0 zypgFiC(H1EYAT9>DacAUSHs{Ek;_6myE1nN;O@T=Vk{%27EEj!5exHXpcZ} zfw6!rt%kBvw{Wgwizv_!iO~jcY!J}3i&2Mww96>^9Vjq%~Pdwk^Cgk;Rwaqg`YkbeI;IT>DFxAs9OjBUx@P| ztp8{|cz<;MIk7iO8{}3m3*kK*Mg6I0P|aKAD>{QtAmveZl*FVV1A-xG7@qg z^YF6-sVlWx0I56Bl*|+Cpr~cNy{i>lvd9U!Sf%^GOLy7mBnC776I+Ega?A#{W~}A}z}*~cOxTyrV6E3+L~z!Q zxmrv|MB)M@KF`l{|V3V+>IKIk7}%_p;{Y$wn}_8 z30b&{yAU5BwV?Q-_&`xu#a1veS(}^NwX`*@t)j6?f2qYbRYA1U2DKqR8+^t`H9o5M zx{AS{LZH_Df4^tu-o3loMABdXzkEKhyZ6qVIdkUBnKNh3oKsgOS()xR>_N0A;8dc( zSBmKZ66X}b(2yz^nuP=w6pqpq)AVz`BLpgXezH%fj$@DB+z%&F`$Jy7_zmAHu{k}C zS9{(B0(q(#>n?kRYN1l$L=Cf*oSd7=VcSjA|C{9+$c!Sh+X z;UCUtMZ8KdLvosZ-M-jFB$`<@y|MZD(>2&B;tm-`fm;>#=;SdV#uX1Tv5X&?oTXI= zMM~!~4!hSK4i1WI4rB)~$P^Q9Kg>;nJyHmv%|PwNifLM%@5-0;QX?^P!!a_HZyt)F zlmuHvB(RT{kznf>)Sw)e;Sy~cxxAI^nbWFxnv6CMeTx7v^Gvs?BvLpbftkcphV`z11F@6unUO<;S7l3tpa+jWSY>4!|yk1{0lJGTrO z8MUzMXmNWIBvB^F7boR9$R2bcbl_eUjqyO=0)?=2oOm*`zPfj=0U98SM|O6UUtqH4 z%#LyzG%#bZ>?kW;Z|mOy!~oe*j0Dus#00xpJSTSA_wAKAi}dD*pNIaOp?M#Qgr#5UINo(seg`gJ1=QBItIy_ zqEQUFCIG{zI2M#Fs@y56ka=rn|Bt*sm*U zY_Y0u^tqBIanv?YN|m29ru+NR%^5?7%UY`Qu6Z(4qAX*)QY<0yr$|VAaduD?dhKpf z=rGX5K41w3(6=~@avo6R`rie|uQXvnHxV4apiu?K|8GEr`Jore7nI!rgX3%3UG-C; z-68f#fqt}eL*=jfp(Y7J<-htfl4NM1@^w?A-KMrqgpaqRvPz8nS_@qP5o^gvO!)a7 z5-xw|j}%HOT>hO0r=wpC94`O08;N47=tMyemcI1C6=tWm+Ii9ce<$T})QT>R_SZ=d zP5@d@h+vvH1!^!cWZr(=bbO1JmuR(mob#*a9=3TVLmS=Q$l&> zF_dS1zfhiwMW=D+Lc9ljr=|n1odPk0@?5?WX9$7#+hp`<4C8rX?GG5j^F#7z0_r*S zJg8V;0bXLU>sC_84dh2Uoehc~>AAyLzi8!sWS&>-C;mYDruHKZ#9snH=M)q{n>ba) zWtb}vu5&$G6IZF-_F70Qi55Cw#7@plXoFqyA!i2FM_qxShL<8@r<@U4lB*aIJ6Xh; zC$tc5SPCyc6}8ho@?r?ZM!|JXhNYFRXwN*Q?X?!$NNj46reJD$)ZX=b_NU(+tL5K= zvbPS!uqB}B9LaRxXBB$gFr!^&sN302B&<#C0!YQ|T!ppoa%|ntfeX{sB?#JC>hz%$ z;3xp}eS(iVYQveT$N2-^S)rx%eegWpU+~7uM9~s#C3MWrGZ(W<(%YhaZ{*=!q6O{g zu${-@Ep}&o0?LT6wAQrAFO>>gV}}D$JoJSlJg{Dg7@>5kX!(y@R20t>pgy}%JQt!> z>@lTgqM2B3FW2sK4Tz<9@OO^y+8*<#hmap{hs~VUXV%j8GX)N z**M9dNu4O`?6CAGwWES_EQ@&VD(-=ZPk8rZn)hlmhVI+o#38Ev^@_Fe0dC^&fs7qDRo1)(9UQ< zvo1x_uh>`6F{17VAzgC%gi6|^A1hM{R$MD3V;k;9Y{T8bzz=U`Z|gg-rjESoS5$?^ zuQu{Gr`}>ZWFj8#GwJcFnP3O2-Lr1Sh=EBoXNFbZ8ZF z?ry&dQz*ubs9AEHTWzghjvtZoU4b~SnKFfMN=PVUq@mg;A1SFyIBaNLXlFHZ*kRG` z<_CR#1K7+WXOish#JpkzDz+N1zOZM3iXQyKTRB+JEZ~BFhP=tT5>O6{!z<_I5+-}9&@h}h^1$LxGyp6wDVa?i)O;D_lkzG4K%_#guHl3vq1he68YsOlZFY6PpiSZsNej{)u& zHd40zMa70b!#*J+tVn5m-QHDWoro3AeLbFfnK5GZF) z8Tcq4B0n9D&V5_;!#6924D;o9x^t%xW)dC2AxNKmNLKWSB^F@NEhz1&BuXmSA5I!M zMeI}F+?F~uF=7X=6dU=lk;)t$LLkZ9bGIYTx$82W{p2|K5}niJC!)GcxaTx{zaib< zS;KM-=0-Hgzgpwi_*8NaVwwehxCT$WsD6R^oAA?jL%LkfSj5oMi#PUNkL@k~4#K_pn_>xgbq(X?Jf>Og@qcf2lq^sc&^?()&U6)bablvGcz9fO{J z6FtRAnCP?c??UG=EGy7sh$fB>WCMo`saNoSwYmNUd^p@-yK7E|tT|YEvKJjqP`d2i zu^%e6@OU^ea@k&DGF~@Mtp8jwraWiAkq2hPsSGKtgdnisJ04sLG9n#OT*S z2xP8R@cV=?{_E9R7;nU*RMElpE%aH{0$U6a(Er^sN?`B4p#?!}$rj2p3q0QfaDu+; zao5~R(wa3q4^s0&v;=#;ta&o=^?FVpT$Y7zAUKH>x@6=3|~3era=$4u)~Js8EbQ(t_9v_loc|ab1RS9Yi!RBAQ;J1WX~D_ zwuVAMBAJRZy2d}hZn%WeOtT9knyIg-a#-85rd__4jy|(2qoYUE=Gw{(ItKn(biE5r z&7$t>hYU^e!crbaP^{U<-8Iy4tldOfVmay;By}n|9%k3;zaE>vLnK)`NNNS%+1K4V zSddhXNjgZXRJi5WIkBTREP|wR$kIVlSwZ=j8^i>vXl~~&={*=3+ ztiYx_WQ|clQv0>{_LZu=ssY-|g4Lg$`!QMe19c^&9sQJWpjQle+z9vK^7hyvTc#DDFxDRIc=%Uqh&I!Xuh3?YbAcN?1^}IaCtAFvW|lO~EQQ4C zYcv+CX#H^KHh45T@(E;&Ov5T46$|28W+_?$E9IG|j!)h(aMb?fjS79LW_yM{V#*ON z{xsgKn#Q|fQZ0UeIqEBjddq0|@}|K7b+}JS)`)4PD(?Ui3`}K~2gWu{@1T-#A;CjR z{=bQ3(^&?!Zm1)1gnxA;{Qt~=q;7`*Ps2j5_R%+I(GNG9Lh{x@2IYn;hT7uxW|NWjP1l&d?D#6>Me;wu+6 zZGtJ~Ut8i&bI#%qo9JGAg-KB@pqpe__h+!J1;P4du$2X!8Ens&x4AOdwiB$iIB2Ar zRu6^x;duv@92~_a_Q$c00g$0$3z@OTdL@zYg?$8 zN=aVK=3lMhX0+W6GW+&LNm4zHO1YrIjJ7GD1U$q^!*1BHH$X;%O~@DF#psgQTs_$B zsI0aZjHoyAyJ5-ZfWVI2h7Sbi^i8DDRH#&>Ss*?IN*9RIgCAgqZhq*dqQf!!5I-J| zxFMoFj4rCRz!P?e)%d^_=@Kwm3o%c-uFysGw}6Vb5I}MSfV$I531BK}wxc_MBUCYo ziMoWPc$1#0(n6`UfNY@9Sb4Rpi$pLh4ZLSfIIRer!Z7B4WvTO9;E=N$x})|F&XmNt z>`lh)^*{roraQNR8K=PQUiqXdh6>c3Ocu4ud?B0R0Jjm-i+{D8D)=M?Qt z_RmymhsYC*u;#~agXEcrxcsZpA>xOP?TDx;zKPcrh*t>6L@{xJUmrhIXB-=Q0CoD} zcCU`7b^c{V+pjYw-mG-{n7v=x{-*$mO+`?(U+QcBJhZRrYpo}(Vl&*nyHmZWxAP%) z#;c=5`?&4gILf@Y)UuE{x-WsSm@4r5-}wq;vGhAo(TTqEtH=QmigeK1vc3osqwIVY zzYvX}nF!+RR#X*~RaNrs%qXdsg6g)z@=Tpm~=Cr9{^NfnHIgK($zZ7Ee7;ikOB?2`5x(-rs_U&Tm*c7(WS3!faxwJ}6>_OCVx#7p1bmyfWzQ zK#SiUuU^%!P87kFn7rCwC%j390)r7XOP!glGnlR8 zOO>zD_wEgghtkKgw|Rp>uH7VcBv*A8dabN$-@8B$e7g*M`xPA8cpH9Tne5>Q(pjlr z-Tdg+;*bgt)^W;R<^CATl)qmG3d9Zw2^V7(SHJRdB1G=~)laFQ4yD$hn8}4tG%xMq z+==ZXKK0j@(LQPvX6gyb;0-^W7W6S0g6 zWP1r($``7!2w`8Az5ZG95QmtvtKP=8A1=W~~JFb#P($NxJrd_H^UReO96Hi+7r^oIJAnn&jVcdR$ zOWf#deqba<{_^{q@@8EyqBfl0UYY8tJK=&WF1#pqz9hK5VB?aDmMuGWSmnlL=Y8*@ z>SL>hSB`04K4l}k;=+6yzI@RY`f02THHIhU-4Zuj_OkDJ*|LWv_eHjBfSz^Ul8d;j zKZPE29eE>th7mZ=g$a95kGt4Y9eE>?PoTB@B<>VLd$X$G3sO-Gx2ycVbvSRk6yb8XUrq&jQq}2Pdb~;RIKJ+vX(%7A=QM$0NHH*auvPla%Hob_zADF<0c|w zY0D&-jfo-IZ1f~JYVq#?SY@=ax4#S3X$9Y)6E|E-ceq2zcg2WL?b9#JQOWP8)7t!& z-L$gP+HC!pEu*#EX>D}t_kK@L!E4ZRMhof8CJ)U|&%dIJ)%?pya`P^h*8!5;96xxH z8;!-0E*9J0ffBJd3|KnR&1RREnT`lvBmP7;U-hB2YH?cr_X}|1uk_J((|rkNR7$(3 z_RnHcsyzgfC2kfI_=VBgG@Zqy)IC!dkNmldNLD(Z9)cca(Uoqk%8aLTA}pkIPhVW` z2CIRhxEcp%YsAwyUu7ZLE1iWTV!rKc!Km|UJN!sE{;-)I1u(EFN6dDn9Au){$)fJ# zYcamol7q#WDZUzCujF2Wy8&zz_zERj#>6tU2xS0jsNLYsCZp)xtRK@K6FM z^x-$$+0->kTFf%4XE!7*==Q?aSy&-(nKAPcCaMTFrK)WD(xyVkz{awoD>C_QqYfKg zgyfsX(_6u%Xzpm)kdP|+w(P5?$gW=KbeUkN|#6Cx=>wp#WD|030Sdqzu zy{JqkH0Y3=PRwy55LbygZe8vZo9Hd#KmY=1ULa+5*+;Z!H{D<34jm4&xhbdZ0B*Xc z*V9cmXKs$~voKC(rSL3}IMITybi?HJ2Bzo;I;&9z!MFqQAC4yEk+*-oF3-6E-&MMR zHL4}?i=LIAJ7WL>6-x4r3Nc$9C~y|wA;h$cX|DVmm-C<+opt+4t$>c3C)}a?`V4vx z|7;I~N9{#7u&+5%ORPmvu*7ZbUQhydq*wXr1?D+Hr!|ygCC z&s~L+f(u665rH?8*-Sx(j~;x$2+e>RyAfbU;=1-D;I1{gOIP(H;Nj9G9|66@1v3Yw zAo3Rkor@4HK{bs$5AX~koBOxSPOOA9P7l~_`&%FNf`q>C$Zo!or(o*`34hsdzzV6B zHG(mBqC_UJ*taQr2FtARnivt)<)iJW4}%^l1`F(JGz7UuGWxFI=r!|@ml#cir>yGOcV=;(< zr~S(D!)FB9jU!3S!~=KHhM>H*5hRcie(1ikXv?r+`5jfI`Od#!vdE;6v6j|rxQL%x zkWN?*U8xMQ^Udf~i6H$l<{7rCrb<$4Ma#6M&JcZCby_v*Ki{eaV(4bjtfCX@Fmazw z)Zn2V{0rL@JDI@07)V0ndgFevmavFc_$QIFDjBUMDX}Fi_fD9v@RZ}@!=QZY@+$P5 zGXg=dO5kE%<5?1;6*vYcgZALs5L?g&eL9JvbvkT_&F%bZ{ta-6ch0?pI6A>PxEck9 zx}$JT90T~dWzagC=rlGxJkK%j) zDq)+$HUpEfNq~4k2Y1;M2X5~KY0tMVNYbKJXbTOHu&$ug$_jTyT2tV<@SLn+3!rJA z*fDJ^F0mAhOY2^Ud_xFfb4FkI&-lW>THIb1Y6Htn9QJf#=aYs98aTOR#d_6VvdPCW zxSZaMrkX+rB)j`BIj`-e{P4*uo$o1g$!SINhyXRVB3EtPmP|v+wIkFrBcomP7S>tTXQNf*dRGwg37v85#Vn-{i-- zN*AGFTdE|kWg~WI&{W5NgAzmd(Jy$D+eo;*(_;XUU`-nzDSta4iNc^^2F-vuV?@V{ z0^i#7Wdpm01IyuDK%Q0CrCPp5wLl914CfEAuH#@e*$pYs{fBHRaBz1&DezXHfk%X3 z%lUu~wiK_!%w4+Egx-6Tr2mafrxWX!m3RQ9%vs1A5WgGWKv-PooT@H)Le9++GCONf z6nbhKO2AH#Ip5|Mpp-d%A7_PH59js6NMJ14g#B8$Q+TR((-0h#n6gm^;V*w zD<&on>!>OohutbTVY}Tp6}_Czwyap0$||%MI_b|Ubl2{6>~srgrLqeBD&l1o`UBp1 ztKF9+7D5kRu@7DI0{G6g2gpJnHr>QRT|FBBPL>tA&Z9-rc=wCg6CX^;#ykL+0+0wD zGa%h&3`M%hBuLM!lZGujO;3e03Ns~JzLspSt7$G`S9g-TUw5CVyrW6P)(;^j#)@KG zblbY@x%2i5x#kWV8GP>C%QgsH7 zUy@l#SmcXe4Z)yCNn_=Epo9Zwm~ZO@p^|Zi#lQe%&<@XpUIp#&<(XPL zBte`vpvqxv29P4YKsg&Zx1P(v0P%}hJeLafZCC_Ku(`mw zW^gqA&4%ZR(w^{R23<*J^9+{6*7_4FxcXBVrriGz`V($|!dikwuN0URPOrf}Z6OT4 zHIU9rUBTj7DyFXp6yDSbssNF8AZeI4QSDF$UFRLe_XE(@`4f9JAnBc`dYy9vGQFU2 zR?xXxMnNXKC_xjU1dShuV`eQ^4D(g{lq&3=e^7wo?;?H)8EL#HNmZEH2WK#ilZ2VA zmNgx_`~Hd3pi>9I(8Z_*D2Ogyeaj0vjZ>SUBEW)3@VXAQd*Uq7jne5fPH((Mc8-?W zMO(=vjA_NSjhZqkEr}4a8CUIW?UkZ-n$3M&nG0P9&i+jFmhE6^4^K<<*v-O-H| z+&@ZMF_ld0gFwS>6hyaL`B5lwIYi+GHx|=)Ec%;kd)jV)unxAT%k^X23rn8Db>x;L z?%+#Foms4udBm{3$TRnzU~(_D=*UBD1l9Y`=WEjY&l8@-==r5Vj*a$X85mP>WFq3} z#fT`O+VpL4=>mz_h3y6CsWeWR@Xn2&!6K!Ki=+n!GFO+1GE~(5L0euD_uh&|-}fL$ zE5oKvrz!q}NCSXG7HOxUCW!R%Czl@xkrK+se{w^D_qbif!rW^7#Z_z!-bkcxn;5hw z>^g5#`p}?q$K$xFf1J`gC_=&gGPQ8iU4E_Udhf@s*FDNM4g{cLN)`wMiw*ldmigzhG!>j(8P8qEwsgG@bj<=?sUKuoW%Q4lNl6 z!hwd*&=%f8)QVgq07_$I&{5l1k80o|YJ3neK8{}ZUjKg_>eG{5{w(p)jKr4$=0(Sq{WQ*$;M<+}s% z4*(VcU^<(c4Pvw5)$j%Tz@W7ogQ`X|+LwA8!d(rtq-v@g4K_(nfG`dBU(NwNPYj5S z%xxGDkp3GOG0|)eY!m{~ywuxN>yg%}?jtPcfenu(45TU?7O3aOqV}J|0ynphAJ(W% zC&GMLRCCGdCz;(=M!_Te3F?qRvHfVl2fD6k1$H%rR*DAC@|}Mwb8e2zYDx_Y?uXud zJdeF(&B5XzR;*8-fU@;>K&kH=9y=kcVit}?mFIZ%D>qI;CHvDO5MSYTK~SchvSBi& zCzT-@e=>Q+LuE{VR4xW8$vNNxNMotacmYa4Nw3g>=a2Ica651;YRR#gp|F*JMn9<3 zCr&-7qL-sBQza}^};(vC`# zL&1S(iq~VsD~cy`PL0tCPaLHsq}awkAVvrmfsg(TQS|BF!oiQN#7>KtI@yKhr=lOW zh)&31&}Ow~I=S2nbER9e#B?TYHUp43XS@apGGN!f^OcAd>x9{>S34Sp`tV~j9PDss z>pA6R*oCup<$GwY?82KqS-$*^g<(%bEH_}8f)Dac%DXn;<{9fmBtV=gB|5jsPTc<5 zfo9mm;d3a69KDD-y7N^uy7}P(a$%ryPBH$YI6W8(9m0t)WHK`%(RF%NDO4S3RdXRB zXH`VZb9fvl4VJ3rJvGx+>j%>`^(ozroTgT2ymJ%QNvyZBm_b8ub=1P?uBAFHtY|G( z?CPvQcTkH!TsxaGXas5LaU$yVK<5=m2KY6U05L@rXHVE&CyU3JVgf8BdG-|@nD2}@ zlQl83YZ|v_v(L9!lX!ed&5vK^22m8k%8jr_B3ATYF|jYos^(6JqO<+wIf(XCEKfH< z{{+fLu+Cpix^^?Fp%S@DX|$S`^w8$eYjIzkO=QgYqqk+6WubsJgu5C)d5`#QT zGpFRC1%n>!NYGEcno~8;SjinEc_Et(#1Yt!6r)5|6PPVsXby8gH3QAt8Of7I*P1Ny z5vL%Ok2wCIP5`FbC?Cp7KA7y(yDqHqQi0Y=b*;c}uw)`P-`VM$N_~1d)eY{b&rf8R z@z9AGyNtaIx#$g73n;ezLAQk0%p%l~D5n>y0mDR6 zrrEb$tga+xHI&1z&tp>oN9W}IS^|~(0=g!{{We=1yr-;+Zmfk zUgFd}K5JGaCQeBmEd27JREP&!DX+(!9$ z1vF$6_Mu;ujV-HHH%UP1^cF-mA4{OZg&Gj?{Ab+VTKBS6*jfqYJqsc(H`(T)9yF+M z^H7vY734!j$@U!11a=u_> z6>lVE%KXe8dkIuZh44jN-vrE63ML-`&oaKr?D1Uy3hy9T`6l$t@)^w}l?tCe>3^C& zuE!;s&OrQD9uiwJa8M(OStd?AQ+wfQv1)NZF~;ndx06F8!O4kQ5>IXOxKd|Gq(H;F z(t>Q~dhs^xqLJv~&&m4wX{ZyFk?P3%ri@wu4%bN*N?)(UFTCVljw6TnJ?g!>s=8P* zo%qK{Mo01GJI71j6X`|<2^*%Mn)5E`C>jIVK2Y}^8LPnwGwkc^xVm4JkO5cbhBjiU z%nj}Qn$cRk1(1P13!(Qi$#AKI<;?g(wC(&Fv2Aw9Y=hPFP;9IE4T(F|y30PH$%0+V z$#9Fn!`OS{wVJ(vp65(s=p2)BI#72YpywX`jVQ{$T41%2BM(Mcebi33IRxV(BfwVW zpNl@fC9wMk@LItBq7_iEzo;ORA~~Et;c{w3E{_K4mY`532L7$HzU<N%Opu#-U4gyowL*@wv3aGs)M2Nx|nAVC; z&1$69E@p9p{}sOY!1st5M}sG=GmMA3c;bq0&K+TONc zz1Sl-1UV<--=Tb{iKwBH?!4uTORX)S3P|0ptZoRmgdcrK{H2Uty|B@7>fqs4EP$L$ z_zGnW0@H7I!*%LT6br=Z2bAVqhdc%%euwYiM8l85=r`ajSE6eq=VKC+ejr>op(ALQ ze8g>hfKC*&AUuZ>OT2<#6n4Qdt_#n^KSWSg2*{0iJW!3`5aSydJdOwscuVm0 zmjqzS;8ZuRm%+&%73X8>Y6>fFRM+nLs5&Yy6Rt(cs)Y0|`kMaaXbpN^kzRvBEjavc zLouAXMBC9M#c^)ezzvnb(WZdnr-+1;Wo-IZ9#1A zl!sy{20@d!CN zsOq_bz-q3=FZ-^&Je4GK8EO~_8iO$?8$8CCjRBew#Qm9!Ghs%$WOwa<9ggMWZBzgs zsCr&@BC>^I1j$ZRil4{`g#RneXPvjOzH0W+9OS&nM_L(8NT}NZ!mu@>xkzH?3d4l4#U$O&$lHYu|RWt<1`3a!q^6OWSW@S!kH35B-UxS1fA zIR6B=eiG$3kBT9ch-*XYeQhv|;*xiUGLtB}+FuY0Ql4$1AVmEhQXqMK_L#evDi#(@ zlV|J6=c*}%N{Axd3tGgCY)$tH3{I*ij|7LN^)&(G3U}AMqb!ZtlU*~0r+O_NPZkD9 zJJFqGp6%qN?@cSD@%2mjk%)HM^=DxlyY)Q-Mq1unz4S;uijcbtQ-<2K7XJJ`QtfxTCjJn6Bbksc#As})B*qg%($83@4!NX5?vX38g@f~l8)L6MVlIUat>O!)kbCT- z3c0tiCo|;Uih0#ms3J>NTr)8(D}Y(Un|;F9J_+G%KXD%%DIC0^6#eKW&JdVSfiEWP zq;{FG3m)14d20Xs_c%~k1$dgV^pw!6GvugR-8EwkuvYI}Lpld)XHbFV$eVNE)lrUL z{iaDQp1ne!e=jh2Ay?VI{@FM8pqL>D9Lu)mDtq%JIb>1uRHolpmc5P`Sz2#VYntj3 zI+!t6l*5I8lT9h)^rh>gD{3YRNpjW?dp`ImEcG|Ceh$+~scUZ60{o;BWz`-+E+j>C zIU?<}i_cV+w;|NmEkAn5kX!bP=AR#yA(}t_hBEjJ0S_(6MF|Eq!`rNkCXE2hzM3NZ|EDGsN+?j>$Q4{m>k&!JTW^#L{93RB)XOpTaIx^y1fZ z!Ou1Yl0fPEpp>xM6o}h+z6&P_29~Pn^WO^MK~(l$cVOUX7Z)_WhehcCwao67ZXrwg%$=jV{4+D&8JjQn}-=up4|wRA`AZ2hI>71U8jM z)mF;0S5w?bL%Z#ZcZ!n&TdB6z8Z4b@yZAW}tK5X=U~}hm7{yYZMq)z4Nj|$1Bs{xe zn96JAFi1(Pfg9yfE0SvtD#=?IEj%;sEwGb13}8Zvn=5tp?9O6yu-EF%-f|*+bDwtTKniwaC{z01MPH_pKG@>;p`e zWsdQQ_$jGuEulMvof>ugUyG;gfsRM|06OW{Er^QhkgIuSnC%kuxg}oF?0qA zjYN@io#-M2q^$)n0ZwvS)=&(B4S>Wqh?1g!z-X6e{{%n)VjD&TP4*Is!#o4`=$F|Dv4J?^>-{itb*Q|#&M`9p!YJ=hQ8X@CeE*-b2-YKk!^ zUJD0NSybEjHB&0_t{Ao|EQGRotnB)R#Dn-ni3l?aIUDwtc6q;v0~lL~J!mT*n`>I+ zqxlxTO%#3e2ib%6{WNO1WMgbq&K9WIZxuU_+~KF`M%j4~1&$5En+gBABIc{g!KxcO z1kMyZd;)GmGNE7_@{5x#f%sO^z|#Vq&)D%`T=@?r=ApX(qI0#m2$$bcgnzZ-jFrr(1xW8WS*^5+B z=!lkd%q{jf(C|Faz)tKjDVQoc3?&@)MTDJIS%S03l7O4Go$j-YuFkM!a9iaaPux~8 ztV)Pdc(YqF+PQqgnhS_vpit zNtG2ZhcB1$XVlmfwS$)wosZ9P;A5g*(mE} zjM2O}i!cf@KRjVB)1;qv%X#zkbWy^GP-`%q7y<26^XxQ`5iC3<{H%R5CS}`Kb1BJi z63E)14Avl&aI~bA@SQ~(K4&=cpXP=?7&xp;3V)6x@NZGSggS`Trhc)-w4CDhDi2TW zi#qmbdzG~bSj?3%y$R?6BySU-4G?%FToy^JY~!_Ne{hE861~_cyM~OCE}w$hFrO zPpAwuw;PF(p&btbN>K-18G-69gp@)Wpfwd}k!NzhT2JM696~5W%AG*`8_@Bv4?u{T z#DpTW>jhr&^DJ_>#ZQ3v0G+!8jM^A@b6u#8wAk`)w_UML&VTt6_Yp=+!hexTl*^*@ zh7s}{Qc|4)XQ`k+S_-`~Z1u^lC zN5517pz*fjgC!WccSfm@UX$4+eNoec>lhki&-(e|pCt+|`zaS)FUR=hg!)Z^Dx6q? z!hyOCpn5fqR1*_6eZxodju{8gJ)Y<)_xJ&+4VHOlv|k%~6L9Tmzk+Bz8hi>s!^sio z2imd;Nn zir)|v_lxj$Xs+Ht1oWU;yZUYh<4V~0jwWQmQFI6AwGf8srO*OFR`hSJ`xdlzXJ!w& zMM5NqO`|)GhB?+qXlG@p)39?M!O&z?LEO{J%PY*Hr|zJO<#}s|g5`4~`_bgTfF(nZ z08e#fu_~wqFFT3*4+pgn19Gs;RA|GiQIvBKi*cd_--WXo$=PFHQTWKm_CcGW@Im&X z7`R8YHSII6LiFaG3`ahordY z{3y2r@h(8d5nBO%`_Vy#ARc)W|0nlrtkjfK8(@ZW&cLG`Re+{6rFaoTMe6a=?}@pv z5^&ku-d2~c7XrB~tcv|u{S)d}s%M8R7qHR%LXNxrGh#qwZo1nektL=FA;xaZF|(Ox zOlk?jmyGs3a@-&dH_a%l-!;}*1XV|W{R$K&k;=TEN1Jhg2Cjp%DFo!#S89E%J^x?QL(#8vEu9l6<6F^`48_^EIE+Wccm9g+k>%R z(Zt{QHXLGhIN)Y|VMAtuvRr0!ZBf@+Uo~n$_B%h5pZgW$kaPL^KBKv#rHy9mbjm^slLHnu(%w?(*?O0eWZu?I)=6e*Z0-8rmoVSclCpqE4Sy z62{Pn&C?LAeSc?)wBhdYh$KuVB%E6Tgy5t`U4K2pd_(hsvx7|zwi)rSum_FFSYcyD z80icpCW|&h+C=#qy1yW!q4EFGhA7<3&9Fl)%@KxL545nnH_*cQ{W`;`u=iBixDKJ# zV6^tKpsH!AtaskV_4d&j^K9qd|KW}6DK7jV7${Zri`?)B$6uB+b#?<@km;f>C#R(i zx2h#*!G8F`A#7E3^io#zZB%aoZ(|C8gJ0%p6n9Fd z_I0|&LdDs8I9*~x^CIOv%in{m)^`M zt5T%=tw8)uHe=z~A{{Oc!P>BFN~DoJTQ(VEWKN9^FamhFy|5bb2J@ZL5exVphkVun zMzXAXQ7r1Sa$EPffcxT#B+mqOF7#2y3lzN(nDDO_hE*BxTKo`|nqTZE*7sXp#(z&(;7vjGV4%t?ZzX235vW4u^I%qn+KnV)JrVfHhGxJs zACaxR01!~67*RLWg5*ZU(4g9olQMQSECDTe*bXjjgT)sfeba)G$vwu&fP4MbUxi&{ zOB>gfXpfFXJIm&kjA#!or69?5>|!f0dGpE$%GG=24&uNZA>~3?;c$I780x{;_JZ@F z0gp<~1OV{!9JDyMSTJCCAKc@G^)Pvy82~a}sK;0Bm?^kkAiQ^}3TCQY`j?}tIYGn>Uh7GI!!^MoVzAzmZUL-hKU5q^xLr@-%C~3mBqq;NOc;l=t}EXKd{;;_b^1G^`2J^BweNPT!R0B8Z-o zD!P3_3kST<*!)fj4LM_2xewR_U~jAx9fxrz3cBvLFUC zBX#%()0eJMzb;5OBnnz3D6&~#Zk9LzsSEPCLBJk*0UTNXc-S4Q< z;L&cEN5kOJS1^=z7LUG99DIv{NC!s_?5sIRRj{Pj;To1^)z>Mlz~okXt9)fw>=@01NQ4*y|0$_8Ajckt(!H8v zyYy6~Y)m7Vn_EBnmkn+Oqjl!s*r`N)4>|U37Z7G=9_s!39DBA4sWVlyVN6a)h<#tb zyI@rz&J_!+y!xJlnO*(n_T(joby`8h8XGd7tgL_gi?;mA`rYG~pIKRpgsWeztlu?i z`9%D`S8QJulsh@9a$^YwcS`%r6GsfY@@V_cqAyaAIEPMoB9a(+%52#4>UWjFs=vH2 zk_eBeD&HqRVm=Z3AUO;RD|GG0kVye?_z@)PvPlT{9qLnh-m^_3Z-Tsfn1XN06ZSo) zG~`i^Euo2F*5ikmDN99b}o{Eh)qRMu=iiFChuuAj$RUsvRoA< z8^(ZrdKi+#?bAyqt3F-YzfY&AEFc7(mFy)YAn-zl*7XhNn>u z0s!hPZbcM|zduyj*#+i|pz}ApQzk39NqP@{sw(YREFj0iM1#RuPzs+n>bmI=)EyF)2s2<8h(yTt`|nfE-pgXu zO>0Z>5iS2L5N`k?p@w$@4Pku2?N62sTgxW}(-3&q^W1c8!%DC=HVS3(5ufV9S_BX< zhxFjL@=&|-669wY7yDY+$~PWzQ=%Y|XxIu5Hy)M*DHmO~%$Ty(7z019TG%2Z?yV0w zvTU2sC^rc#xgr4?{Rp5{rpfWz83jhw@pza#AH=D}7lb{6X7Hr_;{!fVxq-xGm2T_P z!m~J4G=5|Y@V}SkzZ|rXX)AEkU4y9-#vwL}1PBEAb|7df#9hHpcJ3$QqaS*YG=I0W}7ITwC{445ul=# z*ze?jj39|UfLd+7ErfX;6BOhS$c3TLK@P!Ta;O&yd@ptvSm5xuF!Xxu?tKFd5`}QX zll8my3pBip1{Rs|&G^`C2OHy$5xZdMbs+XQzZO=E2aK*jVP2z-oDwZ@xjFtK-R9`a zG8}z_xmbL&~;)e@aLT%`94*-CM?T|0M`08}R&!lZ%$3)|4NtNIUfsvSv z%~sKZJH0EM)vrQ~ZW)cir*96Wbf#+EANd)i9Z~0BEmo6~wtNUSJXNuoHYAS1_swqw z0}sY0tHR(Ae!wBM(Y!PCj zAbF$Z`5jOIo$~lh z$v3=Oj92qesm2`;uN`q#wh#M!TgthX$SYTC(6LRbSaaI3WnU~+&FE4m$}+ik6Zh1T zj&A59#v+-sJ-xL4@n3hiQi)o3rc@XNV68;P&021j|8tv1si6P^J=;MS`Ye*$DOYPKt!Fev#xJKq*_L$X|4~r=S z=LfsMh$x-M%w;7oUy?+X^GKpu^X%R`VAzGS4g1_V&ik=lVAq)?z6^P<-o%9nd0-?% zp6nR3J-vd-;C8$0;Il-6M+^ZF~=*g%lIJwhZ%5&KVRoD} z9CitHg5Hrgykf(!`-dlEkR&W+zwsm#Zucd8k(B%3y?9zt`(8eF;XCk_l&;+^Nan=719tvHQvJUgh{dP@fLjXn|~7%&Rqwk z`D_!i6!#7IeImZ2>wN%%M+@O+W}k>h$-UDLPvyh+8rS3n#`&aQe*>~%PgweSe}jH{ zYGqeZUGJzRzQf4Zeq0Bu#_{Sv73GW#rAE--a{zv__9rT&w~UFAXcXFBdHK+Kl^`~D zXXlV=>0!SYwRH0xwKD8Opo`+UOL8UJ`UI2i7mCtQd$^zO(zv z#nsl;^T1o`QIzpS<{QWch|9|4{6Fmtx3ZnD;rwK3AUMl_Gvrik?Tu>lnt9dc_4CCR zQee+N0Jab&0UXaJt(65#BUtx15#T_}=~K1!#}+heO`lg;-VvK%)!mI>Cr+P#)eXrP zkY6Nl!!=Nsl8D55=A@w42}vBOR@`jxTDYo{EtG2-`PXfB-oq7W6Nap}j#5USDY8-+ zFp0vZAbDFWu-m98F}75cp=4f1#nfTFMk;G zB2}X}^=8h3v4&OG4nD>0I(2)ZzV8dfCIXlUBGVv!>>uTI>`iRW`y$qVg%dZ`;$`Ju zP$y6R>kS7s|G5#rBq78RWAOP{{riU)7ypfHY2u$lN9pKkLS8Q(JuD0U7tX1`w(LVctOVtDsbx0u2shq0{ zEzQj4Yn3B|dZ0lPwwf==f$doPxS!sbchay}a7&1iHg8MlLw+QS?;lQzcjLRcd9zc1 za}?}B%+QChx0kgJ3&ekdH}?-~9TA8#n09ME?~qJ1tg}ju6HhCM;iPShQ9ipQHVSVh zC8Mk*G<@reUL)|w*=4cqt;1qCuA70ScXny22Gq7E9CQIOgTYH^8S0+d_piF{wJ z1MVLV3+Il_`O8nX=6q<+KnIe?_8RrG%krDfo!T*D>M(@%UUn$s!Gie$*hR}>O@Upy zghBz<@h!j@{ptp}m&z1EX4J&UalIQc&ybcunZPi5P_Zk62!6U#dT4NtKok5|pvxYENj*V(X2&tT$7m>}Q9TS+{5EchJ6JiG~sCy$|bbrX!& zi3Ml?Celyr?wfL^08;_PB=KZ(3lT<(@y+x_)d>i3daTgo;q7pqf*9hZkFvGSeo|0+ znr&zO)6u%4KM}k%9*^1|1lUnuDl+T4s+(7!9QM~RdhtZqwX@DBFwYG-DLB$;ie|TS zhTG1KQpO|b4bn~yd+voO*S{TQ&;5nKPi4<2i zl~t15tJIMNvQjxmOdt(Cet7%)1EiER00{JPeB)3^dv_z4?HV?chH=z0M0K!Cl2f1& z3OnwnKa?Fer;okt5@>oG@r{4A22X4@QR3rL zTpvfln(+I#)izatIjbSI2by}5zorS^$eQV?H*W%a0TBw;_T9wA74cDM$vIC-k9^@q z?&#-WI_1hC`5K1aN0`yaGJ)0b>;#hHgu@(?DtQ5U=IdgJlNn@H6=+2eYp>GM{b?eF zvu!6r$fL+_4Zm0XVEaZ&3>!`tMCU+MIBc?}LM=BdX)2sPegG;ooWp|F9B|iJkUzB7 z&4B!Y?T{xR7ojQ1s3=|VB~{#RKUAt)`d(&B_BgiW6Llixq9_FDsxy6II3K+f3+|~{de11apPH6CN#dfV5p&Usi23JQfWyT} zP8MS$G$Z~Ie8k+qInr_CEqtPQbC-Q(=NBpGb&3@6$WcPwJgWp&C6?xzA;vE(CQhqJ zo{`D=OxC9Albs=Pm%UBS@Z^o;0$ z3(Ays%1-*<>lNt_53#Zyoo~W4<;hNAHpl{Vb}(X+*_2k|^r0CmI>MZNG&to`bmbtG z2E@dIs1tXgio}M&c{)VP3?IXuRe*QqjD4K@2t_g;xmg51#XQ$uR$MBh=vD3%g1-j# z_R>4Hr5dn;KMIcZr4YOb5)JtSKd~3R{06Fzm=w0ooK%p`A2=V)`tt{_=Wu{gnL;r9 z*qfXZ%AZRZ-Vm2A*>20dg%E1H+eIaXf*4T}7;`S2KX8{_{}l|=>p-pAk``17!C#_> zQ+9;nJ1PUScR)*62rU6A1X*9D5IpO3FF)L6c&E7OOY#Q_4e6Bf#?dbT{Znz^3}r!C zBho1Z6H7M$T(k#9R5nKnJ&YZQ^J}1l9tjl`CgACg>6qBl3&wF`FYqtB`GFsDPoY`o zzwX?YW}RK|*KjAc$K`My0-1DnKp~Tx9dMU@*t3`-4~gI%dBxxF%_PLE*E~Y}tkEOH zMzoE_aet{_CO>x^?e3#U1!S7FaJDYV{A6!py2<<+uE-#S{lJBw!fk}hmFKAG!OFy} z&k_3KCYougO$-ymy5@Vs#58^jpYKV9#Yt}D$~1O^=kW7}>3BhKfMI&?@(k=aOnU=C zOi=V&<`Jl=lut}NUnDEFD03LGC||&J(3-ISYkE;81yV&I`n`W>Thzixtmxd0`L~!GKp#+Mwc5~2eG)%dv0@2(K!ghL7Le5CiIq1$_!m$u-!M^EyQb#Tqsc}$Z z+|5BhyExZqh>9e^1%CXBPd!Q%+5fmhCZqihdh4vuqXa`gJ%N7Db6lGsVEa4MObn$(idZBCCbnVX*Mb9(&A+`NbC!s9Tl1$Mlh z)&iF-%+>;7g#lK6{T9jGTol2b=2^0G!0-a3d@5%0PAn8{=(b@s(|~}2Tp1}KoVOTk zEpaZ-M1QiF3<||h81z0iPZuF`T8SH)wGhYCg~OdiqLzqOh(=ZFw-foyv-h}OFZCZz zbwi736;{UQd4WM~l7_LhUyS;4=F#6g)z z#DJjs74M--0$6uZ*h_DPSi%W;;fXj*Uc1vfzVK~X!~At5AHiu zX2aG3Oy6A$X8*{eUM<5?wXC(Au2>1!FM*K&46K$FJkc4m<%^WQcEM?`*=@I^?a?EH4>Zk!~ zQr_k4a7n4|C}Fclf~JFOwc}!CmyYGz6R5pbw8xo-Vd9)QSOu+kCc+7*(7rewwyB1L zfE-DPL%8UdM!USoS)qk^Y~XPP9@n@5vz)^*2{b-`dPRbu_2>>ZjKwSG@1X7uVFH*l zZ5j?N$)@Hl;k)c*2k@z|1WxkV1FM-lD^z+ORjN(#B~TY&6-R+R^PJyex8Sj^7mWO8 zt0=XPLIL~x4}$U@lS;77PHbybF!FYCb+ZhV%hdZUmrma=5lxl|Fs_@_|^UmduZ%`m(hzXx4U6;uKgX+P|i4a7_#>H)OYECd(<`v9c`+=&FN zs0~)ZcRT%BVza#n(U!Wi*0jhn956C+T1USu9V2!892e;PG?ns*=Tp?TkfOcDSKX@BPc5ZO|G$Q6j zH4#(%H!3*&FwNiypU*JhV8TBVh!+i(ZB^Hw3db=RlV81gfH~f+QkW zwd8z;rB_cUaE{c^m`EUBClT8!w{Z>%!%5nju>KjX7;VI>RMEs&?~vuelL?RpvBelJ zz7B7Gx5Vs@jOjt&1d=7<52Bc)a>@MeJ`lZ1v;Z6OL6*pBLSZ?13{6Q{YdHJiHsP$r zQ?naRcTk7In?EYq+*5#v4*#qiv&DR>+PqgBwA}0AV!TD5cbUHCCYiqGT25bea~ujl zyR?fZ{Hq1RJ^0kxlWaC3=EqJS3Wdz~E9>6RgUGBl-?HK&jMk8NIfYTB`FJK7zv>3e zm~iRS8I*jy`wmDok}0rZGkTFlgvn?y6sOlUF%2~Q2LA&+GOD+#Y`14UOs=2U)X%0o z2jyrzQgV7d88*^y<>-LY5wWmxa4VxnY>CQLS%Bvr~__TK+3`5Z?Eu4 zcv=nZMQz^7VQtDWx^i(&M+5=GbfA<0^CP#O|M9zli8e{tv?eXX?yc-7*u zC=G>i&K&fE1tBqHh)flF-#6P;&UdvED4j=Kt8Dwl-FvwNb~l?ig{M}Ywf~EAVZwY> z6EzCo=n&T7Xm4Yv&ry4NrNAXd?mAmSZGW;rLTw*)1`IK#_|M5&g*+)M07(*oQi=+R zlQFOrc??{{9-u#*S$f6ORWdn@(bEG@YTl|rVch?E=?+ZBf0USgkug|@)X@5;tUCcL znYXdIdIIYysu|4w^_x3Vq><1p?8SDw@){sOx^d?BBLf){MGIb}DMA|S!@{t<2|y~mlmRi)z4Qx3a#g8tBzm*>JPwh;W$M zOqI&%CVg|56G~lkfWKCI5=_IgrmE7= zlpPGEeI_Jp$Fx$Hf%UeH{*CuO_yzfwbD>E@LDqTc{?v9DQacbo4LDWq=)l(Rcs$f| zfo9fku9DEmgaKVc^Z>P?hj>+L{0tg^TkswZDiA};T=$T7@KxR!I}|267C^ane1MNd zjZukroDF<~AVY!RY5$E^dy6asG(@ECjO`mWKjRt~GCxgQIg;4;?@bi6&YLK@Y0Evx>D($yZ4cf+lTw|$ zS6O3b;KshjnkQTOYKdb{oxqEC89T%Z3`C^}cSNT?A0sS5n$;zAHKI&N_FI&4n+JW* zUP1aQ4cwFCJqTQdxFxWuE{WEDgf#OJKV64448uaPKQ+=B{ zG4FWX;BM-Gq`RpLW(spf3aeS6+C}%j5Wqiky1So)V79l-WDDpwl1)jM7#>#TPleMvl{8{l%zC5|y<1V( zB`0Itx(LZv5|_DHvak|Y>aN5zI1kg{;(h#^$oyoP!90#`!1$RsY!U3huvMsWK5AT& zQDc~~a}DV)DqE}l)$My>EvkE*f+|Bvk&=t_AX=3dz6XhPhGb3ch5_z;~dJ} z-e60o>DcXKhMb^7bv3udZncl-9iqg3)_4e1;9so)j)O~Q-;`8fLlvT;p8WX*WMUr3 zM-qo0^7lvb!WWEah~)S9qoQhtmJ2=+b9btT!BBtT1w);B=YyPW4*`-J4ArT|xaiTX z*s&!)_C3QCMs(#!qUe^{-sHT0h73;+kg&weh<(12WlDDeFN3}E2-1uO<+OSe5jG_< znb~}1x-rA#^wg~Y3}4~Osez9x!yXPrdr9NM8^^J6*Pu`d34=h#I?{DvjyT88y|UUs zNLe`xdttE)r(?3tsz5PJ*6En6`&OINFV+UE-DbiCE(D&9mFTrF&JSNL|F-07!8_pTpc2esjFK+feO3760yHwB4Ub7s*~x>O)>+_kCStaM9~?4 zxyKzxrB&GXw{QcqiQJ+rXr@dVEB-E?Xc&f~1p1xUEGqn(#Tz61nuSr0X!zeo+v1{~ zdr&-vsmfRRCekYw96(F-q<~l8tb)er!Q=tii%&WlmS0@M%~);4aGgm7VEX3=11}R3 zPnBhYUDqbM=c+^w^-0$$2E<7k`&;sZjwzDimoO^%OHlRMnLa?{P}DZ}1dvk+Q;NI1 zQ0k+*;jvM}OtVC2F23m=3bGQ;I z$LG2aTY;jEfR>m)X=+-BMSQdTYeM2#v)ev)1CMg5Cr#y+{2z=yT@gT-(;CpX1Y-}O zNC#km;$N)+m-@QL37M<>IdJB_Zc+tkes5j;U>yhBS$&#_7&LFXL&ZS6*_e` zKL-QI&6OK|EAkj_r#0Gp-!A(1dVCC{rsq%bPtPK zmlvePQrMbX3Q^O7${}kJBtMML>+VBDHXyJz`%;T)Xcc_He ztwiSqf^!xJf(upz3KzhLHKz}U0XB>`-MDt#hHcBnYBTnT3#^clz7h%&{e>8lm0XTL zciXZpWPX@d7{Z&kl_cSdQ1tG@6gSagEo)}n#y!iD;%e)n5(N2~1Y}A*R6|oWo~Y1j z|0oX<#S23gF8>z{&2asSOzzWB#wG#$c^7itEdY3K-RLIvk6S6t##xNbu?sqf)!c|T z)>woaI~5i7K?Qw`3inM|_`uqJ<@vBe^nS9)p}6kj7V!PabZLb-yD^ zL2_U81AU2dxi3apH_BLl_=6iZ*zcQDlvn-s>DCzMyEF2#+3FVd+GDGbzNdtEV^PMC zNksen*Bub?!`}Y;i#Z;B&`An9P#0GqKmqW{S#TJg5e(;d*-iJL2y$p)Cxhr9M_0g< zI3k??87ybm*)M2~ly3_(&}lh>%Sw?GSN6pUIR9<|U<6{yo7OSnl>BgN3(S15YR)P( z;!iAxyTjsV8EeGQJMX(r9>5FkJun?yE;kc`i92ny8*M5>W>8 z+XFv)lp{)GwiRu)LhI^x;cCi%16?z;5!aL{63~NC8xCzS_AtY~YESOIBrlr(IetM) z#fiNA$Zv_4AJc93;z{Ca>^?$yRUIRy=4ot!3i>=9Ca)0{;lww$gv)m>-yg9O;a(|( zVJ|NSv~c~F;^f;AbBD8?0@p&uMTyB%$q-JMMwJCy@}X+vNxZZ+a78<&8e&<%|H+!u z8z?+`YM}7+QXI&EQ>qHgv1Zi>qkd&y-g3GUR6juD5mJjG|6Mx`N9n6zduAIGNC-AW zeR;x;`;{4Vu7JwsDRtGY9pptsoE?wmBcNKM=&|QHVV6&;sN9HybG+GZTk!U*KLw<} z3lAtmjc^^@m{QjVZj7@C2J9O~B7)dRJo6q|m*+XL-SoFV;q?QPI0YfbHwvp!xNn(W zf=75Zi^9IxNZdB5U4Fm9GwnO3zKReL)71TUsf2g6Tn7?2PvW`|!QEB`bC>;E@$OV| z|7vr_2zAvyIYH2Wh?>2+OUE8!jz8w!&Y1^si~CU#Brd|$(!UHxL0$-sf>R?RbAg}* zrhe5Pwj3!Ipj|JY$_rs9F#28;k@vznz8pS-sF)X?y!EOwBfpDIlTmgl{#@*j$%#`^ z$+2QtNe-7au@@dHnAr2&Wo+afx05`PNf7E1mq*Cc?^4n$$=~PMpNDWMDR;~!Mi*=v zIs8G~;420)xWRYGr}Yww>M;KeKEqr=T7&kZ#-kVzkpNOqFniU#Jyy0q{d)Qat1pTa z7~H<{vA5K{RmPo4-<;_?F=)VIMq1u8MiQ6QbX3)Vm8&Z7Z{C)wh3H^j zN7aQO@uTzL%&|hiOC%De415;6X2qvstif1;IESchxbx~*qVj8sw7`ZN_+ca_JoSu+ z3bSRP0c++|G;E-u8Vd{3+NEjO_6hKv_W{10+Z`3J-KgIk4E(J9tMLjn2CRB95C*~* zv9ei->2TV@hW6OW9=xJI|4lXtL{fvxZ=k+nY`KAJ8UOI41s_fy{xcHy@i9ok50Iqw=|M?? zFgU&JcS6W*A6bm==6WJhZEce7)Tco7zmpCbv}q991RCxqvY?RT;0wnVtWtw^YqHv% z>Wl+B(URRPh)H`AmQD@0Ehko79J__v^w_(R#16Ba=*~JT@xY4n#7Yl=B0^4PDA( zq}b@T5za{kDgoxF1gL21@9Tx!s_b!JzqU8}8U;ivK?JeIA{$|gMcW=+AlgAF{934f zb*W!V)vq4>LPjnApIFB?h4D6gh?I5dPyze40_}0A4qq=uTvRCoboVS5~<;zvhbenuCLP!7xCC3W&xg{N;B_ zZ8&5jTr-e*?wg+k-(q`R}7qJbny2q-UoBVSkquh5lAECz~MgN31ni z{kqTw)w^LhTT*rgdHXU~B4rN3*;x+?L6xt;Vb;7X*w+I#TrzO>#PO|Y+QbGb>pw>~ z{~vSj0v|t0ztu9ENFbR2927itwC*@h)OmjFbf+A%FFtSF9fR)VOQbo~AqCDND{UWJ7z04GoJ73|Q$pQ-wZT-_`z(_szB0yM&X&4p~iYqWU* z*L%PN9Nh_lOB~&6mpB`_EYv<^&@#IA3a`bKnIiEoN0(!|+$rVShqS)H0?Syl-G`7n zqgS#$d47sbM@`X8Lgh@+gAW2R{|R8DmuIf+*vr1jy?k7zkHVT_6h5e|CU=BX{}vMf zV;lNr?Z&5Zz^5s|InUpJOwIG(D!};(g2-?RV4{$Fm|-$mBWg+@tHr3i00hDDLf)*x zZ}7oYxWPJ}B!#;-)m^i?lQ@6suqABz@|BB}(wLTwFs6I@1P;=hDA8OHH0>Z{wb6<| zGcsb*8X8T*of&3xMtA^zV_`0>D*|fe+$fo%fS$FV%TDB447#WKDH-$O4C>+J7;@U~naO>X`Qa^p} zL86ggqge_MK$oR}5V1k2;0}xEptT%{LRFa{s_$AxBx5VxejA)mMInn}i&7_sEef9~ zw$K>!Hs**3>IP4DqGdx)nA@jG)kzA(6o>1VHx*4oL8!P_Q&lRDYc%8oRB>CN9mcu- z5lj1es<|9hQ^y(WRQqRWf|B4Xg6yy@#`Sd+DDAuCStC*{-j>W?XXb1?U>Bma)u~5y zB#RY;@ZWcjdKyby2oBsH<+T2JdSvcX4)2SW5smP5l*jV@DTmi{vov@^ri+_qss2=R z48rjjWf_qw&{M&fEN#KNcoF3yvg*C@;pnP&AqzpL#u9-+CDO-pQ%pgs8+|x!@HT$P z4`Ku*;VKa+&9@%S#md(#(PQO{XjFi~faUwZIR)GIKo|dlah=iu#9H4U9OM`X6SL$i zHID2OED)<;fp`-Zh|OB=B2EctB5Hyl$coS<=bC*QzSNeFIceU`&6FoqAK~4+ol3T3 zp#Zl0imQu;L5~N(T!<7EMwOJv^#EBoU(9<>2~B5BQ(P@;8hbbfRY{`wNG?V**4^OR z7()Kmme)Ok3x*AnTVW$7>PKE@Kk@^>6)hDqiJSv4@DrTq%0tbnuF+YsMqqW0 zw%$)Ek#>DT6|!E6mH6-B>q((=7&%;_8EIVUbzA&BqBLgQ}hKLdY;QcTLDk(Y%s~1jOps587%ZtfZqT zDq_w-6lz*@nhM)61}?i&da&?sgfbF21SI0AE#l|j_QhU+(K^-0FE+a43idWETJ}oO zq{o=MU{np1B`GLcElI_0U--ayWlug60EI9J$1Um%iqqS{*-!ti?N| zlY$SRp6N9TvvAG9NPHmv;tPd~flr`2=tP`PD5Hb$i7e~wZ{LAyVM&&QUO}r_k|%s5 z$|vwW|GMB4hw48?`6Z~4RuBjTvH;v=tGhyU9CxRwJ7E^?aIv~8$2;sl;YKl;#HCB) z=wX2R)MDet3`l6HbI?cx<5hAwN6F`B_7bI&kE>KG$^2njGc4@OU# zZxZeDIC;76qFV^aSV-Ax7s6s`M##2N(?+>CdwP*Pc1xXL!}7CG-DP0pa91Y16cs=g zgMfTPm9Pfo^k{Lvn{Tz=xwIfk073zw#MQ}l$`eR}B%~*4d`c8=T4SbNa-~}t8 zUW78`4GlGJ!^^X+}OINf{QPGNmH}zaNtc zsGObpa5G_yq|aU040D=tuZyJLc7CFS;z4gzjYUmS7B2XBmK(n_G3xjfhQJA5ze6E~ zo5Z;d%XY8k_KB&nx!uL2Zuwo5-wLyIFi^^PwTjP*#yi9}9Jrcy zf5e@Z7*8-Uo5&Nvgg(iFrC)MK%9rei=c%ldLX}u09PTVheP$sS3s3w-36BF%E8YZw zR8UX_FC8})dUS_U>s-C7CPq6=JoecCSrecAS@oj$f7JxmfeDBz2cqUVO?>jV#9p+L zIQ9`yL@pyZ!h2>vzGjQ+Yaz^iY@00x^HZ@W)Wd-N@lOhy+aKK@O6%N0XJnq{v~bV< zv{32bZy&qPDKHg54*PU9U`U|Skg?qbf1;lsv9sO&#jM@!iF+Y1&A;V~+>lW-WCb0%X1^w^svs9eVNY?5t|TaT zN1FNq+pd-`o49j}MkZyneB}JDMR#4t%F|I9Er=J9{{DT~aeDnk>^P|{LN1TduX(#R zVO?;`k)d5!wLOgw=IweH4+1AlZ5oyKZamq!uMrb=HwTk?8s1QO2)qcL zZ9eRpxgGq?VF!*+0RNu

    @Q*j=w&~-MoDOzxD_PzCa=!21vn9;P3izC-&XqkdoXK zv|N$+jK)&z4pfH(M@Z-PPyf+1=|7MMAs{H?t85HG*=+P0J9KQZxn)PN<$UGwjT3e% zb(0r_w(`gO0saJ_tck`eRD1*0;t>7DtjxqkC(KLK)L}5Y!~u+8$et$XOf|Y-5NIa~ zr$lMSCgmHx$hFuKyxxtigG|vGy}9rEv6#c^Jj0>(?^Y^m$A0UEK)!_fk+6XcdhXlE z8|O8e0aXovi^{0yi0O!?~{@5!_e_4=eAYh~uaj}b?K{1`hcLt$p zs-3~N03%K*G{a95PD0Ss>o%fi;#jcF8gvwtUbq*fiP7>6+6s+DI=;n51SXKN_SjS? z8HVf#cq60Wfe>Dg=UAB3^I{Bx?}N~ZsGH7)FATO&v%(fi@DByx094n8KIpQYif2&Y zA0-&bRfH4|DCiCCNuy^3Ot!2zcdd4JL)Ghn0tAc>0-VP19r!;*ZQC(eRAfl&^EfTg z$kXf*=@7j9P@&k6hYUs)p|*7G*59H>jp0^8;t^VmLLOPjhgQ)sC<#OM<;m?xII35z zOFx0SB%cvv^u3vVNP-CUQ6ok81gwkr+8VlZXS*q@yP8E*%wY@k53;8KkeWqovs#{3 zZ9+X|=#y6U778_m%ki6kD(Ph$Og^{%ae_PF%d9pFpwULe$Dh z5Ox#9rZAUy_%e9{gtPe4nKY4wENUHvsRz5dyx~Tu7ZcdC%9X{Zbu581MLIkJ`nLv7 z=6DXnB%_0ygLzqW7Okj6_P#~VjomKROQccS{6s5+(rQ5)r#KK3pV<+;!o@^ zz}U>lXBZKzm^eOg8PxD^GJOXx&cXstQRx^^=Q*I#-<|4EXoM7sr6$*%_D2Ij6m=v> zL&ybThO2XNT3)|whyNEf>Bc=#S@YQ2;&+0unb<*wx= z{4*4%jYuiQAvO~wm#l3u^OLYApt3lZG)X1HHUOS zfYC#iQMe^ipCI0GoH+iW=VezGNeDRI9XQ!n@U0M0;>VjvMEv-gP9O7|Ziz^Bd6zZz zRuEA#_1uB6NCrbU_V{wY@D*$)5p4$%5k)wJK{)~pq0cm00B6m(@DFp$!Ugdchzvc9 zKq3F&eZhCg{%J;g&u^`laiAJCHsd$vDK0I)^A-Haz$#kN8{LvAMoow>R+*6LwW>1G zGMZrlZ$Xn!8`b75_~)Edh7HJtlcNJvz5fhv${H+#IYfGtc6X3=8x`$t7ux-eH@69W z2kpM47a;6+@mBj9&@OJcz=@e^?R0~6hs)hv39`;d`Hn^X^PqJ<(i1{ERisjA(;ER0qlaVFHbcNAd} z$dt1BI?015gdE^IGT<# zep=P(7;t+qba~`(5T`r>0V^4~sZ$6eMpbp(r_Bh)$o8x1h)+|jOT@h$&?(diWtOP@lO^r)&8sH%g4<_*2JyZGq3 zLe%Ze{RwVV#aV6D;frxA!b})NQ#cRzC=B8Y=i?`ksTfw|K2l_&iWgqYF;Q?pK-L42 zU>&P-A^oJejBk-1ZO)nYGZb^;geinNB=-rZaqZkdk*V7Q;DJ7W4bMO8Z%LIh^$Zhkb>?uw8sWfE|c#pr(mx6WB>eAfZfjSVhRBfOUtct8)a5 zWwkO8i9!kL4AW^Fdt%Z|iaOHlC}?RSkd!oA#tu4SFhQDq4}S^hI2476AAicFOI(^I ze(Wvyes9ujn>F{wPSWfkk!DFX89$WfehxaGm5LM1Ac16Q2D_~AJ$jI2Eu}IAbXHz3aGB6S!uzyT}m_boze^^6?-SmqV%mIzVsx` zAoxU@fx5A}o7ifts*A}luw2nK&4sE*N_$L{TUz)_nHVxDv5TOXK%FqH;iBY8VnVVt zE4=h7B8R+9j|{j4yqGgtHwLf8Pc_9StOZ~3uXXF~NG30}*uSDTU?*Wx_)f2dN&l9( zFiDgmIoPjYP><@nAVs3fk0>WqT0ksd&Px;~f8wYnh+MT)8{|0xTfRbn=sr203Kist z0>P@1vD3CWkLe%5@V7+~D64*XWPIUf|EL zO@9QoW$6Auk!&9WAk7F>YYreTKE(9HrPM6S^C>;1)bI?4_S6Ue#!!tqht4qLPsD%T zBk-T+z{C{-=w}Lemu;}du2;hN=3-XCCC4DFJ)pQ5bzG64?$KZ2zi~J+5!sDe9EHn^ zj3G`p06t+Eoxx%_EivXqbmj>3UWyMYIxwy;wJWgfc8sUUW#Ng&)54k~&LJzM&_&We zIhk8x;Wn~ewdROwcnCKm#GXEY4p?gawgSN7w@Oai6mCOb`G+-0D=WY*8hh{P%7}yk zp<@l(AX{Yhs9wGGWMI2?De%_@Wq_QAHcL;fXz+?c(Pv?Ar&tiMiTa7OqO>k0&-lRl zY|GAewSN|=E0d0hUd8=!we+zb4{xDP=0=Aw+;N?Z`V_V)KAfj!)9DMSld%feUl2r5 z-bOgAI5b@@m+&+;09~9HXU*s?ItG+ks3Wb-jt{RrnhFB)FUiMVpvpIzKo5 zsZ764LINYQSiM|AxRh@h$hZ*rti=;|z)2@=EN`(pu;PY!y1=OaExY$p9B~f}rcS0C83=OJrp&RfEbMrFj z{6cI|=V7Zl3tQH1V`PRgb^u(~NC)-^qAOI#nqcFo2k7ew-igcDgm(Aptkqi8PwXhI zb_?sbho8dp6z!gdj0UXm1zD{kjhRFlopV7WF|k%j)cP@?BCF1`6WE6qJ_<$g1?lT( zWnsu|g)K1agWyi=PL$v+^qADJ0;IwI4IVgq)Xs`UEkUe?&+m5`LIBl^#4z@%h*3=_qAq!M;#v5Cs$7IzmHASX5mF1jEyS*waje+K^S zW=>-a6noJ=TN&Y%z=MVVm^vKWGI#}82x>{t0BNk;4^5qLlZ zUJ$`}oR>;Lr7rtJ!XF7MgJ~fQraBC!WiXgdITeJ{wU}`F+r6|H4QV09R!GJqY2k&m zz?wWNEj)2);b~X&uAEpKmmuuK}Bw3OomZ3KtkYi0kaEyS(~>2D6dKXB51i@Nu=$c>YTOB zeSI(_I1?2aa(Y9Yq8qHIK8aIwl$4DdG9Bu6mi@`pY%Wt2e0GL4`V&yJv%Tox;rNNW z+wDQH`2c!ha_3+#NZ5+k;7Ku&72q&#{9Fs5@e{6(a#Vv%B@2(q!|^x|WR>qRJZE^C zJcTHU=nZq=V-rkV#$6)7v=3hyq>;vG;Qgrqhil-;CTPm|3y!06m^(F5mE87ew+{qCtdX- z3Z8u$o?sn6aruu0Q)3lQ@Lz^hd?}D5s0O18ol%Js!t=h;`JsVio=7!2CPNSHOq=aN zsCjTWdJ+oBM24h2tehhXF~hCXRwvp5=%k62k7l8+AzU<>ms@D0h@8}dV;^UZ8$nDS*_sJ>b;hi7!#;4`;4}c{E z_lB@7&TnpyA%?Kgoke_-#9MG86N*m3*=eS^%w?z*{D&lA*Jt2Jm47&W9?bqeGuLZg z14Tc8e^+Fb7Hshu&9GlJ!Ty-_N*1TRR@8=@l)ykwP2XzN(DDnMZ}-t%2?`iIm~h&S zhmB@`0L1|gN;%%#-QJWvI5!3r`-%*23c^98T%Y01h2ni9sHA=9?2B|}1)b#9bJyzy zZL_eUauIfF&PF)|Wrd#;tIK9}DL?84UO`y#^!$a00^>07)$#pXQC^{o^P@dG9&oih z>x-nH<$uDpQlJOb?SxmjIHjm;DS{XH2mK2!GrD=W&%6|->M@y!8R5-c3lN5Fu#RuO zAHYw|^qDi0+ZY72z7 zcsP9^Q7Bri3pYAg@#X$dnzF-ZjL?ml8NL)Kj}nt6r6L1{qgjWS7JNSEaGx>5jh^Nw z_0)PjL%dL*o5Pef>F?sQG8f}w{UO#ZCv!B%nrGaThr6KE{B5auWd;Imr~$?3!oXu+;c%sc|JnC280&9=RJiY$tUbvTN~Whar;@qZ?Z1@j?Iq z4%yi44}fega?7yYHY;J+iqbm|TTYL|R`F3c!=b1^McoBx~A3|)BS1Mau1xdec8X7%41&SoVdyN%9*cQ{__RSba;STFXm2q z##cPzA!ojZ>{*UkTAV!va;+AN2K2Hp!`oCyUW7G_jegVb1u2yl0JBHB=16rb?yU9W4?#!dUOM(mz`^^* zU;*(bps!XPIGC?GKpy|_`zOG;hH0*)D3ShLVmlz(Lk{U|X^%*Yz5ZNyRm;>l|iM%BCibpoI zubw!Gx=b@RkmCWQ!a8nAa^Ogol|LVWH|q7sz?sIXcmg31`pMVS;-g3_O<|Y_G=W4I z%spJl+K`)(7o5Amg@1VB!cTKlUZ}Y*AvKoe;9jd5g@K0xkR!6&I%+wvjPMEk7^ho! zF~cm#-ebkfI;;XWY&d##dz(=ZOjMEI3(m)r$ixjdSV{wChipa#pJ_#fPP5?bs&UiI3 z5<{%u(L{2rPw^(~pGa(~ww8M^C^eVLps-8qOOq!9*ahyw`9vXiji3;~It%^xV-&TX z_(_(|k%8W;YN=6Nh0Dt0@rhNq2aFZVM|>A;+8=V7g1LYrV_o;qhIae+V$M-xWa>Gx z@`s&<1z_9B!o@yZh-pH$o8%^Z=82$Gn>2vg%fgDZflG%eB^L*tIw0@>!8lk@cb_0y zF9BVB4Ax$TzyzuyOu*G>Le>4Z)&pxp(G>8>a3DmvXm6=e z3~Ca_6RLl7JX`sG;?aU_WiFFXfbGW=wsYcRoA9M|N)vI-s^Wb?T!6L_*But?OMl=s z$9@cekwxYZ{JXCd@L#}1fnNjv^*0Gq7MPcAf-N-++pxVMRlDa^z5lCv=yh;)?b$;D zTky=Eo6wj{@9R#BHFgXU2jaNM{tYp~nT+Hh7-;8dl>g{{^A3~?fPVe5uP{mVPh&xi*=KM!?JKSQ#*pr2=Yq@QhTKtEm0C=#Ta zQNrhiD#m9thQG!06eV(=S}Gz(dT%Il4K+eAlrHwv=Ey9QPpt=D$J8)ngO$CVD@i;j z#tO+4v93oURXh2z)alHc5;T*D9U0`r=@YCYP_6(n&##ebf-Oosum+={7OXgheQtZ?-&M8M!UHVPtufSs1(3szhD+bId*UECn{5ExQscvORw<1!B zZb+yGPR0%E=evy6XY>hVVdCD2FB)BGOX1=XA)M7ISSOk?QY}~GSs|WT{!!Geow6z0 zSL68BJV4`=gG(^G_I!$``T=6nYrf1r0=;W-aYh1su(Z-sD;^4WHr?++S&l30IO$sW z1eAL=b!m!C>r-@CFwU$E16*-SjEH1_Ie2y{r6qh5@mn{SF2cITE;wNr*-oedc+K(q&mwa2a2ezJ+BsV+pGZ}ahcE*`r;^k`dhL%N@;*H zmQY<&BX+*Gdf)k?)z^Qy`v_JVanW~RsM0xz)+2!>n7|G;$xlWA4g_^>!z{9%+D0v+ zJf z0g$@-{9+b)h((5WSL6&98G#~+yGCS*iMmV@y2rn#)|0Xo02@|RL5&}8OHhJjI;Ox7 z9_EyS-YIax{ZZW!T-}HWxM0b#!BQN)s~T0;;Ge@UP3d+pKP@mcP7~{;P6v_8h)Aod z=nz+9Us%l(pHj5!y+JkItiNyUeW$}Rc-WRe(>yVJj00P+b}gQy1*l)#M<65Bgw^`O z18!t2E9awL!DOnks+M4_um?GG?bIrK!dOo^2L60+UYsLetFHUoQ>Tg^6@Y^grBwb&jEUhJ@RTHDuad|4VDgA&=~{HDoum23Z#F z#Tv5g;Qg?M+_}7GYe>1OblbjH+5_tuk*ts?cA5Stv}qcp&c4KKS3HYR^Ys4au)ijA~rj|1@neZ z0Q=84AvqRLG{AL==lv|oStorNS3x?cA4~#p#Fued5>+^oi}eVY5?f?lJsX;8kLuCT z^tV=-Z5!F6xN%0=OL}i;vM0)nI$%JeCff&ndRnao5f>!pE0F#H1R4XG`XeurZRj!rRUc$4p}KR?%v zU5Owl&h(bG@Q5C5Y*%~@`%PCiHvK^=IY~CQKVH~{jqP^SAGNU!LZgXRr0#5Nn`(Nt zu{}GWi>dQWk2bai&k`5$jbi0e61f^FdvXJWAk_1Gey35Su|+x*<@h5-X&{@dzsN-JMi)yDGC%>NZ{tY!?5KkQ;?UZSC4U^`5HN z{J+5w$yTrStaLh%qdn7#m9{cWgb0mtZR9Ly)%(l0o@FU5sU^d{{_aj+!7BoOn47=4 z3FJ(Fs~IKrl%1Yh{;;$c?^k9laEf=DQNwL)9W5m4?Pz^LOm7dIfVWiGz2*W=KG>vq z$G=u@=x;HFoyH3-2Se(lsfamBsuU4fXvTW`jkxGaCJ98IL%{r8e|8r3HJh#DPTURo z$vZl;#JzT+v#p1ZH(L2P=-Tzi(Pi?yuUY}Va(1DMRT*8&?)YdkaMsWJ3X_-MFX$_1 z)51^Vmu~*15wUx)Ha|O)qW(~EJt}xzoBy1=9hK3TmeHqWT1RKDlh>g}iQJO@?d~VR z1n_@GjGq< zQG?H{$}YrJVj69;>QJO*FjJUJ(IYoztU&AqNn>K9Lfv48owed>Y}vgJc&u6Q)K-2a z;{P-6t2Pw!8E;9Z3l(-J{r-=h#1`L8*;71ns(^N;ssAP@{k*H0qb&m$ zhLb)VSw-Ym~uXGvOrlDR6dm*WDl^@j$3kI1cQ=HGYGYm?%vKZ4^((0 zQy1|ydy`O~_vI*lkQ6O&28P>bo~749F!C>mXbyo9jU`i}BkI2-Hkw7SVj?RPNB#i2 z35E4Ypfa&1x{+#UpiptmjLhPiso622Aes2gIc{&kTiX17@oG}-+ohTk5PPJVKgF@; zrPpFqapO)>#l($0Q3SwPLi}I3p7@_z;h=wYV;AWESx1k2910YeRV0okNma@Zu~)*e1S+-gR{Zd6e=Wsd3@3@q#;}I5 z!uq2a-ei&Vsd8#b&TTfcoJ@DCTvj9{75d8PNa+RZweVnk>Dj)9HH8|pV>N-nqNaai zitCYtn%t<*Vo+S@fgNjl9q$q=mt(M6SUenXbQo`;T(JkL5vkakvIOXqcm#NXAUKFw zUd1FRKxoB^gIJ^SG0rR5{h%K~ie7h}Fyq?UflDWN zPIaxAaDBxU_A}s_jaAuq;Tf&%`6+lOVG?vvPw`bqS ztFYC}>tlqL{k;;l_42ZNVq^BUB~oUqmGOoWZ&4&%)*who;D-o|RdtRuk5HG11Og^& z7vKfDm#T#?#^m;B%U!?Dp3WaH>U~06FQ3}KL7iF^PQC$E*P>ni1??t$fKLz5!r5E~ z)@EORY1z!_GyL9DSr1G%^R`|w3olp&-KhS3af#p0f%9K6 zYli1kJ(W;h%_<}5|9a>}()>HPc!DEbKCPr)$V#O}bBJr|PQj}XSAVBBlLV9lqM-aB zJhn>4*2kn$zyXF@jTHRZ((iLsqYDz3(ra_5k<|iBg==qo3Z0=Si*?CaGsJf0B;rul z<7%G*Sb^<>wD5}*AGO&t0@qx6#jIkWN?$Rn_=?M>UvtUT-c$9y_IeaY$-Y`u5lZ40 zHiK`)ui8tm_g?`NaBR~;TW8z9QLodq@MZYrnU|kE>x!vbcoJ>^Z2eyaD|NVZkCn2v zI99&ncNn0;^&B8Kpuk_y{utc=5EzG_(8=2D+1Fpgak%EvnOBQ^z`Fyr@F&Dwv{OFm z6uak}Ipa!nDpiQ64rOe*C#pU@Bh_6t^YVC~uCR}awRVTRzH~Z9+qGiGC9|%Nj{0?M z3UJ={Pr?bbDmdHl7!?B>6Y-1Km^uA&O}6@M%3#$f{a!)omynhmL|#Es8tPO!QYyub zs`O#}!iVTQw!HA+H4ZpqueiSDQ1xO9AjXSJDhX#LUPR%13oqEw2KOM2z>LeUm^yt%0&}?Ha=ak=A3_QHGAP@? zXTCS(f+gfo2N~EX~Kl6`9xq|{TV-(kU8ll?2I2ribOD~zN=8aVJ zo6}q_ygSvVz9#+Te|joA_vA&=$@J&tx~T!3tXG|^x{ZB^3IGE(awP+NMv4z7^O-xd z9wp=ediu8Su_mBzI(*VG6EE3)8(zRQJ(B*!XUS{>Q!d6fl%HxeBz#;#e6a=+0+J8n zeAG)=$6iWY|K&{%U?x7tUr@4mroXjFsNoGn7 z&&g;kDNk|C6TNN5oOAhM7Rdt^Cb z{Y)&$VR;d==itbZ7Je5jA31Ydk;)2glMV*sb65g&=ZNQxx#0HEg zFmqWmm+*B2-?IWL9tL73=ho#f?xgJ|u8&KQ9Om#~Nd(Nv#BVo#ODrA4#Ut9ef@GXC zY#gx|cC=UmF2cx=3 zNlI~b1!lXAwVpz-9JK`JSW<@Lm7omh6)qRH$s!RpXzlvvhs;@04%j%zvivi`i}4d{ zG689jN);ES6Nv|tsMrJ4@b?_D$i)1{@b`ocSUU6L82ud;QEc9lh9SgmpfiM*LR7>i(`Srss)o>Qzk)XmQRH9&N&6Z{ z4aH#>5|s5G*6;Q~SQ`V(C&UIPv=|*soOj)3-TMLuvv1O1j>?D+=BW5!o}Ggo5E&*8 zCK*EVU^@NKa{FkxutY|Ov6SssoMdx6Y42W!vDx=~HHWW&R?ROwY( zw%A~!QYX`VPDI8KEuvx73Wom!D<9?;dk}%_h#q(*33}R)Sla#;`Zdr~|8LT|gB~co zpmjk{<@5WAp3$gxpU|^45k12Ij>D83lf@snN>@Y`A1j$v=TJxQEqd6Bpyx2yxa@66 zdj+c#c*QMl5M0zatyQJKv=Ae>*%G8q8K~`x@do&Md@})bcmo&*>J;9fKZj*zB5xq} z9cseQC^5lEkwi>~0gzr|3n_ZS-=Y^d1e^sxvIG!^kO+v?1SZ%urgESH_Zm}dLooF% z2-9ARs`XG4SvAZTJ#p)UKG@t2T*7|oOx}@ToiSV>h+@6gI zwV}T*>!)tnYNnvi31G&|79vL>K|GCxL%~U<&ZzW!6SCC)tD5@{N+St+fkRxrXZDM@ zeh&KVCH@-2UpvHgM7*QcDUDrE_`vX96Ber#!s-JXmA#2H6j@eDba&9T9qdq_YEVg+Vm1r8~AIH|BoYqQ>m_16A{G*nU!JuOd}`Q|2-qAcSf$RAN-_wg-_LCV_Es9E@*8XWADq-dolYj9+yLMlA*iV36Rq;dDqvn_bNz zO9JF?PsH#swReDE?Z9E>cCSwWd6X(K0-Pc$h4m=<{eX z3wqmjjKGV~b~1tg1zqV#8G&49I7*GmHit8l%Kv#Df_=sI8tjvWTsko-$x7;r9Q)9Q zE*Ef&+pu^E`O$u?;bvlhI`X3utm8`K3V%r!rLvCQ%-EXkHfUbRuea$8c;l#pl~hAKZV*lQ3a%*E!aq>Cj7*%? z7~X+;sA)WO5H}qiSh%LJDptjMA}xF&Og8q7!(mIA5FGvmuYmFy8y#RTCZO)fQn@Uw zm&>B{ybLgL*p39ROzn;d!i%&MDbd6wmX6n9 z={WABxTWLP{0Chv%NoN`*|K!K44bfewVvhdeE^$ZK$bjBUeqlGK4QAe-+7~i4a_D> zaHlGcqR%?N2DmsL*aAC8Je+Y^$?6Ga2fZb79TvvY#R)NhH*hpzEJ!MPGTzca_MbeVNI{Pf$ z8BCp-MtN;5`#bk0NX5R`LjN3a(-%1$hiHJv{l%Ow#Rm80YJ3`FYI=dpbS*qj`jTqXwBO@+bkxxth(6ES z*e-2X9VjQpO7raTIF(Q{`Y=yuPk#@#1g}D<@PymP;4TTqROV2F8dDg3a!L!G(S#Y; z8jBT{y@Mm%VCEYNgt}$K9R`ShLEY#ZA5NhKxUSF=G)|V~U9ixqXA?z89YKjwyUjqn zKs@V7aIkO)#hQQA#&-KzV9;TBc&;Y@#Bzs$z50}JUOp9W$2k4um4T_rd@|!rp(wWF z*n;%sLQH%jU(%;jHv{0U%+?M`<1F^p0o>TqdJwS`wTqpEa-9Jy0V*DaChia_>#jN; zCGFX4018IJ#Nz}}3hf*JxeY@ho0&HWsIpMn%XVgb9N2$r>{Fd*ny4(+{SSej7T~la z95dKEw7XQbd)i-t1=a5N?-E550Z{jQ<+1LT)?1sOWOE{jqSPFjSa0Q_E%aR|Bgs9Z z96NlCU^QZuHwt&hzID2~)tWf|6U-(Gx+4jsIdK|ha-}L4#+oHrQFIE!hvJh{3cI6t@xY1BZe<>B zGaQVA<8YC3hR2T;6r|Y4(&^b*`Xm5GCnk;FbdmJHJJ?Hd*NUUcbo^$3!W7(s_dj$d zt=zDIVe94~{PrPE&Iye9Rg$;zw`krv45v|Ae&!4$>dIwZYnFF#X>o$K6*_@5=slYk ztP{cs9F~a1lIU2BeHQjDB{S$Cn+NaO!uV!|6Fx=U1-q&n%0xM~O)zZJpisPb3>Av@ zA-~Rh5VKY6{rgd8%_7?3F)*YL>zl(jwpTA=UHeg0uue$HkCc;f-?tJMqfFS=_@$f0 zCwL#b9ITTR+#Q^R2&*^=3DDdBzF$?xH=)d<IP1rvO zgLPtB>9O-WpV_a@2kXQf*kjcX>~Ga#{q3>pk^5V9W&f(?F&hD!3A?CXgD=z_rTD_nPwJYI)~@{fSGS`gHnCb~jhY%;_1-W$^xzNE&06FWIR1l7!PbcZxaBvAC;& zZFn}37`D)U@~==M;LE^9=;Dw`$i>ZV?w?{}`^@!P7L#@fp4+>M&OdW#{a4KlD_@VXP8o zf1Vm_DwLEQjfI&I+xKT@0W@SE^sK@au&z?DMmq%9b-b{Cdnj}KRHqeDo0Y!*5QAH?ARZ)bt$I(Ur z7Ih}uW&P_z%Kj?VDagJy^?C{xl-A0;2Wf!Hl0%;x!w%bA^N5^~cs&(4|3VEX77g+w|YypmNMPd42NEa}H z_JIE&nxhJT^hZ=J9PAZXfjQpxCi`4*fL`ScIce2r7H8*JC*BC86`UM^rGhGgkz;>} zYUpCO7FQq+7MMwG-pDOkE4XI{l>_558tcl*nMiYJ*Exlk%5{~DQgm6sN@Ubb`t(I^ zh@BC!tDLXcPqkn$F|AN{ONG}w8yUrY*=31?hD_rU3|MnlWpBhcn)~)_ORo21x5@SX zY{d}J64DKnBi#TD9b*a+a2|#Z)CT`Sm^q5Gu|{KMgT}zbf%7o%5a~Q)>6>%x>(GJf zpNXDWi3TV}G&Imusj)_ap{`XNB*%*u=;$i*%zsv?d381p5d1@%e=TOA7kH)nOKQsr zrDnfUunHXLLVg@H%({|TMR3v1cKMp9<7AD^RW)!-`6PRa)`Ka2XmBqG5tkard7DOM zpg16#fl1`<=fm`zg4!`w$Y42I=CP-7bbKQFB9F)v_2Fz>xgO(sj>+}goP6qocl!(!9 z4(WGBS8$&VxIu%YUUso3>di@{-YDhflW0M?6G*w|pvag^z%2yanTSZeS2n?%i;-x5 zk|%N)z-tNvwU*%kWb8!f=bssXB>m0%c^JHOJq{P(?k(JDxy;(;0Y1kARYR^UVY-cU zz-^r`-5&BgJmDvvTGE_V!Y<{MtjD^gS<9K&stuZyg;51}hHsi2(CZja@2WE0EM1R9 z*+%QLTXN*|E`y0B$?DKol~aqgTR>G)wOepzj_VDuQ0Lf?Zh9ew&&|Q+5)GhNUwkn* zU!xwn(T#=JI1s+iM8I%}N}qWdMDypqp+9&VzA5k-aQB|-(PlJG)ynI)X%+SGzpQ9w zUgoLVbx1J!U5Pd`?PQdgSr6aEMnLesRTBQ%f0jpE^$$J8_6_}n*_?PfGh%=MH?)~#osY)+P4XHsoPOp@`9Tl8=Jq1Yn{Vjn;>Sti&G*!#9a>di=_ZW*=u4@s zTF+{31oI-l1!RU_I4ohmNc+J|3y>5LC0_Qw9BcWL@zZHysMtE83_+ z7HT;_b1|7@IaX?wiHr&M-g7|@A6V-SSmd%7LzIxFFcBqwp_zf$fQDN)J^7%Se8!f- z5h7o9Ry)S{x(o@PEQ}T8BT5%bF>cz#&75 zqO^`ZaF=zSdYTb?DrHBir+YlnvNA7zsh+mRo{G=Oq3Y>p$xl<%(~YsGvLVqTww@vD zV^84~=d#{YPuIns!r1MyUcuA-o`o0P6rY7oOdba0S)K=)MeH59gxbEHbBxgt`XmGK zdLz1elop?J{_9C3=` zh=sxt^YA}T)ajuW7P=0$CnioOOMuZzbeQ*2IU;BJ-Cb=^2_IZ9PhX)56t(jlSt^3{EmO zGWZPQSN}sB+-n0lWPw91Fu-?`c-#2WlyAt_kg(Y89lEFG0Uv^+M@%+}486Km{6<^$gl@a+ z4WuY>kZoWhz~CdqNz$rhuKg&VC6tl#hKXgg@ZVV1KRT2nx|8bC!YpEc-=UlsMw9E? z%5s?k+hjNQuDH?zKmEYUm4~VHgEJ>*71xXg!^CoeiV@f%JTSqr!8%8|bz@SNadr-J zh~%NOAYYgLxis9NLJq%frkay;&`ws(xbEun8Kbg{NjcSLvpURimrB2l!-7fh8T(Tm zsD(k6I@WdO{?rBhVAEqw8RnPc)h_Bf*ZZ}6<@mKj`N<>O5hdasud#O6x|Ml+57xEg zQ=DzC$k%IO!{y&C-hwrAa(zZgCNmY})TEaVhMi#@GiLsNdkRVs9aEuj1Mh$;fd(g>O9oZio_&s@JMcj6Lh`ihO*|K*o?$)OR>Ye7^)P$ zN%Jy^OhYr4xr2)PW#Rt`{kWVS(640yN`O$f?Op=C5hB)I;!;t8h#qB;z0e~O1ED)U zymKXBL7lK5zw*}(MqmfA2{8!aR&AD`u*Yrfu1tu<*Twn8LJSm;Ukcr)IwXik#H4@v zkFH7o_F!U{PR0Yvh+X8G5bU~Tj5XHG+5PNjrDp{i6k`eAr>-- zpjkICBw#A%U_?tS#HxXUg)C=za6v-vn{~4i+Y9n=DbbcG&lxbEn)Ij&&7FezS*|jm zjneVSMm(O_OoN&KXD;R&J(d>q3$rP!R6Ra2BxEoY&9@p!C9$J~(q*7y=Wlg752Od6^K=)tV(}F~cbr2YZUxQIsrED| zBpqW{OyIL#28=icWfSn^Ky2ll_G7z!j+lidd_o*oG5;(3HM~Y=4_&70Nq_%SV(5bu zJhkq}BW@lG4WQ^(FW}*Ac=+GPLpbnmjz`b&5D-5IrzJh}+Q=jWCoynR{5-|GB%$cZ z!X}|hIh%5TeLikhSYSAm>^nXwhDCPz&d^6kjPy2qdx|#&+2l4rF0Y^_=quQ%AGUt> z#kBb}SR?fQ>;1>`D0~@=KGsoNI76@j1TV(qNt%Ne2u=LF!NoESo%04fGwp069c(Y> zJVaS&XlGNrXjKanAs-ko>$bU0;GP0tki>0di@&}FP$;(e!*iU(y@~wf=jvjswb_6U z<8+4#*l&ZkVQY=vG%JL-z|n*U9bm(zEt&i=IxZ3l!l~i`PNaz2wG<}8t+?=7KLCLJA-u^4JC+YmnN_9v%cVckM@Up zXt4;H^oM$nR$TAY?Ziv16ta0LJ1782=pkkOc>{vI(%Ri%AXMJheUa4MjS?&QU$lN2 zQ(wS6RN+dlSPZ1%!kUcBs>YI>w0Ou1Jcau4Es9e8SZY1`YmjB61ng6B>#Dn61nHJy zpKjt(kL*fX(_X+HN9_=Nf80kIzS022r^BM(&k zAl(=_#W=UTabyMXJaQVViSFr8ITbZbdSm6x#W*?1F_I#2Sxm3Z58qh8?yZ?V@mS#bUIY8W*JEVR&P5N!V8w5aH$~{ zDWCD=VpN3-=a84VGvUmKXo*LER z&A2p%xR2^;961RTIq;%MNIP)P$}k{#7ib9Ljc(js%}eB^DT37Jm*OtE$10{up&&HX zFmUEwTM+(GYZ#op1Sv7z<7eRwTJ<*o2i-yyw9sm~qsxfo(dAe~tbbFQ7`+iYI70_R zgEb~M{9bhGO?NLkb#I?|r=B0-bm}kYHvpQ#Z1SNm&?hXuL*I1l z(^l)8%a|ns8?M`QV>bHKYE?~;KKYT()|9a`UbUX@Kc9oleg)A5Yy5|8?JM(0f2oH$ zL`*4lx91Be3I~A!!?^-g`Om7-;D%edAEieIgVmi|VNS@%Xn)l>7YS7c$c{_q$|^KfOJX3+ z4nkOb*d*G^valOFMK{M*U|nV2cr_B+G57UyTnjwwSFCRgAgtS3ZO9qRVrICWn zohP!6<$r*ZJhE}*1nf12-QaPT9bwQ~*8e z?!771dgxP-^E*Hcsman_=*k|a#7cZ;AxUDyDiDCqKGMl!mW0z@RInmOb=ahxLdrY9 ze;@`GBq!9@S*!p5s?sPC{Sk!l{~xISPw*GKagxhFxN+q8l*WgWn_Sb-_RL#Xa7%)ylQ z_56Q-Kn&hE!4=5rs*(Six`%Bqte$;tlpIfn5S07hhntw>}pJzeoYV!(KGJ9il)QypPo%EPC45N-O*6{b#H})^yT_wsuh( zIs)1Ym=Y!T$g8pH@0ysoMPm+!ymR8%2IJ zx3k);M`hs+{>yc2iRk96JZc`Hb!k{jlD&_?ePaL#04KH?t)b=v5Pl~B-{sU+ z7;PCfLY!Y!7%d-&H9XZRDp_~9ZA@9 zaXAi>m@;Y{ur@gpiaZAoit##sy7lCV8vr`dFZ~)KxB!;9dd$P(5%H-MUGgT1JOal~ z5PSHN>m&cc$yj{C`Aqgy#9J(R=(QI;r(+S6uHD9YryH+BBe`}^;?{a(OcsaUT0=J$ zj1n-NWBmtf!Irc2$QX1N@80DtAaQR0grY5Qw@|m(TGOpJPGJ8^+8PVwHvK zBcLMi12Z>j2y&!k#DnDE9Q9~ED)KT?%wCg!M?b{uB+(iCa9@&tYcGyJo!P&)uSfFl zACdffdwpNHbExFs_Yfc4XF5U;VVIfw8!Hx-`y1gNmit@$kD^wGCOHL(!Gp>3 zE$gdQVJG+Zj)RgYGX2!8VxR}{VZ{|o{4ISlN~eHFl%qSK=F+m7QCDqWzXZ;Tfl77A z4>n^b)%R(`fl~uJFvh|lOXDCL(F-$DnRNqHMkcN*t$<0NZ>_#4&Gg=;6opY8T7E+e zz^O?9#&Ua4Z0#bk_sc(^-42;-wD}FJH`EOKT0F5gal^#keX#4xq#MpX3`s}_JRT2Q z&IGirjYX$p>8H*;wL;~Cp+F_E0JX(eO&e-UaS2&Ds)P;{1vO7 zm%k7sw-U)w_q<5BnsCA+0LyqMk@q26mLp%{JXyd*1_r-b&V|rlaZwp!=G+SNK}aGW zNTYtkX(Wo-rN<#})wLXRjzB^R?;x7;VF>JB3PE&{zdJrWR~9H~(QPJfU?dSwYXzmD zo-%ifBGP}!1L$s;pn%g=04PDu`Djh8NBFumRtWJ`ZzM*4a`&e@J6RWBBUkoZtF!sgaE z@~VEp8&2;Vn4rP2)(zK@+)~(?N?JYJ`yxhXAd8}^BrBSfio6;($VlZnmKmwwu#!`X z0WFDoc7l=!l6YT0LPgTg`n)s!baL;^MIq~vTM|~k9o_DjfOG*47?Yo8MQa!Ic677r z3aI!ul7>q7V;pH2QC4#ra=*g`{xI+f2qfg2cF4tA3}qctrLE(H?VRJBRb#GB!kpz? zRky&yz!@zvBksUO&4??|U7Xod75g6rmq8N~Tdl{ALC%~%I;5lI)e{^@6mVO?M@cp% zq(Vr6^i_%qJBcv)z`AS$ZHO@upL~=Uw z3#DlLkUA6+>QY&zS_xR3M#_ao;Ef>c1LDQH9l&BtXz);(r6$79qX~J!z7o7^Y4LWE|gxb;w@d#fg$nldA znnN*1b8a&_YLPvb?BF18#LQf8^~Z;#kg_h6@3P?B9Y`caI+nL)sbzhH2oo(|I~|N_ z>17?8h*kf@DX@C7J*SR@6zLsC(5)C2xcuv)xkm=>PLHWZ=vGF1^VFuIeC(8&H)QF? z4TVUcVBSz@PZg4dK5iE2_J>^S;wcUi6beg0a;vHbVb+Eb+cNG9yO7q~4LoA#T}>q< zUsubK;Eo3rzL@fSs(lbj8VwD0hEdwqV7Vo>?&!QF@LZyWbxB$v3uU3WL$#coqYuYk z3U2!A1>>>;1M%j>mI=?N*b7h;OQSq+6l`AZ;W~3%USR8zK7k4G6;q~;kfbI^QO{^U z82c0G5o(NnwJs&$t89S{tIzEX*hTq0xHdWJ0(8c{2sf>IXk1>3d2#-ZcM$2a5TR9d ztiSTvwa|aC;@ad#L#43LV)dlSQV`H(Sm&pb@IkdroYgoqh8J|9?}zMFsf*K*AXy_n_ruOX|4J&K0$hT(xMjlLXX_b4I*qOFCk~CJpPOJ&{?3! zW%6O^(wd32=ptO^^7P@?W@;fC)8XFb<-wy=uiFEW;u&6;fl%#6sjC{I-k1yFQfhfI z;OKD=dp@v%G@&xWSAu_)XrK}^PVORlmNo5^YCI+f_JB}NYm@MJ*XQZx+_oBw-O^`l-@=R>G7(Mc*fZR+-twiN$?m`j{OU&7OivZWV!(K)cr z827S#M%2_19}=ZHPmU_jFp5N#442j1;@D00T0E%>$M07c(0@^Tmu7BIrk1@nO7gX) zebrkSS)8PO%wf}ek6~qngn7NR&9cr)umy_`y%Oo%U`rlR&H!+wLSZl;AKLp4k@Gl~ zune$~9LvBEKm|c zkRW;X$r446%D5%!3B&?}gskYw64m;HN}(P%b=-u~$e%t3R6+}mH9Q7fW)g79B1FHx z77O*qSAvo|xo3;hIw&rkEKVOI_)%wz)6I!#)7{-zoX(S!=^ZUjO`;x&;Yut{zIO$g z5PCgZoE||rYvxSH;&jkvS+$;wi(0j&W1FK#i_=+y{|6SQACB8Mi_;|J5*2#uK0CTt zobFx7^-nk`^Q%`Dr@-l4?RRf+Dp57wDK+-i;*`Zo?FP_kk1NR^9}ahIIJr_HW&Kx% zlV5)*13L*9HLxem;J|h^oXj}52gAwedy>|ZJsVC=C?G2L*>GZhAdo(Vi-PplYyR&H zCsV$KgoqkWs6Pr-iQyzw!I2$&9@BEk&XKp-_y4 z_F!)KeldsydSxebLlG4E&gO=t*J!wdleWx8Z3gzrW?gZpG)(-ye>;V0bw?#dJoIsY+SnXGW*Vchfb=AY}vtB(1W zCJf~u#Sg8k&WY=>;zSGuK&gw7(pqaumC}#Y=3-PQDoom_EjIoi+P(!os^a>8mn0As zyc-3Lt&gQ*O?)QR)1J0C%>c9Qv13UN5oyVCoGiT16bLI@R zm9J7=ZO%`En!w00zJk@q2EI_IghE!;h`x~an0$`B6*9|%)-9|Z1IA9w>=Wk-ybVmu zB%e_Vh#mGbs2p6H4Gu5%!4W=Vz=so((~Z%t$%%7ah47m5$~%4fK1)2uV zVdDs1iG2&-BOg660z0{{b1gN^t6vAxP$j%7Pz3`z*NdfttbSH_{Y#($lAu%PJ1BB8 zs55HL%}hx)GAn7Upl~N-ekaU(czz84aiCIcN}mrx7SVUpa599o1b~tRE&d^%hR6`$ z97%*S4>G}84wGfL>y6t7N170XCQPIW*Z}VntUSvb*&h;uGDs7SLyF^i&tnN0F#>RQ zmXgo>Fp~(Mz3}J*&329$0WP1sK^!d}%ndO@HuvE^f!GX}K~PgO$vp2kJB5bzey1-O zJFCncFmI}W6RQe>>x-pF)_fyqT{{UD+xDs=L~VV*Zw$nGzK9Ksr08QJ25l12#O+U< zL$1ap;6Vew$1qn}ILwi&b{96V`-@};Ti!x@R-J5c!KxxZdm+;7*dz1$*xo;YwYv}u z1^aL)H?qeLHHbv^yO)B>X14}D$K|2dnJe1@WwPBXV{3QL&9DtwpuapT*yJpTP=wS1 zY{f)mb1QnZ2;+qUPn=mO(G3qzkd)!FHBz40q$|+J9LjZra_Z^$T<}kdDJZhG3MNg! z78&P6!1Rw&rv;5^g^-VV1vLgPkTrN_{cgvt7F_7>u%qYWY)QwIfic9M7@*)GiUN2- zg>#grCs5!Pd+jOeY%U>m$QcP}qL64GJUYPBu`>R7{2FJ6UxLwj3;07o34{1FhdB&T z?SKAS#FGc%0y9S8uOt4c^VIt-jN5&A)X*iqtCWz^VnWI(B^@km(D){n3@Xhtu^7Ep zlX#>sf7DZ+ggcjfZN(a9(gHY`J=un9@GiVT#x$TC@g6?n7y|600h+zfDR+yZlG#Kk zYW7#4x*@X z5^zTKfn*I?f)sjwc1rMRrGTek%h6dWN5MZu%F+I6MjA18_E0K5)F?E%MlcHrZETHT zTTaaJ$$l7wlS7SiiHw#ZchkE~`oLXNWD1TI3hZy7hnx=EYi`}Nq!%F7g6T~YQDr|+ znB6%;8I##(@1e*LF*sIVt)3!hzp*J~tQXxU1pdEC0`Rc8pc6sJnu{~u+wGrU|61B- zF6cs(4?{U%t{BVC`;&%6(F*rqh8yQ#Uc8P~#O^qEJ{HWn9da_)znO9(oqj5KMBfv3 z;dFt{a|R%_bFewC^7@SG5?#C{0hB0Wpf)+LnFIgLRcall44))w?-B%clN^MDkcy01 z_Y#@0^tf-mp*XCpaA*ipILop#NO^w}q};p*QoipEn^Q}Gjvk`p+*+bzY8i21|8ajo z0w5lOgmpj2B0*a3-wXuw00DhKNHf}BRY*(}qrD}-KpAd}fuOb(bAW$91IF-{5NznX zp`RmfMqs}R5_;4jZyQKh^P)n+VXyCwgjnSWIml9&I;?siovMdV5;i>kE|o>Q8=F** zgs};hxYT(M>`12`ykTd02o7s8!Lm4v_n`rb3V~~(vk}sqYp=`DoDZG$b;NDwsTZd< zFn&9D6NxKD66a7ICKal~lp$+n6yHPE+GdhzOPt5x{tG&1yz=*S-xBX6MG|*xJbfG+ zKx>}DgKjOPxi+0fjERB`&dGZ6?pc>-vUcJjx|U?wO)pjrJuG9htxs&ACjn@CShND# zv=_y zV#9o`Ue33_m4md^b&w5o{Pk?NHy^ja)jM^MvLhEbeo1=Izzp53oZE*f$3QtbwQ&Ys zj)WY1L)$_H^Yga~&=&)C1@y}oWhrEa>WIOZFuU90M3E3WJ}4B~<=1{?!7W-~zqODP zLDAEHLkgI@Wsl@yy{BiGYc))%_b?}W!P~fQ`Z<21QBpl~dI_H0H=Tn4-1vR)Lt#vN z$ftZzSOq;I+lS9qf48B5;31d*|w=W za#EyF3~ts*3kP0yl`q4qQeke=jm`Eff?-t`N*5dP5`4AqXPmj5&mnVxm-)?mc*G=R zuBbvl7bErbr5sErF&$iZT3v#HYadn&1&6UF$)RnEH`$OG=cx|NE)Rn^*q^1G8MsQc z3qcJulvXjn7*?O;Qng}{=bIsi&`~0{Qz7$FrVPfCMbMAX|DJXt2D7<etfKt7K40gOH{f@%NwxAim*Rm(M-bSzNX8EhNK(^tLtg8B<-e}?}`I#1HA(FV@E zZ1Qf^u2dIedemK=MWIcet=hc&O~AhoC*H7GiJu^JS0TZWQ=m={0zvFZ2bZ`jfw**T zUO~6m#G2vUyrS}Dn&9-K>Mv9JtM^cNF)R$xvzuhW+dt2gHx2^lLWN9c8x3mcD2x~l z1Vbxokbz*_%U%l^D>o&9^IZ5J> zlMghY+dVq<*HbZn_8Y?0@9A1cRe|wGxS%_1gM!hisVGAvvel?$_B@o^`;WbrYb_^+ zQEscC_7nTS^NHducHnGhj_%d~ig>={z!1sM=cf#p%{l$MjCBl7?toXVoZ(`B#+9Qz zeI%F*j3@W@Yxct=Z?<2Z2y*`&SdQxM0iV0iIoyA>N5<=$zPhCAdzWm`(@EO>F#{wM z_Kl~KwEwzxl_pJ#6k~@b8#Z}2xM4#t5E!&=cve+6!^QTFHRFbGw2mR&9_HQ3%bImT zt-ba%?zrKV5*waR?1MpBjrEhDmEVM#e9&=4GcFzgF zcS@l=?hH59U`UpxR?WvboNBjO;MqNKW8y~C0xSN;#9TZi!u{=0#vq?m^{q@*F#3&d zA5l}-cwWDK8Rj?k8?YLdUwIK8edfihD2kl@AIJgGlC#e>u$pj*V+va`XlEqoPrIvC00 zZhl)7NAq=e7gYNL=^mQX!L}u~4*!#A!#TxRpuHi>N7rPob|1HO*BAC;mGzZEt_MqK zgor^|)!DLG4st@t*6u4oH**`~^Yr?`3#s<%m`TXLAT(JU3#q$zl4r1JP z#Nkf!Y^;m1_ahbr%mnKw$@^sP&h%m)LNAJ%06J>I`Hzq}e>PbT2oPg$f1y`;B9~Gc z75N3h0T0oPEkg@jnk6;Q%q|!Vm%+C;B%$Y2Yeg5#0tO+BISBaZv7b450pz(f6~fB{ zt2u0VTA;+0ipb&ul(_P%R*Y!LBM7}fiKl#9ZywBka$vk%ate&Zp&N%peRISxf!#Bd zJYdjbXgj)ZY955YfQ_Ji|6x2QyT`lODL)EZ|Uu6h#Y*KWBIaU(FfmL94J~LM zb7$cvQVkNLD{d45C&;rOHN}ajraZ5Cgm z$7FnoBFkU9VOMvY_VoIY+t!Z^lnDnrDLUO63;!K}@^gTKDgRSz3S5bH8|x!rljjyI zTg{9!<&EH}o7#YyOc~H}(BWu1>iKIjo&?NZOoe9LCS`<+gYIYPc$DKfbmSFf;5<@4 z6Y3H6PB(Ad4#`TOV!GkSLu~GV5;UOIW6oWp1PxDaya&8k8pp0?mT2+sp^t!3v=0)K zi{Ve{C`3R$vutu>{s?i?tX(;RUYh*?k8u;kO>=3WD`-`bo|Nh1+fZZ6o`jV>yl$MLwoBd`w~1q+5@S<)E}5#;3XPw)=$ zKU+m~DccRf1K_jI{5j<2ImkQsX@$J&I`4rI>ogbW3mi`47cN~<=9MTDG-^gJaKZ%S zvYmT@BRY4QtLBtJXlR^MVYmHkC%oAH`?|hLn&DXLy}-j+V@D6k69$qI%>x1r2Y|zknH!AvTr>}o=$h?ij9@mcYP(#pw!-_Uf&^W6w zY)tiB8Zgc(4#UYT)HfwK1B%jaz&wJ3a_bUoTesNztd=D}tA7c#@`eOBDXCwFXWSXq z!1W+DkbiYSY+zJmvz%~DZ-iZMpYGlQGC_$fScJKtEN`dJFM-Wz517P(}Ld;=Ys(;f0tIG$j$>w%HZ| zs`Pv>MB`Y;eA>KGqCJG0LP$WbKx?+!6IVH{@ggxL$8615$+%*{?yVUaGN-~~6KrLs zQP3l{d9n?Qpke>?rK{Pp-_cLX#5Dvua;zNDEd;PW?h$dX9iMf};#d34)9yiMJz(P* zdBVoYf6>$HMC#bohq#oufwSgz!p(vgPC80Rhwl6twJy^JWalGgqQEG%0@4nYy~e}x zaLpT&`w!oqHb+sa7+=Sl&3LiYCT_Y>w-;|Ab4>}W8w=R96(%i{AkTAmKjjMkd~_n@ zZcF2)UNy+fm|`YO#Z162NqQYd*dRL*GEI&!G?3tMy%dH53;|rhfT8deL;mEopINDp ze|wT>zrC%nExH~0%Xz37`WHxF2qQ$S2n1h{C=kF>{Fs(9scvFBAl^|8u-Jf**;I`n zY@Aocp;3ls42>!T5LAcDwqhK>H;@s|55i17jAb#51taxWIBxenE!8OJ<$#|z;e^un9I@W;%;m*=Pmmb?u z@C+xQu1)zwwFQp902dIM-Mpj z`%_>&XyDErTpa39qwj(66ymBAncEH!&{rgbF#Ctxhyx1UNlGHq8b70)+lo5c2_|Rt zCCi;z{Te}aXw-{%4o!T34UHU!<+}%DF{Jt1vvX5sC1@NyJ?p1(Qa-W_sn0ZSd=ElK zP@xA}@Y=g{Z-eu9#MytPlg_#s?#yyKiKEXB9f3|d71d-2AJz*sE^!Af5@2}tA;=w< zseO>aj|-5X3%;0&;Tmyp`S6Jkqx0t`mAkYQugM&Kj%Np&_Sdfdm$9~}2`)r-_ZIe)6nnPn)eljtv`PjyMINu)9|CO-2|NU{d+>`OsA24Ua14m@ z+MhGhXyWkD4U7HWJ8jRRe?45$w`Ple1_le{=}>l{8|<8{Oz06AI2Z0&-m$}#=gXG& zE0hN?SsXw;uN$B#2;+nh@Umcs_F%HeH&dY3O-H%y&@9VV88|k+gpjS_w=fR@J<9HA zC1EO0hRx9%e5TQju2FsiYt9dw25EyMw5#!zZ}Y8AGs{!_4OVWh(waK18(Ee3!e?wP z-{!Au8xrwJp#F`37I?)M-Qlho39p<%W3$h|%K02vl{ng`HoK#0PVEhxCMw~2 zo|6WU!OBKK2JU+CYm;9Ol)vn&Z1ZVN>+tsS(6){N!3m>%%_*W6FT#z4jqTye0j)lY zH~}DRw4H6{zYs7NDF8$P9XZ?=ZRPA36`3Bg#(s{(SmE9Ym%ehgk^g*er32FJ3`mKg zAfbCI*P#d6waG+28oRYB`h`2P0!KfB>9%m?rievX7T>_#4lm%g-Y~QQrQ6T6M!yhj z>&dfEIOuLyuoSw$UnP08B8Jc54f0W8@H!kg;X}!wHv)rMVw2 z^hs-dPm_RSRW#2U2)QA`e%(%=D7(Lda9cznE-{0KBz<)c7FSl$JDqp^f^17!PGrq@ z!{+HhYavTw0nbPQH3fRQy|)P4W?7WzM7|U%j7k=(r#D5O2Y({~mG(RHC1kuWgZ(^I z0W}5dgZktPOfefJ1HxiF_NhlN9tYGTh^OUZ%gp`5=C2Av*7cl~EE>$<03HkR$lZU? z_!QO@EC7mDaZ_t7pDh_DO=uP1;e!??6G(u`Dn-KV;P&GO!0vzaCHHm=D9%V&eKXEV zWw%{6bhq6X-&S*s_H;XL?g)*yMU-%8G-!=|i=5!CCkVDrw5DRO-3J#XuVPy;WEUN0 z(UD0(cRO$IAOjH||55MFpcrfxu#4@fw1Rdi?6KH}LaeI9m=+&{N!5#8nI!0a7krtF zlTutk@=;#Rx8Q`_?JP@?BZDSdU4~udNNpk4ofH@R@@>xdlsZmjc~GhSJCbG*P&Dyf zEmri^cN-Q2A>a^LSkp)7uVCB+x}Y-X47rnFYM5F#ibA6BgpAS%qDy^VG=^~D5q)`8 zS$q6oyt(ajzO5u8Tn*yrG@kD=U1rM?d5%{}`)4NM610pJdrPhwKmCm3-MH}7EV)Kx3& z1CW5&QIN;hbfZ2OoD`a4?){V6cc)unz>2OP)t6pCkl~20u$6<)N1<_vY$>%8*<%s|$M8Th804<9qc6k+KzB4pg0K zA&=UQ`OQN)t?ONJkH{tm^nAtf!KAg~F@AWkkH8s4Ubr~^Zj`^lkn;!S; z|C{=H2J5p`eGfmV#{7Q&7xkIa^_;lJfjqN2;Rv4u12lA_GjO0V$MO=iMsJiQaz71H z)6Aq~KkO?2I@2{h?&r(@5Bh<^r=8>BWK8H6mK?~ys`1N_A@a8WxT~XUNEwy)d=Kzo z-;C=159-N5-KIY}LzpN}k1KidE1*u9>frWYTBDfIjgg7H51>;CVqO4$>u=PYA2Pqk zWs)NJWPexKy2*1XjJ^+JoLsUOtZUEMT%0CS`S<#}w5K~A8whK5di=BK@RzX4ciS(a zY{Q1IKJt`qO>?g*VO{0qO61Nxm;l0s zRp^O~LEB7a7PwyYOIVd)zq^V%CLt8%NggV`h3^r6dO-!kK0UU8MliTTtCicNY=Yw{ zti$a@*67p0N_p)(T5Q#&X&C_p0qPfr;M?ulxaF_+ak2#G72#h!q#AII8aPW6fq7}hc{RE4_f!c-vam?2-do^B?{q@xJ&?5pnH<=uO@by5U- z_NTkvOJi}3TS%sr)Qc6dR&w)%X1?Q|&uU(GRYlX=0dLJTD6FeMb*tPpAJfMWKF#6J zEPRJrqzV%94YR2G(2Y*0NAe>nxz&)jXd)eqo|)L&yD!yJUc2FunWz#G>XuFC=1S$M zh9_o16RN1WqKq1PWNXaKo$q0(f;!n6cm7A*BZqKdqEX~nt3l=2;qwA&v=+)Os%))s ze?&U_?Fyc=87k1O`_N{(jOHm<-2?$tWt-OU6No{=#)}~%iQ5OfRQuLUHw#XERE!74 zW{d~c#acTt3DMy2fEK?6rJ4l?sWe#w1Kn)x5*oRr8$pVOfC1yk9d( zov>MJc$sYi94PBM+HcmUu0d&+Y9A+IjzRWkr1(UKQZ7BN5A#`azh~JtTM-(qS9wjF#0*&sAKcOxSTG6x(l^f6j{-Z*ys7ui2OJyR*DSJ z(AGIET8CE7d-y@f40dE1c){p8?SxKk!Q03I#-}h~Y^P2ItP%Td=t7yg2;HPx-~H9m zt=RXyi~B^m>EzV~)2)0;BH(ZFsNioV@E>Wx=6~wx=X7n&bN!ox9XwBz4!&Yj=mZ?e za!+ykoGlI5NqjGC-c%SiuZ1@Q9QpV?iVB&Rl!UEmFf!Znc-lVJ13qFQqMvZ1=`sN7 zN1&n8t&<;N#f=5Gl4?S@_KE%Hcjtrm+d!d4`~%=>6%oP@3l6^m%hJRjm7+<|6X0>U*H%C?ymA(MBb@z%idjks~D zzaM}KhC(2kZT4xAlZQ$O+pjx{$6L5H7~Gj*2x3ch^D59YEClBDp7M>{odMh~WNbwN z-7u}dtO_L2kH_k5$%Cn5#Qw4EA4Q?^kM;7c!SXltw)MyBDw23kD>`-(Y*x=~9VYZ-=71uc4yxaMVe;-ZSxt5mGegP&Js|NTz*95*jvQkYG5 zhQ|-!LK0kC3k@r7t<6!fCNa?9B;@6-Q?x5b=VRsFj2mmasK|LefFEoY6u`lsUJQ*@)wnV&PXpOM<3sN&QzB6?r2Cwv~c}Z95Rq(Tc#{97X=st_MdWzmV ziLw~$i}tvo3QFpwa1&-t#^sT1fyAL>1BsuEhTa6X$hEzlhihrWM$K3#I3awS80g6q zjrUg3Mfce2K5oEtM8CrIPRKa96JZiv)u&GkcWUt|00Ce75Q`l*ZoK6MZ8SJw4wB>! zH@Y7M@It)vitP*X{*_K~BFNGd@o1$(DAZXkLnzd<%f23kYEtPlb7_!5Wl6$qLJ)p4 zfh6I}=>aDx>A|djIrQMtEIp_}TYw_a1OEhvAbevqron}X_dU&=xWQAm0+@;=8O<0X zi9c-qo(+_K4jJ6UD?t7?N^BT+`34NzUWRD|yEdF5_j2-8V|UN>0(Tn*Do=j8=Ew95 z5=-uiZ0S8^@Y6;enu-$LIwv1#M#FYD@{v9<;*nnS*!3eyIJAoc#&J*fR)aodKV3HX z>EtJSzdPhZwetbo_0wVNMOd5J_pa1NkSLrT8*%mPzVs#x1!?tw{WwIbp~^3`1ux?}OcJpZU$6p? zQ_TFQedgGkrx;_O_8Iv%_pZ;-w@V!QHWxEJL*D{eLz0TT`TF~O#;aVCPCd(->@b!brgfXz; zM)i77vY%qCU**BVqiEO_oqi)CbPV*PJBUS-bnGnaxFdsY&mN5HC?RUVjgduq`QL-( zyY%w@Q29H-whbUx{stbl%@p|e2BYVkP7!vv^X$Qg&r@sHeq zg$4I1 zYj~c77s20j--9l$@7rLq+C&KiG~=2%NJH0R;h9hKSD zTsn*^Kvl9VQu)iq*hSFT2P^+K@);+Q4Z+{j(ijuZqIu>x1PxLgjCT%e#VY>y8hXKd-l?yg}{HFIK*E zH4gTHz4-w;1OOO6_5>?mt+|2U{V*)4d=CB9b?vXi#^+Pb(Jki5iOI&vEq()53uYvl znn~uR^6jhhL4Es>691u41J|(oeA`1XW{o-K9+@_GAy|C~8fHIsEGF4um`UDyIqNpt z(PI!X8W9>I?5pvn?Keo?4?OToCK*=HU(Nz0?Z)81zh4h+g%)8kHogU3afWOCGR z(DYxOxb*r;yR`Yw0Fa=u(U(p}ffFT zZQ=6nF!`hM=Yj@M{Yu!lfcQT?NRc@9oV}Nzdpi3!2aI*TS9*Nu&LB?Tn?YE+Twlym zQ1^?e{ZF{FESiY5?of_CueRoC5uS>MtOX3q!eUZ7p+v8b#GMpZ5)Nm&Oq-p4fufm2qJls`8SSCF3U z4+oJr&j*#lzT^~OQAgM36t!0uPBZ=PU8!IH;RZxF3G#9hoQ(tnsky&+SseoO4IWfV zu;Q%swoE*lIZ=@GqmmH3;?u$)ugOtjkHQ4YSQzX?)<&^`!X?m^FX32`b&k6tAJ%r8 zBOk**8k7O)nzqJ*_dsbfrcUm^Iy3cC=~QqxAf246lzw6AVpq|j?3}O{ABF#C}n2)jKrajqRXDr**zW3m*s$+jGG2(2R`ePRnF=$L^A#!q^LuW&kst!F`&_`yQd95US;dn|3A7lM_C#cLr9&pt?P z5~BZpxboA;E09nGrO2iM)rKSjzqyu;gSU1F25E!jc!UnmfvSBY^urwnC1F+s4ccN) z0mE#L6yvc+QL^8d>sM%5snF6OXt53*si)Utp>*V{A?sRC$XuJn%y)2eH~7jQc`g-0 zq#L|BNVyh=+#m)fkS^`^Bn0lL%6JYaxxK9(JHF@9TT(cXZu|QGH)LJX7c@?u0LcTW z9rVip3B&v+FuVpoHUTD#H%{;xukcdl^KW(LDi=eHb+PfIBh=_B&V> z|F+NQ4quj3H-*}`DKyEOLiJV*7yjYec-Re1Nun5FD~Z{9 z>D>bqlQ#}Ur`@~3D*3cQ; zbal7^Fa*te8X&7HSfOv@_x^w25Y=THiCe7R-{EA+!L44|2Gg=m;8xdQL?g19xyy8e zM!#KhB!Rx+jcGJzyAr#Vd0t4`>{b7qqE&bZ;TQyj2A4Dta_o^CZaHGH~cE+Di1T8R>)}Q6KdLM{cNyzpVj3^F?nw2#1AE4!J+k>(&)>+5^yMg9?hsSdcRq zpW{{pTwYkYA*7wv(~Due-987Xxab==zcTc$L3SNY=CHV(2D^D z`2sGs#gK3)SWxr7y2^7juntt>%FZuPk_cL3`H3hM)EjA9dmLEwy2W2T&u zKo4T9Zm~yXnlMkApw%1r0O^x{EC#&>Gi!YL2hX^eofE%eRVl zSTLEoc|wv2w8_-!{K%)>wyyO@>}hRUTL8L}#ch7?X1YkP?DA=gliCU{SDp16Yvxi% zQzGY&co<2vI1^%TIa-`CMf*JLqHCKf-Ozl`kXD6^>%d!0^WqVMdKzSg(~40uQvGBC zNX%y? zR=)^QXPHl*M7B)qmuN2yE?4JCJP31hO|f||6a9D22r4V=Aa(&kT44vU0RnT5^Ds}I zM2t^2>rd)pNm%-ISZ#I50VXV{RUs^|6(QP=62&v@Q;*$FvlcAOa0GgsR{uTbirqLt zhmplGQUY#Co^IZJQnwU)`$;_rLuM^@j0d4kRShq>d?e0PvplT_vb7RGpNtL zUrN(WV#NejwE7g5_uf;=lUj-DMy*8kD{L)PPh&}B*NfKI+0Cu*@J~1naV}JHT<^2l zfkOTD9AQSW*+6f`P6bNoj3Z>85HfElks{>!3H0Of}aBOpB~w__8)GCaq+Ig8dI95fy9$@1x8mVQGm! za68YfcGiP9e1eg!|kyj zEFt7wBXFrbe0l|qk(@7x7vpj-+Y>e}#j%&E#W>~SRbJa+kR`5I{&dG%=_lM+j1IzD zgcIece+YOp*F&>7anzjibamW5eYne(;|LT>z z(!@%%_)$QgFS?dW5_ja6sAyk2Whw%JFdKM%g&cGg3rN&C@~YQ|)cJ{PKZyU3~Y zG4vS`H?4TiObDuro$7Kbd1?pM?wN)y|LT?OxLq|Ygi6BZAIVjR%qxqrpVjJV`VRg4 zbtui(I))fEw)oQjOFSHgCm=XBL(`H825(jK~hLT0}mij!PyZ?!xHCcQUMM zD3WYGbQ@Mq$XGEVYhv56>hNABa>|hc_*uFbFGC?1oCsJU#&`q>nof*4w3!abWNHMB zLb2P&RmX!f0HYr>K+nv8?+w;jbB)wFkDNRYO}kj>Rq|GlOh1$vd6-Gu*1HgT3K7x( zfya9W=hR;x`>PE1?;$G;OQkEUai3ke90NgNj|0J2pBje*QstQ#5K^U;k19{&+g{kX z*xcq3a-n>)Jrn8ol-hm8%-&%$E0JH7c+ET{HnAX5E`~So--Xe<;wX-0P&(e$=CD3j z6(&UWiAbDzFLLz;hh(@;GVGtpa3dFz>k1R(d(dIXFs%rK;@k;d-S`HinG|+%FH%=P zQnTIOI8r%7r~)Bek7Y_1jssiKg8l9razYGu{ehO^WRZzZu*MxCm9l)0cwL8+0=hWB zDu7n;p!mm9i|}h?-moruC9zddgq$$eSobgX72{HmODQ?oTfQ`V%LK_Dlk6TO>%Dfj zs%yS9Z@tPpP4XVVyto-Lr{0P$&3mHCyPxD`?@- z3GN$XGTo;v4aumXB&cQ~T!x6&q~V9tgVwm^7ZGSuCeBT8&m{>A@pk`&a>{XPF4NmS z$cHd*9&Cv&794Rhf?WfX4W1ILD4^n*C1}CzEqOik0@W3Hr^USurMM%oCif#f9Oz?` zkrZf`4XKVah;x*l#nu~bEpBX$Ug}L{!Jb3@lG@}!a1Y$MVhFf6s{wZA^u*M{OFO1w z1h-G!4_gZeme1tGb=*cchrp&_j)U+2((_-3-Ez{mF^hqK5Yn+#_UAZ>N;%87xX%Cy zI+xMnDjCP_J_$ndhD4L{d(yp|Nhd1oIS%0w29b@@;OWB}^Wf5)Q;|8dC-}EV(I7}I zAx!HTY^b70t|IoUIE2~bTbXxoi0<*N6yJKWvB;_D!y}kMR26$Ve~TT z^*>FBGVDxN}Lc{!AMHM&8R#mh~__G24eJd5-|#*f)t@bsfx5(5|u1s{E$twEOIVVPSg`Nt@kQcYgxocaX|Hy4oo zkYh_V=LgMOy6^^ZUyl*6otpkw#+65E`pJ;C{F|D#G%7}r{A)0Fx~t|K_#ZArIhh9B z{Ms9tVvqmo#op-@`!FyWwx)W5CRQ~1X5WCFYn1Z&0$9eH!j@1?soKBat=k z&|hR3o9*cz78~o;_5~p3Y+oSChmGk#%`bhiXIhBQnpxG{3Z_D(z70>o*fX+N;2<5}tOa}%Jw>*T*ULkLW{8{LS%fEd)c6@3De6H%oO*4!O z;b2!z+OHzx0yl>~b0xbNKydv55Y+@iX>}2qRFOQo6gEXYi%60?q@0CFypa^(Z8np{ zlkkIz2V>1&@T=8#qbaacCupk+5o15U4kHoL08IB~AY?7LbrQ;I$Q|b3t3UC;-z9kD zEd(|278h>S4e`YiGBW4im*ErnWus{co`UAuF4P|sC#u*V?XaJF?JjKJaSjLS-9Fen zhO8?wB&0$?n!Vp$z=nWZQN$)YUN*cFU@?AGS5MI79zZi{@&QP#0Y zcpJ`W>wJ#St$&~z_)~2ceO({hshhW-;u5M>e@Y=j>6@~{;AzGE1#XT&4DH3OJ4BPm z(^t3G>`42p3*k<6YuI={Sh_9P_C=oF`n&r_T=bLAo9~BpWnah;8TDnIQbC^bL((cQ z@D6Uj+g>sZ%IhG3Asc`lki4IJitapwoKLG(-}aaD}miL200w(j`2C zlDFWIIq(Q0MAbWus&^WtcX|(kAG4RXtzk}!*-l{t{uiwhrnN^{Y03-sQ=f^bZ!20=2$?6^`j??+!77(l>*ZXfyfj;|?T z(=8!3=)+bPFay1{Cy$ZwZd$@yHBS%{wMp+--;G%)#ufWdj!r6f!64fGn*HF%{i5-W zt?v$1_D9~vVyOJ_ug@u^e6SP}tUXG(@w?lll)Cl&%!1y^79@U8D>6P*W$EOBx)pWB z7_itje*?U2B%s%|b6`_k3#kY$8~^c{^u~tWPUhfV$)I$L`$K+6cHpIs+1BFdZ;1#%NzF3)nAILg9k==l#9)-hN2S6%Gn+qG-O$j8bKx= zHd40zZ)&>6pggxC8wyv)YTfd6}P;rMHGCl|yFM%}-8>lnCt zkIzJ)SjIScAxUeK&ef07qMyJ}+_-*bns{mG>hD-z)H*A34x@=LkZC{a_d)$XLVDL)LXAgI|{r zSZMpmAiz=++B^<0-ISENIju?n@DZqVCu~ou^t@?M3Y?7+t}DX z&HVkLK)^8*E$U$gH%@4`L!cFBk*lcB2^nc%!l^uDMu`x=nIJ-RGhri>xu_4n?eVkm z>$dwZNkd3e^CQ|uUcRKrmHIix+!J}e#1X#4;i&$CCQ|@lHVMYf>1fg9DzqqaFqMa|VBfm?H}m@yuv!s|p66gz z*%m5Yr(eDU?N*(ZhnuOb<K9K+)PDDb` zY$OtV=5L4vdjQ(Y`lOT3>66G@U;BKHG&FK5ik$2ZC@R2j~A5Z`{rZ{OJC z+mZY>65ob*Ws7aQvKLni@ol)VNvuoVUzZl%h^bKSwB}= zHF>^XG0uc@rm0M_8V`ypBhoBfFfk6mI`HRALO7IHiN0Qa&TQs%#PNdN4hHQVrxszd z&)GKQs`RfkK+3mOC6;rvXNLOZ-xRqrQM-eXBU!X>AQh!?mx*0DR`OCDvF*Ip4<8Ug zT(no(7B0ogKrUbQsWT?Yk`|R^(!$$*J#lI+* zr2^s;Tw9wx`^~#@J$JMgR{?dKm)z;nOE(PR(iWYexHJg2%J3-WdRFV{SbJ8?Ur|Vm zjXAe&aG8X}D}hw$p7w_2_~`0rc#Hx5U;@<8jAuyt8cJZ{fb%6Ze$b7D6%4Q?8`oIJ z?#tgf>GNy$p{HTH@-I8nt4P$bZn0P-u0rBVI~txuNp2ANg;kJ7q$VOVWc~RwhzsGB znL)_1``<8Y$mtHOv*MB%LmJVkrPXlM%OZnxwuM#dvydMb7i#z zf1V-1A7>%Jy^y-Ob~c~PmN^Jgzd4zu-@6Yi15h&qz#*VnWBxU72xd{9t{^5{jSCBr zG&Qn>=~qrdNyyD0n|tlh+~|-pd_{W)q>#lfrZpQ189<23=9mp0^;WIkiq%^c-gNU` zugXxOB3+0~1;;b(*tM*+`V zC~%p7RsgLfK&d0XgP-OTSa-t`L}005BY+cmvlb>K(vr4VW9qXYu=iy6AWPRIwlp4P zgCWsZZ_@onJgMGTD!#R0054H*4&Yw(<^W#IH~8r}8h{rP@E`J0r>_Lb zVZ%c*MR;cWHhKr&0cIgrdyZw@5Ye6z;9Lnn7P4FHlCekc*gzV&R_tX{YX`)QYBPbQ5FI@w;DmUs>sQ(_^>S|e&akDEV@cu zm6NzaB_7AbvzYi%mDq#+1C)gltbz3d(e&}*NOc2KCH9hPBU6oKs-LM;dxP?BCO(>p zzx(f@ypoA`Y(wHgB>u0>u1;9O+4r;9$IcyE?0-1+uVS$w7W<=|V*kT|{0$cS8LazL zc`Vjy;Iaw|%cZ#dWoXE1z8NqR%~*MZbx8)eM*)t0x3!H7!Yw*?uP`6Qfh&Y?xt@78 z7s|pOe>noro{P(5Q7(A?QF>=+sGu{cj)p1(hzF5ctTV=FsFq;iEUdQe4VU8=;Hae( z_XQlqBu$*IR2?9&AKJV#ZLZ;mSQ-aLs$j5aE`68j%;h!$C`tMll*T={QwMJ@kbJy( z@g{Ce@rpwz@iM%l^SxXUjCd8^ph1#~uyMR@`;Ig`sc7+oP(1dB3Dn$P_XHMmupE!k zK2taEhyqmH)R;hE?{MSRd(rhcoC+@y!kQ*28zch}Wi1w7$58Dv6suqeOX4sY?ZRWA z_yffD`2`dnTiuM`ky?B$0_fY9F^GxW3d+li!7%}u659K#dC%=KOb&$yk zo<;7)L?l$OJrxkSfHx5_gw<3gi>K9cFxgCMjqJQNpmwIS z!agzsOyM9BmsjHrsAF}u^<7*ea}glj4L0-E0X7Dw7uCrQqd~Q!ik0pa@;Bez4f2z| z9^}ENzZ&F4g#3X$v6_SNy+S(k&D|iq55kbIf#Z9h`f8Atp1dC)RF;|t22EQ`Ze^)#;tIEa8?avZU`z!lqx$#Ez+ zbL3M6FCWY?}a^E8h-Gi27yz-RNfbC}3_tcF2sRW$;Z%TehZ z;}yrhe>hj^ct-y89@g(nOD*07e1=SeGpjv*5r&%^rl;P#%!s#|2p~w7{otj$(rT~^ z_)&72mc_63ThH&LjPO)Y1kQEcjH)dPM5T{lpu1|kPSLPa(ZBg{CZ95fw2hiw)M1yP zq*%omEnX=lO9Rl+tYB~!nM+mqKY+qz3J8M5jV9|LfF=xCfW#tV2sdEO<@FW?#Uj^iNq6!DJh4tcPmea8;iFG=%!?NM&d+`*10 z6Yvkl2$BWmOTm^D*~G$l#30H}2^!H^2z*9jwgij*hmlsR>b~U!I@8WnQ9}`cWA7v zMn7`XCV?{xbrfl@#dmCIo3RW+$ho(r&-4DybWBDSEa^@lT$WXc1=DFVa0iI(D_Ngu zaVfLAwnE713~4LDt+H;&msl%bM(_rDmGXgYOeve}cD1=isVrQTip7-$QmCq-{PJXM ztrVbZ0l4sxKENq`FZOye4I5g34$M$tE4b>Tj|S)cZ15Q~5Mkb{2F^+~@7HpOp)GsN z`$wzQyx)JO%zG{FBFEqe1e_{JPay4FsiTai*w?t1)aMKi_#Xg2b5gXG!i5o$!^_`@ zt|fe~$Pv2PLQRKwS(B$;FfQ^Sh3Lk;9u$b)D`t@Cd|B2T7qg6vn88q@14BdyK!^w# z3?*bRl#sy?AwxpM3XZIzT|^b^{rx~OC@dKzA**b#Q9R@uT+&0v+5rhxx-fhai?^X) zuyI?0$qDv)5dsntkW2b1dHtVQ2h^_DZ$83UU+i-jz=}*jiytDxIL;M5T6+T&&_WTk z+oSy)NoFhSLnI{!ATljn(v1g}aV>Xf)eWcp4I@R&t3s+)p0V|{yY~fc{QK`8%p_FD zSnRsLlQy0|1NZdJLJ>l3Ul`~{T)Yf~F+u2Z&(vhYl@z2 z{N{49lCVG`e*ESG!b*DLpW+QPbr#S7I-IXK$~kyr)ngrwGKzOIJ^^n~RuN%Op$h&* zp#vfzOvO+SC{7_@1uA5vmSaIL-1!znv-D_G@EQ&`a6U5$Zi@s=2!~o`PKV?b_di+| zA#9IdhjQI^@5?~wAmQUo1L2c0h7vv}b*2}Ncw!(81{g5;O+f)IbmLbeH}Jv*Ps&Cg ze6yd{m=;m1j$ql39pH8;FEHxBY|RCt71jIy*n_%_jeEMhpf{0uS#K9O{*HGXs@<5a zX2Z7KtC@~!bU8zVQX#*bHrqLIZJj@RFrN&3`%T!YWTS-UD}2~@EqWu}D9xNSE;0{T zk};-TIT_x4ubd92Sl=(vike1MvNPvd{XjhLvH1X@R{DJ}#uV<7(&mlG7S1VU&p3M* zxGlA04#hF>)QZJrFtsd3_LGm{blp$UnHcV@9K zF**USqDAs$Ua*L(Gh=0HjK|brPE0%8<&f#5vX7Q$JBgIk9`(kqbYsD6P*2}8j9ASd z+%I&K<+xz_Z2%;vDldHH)t7X*esM`n7y=44C^J%kR-rJ<$q`@0Fc%6ajYwZI<>}1PbuHG8XBeG8jtqO#i zr%9J!=?n%%OZ$LSbW;xkc2k!M<4J@Nci|V)_-O<%l;ldT7MnG!+9i(ri}3`zte;I+ zYstDF!cNE(J_|%r@|(+TML3vK5suW96N$|xS1|)Ys;{+~$hz&% zL>XBf@SOg*CnPPeSgBQV<00{Ih zn1Ig+Z#fyER&<9S0r)}!xZqqo>((vgV-!$MciR1rlJ8i+Wh-Rf!evCvC-l6+)va7( z^X}jpmR(v(2<4zq(2F;4rvkdUd=}p9cG==7LT|Qk=kMb&^zjg7DZMcBWi+h^(59ZgG&9k3! z=|9h})7_ovp1q{IcxXDnF9R*gi|eo#B9DNUuxacI*iFtSnzU$&jjda!aF$^n_Uz$I zxBTiO?5dYDk0lE(xW41ShNli>YX(_zQcBrS=(#NU;Uq^^oH;U^Bz17HW9tLPj9p;e zKSen}zOb{YS21o|@_WnB7^B7 z=BI-AZV2%(mOhDT4>c!A2qzSUPMq-+H)$nJlrnKSAx+89Er*PuR7#yNUrF1X5&B=+ zD*rm5$lM#}2ap zSa58`@Nsj<#8y{ecEKY{GV+7y>P~hOE*s(20tPC?cFiTJB>PSch@st!zFjJNwT`$K zJuf}%@ROd7{&cDkK$!D8QG8<~3*NSQ(g?WAfw!D(Z8)`>Q^~B@>Zg&!9Xa2epTvXN zxBdbr$RxXl>c&H9phx}pVC{ezSDCZjg@W@F?TH-UJHXgAv{tyA%d4p$E%@6g~ zOm4k$a&662TzX$iV-hykut@SU)MF!Qox{L6GPC{P10Sz2mXzXR=JNP#)V1I_wHZJEC006hB__L1Q65*#uYd z|HQg;<#Y1t{7LSbZ$gULdk{-BFeY;fJq&xz8A{JnO$Cn{y*%UcB7gzFY;U?-wt_#L3U1qoGA=t!8xuUQ65XCxGqy4M zARc{*L?6jTBDw_uTJ9xXhLI_kCujQm1$(k@Ow2C;pQoFRB0MsGGYf+#HPucNurV5z*19)8xnJUoLm98w zmu(eF^%c1CYAo$pu6&kybGY(3c*}6*Q9N&xje)ynDtJ!3Dps3IHVfgBE!j(&n9pI# zGdy~RXLtDS)aGvyMam+@YGCKIH|!&A!gi-``gO<@##O~kG*$!l+z z$Rv)a37t$@JZNXIybPmTt3O`2zJ*?nXu~Q&T(rVfb0mj^ngmr6tf@eN)sZZR{qUSO z(!JyNn&d3Fv~dO>m+j2;mnAIwN%pkIt4|!PezU@F z{=6(?o)j`KFT~jbxB{QzMH%Ex?R+FOr<53RwPjVJW<_4LqWNWPqLOlfL#Lk*7{wx+ zF`tGqW_*%7ha{C+TKFjC0N~qpnX337(m=vj5k~&rq$mdg3rvV>S3o0 z?%4{}8z(rpSeNQBMR}XpvG&MsLP%mt$J?RPVCoB5zk#!kj><@6BfeH{8n}3^XvWz< z2uo!^Ig;o~fyY=$GZWhAtvnSE5Tok|e62l_bBBE+a$d0VPlzSNdCMHN3C zOBp@KUw+Ma*vd;jLuD{jN@q~V$L*vKRz*e<4QweICT2B?E+>@5jn$xRY-BD&@T%S# zRPzK84n+p76%F}_x9eSCed`CL>l9cwzHlTOBdbaKeAeNXsrEeEiWD!YVL)x zmp}`jK*nN=X9YYhA&VZ!QIPEM?FKjSct^;Eheo z49IIsI3W1}D)_U(TssJZe4AzwAZYw1J1<9_JE(K-!92^L4cL(xsdVms&(5?jb_PVc z+zmV93|4w-@32_O`5VZPHZJ789$J|t5(w7A#)#ki`C`>He7jIN}AaIi(yK)qN953%&1!p4}SHW6@ zSOpUZg61@cOB&1La|DYIqGqxoIsiOu8jlSB$3=S%DxIjIfWO< z4tprM1*5SYuVf|qWV_r{_-)i{G^P0__U$MXLhj94{Fi`e(l{;dK|PJaQ$BMzKCb2u z1h{Lio9_~XMsUXK#&jIA zz;)qpqQDY|6JviFVr4mg|4ua3TBFn$xoY1th)YFuL*_Zq^$OD!g3}4WXkhV4INoxS~(;l=C2XTYSwymVS=PXl-^t}wb)Bgj|Z~iR@krG=? zR&+qo30Xr^GjN_I5%+SbFUbKA*AS0KEI_o%5u)MJBG@&lHwiLpq0h^~ScWecj6M%^ zBX|@k7t4Si%5BC=@nrb+(N@NfXF9_-rZIjZllgEMZkWc~hoIHVAc=T5i+9~vM0SLG z2~H;LCDfc60FlCs?UP`QjX-4oKnSW8O{$9x;t5a$Q$s+6n*l5KRDkpu%qA89x z?j!+585HbY8^_Jc@R&J!B^XU>IVFI&6mkF)hcw97Isk|qM^sNQ#sbkXtxwI)i*npA zPlZc`VGs_8hm3hnVKU00#Tfce(UpVR2(-KMAo<*j90iGXiT|AKAjGY&c6 zDqAgjUn!o49)fVV6WsS^THTV+YB`0pQ}jq^u0_=k_kPWchVDmw?LjQwlIpEby>;P@ z(}}to()J#_gUuxcVK!0_mcmahpiwL}Nm>OMC1tz|Zx9qqsU=HUoL2IHlmd<)LsKjI zVVPERVU<>NX*EzkmH0mk2TkA=(^wvK&#A!!K&} zfy1!9YWfhRnwG5hRPl(sSBoErZ+R){P4$Ev2UKqgILbqNiv}C$WYl2kEDQk z`DlzbbLy^k;lI$zHFpC`j**?ikhj;7VRPe@xmF)K5<|A5PA#8C9am3`szW7MJ|ruE z5=K;Upxn&WG!<}=ll_L^jO@3$h}<{9hfaa?AA!B@irsnk45MnTT*hjQ1_s9B7W~H6 z5&$r?7l4X`;QJE|qtUkZhC=*eb#G|JXE3K;21S{-GWFJp06o=ECE>h=ZiJAiR5LIZ z+VZwocw=iJB|5O|q5LdlE$qWL80=8O2+7ER$}oT=0M3Ougc(&RfjR(Ur~@E|IsjtG z0T9eKidn!C^W+KOR!3nPJgi75Y=_EM)K+1reC2@H4TJI(t$s2gQerslE4%_q6U8gh zN=R6E;UiG*2*SI#z7B5LJJlPR3T)Yvd~+!0w2R(Ir@kqh;gv))c=UZyu$ZI~OyQb% zKFE+$?Mep$nJjS?ww4iBVXK+Af<+*4<%m(CH{p&oXe{B56(U;hKEuYc84@(ll5efE zC6FUWurjRWH>;KBoM5WR0Hq~nNIPY71Jz5Ev49WB`2nVkBsctnd_7iMl82lzrqSxZ z;Hol+kXGy4SpIjGf=HYi()5)i25@eOh!?ug)H2rtI`CGt$G1!Ml*l4>NpB2%a|9@s$QLlJPr zA|Rkz^U0N=C>mqoYb)QZ)kz7KlQK)kgI5k2tLHG*xU&|4-*~8*Z%XfjjGO{~<8hA! z_sJ5|F`xJX@*!AacTup!P7=Y=Ed`Q0GfHzhr8B2flG#qd(oNjkj}-1o+dGc=cM_$G zZ`o6#R40HKD-#GsqBI{5ppuIaWF<<+ASWbBbCg7>8*3yeu~2DiF;hB&#F2ks-6|tk zSM5JUu=MA{B$==xiluP`OD|a{dr+{{EN#sQmX_qSe387VrS+~6S-}#Qe#vJnA0~q{ zp^wVTkuR~`Xyy_I8TpdDSPevlGpZq9Qg02am4cSt7XJG-Df!aNTqm7{|IpP#ARHze#-e66*qr5d!=(E1XrFPo6XyRZxK1w<>F)|cXY)I_No z-53`4=JqOWO{HpTs zf6t%iA+z`1c{y|D%sFSyoH?^%Iv%NiR^z#Q1(~|XH8JrBfc!7*)hci>-g;8663oUF zo?|Qd1pnbPf5WIuVwls=B$f%H5tz~n&`ZPR36xG_OD-|j-v_QsR}^u0^fgGB5gcKm zmaUFMxEu^P7w&u7;+I*#wnaOG2j+%y9+U@k2q&+!J=jJ{i}9+vq6{&1uo9_&+vQx0 zT3+<)@Nk8V0L5h=Vd#@>q6RnatJtd43EwwxPH@)%_`2OsC6ICdQ>ze~KtKgyJFog3 zS?_8#Ay&gRg=pEi?S)r{z0Qv!0pPH$r}x_zK-Ej06kxeE5W0H9W9Km_edxXGqv3)5 zG>1#fllT_NGYG(=TeB+;;fR5;QId}QxZIkPj|~9MCpC{pY{7&OQVL?Qa(eQ>!xK+o zQLJP~rBxiX>TnHBJ!)J+iHRFHgFv+!tXAYKw}KFa88=zVK+dR0OD_XY?j}o>{8pPR zoGcg!rDkKoX4qsA!8B@5Ve81NA{3matm$mQo}TeT$_LWu`Z;>&25L zIDvPTWVoZB88%$U`3t_0X}9G?$eYvzh$~^B=T9_EG%Vwjw&=j_kKu4ui%EGM&St9*6H(l%=B@`2wyRJ~2^ngbw zRslhyH(hpVx5bVnh2jgld4ysant)OY0+MBy-fj8bEonlLnbdAe_jt?%m)W+aG22!0 zq-5gUIAvmsTFEtPnTW~I$Q^{48{<|!$=dp|*o>_U@;vwZrlgMQ91Zq4dcp@;lgC zcv{D7q^JaY-u8cF&y7X$Bn@cgj8_xrla5K#lrd`^tOa|rU^|PSQYK1kQ!B-DAr65i36)PU<0!eMp)T;)~H+9oEtH=u@S&baSOu zGl)CQ{#|KRe+mQ;2?jQTs)}9Bg5ybz!}Vtllqz*#ph`m{XCk%({`UMW?9RTu2u6E4 zYPIq}!oxasg*rUby@I=WaK3(&9xUSZy`l}j3~TBI`zUwFr%K@U-S{Zis_OeH^*yY= z->beaO@6OY-@l>1{|MiyX{?|xRt;`Pa3|W1e6ySn=Fu=Cie>k8a>yrfIS~9mQoJ%u zX3hWJYVjyvJB`0@d`aQ&M+aoa-|qVR1?u}K{B7P_l@H^43V%?cZrCB>9-b?qg~)xP za@Z%Q7Ukk};!ZKIwlwCo8c)vF(j;Tl2u~fyL6}`+F=NpqIDgcso)Sg8CE|<^a;)LE z8FsZKu_`2(41FTx+DVf#&lU6OzK#KB;1+XB7j~1dFz%7${-=;YN$8cQJNl52`dJkx zuha~0BRo>0cmEoVxbIek8ipZZ5~Q?GuN1|9DM`L)$+k z5Jd7gU&BrKY1j`Cp6*7*;lV99e_HI;qqmY_tef_&Plp>mz8(arZXaHL3G@>LLoZ=@ z3ucK2`thwPZ=ZetmGc-lOU}dm1J3;I?_QUqt{#=0$d9lSIpkZu#~!H2pZDB9xD$EY zf%y5T`dN&hcdDP->^ztQPQ+J71XTnri;#FW7%^l1*75Ik1YS>3+nG0sd))C+GT zQEOYHdvF&-La#f7qm6d($M~=>_jNN&0n9kBmI zBpVIuRs#7LU6Oprylpze357N+pWcBK@(+fwtI4)y-!-X21t{;ZxVp5S${h+}eniYi zruQHXA?-zqkeLzlkJJ133il%QBQ5Vx1-Ce}P_Vpv`E)W`AogZfp!GS|y74HclzV&{ zw&8cUu1&h{Ux0E+JF*N#w1ahxmmrc_A7PVD@59j9czk?5U`E~ime^0c!Y)I<)P6m# z7x}{d2=pN9C^?t5nE+{zWec$em1Hx_2GX-({k$4U<9G6Xu}9E>#;X?Z>5JXZt~6d% zwTJJz-|(k3+i*qKc-*cz_3R^lfvH%VccG*&ujMtzIHrUH7*{prm4c@|b}5QI%s-%z z;}&0+qi&&wH2}o)FGcJf;%!to_mz8qO=gAl!Wp;<8d~F30SQn%+kgm46e<=N+7CC$ zn`Z_L^D4vGFuO`hxKdgy|B%w0cYjizzff9^hu<0(rm|dhRz4;xCt?jZ{FpIDnkCk- zGU4gZ5SDUy&Vbo|DQzqR zw#2avsollBD1UP=lY*+Hn6}1Z{0SJ8&LnxIuHa0N;NX4dUsr;n9OnZXSufq8QvUOiiw_MbDBdH$tCs_k&|E9f6p4Ioo9uS9Ub$ogMHOYg{ z>bN<|Ru!{zP&Latib-CW9w!n6r1Lf0g}0Es5&UE>J0ea)Wnlq}H>1|7)Z zp>QP_Y@^sY=|yJK+M|3=3nCu;f|{du?fZ+I=%Ydw2$7x?EQ&tjs}z0Yrx=?e9j8QS zP;b6zqLOfRiQ91c6^joVO%mg_$U(?e6G@k>%X#z)9H@5%SRgKdyR8Zl*R4)b@Q;yM ze?(SB!E>jSeRDvVsNDl0qhkS_$=oocz^qW-5$Et=9?r+h#9El&FP&_~x$#+PKE5F; z`=bEIT*n-tmXI3_ozP`NwgjaAuf}7UpxQI%mR$IiG@tpsbe1 z8@O4Ggl>UgU7oFFE$H>GG|xWfB+mUOud)5{O4JDAV(ScigTd#{bJ;$$H}MHZJa;9* zG|UtEZ9te){Zo<8T|}N+szPEL@H6_&!~Eih2dABtXwakBnkZru2&eHfObV^uerqMH zvk`zt7e;i3T@#C}wtXN{30WPg%P*1)>}Im<_nlw2bL+p8^(I9}(t9uMZJOu6R^_AV zt~0d9sU_Z_zSyt+fy=Lci$AOx0EO-Llv@*`1n~gSo0mcv-7sg6N^i)#Jk71?xIuJJ zj`L}EAML@^bSd0`92BtZH`ra}xCyz%+TrF_23CeAF(ehl3_NlAaW(?AvBh}CjNoj< zJ!1B{`Sieag~gCOeFA5*Z9m+;Ry<*>jvx>4DKTnT6be zH&A+M`J#l}V;O|p#l2$+x#}rO$aQ^jmxSEx`#p-52)U?8Aspe*ICDeGcy7_#f4Zvf8r%nK0O=n`ac~`Jp2;-BvV4So1sCJAe(SrZ^Ha& z6empREpgsSgD_gcYo^Z5SCiw;J%5ptxKQ@N($1%U!d`aZ5C26Ww1*BSeq1AZ3B`1B z$Fi7DcHxoFCUu?ij)PFn`S$I&VoNc1gr!GUv~UqIk?V>Gn5D<88hnJUI~)EWr{yRW zU{2(5bZq3QvvYTmGlN^whzos#8^Cz_n|h+LmRNoRk5pZvc(!8y#*;GKCSsd~yK9OP zO5rGHK8MZbow$i}*a#^I(fPjfqifVMZ4=#5?ZPiS<1T>s@sIlBBlwu;#UJ#BRfKTy z0JVldKK~j;1dMW%3YdsgM8U;l3S}ig*IfFQi&zDp@i5(x39`=YEhn_I?*))GPvhz% zw>ql=)m^Lu!?0;eM>gGy6rShL>`lVH<(NETDhBpFE+pRxm3ZQbqlzo>NhpZ`@zHDO6Scg(|lSQXunbIP=H z`_fypy;=c5^1vii;2-e=v8J9oPLbTkX$<`1GVIYC2U+2{sfB@$5MQPiQhn+~X#&Dz zDP9g2o`II)Eey{zs?P1a9*YLIsz6V*5s0o)QH_3-t2(!NYPOyGZ(#yfl`5FIp`I>A zf;FsCU$B&wtul`;$Ypy9mnc=)1j0W=LnTnkZDUjK&VN@q`<&^xTZ< z{ksct6n>uC9r!T?L@cTW;4GUBs7@M^Xwuc&jvZ>-(bKx#eSCNLEyPqFE}XAg=TUmJ z-pVA))}@TqDK+Q?N@IuG&Ga;@H#M)&&AvEAIxU#O^&i>uk{CDCFraF(c=s@2;#eiU ziLK1OH>!*!HFW2~#VS@x53%e}5?jWGu~Q~Va~ugKAj#nz_z25!bkyAJ=XjZRz9g|6 zCRw!udje`!45dSwnp*T9HLA;Y%bMk9U{6ncrfNGd``WDb95om6C28?XA~?Wel@>SW z^krb#W{bfu2!kj|dl{3gumD4`)NM-*Rx|6<*oHA!yib5@jsb8jBZ5fOe9EpB<=XSx z7rkO;NKLpX=Q#o8q?VwjfDZn)%Xrtk6Bh`IGtn2F{VvaVZB%wWk15=>3nr~jh29q8 z-1lG(PMXwCjdj)SgLzD>4ouTPfPCpz<~(M@kIHNrBF4>58GN&S7e-x`u~ZF~s!yRd z+97A*(<~2cImnh>>`Rtt2O|*Vh##ixx;*;4&?#9?cT~OsRGEWjr_4x%NXdSt*}|i& z_I&o)>hvRV)_xz`{AOprprO5wNp_>4l)`V|%Cr>S_sfiyJsV7=zU(25IZ}f?C`t1W zk`zx+N07{Bu2?XG{A%jtGszD0b}0iyu&C7{D(zAc6=D)2KT|r6 z_^?=05B*SSB{${%0ugO_)G5P&je&JsAjmSco^WX$!q8lTXj4y`AXf89gLE`OO47m( zON}C+tJP@Lc`UZe8k0hCl8!i!QZTE@ri$ASq}on0T&L_55gV(e()QNuD^+E%ke5m|`3S7F-_pnf zBckKDbJ(TegBU{9mh^FS2X^q87u#>=HdZTU$ds_FBxzoZ#3N{u3ur^yw*!*I%9xA> zW2|=EI9k0TDczGDJ@Vwn(dyz8bQ-|m9DRxOTe6$&lFw|B3|Y0?*h$wnCDdeF+?smE zyGp1%_Hj$L>o9#JY5#pQ-px9e$jPwefAJj!#}V1XVYM$4e%=|Cq$Ms%+LHhLr6Rx- z{yG)@+Ox+Wju^`j*=nSkSzk(kxl4Xh4Fs6bkf|stt5MR2NIN!o1z3&hlonu1)svPl z)qKjbiBSTqhE$vsU`y4L+kg_6A+vH(*kP6{x=bP{GYX{|y1AaMxZfDC|_|Z6VG_2ry#RE5KyQ|5UvQFrfilRLS9n7gYA6 zuFAk^MaZW`)07fmnV0-0uw_?(WnS_>iJP>OS==SR%t2GlNK?(vtj0p?z2nz;=Rm7W zK37{_#iy()#qHFB{&r#9RwvoG^TQKFd`aCnK%RA_dewRB`CbkEb3>}QmnBjU5o35< z%DLgII1-hl{mZ{eMD^gUDkA~6?&GF!xbM;!!5K9&a;UVG@u^gFXHw>zbrD{;b z)hMyZ#?@6MrypaP;)X?tr_R|A!WXYKK+8W_mK*>bLk(lKk; zK?6JbJeK5FmMUD?C{s`?JF;iuRdyJH(V4IMYN+WR$UNOU$NoGfD8*djS!&8|{=b zwfjOh6_f8TQPIlL93VTEV3!aN&ly?cL9^d|G6OLt?q%|+yZ^F70e9Gl{48)pPc5uW0653a6P9U%y~kXtyx$Rj4( zKSJ)&SQ46 zkGs^iTx$txRpw`DP}439?A{Y8^m`u!(}XLR+--?8&SNNu5lV+e*UcKDKtgI{2}~8` zg=H^BqPDg<*++AXF(>QJ-?xFW)#mmRk#DZPDAF!F$lYbSAsuj+=>d6im+57E(meG` zK5^ub>}I>Qr2M=#FnRt-oSh z(EXi`kh4&OB)i!z`OFr{kX?T@Pg2u!^sTd;ja@Jz?A&bJo)Awnay4vT3b%d3zIS?* z0)IoSAMVQV@gDX)SW(6MT<_;+^BKdcKy2w)8#dp3{&7A(?^kT*5hz>?Sd4?< zUMWc|$~`(OwptRKg$#RPpF{|fBOy2piYcFrRSL4<5rFcxT<3T>oE7VmlFJZAZyV1f zH5?|-MloF9WbY6`hJ1dsjo=D1=HmZ2IyBSK+Jv9*)coBL6G$CPY5Qo6ZhOo#DcoXo zo~o8JDYC&R;8x(;!x%pyex-XHCFQ&twu4>Dft4*g9|hzr3c+*UeseQdWMzUM0SqzL z19*bZF>kQJX^|>Pe#hv#IC5IeWQN_3!tg+@!4r@jRWEta8I|#gBfys>k_9a+%s2oY`K_q};NS-?LRc$rQ2@e%{ve^Wl z0(>fnl`<)b@g>?VMLCc^(a=^H#=VvwZK^52XTJ9p1f8%M>4)3CY4;&VJlLnl8x+)w z7f#LAZE!Ac?_le=wGWX!q9?FMTbc=*pF|MU^rjdK1Ain9;IBuL-}NHFAhB~A0i+9s z7{kIn78+yzV4u$)aeV%TL--ny>~@tT&DBT@D~MQAu^Rqt>?D$44TZPj;!Rv`08@l? zxbVI=TL70GMK&H9)5@2WpI&~(l69B_D}Hqkd`5C{KKI|Xx8^v9)bRk$)S83u&T+nmLpM9{ zWY&GW^*;15*;4dU3C7t32-OvCcLH?m%V*|to) zOJ3WYK`kA@@krkuj>o|y#|xQ%3z<)YQ56Mo$N8KM$VDexI?MA8_z(64Q{joupK%22 z_9BuBebpa#zA_Guh5OHlFr=a z$8*>$79QDwSNsxJ}HE|;L!rO5&INo71bhbdcXrN+0SVF zcw*f#iL=0+_tkchkCoqa;T$ay%?KdXb}QLc~nMW5zb4VH<}2+RG0rmkV?Ot6>-Z;ktWroWR3L zcr~~L@D2iK#ahuf%Rl3Z`UA>4_Q7wEcozzu%7T-mV6dxcNe}u|yIaCSndk?(rk^g* z)1?W8#vi@B#YH1~zx)=EVPXKedAc=Nx+GnN%wSI9 zc}ydr#Yig&abZo^+)o0RCnu6K{c$3EV(3wq;F{*=hi47?Vow6bd5f7uVvA%7}jxQ;-q`STHp`Q`oI@!BU0egD(|lGhi42M4H$6@IhI<5e+JN) zAH=9404LPJs#^HQ>QtnST3+F7wSvp6{2AMP_J^#@F1)~7m{j2Gj>0^0B8^EMFr%@O zkojq7?dIad9cn6n6|eME#!N25M4o~1D2_);5~s+RwabjKI?IqTaS&c%{(A}~W=jhg zK{>O1$vJ@LibLAbhl$eN_nk@K<>|~hpoLg3UilQEB(4!yHip(Fa3s2!wTH|nLu&`h zD&tH3qJEYja`%#_E6vEpuo>(%%!RnkZef37J!%Ol;$nq3syq?@L3;&u7aJ%LOykv@ z623>DVtw-7c95VXsL&q5Pe8O9368aqD{16|2M}q_Au@M5m+_0@FETNB_XsdROeWE` zpcqkeAm1_MNm4V+Nr~BltvM4290+ZruVAhZ`Wxa?2D{8ikNG6#>PDYG*XIx6edG_A z46QzY@DBjEhX9x0u^_faK}zb0x3K=i?f8Rul$MZE;%Gu>7mhnvu9GIUDBL@TokGON zh}tCXl@95*$?ekdH4q-zEn9#nh_OvnKmY~~@XSt)XkCq-!MY_cA_U2xKB7{w6A{Ek zjwtkYJI6qdM<_$H(CY(Ipds7QzPYT?Z}He7ha zD`2i`-zYYR!jt;}7;|GLLS<9a!mh!Kx>G?7{Nav2ID&I?odQ+RW&8)Qrn000NRvb3#0|rE#niau*JtbUzI0CO~ z+Kfi12XSHZJ)VbeSWkUog!WaBgYF{R1;xy!&;~_PdabZWne@>!N+zBBGBry9Z^)R{ z=UaXfn3Q4HcQJ&D7*}MfgYS_fYL+3d=aZgN!B&k=9<6@;L2@!dCfVrn04hvJ9eBA? zBmCgeo@qpmjfzMj&h&#p`(G4Tq~)-kclCw$@U&d#_x_0C*f#U8&IgNdR<9SrYpkO= zZiUZ%GbdY{wg%Z0wAnkJf#Th zKYbvq#%qdk8V_Ge@MXDtL2G5FFENI{{&!@cDHl)c)Bv(AgpWH9QHFz9f_GyfHKOuz zUHLDQm9tq^et`aRy{@%{wOTloj8mhi2lJxv-1Dg^$idy=e$mYroqVFvuvu7M(h?CY zrBaSK`mjEP9t9HkFB&%Mx(st5^q8w8M6b;sUpuoqcnFq4n;1^vd%u1c7zu*s4As5{ z#-5LLUlBAHh>JN87jyCxH=`mcU>E-2yWrnuqP&AxcK&)Ic{ga^s)yz=RCkJuOcx@= zrApj*9yA7)pv}{1)g`1IB}j@OP})%17keK$M4XgF+Q4Q8@u9yh7i?(&mkLLU4Rby; zvLGbr9LRC37)+=q=HWB9>Q+~F1@Z@1=hkuk)a5LFeH&Ib4eN;{G8(88}xb>C^(x9I4K^JURq$NKo&$njt37( zFP=_-=Ri%@s?u47)rZKQFqh?s!}fG_b(v zxajOVLZhN1|)< ziX`;}O{*=Ko4ZEe4)o`jj?)>0`moZhQc-F16xo$<+ zF62oZh5W3!?hIW@t%arR7U$kBN|z~!7MGvW*m3hGwC?v+q#>-%CiogfcH4!kKZG65 z+~oWlx6Pp#N+Dm}Nr@W?O=iHa^J&0~pwy-V{(Du+D8QG00JZ=b$3~$ja<2FaL{Z$+ zFc;*T$N3X^s0=yOC)^`}*U%wB+b0(#5-4rugwO2KeY{Khh~N||f|x8ue$PdS-A+ss zyB}YN{&e7h|8Onc#M)y~JHMiRrLW5B7JY0*4&Mw~OSQ$au7)+7cs*@}6Q%MA+*3*N zI%qC|?pOqMVZ~JV$RbfSS&L>@Ut1umCf{JiLTN3P+>9Q|R0{YSK1PM9DxN!ARy!=9 z`B(q^WEB9LRnUqi&?^)nmM@;9-m}2*XvX5#64f`g<^*4>0bdjSEO8fFv?P<5B7Q)7 zE)LV7kXruj$>m>tKl%n{?6ws z1gwxRA3Lu-AQ}%JE1Q&QWsNH*4BmuxA%F`m-|AcbK3<2d3;PjH9XxjjRnvNLG^;j0 z2%B#~rD6jxSQbfgmmo-M%<0YX+B~o&taV>=ni20I^z2)a*w)%FKuqTRnbJ98_74{> zc@_fN3f5FM)h#p9D>w=j&`=Rh8Y)8Ozb`)}3Gu6N2_`-s$n|1Gtz=!i*oFOuayA6A4`I`v3aOQ*tBe!R`--MMx-X7$AE2KNNjgKO-F5U5`CZ4{f0kX+heEkA`pI$q?ED<39^}g829x%}A*we_lx;TkVEZIDbW9d>dl5Bjjvr#$h1f^KctwNKD zlK{k4nY9Rqcj1(s9KylY_fkDp)M-Xa()$gwH>lc{?@ppk6N8Ku_Q_|B(-j~n#qtDM-hoI?jO*k@d>KzFgftB3e z)v}WN;6$wC6dQe56yg0sA{I&oAY~Rw7itAswu;C|lqv%i8^kiY3-AK$)slz-0~cbD z?gy5Fc-7Yh(0t_+Y&ehu9F;TtkOwojCcY|_1(!j7O3xv`nSsWhguykYwGdco?m>kL zE80}zZO}Wmu~y_voPl|%=`swZwQi9+A(cRB%Z zdH)Fdj6$Zk%Eur0s#Mi?1yXnQsy?8r2=>> z${%7TcCmhQ0mlDi(n2w2C)O7WP}>pMHATiiyq#JQMX6K$!nWbWHi1aCLa-oQ224ls z2C?i&F)~M#2^`WAlP`pVKTKNuXbr@nz*jX8YBzhNC9n(ipqs5A=li5eWnhW73oeKW z{)>VWwIY2W7xA+bw@}rA;~pV3o0$jFxl0l$4e+G2DJH&AB+A|;9zY!z~;_LMazk&2rkgX#j)EFnDWV}OJvG%u(=a0 z`CP6@wuO!GUP;744qEA#EG>?_Y#&6z@r||O2e@64FZxShtI`VYshPBse`iveOJ@kn zuaIf4n1?&*QkL?td90rAPIzyiJP(^+fVhjhJL!gLP`1o|k}?0eq@H*Y51=(_EsHJx1wn`2GlXOIIJNix*5-Hq)b<$>Jt2Xi$y)6Nj?R44v0-d#w5 zF4evW)RdnFmPf7ptfqmHGOWMSp>36`@OilKus^q8uAB|Ci(apE=Ag$-OG*{7S6X%0 z#c5aa3!LDHXSWTP!{p*l`)A)WVq2k#7Ry#>RO%is>|f7HWnXyt%Lp+khA=c2h3a_q zo{`ualKTXm`+nrsB5q|@Wzsq|=seL2Go;NsU_Qfq5=OR6N}=ttA}Ka*yt)+(ipLOqbSP z=l@s^F0^D3N=$Blnqn0S1wf`z;&Mti?ImE|C4*&(0t!adB^Xi6YCE)&GAShfkC=5E zSA4))Sd5uTT!Pm^b7@YiF|(|OxYv`$Rb?Jy#bY_DDmBY_9*D@`H@y=jZ_U2sD2~$f z$25-edKdScz$>Oa&0PdRcs{wPhq7dq+7v8R`mq%(iz^j5OUK64ER{XOTo;fb;C;C8 zQ~;7KR-g->^c1YU!T{o8CUb4RDL1Gw@roM0fEu!ESZQ80lea3vTwTUpn}DgpB1dnmieVWwbLp(Cb)Ip*$4)C|*6ZUluxD3JJrap1M8oyxiaN+)sWyD!lKB#PV&uz*$voim;wW=Gh_ zx8u^Kc8?4TJ6~t|eGkqnw#$bbhY+Lp*H~~F_S7f->M=(d=GzE4PIMqbHU4tR{+}V3 zcWFFt!Y(Wvq^c$O_2bSrUwK)sFiu*4w$Sqd#`7NE^0SZ?0~nPmWRn|fuo_62YG8W{ zRuqeoCawkq$qHX`tOf6;S147DBbZiXsR*rt7%NCj#h=Qi*+rhhd8dvjEWkkJg7J`B zHrVi?^|KL+i;($V$T|-Dy>p7neI=9V&4Z0!EROjv8Zsw}x7HS18}58|RVoejOjId1_5e;4B|tC#uh(L!+gmZ!mWmh+q^Bj`D=lr2{+mGeR%>CUZg8--$%N=~sS`bKm|jXw<@{vc)qktS0~<1TTaxBN@a%{P;L zr$y3+He$^Iv0}fKyIf!8@!qFFO~IF=SjA{kJ&AjnC~i_CJ62)}?lg!AC?1c6yNPvQ>1j8#}pdBcD3HrLlks{ugm9tVknH$v|B za_f?C#%1wa4^rF4z1WwZC!CW~T&TPW=4?!9CCF-G;9QhJxoXHdIh#Vn4Z}7zwKV zz8}Af2qmZuFgcGN(g%PR;HF{jj@oK;cb_hmVKO{+G*|19YCRLeSn_QC7Swyei=9{e z+uvdoey1RzH&NbyRudAq8QFQWv7*s{XuR-vg$v1fXs)72Ls8~|B6KEpyhS5|*E7Hj z<^zr+(&2D^03bk&QFO#m{%aWHYL5hlNu~ z#zC|F<#y!LS!;baEX3dj&3Dn|4#UI+ff~uX6UooDzM4exd$Q`;StOrw@R&$G^{7!u zzJ6vF{nOLew|tW7X47ijO^)Vp;p>0I`gk*bHbrurJI>uK_if#R&X=1T;>|=w&>Rfg z7lK9;lyA+yBy*uwu`oYncfvK)O23%KnnaJp)$Jvfaa_Ph&SgFgatdP6dV&3Sl6ZKQ zQ~M1JN`_jzRxPyk+-;KCV>MIWR{9=_En(VZpMeCPv83X#)gr~LPI9EUorAw-b1weE zLpGL&v@&i_LJ~Hc^Ci)HL*kj7Xu>P>GS#{wJG0rtKn5;VeVYXD5-XzT#N7OWz4$75Uxc#trPZ1rEf#H_EF;Mn+FT=kp8_+8-fa; zhdl&$X6Nz5KH*8D&aa+`3Vb7@kiDf}$yAZSLta%x8G%h~dRb!4g#tPRqkKR1EFDZM z>}K~HN5f)r?dAI$c45VdWCoFH?SH+oiFT7nwG~_{_QFS`fd%-Nw)2`22ix z(PRwxoT-)Z`M$8Z2;6C6CZ|smC!UhdRG@46NF6@#Jb=-9*L=R*-7u%o*NYBQ&7D}u z{4s2w-4!xVn?6+DT{(SX4)g`go(bjV?$as7%HtEkGAh~Gfu>PLc-sX76U8Dca0yvg}eZ2|ykBW1#JYzIPj7<}!b~`f3!XRwd+3VN=K_6Hye1}Q@?D07JiH;rZ4CNXs`Ax$ zrd6Jc%Eh-aZD)7P+5pOz0ZNvoC{1Kte1Ho8VHz%s{vm4sl2yHOM;f<2>~mE0W4Ee+ zK=t+Tvhu`BgV*t*gm zy|Q?>I$!FFy0AGkaF}5}hxyWj^|`a>3-3YBOoSZpNGYs@{SoVOX#Q9U-vwG!oM=dM zqNCu%Fer@5E^M1G+@(izq$5@cN9swbW){vx;CRORrbeVN zn;0&<8)cGqGx5-*^(Oa{$wuSa{KUXLn}-u~pBo+?X{7=2c@N&9n=o2yA76Sho+qA+ z=Ya$G(^tLQoZ5eBz4>0LWJ#6y=soV-`2^lu<5TL0^>dr6hYt?^^$d8`^od37Y+8k+#Ia%<%B27>6>r<7acmjw#ft#RJKHJQ3_ z-&?v1Urz5r|3-FUv>WDf+QBf;Bf3EOk$76^Hs~3hho^zEgoG09c%O1%giD)iD^%4uHXMN{U08~)z=Oc!w^-l9lDD2tzeQ+s*xWc# z73p;;60}PJm^gsYEb%vfGQnrh!*5{hqmb*KgMAFjQQ*SM01`ddy#g0rKfDL)zlHo8 zy!oBq;$z}jsD(g_?mL{87eQ9c@h8?$UF3Pk$OJkWaz5908MvqrN5Oq3ci~NsuK-7a zH=wJ4WkVnz78tK0WW(QvyO_6FIL2jNSXJ3nzc@1MLtpF#02y39466`+U=MCEVqHBQ zyVH>>y7qllXUBY5%=0NotEJd_jx&}iA?vj1(0V>G8nBdu+OwbQp~vwU$pM<5qI!_YVh;lV zekLNb-}w%RF<~;pgTXV__WOMgMV3rnYpnfeu@yYUnB0@U_J|O!nrCJcEDW+ZTM^6Qu z;$B#Vg%1?3yMMYG%W3Lq?>kHP!=+Tcsc*J?tMl_a#h-!isq+z$S;y4~Zv7 z(ye8qjsbyp;QI$hsqb>2C#9v#f}iIncc7;f{Oj7brOW)0N}S%1v6q07H#y%D&1!s# zSexeM3sK$<6!XOI{YY`HH*B2`>K5gWW{CTsPDQN!VaLq}#~H%v-yfOvsV{aDbDNQ_ zuyvU~GUMG)1C@(wFaH|&=HDyRRJyaSCbvDi2iCe?6s^0ICx@;4${Fw1pMl&zP39K$ z?QoqNj)T2n^8;h;K=HtAaF%CXafjiXjB&$SG4W5rfW;RQ@VR3W&+=J(fG>0s%ke-y z9qAf4-dgfEj7A?iFz9~A^N?oIUjmE%`_JA&cNPvY{6w$|{vUVJPaI3>wXYXf!trP_ z3xktlrzJ92cMy6$$ib$Qa%&yf^{o1yI^4?*T@~8;$ zcjuto=xLTxRL8EV)val8xbV|oW~wPoHyxW!n?$T+O{bGlEEAp5!nPecJ**;)P9OPU zI-M>{(dpTs(}8j~x6tVgI=7cjL))R#e-VZb{NcYS)yL0Ct%ux{POaCs?liTQz6K8z zp;iE!)FG)r{?Dkj;iuc7*52E9o?4HRO4Q_Bg>t)2ty_Mg=^oTNKVwZhN3Ff&s;@*T z-glZ>!O{@KwHI8qk6d*GwH}?!E!5h7xylV{MT7yx zRY|Rzz*QZ+U~{>uqE_;-4AkmCRUb@nM=HfzUja|-2eXuKDb@uCH-rEHqiOhYI<;up_ZraxJ!2rf8Cd$CztPIbHygNBJkI@Zu>kG8*ppt87{mnV@+uk+pwA2U7odn z4j$Fo-|oY>rg=lsxz2dh9c|c0{VA0{Y#;r-`{1;(K|+y{91OF0kToFsza;HlOstA! z#&@nGQTUek%E~joQZmm4RYGmBdzlNN#iA-6LQT<{Y4{F*205&cEA8Q7hAd&L#%~Na zNm+>ygG^W^kHgJYmW0i6;(h)cDT`ev1;_@R5<@Krfx|`+h^Is#YG!?awp3oWmmz72 z(vA?1t>l+f^`^MYu9-@J?fTVltYi%Y%zVMKST}>MhAoFABIclT=%0s&Be8enblDv@ zkYGY4*varMq-^BmnNI$T8Z$vgL%aK~KN6L$nTCCMby4*}=|Id9AZqvMj(vs?07SgG zou9wRXkyZ8lSGd(W^MAtjsuE)4|bVdp))63AI=@Zxg|9WGAP6Sv<}5&TrC+bU&B_| zU@&G58#UYek?;)0Fw%I8+ox`O{lEe+TdZCY56RPADzb@+n#L7hY+o!4;XU6AaB)Jh zpUDid`@;;)#$iv}af^n6(CM!m1RGTiv-0~0u=0qnRj=jLywT5(Ty*{$p>+gyNJNHwTR>Q7w7g_^v7O(Jo zhhm(ZOi7=N35JeCF-{1~k{p2vmOeBO{k;Q^{72ft!4OYnzDkHL4*Vq-V{m(s&unhP z-?;EeXrtf!hwL|cP<`DOxJx9lApx?&xa=rl@Jmq?`)o4KvtEMl44yShMcy8Hl2!)x zM{ZI@2#ykp=jsf)YQ0+rT>62_Vhk#g1J5>tQLM1_WfWuksw84AE)AJAWg)XFfExW$ zW59@*RaJ?vP&jG-Z-rYRvjihXD1qi8cqBj>9f91$D?pSxgeb1YBvkAxz-{$rxhJ3s zJO}{Xlm)eJB5-;tGx{mIMkp}1KZ2@TlJxaXa8lyhNb2Quh%t` zMurQ0s2R|*ne+nOg~<4eptS-7%jzJ)942r@cSLWFgL_bX=roQ%nd^G!lgM#0RaHWanTFk5K*tJC)fwN}Zbfj2{6Sl!ld6&32t% zYn`2g01nEbswOupC-`WmG+p~$Y@+v~8nuUg=5mcTqF}i2k(E>-W2^80Jw(k}FRDf; zZlk*KIf`ap*T}Yilc=|uWw9a7yUP8Tm_Bl z!x(^gWu~;5!E=49;7d8u3s@=6xb?a;8eQ=D0ZQsGH3w`J^yJneLXYBTU%fS>seDv_ zN4*#e0h&WTyT7&&r?JO{<%?8!r!J6JY6TeNp-phWXS_?l`mU|xa_h!-kIU^29>Jg| z8w$t*5#m$@Xqvg3*s!_t;!im+VGFWu5j!31x}-)Ibc)G!Sr9JtInK~zRS?T`zf#76 z)Ogy&hv{kLaK$)|%MRj0KjSo&4$Lwvgds2`P7}A;p$E|Bd^)7xFjLcJG2q4mQ=`|oxmbJK zC_FPr(-FCKQ^0JB-Rz7~_4q2Z|F$+q$hfCU3V^>v1`DT&f=76Yx)jnw#L>s&Ti(U+ zIAaY~m;4ts%<%M*(5&t{Tys%5-5?_PqlCLDrQAs=!yo}i3}lr*@ICA{`1}?4Fc*r@ z2~|G-snv#k+Vm=4!FQ{D1t%h%7w{F##@-yNbq;IVj1zi@G~i!=v7VieuNb7`fcDuX zP1kdw9yY%npIyU!YuL+f2X`UH2(+MJ-Tyzjagmu-H)!=3s~b-m*0{8(h6`TSq@-F; z-JwQDYIw%O^T8um5#`DJwqZW&MN{JB4X_|!GplM1J=hJp^}ImahFyz+ByJyfs=qS` zi}2xfU*zZpFaWTxRbqrODyR_dk!tj37xOhVVeF-0v|vgb?`>(_2ouy|YWd0da>A+= z50XB1x}6G}2f{_Q?h9%CO8gOP;joQW07Cu)Y%$J+&A)`rZonQg%ZCi#!$ZfyumbXv zb&>D-pNidS>c(Gq4jI97Gsg0Uy>Q5N-lY8e3#cg`dq(~~Eq|Yqzfa;X_kZiS0jT2Y z!^C^`1ZZ=6v3dwQ)P~rcjwE+cZH=72xn`cd`yrK0m)78{YLr#rasng}iYp~?y*eq= z;Zjb84{A2mvB&PY2RhlTPeZgfMm)WaO4I?BhDBij{JWTLrvB)vG_~f<>!H@9i1pj*G`?8I7<)8j8N03p z;_gKE-nlHTdv}jR_fC~Q?LuX(>6M+v%6KBour7sUxe~4Mzi{emr`T&^o&f~Do^@Eb4okMsAC2S(9*mt{~Ig|!%zKAJ2vuo^02A6<~;cut|HG=T4c_rrKmCM3u2u~Mv z3iW~b{Y3o^VFKp={SRRNQ$QnU7H1BNqm!K0P-ci(v_ypLlWSlb_ATEH8F|XY%fWri z>GTe+#n}?FugG@|&sa_|kOp?d%sRcWSlT^^!=w>~@gkom-^JtX2n_4U4g6^5tnP`1{wjVD(GcCyXMq z_{(ZR3xUWH15pv(c;blRsg;Qyn=jvxaSb%a3Mbl0QUd>Y6@N3yjB(d~v+lI5GCTuR>jK%&4KtX3%&&U?S&ppC+CBd+oYZWUaizCD{F`jRwS*($RsxAyEz?ak8d{XCkv zy%BX~=++K%j4>>`eb9%f zDuzWPS=bL%#1Apj1D9_nb?AmCHF7SXFbjURY5Op$)j87@5U zT7|A^ca?>fiVa)*VNxYtxinRxOqVELqO@AIr0(FTCpFrgj+ngLxXZi|lixXol5v1H`<8n}0jpioqK5jC-u ziP;iILJ|B2r19AA`4VT;=v#Lf3`&?S)rheWw7pq}&sck)eMDxe( zji{&Wo$9glEQ>ZT-}`;e&}wO6f^;ZzjVfxJJ#t5OXZzN8nr_E}mS;t6g zh#_tFqvp)L@eH>{;;ePP*hZ*YZa+=zlt_TS%y@MKufQ=*{!w5PbHc}?td~&pu`x|9b;l*Un2~M@b3aqZ=Cl>_{0~JmRD-`PmFDh;eg;ue=29f(*bb`9 z-(BpRI5i2hs|nlF(qLpmtcUytfRlKt2ng>93j%3xP{TW;cqXoggrtEjjj z@}4gG9+cKqs8($-qu_RSmtjzx3FOI~N&HHNA;UDH*)iVEiG)PWq{7gYH1Ko&O^n2% z$b-cMn^rrV`rvj!roGL>q^}4AF#sJr*vf5mUDj8yojq8AR|jFHyXjTuYXMt2T=?P@ z+&2tX1(t91hCwrCt>doY%d%@YPx22J{uX)lSka0)gdqJeR3x1BjY{H>Tc+ty01zWU zPNA?5rsna-5lTa!u}QSfchlowY*?mnCSMZ934+CyX0S58&;XZv@-eX}W6&|8xW?@R z%BTny`G{L(;mA2jSf)bs^P+a*U6^yXl58d%xX=d zR()k4-l_S0m$L=eg9V}=RGZ^=na_moWIN0}-}bf%54 zGl&Xahr5g0^bRZd*-#p*`3)<$gFZWB4i=DBCL6wUF-AJ8riTbNd_gjBo!~a@LSwso zv@*F8Yosj+$b$-6Qv-*A(gSxq1}=mh4M&Kl+Cu?XE8$Abhxj=uti5sR=LSV_LB{MN)6N*P3w-h3 zYoLa{xln1J%SN18d4~ERbhBx3Q2~{1)?KmpxagHdQ+>lNgotKDsB6H%&T4J!9+?k4Gv0} z2(E&h-IEyDXWr?YbqhPftPv-uCcbk^&cMZBxVJW}hK~AGwh6}BxPBS9`jW){b6*(- zfa4W_xALnsPL_stJsOm7F7JNC2GIzkr=V)pC@#NETC87KA}d8{uz54&Ut@irS}DG9 zmL4OxZw4+=V=VA3yHK zUDyG(jAyP;PxrL@Wwblcs%jnhvm*QC8sWT}6iCN=K>A%xifr8VYsNzRcnU2`E3^Yr z*ki@#CWW45+arZ94vj?$MHi)$!Y6NQQdoIyCQ|s4v13wr{lguR!krhUNTCT0rtrS$ z`zca5?Bf46DIDZ!_Y3Uk&XB?!4@h@hw3DPz;3;%rS|M3zl6-dg{-@p2?|(Yu=`5@n zKX@PFGP&sgYXZ2JMgR7#88_xY#3!v8t-1ts(f_eEW9bjGvSzg6g1=P9wmJU~tQpRpgv)O=?63$7cqwLn=|9~vpvt}qF>k$FsS~7wGnlUQPCo5HS33yfU2yIo{W=4=; zT%nXXf-JloXAN=fnpz}EO$!HM6EuUX4Qn@KXic+&w3!unId@zjeq{VqxU?J#jt%d# zgP#xz^-C=ep%(R}@TGS}ck^rYzVcr}jnKa8izMqE$SMN2&DZevRI$%KyPF~r#bhZs zRTl$E(y%s&v;--_^}sqomw)KsZe;j=eCVaCOIhMhRA@yGHRm%l({#8|>|;fS%=ysy zC@txD0?(HYWa7UlTr7BXC0g+FPvwXIWqSQ|^pq2*G0`4;Ep#4i7BW24pHqqY7 zg32jq&2olGnV33H4__MaB!=95f|=cmL}afTTdQp-ituu)!Sb*$TZM$dcexRm_#5&g zu$(XUU7m2U^R|J7CKlm$unE`EBwGz*<#6{nUMJ~km5qXJ1`HKi7qKRKe6iPQakX*5 ztOQHMaln#E;C*12G*03l8K$fZB(mHn}bOXg6j;z?5 zz84S!f#mi;AoqQNxL+aBcr@Dui#JSVr$@KE@pj#Ek!0|;{2{N)v!;1MDRBg!^(`O7 zJyK)0Y;y!*7slVjo>FmhD*z0eM|M}_0}gv7zBun9x_sh0G$pGS7(yL_wF#LsLHi{a z+CxX-={SMbGxpXsir#kLNj!B5wCA92Y2YxH=@)MRpg+my7Z*V!x0Bv|Cmlge8bQw? zCK(WPH^*e;(EL({Mi3NN2>JlI(<_b#=(jR0oE8ojceaAg;MU4;xX;Nx$VMEB1h7Q5 zFZwhf51Tg0(oh!|x~>rLeo8H6*Hz2An(ABsTc{B0M;T#7{!O2 zb2f~Fe{n@gZXzaZObAEOiSyit^rjI)$iSQiZ_^O{4*LTs^b(?dwg=Jj81uqm1uYx6 zXMlKhufCFFP250}@lzu=3m}RQ&%%Ij#yAxwnbWz}ZF}*kwp*_yHaui1Jn=iohn7~O z-BAQXvea`q(Ib;3HJ5hF!F+=Eo|;cfwg4dmU@@aPD*_Bb85kZSn+%d%&fBw*bH+He+h|1%tKa3E@_`l4sB4vhoLlkWp=7_+>?fqZex@2g2q{eVI_~$2*r4EkP{L>+|IlCqftai znSed8aT_Y=D3TMeC~>jfiD{dtPa9w|g^S)NruRx+p@d0n&Dk9nDb-bJ7|q?xiV0pu z_^TCw`C9_Brad7u%w`TgrtxY8vVvUbGSLahV72W6P{@#pRGUevstQviLc&BDt1jS% zJbsV0+MTVa0`iW)=L_(YLXUum_%DjM#^G80zSwNMaK5pJiaNUtbIwH2S+bglxw)Ki zXMfj<>|unxL@j&IONE|gz}XNFgz{e$zPi4c11Os0qz6OK1{iu)h|b(rj^*43hyNY; zn|L6I@m`g4zL|4)$`8|I}S0SQ-W( z>d7;7Zurkb+fg_u5RXo`|I?pg|4}!F3;jLhcnSE-meuv~c~hmoIPhTSo$#r*yCf`t z2MIDF=Cj+^n{W5@Rf0Z~EIdJHF%dQG5*_K9AbLj<&LE`f1Lz6p zz(E?{_`A9{AVt2l9)yhw;N~M?d{#a z@bq@{$S!(qWM4V5(HB2|cf}*`iuqa?6UD=Yy{F1qFX4VBoiw3V3&Knl7T8jU(@o_- zjw=F*Ock>oITbUpm+_^geMZGg(HH#-vA8a&|wIjInloe&O*K3BbAGt!5=QB_$#wC4_nDG$$ZbU4q$U?)h3_?Ic61C(6& zE$Tq>CZ#sua52dd@jOqXy@zpz>yJY58@$COV#&c$T$9*r96N}$qGXc3loRK`x6J~> zuIrF%unhAb@S#l{j=m%Jy(+g-tLGKNxh%RS zADY?`k~N5vG5S(0Sg!Jpn)eUbH*m(-&f7RdDu;?RI+Q#NUdd4M=!)Ojc(?*pQ@&oP_N#RE1)&u3!V7a&1wbD4u?i_F2KKdnqX?93wz&qsmtvZ5xb2n|a` zO{yYGRb=UkPDFU^W>yxayEHtg!B~nZmujU5|od z=%$1jaP=C`e3CT?ID6vjyhTinK+0z`FVP`e-jQlo(kl}IH1;a#TL#t63!&7Wc!GDD zxlErcqq#ViGBL4;RVNLCuKA>Kb6F~KwSz|B!HZSVyG9zN9=A|!t)xds9=kS(FsbTJ zw<^|-_-7|&U6r092do|z=jB}iV&8NiuE-vUMz=rD9hWAfzOf5cd00Zstt~FtdG*BX zu>%Hu{*{?fla1SC93yW$j6eJrg=ouZIt~-*49t%!ibI_w41NgCd?Re*c584OJYpHt ziiB57H)CRSA6J4`*l~V|A%JGqgWjx2RTDfC(wD_+P#boJV_kJ;m2X`SFS+AoWgxru zU;LK-B#`KniLJfKdf-mwYq*QedU->X0PLXS#x`EZ&W;NJ0y6c2gIvR#7E-yRGaLD2x422%Nuc_DS5s0NJAOC^b#fp18DdT z+|C+a#ORE`_4axUsS85;*qI}S8g$u?pk*{1q91E3_F~%7yBZsyYEyzwDvAxWp)oy5 z(tFYyD8>|@ARueRC_~eF?K#=^f-5H=&2hp{iPXQ-a5(f1k^mI&HF z*K!=^N!13#?P7r3k8~;0!4bVXkJDzP=j46x`}B5jU=ApQW6i+;>xW_pzeVi^XPB3! zX?KXollX(G6*YT30yn~q&+vHB&RSdUyQwQhtsz*}eU*JU;78BE`C)U3QE5hwg1FX~ zV*KuA*%x!sm?vGN^B>5TzQdR>DGP#J!hAOXp$i~fsNoxkbGqnj7kvSBXK?j02o9HJ z&n<@D0lo2r(y)1I88Qd(96*Y-P=$d$RwWG7wOuOXL5)8EJMos^6GwL8d(Wl~dCn8` zvT!jC^eVdEjvMC#x%3TOnpJ~+{b}QW<3<^OjG8p1y-jgK9C|<|Z_}CJ05T!nE~Y%H z4lh^2DG2ATpF~<1b>@K7HM)#CQ^cqt=KjMS7IByy+5mgSS)w(mGARg06@B!kG;;4`(HX*c7XnYQ zR`f@sOSv9~u;z%A0CjLb#EHm}?uXuhH8Y13dkPTSk2RCQ4N$oNTES(IXlxzmjWS8P z0q%Zmic*%&OL@+eyU`rixf{Ew7a6q25?6b)g5E*?{V}OQ-VL=IjK}b;lSlYN3PdTa zHVN}^{UMLq1%F5{$BMP0znPp71vMG{5r>XWL4DHP&y5o`qjuzvxX&W&gTDFsH_oS} zpQFk-QZ%HU+cmhh@1B&^#`*pXI-Yc?x_15lgN^er zAj}-~#N(Y&yd&?7E_!DilEFKp%NaOvha2ZT$O3s74<6!9V)4$v!9K(H;J8> z1m!HI3MJ22G1jU1O?kfo`+K+)4Pb9|-Bl8nqV{Mmdq9l&ya6OkM|N{DJeH0F;Ri4Y zVBN9v9_r+*!ZzrJiQG}Z-~}{@VYAM``HMk`YavxTSGG%J3&oUE;cd|*WzE)MoRVrh2328e z7RINkePyg}xUdXWnSDZ9xETOCp!q~&nN$+UH}X^+YZFg&Y#rvQRoLw=0EuZ#HU6+@ zeC^k}8;E{{2V09dk9huHXxw5}(v3bBrVgV78 zxnSbkf;1`{i-bVby=Kw+eRJw2M(e*)P&bJK&wClz^`px-4-dSn2FIHpZQpaaCO-dg z;Y76G6zoxbhXuELA|fs9n?cPsAbzPnAj()L0x+6 zb_ezOLsNq~6YY;4)bf+d7pW^-8a78k;hqWUWtCtpGoHik6%%G|e7K0&z)(JVEo82* zIl|}|0=W2hZD`i|D{$s(17iQwmNey6k)3ViEk_q!-T)gt*neLnwzaNMxFX-rX}cw- z{Ly^W2j$De-GOFZKRAzr7tn-;Yfms5H{{Rkf(>gmuR27QLAW&yg>iKh+!~w*UxZNk zC#~*h&uSz?>c!pUn8Y}u=qtePJaP|rp$dPfu^WCW>*^jI7$*%mCr zC-F&|sBDDfu3aLvMq}G3wVI~YHmG2!t-7#mvX|?%Sc6S$P^`5@s}&!l8zKgbLbU!A z-%)F&{?y-Hu`Sw~5MTVi-!pTU<&hZD{`q{^xpVJ4&YU@O&Y3f3X1)_p4wV>#MWaN` zCesdr#<)TSBM#Z;{B2t~o?Y4Be*nhb2`B4r8o*d9T8x`7>dsQ^zsM7Jnw1tM^KnwR zg3?!VDF$X#~|ir+Mhf}$l^ng_*~XYLFX70G-<)1K8iyt4*8!*$Jvn+1RO=LsHr zO3F01?=Cr)%(D;nxFYwBqHQ=Q;rc#ak_1D=@$9V0yn=)zB9hiFEkcK}EY)F)1@DP@ zf7k+yE-b3w9mgx=n#a!dho4S2Ujl{)Cj}mdoyiw6&K|%aJ1!2NYG>8>+l@E9uDBd> zJ~-4JvbLIC|Cc#T%;u~fV})2Ia9Hdi^_jKgk2tvsH>6ynPOhpuf@TD3V}I6q!iQr< zO@?_rS=#x<0+7l^NO@G$Q{n=5bwC{XJJZaFKktYoQmtf$>Q9Fi$y&wY|gIAshSHsqGaqv z=AjJ7mJHOF_5l^am)szRLQipCZZ3)r$OsfCi;vybwlx?#i*r#J%rgsNrWt@6Or~k= zn}IX)GPpyw*O*$I;TJ4bOL*zhXuZ@aaU!b(2sRf$I3x}rtXbuj2A;oAf=AE1DCX4Dmak!|%QPenRr3{b# zF(8GnKi5||1!yXAUv1ek-pMRG$SerE6WQ>P#0r|EnHm%gXT)#Egy z8nKo54PkkApwxIMt?GTOsSkA5ypES?t!c|^NC9=7RTr8)HNAM`A1D?SIS^b?g#K^n z#G9a9gf?`Uk*CuKg2qE;e$_{)pz3gtAecN{?syCtt`%o)u*FOBzrg3pjG;29wxt8$ z>{F_C2N@JBPMnPt>`A4AzWD340C?KjYu5VQ>gvdNswgsNRk0%n==&pi!LO(fj#Z-=DZBD7q`hbhlK`eL- za#!HfEDo)khSJU%sQM7cPYpnEcL#rf$>CqYrP6Q+C$)AoaSs57j6wepcg^xKO#t4@ zv~fk|lZDWJyO517#xvFK=QG=U?P3Ib^M-eaaD1N7q1Nw2`$i$q^+y%X5=1i`FF9}y zB;lrt66DQt&($?bdOMJB+R}+3I}PV(V3oVG5@xYpcr*6<&FG7jN8xC1>@BbDM7v8- zE#!3|e`e>#kR8YsOMP%wZ{=?%c+X@|2a9w z5||7wPuT z+!A#5Jk5RnGbkvL?p(9xOCK^-eE?C>0*49(6b`ZkT$q%By*Q;U?r$F0GSrhnvDLqa zK&_lXAo)7+jtnDt(c0)~aOC;{Rmy<-9hAa876kTQd-Q!_v=^iV7{*{=Wo?T@NDDl1CebRJOBY+ z$vhzeXJp9|h%@IkDuCxWr*s4Tek7_og6C)9I-U7hk;1I1uft0t%Z$v*stVXei)IHF z87nvT@5Uti&wMldziH5O)udCf&SQW=_E{nOv|wZ?-H_`-a5{hF%k-)j`d^^B(r;QB zX3yDK=wzUn3IN1)&)kAs#JlGfLZo6%WUk+|zLgttPHj8}MilF6Fv4x_)U<7A9WDz& zzhl@TH-{dli`06r_p@}o?J3b^W5&3HvZc_E+{b*XP#&_0vj$Nxj+>Z$y&qcEK-Fck zJo_=l$U%*_`!H6}_HVE?M%@sG6QQCTD3pJUjC?#5;#`*Z@TGqFDl{;%fxl^07ja4X zIlQ)4tig-f%lT_WAH$pel9_J;_(ACXa=T1%zUHAr)9yM2hGw`t*4@Uc?Ccrx3Ad9E zOj7_aRW^h=q&oWDjigg5sm` zn)Y%=DsZCV6Xw=8DrSc46=XP}*~=LiQNQH4Z4)BM$iSTf$qJN2Kf!WD|GsDjZv3hF zfNK+64*r`gQk+|ETB`hcQ|EPZot~NEIE*{$lP`Otq zSBRPBd3>l}-heVA8~CexDUR3nij{aVdpUoN=ITW73;ew2OYv9ytv9NK<5yUTqHE0y_R zzw=X4KB7|YJ0j)dNa=}jPS8j02ZX^8(h62S@CG~k<2;Ti%>QO$I7O}>R7&$-NRq-Gf^*9FGs)D0ZO)Dv<{Rh`vcIo%8{=sGDEPv&9QtUmmYDigCd(V6^ylxUY zF)a?yZl6)|#KzXl@VYd5^W z=El~vjSvQ**=g7{8k(IRKoGFHO0v2F;caPElZtaYVf_nW%hWf(5OF@U4fjK+9@dMA zP2Hyen;+)yAbTdV_vb>R@rP#5^;hjHHd##d-QHg)UfLSSbaUt`51 zGDNa3Eoo12t+D6lgl1#US@c$Z#Xa|wrtV(Sf`oW->H(8D1_^MSRqoedyo_?v3@xZK zGcve)ReSyX!@f4}u*!!M3-B5qNGS4J6j>xio{J(c;M_4d^c>`iQFkm~J6Bhj&QB}c z`1fh}hZEArm@vGRFz^i(o;)whUa;rM=k7VBOAgAX83^JVqL3-6whAdH>MwtDsD6Id z*Kl394GhSpzK@M3=4bhqn8pnoBmbM0=)im2y{B9G0P*CtGXG}9;8&?61wcfB5v^BA z@_~r_#K#me^NEx!<`OoL1vb!s=)a6*^Rw`?AZv+HxoL^<0u+FM{v?vEH%1O+?WZHud%by->H%Yq6y=K0tE%(&fjUO``aP>2($(%%e&aCO`19sgx(}@Da?V4W1MQKC579+qc z=2HtGAILALkp#(UjRWTb16Dx!Zs6gEad#Mmbn%u$0Oh3@uJ)NTo*dRLqq%sEe&vEx z(0Vy&{g1J>mgoZCUOhKCIN%YKgM@IJiysV6$i5|kp1QoLNS2lswCnOV6J1fLWNn@J z41Edl`fve$Cw(y|%~-*M)65Ns@-G~m^>a+b>t3SgT=K~K;Hc z*o}?}delD+!rB>Jb*r%=_hWvKjyJ zHQ)VSu59kEswYf!OH6>CNe9u2*Sp{!Pk z4HF*>nNg`qlhyNdh*h<_hb$mvIjr9O6`GKE0A&Q7m3dj{2<#HBlZR60u{_c?I?ydj z?Lg)m>eGD`wAbWu16-;7XkIzO#C~Ws4!6%jq9960^NQpHih5wUsAL(;+ec)ftN{rh z%^O6RI7mli6xs92%?+Hr;SVcDgGSvOqz0Z0FRy~LXqJf{jyTWAUgSQu4?a^$%4eKQ zO?(8QODy6~^{}5r(5lPpMWPfU!W$CN@cGS5vxsj1M&el{4g%=yz%_R~xM;^waOM4f zgDb*DSRI2HI~+|e&}Xb|*haSDWS@N&J8|Dz%(Q2Q-U-fnOpTIgBk}b(Nf>|FyM?jv z3ZA^n6VlfSbsKXxK?J5(oeN$H?Ry^Nj6>>o*FE*xQ2)~5;^vJlZuxeLtDKHP(<;w` zMsGz;4yN^l0)OHDV@B6>E^5NjhOE`=OItOo$B$hKrb&SK=TC6A>Fi-WNF2eRw=`9ZwrZ2wZ=mwXAj zV)ubcS3K(ICTv)GRPc)1*-%ITM57W(nWUjpkVk>Yk8=7uu{YTlJg7*Z zD}ovAEXHZF#a81=Q5OF{_{*HZ-#W~`Ck zAse978s?UbK0pzOlf1Z|w(5r4g({X}90jc{sEd_gDXlKAf_wrOFCtFT2&<@I3sGKc zC*2`w8<-s(!i3Fy25)UasCG5kZR``G4_Dp-K}_WXuVkt$go0o=OcMV{6?AUOTZGqv zcr&0h?M4v=|G55kg2RS0|DewA1M#c;P8+d-{1_=Hhy+}Qk3kTwhyc)jIpdBJAV4C^ z4Rot0-aneR6yF1JIjzF_NQ((BHC~OnXLbf+b$L@r!6-=t0!kKvfH(z0QlKCmFjg}~yV;mv3oP(_47#`Q90 zb!=jw2jZPS-#WBou}xAP7Tdilrp0z2V!(1QDHha>Sl}`Aqc5?A9nxJwo#o2uaGmi1 zRH!SlMS5MVhU3sGFs)Ws^uSdE2)e`M?$Tc)x&6XfNp6o_*m2b+Dpf=8bcY9#2XoCB z3j%wn20Bu;s&zye%znY7QWa9Z&w;F7qizE}sv^)1=sdWYIr_9w_iGknHxMXjpd?Kw z!D+_LZ>w=esy6Mt@ooy8sAoN6)cpuKV0g@QXW|^4`plnzjjq28g}3tuEx-9f-SVrY zh;FPuyaSKBK%C#9^}1*L3u zc({6`(zu&EjsXz2!ic5v>Tv)p0f3+^0&91Cj$bH*KJ*!ADT@KN{i;}wij}EYzKWG2 z0A&?2u%Zjw=3ZfWnM9x0k?4~i@S$xG8p+hqw1*E3}~24AFC1l!*&J%P>i1X9A~k##M2-V z^j-t96x-Lu?du-HJvp6lKiZUR=iJSBRE?bL;!(8_OLeMwdO!x^Eg%s0#GjIVIfTe9 z#=c23k~lzG4l-^gLk#!pN_qK>EX$bD$l-|1n=(dcC>i58lm-M%7`YVwVzux_Hb@OQ zG{n=dIq-JKKI|yl4nW97+~4lWj0qxxB>))`=wcf?`E7>NDnYavf#w~F zM}z=0i&VVPX=B&nK!?_1>xQ^>!($=q+RpJyo;q(6)=A+Pa)Fx!WF8h=7q%#nX$Y_Q z3H?&nHVf*NZn^l?Ettg%^NMto=U`RHrvwHBTHi6mZc{&FeG& zJ~UKfT@Uel{iIT>iuc`wr4mO9%9moHGnDYM<_KA*{F+|!J-XxL_=(2goG8SNE>ikOrYK#^YV zUu}dr9YR0glc7FQ z8o00HMXFJG9G?r1Q4HH?Mo-R9>gVKKSVA~Xz1}DH`>>bXtIp(PU4Nr`@2kXWzT!QO zxyXGL6iqYD$U9=jz7V^S_@#|;!O#TZPDWMZ6t&}=BnOw97bluin$R7ljVOJB;L0#J z?G73A3Kt`XxO*Pi2(H)@YG~s)pI{ZjtAQ9HY}`PO5-_1*kHBOVCf5ekIA%sFa1_-= zh3dw1#SZZ&GF6F`iDE&Cx{CnHE}a?!d$cQ_{+%hcdR$!N3?uv2mG}cnuAkxbR}6 zg$pmlz%?O||9@6IuJ_M#aNMEAd+X~J$C|>2F%n^y!I^{0@kDPN&r|<|DatN$^E9mC z*|H>Ut^;oQ#~eSO&eXW8Yx!opfg$IMER|s~GdK&dbX+y)K6_9){b=bjG&_)6kuAPE zj+yIjE(Bv9zTb@rX4UvGe-P(zaU!beVjM(3_o9!!f%L))l0HN!<38+u>CDvF z8$bsY(A#=H0fCz+hW(kcS0|GVP5Wf3UXE4H)gvpzYFj?0*H~$*+#SQTP)gkxUUwK? zW>iflEYOIv5OdGtY#l3Q-8H$0`nqdoFhJ93LX&(6@m-O@=fNUlZy+XFVv<8=aQDM9 z7I8&y>#+`qfNKe+!;#J}B7>R63R-aC^aaiKUq`olOTcg!9>nT~Q_tzM`_4Vvh7w(X zDBRvFxHC1%8{j(U{D;`zR zo)}P4$s=g^4oJB>tlEhoA{YJXZCi(BsHWB!<2DtutDB{n(*fQNN(aT~x=;0JKjm?_ zv>N%+BPT_7n9S=a$lLMD=?;&;q9A}6Yy*~e0AhF8L#&MA6qP@|`7C7r{jAYTw`F*( zmTsecXHpcrjKzWiJYfl!v<~7v;m9O$4T)6!G66duTMa(%WIKvWnL?@ss4@g(T>p$ zkM*i7Y4fU0@-j|yJicvK-wJ{M#2=4K;yICal4=@(NJ2xr3N)67*RsRM!|O^7)J+<-daqT+;P zQxn_fC7*Y`)MdHjHak}}MmIZ0#dNd%DyEyArDD3-KE|BvnLTLsv#ZeTdEW(48rYZ6 zY<#@(34Ht~KH|BY&v)}ViQ~<)CDp54`0_N1$UqTeKL3fIf5^}8mP@nyRJLVL;r%c9 z{@D@lFXa2L@%^KCkK%Oyt^&Xqf(?Wl78eEnflnfFDHE^w>coHFh{S!rLgH_YNL;8& zE?|*%RO2pRRq)*n$nzod95o_Or^*wTpsiIUK81-lF!8oaQb8X?ivjuo8=kDdRcP=r zkIg(!jmWbjpq_mkdG=?XTSnv=7pOa#_=DS!__7g+cLdZG%(Iqx3P$8{+0JDD_oe#MY}~n%Fim=43y~-nx^;zJ75ke!?p8t`6NFu~?JE){ZFlKZJHa7W)uf>l4S0 zC^mNlv^grKk>FRc9gVmRq{7=-?8}Q4_n^)}KM!guGhgJ6o9QKXtl5XJHJuCsTVI&@ zVqiH#kOWwYFzT+u9K&u}Nx=Yj zG6YyXY-WI^w9_Qks$%7c!Phd{iRcpJ#%KlNAfjGG!Arvu6P?D*UA=8cc4mBYKPGWZ z)ZSggc>ruN4^eM6?c2ft6w}%m0{8B_UK>&~T&=JfV?_c-GC9;!0c~5-(m!viMBA;RZ(aRTb+~3S$ z-yPi_6{dA#144$UraO%U4a42_@Alb{-6SKA`A$8M8j`Mr3Zco{$5(8ECBlsK)_s?5s`IzPuQS7!uT>6Tc5?i}tS_nnLA zj}x2?Hy|MPDr{SQOxU2WGCz@xW(H~=%QM-IXKtTOwVOa0(W}^Va0ZEfZ~(iFgXUngvxCSxCOfBJ=?EOV1|oN+v}W zKBfU1#1OzLCnC5iTb}on=bP{hj>-`dSx+)duf%~i+uWSnx!GR&JfLRc+=j^n{96Kc zD}xHl6D-V;A{$v4C&^)wXwV9mBM89xLV|`X`O=A#m;o(;_8OSD{2aW)9QugS$i|e1 z$PPNI1liZ2W0*vdP>c>gp;;|0fM~mJJ|BYtdZn6n0SrQujhovsGAOyosmZj+y~(XX zJVbmTPNSxK&xNo9!)41ynT8Zu2$S4`E{<*lDP%TZ262~$L_3miFGN2bipZ$N4!RWv z%W^9AkRsW2U@9OXw*W;#G*K|Rx7HsU%!hO}3` zMFU5;>$C8-FMe{ZNAf>PVFusTyoJXRyl6w5M}?^jf~g!JA~#Aw9sj5Dzp^=3jH0Dg=XE? zf|Qj@;UAmN{=*gt1Su$N)Hpa;(I?%aNQB19@bB3+yP56A zOFdcKe5OF$i@@W`%MW{FDCqD2HZ3~i`)wYg@eqeKFbKg_U-9*S88^-=#LoiLbfiLk zq(8TLo9ifz@E3+h;$VoP4jT9IbFn2`6^n6A&K{6;A$Ke9m|71Or?SjyBKv~Vg$AJn zi#P%BOA055+Spno!vZqeXv%T5h=yekmBvP~-A08Qb{D3xJ4E01M}Lb5ghUZq3&8@0 zC`!1BJ*i^lh}qGX5rH)X&zR{esV^i3uPwa87eG$g!IBUq{M6z`#I^RA&FSpb#&dcwP9<4u$ z4z;)u9{;-cuptnTw*XI=vZR3sq&I+mGD@A#Yt#K9o@J}Mn-eTIE2S~}jH>0LQ~Yr9 z+y>s&UV*gm@0@nL_V4`qxkO-(Y?O1_*lO?gfK+nJ(o2nw(1#_HEyx?fnsV%{Lc6LP zgI3Y!&1a3JPcm2cLSD6{v9AI4y2))h*^d^pvNUseXTrGUpSr#BxAO9;?UZk#d~|aB z)G?h*>n?d!5F0NT(k85Qi6J=k(mE^rDLE8_v;N0e*_G90)LjT>fwQNKXao-l0~994 zZ=_=Dcc&kX1)qYrjAgR69_++*Nj+t zRd%q$15W)#QFHjs4glD zbTg{+#t=2PzTF))VLr#Xf691G$%sy@IK4Z1RLW@A1C|Z|ZxQRZuw*li$p-)6uz^z& z-Ud*?VO_H~xFwTWn~ z*lrobj9cBiy)t$ah=#>clxW{RL`1BcfvcXz$I?2q3+N;dg&^k`(1P-{khO)f5_gqg z0I2q21v&s;fV(pA3P%LNaiN1#6rJT&qzA{HyNDK|vafLz_)zcd1GwLE+hlae2TCe-jaVYQ#ya!lptloN3}o{fpSR6A6a7>D9(;-0 z09R{9|8YQ20hk_+tEFIR%}i_q*rQ%%B;Li#)=W(J*eLG*7?EjG;z_)=#1vySolits zZN#UHOu&fHDMtuxm-cBYe&zU#(5XOZOl=G^6YME$5R@Rqw3+a~WgmRMPxaNjzpqjD z!Tz~aeUyC=1eszOB&pLdxb@?d8Iut`4mut9PrleLhAlWso1uF@PNSrUf`0m)N#S-AF^D+{dlz#OBFyesieJn^u4FJH>Vs53?B^=x zSFxK^EEh5Ce?mlgqoIM0;1<52++;=sOB_@mri8+ z8=FxgZeSEWFHWt57U1d<+ErxI6X;&Sd2?FOSrLa~6SV%sAYk3uiJ-*#(~}5Ftp_*B zx2FQuhF&~v2P~S?R=kYweE7w?c)&)8U;P`Qf-GRIm?Y+@U(h;*jgSJ)J8q(wK8!0k zXD8sai&PmaV3@jlC_`wPBq2}9%JzPINk=`Cz2 za%ldXQWMyLsLm(+bOe3BMRi=+03y|eI4a6l1kqMKC)>Db3m`#t<~j;B{DnPp(5(6j zC=qbvTSwj{Uo3gmQ@c{nRpEIC%v<#h)HdvJDSH0koRf)blmt=Oqi(G2 z!gA)~w06%EZ>Vnv=}t{e2l$D#?(lC}dpJ(>1zPePn#TUa(L1%9@xci5+EiF#7#SBw z?2UO?r%Bw(gxqPk0M1pBc$ocQL<5L~h1`JeQy6LAgofeE{YVen%m{Q(`{_Mm1}9?) z#39vv?gQ6sPD)kIim^|P5*T7i&x|3u)R`0zS7SAi@w(N0Hh`(n3!q_vH}iuOcn1^1 z@J91poU!~q-hi7Or??p_AC@4+R&`Q@BxbO~u&kiKgJPMgDZZwaE2>|VxA0f*a=YPF z3>xbM>wu`R#71B`nSWdO2Df7l;x%HY_5Gg3O4D%eThHhVJ=Gx`LiHe5`*+vOA}e4$6X^ONr#RMlBC1+~O9hW- zKU$3i2p~-h5m30ADvT~d2#s$k0!tu@Inwbx(OkSD;r5q!B-oP<2QDgs1i94Wt`E|! z`{T2q6MdEV(?UCOJmvUEd|04+yLJ;0RbS7svgL(2>Bicpjgn1Uy0DE|uvu9iY3Dxb zw5khnKqemS`X}*giZab!3(jf~hI7#H{bWH)UZKCpQ}~BRG9T0gu@hc}M=ZmvLBOuO z&c9pb*HaIzpIcoy8)uH^ZEmu$S>|`vPcg4IK=)@S{--_BVb8tjX10|0#@&le^VHLcs61DcuG8W4>iA z&qtxwZ3O~|Nbw-HOGrQYQ>A$2zNXV|B9({+KA1+)Akwl=+m-47?}po3Ks}?ly7jtS zUJK%|GkBCpF}4I?sg`Z6m~YQtgzXGUdzfA8gK^bp?1~Se3yib7u=u%`J^wqiYbVM3 z&Z{TQNdp+x+x-U0Kc+sF#q zf_^NY6a6EL@c831H{x`7#pkeyk_9*dsvDGTHej_D;$6^^Pgp$hBPN^|!~m?*#$bzO z)NaJl4QkOdM{R*|E)l?5fP}-F*Gi;Fw-Q17LU7624{~kv&-whA9`dABcgtui>?pq(e7mrwpY35juh3`TD zX2{_K1PlOq(5YosX0^ErmF}g2MKp>N@0N46k7*MEYSc#| z6Fl)~kV3{m1l@R2%XMl3juYQP)(7qvvt%01#uoD=ho&sH7v=;8dfsk*8W3c_!Adot3i1nH`CV_jGx_FYKapv zjCVvmMv3_STH=I^ByGq1hMXaF_ck{pzUUe$3jb+8+WR@dJOF)6$HKp$cEn=j&UZ7hD_ zd`w5#;?+ze5Z_F4f)MLC75u|m&uEITQG!6x{e#ZeGq>!I#7}0$M^ocglAtckNOHeeAGBUCT_fSG-cPJgA zW0SPrW96L^li>%p7nhifE%!rgu8D{_YEtE4;G&Wb#}P7#PN}up>#a#4in0OCoyTwh_7PL6D*ha2Q#J0bt2ogZBr@j=tA8mNhe5(nnef!Ha^(4fz?BMK}{PUr`HZuB4}=I8c3w13(4C?guBc zOFyEzaPm5;C{k0nUHA&G%oLuAtynC?ecU7pG}nmLFj1_A>;=j^=`7H_8-|G21+62x zpan5rQg-)glTc%ae6-s5)_p3w1|{6XHWEW|vRb%>b_#cWG>m;sL`6W{uzv+qG+n7*lSp{`r6)43M zU|7&b3`isXAgA3^v3oEw8><9csFW$JaPy1^893C^h(vl4j}mO6q1}Q`%O=8*HNOBy zh{1yy5o7B7T#4kX2#yEAmmG=g#uK;5=IDM)4nw>XZ-JQFmXqAq17|{R>yZRRC=;~f zg?MwV$3q$!+HUwi7l$BSm`h=aT9A@YH|6Csk1=&+ULhWEZgc@_GVx63;39+qJHlb~ zY$AHBj!xpm>WDMYv-Q1JyaA!0U9<#a5TBZ*(dqz(L5;I?R>FvK9`1FC)lkM7tneZU z?ir^BUg`pbL+8rgI#2BFEZ2SRVoYUK9rdyV4_>|+A7D|X(Sp4EUPP&#^dgS&6Gs%J z@-|{2!f^rMm^00Ye$MG^W-av7#}7e0?filDaP^+!ole?+0;NXgZ+oXN0QQ^%@H2OcY3&}v z(bVGt>)ALb4Dj+3wqkN5rtHMt-~hwI6fNL*_H?a_a2RV$mKAY$59!7O(3l#nQT8zB z7Fwlri>zp~ib8wC@ee@T2 ziUo{u8}Cj*t9cPX%P`(~8W_e2ryU$Fn0Ba9(~6OZ(bs|i1 zS@mrqM*NP{s41Q0;ywWxkun>^n#r7uD!B8>c*XF5HwiCJcp~eG;S*dTJSkI+x?dur z=7fn73{uc!m@QVSqG^FZG7mvJfPySM9wm@yD`~pSW?(Iak#ue@K;@9Zk}1pwj>Fl_ z_-L6M!ko%!<4THYU(7XfGL}GmPzvDr+3thKL3H-aA5g>a68NC~7;B{?Mnh6SYbKUL z?HC$jE1P>9i2hGFGXOh1H^TBBP{($lJL_o~rR5M+YLt#mg9=mNc5gWr z0Pn^bxEi*oLYPp`T#5$$lZMC`bQNwcTFjhjhrL4i8m!wCO5ADuDF)g4`V z3D|Bm(Qi4e7%||x>@76S;ldWDg*4}a4>zcL2!_`n17a3ERlmXTA zi0=hCI5Ik4ccy7gR%cy41{6{5QIK+@>{5i(X~=jfkvH)@Byul8ZmnJ=D5cPayvMVa zeN-Qrb(H$J8bg3rIoyTGFpx*h(%r9l*fZL0WxXb?aH%6(1~EQx5MOcA@F0Ha!m)$6 zs+@O?G^EV|Tc;%6IeGpgd2xBjfowG-=@u%Pv7_ZNnf;+YL#47&2Siawv#7;V& ztLZ#sowKL={cfRX4hm(GP9@%#^C`}iuC=v^+yz}kz0*_2v|a9)aGZVRt2}IbR4kL! zr#?2&2}%)BYKg`ORyHMn(D?;bA@`MEqZ^#Ie`9^Yp7%MvQgcFEJN5)&>b)s=OHC^c zCtw(L|HuU;26|S|!8k1qina$avd!&b$Mcf!6i8I zR<_?KiU}v$K~#z|-HsP(YXs}i$_`h}sO?kxXRB4~@0ZqdgH6qoY`^KOWAjbtA-3MM zZW#brA?u+*1g5o`)5ef>uiDLjmme|HQakxA*~yQSpz@i-sp0VfXdPKcw?z0dOA3=F z_tX?11^%#DC-1T3Os2v=?$4>t&*-i>nMt@%p&EMmB$g?I4X*B4C>l_6IvJjY_oB>W zZxh!}lZK2KNEn~Oimr)ku;FUPwEjBxU#|}(jvitBh{^m?iepxpdwTQZYR0sh*Smn{ zqo`?ZCI=^qCQ#gSPzl%D-S7;BLaph1>p3tJ`(*pr)(o(m||Rjun`oHX*>C5h4q6A9e^50qjr@v+Hpu751Qx=)Pu!e9ezm zjp&Mo;jTdQiFh~G^y!fM%7(A9KAm;Mc-E(x1ckGHo=u>vPbcAtBC-hKu=UA@?3A%w z#-#Nr241U4loNd>*1bN;`c!;(iuLK>>5@!(&ohtp0VnQVho@SfDx}Sx^=at{43tYu ziRT~xYS{Xe4@n~V;LbNTgC_hzWEf$DV*A-x9?_6ugkqFjSe@9AG(s^-rpVTMC>o_j zTzQ!?LLGS^@uR?ee?f{7ibc~1#hRH!4KiL|G{X8Mi~`mt8DidI#AfE;^)t%)bmd`5 z>r>nBQmjvsH`V&YLfoR$Mp&PiC??EC3vV3Gsx=V^wM9y(l_5YY$U@v1d6a}=;KJr4 zwZsSU^)$C1VLxI$`8JH^e>)_yZO^KGy2C|KO<>NFlp#B-KO=~9=$wZ|0@$^*O4ZlO zhMp0%#V{pG64J-+TTseItlqYnfW^Lpr4-w1pF|L{|0q>IPNrxtpM`QXASpS{XTLlA9X)06}5tT5reSHoYs5HZ? zbU&_3*=6}K&-3V6y^OmfEFd$=WCZd>1~lz;n!TOJ}7XO%yML}5!1S_ zr-{pn%BS|PLUwZsFbZ`^7uj*;ptNDb*R~Ax<9JvlX)AD=8+1xtGEwZUub>z6g{R== zMA-l!5-pdnwzD2{0p#4g5U>|x&Elo%R(%=lmNl1i&i6L z0Jj-$XVJw4k+LAQ=rV|yx9H*n+1pXI=)xfY^iw*R+gWs>=mD{?tzIKhuG+*a%PN$K zL;+gole$$7*x;;zk5M)4#h7q&H3m*<=crLacZeW6*S`JDug5lMdhdEe9 z>YWEsGTdj26w}sHuS~_rcz|+KFzuNt*%j_DZ-dl(JN{KtFL=;+Qg5f%Ty{rxO1;!I zmlUZt$ToWRr4ef`3)ZAay%)HxQ%N8_>sNBs{loNBsaGUz_M~3n2n-ZROo@}~hLKWF z@>y-;WYAJC9j+`Rq~3ph>E+tRO6v9R%`R174$M!HdeouEF1?JAdM*(9RckKS9+;GR z8}3YzdXhI)>XG!^b50x~^_a+8a}i}1Qg4_B^C1bK{pKR@q~6H~PvR>fOYek%h!%br zBN47A%zQd#$5EMS-^%G0#B--`!DaSRL=FF~)e`(V#$ZNMD?Va*o-=$}OEkxfZbBTi zPAgW->BDb*=B;t;vRed{z|#HTCt6h#uL)&?wN{F+d-E&y%Q5wB0>d;=|7EtM-`~iT*Sx_*epuS0>pu} zUPJ+Lk&00;!^uQIup3zSusR`#O)_NS*InKJ{Lp%G26{_lgSkk=#Jg;bGF(_ES=UVp zSwF3nRKGgrVI;o(L6y&hWM2Vbov<^4E zAf{A+aa}IDmy=*%>RYb%KzA<}LzWqNoGvRqIcB#UPo|xH+e6BqeoF`UK0MBeyZUab z@7L<@ud44k$?v)9`vv;@T70Lvu$(SdM)=2~F5ImAt?n5B&>(Y{J#)g}3}510eEzR0 zLdrBmNy@55(1PZTZo$bZs?kp4=h{|dillTFg;$em> z6UIZ)9(}M}sabG1E}Pe}`t8KxLT{b|w^`w|mpENOv)X7Imt@@aJP zG)kTSFcbc7BbI4o(8I9?86sz<2d!=#Il)4@m-Af9G#ovXg-|BVA!|tH&D-4NJ)aKM ze7XV@1}FVG97VkZd;r@|)JYJS_dn8yZ}pigA9>HW0Xn3woj>4#e;5e+WNQ}Y9HvpS z75})`t{FlHt9@Uu;%eXgWAJ#Idd$V+boEH1e&$f6tO4#u=PwLTOc=#t&?B}2R-yNl za+Y2?>mNqlQYz+Jh`u(Hw`-_Xc36}YtoSOzfx@{TIWLH1G{e3Pp+#H7+vM12Qy zn1Ag}R{>-~>2yh{Mi@jGmN<+9jAK^afG`kOxjuF~kc-wlp6ZLw@I%1ok@Cq6V4QgK zJy3Nw{R@-c%?BZ)w)Q3mpE@Eq#nXayy5B5=io`R9_5%-u>?4^bj+n%1uSKhrCW%F; z#`&mD<}5g8!-&FBlEa#7;ig?wm_!d2_kkX|5%>`XB4^_2=06h0ksB86Yees6dm=ZK z?PJug;-fv!1i4XSni;s5HT&IX*I?XLW_~E)n_al5wet*K)LM0AeddE;KO3$_ws!u2 zM!NqV_Q?q!ipbwqM1C3VEzY!OuHubOOi5>lE2g3!A~zJl@`mY#31RVrKPYDS^qGPTO`OpJH7Dio{AxTE` zdQ@(#jg%vRon`;XAU4^YPcn6E(xjVx*r!9dYemICAiu02fyk*?r{fdvGCxwNI>J+4 zsI8&9a4Z%NdqIrt?T(OFqr^v8qMp%uc20BnP$*#{gXh5z%R`}Lmuqsi%;tMpKn&7b z-aJ*Nm3p2kM?>j(YLrJqL7gITj5ri31L)9$7XFt!DcRG};U+34@F*`m#7s1UqK#z$ z(VW0y;>+JgmQJZQ(Nm(}aWD8tok|F*Z#gEVGbKql&XdA?Jk?uS#ChEHt5-6aHt@)I zGxZShp5Lnxdi0}feBsCCaPZ0#y!>`Jjs~S3DxTzQSbV}K_dXDyrf|})C$uD zAw597ci~IW{*zcBu+xo4vmJ)&1K|yHjDo+yK8U5>Vw^$X>|d23d#Sx*5oHh^ClF$J zC417cq#en<Sm!Kdhs#A zJus+`Vhi<|tk02I0i8Iz9^u5Ea|FnX$B-FgUz7<)_A1L5P)trgzMb6AUvxUr2gix* zKU_ZuZwp)_=VVv^nBZ$~i{16nC~!(jdRxqex5YX1wkQLGbrZ)3hn5v~FPH3Olf`#V ziMX2$x*$*^>+@<6msPv_?E&m)ZRV+?VfiYBy-s9ZiXlidXzZE-)>%jknu<2cMr^Of zkK9?Mn0f2n|K#g5za<@_SewTTMy==uw#eG8XKBWHUGHFvTrPf)U9>T$iBnL|RpfQL zR@UtfV(U43fNG6tT?1EX^NZ*(Ofs8dwN)tlMl@-yf zAYrQU&P)7;+lrJx>r(Ech|>y7H&VNi{McQIZz*j=sO|)er6x)A}TsA~l6&h2vy7zRDvs=krdQOR_tC zd%-93Q*ufcqy$S#Pv#8A4`xi86eCH?z!XTY^7^;K(TAT}v)R4tPOu@!P7LCuq!0o$l6 z>%1+gNwu0|{~l}6@Q&0qaIET%Xxypu>o8WXL)* z4QoZl-Caf`9Z{$yY2T+>0(%qb+-=ICW>R?-_>UUIk5r(`#=&&|&x-BnMc_ciw!_`| z=t1t@hbIf%wdT@YOCN8rOpZ6eAjVpS_$rbWiv1m0fO}~R_7|W178@fYMb|q{g z2JStFV?0E}YYh@k^a1(W0) z1~py$?jG>GSUlvFJ&GLR5~OmhV^Y*Cb>aF(Rynn%k1wZM0|)?|)NIMkPgLC4CfX#} z7W7#SSs_9zhb$33WCE^Sy@g{2lq?oMAoz!!0_|?u3a)MP;TQRMfXB?Q3K7DmEDxnD zfREFS^CtDo`y6_Rk4|LbSA>8LMBw8ojzFIO5ckmg5*ywWi6nb>wV{>7i{a5E6q~|> z_3ZkZ+$}>1>;a%4+qrC1BHTI5*2ipdl+V8~)bd`=c9JWB1Imy@;~a+43rms;Pau9Q zGPuv2vNK!U_eIii%Y=MkeeUHYoO}Pb&7X;vKSbj&=)bqGnoj-WGva7k;(Ojig&%GG z@dbQLyoVnx(SvqTK6|$)i@#>Ra`WG&-i#Pz{@Drp6iuE(eTrJ^LtMs2sAFD`_!a+4yFPLhar z`iHu31wR*>PUg2BjpMy6t!H;X5~tpL^j*If9T5zt9Swr7KK5+%?*Sc`fX+nD?cM@* zAE5&&alYCerhu8?U5uKs(#q{I)z;e;Q}zFTjk&>dCkWz`cr?ES+nhk_BT;$!g}_ra;ir}-J1 z7{JPlUNGTw}O{RO_pp{}uS82IgM=)K}v(sbr{b@$MaxZkZ7B?KVGFAOKbl0_c@$5fs_&pauhQL_ONh-Ndv+FVuJfCS3=7Ky9Hy@QjSIIPz|&s(Vw{%|wT0}~KY ztpGg1YJIBOtl?_aPI-)mxLUeRsl6Q5Wr%{8Z&kIQqH0e$e_$+q?r6Z&xJRxb=M*41|0DUB9PsZ$mvSZ!3O!FCjhG>X`-mBmX;I|jwCEh>jvK=V_{>LatV;hEg`qp4{NgsePq(`vcKx|E{7Ue&5%N41b$|lt) zB{ia*DwZ!YBpRQ1Lu9)-i7v_izVenO%+*OYwulx?12#>Vh_qwWYlj~`QBm({n+nBA zm`UvbNFzlJ0ncfFSMjcSXE-i(RqpR*?XK_7{122I*dzpZZJQT3; zd@O7BurEo%aURc*a`^pke;{37z|nhH7*d zhH5llc)L>|L1Q6;6un0Fh*7U86tZ>-B#7oS7=zFqVMWhA*X|+aZZ0z^twh|5?Cb+A zrQ=-JxCZ7Z?(Ldb`QZ-9Q<-vvT#P75@|&=VX+d7im8fQEl=;FS3(yhqMH$=O3|iY=X7s zP-5M4z%FY{3dKn}5=67e0X*P+5~n1e11$ zLT?jsK1yRER#P=5ZccNr$q|i7Xu#@_&bQijq1RO&oQ5sr)1+xiHCJ}9rD{yv9_Mb` zKSg7bB;h!>6sBlQSC^+~O!5tKTE?KIMkHAA#0fN7B*f;J66jf~?CQeMYT-*O+RR{L z{on{wwcCWn!fhEPxQF~*#Ks~iw5@F7g{nMuhm_!vkHA`ak|rlGBD&JM(3V zt4-QCwgF%9`TRWp!jy~c&B%w?#&utq+}w`(MZ!2a5;W!_ND(y23G|@wCTBo`sLNn1 z7(1%RJJu>D3V~<-3rnm?agC;G#!CIhmgOpVJ$5-2N}p7MX=bNU!HDg3Fu;1FO$@PzPZ ztBvCjVA4~KEN@tVc~gE;4Mv&JkfkVUVznp%cE`6<1z3@4lonuxDyAqUTEN%@s~97| zayf95!XQV*bOnAH+fJ5xnWY4nkFg2XDgx}?y?0rFjhgZcriWoB-jm1V$VlD=@HEF6 zp7KxobZ}^##fXU&9aXq%6HLM^ESPK}&PNF_Vl`EO$&~-$sUpCH2C#2}-EFn)La(bl z;M+nzO`4`mk=Nr-`3qU|j;H(&U6dlgyeYqoL0rwDK$Y=1A%tnYH*rDg7|54V=UI4i zCq8@~VbykMFq0aC{>N&rakx4g(+PuNg#wBXzPtH+Kmx^xFmG>;>ZuSi@vQvDa0xsf#ohb`I_fJ*_zyqtNb<`mm6&n2 z$`I7LvTS!tRdy-}=_#tMS!xXV7>vbp$BsYm5ENH>zGEPj0M!1i6upbvxZE`j@Zy36 zPoce+!8oAo`11}x8AmU9;HOF-$X>n+dWo!S|MN3+^f)DdQJi<@=XwO0WL6F`r;3_CPgb>Ec;f0LTQt6Bg-+X#PdfOPr;r%=8e!mD9CkKIA+U8)NU?JX&S!B#; zhZ*7bb$5TYgU62ef%dyO1I2h3*i8)SYDHvcu15j+=@kJjd-b$V1oFfx_3)AZNlQ;_w$3XEPdj4;BT zV;I}hGn5_f{0lDprdji00e7Z3_veLC4Yu{Pz+D+TONNZKbIY(TF6!fF>(97lwg9%v zF!m4_{&d67^LHCpA+6y*FBb=iRPe(Lr(A+)83GKpY6%=>f(xZou)ULJO{cWkeQGN0 zI@dQ3Uws;!wN)QF?3A>awwa4^{4CDGi5q@YZu*TG=inb#6-Q(80UIu|Lrrgh>Sb@+ zzw6<3>{Y(Qy={fa?q>h{RZjNIRFLQ9V7nH-;=t0Booz9!lm@K=P#!CG=e!JCq2mxb z_r#y}57`}jjpHkBLV%&#fB@yh8O(?l0ClKmle~0VBxqbE-x|w_))`KP1ko^4TG0lT zK>}=i<+uE(q|8?-^Bb8GT`?e~IDHaCdl4jRv7f+n77m2$OXH?}b*JHX8c^>qC{dLXw4fewQgt)ZhiZz z!?}kfO4myxd;=G-;~-}Kg-Nr3zW)^LYir>b$6-8Z4Y>c>XNx+zjQOtGXJj7a?cWD< z!*9%kxcm8jTZY_!6s|yHx=rgfbS8@mIaTq1F=L*;G4)$dewEPsF`T9AEJ|j>&Mp(_-Acpphnj&-Zo^-F1D_j zgpHJ0=yKAik*_E=U(xT>v;D@@ujd+5zsXZ|e5}kmy9kfuIo(BNIJ|VTS@R^BmvRZZ zIB?10jTmjb91Ei@2LU=Lm%$8GfnNq4Vlp!PLY9bexS-rJ=2HVp!|z^*MkMBg7lNZ) zf7-op5lX{8`Tohb``n{;yWRJ!Ijq(QFO7Vd>#b<$mfm%?7;rSq+@O$~0`2zmOYai# z;?ckd_m(Ycrm=Gcggc~vD-S|j!t8{mzmJoBXTk9hG7lwj%DHneAeW!reRyTROjJ{I zEyVHB@1BK|#_QWF3=oA*!uq zaTSJXy`YPBe}+R0 zFT#wme#CRDL5GvoZoS|J&>sK7R~?ngm`dElEqJTP_ki<)ye7_Df51dVj?!Or4B#-dMG9%?#rUyK0F>YG-6`9G^^5>H{JB`*4u zrMXoYEhN$s*Qogz6~VG5*XdbFvD-+Y)3HqTs#)4M_fjdd9XZA?wNPu)yuBF1`J0UGxp*P)&TyM1>j08 z>^6cn@rP$AkUPToVmejL-Yg1703}-GU0WFurUpnLF5DOUm45x~YDn$1jN-V?n;1Ym zqStJg#CV=o0iOG@ZL}(<*uJ*h@PqT?2ntk;b8{dB!2PZHgLvI*%$VPccpu_@$pa2m zb-E#{RyQA25}Q%M;Re*gzpxB`zH)EG=mntUv)$24P=A_x2BC zkW++XlUYB@RAlwKI|*?lAYp^naY!Z{q4De4|Cl$0;s8xqXjUkEBrVp&M!4Jl@yU>S1k=d(O4r%RU^(jrns zs{Ou7obCmbWp`c528z5ehmM?%_7QkWk`dxyINyGJRC%M4cWBysKUTSN7jGQl-B9!4 zA{lwfc~vjST}g$POzXK)JF7JMGdtG|WifK+xG2n#2=RORZ;uGoFb1k)S_)W@o8$kspUT4Q_ocl!lT^3QcQa zQOH_ohOE-EkhORb-wc3tE9p``h*o^x_iCf2KH9M$9>cz=5-~x$ja@fC548+ z)HM7H7a9J=ON|+eag@@+K4V5{FLt7qbei_UL7Zb!xlhO`$?c9l2SA{fCESAow_}1j zCU+CLF3+5lz-d6howQ+u;0_csyg#On><>D1EAESUfH`o)07V(LhBqTHt$&)%;+7>P z(Z5#}5KWWvmJ}PWxxt#AFwh%}Jn0YA;KTr|Vf`(z^%d+&WiFh0$1;j7x7b-a6gccD z+(RLS2ZuJ{628j$#$%nlj@6k|6m<5)_Vs|v(=E5YQE@!5#q*&81K9hEo0}|5LwWf1 z8}9$S2?lJJR1@gvm5}$iMFDb^?a(sCed`UOI$*aX3s~+%n1c{Pp)?=8(Z|EJ?50lS zs5}nxH;e~N@R2URv==k{sK}tH4nYUy^&v?M9{XpyKR8Z$uk2m+p5z0FncqN^7$s(r zwpoHkX5qE9I2fUF-^k$Ps-MJj@rqZoem(apqkkz^np8Ba0*3;epMf*SiZhD3qtD|# zW(}oCo9rs?c^UdWmB0%j|nIO;$ykFj_^&D@-1Hl=r-{bvYa)yDcv z6YQ*=A{x5DWp{;nlqilNuzI}1N4kjD=}(Dp3Zrt&3D_1K6WGjP>O9N|7Uc4-7Racq z9?pYcvY1ySVa<~qaZ0^jEMj7#+O_=u*!vdnxT>n{B)z5dawgC~K(GO;rgAX_l?D(p zZKgd_W=d2FMJN1Kzr1SnFE7=p5M{g z%N(6O(m@8!tHl@;?z9hh0Zj*9o`X$Wx{N3BA>Wl{r}!Q4Y1!Ey+O%zz(RLCL!nhL` zd*6S)pLAah#|0MYVBvYWmJvFT*S`Wm{>os;IQ)nfT#9YBr`v(eoP(0;4y#g)%~B)B zr1<8oQ?P)Q*!2UFEefG6dKBbM7`iA5gXWXk>N%w`e^NH>un37KS57!%#o9c5(a05g zeowL&nnnx1bVEi`UnaLwUvB*^d^{8wUDF7?of;Tb1#`Xqw=3`osx&uU;xFTZmiu6~ZM!Gf?;r?gGB}8l=P~T8H{H8;&Xm=~*RO z*%+{Qq0a5K_>06xN?NJ9TXRrRYJSh{PR)M#=Fkk}sZL@2hbH)tO2@0wlcRS^-(CAv;{JD3-L2GwBbVzC%cmUgy~7p~|w+K`ez z?j{e93Y*zs7;$HWVs{9!cvK005r2FBBg~@5_B(m`S|IWY_ZU2VG2TFlLT+r~CA9L* zieq1ox!cjQH7HdpiY;g16>n?C9{XWWuf4T~i*SwUTXD)gj;YpWK8+iF(RfSGefl4pr$4n+p7xuAgSQMri*W30W5y!R4JaHP&`2+ zlYE6Qg~k6KJ>6S8EI#AiuMb}J$dj36yOeK}QevIBfDBOiVw+f?n3QZy>EX|!Vr$V= zX%4pVV&Xj9cW54glH4*#6h%XF#)PLzK|cYFeQH=jQ4r%yzQE99%SuCL7qTffF`tWX zhIRq2mgbMez9$*{8bH*@ZGP0KCQ`9jxwPd@`$pf}q$D5lR{Y4me9ebKa3};`($&jv zB^0i=%I6Q>}Szvlu5vpSiC3+gS>61BTGl^FkZ5f_}0mnQ)8QOLD4o5 z0vV1p*kiEKwdy+dZ*JZlpPPE+Gvvp1eO>Qpz-nRcG6%9!QOlYMODj610OzC~Uw}b4 zRKO{KC@WAjvOrH_@Q$^y9%hW?3BBTf;Lb!Qj>DP`xn=9g0jA;?C z>+P|ZWeYT%%R@mv6-fscE)-}BeDS^m+5RjZ${Fm%`4FLA4IzHSY#^+xcSoL=y!kp> zOG`_$#@R}mRRb0ZJc$I(lAuKxN(%i^NVDZglnHNMB~FsCw2*aNVHze*6@ryEyM$uW z_zxnkLgr)o2QO%m)4$1k+58Z+V&8{KNvcA%0>97jbrp;X#=?czJLTPlvUdvG%D(9( z_>NM29P%7PatB2!Y>S-`5HNQBHqWu<2rb@$Q!WM?SdZi62?y58nbRGkWMI7{!q&jb zNJ#hxT^TBs_z{{seu`um^}&u-0w?xzNF%lp+zqIl*P~63*Zx*3LT4huC@CNDp~y9Nvf?Y#PG2mcc}jb}|~Ih=3O>g|A`sVSgUnf&)y| zH@l7bcrH}g*qij&s3*1qY3wOM4(>MC^EljgNmrbJjq4>v($TSd7INT82SD~qf?-Gh6Xx}GY*9;Y%91{q(kfyW5duCD0@=MC zc{uT9bOJ@Uo5SS{;P#W(OP^*12k*&0L`TNdT@hx_iV9F=(gE0H&Yci@P^E?MJz_Ri zL-58SUzV@ss9Re;79-;tujIP{RJQkTayV-=SU!`p_P;bYXW_7Wr5wb2(eMyfq*xH< zDG7vIDlpL8!i8XZUpx=8UpukWDIc?feld@!F8-Wlr@X5ALn-bhr!N$_<5g;Yxs3RX z)+;t+|7s;_s0cVcA4XgsN)DH5WpWenQHKhe%kttD#7{cXr{pbQc9peV`Uh zjn7x9S+XRh)J$4L`VCd7sl`rRRBE2bbr?#`1En&uZ$#ao)ND|f^|&}nO`af;p;eTF zm9mwZlMWE>a8&HSN~szD&6KR$rBX9h>4;yDQuD+$UxZTA-w=HC15(6edJSR- z{+9A|a6=F>hrb98o>iI&G#LAjn<NhpNIeX;iZz_r!3o8)@;yyo1$gmg1&LkC(%q+gGFkd8+6OXx zz~ZZamMPB$kfrUY1(;@dvh>fpC_A<>v+QBX(#HY(ze<)~VbFy%Gy~C6t@#DX(n#!! zkfkZDE?gKk!@jUdjV@41EiXSyea6L_mKZ|shc;i+ikv3neKMe8;ZX@<<=P-w>Uwa)p*pE)@ zi~dG99-tK(<0nAdzHe+ojyG7o4-xG0o6q~r?T(iT-IP<3clcifgppG`CtWc638F6i zVoF(6v{nu|VHKdL`f;R2^x(gPAz<;(Dx{`~!(vM?T>#yL`Sz#ifq|DYuzXZPq3hz< z_HkV^_5tQ``|y(?Ve?qOX2PxiaH1A_3I6hF+l&{rjf~5M&RkrSuexg zJ+lzE56K6|dV^swqp*OO!HB~J82-?Q`w~zH*_A637=PpXO~4q&8x32>el;-c6sE{>r|`MHpKAmI6IwR#njQbeV%Oro-#l)F-y8!ecg}0#?r9|`OdH^W2@<$_ zTJV2@@)}Tn$L6)!PmX?x4M*1vVonj1Bt9LCL3GK|_W`HCF}yg=o}w6|9Z_9kf|n|Z zAuo#zN$HadhcP;inSl3n`mlV!BSLWO(8B=;9FMwWJe#N=*-lE-F#?4*_DcpEuY-Oo zfMQB`ZY5ut_)4_0<_KRFoidr8+sX9YPKL{8qeb59WAOxJ0k#YsE|Oh zp+X|<%d(U#MbPALf!xQ483JQM^o)f=Vn5{NAU6mhJ2AxDmPel|QgRHNZ(u zlGAnfCBBAw(Q}B>EAgIHQ>8Oix3~nE-x>a~t2ZOBA3l~95+ZFB z2gcxRrH*LtRF`7JT~iCvC|v2@``2$JYJjCW@zuyrj9~b#5d=h|@vqs82ZmPv2^kPm z%|{i6A2oi3j=i_Zu?X`os9pE^RDhB@?4LCISY#GEcgL0^?BQJ zv;>Y3HHqlsjXmwHzp3E!79b$6d1L?TQ3-B6Qe+2KD}b8NMphN+hsh2k|1@IoPJ_fB3ZdQ zA0Z&O<2Bw^0|omp-$9Fbkxx-nwFn>WQE#9{Jc$B*moiAD&pvBIR(q^Oa_y?ZA}N3m z@zD?v!>8%dY)emx4tZ{YdDM?Ql@H{{e}fMwWq`RcOvXjSzW5>^(dr=k>*nEIvnS?t z%^p9_gcwz}0k{1B;A|Kx%L^g&E(9}R*yk(?>nielRI-BOil1i6l^npGc?K*h>Sv~4 zfl|s$3HR7$RHFA&^p4*$&pBjpoDGH~cpG7262soeMc- z!V0`8Y^#T?3(lZj2=+$(YX~c2 zj97>_vK}XUj9B;UVT=(xXKf`i=;lLej3D+=<2L+v#|s{)V+oa`MhotNGiL?uZHHov zs3-q^(arOZ<}bc^-kvEH?bkfgT*GOe1AshOnB21KA)L+g_AULI=T>PF@@LfewcJzO zM~!Cucbn(LX=t8TIh)vD!tFJduff{uz$pBIfwmQJDg#k#aZoSHLHV|tDdVx{s*oS3>^#>iZ(M=2*dKDxS&qVVqdua zeXMFgqECn3&Hv7cUf!JoZRV^W(BrJ1i{9VX0XAGGPFhZ|0~c!c-=`c;OYO$I?LVvZyE-J(Tlbc8G_h;1tqzC-aB|t z{3aOb<}^>JfI{!Iw9E;6n1Xsi4z8H;ubgBzAMz@LqW@`;hdxL$j+D9usM|()v!oN$ zy&dldlQ+}wRSg3kt{+hThX6O1RdDHz6fpeCUq%P&!%I_`b^!6uUb!prpBh;ll|T(J zaOSd0*q0w8O`a`k9BZLQNaD2?*fnx;!UH!9gA*ufE=PvcNT9^aEdXu_DWb;Ba<4?q zO@f9R30^-49P)E&O`l3?jQro6{Bic$45>l1T&ckp(jri#*e&VYi#B)SKe{Ddi*C34 z?!#c5A2N|Brj#y7uEa~b5--J9{)Kv$I6?huAT;yr8`ff7*cpRldF+|&EQ^_C+8|kG zdb2=%&9e_h7VvY83?nKa%JgTM&WO}2(TboBrdis|7mtK0it-2*QUa-638dnO9?!!(B=q@#sZbF-akJ!x6fy**2k=&&C6+0>R zy&rzg!xY^W`I{;M0G*IU2hD04a^-jf0g;*?Zt0g|CEh?Yu7qh+3B6h`OSe+cB*)#K z57Pn7LzODpOl1n}*}~d6del8rvy7uYfE0668Ap7y?SEt&M`E~Y4YrI)9d`>r7)wX4 z2DAUw(-*DJw^~$1qRmu7P%W?i@qF13s#P>lwTe`={@_;YjCNG(BMhyWc*=~aJLu~# zLgw#!o|cC4w%@Ac1HzLlnU43{h}Lm=_-acfKbt#Q)Y+ zFeWiu&GqRwB(NKkyp7Jt?<&Yk9D-#UMhiujdi@Uf+vqA7ktjx!c;3^0+*MHE#K9)M zosNUO<~|THH5gFa$`SOtK@AQZ6@j`M7TeXZSp4ga*^>S)fOJQ@oLOG%H=bO?EY9GN zGs`@078x9>i1;TO?LM)HPn?pL-j(RzpPPKAq7-eWiUj8HYDZ6fWe9?>aLWMlozv0) z$b;W?I>SzG1FOA@o{%ZusDjUvn1c8}5xKA0p8SfoR}9;(7`FJf_1SHIPg}a}b7uKR zPj;3|n8j)PoLNrtW|6knk>&r@wxf>#Et=7}&);uUVjC2e1#V4sFS!Fzs2>dyS zz#ko7f#gtv#J*6=G?1Cv5!5hDu=x=Kk)@R?zRRUyD@X9E@anu(`U00^3Tk>(EPcEoPjaTBpgOV9(l8#1$HZ6*bt8 zqlPo?@T)!lutYNF_xg>~y$e7*YyHz}ICGXnVnhv&7E!~op`@fY4^<`g`~HbbVrxbX z8ZA-7aiT~`4Ngh@zJKD9#GPc&-isQJH%Us`$0@1b_u-U8qY)z7{_DY?K~uQEE_Z-^ zDr&pHDjZ;+il8pA*AG(F{B$&PR_(~N!2t(kOdDKsh}vmj==__*)AZo8IrY5BzgPP# z3==lxpUhqI#(rzn`$^@fQT@_YUD-Qb)m8fFu(-&X1s96=_Rp9BKl|X%fFiBW72MOx^uX==I9r<<%T`xlfiC-+!Gq}#(w^; zbX$tscGz^t>}OX9JY^zMbh&)O5yRyT88<#r*P^!7*aJ+EKkx^qf<+xET(w{5$ z%jnNHP91K4&VcsLz8TPt{Up%XZ(V34bh7wAWy8kJnVR|Q*FLiz@X-@Fd%)?p zf1)0c$)(dE@Z1(=fQcIj!!Q$9s!OcNa9X>u*_o#hP2lC?r?K6V%%BVh2yG+uBk%gd z9@!2fQ^IaD2syv@E7-_IIv+FHkNxFuvSV9j+F^-jL(-y)=b?M5@Lxy^PAze z2dcP|RaB*XDWepL%;8u2s$ol`#%2ziEjm=aH(B{+? zDjPefKDcdu%I?zUxA04}oi3SZvv_2(=`k4kjRv#0Z7x8D*XArfyUq9S`8?ZPoJ84m z%+cn1{W{&|IrF$}p7Y~iL>s8h2`IbG@4RjJZO#E7ZB88kZBDhoZS%8y(&o4FOSJvh zxI~+q`8}H+gQ4Hp%#j`i$mC#S2lWBBfHA57PUE0}-{2B$ZsGS~6(AuRE>j7X!(%Ge zFPo{Jc=YpRDw%@Gu44|ST7PqzsdDCVnJVYUL0d(_j$EP%<%dT!wpljOuHX215>2M# zhCsB~O=+U#%;OR*=f}Z_Hc(F_^|O28zPApyCk_OiXl6ry7}92VmSRMf%R0U<2?I8$ zpG6HP3Rn!#Q%aR5qTlyyvJXln75Zlv@B0}5YiuTdkRB4V+}J_PAU$Z-*pH19@x+*A zNDl@rN1G*Pc{tcMN{qJK5d?_a5vqrzhOl@~M_?xVs&$`dM`%Tf{Ul@#>Ctd~x+CPw z<939c9|vvX9C~#v)DQyluxbryvBxdBST$>#H=EJZo_&zBY}p_ z+F9NW%@~XS(g|4B&V4wph4qDCE@?BhmD|`OxZ=Iv=3;eo5;fUSu6LpQNbvAN*-()a ziq`O5B*lEuDX1g2_TZ)HIC$`9Ptp;XY|i$@k3b4+Kn~RFw~y4WEGBH6go;aj=SN^- zE==dzk`5}rA@gwNOHV-}g0Pnj9SgT%N&tI(hzA)Ch?wm8pSgM2bb#UyDY>?(6lJ=b zmzCoaR-t2g6ER7zkjJw04TrAf3ck~j0+&+IYa?-nJsuX z5Hj`+b7f^AY2sp1j`R*DmADm5{sxG^gr9&3O93YG)l}yyG-PjX)~XrzV%ZS_qlF!I zfyVQgcJdO$ZIn_r%G6jnE=Yy!MRNFb>Gc0!PG1hhp5~^=Yg%LhmU@t<*ke ztwfhO75g!6M?jYe=&XItHiyiokWIErdoF&L+T~36A{KiEATh1Q#cFxPtq4;uy?6&U zt|3(rxxd%ecUc#CjK!9cWT{=w^1zL#j~p4m(9NGKy2|S^d5u7!TM0cMc7qv3MqhNXEREzx_z8}Wp~fzsyH~x0%WvTZ3}qS7PcbEfiu^q(O`e8HyLIZpEsk0|C#j zdJ94)6^x)`*&%kZ1_~MTPpB_xj8&18vnl!-r?c727`JhX$^xtSQevM5S0RF>ZqJNp zWl|JDRSE9O+()Fa%@AGzY%iYJ-SH%mpcG(UXo1$c5-+GgHKU%7N2xAFyMpZb>7MVg{%1{N?RvkhleImWlGgvisIL1s&G$Zgl%@thCucqDJ zngKp-*nb_po&tDTH(?Tn+o=#3$iN&9$>U6syW>SLGES@;eFG zAf26P*2e+Ujqk~srS(ov775t6o>`n2kDOWNw|KHh%!o@`6>?auKj7xe`xK$%$!cNaY!j zD)EFp9Vv-YoFQD(k264GKVpU-VEiVzAFB?@_-I%!&%cp;3hdXMEo)SF=dwW+$JvQu z?b6j*u^z36;iy6iu0T8mupxz7?Il-c1$*?e08{G@!e&-^74WirMK_Qszej`8B1 z60#ryK@B|E$d%P~sp<5GZ2Aw(QL$b$qW#uH1TG|~45UsTNQV=Yr4NOX#Oslmu?b|I zs6qaW8p58#+7^0Q^`5o+XNN z_bZz)3ytBl9HtXmGgLXcrio8*Y=hW77|Cb~POzSyUXP?=&`(tKdNpao*TL-UBo$efAX}KE;U)iXliN zilJz;NTKWkvdmR#avpP)qEMNuf5TW=%8y<#&`Y66MaVJZ@F-@S8bqT47$ zR?%O?j9axG_pTY2hflEV`tVAB1a<;{k^A#GEra*pF8nI@p4kyH|7pL!1WBO8;X`8+ zLBKW$ zW43*!YsSNa75w~dnFYH9?<2vd#_|9Z1Skaod@Rk|O|*um0a+|E*h5fRT4+ke+BxPc zb4&+zl1;HuDNq-R?*EJjfVc#p<1%7AOzgv11YW7QN4Jo_T)v`%P(KFUkWH&DZ3UOS6L6#0*)xP^V2a1x7TM_@5Y^sH%tpN+p}0Bxglo z%VG-xe_`}{zPO(#JdC>X7wOkaxaCEA3$Ug6LduEx(x=dG!v!FFd6_CZgmz0Bg7QKN z=yhn5x|VzM5z8J6x4;t79c${KAK~n$$GnM!k#R z%qvRa=Eo3^B4;e28O$eA$DWDRUXEOW`9#4Y=F{!GfxS$~v39Yll$1!2M`Mc6_{0(39-EVsm_5~5oWPtjp`W3T>$qg%9y3DaWl zf0<*#u(DP=@v=IIh1JYP&?3J?nHXBq!V1F;B_;4<7W@6nVZi*9iDVre(;+z}DlRHv zan*HV6DYEXO;CMV+VaSmWyMX|S@vTV$MVRT<-;32S;Sb`xpE3w)@d(}U1uxa_QtJt!r#`mex~l?6^aEkthc9-GTqIaZA~vU1ExQQ0p=Io?1N z?Rw=Hc_-RTu0ex%8K(AK7#`m7t`i`|OmHj?JlgmCKFi|Jk;2*Xvxbcy|Uh% zDxwVHsuM+IjKMkecyftXk0)OD{qD2Sf_tiJ4cACoK+#_#3V^PTqhvE+Ve6gB;|_>K$*1Hcp~L__1$Bo26@J z(*p-g(_uPgpS3*e=Q2HiQ?j?qUpPUJjXIxF4B9i4>Jsd7l9%{~^FcfP{=7sH9`;V` z<-EH4#=BE#F>!!l*VU^rxw2v22`A$GzZ#x2TH~HHisRQBXB29yd#Z5qkiUL=fmUxK z<530Lb)Dl2qQJ`9U5_nW19y^b{gaNkflqI!yU;zkfm2sFX{{GS`x=}XW_wnbz>78d z<2&ia`hbJr8<#*L*DveMs|{mwn4{i%RgOmt*vaA>@@~mXOt0TDqV7mg<{01a;G~+u zI$#+$d_7av=$5TZ*)*($^{0{uXK(`4OM5S)V1^W;3h%J9)`gwlsx~}*} zKCH$uVjWC`uP@+&j@p9@(j?C8GTy>12pR6dL1;L>=1n}I#p3pzdG_)D;y51YscNj- zgcQ%H*%giZ!(tDjWYz|1`+^q!$j1em!BIRun(c$N1qAQcnz|CFyI9m!r!gRwiJ49% z6sA&-x*}Bvw_s;kC{^7G@XU_OyK2&?XJ^sYzmzlW4w>TEKy@6Uz2xj|yna&@jB zq$^_-# zL#+6#nfQHWDe)7&MIj2hAJEgRu1+mVw4lTY3P%rENgPz-)b;?_AK?=8Ok_;L*qf}j z4h~>b%fRGRQa_F(!>c0yScuT7=+6q{I&Jtt+%vg*lxp+gotqcw5I(`luP~GB>vxbq z*&|2)7lWYYA$Kq*G>k)-ZYZ|*kWQU34voAvJq}@4-@L?koIz)Yh%7ZgVT8jRS;m<3 zoaZxq0z(^<6dn_56dp>rbj{eUz%v?+72!YdXoN$>P?|d;k&pwANVOlNhk=vpz+4=W zw1#_$t~KG#H`0Q?VCT(w@f-O*R{V#tImV=upWTuKrXxI<9)Gkt&nMkIDtc;z~GK=P zDq70xGIXgsv)9LyJZe+Ow zb+d^bDD4$wPeWg2G17zLoys*R-NI^OA9i*p%|jC0=H8vOlVH+)y&~66ha?F7gbWDr zZgoY%(Q!if>O7-vNh1Ql>JSV)pb?C*duA|(<2dw&VZ0j_$Dt*)%|ML2ZOTD|Sy32l zYNE&T1ifCofWNkdc)>Hui#idhTha)6Dk^~+F^+kU(FD@Zy`dMkQz|JJPiEYO;+pKZ ziz9(I3L`FQ-ytzb`wr>Ra{?~Z!SFPjMj&6xcgPwb?gIZ279#gQlzS2$aToXxdsMjS z>{rshLkd}N6k8k{(9(BE9~4@A5Z@v36u${??2E6@nwR|7xsLCUm9^T57s4O-zgf7@ z^&L`pMw=-+;i{tS1b)n7ue~6{cgS?Gn^nSgm9V%l0zE{vgA=td>AbY>FlUy)<=I(Y zIXCS)%$em8oT`^9MSO?%APZYo$fgE6)=tQdtHImLJA zv{MARq2jZ-9N%FL-iYteNwKhBifX(WlJAhb6Ky8fph3J0GyNY~zQaub>G2)%(Y~N5 z%Xi3V1;=-I3SdG9Xtf_ZC(C!(=R#7xLq6JTYn1QMMy?DS0DXiE0!OQeT}8!R>@Sh4 zT~&la_|2`!c-}76c$K&mi6yiE)^zvl7jfmIO7|W=Vn<&mOiLO#~Iriv?1MP!QCJ zIJz8}EJIt!>DeR?dpw)WWN*Iav+!*8k5C|zh)^JU*<7$q$nEiLw%SjfMbG9Sc?SJB zsHvG_WuZhU2rW{J=cI2ffN;)XJ`TdPh%*2j#u><^gB;|JB$HoMaR&T?I0IY|XTa~- z^f=+fAHeBY4L>7oI!x3CI8l32`V1i$QfD?$*y8vfCD7@bIuJ*==oORef|{>t3fxhl zDV0#FFuj6P4a_gY2RcifqhDuEy8XIml|T*4ON_*ay}fSF(ZHx0vSfpf`ClDrO9>If zU1-X5s%bd6BJuZmC+I6)Z{^UP^4kSUY1uev1LfMU(>ZE9Es2T`{OC>$%3t9F+>tA= zQC40a9FnJQ6ypzOY5|0v4I^h-XDAlv!ybP@oYjGW0>Zn}2g|G#8*-PI;<;{I{o63aqoEM?J5`r zTkvi;$57s6stDJfDRyjOUM-!M|9si8@O;VQqZ737T%nNIUL55L>z{zJ zA$>st2Plc5*$U?=fFI`p{v7~MJOpH~`QQN{TQvoUPxyG-1N6|H_NqeS!NY;KJ$4B+ z92|ZmrYATd6#!PhtPiM#tN`jWVWyy$EWUlKGCs>_zvjy0RA&!Qb_Pj9NiqokD@1 zkYW=qz?)hTwEA9L;!!ld7li2V0)TAEas9m4JtYv3G^o!WET$do$$Tz<%(J!5< zg=isw;U(o@>k`D07-(IB$}Q$?{H6@cb|LFgBL;zmH^h9t?B|f1`r(h4k;ynWCGwoRq;A+4dl08e_i8hmK&>&uh zIcw7p?AhBcAK0G#DPZcfXLp=31ba4qIubc1|B8*&M!Z&S{GFdqqR{Y&Sch7>uxxX+ zurgLJ{0A)CZ5-wX(d)sTy$}HQEF`97OK?$xTp2ZlDYJF>!GJ|lvG@JJ(6aseKR<&q za#*%kFQjFwBn1n0B?W8YTD-%qOAgESR}EP*A^+szno$k|*dv!tlF6B21bQ3fT`YOS z|3-uC991hWhiVhEA7tCa8|yzGo0v#O4e1}*{IgB4&ajCeJc%~(AbAG;I2c1h?r_N7 zwZnj@dWgeJ_ViP8wr+NX1}nd@nS2MUS;Ty!XqN7H75|G^&1@Eo1Ja<)BA&7f$g*ST z5A)bDBpdCRAhgN=b2>3}xQ!?MM6BDGK5zvQr9vk)@NI z`~3_%g?J5b-pzkvhMkgY=A?M#8QB)ZE#FVuDLJz|`IGD{XETetS{P{do86o3%_64F zcaQ~=RT%~8*|QS~Q@&R{1Utn) zk7^HgWI!&jg|eZabwVoc!aB*t3d-R4pJ#_L@79XMpZC1m(a(JbW#q6<-u}TCGw-(j zqAW?UXl_pZbr53^D}&LbpYgogLg1BSt|?o~9ZZeJB*&+ncRL~c-!Sj?ukQ`JNd}pB z``sf$oOkm&AM@+R>h9k?gL z^b4$lM6n9jKYmI%AaH<(kI(ETLmm#U_G({4Lfg*)mSg7w?S z)y>k^Ty(+NwTlB6T%aFT5L_#F=U;GP=&(5>f@9a!F4os9zTkrMF9@CfBl#|Oi+}2V zuR9!Zt0jpbU=`IJ_^x(-0kHR-sh!tzrdB)ZnOASl!*#+7a(xl+o?rLfWD*-BPm(xT z^Lv=T^Oq!c!_%IahV&Qil}Qc&n~3^;ne{zXvcyJp{Wwi*1O%$kSuXl$^?ZOIp7WYm z=aC68%SN0|pKf}ts|~r-To-Ia&b^{=t$|aCKtMA-zzt3v#!ThpkhRDcSw4P(X6yzK zp;%p|e+}j=VBNiq$a}l^p)JX&Dt_-}vf`oqF4MQ9op;=eH{FSelGwaW-fh)*^kL;#yhkfunnH5Dec|g;({$qm ztR;oPitgG4IqF+w)-8?SO)RWs3w3it(0npv9vw2z!z}Kp;GiXlzPhwDzF1KUlro}% zB^CpivdL5Yd}OY&>Nff7KOU*Y?pIWQ_ovjf!ZprrOV8c0B^kd$)%AuAm`;v`(Wv_a zlKl`qVG%$jR*_%{_5v&jsGBdiSVjv=dZw54<4Mhb>{L_6Le*q(;gdJ#3CTn7JcLXe zJM(H0ABqo|LR*llQa6R#y7@ya#<{?ml-}!cnGeRS^4s>uv!Tp6rx<7r%Y_aTW@Q$1 z>k|mEJ_DbuywIXfhZBCfc1tp7jSgBT6o%3Mp$c0wt^~elhfQR+jhDROnc53hjMf@P zDjIGA$MtHyd3{7soBI7yZR#9s8&H6pt<3q=$W}6{FzGWW6^+)0ES+g4T?+NnX@znu zv@ipu78w@{9E=D_W(LaQjkrNhPlMIy<~*!hmn0x~O`1P+D~#5}!g)(=+hvB!aH~oP zmxFWajzN-ABmtM;n;GV`KO|t-S9RbbF!zrOm!6C_J_L@J;0g>7Rcj#?1IiIP{taNJ z);loQ+!6po3M)LtoI4)r0C6r@?Pvx=Kl@&%8H>Z z0IFeG_Jt@Yz6jruPtTM}OOa@k{UtC%Jf8ptQJ+BR7V<#4+br$K=r+$h=0r4j9B!wSp5OlGj4DjbT?H=t;V+`csz>P+MVb-l z#(J^}e_l6&Mu-KkvH=)I_Gn^HZg3O6Jc4K3a z<_QpYOMHzHu6K&gIxA#eid_hWDc8a`iaJQ%)O0XnfUsFtY&$-M!O(pN14exZf#%gt z*R2WPe#oIep(l&4>b@DO6+ZG8(GOF?sDAtSi!NO|(TBX+?dvYQP+ya(QboX5>+3R( zAwaOQ&;HIxR4Ba`w8CJ~bzjP!>^rsu$9EUTZza!T5wuioW+_rJIYL|u@dkUXA!ces zd>IqPL~7a3kI?eszmRY#hWYqU^q-)@zEUhb2yQnavx}=^AV_*lS8+$pkimIa zTJ}=~KP$qgR;39xS$gGJP)t3&wiha3s@EPG>~NVbWPT&~XIPT_MMCBs495#qyjk~E zaME<#V{bkTcm`jyo8bb!D#Imy=^mUpeophvK%Czkj4j`<)_gx)s1-FUev=)4FdEx{ z41H)bE+9Ms*?(J)m6MupRv{yDz`RDAq>*KnP!loG$r@CD> zSTK8lr+;A+!H|hH$1x_hKgmU*8mP{3 zOQmlW<*c1Zi5$Sf4$2U-db_SYxbqmjey2~n;yw@!8vp9cE=?>X~=cw_5{NF79pO^p7;XjO{-DKd75erBlA1-zyVk_cT!j}f}6DV}yHX??F zo4lN}qb8L9R$~*LVo>EGKnIs7u`-R7a*^$Psb%9S+SH2w{)gY$2k9!_4rw#q){V!s zhG+3Mc=k5ZxpCA_DZn1X4y<M6x1X6X_2>;l!aO_gt{#5U+%w-LS0_d1Z_{t4;^Mvf0(}{%xeW^ zyU@q#AYnpQyAZ~TZ4xpyZI+jJ*tk?Rt|A}Uzbx6BJT^9R8@7iXspoTNN$I%e#WlKl zF_hQ)BGQsFVtWQ2F6zB)B|cR}?;sQj-0F~w!$h5+a<9sK|uOF&@&iga{>G~kNMIN#||BqrM-iL!y%KJ@Ns zorCvLjK|f1X`S}l-`$eLBr&Ot^+OQ=R?D*&&xd8UP`AQo>DIg&yKt|q$vLr+Z{T}g zDBos#gz|fx(nIEtYVZduW5D*%%?H^YmC^gy9=k?PI+#5jQaxUeYRW21EOSTCWAsYM zoCe=eA-19b_v10v&W(7375~v6bjJa$;YiHH24ewmia{w7WVCX{CavKsd|&@)p%R6$ zj&cz=Z&D&AMYL2k-a*+?6}{sIQpId4!^KTqBE?H;?Bk0Eh|uj2q1z!sJAs5AoABK8 z;?7d5g(*Ur2eQ-PXwxM_&j|9sKkyheUY7qa$^XC0{}=I}=B8>|M|^_2mVhbjstT~d zzgey&yHU9tIax*-U!Jq6M$dl-yJPk6$!y;wm)K^xH1*2GuyH}{`uGGRdw)GP7gUN# zT5C^ztxH3_;&IKOuO%?;RcxkCDUJq^9vEw40ru6$aLQL+K|MvvDr?mgqF=EC>zEItTM#`qi;bg-9j!lze$QVdXg=e`p+{ewDJzMc1xOpv zR6TX_DTPHE(|8xErdm|Sj^VcGZy!R7UT`>Clw0JYJn~|C_?WIDSE;cf5^}ddmn&yxHmuL5SPgw z$O4K=jBXT?pqTU+M~tS0W64kW0n;dyON5 zO_!^ib{QN+F|e|qqBI$&HncpS^mHZF%B&YjFs%>6_jv7!XOJ!B$k6K7vzw=-MTP9x zDf`P&AFzM&?nIz0eNs33#0&impyXdeJqN=Lw~T*PL$#>#@)yx7y0iv0qSRsEen}_W zQtY%JVnVCEkmNeDeLJv{CHK6sXH(5P`zf&;N66;v{x$M|6;k$P%$V!~<1;U0Wt26t z#8QeUaCAAlC80d@&cwXd zT}Z2XEQIy@ipFFih(aOtUf+L_93!ukferT*n-Tm|&PxU4v%u1fD^NNQfB0at5J}f6 zH-RC2NVSG|g|y0EyaTVs3Z;Y$-Q(HACEQF3T8kFp4>a!4j1{;;y*bwDmcJD2SPtT( zc1{qs#mXEqHMuQ*57GyL22P`37PE=`3hrHrONy7Jw*!+K_)^f5@=RewP-l&lCKj9Q zJGGXxme@rJ5|oHgNy*r0LN=0m5Wt8kD}gRiJ43p}caKDuSX%yxx&)*HX~p*PU?lF; zGk@m@2of0npZnpRdge9VNNNrDV~q-2I#rS)X!a$Ge}k{_TjX_9Daqj|LspEm1dT*P za!Dn-cZXo7%QvU@$0G716pL2^lp;y2qgCE>4G~B#Eo-XL6g!CmHAlX>;=@v0rlbfm zNVUwE6lKMPDVXfxWSATraerf65;`4 z%V@feFdyU`rs8hb%dbep$|44)6i*Bo;svt{e2D`(Z~=Ug6?uogFTpC=-kC1J1t`(l zMdAoW!aX-bD5g32FxhfKi9%M)BML7gLwQ9ZJy0SFd1IgU=0tRBAqmz6VUmg%nKMgZ z`jB>X=E9SeI1ry$5yu55cv~`*qH0o^BA%UrWvIs%!mCb)U*=>*OzrI2_Xb4SxfyQW z92@%&jBXq94{uJx9de}`P5y1hIJ>m%X0$sAE=-o&Bj!47hqOt42BkUHqz9e%U;k97 zpK*Hz>K%V1>Qs>g_1u=|uu#80KiVuRSF-?Xrdc~}8=~vPvTgPb$>ldbkAsJ^6K5tJ zUZ9Thx}|5pmfYslmJ%ab{PaB@fA`QD!jYxY>}4)AB|TSs5@+g^wn&iz_3~((!uOd>R-WskL`Mxr~@2y>vt3^Ke+CcZK5yHOh;GdP(;!2!DF6@ zi8QS^IZ?AsG%I9ym5`kbdpwhqF&ShM*d{E73>%rDzJn#G8HrNdVc2=Hg~Uh}AG|7O z3qd)n{U!<$J?35Sw1@|@taA&t2@&%VYm=kA1x|S#cjqoI3s!%+_v6ccF9w+)MNLFj zAAitrCr2Y499Ph$FO!ftB)8L`9Cy+U+DdKpYdwQCC`W~KgGz=OPY>3h6nE(cWd_xt zZMZ{&e)MbApr`yHH-Vi7Z6Rg{z}=cd8fQ~D`WZGz`J#@093_5A4$wBE5S3 zbhT;3s#}z>#lR9M89^9Hq#?eIKkMy&D@v+yI{S zi`n6q`5^m%m5U)LAq4rOAyGGqJs&X=>+B;-Zp?ckYeI59g;zSzZ4;PTO-RPbpTUk4 zq*$ObWS)h|i{=t`kJyZIXmnJZa0{BKIiqfa^B(*KQ!bxSY;jA-d`s_^-QD>OdUq#a z&?!Pt@N@B!j#|(f=(6xcF6b6Y5VZ->3tHqus$a3167lkc%-2K(m%s#0#drb}ygEpM zL?p0WyYAJAj)w?JwqVd5HeU;w{{|q~ckIwm+ohUTlg#cQtU+G3m*L_>Ca4Vt(+V0K z>G(_G9>JvQO1ohhe3>|LRaC9MP37uzb?t5?)b*Ni)m2hFzzuh4vLyg22A z%eRTE1+O&U2+fE1hN(sbSVGlbNo1{KOWBsVW!PCmH(S~|R>!+dKuPn>#H#6Irz3SI zAEzohm;pp`7|eu@UWr+gQYzboS|(5tM2|QM#5}59l1)DkEh7c-UEmZ2r(@UIvc$J? zV}0$4H(jhf`|i>TA1U|=DdHz#mk898aP4XTg!+CNy2>_Tc?5y(15H0S^u3QrLARQO zt=0l6f6CH71pI6^-2##+2Lha0s9GYrO?nJKb2|{-I@Ht9*yCm`6%c`83QBOy)ZzR! zhXR34mxt7r!mwgGkr>{sHiX!<=w`SzeluP$73t{gSnaDW)qL~IwW5>fYehfM5uXCO z%`EFzFQLKhw;@8wY9i9;y`>!Fis7dvMI$v~3P!(2YgPI4oFqe5%$?mn_z|A*NjQOcjP~U-e~i$dJf6 zdGR*DQ@rR1fM9Ac2~|Apsi#)8ecEFXW5EwLs{ts4<6rTz=1}Mmcg}5Lmq=iv~TNnT+rj@0d zk8x+ze>QV2PmFYPZx0Db&AB<#l#zC&ac z8Qb5#2Gfvv_E+{5jwnw90swAZ!89m={Ub3G&t%)2CBog|FHAruQ4(5VBS5l+bP4do zp`s|3KU5BT5Cf`uz{v88y?}79v~0&_A!2yCy==q8yx=qc4jbFV=v;iQ(xc?O;AHW` zw_>=g!11ioGkB0DVNf;atHZQ~;B4ufE2Thy}2deTHk-;l7ci61ympiS;p^L@m zN{QHHTQM&JfN*LLBD~#wPBHpO<3T(2G;%?FPv#rUn#@*V`spw0woHVVN2xT!u`MDU zk_QK3AW)vHCOowNFC8ADc9$%^xLH)LmH19gmKXT{)KeQT{YrFpGag#v!77dk2`R2a zl?pvaLUd~m&s5^E30;Tk7wyt7`XLlUM>)O|I^HhQ4T_5)u;GAK6p#Wx*j)3C3mGZ- z#?=}9Zq_YBvr-2yP)b4(hj}NMr2N`LGg|C?w{+E=dv5*=N{@A-p7w)>4RFwKKT|FpIr;>{)l=IF^6N%m$(0@}zW+`3{9jBdRYNj2XxzRhWw4gkKdjk> zP|oWPW!&FH?8jKhZYwJi9%S#u55n^V%u${IGwdpkK<4EfLlR%(hKvWf8!}=%n1%6R zZXtJd^z=yX4n3lj6V2<+U$3bY5lKXS!87ydXeZ|wTI3Va%oIKt0w z!K%Xw{A+{foq2v07LMsLe_>$ky1FlQ<&8}2z2@xm&RC4RtG_?8{+*>`*Vp0%JAYwU z-YA{EPX18I{0)GXmv~*b=9EIq#3)l)0wO;Cb)JS^f;4)vHytBgin9%M6Pxot&4p*R z)q4HMW=Q3jpb}V!$P(Z+Ul99 zg=~dzd2%6}Pp+PYY;_ZmVXs7`Zfsln)7trsqwb{0ktoiMPc4Vq(8V*w5x1ms-rU@R z=_>n@cW%JatwIF8E=LgTMQGiNO1-2QgH|hbLi9Hv;hu?C{BjmaU|KS#AA;arY5#RuV&u2pRU zpNvZE({DG>#PLWok!c=EH5hjuB}+fhO?7;7-Cnu(9NlN&9Yj$}*<%#v264C3Z0`@3 z-yv9h!rFU1)##eBPXW=_8umv|(N@p#nLYJ8#%lFD*|f26UepiMEr36szBEQRkHZO3 zqh_=`fKD~r*F77IRD^U3Haq9Q{Bkm8l`PEQSe(oW_eln%>>9(JL9e-v<2+7dB1A;F z*X@pFIOl^FyTKKumWJUq>ai59wIJSfJ~uMmXM{pfSzQIJ~T>1>#tZ&C0X%gGMEp1DNsr%Q%9+XXWO}VBE#SrFr8gFI73_J`p0fJ&m)G3|I{VnR5M=Rhowo%G zk7nf4=H&X;GOdWl=ZySlfxT_c2eLXr-;nMOX?BfVT$We+?XDSR5Wh1@&?cp_b*|GW z?`~8)ykCDFcJ{`_?zuzYWNSp{qNaLMIqOK6CWNXP3p z9$Sc5hPtYT$7-<(4$D_%$tWC~vRw7wbzCy~H7rmq#9~1#6rF{Iq94^Ap~4-0b^&@; zpZ(;9WKxciM?4n}kHY#uwYTtCte%U`EsQ^k9!b#=r-V|zS!}y&&VzA+EqKj<&kB5m zWq|mC&KQ_t1q#i;L3rXfUeN&q-$Gm&F*K;u9mR>>ZO8feDVfK_E;&(bn{C<@$-j|btpMz>D(g{CI- z6|nG=%aI=&*b@JJV zx%sdKGa`i2`B32B7;A(p2o?w>>a4&)W&lviu{#W^{Vi1cctH=Ts!S}&`kHwvz6R*ePTADZkJ@{_3P??|OafnxlB>@K20~9N5q+TM=Sw|IL z#8aaXhqDr^H_^V=p&*o83GHD#GK3fo#U+l|bq}@3u$Kna>QhZ~uaRz=3D=~1wm+pP z4F)H&>?{|<-m7yR+mzJ}=solJv=`#h(-W+HxJDa;cxnCi-QdbZjl8OnF`v2N*9QR> zqG9?t1cavc>R6u+hByq&@XbS|QE|W*V~p+9XR}XX6>7?_>MUiYceOxx{@*jEa7CQ}P%E3ze4u#hlsUDhc6>9+iRsDu9lL8+yu%RR*r>Mc^Uy=UIr90M)psxJP{(9lsrE;5}#{ z6m@c#BOk^?wKb9YgJzOki(JgYV`1CQ^Kkn{_JY)YXz(V)^(P*H11UWz|A-KW~8kV`$?;PLs zf<5tZr%n3+KLvHY{oPerZ7NXzf<#$Rr%H`8si7mXOxiXkZTdUlk^;TO{?XnF;S_WG z8$n?%K^TFAz;=ZoEl0w^(WSE~i;M~ZC~%_+Y&BA65&4a8WYHowk=LPs+(gD|9R4Cf z6Va!PRb<@mzs7NK`|NU5i+mNdpzX;bwXk(QMlq;YW?+8MI<6#WomgtW|7skaH!xq1 zjqFtGLF}-3UJd@1f^;PWU|tnLAwlzUwoBRvk3!)kkRp`rnsE|A)v~Gck%q9{n-2&v!_*a?U-0F5{ID@4_7xg%e|9j3fq&sxwA5`O~ zTZnytEmV($*Evi7JCm;ySQU<__WUW*^&nQCz=*y%2nMC3N_I8Jt%bC zm5cw5MIsa*VZGg+FI9K=B;JQFDJWa)2FSsnH8Gsgg}Ffig3L-}uIgDJo-2^LQmob~we{;&02h z*~{aM_RG=s#a#~JxeZ4OxAk__@3RQc?J@+vEi67u?B;0uDzjZ0|K8l?Hb3f=`@fmx zKGE8*-1AhqocA44xvQjHPS&Kvky==;*b(jNj5w-?h~SRDfTqEI9eMs0AA^?pT73e= zfnHq&um{+r9Qo{x4$?cvNLA>H-e*nWqY zbk8Wo1w8r_oTxFQgxEohaa)Fhg6F_d$2rnSSU8CNDF_RS{z%__fE8Zqa4f?ur;UQU zcQPQLsKv{EpM}TFG#=5i6dn#a&>g&pm@`ToB$nl;kq9p0S-SJ3YAHN^p=ID<-#rpY z+=N;{BP!Gnoayt&!XH(v)2@o6x&iY|;M@s+O^QZgVte9+e|KqAo5pPjG{~8$_H*&-J`|iX3Y>`ML62OCY>-Ep;|<|EJxv102T0fCNtc)pW!GW$ zIfaRXiB@z@K6+qc3f2j-XUtpbF0xJ(G3}yts&CMxfUROC+*jXEEFYRLttYMHo#>TN zT$YaMILZU4U~TwY82`Q;87IQlYT}nFoWaD}V2PDnL|~Zn7Q)Iq1BaEKMK`DwUWnaV ztneA;+)1bf-$9v!@^Aw8Zn2Rs)3`xRJg05P{V)L_PkMspY1{o>vq$H(jq^umkMx@w zMY2Cicgb^?p>Af}(|J$KL)8$-Ppr%e^oeUPdI@GZCcoTF?!|9ogkYffR1r5lI12PP~8%8d6e?eex7lHYpTeA3q;Uka& z_0*CKDf0DC0jfR|)ZZ@~Hd(wx{^7C5%p4$>FZ)B;WjG<4Sf)T`riWIVXT8M+@Juf*CTz?rU8*sUkE;FH&Gbv2!9 zkQ8!@(j02$4YH{aFO7)_tpvZ?+xY_2q%_Adj@kJ50QCQDSAMNV*~ME>zy-&i{< zh8j5^mbIWV47bF=GNh~7l{gAK#MTU=F@j^eu!Er@ptL5qSqO+FIe=r2-|=2D4BhO{ zNY7uSe>2-PPBW7ylEwaIa5JNc(Z1>V`e4NqTEo`?BV;ZHdoA--Me9n;z}}qMUl%Wr zh9@I^>6vC=KiynVs+-HobhED9tpbL&x)!N}1e;I@rFfNE zNLgrCJa>b$kg^OP($gGHw~tT6`ZaB}aW#-z*Xz?Bh{bRRK3w-osb!eB*T?oa-Pd7w zheU}VL-MhFXpjq;&XR?sV4NC0nc~7j+G;$>f-)z2*z9t;jMLAYPKH8AK?KDnCP0by zU}}o`Q59`xF{W|4fLDZz{g@9zJ7clDZ#qjZ9SVu|rF>Fy&wl8`_mb#y4o-DngL+7L z>GB!MM`HWb6D2T@{Hj-Mmi?6kh`3=zYsZknLYx@#cr*9{q+pkH1{=ql39rLw0H05& zOHoi_3C20XRYB^HETziZ(Sq!l#6#j8_A%JsCtY#QmF_Ql^GS!ox!Hb92|tW}09w2F zeFyiQ0Ko;Hz@i1Wz@iNo4tYNO8=Yf#*^r5FYIKB}NR$aBu0u8t=7V>u){GkESm=;L zM=NtRzJ9Xu_H#32Cw{I;nX|{ zrr76{#{4ikG2ajYc5>3*gxjy-l*351C5)rRWlcNmu+O>Q(W+L%JFCZ*^*M8?H~oq# z)tIz}3|o;wE|_(=jwunF4r>f?hhg?LSY@*cVMNaI#aH2L{f_0D@j3=YJvQoftra^y z;J&JHb_wP+QNRmWp={qe>2(x<&<*HZ{6!E;UI>G~1^2r313+wIM-ij^Vgc2xK4FGm z(41YOm5tDffK=LhzeyChCMNW%kL~knm=s&H0PKfZYzMvYm=!M>*c6r-+Xlp*8GBg3*h%#V%R>7DW=%$d)rZQT@h% zo!BgT`c8N<6BiCpmE-PpNY+gccba6EUYA9(D(gZ;vpWW$SrvAOj9&{SM->WZbq@PI zJ`)?7q>9;TU!O+~8JE`T8{x;oBwa%iD=|Q^9iEmcqPrjp_B(`yxTx;5d%sVCJTAo8 zkd(tc#3&JKrt(pr4wi9!)MdyVO8Kb!pr_J3<#8!s(;^z`r`K|B-)O-{yQ~kx!W!K1 z7vZRq@>c&5c*0?|=qyKm5?FjLr?(XA^y`c-W3Er;0FPnLbZ4A!EeWo1x;kA8@vvWy zW{sCf>QUx+aVDaJ;TU^35iui|cV>4%K|bOo^5d6LmrWDq&uh3CV1xwCJmPjiD7Y=i zWF6}>WdlH+dlW68=UnzdHn~bcQeawtO?poU%&+z7v3b2F4$(E|AnpUZ+lg=3z6R$Q zILs%omPto0Uf3n zXAIHX!CZY_=d72RjZ290lW?3&L2pqcF1vLK<>~bwT$Gu5-?d zA{-KcXB~h(d#&V1jfPtaNVq-HQXB%ynmImHu~Rd~upMH{dQHuoJrZ$*0}KPr>^v0y zAIRL046?T$O|WU<{~u{L3jbK~iyN{#;r_4RkQaZJxnsp0{l1RC*NiU8{ni@RB02O` z8nIAqbzV|qr5eLlpysMCKz7RJ+w2S6hT?>>_;QfQ3QscUA_g`v5;WZx%Mp-4HusLT zFe|c<&hg`sGz6O#AvB&obwVM&BeW*|Z5evhd}RhAs+BS%bZQvYD*}Dm)#K2Q;swM+ zxN*gYs0HS#js&qV&SDsVLu;pfRlZDrr}yXP%)0Ew{sL%V-}@Cc^^gQGzuDzCpZA-a zv6vFs;dt3;|L$Zu{YOp-TE|bpHttnZ)IRRFQZvFV1Ev~kr<6J-2YQ_!6Jw3DxvR|> zDqc?aM#v#(CsIpFj#8dtp%M^QY&*jT_EfU1ple16PBGsH6nxu$9^S0@WR|7eUD!Y$ zlV-ihH!T@3w)wT=J_i5(W+Laz+L>Q$jZrr&DOqpGfnlf{HG|-=X z@6$lv4a#(;t0od0hR~}nmv%*60T2o zo1+RYJljz)7k||&v+71sUiE@iIl5%Bs^YI#(cG!NjR+Zt0fzad1nUgWnFuYPfnfNn z>L$PH%gw^0k)>7d!!r*rPlLr?v*6g^|9(Yip`k-MFyr~W`tj^fG!rTY5pA4yEi ze=;Is5hA9u=y~b88T7R8AsTAo5|oAmXJhtnuFU??(^7?4W_KI@Jtuqu-TOmLmE_F=BAZ2|MF zGvaG&8}JB;tL2GJWu91DJFl1QCmO}MGmAYvm-8J0MfaSf<>KO=34Enoje80h?X?*I`7XYYi(TsRmlQ2n$<>3G z2QEzvUM~Ltlt}4mX_i&N0UA+I#hgh6oZIspOG_FV_58u*TB}Lak+PJ?ywR5>Bpj_O zI{QqMrN_Cun7}G>r=gP9#18vK3dL`@^gFDukwU8dUOhWSc>H+i(Ae5PJZ9+YnC%H9 zrl%tDVAcPrN}g0`XMGoF2?l@ctQ2zZHFRhe{BSXSzWq&{M-ktUj4?|M7bSb0vrQF# zC3R6U-F#-89lix(*7pu^dF1=X@#60t;y!61_FLS|6216vehB=Js2(Bc2er8Sy5D>W zGS`C_T-=?KJYyEXN__=aRq2s@H*?yuSOEKni@P^2;K+Btf@|%xo@@F;+0%t`J`Cej zD3j7d@irWfq!4Q7KzKkZ&%p(g;HTx`-_&t_^Rz4yOl;fR?0Y+ zua;Z40&7`r<-93kd6dYdfXl7^__kUDlluX4ULOcE8#(z)4%xYc;PI^wdHF-gK)gUP zbNJqrc)&C_?IsrDw3Ny8KQm!THj8QE)0;ApIV?*r&VE5`tw)&4Z`}lu+7BXE6>}5N zu&738SYynVi>&SRgZ(N7Fwk%mz5(-nX9G5L>227ISn|I!*r$VLcPwY}g|dB?34vuU zF8v_=1Cab2^iJ4e)FJ39R)J4R#ZWIMvgSD(hG7Blg5%>gSDW~g=c(Yahfyn4ZZ8V6 zvL`%$(>eX&=|#m35E(El33H5s$ydO09lxYf^Kbyg(rl+;j~RYrTVk%;#L9}i{p{CC zZxiz#81;F);V(!pOBxQV)Wj?mC$y_`(dRfoR52Oam`&h@%0QG9AcPqt&K$^QM>Thr zBJR8mqov-{4A|?1C;3?V!+UJ5Vqz#IgE z?*_gzC%y|D9WNz%Awr%EsD;a&SDf7&uS^Od8;(S_Xff!qO*kFv5LGf0+K(w+K;!?& zXdlw`p!9{!O*x^YU;C^9kTzfmj0J9V4c0TaNk>Bw4`J4Fm$*jG{LC#PEkAvQp{xs< z9XEO*qlRK>7YDP|-NgCOv@M%t>Vzwijcr^ueT!QZRv)D{2nm|h&EoUM;(MAelu--t zh%$oeSt1mo-EjL$@EA@q^M(Th5CJ9TNV%@)aL&8qOSgFV4t#6zhYQtom>rpK(ZyeY z;^X4*rUJi>v7(*x#?A+|D~t2gBy`a@0sQ73(I|+hWMu~$iLz2mH=JfeCo#xsk$x~k zH=Rs3fk}zg&&HW>koaG3cnk71yy9&*h&skUc4tWcR6o*VfftQ!SEn*6Ij&5N$!eAn_Y zosZR${21K1OY)?K9HFR_NOk%FudjM4ocF!p*GmBCtwR( zi;QDcby29tS+GflEqs%K^dA^{55Ni4?s5gEngnQRR@N=8TdmOrwKticsAp~$AK^cH%-7% zbQ6NzNQ%~@A-E2jvVyFkhH3$`sZyTW=imYfV(d#m>02^%)`C}_aqFT@}zw(P}nVn?9a8xkyz6D^|u!6U$s zQ#2Ut)K`q+H(xg_;T4dah(V%U5M;YI~|^L}7i zkCfip$6{eIF1QI1EnfZzo9M+|^Or$Aj>tl?Sk9WWV0W~kF8qZcAfa{*e7SL45J6zD zx;3U)GQ@Iz%an@ns1(aqL*nR9Nf1{NmyS>yh^5x5o~4N68}0yj)26-PGuKClaiFOv z6Ws>GcR)vbi9W=1{q(wg(ePXoKouFi5y|Nq{5m8MSHNgbRkI zu&wS=AUc`T`R{Mz)&ejP1y{UD#Y;zrP!SQLi%}`V+#sG=aJVb;E`Q%YYHa|%XE=dE zD%H+*(4I@^1tctrWjhRH)MTEao9fFgizR#zheFAYoNI#Sr~bMRJz$X_;{Bx)+wjmE zNTT0N(zG9{GHgLz&Jr4qj-%sd=elB%&!pe!MAN~M$lWn)77eqIGj#?Y$`*_ z@9lpI`hmX?oL9@NDy;o%_J-+~#^Y?x2IiWe%=7B+X*7%s(9abcy$zfQ94PMfs@)R0 z721$h;Q5O?jHlH-90$B*U63BqTuPa`?X>R&UnC3>k#pcUvODNPE|UWGA-&C3cH4;^ z>Uc`13P;BHP#-TtsrKO;-r=iQdi}WJFCW38wzZixvo9eJjN)ftlLJiyldjMkd6;lj z(aD2QGO`Viy~yn=s*}KFlF}jiGyDU#s>e2wQ_w?HR}Bk`sOfT3`eT{7l>NkSz8hW5 z5P?d-0&|s8^PBWc)Is%NrHmV$vd zoE3GHJYz$^oP*5}qFnK%8@D2dOvAw~`3rBMzAO4LJg+D-D`!JtcaT<^Yn4^v1dfgm zJi(x>NSqwrhA&_fr%LAdJOVZVPla&xMo;S_+OnDgLSOox5W4WKM?G?6g;Vts)=^#_ zIIOaBe)s4823iE?WklCtz&t?5+rlou2NUlrsNOdng37N19*Rhy&uF!DtL#BVo`6Pv#!2>v}^nrn3Fl5P1%PE9GJ< z2uh;F!=Qassu?2-XvA_(J}oWD2jVqofzqr4!l3c399PR5wbU@jEu8`_ma}?#+R_K( zblpUcAC#_%`pxtfk=qi%p<7TUtUvT5>%`nq z9%N`aVlfx`>c7V0Z&5-yj+BWs2;6o76Q2=)R3h|f7lG@;;Y}s4;(P3R0iiS8jsKZQ z!m1-zNM%qIkZ}OMEmPmBc~KRC0mY11d89WU)bu_l;TWy#br8hdLEac9ks{&ukVX|j zEdGy0{QX1}@kken*bJ~ZS<4=C@TEzUo!g{ML7MS0%Q@8IusHwmellA~%BjE#rhNtO z`%Ur92KY9-Cb`H(h(a(HJckN4tCv&@s@4dMI#e|J6L#eZsP))R8J!U^!&)LuojhRo z%Gop$XAQ_SDCW4}a+Yi#rAd0m`<_cBWwv-L77fjTOJWieBllEOs z;$+N${{l=4$5+$d1e!!Y5lc$3Q}Pm-H~a`Erv{^yo+{DY2ejtgBy)(VXbGcgM}at6 z%h)QZX!$`8L2CoiI#Zz~?3s$zVxncL?L%l@spjC+TJZ*F&!w}YkC0mN*>g-mObEh{ z0RgLt@^XJr(oj-MCP;2pYjK z1gjGh=N?HY6X(o|iE{y@C(gkshrw3F zZc3iWBUkB(JPg0y!o+9`-r#nNQM?|_z~;qnYjQx%Bm>7WDC%>drJ{dN&;zYFt;-A1 zNF_+ddAthFu3JqJsp^4T`45;^W8vxyIHXO>3m~*CmiOV%f{|JQ0F5n$D+|^=ta7w) zDg0OftRPr|_my~$mM6dkAs~ZOdLy`)_b$T!=-{<(G8y)s1pEN3f zhsG9ez%9JMr)5P-v!mQ&I%pT_C&zR4e?g3H)n?#5oLvXk3xFsjJ_sDbi;lC5TTBGy z@iNvAUl9aT#vXfF-_ckB4J`Ahle64dyXM&`Aw7rnOhk%<6|4e6SB2M+Q*}fDEGcCxBT5usg~+XH7B&GSj!Q0{|r2 z@nG_{KO%ov+`oh0MmXz5*EEr1Ktr|^x*HiMh@HHC(+@9Y>3z7(^P_qF=II5AKJCZ6 zv1lz&CKSy@rM{IvtS|);fJa|XDVp3duxLtyl%nHvLVkofP^=YwPymHPNDFL} zP;~TCp3=m6jv+pLcyLlmXYrhp)_@;?*x&_9Cmt|-;9D6!@J0y)$VLKwbbZ=|O-{KCaf`+}wiD6@3T+!%l^PKrhPSFS&tbMh6D}4F|%sUGpZ_ z6WMnR``BmBY4c3GXv9-SMz8-#3Qhb%P|AxGusN&;egX6OSU2?IUC7&W7`*sH^W%YQ zx9lf@Yp=m4H*hVS3bP0ROS7XNq$#-<_WcBk-}8ohQHFc;$xM`;*xc5pi-HV9jL7g^ zV)QPF2$&@yTrgEltS}oQTxZL&7kyAadr?;SSt3@i%K1;!px7sHg2{34GgiR0fa2IR0s(8!0a-IpR7%1-chW`oKnHK6tZ=^uoB<8Zvl3tDc zp>+o*=c2=8x0y7cw*2(aQw<_u<>a||jDr%uTHqqUO-2VK^{_QGm*rFlRyacg=`f%< zZui^vgLUzWE2l)M{=KNa*~A%O;Tot8LQcjYUi9l5g&=Y6(p)5K`&>LvZ2&;($6WVc zDR#L~UVG^eB*RIl5Xe9q2*Yi1X)-RLMjyV!Q7RRbw#lqEsBt&j5}Wj~C+)1H4$(Q4 z(Sw_sk(0Zz2H_L*>5GmQy((DR;ok!R=ggJRXN;BzK*QNxbGp_Ga&)%Yf;{ z=)*2^s7?mRqXt6Wfn$WDFQSaWkbT8CdJgWB=^H0(^fkr&`v#9tn@VCkiz~uNv9+$ zj3Yk5;I0NzdKl2m?}=eRvKB)C?_`Xl2ZFhIG7qc7F6fuAP`ny8CS^v=B)?uT1C`t@3Th;W7xB#rYAlDOdMvk2Q_e6kmSaSyGccCB zfhKAnfT|%Kx2t`}A>Cs{%?eY>nhS_{bZ^|c?2=xIu%=0i6w z2JOzf&*7-*10(#ljH+(_vF;;mv{=p?MOZa2-i|gRITIcZvm{w8X9d1d(t7n3H}8{c^fuF=yXr zlUghbHFX-8#Xm4hKl>}^&risJTeYCsVhPDm~= z0+ly>ngI^^3Im*OUIvUK$Y@8MEd!iE(+xJ>NS5TACZtI6iIeDOqnB*m>Fz~DS*w%* z2<>h`b5jdickK6BkQEkcDPsxv3u)p*wygyzJu!%)(?shSQq8bvK%xv7vhl49*?6OL z<+X0n+Lb~}dV?>+3A zqv(K+k<5mCPS}^v#s=-0kDxUxp)@f8DuF8?1+jycyN+O5y?+b)d2qH?SVzJ+1}bH? zRbI&*z2Qfh%9^n(v5?+>(|ye(wK1+dZ#Ps9k{XDvUorSLICs|2-2lgN7k9t8vxZYD zQ4`D>1~F?maMK%AK>5W<^@XIA&Buv;&s~H`GiBw=Zsb;!WzI`8xy_?)E!%;D_&neF z?x7cnV`>s>jq#qGW?u^e@(VD{S^^0Z>ytBnHA+IdjGy>PEIR9N1LC?YPGx~?Jdy>< zc;*b_yi%hyo_%Opuf>c#PcqAQGm= z4cP5sHoyt$?Xxz;e39#B8}^KXmGB})C&wwL-@xaDc0yKX*o*WT-my5QHehFdw4Rc^ zHG*`$l^A3o^=7B*XJidAJN!=_h?n?<#4qR?n0ukGGHWjME?*PtFjkJzAAvqWpsV7) zF2XRe(-}pWQUn4?03m%G?hiI$UrAzXesOtQO}3lM4z@YJylQWcFZA`WnqvL7EON2H zDi>H%mI6lvociP9_zIT)gcp@Bv=e*eNmFbRc(!p&J0ulO`Z%&4Cw&AY5{4{~OnlCH zp=!QI_P?Bf%5|2ExVp=8#oX&I=~4a9O|{fb^^Ft)(WxrSZdCa2~idK%ivrG%-P=ipKm zR1zv95$DTF^J0j>^v+>d?u~^>a?%OIYKrtnM7(9Y?A0HxmpP8Z?nd4ALd!Z>E{!(X zFSKKrx8Y-?Y0RvK^xL*Nqh`X>G~ZV7A1c4#5>3cO$kSCaysGAsi@QA6%(<+p=h&y= zPVZU8e@J+in{WXV8Y?foYVOq+TzJJL@C3>rJ)8(nIz3QTLm5~Ka$}q(Vh_5s#C;aM#el^+)h&dZx+npNiFEygj04E%i$_e@X z;j*2aqpocx^)q zCXaLbji?TGH~>?l3khNQ|HP#o&NAg|`-W_Z%SQm*Yud%*JgDmmoR2G%oTso&F}QV& zWl~fa)>(5O4AI+=G3Ap~eHlLWT$}PWtI@F^NSsT(X43Ju!zC90-jznW-RSLgE7v-yT~ zc6QCNjhPSU!+v^>8#kW6AnD|@+VMi7p0gMdrapeKS@fm?NK*G$Gj$FTb{IJ4Vd$SQ zUvO#{%;=Al`=(r+?(J=8 z#An6_R~EZBR4>UTu%_Rxbq_J$uGA)j$?F|j8L*kj$nZDDC>}FDdAsi{TP3g<1 z8E@DP`LueHRGq$kR|N>|nUN-mq19l;CN3d7o=@8N#PEQr!U*#lUc#XV_S77scx25O z!@gBgI7d{0?Dbuk^_UF$u?pJkThnhLB?3*IWSM*LNVZcI4q8~cW7otlm3h9#l7dM18@xp7dAxvAiYv$|P<;ZcByux| z*4~F_G1tIx{^Do74Ri6r?_IU?WPkn6VUpVKEqxY>1t)^Ri1CI)$ljRw@4OE^Pi5hD z75_oGetoXi!WXh)E3drZmvgVatmb;E)A))I%r%8fYe;YkM{tQUjwc8SWfXSs?85|U zxMSWW#;Sys*TigCgk|z6Om1D54XNUdj6q>Ixh2cnAglIfQ!kPfgAqQ&h? ze)Czwlj(=&AFZ1t4DDg?FJ?ASHv z(DA+olc*(0Vz|{kcMYpso9EMG91#W2;uNYt@sC71<~jMOQW7TSa0mkS_7uASOq-h^ z1yL+FyPf-4mjrWco6-x8lHkOy;Zbvf<_{#JvEjZ?Dv&%P^Ko{2HtLLoIR7Y#`2)A1#}dE=_CP&=8@ zQ#0B{Vt*hpa9St5Zel0IFBB{;s*P)=5otBko8PBqs=t;KEv{w)gOQ7=nI=6anrU3B zX0p#0&2+#(&6K`cQYlnxw^Z)NL&#j;lggbq^P!}Qv0-$@&c&Hm16A(h=j}@6rmvW* zO;g&dH*I^-OdnFUP9MaQxNrsMq}}$Sg{rHy5a(zGicdFJi!nY( zvLdqaNGn25?zFjWXjuCg6Q42azsymm#|6Bl&*0D*m|ee}Oec$Rh~oQv?0t3i9}gbF z-PrQ%=$W7u9410k>2R3XK6O*9BytVyhHik?BJh7{I@EV!B((>MrwW{h^eXBk+40yt z5oZo_Jp^J+>C-~3h2of_9_02moVYg&YR^MsBWdzCV`W15;Q*bDm|BW1kkoOsDidgJ zqDWM;PlA>;6KD<7Xq8aBT-dh}yQFywpK;j8z^QdMp2VDZAN7T2V+EeQ4NJ$-l=ymo z*OWML1}q%2ixKPTE^gzqNSf&1QmORv6qib2sfa=c`G`@uRh3n4-8{OaaURInO3HSI z8C(Pg{$}THWCguRzmmwWD`|RwBDz8{aD8e|)utiC{8_-f2(=rfGM^)pE3KD^mh`Xz zlp3CZGrRmxxjY{zZsj+sVU-U%f$;29|AMOktt=R;PztLQz?I8I6ELyHO2dB+$7}5h z>Vbrc5HONSERPfgY$wX`INmFvQ826_2385|B2{&Ai0m++Arvr65D8Y$6V|~I2Y4H& zpCZA-t;v|O1$?qw%sDg_Q$=*Q{#*sIn^=FB{}QtWe(X$Fgj>N9;?O_M@nn9Ahm^=HiY6$0W8wX6@lAYx&5)R&cr=*ht4e z0>?@>djaM=n%V2H37bz)$4G}6+dl3;mhTM9C1E8RmlWbfXLyXut{K=}F(!&MVj*g!MndFyfQGM)4Qk@R8^^a9gSz2;nb) zplhTH^{u2lb;3!&2*N=lB833A#W64)0}?xrbK5V;fLct6VNPkJ`Ajw%!V(io^|OkF z903zYd0}=lL!m~tL%|eB8nr*H?q@ME3Hza#lO# zvLHD)#Ocg@Ef!sd=~N##?#3s{g*S1qax{!je(Pq~NUN%u4URqA-^UK*>ZwK>HsbL& zANz{0E5c}@7wr+mQ7u@2_BKof4vm>x_ED1XEhoEzGdGZEeb`!$ZNd1wk~SCvf`4dY z6p~OGYke-uODnjdObJ7-3}6C2hO*+^@!F%x)HBr9i(6vc!*_*rKS8R!y1hZP)^Z(3m-MtgEGJrc+C;@#9Pz zYN@yJS!t`(uWws!y_u%iLIJJkNvJ~iT6V-W1o1c zAD6RH$mNWcLeqfH&afHDTrS1;=W?d^IA2zw;_D#?f{fc@Rpo-S3m}Zpt(04e+CQCW zuNf!1wJOikyrvZ|)LI3yVQ>FzTpDL5wC`v^4ca#snIX=|PD-4GfP>4iqG+<1G+

    qUA6%faNxxZXzgz85JRFUz^$ScFWGyW-W1|vt7i~~&p zD9IT&i-X9mS{6(EC1`yLppc=g3Ak8?*H|AZe0OYv!$rFa5MaV-_HXg9D9 zPjQ(sVn#ipuX}*`w+FP2HBRKH%YYxizX8=KsQyuIETV5(?d$ zEc>C@9ZoG{^oe04%Bwj|s|k7mN5nfLCLf_Qe`@_0Pd~;2XJ7re@Xo&aF>4OAQ3s2e z9=ScRnyI?7Uf6sKv-8l`; zd-dhL9gU1W#Bo54dEoxjOL^d#ZsPGHKo#-V{GF3{KMz<;;Of(m-Db@+Zl#tKUg!dA zNf30GJ#(<5$cCV)%~s)Blcz_-zk${yiKh$YU4^qi!;s}M^_(~+HqBB;MgVpqU-?!MOCeZm`;2JSxN7ialS`og_a;6DgJ z&J`>XThp75&&&|xmV4)c|NK85FX$rlU*_7U9(O6Ey?#o1c>QcrldZttQf>cGNVV4Y znXH#EW7Fsq_J8+U<}Pb}ixXQKFpJv9yNUZnjGL}3zN z*BFauYSD1d%F3f0bNTp2E-ewZmZK63Oj?h~?cMoAP=B?;1d-JPc zF^OcT!)-!2jB);g!2{Y0C-0LDQgB7X0zSF9rPwUblNnYGE9QJ79vED6RwsU~%Ul&% zWtpmSCZnhhF)U|MW~VDEJL)N> zpSRY=`Um$89>9Xe`0wr@=WyKqK)&u7mWhYe$Q9nl1>Ilx!4mvM}H>J*yg9);;OiK&-FITVq4R0R`r8X}3Q)0ycrY5GKK8WBz$ zrn_w6$R}{S{fV`ZkW$#H8uWLJrJ0SE{dA@g28P@_ty|Gbm zR#8YwFmEbvK&^K=2mDUrLfG2!uy^`bV%|v=fU}->D*gmU(WIsIp=MzZWFUe`{HoSU z&8i*aN-6~Ek@EckI%vN5RSmrhbM)LNkbklsD%d8_>-84AJhs|zymuX^O2ey_S=U!3 zrml&2-_T~G!v89RWI*7+(Jr_XO@#L#;ApZqN&Obs1z+1*c~K39462t8DToo%LEPYp z-7?g$OC@yNI%koSsuuI{hxW0%tb6|_3M9&ZH;O@+ha!#O?cYb{ zC$PE%me?rfd>z7Ggvb~s@%?Q>cGfTXnn`>okmMx3=YO4@^}Tc6;voiDhLFwzz5s+C z%y;u#w|S`%p4RL1=FmtleoEjvnbW<^*J6PRaA;mLx6*9Zae!rhv^K+Mh&DY_t z_>FwI;pYwF=M8Co9wTN|qPhayb>M(eK~Rwa{9h{^28dLgD6ihH?moF3!s9x+*+m77 z#r%|%UNIb))^u$rAp$p7o@0rs^}zVzE`rgL@mAayNF8J}4^>~pbWK-;QQjU)N-szE z%eF!lXakcdzR@aCt@!2b>pCkJ%hva2N0QYQ_%ahyCE_j`w2jELbJti5L$0lcW(#*d zS6ToaV=H_d3RR%52sFH`9iccuge7PaEWn9L+e9V?HofSKYa8bnvVwfT_W92*W#f4QP)1Q z#60c)dl^>`kYPu6D;F}pZspQey}aunO9M(KIOp_q`OX0U&^ysuq)oMpflvRMwM*xG zfld4H$VXyN}E3D8mM+xkhu~E_u|1fz6zr#YvRZM**W)_ zXL-9$Xf8`#^~>sles5$RTqm^WZe(uw{ukKDl--rt$c(wA?+w88WM3PAP)puMX2JQJ zZe%9zwfT+AkHyP3*~oCvlp)xfjm*5eGaH$iz}eSEX2H#U_2Ua~Wd24Z?XBF%6z$~L z%=Ep#z(!{OSNgG$xu;AmG0)k^e6rUU*vLHghu$_anHVBE%$6gPt!5ORNcLi+he-Ca z3A6P@wTaPzFt(D+vBcRW)$Q;RT!eV74n11Edv)lM+C4c)H*8sC*_##BiK};s4Eud7 zF{>h$xUdoiT0M%L$Z9I75;Nl$VJTi^m0ev&WmDSXzvm4uw_r#0-ekPbE5s+?%ZPYW zVIZugk9==1BBG4Bv$$P)zF@$_E6AeWdol07sTD)?XeUrO0N9~=y{0PUI_07LNYs0q zy;L13D%=*H;>|f-r&E^squRn}MV5V7alSWaDnT9^xaM{`8>7`IW09q#M~XMYQHcLn zo|Q6-Pg_8>aZ?0K%KRnmFSjts$REznll!K$l0WuM$(&19QU&tgD*c$`2_&m|2{6h% zz&1oW%c*_2mh%DNuLKBYlIJ#c!}OXi(n-Q#;zNh(a4jMyu~MtUNFe_9x+Af5sZimp zF-Pv;Xv}hSmwk6noh=RE;^t(*wZZPESpg)!8qk(h{FJt&9G0WrxhxDi&n+>P(;96b z5*#*}Y_M-?RY>(04!5qlR3}~EMO_G`6;aP3s(@ESGz%-SJpLET2wOodVQ;m6_ro&b zFI5WonXVtt;LYG{rc0Z`PpIWA;Vfa*A#pAw?S$m;cOuE*FW|f&DTC5di$%QT3iq>! zpIH2z&|Hh0-}-bUJQ_#whg^f>7DpcARHpuMXb5HB7}f91>rk7?Z!G3k4Yao>poc#N zKcR0TD?2Z`($i6hoKz7iHHB_1>l4Jv3S;eS;A_15Z{{b;l>~`-8lY%0u5^DI4kelX zE>(Zi+mao@G!m0CQ%2ndKedWW@yYFCp`p3jN)Q+^l8mcvNTxE9EWH0rUEG7#Dp~l( z)aTWI>sqJblHQ=giZ@f4{za0CUl=!xcE)Fust=N?nNFkO#E^I??`h!sJ~J`a zsOemCO>ls~4r&So-DU55MVr6a6uY8V}GPM=HF-G zUdqYoX7*y9{F-4l$6TtLV-FfIZ}1fi8SioVJ4o=4|FsR6sEtw4G-t?#()5g)znZjA zOWeN97hD`Ew%NjHkO+d`C6U5+=m*jxjcXO7$(h7WD5_3|2h@0%RwC+pE*eCqS)<9T zsZ*&k$+A7(K&3rxcza~P%Zd(bInr<>?pG$TK8ByJYZK=2lz8}kDhTKz^=BHG z_;EaRU2#B^!bNx4iMu{gP&Kz(LCX{&Uj$m>|8}tmbZHd{FvbW!5av=V*j=_eC6>qk zY?)!V&N}8_Jwe;>zq1NKD<1`e=v~c?3T}a_-q|fsSC`pN{OqE((@Ub>g)GPHkb`yR z5&32XoAIIFmHxo(Bu|~{c9IeS+*WI<^ z^G>Tt%y%?APrR*b5?L4U5Rg4AY$0z@_+oxi2g?7Rs8b>u458C&(3>0$%iKh7VsngR zaCnCcj#_U3AxnBuo7k!f?p0%q2y2D7h)H*0>p`e_wfTVAQUK9bX^Oxc8^}!9ikbQe zlqsI$V#&fb`Ivd}1vDB-7B;1%PYKS*^k(QnWn!0z#a8%x-DWD46+wQdRaxbn^bike|?gd#R&htOJ{cIAOv^R+8yZsSImZSvzgnRcZLzV)e0qq<8ZQGASL zU>y0HdYg25tHu;!O-;G=IJ@Id7XHZ3s!p!o$5baJBstZ|E%y=<^LJDe_TC4+A0}U9 zT$2mHn}wZ7?a!0@_u7-#st6F z$h;nt)0Tvl)Z>{?E8Ze!Bf4c*&&!|4W8Ogp11(5>JCn1m2&k@h*)B-@t{`=6rqm%% z|FNKJMF0skbe-&;_aHr8o20<52`+uw`Q$m+J%7F|n@7x`Yj2mnk@T)@-17%Hd9>11 zd(R=l2z5?Xmo};H|J;vBF_Y>YBZPjNXi{E~6}smbTcEti=pd41*S#yUoL_FWz3%^H z=g+%ke0fvv3F8%za0hQp*b4hGS34$kgJp5TnP<|Azmgk_@v=lfMkuWMS8-lHAKa<|q9jZ!tI7DY0}mXvhj~{7pUzv)rMJV8|&J_0ZnpZiKQ#PgRk9X4^VLr;iW$?w+B+s zVk&E1DzU$y@z6X}|8-Cvs=wZQNBYy|Iun5gH11_W9{rjwlJnf;bKJCe<^YG?mBsz-rT^Sr8Ix|lCwhkS1>4qMcTs*hkOVu~O(uPB zfhlkqszrBhHjVPg$Q7vD21S;Pz2)sO`Y#gtjybQ(>Q(k+E8AW6>!1|&k{)-4XsOQChSDi%Lx~eCYsF$tTRU z&TO`ZM^N+WI?cB@0>gf1E`qVw*}8tGkcA8bALF_Qn|2l1_=iMtVRI7+HaF}cBm+|% zt22hn?y}{rR=hT`ovYCQ@42j&#{nRH0EY80ij{DID)*8`z156nMJPTH7+JBXNOJ}y z?8ae9T7Cn(7no~+@8(f=m`43brrSAm^5`728c8Q_!WR3 zO@<@>^R_{fCE3NzxLY73VwE-CL(h`k*|^nJI^E!#0h91hM+d~JASgUJ9QqFWJzlDA1t&`Bbb38! zC3^vzf6{l*HtiG;gNyN0qV(sl?BS2ln^-Oaa=N&SxN1FT5S|&*-^DPEd8fh&6ow9M z)fN6hY!T9(?cdTbR@m!J1I**^|9E3}*SkH|BT3ge>ygG>>k;cs?H9Pi>b_Tn|KJ*; z=dN{(X)bl@Ajd%)2j}1FQ*+b;x70j@76Si2EJv@+uyY(|Q4d^FcUT3FTe!pO!^<>h zxBd>Rdp{@YSOma03bXXc0F3|b4y#G3vfNd9k*gB6+P^!jwox4-NWj`J4b~R!usZmU zM&}(xu>YJptggDoVgDv-vpcMQ@fqmfgSYe@R?m$M`kix!)nxFfb2P6Q{_PH{&w}T^ z@36Y;(!K}ae)Kl5BcGK6Swg2FSh4%K!)j#!ew%?$94qm?ygRIhq`}X*!|D#80Q}P( z$aW{xWcR$KJFI?jN#F3lt2H>;^A4+Rs2pa?m0_!{cIeK)dz|2v19|$!w$sK0=q^TR z3GUqTX%%>9{=v{~@Xm10Te`z)G+uLtl4cUXPv<)s+p><+8*>=Cr|yu&ICoXdOOVby$5uh?gGbywzj0^aVh8UqmN zJFHGkH~&B0VRhwv+qPh?m&l9PzukT1?y&mro!wG9_PoPt^bTfKd{~1WoFUre4y)7e zWqp{;nk?su1}19m9aa~w`hZ0t<=;cw{k_AgfQsco(ekWTo7`;*qJz8+`o6=e2|CT* zOjY9lYJsZ5>2!;CSjFxJ*uL(t`om>xG1h>TP4BRJRG)PIFGouFkhw6Yxa}atsm1TN#_9>xl+68)1iFo?GCG5mEOx8Rs)rudxur25_E^vqEEPQ z^NM!fdbz{u#Y;)o9ai@#SBzY_C$l!ae=6?|tIyCwd|7u`?fa(>zLYzx%73s?S1}3G zo9F`i($?hNVfD&g8~+dPu(}v+Q*c>Yzd&QYWzX?X@tZ>~?q+|qHJjXF6}xj|k2|cI zn7;o9cUbKquJFI#VP&$ZJ2$<`)~^RgG;4@EEu3~Bmtsjw&hg#NQ^ejtj0nO?>E$W`o_<0V`2JNyy*ZU>td`M-OI;^!zb1Hwqs%?Yp1-~ucB(isXakknY96j@<cigIhbU@iOg(B*(~X;BA>s_v(*Kun<$v3-AbFg%%?ScW_GRSC$&J& z0n5l_s8p%acsW0C6*V4AKOj_(QE(KeFL;>oW`r4o{mMZgip-aJCq~4qKtpW)Nq>Ml*z6rv(5=-lM7AYXk#=Q=ptdz zg$z?6|7Xu-D+pA{EoveWx1630P1ehYK4?T!3fxH#8q}_rT+a_^HwID~_bt)#(co&{ zx-MduHj@`+<#1fmOK0{W-(Mt5$bo{X1LjN?`-YB|U^(k=VmJi}7+UCLC+X;|>ZBc-if zP-IX9>xhf>SLyg(uu7(#2IH$$&P932u54Y{OXG&-U=1#@@kj%yV`AU9&*JYjQ#=h- zT9Io*hzABPmPVY8Vwsdx>Sz##GXuaX0g!VygHd{W;f3$9ofQ&bpYi<{Xbot*#@+5H zI?UeCFy;h;cqNhxR1MP6c0ba({qRCwvtrfGFKADxeW9d1?F(Iu2R!R|*S|dC6d9ym z#qr4npIC+Z*X_*&k3aNm_Bg@4E#*r1Qv(UP5h1vJUUP|-KVI{A)={DFS{#9AfDqmIrvrpzx|z++)>N__^l<~5 zFlmN^N4VnKbk?erdlvvI&B_BEbDy;~FO|gM?m?;WKla1L~oxpE-zd|!Fd!+XcfN(p3|KZ+~_VYJ;@5!xixk3Bz1NH-(x%cGEPTLQ(iOjzB zL-qrD!td68%noVyo_z0j5)2fjffF5Dxc8*wpV^6Z;D`k_u_kPC@5x&enN?;o^`D?! zniTCrF2T|4=ay?mZT{Yqx2EPyfgYEcMEY^>$tTyyl>Y_qJvr!2VVHx7H~))R0I$)H z&E0##`5l`I>5C<*{MbEW*j)P|^L*-(`MlYL3{Ey8HFFC}J;@@q9@jhg1=o_j$K4JK zRtuP%yB$7$-%VETcF4UO!vA&>eD^3kt!LpS*~0&)c9tWb$g#6bo#q7Hw4LQS*iN3> z^DlcDJ%#3G?JP4+GdcI;$1`@8;BgCfmYeE(ReX+0D?U#^m_?M-fe*(yN^%bhg9(P1I&~mI>6I zXJ?t3ZXn0b^5Ln5|L;&I+at5H+#WplZD$!m!M+S#{k5}955O1evPf|^!T<8?Ecfgg z;3vn|$4fwLp<~)TdaAAiHY)-#-a^LXwWoLPRu~E!{`$#Zi zVgz0I>zS?#H>Od(qq?vsZ%gzCk~|>Yg&aG}QUIX~_fThG8NJUvZo$s->PdZfp#OH3 z!_RW?w*ss-*7b0~d^^j$U}w3g9uvqKD&Ex2a-u%)Chz1Uf% zDVOXlM=IC5GjoKk$!ym-~KqZSO^Xs zbu)5+I#>IHZvRs3Eaij`=mogUE^pI81C}Y~s+*oE4gR~=_q4MVGkyOL>@1HUfPPta zmUPcr-gkjbGq#py_IbIsmKDy{!WxN2Qs=c~Xj#OrthTd&ziddZ&3MA0cRl#@tf3`5 zCa|)Mebw!%?tC+CWvSrsprrf2#Io%YZK+~o`~$wjekzPkH>${^Y#wPs8ib0GW?!*a z4z5|MbM3Tq=Ao9e(L`tS%f50SB!b4o)u6oXNtFw=e3PtZU-{1_WhQf2I9;aKX2!`T zp`)_f(sjHjCccJfk^xiAKJp;jKF`8(Vhho38=aJc+x+U~zbTj00PZuWa3MC9gRm*3 zD{>kmRrd9tY5BI|sI&xr+AYzF1L_JxMSM2xgj&{88SaV6c?)b{?1FH<1JCh9Wqe3b zgh#J43pD41tH(YYYE{&Q8t=SDObesPN&UFw%8wRzmr>niJ5P42{df38ps{4Q5p`Z2 zjYX1$zp1cuLsQ(_{5|Dh>d@V3JtbYnyOn}Kk4ab19fRV7KsV@62=ZM=zh_Qa*G5KUY3zj(?9bAXrN|V3iC#~*%h3AC9(7Jvbi%At4zsw6?0&*{5E8~ONF}v%=cN}w* zg})fJMYK|+7n~}3)qDP)lTG8V5hF%JGQ8e@W}?BYltj{v-Mlk+$-t}_wXriCw6nHL z{D1D=1U#xL=^O7((xC$hx1$8(N~2K|*TgjumF|#++t|&bpy-I=0)iVs62JxNOsB`( zT-(8gS7%0N7)KmtTn2R#0vPEaBmrDlbc{HofpPR++tJ{H0mc6Rs?O~#8;SBh|L^7(HKo{A-0rVKxLRt7AwJIM8g@P1c`Rs9OW$deHx}iaZvKikL z_D+RzmGXleKIim~OlTo}dDBe2i{dr%Jf_YYl&IF>oLKS^6TY4AAT7HN0XJM>>6rxJo( zaD@1RO`g_Bd(l4q4t%)8huWk7{dd&+_&h&H{ZRdKd~(!J(8u$2h+fLq%k+!*nx@k+ z?2h^}j&SCv&(u%kXODgiUo-S0`0Cc_vXJ87_3xTf(P1>RsVe9Q9e@k&b$A_&7&BA}%}X$A*t^)DI44 zIqI!ptD}B=IMq=Pmw>ues1y!}%WH!v#o092WZoloo@Zz9P|HDoiA*5uqUx73}T! zit~?mVjZ&-w^#<|*_Mk<)&npG5lVJS6j!qEJeQR0-eQ^`pI2$(N}N&~UZ$l4sn=7GWOQt z-$O0q!Ec0Ah)y-wFr#>n6jg9Cyi0DdqmB>(%i;U3Ig0qN3{%ytXWym?USLPz2^9^* zv{q`z1<6Yj-C+qP?fJ>Pf7njnD~4m!%HSvGy&?F?V{Np5DDYJfpkxpR7?WxpJz=7! z9Pl$`?D2FrZz!fZsD8;~;yeDhf~ZPAkVy$ST7*aWQEvLes;?A9ET@a{YAx=|YFT`c z>I3VMv8mlAtqwNgE`wtzsdYrMat6X!_aImpHG~V*x>qS#Gz}BDtORL%L}OMoePWk0 zn&Edrz<{k190Cml7})BWIPsabMS}0G1BIbD`uW@?%@t=xNB&e0EQTr-OX}{XPpt3~ zeoxN$N*wDWRs987YAqkUoo0S5(Z=?x%;jRlybrWMTaxouOz{wT(@;DJ(Urn&(rKjS zBx5cD5MnF*&kmX!dA|<*)__{Tljt-0#78aX&OrNX_}vRjahZ1{cTMARdZje3#3g(- zu<-(mhHfWJP1A7}DeUc;(!; z5%S|1z?qTFXaUKO`~J{p0caf!4yoz@7hNeEqrjusWgPb_13&C1!XbJ*3IZ`XtX5zJ zE@8Iybi-2QH-8i72Q+DjOa;EpTqBXtB8?a5s8^ z`b{5C9uA`A7-ZWR^gui1Rf;_nH<-@KQ_8^>X4_F`2w&J<-7@A#VhbD?;M1)MY$2t) zmpr1a$Gzkip$cu8w`aC+e5)7_i{D|kKxx5Q2^@pY04hE8$QDjCLYVl@L^c-PS)>E8 zIM90i_w-g3tm1Pb5HXZmSyb;Ba+DQ1+A0@cN zh_AI=1CF+S9Nw&@f0(l7Wh_q!HI3b2sk(~RHMDZb88-}8H4T&!wmjPKGuJ>O<90&( zijm0LS6D$UGU!N*$ec@JBxH;LgZqF#5a~w26Qfvrb>TM2^D|44rFiG;i2a{7YM)wlp!9;v*x#5p%!M8jDpi`5wg zEGG&HET?n|h1a!Qbp(4ZV*FXkvJbriVhbEJy!)!sn7g&%<9TISISP#z=%6)RpdD3e zt1gOTggLxa6+{a>bbho*Ym64{x&Mi$6pI1!!KLNAh(ZSEH%9+Xrjig@hxpnFE?}51 zg83^!Vnm)%jUiNDc?>F{8||7U#Mq)Iq7p)#kxiEc)0RM7;OvNFOQpaZ2;aclHoy}y zZG$_4*y$WjPro0O4GLr_NDZt+V*OPjfan~}eF~yXV0yBGZBwIfAn}0rf$xF$EduTn zc;C38G2S<-WuUz8H*(LsZ{+KO_f@^!H}3;dG$4qu$o;}{w;%R$P>w3@PHv)cLIg7gX%sAjjIM^z z5oJSyoPEQI`8NOs^h1QfW+`wGZpO8i$D6?fhvDT~`Ue*NVyXf5YGeTuymJ!^PB`gl z?!x&q4#5C#xsc%{&Id#a&S!LnaU7yxfQ`fe=go}v9Q@?q(J>9oe+IKYNN>dY%o|w} zVm=yYeLl2~%@yhWJjCTqst1N^f(h657-67$dys{l;p_NX9k6APDU9B*cH zVl6OXNNg?e2m{p5wEzuRZMmyw!p{#0!moMbClkI@CAOLNlPJXPe1WGBbp=f!P}D#> z0|zkj0fqqzT29=6!kFTmhq~ps_bT7%v@$@Fc8siiykd`Bm}F8)V^k@DLV8ky#ki0S zo%lutAX5ibtkj8x3ZHd}Da=aWVg}j5NUM+`WEjE=jd3U=;JfxbrVr4(58t&P=YE4w z2nP*VLDe+cAw{qO)3>h?$}j;^)sdVDTi2ll0KASk0{|mXFpV-Ov4!=Te7s$2$3IMA z9_5*wcHDZD>MXkIfes42@TI<%PP&XPYK#?rbo>*ibOKXneoez=HW*ft#IwY-T#WMd zC{V~b*AGb?|WVLw>vYPfO!wV*Sh60~}jk6>yyP6W{cTKf-~9Elpo2t3Z=z{CIXKRXd8{A_|i_uyzK57zk7;C8yKoF z-U7)Lf7sGvGX_+D4_!5aYeD>#N?{|18izw z{h~d6`Tw@%=hBONwftPxAbR85jlElb-ux78QwC|C)v79cwfubYX%d6_XZblCJTt2C zJ?Fq5c)IIu`KcWrv;5qEdNEniBpE< z<>w=>!}9ZAXvga~QIDsT+v)rSs>M||$O>8SGrWM^{hdTiXSSpHz02M-C= z!A0cE$6+5_#4nAi_iPY(^XWV}0PILUlnE*;5o-$J4JJWz1RK5?3dkaS;+5iSw{TuGF;DCznD@*&F^Bz>vG40(DnXjD`-m0GW?KLT$(Ikip-a zD@VMYm0utiAwf84`lu%3kd5lR5I1Tq7hR5bfM6HR0D8|kTL{3H_4Xq#C^;U5-oS@PGdX3OHhts2WZ?L z!gBY`0+KQNA0cH4xM9?C_jlhKVEjDG-7~1jT(lLdOj#5O(i~WX6b&pSYPp*h1?v!& zyP3c4(QBeGp|QS?>Pn8>8I`mb>Qzk60DAJruXx-DTYOZMo~o@4EvA zYPtKO0Y1$|Y`Oa;I82h|?#Evn;3rt_E&vn&|3U#WM;tj{+#kwv_rX*9hQDXaT`dTD zXUpCC^8~tM@E%X_Chp#x7lk*$a<>_^0^SKI2IS80dd2;rBBcEDl)mBZ%X0S|Q~~|N zP0%zXTJD~7u4uxqqA0%x%sI(&civY9$`dSiQ$-U#elRv-HF0|g%iUuS(SU(l?%r#_ z?+5&3x%<1nceUJoX|DmlVYz!XAT=y^$M7xC(ltWLNr1DPH z#d7z$Er-E!_w*@UEqAZL@cmz~-2H(D+F^*0A_Q+z5hnOVl7bfdK42kladebbY_ZD$ z&_#e08>J_^T^Hi7n(%<9B%|HC&x{-GvXzcuw_An7pUGBZcU{zO_Y^3Pskpf5?xcr! zO-xE(?T%Sk69;eyHEkPJ!`_fzX*V9^1+k3f1!Qkwx4Rf2S+~a1(9UEBNCSKu!aJMm zdM8O$q*mp9%u7+KQ5+?G@h&4N2fx~Y#f6NBmr|9FDh~#Z!v)bG=oiURPp5gi;zH~? zFBoA2|7_?v_~)}H5TF!Si_H+K9zZ!NmnNb$u=z_cYf}ZA_z6Qk>J5|rBK||^J_D<) zR%~W$gIiY{#M@B#D7>AF6EbJOsn`4N2w|ZE zR7_=5=vhRd!Ak7zyR>9OuA~xUhFlC&G)M~Df+;~e!AXaRi`|OwR1SC;zMug%1~9s5 z0J2Qs{03}XnZhF*2GQjh-iHVu$vXn!O!gfQTcUf``P^`%qn{7OQVq41Up|LTvEg{N zmj0nXexn)vu@29WM+4uqLM}qQlRIyoIcv_HGjE2m7>WO&sszI#uPk=)CLc#cRVnv^ zSmR8h?d?&`>ku3r&njO6FOqZf%TRpqJ|4DiV%sWuGxqPg_6HLfa9$bGpTg&at%FZT zVumv`{M0C|9xtMkTo+&VZUEi0A_<_KFU56&QRPLKBFLGz4U6gM^wD!N?WIfqw-tVW z$nRC*_slbbxuu~wy}5eNSD3l6!f)vfy(;{k!@-y!%-I;)?dWCnGy+azWY7rdI?hi9 zPmPXq=O;{872Oqn-(|!Ue%n!RH-+D>8XDidEBwA25$|4SPYS<_P%8CKAqQTF_D|QO znsf>GP=XXx^?57kCqDhS95nZM6jw3EJ9KI1c+?xMo{~>0?u2g06TG7Vr%bPOzeYn8 zKMb<3piU~6l?zElv>&g4xRqc=t2`wg6<)WBG8C^J!M*&+(h>Ft z`N8o?324WLu!AFan}0(d>}f+Nmd=P%_995OrjPg`Ql?(2-k(;cE`YhKcZNq9DYrOj zZow|(4KR<)$y@v?mchhSwa1&snCMiSr?5kYIcWxb29O6mV@6q+x?YK6V z7DGvx!X~%MU3L^W_OktT-ge85$Pja;NIQ&()n1rsBat2k~Foor+C!UxbC z$zO&4P|4=XYS!b+1vB{Wd8nr6;C-UCL}|WMO)Fwqy{A|XM5LMnaOd@?cNI$2wMbfP znM@246Z-*e?jDS2A}TsbSPIO?XVz!xn~_B=%_Ebzho~r^O>q*c03<4-|M>ZYq2Vbu zfhl92a)MZ$g#t|wZbC?ifJZolh`R}vtmr00-f8KECyxTc30n5tXW%Jx1mme%$X%Ad zHoOO5S!J6w9QWkUw3t*Md~~HawC02hu{c`{;02lOAR<*uLEc_li_=3e8{G{M%euDX z5h>o|7J_ul3DlYkhg8--5v4HM88%D0U#F2^wnn6foU z#PkCOS2A^thd#L!zJ?!(xA25L2pb`y9Cu@s@pwwK3Oe~5DrSm;Kebr0O_!yDr$~I0 z3YPi!;w|Sus!8X12K)jV^6i0P98tf%7vvxSEMJI0n$N-MXLOTKLAfmsF%TRy5UdpY z)uTAj!CB^ese@&Z$#x21|LU*zQ54t!5oejYct)8D2}P}(jX?6{`h%!5&LrfL()`K^ zs20UkVg&Ei(jhlN%L7J$pm1Mllj|lTR${tKz2E9mXJxw81vpUR{#8Qdjms#?e+X|dg_{NQfFiR8>$02F9HwM@C!TBh8T zDJ$~<%)Pnb#vv)6CektB!j}=3ZkLrYsHhE`m^fwHaNc4NO0b zibx{F&lg^Xa%Z62aw%VQR=()EZ1iF_dNUinnoVK7T((+E#UC+YlVAuzaOsDJAV?ll zh*=Iq*|>vc+$;OOmREqqu0$PjOF9VC#CsMkV`;@i6A$J>rc_xOhcm=oE2V-#PFhmX zdWl#aQ+#hnQ_9Ju8ZG}4Zx?=pJ(z2=C zZ0xq7y`E7k2>!}b*%C{p%6Wm~WMPsKyGQ$O7>rtAmyWM6PyE;&%xrNsP+DMJyV$(O zk0fWYyA^qULUc-*uqWX7k#xW zxtxVYIqy9)@N#&_3+swj>LfL*z$i^YX@*Qv&fCr`iwrTo-ga2(YJ6N^;P@Wv`h)Q` z@~6YmuE|DeFQK&V?K;=^`e=`J^>Bz2B24)^aZHZ4qoM%fR3(f(F>mr|O()W=M|D_% z%@6)Zv~U#44QJ3^yp~-%hVb0PUm)TkmpIVrD1waT^?1yvtl!3xMRN8%EfB$HHytVl z*?UmAN%fF{vrf7xK_ZvcacSWEY0c>-y`1E}acTTy({IF+Z;9C~u>%YaG)e(aoV3cU zzXCcZApj>FRgu;}UIR*@pHKgg9+?Nzqg;X{fzRk2Hc$1vbfZoLb41DXLxLu$x{d^X zY3=^evVXsYKj9duCcydnjfrr^#7^Cb3{fyM^mXFtYdUcWkbg~+LvwnH{wMLCD#UA9 znSi&F9;C`}9MxAyj#+ywZg9*?b9$;ipT2Yf{rV{Avv9*lI&tATQ8)y!RzgAp4+K`o|1*YfK0{2i&k8n>?51-iV-y_&y%I^HeXxRyXN(d~3DtkXtJ-nqnz82QbgTXZWGkHOH`a{lbrRZ}(wsh2_mjX? zyU;GHS78bpmy4zEBwFUKd$`n8Rx=+9jd56z4&l?>3n0*`S3t&?Y9~aZ7_2v8$e_|m zP!sSsHorN2h+c>yWgLG5?u?=iXjdOcluZh@u_%soVVJjRuM0*H&FN{nsZ09wzg*Hs z`a$|OlE#8pQTd(P566x%c}mWes)sPPyy(qc+NXG#gw|pyuo{?Qq`XEq3E-`z#Jz%- zrQg89-&GD^N9HP@IU%|9RH^z$DibpqReo#N%I#9%uhGh1qMI11VY&HE3pr5qhMd9r zzo}XNmf|QfGpW65CCOsBB*O}XlC?A;6lOTWdK#h#jxAw}5?3dU1)M`=M~6{*r1ffe z2ibdUF*?qHcOAHwo6{}&d{Li0THlk$Fm|H#Ek|B-pm!Cns1FBksdO}oH-szdn?M>v zst@IkB?3Wu7o}}rLV*nn(tw^^A$%`vPEXfUMYl}@QgEEzIJ>6(Z36lZLx_I9@O3mo zA=yroSy#&M#sj!`h9#q5upX1h!)Mlxv(->?6ih!~_*g+Kg04?^c>)b#2gLJYnDEq6 zK~t|TQ(ZTdNvpjx%W9|If+ozyDru2qTULVtpvZARkwYs6dkuB*)a)|Fb@Z$<#d~~N z&D0Up(pnlB-fVU1(I~}rd|9n`1R4*7BU}DdM-2vvG9g>Jl5&kjt_dT64=fKR6hfSJ zG^b}`X+V+_P4zJor>JHNeeqWx00G)a6_7CPKDJa$Bi}q}%m4$-KgG!Z_x|SZl-FQ1 z(2q==?#m_pFHFx!FwPoe6n0Dh3Zuch@mX8MFxz12;FoPItWR^}P1xeJ(KnE7J0#qD zuci4VQ=Cx<Lc-l zsbAvgv^2y~MuT?tFPCD`wT;T7W$rX8Y#Qf_vRkjFEjbmXQMd%DejI!XLvDYE1rwi| z@h$+#SwfdUNS0jNsTge-l_Asu*B9b@Sqxs3VA8&Q_#T|Niz5>&!OL?_O#ax0kC-ol z(;J#oO*Lb%y~&GHt4Cd8m2X>Oo9!`2+$E8UW4ytMxo-6;oW@A=6a#SHl0=h4tTqQC5rTUWamrGwUo)uunH6gcm5d8|ir(4a=_X2S(>wIPXuJ{R63ph_CWw67f&wpHt`wCm}P178L7~8d?qyp)St^< zcPc+Pn|{c0DSJ>%3MCkgjB|F}3$-rZfTb@Z)uijT9XGp_|F{a?g)?X-71gNJ)YN#S zzkT6u`tQlE+upqxt~IWL_q=o7#Rsdq>9di@b1^c&jmU?FmD#t}Jhcxw*KK;`>4$M@ z>xXhv_;eRSwpM*lSa(W~Zg2&kGhHwf`iALkE~zx^o%5#XJ^dUHHWFNOHdE)il(4H{ zYnk#Ct-z3kddUqcK$1cvp}s|xG(*Kwl0wF1K7h7_D9=q-=DOGTR^MK;7v$wtwgMkC z$#@HPdQ}`LICYWxyIo$%@xIgicA3)nJhHfzkK{R9ubetH2V`Pz+MN>2bi0)O&VtRn z0qT@on-z|9@0!#4XdYosx0MDn-$Ygr+U7E4#e=B8ebYZt%7{RCvRl~#42_nX_Mcp4 z-d=Xw_M4r`KV1dyD2+c5ZqcW{JyKcCvhVQZ3ViGePRYC3CDre6N$z*hioc^+%(t!R zxe-qD8#q$6V@xp9Iwm;G8rd+*zdzl{;;<9cGjc=Io-}ZC=e1i+2x9|M#b~yyi#=IA z!4++&r6}Z9aF!{e7Z{r8GCJNAnn9dsv5oXqg+Zqo(RomF)9zGA5h%fR>#oGi0*hhjX|*dJ`#vJo zd#CyL50a|?=V-{~uB)Z`ZHNUmgY=xrW{`dc(z|cUtntukx!9s6cx6=tr!Uwhmvqd( zf>m62ZE`Z}@+i9z30Sk;hh=18k2$b40&RJ>93S3G%Uw})Du=~~A{KFmsI;@bXaEZ9 zG^!n}e;3S}^z%VMX+KEyt-k$7IvcQe0R`WfR;hk7o}~wFfTkSEs+m*UKy+z}*WBui zwEMY_F++^OSHMO?@sfXm*-8Eiv>&|o>M2_>37T*pm`L!&8pi@)3@O@=_h3`x6r^y}R$fE%Z@ayr07awEmqWmfpP5>G%$uO z^_VwA_JACoKqf^TED(&IFAyRW1})on`~Y3L@Q7?-91{$Xd6YmgrD$PXf_DP#LM=b=YIsil*<4~w(ulNc5cOvSXRo`GReVMc#N0bycwU)~E@ zK7x3?J(K0cN|5F4_#8v=P!tFsUl`QwLDi~$^idQ2XLAKBG`fsh!DAvHkaXZ9e7QBg)V1^Fg*IHk#3_;X+op*C zl^H9-wAsZz6PF?+5`7ZpR%N??_Xrs=Ey|?&NjL+1v$JV;y3@aBv@2t~@4!c8%9aI} z;d3fJ%PG#LJ@~epzA0Op_GFf2Y;pQJJMJn#-c;EiO7rg?)U^8uDgq_oYX**sZ>c(9 zGC^{w9!i|MPq@9Zc2Uj2h<~xi40WBekvOQ^|1VP@w1#NSBe`@mj?hDqh1mKL@wD*> z%vm>59GoC&nJEc#^{wQTnL-wBd z==`!i(G(Ls68Y<|?urd|0}*meyu$2FQvr!sTR)D8So-9|3GXQ2px>P3=y+uYfh90r zyb(OT6Lo^u@+HP=|GKq5oTY!f_LScqKF$*P0G#E;tOQ04S!Jn#VSv1EA2W8NFt zeeuxdKmpKYmL6ltXI4w#Gi(xlHc~TCY=Wmqf2;>oR z70SgnQrCiODbar+@%tKS5e$CwF>Dsu3Z%NAhtf_RjIV!5 z{Mw4IYLIY)N^)^2s}0avSev`%`$$vgVELwP@|+E{k|qQ5CLJs3&Xdipx3%6}u%+q1 z2=fLMP4(KT-ie7N-zn-)4{>cV1QQ9 zmx#sK3+Q>Lw0cvMmNKV<6g5p>WD}TQX{TERxzwP{+nR5779djI?lOeQJpvzeTAReg z?3qX+t3exDTD4y+KcA&nLCY@JR#WXTa|)}BwteQ?GXjNB^L7x~VL+jI2JCj^z(@3A z2e+RRv?CNty#1&W3DjlJN83+H8aYX{{YcVt`&Wy;egYag(bZdILuq2(e%t1o3tEHn z%@ADbw@Yql$r!}5src&>i(ic5o3Ye4t>rmd*$uiTigLn0suuFRJ`K}vtU(izx(inR zM6ZIDjb*g@7-lwaY5FYPsI4g-`8&Q$Xs;Bj4L8(s)JD?{)pi`!_8FEHvD$W{>K>b3 zQ;()=X?dejf}p-Dsj2{1W#H`@&P)$4r)y?ph^0M^(q4_UFdP zzR6~jC)K418bZc zC8#xdZlJnQ$RuQoFDg49Iec@&_II9Qi^3{i!wHSeC_YWF5~}Xq+KANV#g1W`j{eN4D*PAfiB zjO%@iw%p$*gkmr7tc{-Z2# zTP@!xEYM3~CnXhjQM@qZH#oZXF{Tc(I&}6@#z(LujL8v&$z>pX9)QvQXcX}ydf(qj zP-4n^6LXuNPZP!iZA|+))*T+c!QcdWEl09Ac^$u@Kca_0O)}x5cb&!i7``Z(1kDEg z(ft#YLrl~I(^=fL1ER-%KwQ;GQxwnJkAlUlMf1d%cjeMRI-O=XFC^GW zp8(hkdx3pKzhLhl*?izQd{kfYmY7`ffcluk-@{VkiEq9qCR)Ai(@2CPeWR_#y|ne* z#{TqE|JwRD_3-sm&70__3!#U>%+QYZLYfitj<;2d-2FpDc^z@VY1T7UjKMcbf*s!+ zoH|avrj^)C37;;*C`EgLzC@E!By}U{XLpLEmCJVFeyufLFfQt8{vG6JFgBd-XL8m&23r>KeSl5<%qs7rng*Z@;00SfH4+E%fSC zyedje_;-4njkmAF68;gd`ZnDK6KrFO4z}}UnT88mN{TS>#my&O@rn&_?dn@(+~4MkB&;lOnehnBsuW{Ohkn{;9~% z03*~-7h8Zi;Ikw8%R&TF6uF|0>5ckD3xU4Re=-D$-?jyfvIsv>B?^%k8e< z`29}*e(S?ibhQLl$ z$Gni_RCOOdvzkyZMiy6Khs0`Y;h?ktMY12<8d^c%=hKM=064P$kb|XpWpKlC1?X{u z%eqCXCW#KuQh;m|^$YM+WVj2Fz9;69WAEmX!(w#rPC2)aOLEFN^;+SS^B~}YQ;uDA zgBx&J9lI471y@F(W zDnw5O($&bjXj_uQr=t>976yQpZsy%9{&F$|@m#SBySlp#afwj1+Dk*bLaluXu zuvC>yaeG}-;Ay;9$LFh;pP`k5E}XPc&1(ppApvW#hwx5sBG}nIDF)}eZ4@#)$wR3Y z-2so=Cr}_cpfqWAonn@B_b!_JRzoy}yatOp`uW1;&IW?0>|C?7+MQOlcgi*B@eEjH z6Cr}4gKP;Yi_=8VNT7?3=dz4)5y3QRFCSzXAaE9dg*PK16e>STr`AzF8lcI%e}HG7 ztPCN?DP_!0^_xmGuaxpZ5ZQt@vIV7N2bZH7oa(~0D@KavP?bR;|{ys`KrzmWJkr&zl?MQaPaT!@3{AQ_MfE|=6$`tzvu7tL zQO&5CR%4r1rpg+qqmrDUzWNBAj}5f$9#9v((I7maX6CXS1RGc@3|`B@;d3#m`%n^@ zsdVvuD%ZZT8NN?QS-Gfp-=_<(8w4Vtat!*E*&s} znrd3UTVkAQPA>qLY|=_&*-E)M^m0epR7g52*ECxb^YyI$flwOm$j#( z3EI$u4W>8x_A3&K4L%x34Ckz)Zx+JX-Q@!n#uB}+h*4;D(ogihGQyfxBL4v8LH}aA zFx#PklVZdlh2|1gz5lx-8GIK~MP79ip)~3!8CzBG@+$w^2P9xLo zNm0}6G9^S&d|4SN~W8d_wv6s@MHy)e+P1;CE!DtrZrNZ72 z{w!!#2Q{l|BULF{w(stE%WlLyTJ|W4K+7c2vO7AvwM-cN`xkeJ#&x1`f1V*4Hz=WT zyeOH5X2@_nQ>_S9tJn}%7NAYeC)<4Bh@&R$k8G1w^16XUHAu2eghz#pKQa_Y2T%mk zpk>_KWQgsdlTpplcnY}MtZ0aIRR|F!$e{c;NTq%LHFJzsaFZLi(NQOuBpp`l5b=Oxqv#HFai zJXvd5b0esnmr(Eh!B|55Kvp|}-{Z4bLd`-JFu1_m0BYY@iX^fLcV+6VeE0g;3Mz#J zS1gK9q3>CSenNgxsMq)nAmH9YQCxKq4R?g>$ek#bLtmg0C_zF*?orWbSu37A!X+NM z_LcmNg=Q@>@*p;-=neG$R|7135ApW{nx`3^&LNlZ0xmVfD^7u~!b(vLPWn%&NgbQ3 zxa`<XY8;;#yY`;v0X>yaBLaa_mC&QGO2x*G}jgST3X@&Lqwn}ibrMC z7o2LA+ki`0t~!nAA+rVnEF!zz>rpiQeEOZ(Nice; z>M^`Q3#VJv>4+S8tbvU0lQbd6fqqT*Wu1?>#_E)ozmQ~g$$=#9qRy^AZw07 zYzD+K7WKBW9f6E!0H*HQ zd^m^88eh}O>q&2pA6!ATiVJ~Lbf?X0M<9+u1mb{y*;5_(ia;Fgdv#c7VP^+7*o36%#Y(qgQ%v`Ou;6PGScP}wZiB6}jxHWIalFH@&Wg@jawLO$)3Prj z?)At|KcDkex}!7n{4B16XzN*c&pPEAnt(v$HAsN-4`#t;?|1lQEHXdlNDCao;`8+l zh;r~Bcud&c>!XWIeJ;`h``jiepPPta7VRiZ$`{Sg1}3tBk!-IWy#sGI#bvFvJbPVy z)wbbx#;T1JE+U$Rwd<0t?`Rf_fy8k(>VcI&a4eXG3p?vfch8ZLA}pzS(e@UA>v_@E zLw_OcTnOot)e+SyUiI1PE-N}v@e+<}VeMC3ixE3$N!LqUi<@6FR&^q-#c)VHG@OYS z5pgjoMT1)emg8-lPH8zutG%4&01-Cn{VBPYnu-M<6x%CA<~pK7kJ1i}=sX%?7`>zP zS6HpnNCn2IfM^vzpFW2^lB=wGWw8gtRQs-S0#4wgEk*iH4xeK|0f=1_Bgrs1e8w|8 zWZnmQO^s$avvzD@4JD`XhaWq9UJ3398prbM%thqzId+DWJr4DaMqn9RnR>@Cv@aKm zEQ~-`zQN{P#mqa<`LezqLs(2hj-9;VDk_f)aZk-kr2;<>NXbsj>Oy25Smj_0Awo1S2U~Fi;dJnoLO8wk z#-Ff;@`=(=%&}xB1tJo~lN@QUgosmlYIq{gh1T+Mh&RXcARh&xr{LnC!?qqIiB8$y1W#A0OuvBoJPE?Fz_QRFL|0~o(L5TBd?qlghUhEG z=j94VOf5e(>F|UKH?3OWQ4E09thy@%QRNU|kcEbKE7U1 zp`G?yjEESkFkwVR*jZ9Rot>Ur0=c+gUV`@})=pa?-}vytqXau>aEV<^n1{pdNs^Ui z#OxM~^Ec7K>CyvkHY3aVek98_I6QrOWOvc#njp!yHNoNhKL`JXZbx~)XopwXrmZ*| zO5ICOB48{&kyVIA@%S0;a|b5}!GQc*ePa%?u&41PSi<2hRSGD0=Tw}MjbkPUsFG~daXJ-L)|B1-C z2HEN7>k-t`2r&#`E$-ZEDQG!BK)BWM2*p*JI}7VcsMD6CgjrCRVV=kOno{wRZCG1_ zMkrug(1%{o-fzZv9>E}`MkapskPG**@EUSS9etDn9~{F;xN*TCMZy&^p0r=AZZI{E zu_IpgWh0F;oDCC^M|0wf9zwo8n?Hn_A3hV!uO5ji8jzEIKDT;=T(m*iP(20H7D5l40I-USoTFiHb&U5st>7Q zd=?gaCeFgFH5-@{n;5YbwSEfv_7HvZB8H>rn`sb9sWTvCl`!F8(k)0>t0}3#n1!ms zO59t7RY(b{9D}2cAu=mh6zjCN(kIr^2y1m`0BaNMhXm~07-07RFauF!#uP^sbv+PO zg9~&h+Inangd0K>WeflFJ(gO8Pe`o?;h|R>aN?n+E1rhr9s=@Ag8X}ENA<@>93p83 zCEZ3z=OF1Juzxd|(a|6d{05DTx2&977T^mF_7BmKP>4u@2yUdS_I)Kwr}3%Y`aZnq z6X_`gkAvWO|Aa%rlOKa;Bj6EKP$0m-xswDGbDZ0w;QSGM0%MoJ;p1KP=kVeXZQh0D zx}dmY1vemyn---w=+3FT@be)?8YnJ}D9#CDp9HF#reB6_`$JSPlZP0^VAvr=t2!+{ z*m|WQte<)4k=!qaT*Wb1s$UA)8PPlKoP|$)c0ek1!1@Aoz_jBJk#rCxeT;a2alqTb~oBv~n<7$DjZtiuze3uOqXD?=HRNAXar10ZS04VPa=A_j~#^cmm@ zhp3!18lv(RQ8_5Nu6Obx2O&(=#H*fL$Gl2F$FxRXK#%_GdsvXuOOV{JF_+`SQ`{T2 zjcQ;y9x!tfk?Oyq>A!E>6vn{&H-p!=T!1a0yVjEKR)`0d558ydAP0Vq-Nb`q@v={v zw-9x1Jq2*ye5k23i;^ynYNT0}ZmATm+40aG79^DJ)*Fc-B&C2Y`@{Nn+!s zFUO-+0I^UG-itEp=y^>R{-I8faxS8c1y~vmurwTCY1okJj{N3eM8ALrT_Rs%AuYCw z(aSTtf44wamrwdSy@}Ze8bm*1`pDMDll0l8%oP1RdK>hviw6DNp^bY13;QnVGG+hk z5D=&ST}X!%{=kl8`a?a`l&T-ZoY}R6H2u{fR8v1Y;m*{gPB`tgSSQ%e8c-)Z12L;xj5g^pr4s%4hVD|!phG9ee+&`{yFi-F1?x2 zGA56FUiBw>_$cWkX>51NV$+Av+x~Xn-^@ukxb4*#4sJMYKsfl%X+IAKn>v64jTVOe z1^pXS66mYe#Xvu6V4$D&GeI9rpr1Jq&`Xj*{}yKx7?c+t80d2$PyHOqn~0DY`dyeD z`;GPcBY#R{x);SkFB}-?f6xDUpg;BnKwr&bVn4_G>pv!ezGO`d>y-rqqV@f!{yfm% z|1UuQfmYc4rFCmE=o=eips&pz5a^fwOwdmt(47Q&BHtlle5gtPisbA5HtGC>NxiXm zb*xEm53EVIK@$2oW8kvS(WEzM>^LW0kqb>7V2Z?Mk9wm6aaYQJRETaY>5R zA4l-m3@*piZfI;Ey>uX*C&D0_jYsD}hWCrfuXj zDVOEzA3&Il!A5Brwq6K}DvH8YKC(+i^bui;P#!v%=m9ms&SgwKRYf{2eJ*{A6BKJB z2o`)d=~H|7$l3Yph4i(*L-(HjNxgr;-($V+89AWdUq#65E_nA_=3AO9sD^ea zV3~uvHM4HGeg3&t1fWUte>F1$J_<)6<(jch&lU96k>>AkWwc6xyO37@0sow}SW0){ zqSl%*BlXV-uKv>F+53_(A6^y1{2vEKk26Vk`!nd#^&en)?q@q)^aUh?+alEYtapc)~eZQPi0FWvfV>Ca%Z7CMwzgi!>$3bKN!cA z)dZGPrz*?HR0aB>Rk+|Kv0z+?RpUaeTAK`d3ZG}J%bUmAQ{|Si%npxqJ-4fV{uXrYuwbCVqUSp2JSvqkMgX*B=|CRy}?DI6a!$ejTWmCAQ{^hq) z{@aniiscljsCx;-Aw|q?%Q6 zfw7%ljMnJ)C$$1Tol%4g1RuYH-c)}QwE(+v47->KyPbj6FZ7l}0j+yc9GLVBSVWZ@ za+x8ep%NcqM+uNDCeV*q^g>+A4m9B#;dLoK5+=7(S~bApn-XXjPm~h{X!O)GOb(=g zRLKMnWT%pD@La%D8+ZnpYM6>d+(0}Moju4GR**q><(*Bq4~@(xM}PW;9vDNl8a^;e zfS%OAWB8&3F2lWOiG&1HH=t{x64k&s@sv!SdKTWIm6X@8(roRno*Q5sEjj2Oa1 z6PFkKwMev0JdxZBrrt(RN?;7)yTSsKg%Zrpk@7WXEa<`;9_~Zxq6QV}h`+jfI{Tb4Fba z;7QnbSC|#|nRD;Wany>*$-u0!S7U7GXOJphY~xoRgF`%+DMCU|G1dY&&tpt}`1nI{ zKt9tpialwV<=-AL;fDEoUr3A;OoK6Qg;t3p`{LBv`_Ksew1YS+5upc|flqclp1Vl=w)CQNH@(+eTAk?e3Pwk9ByHBqm?fG9U%$SJA3#Rp!^ zWkhFlB2IB&-#4Gf+9IZSp3P5+x8-fo78)R!jCv)V=(y>jb2W(@c8C!}(;)qPU}{g` zDxXX4S22T%Ru~@r2thOTu1q6=*7m_coFgkNc&av%VUKZsKvi+YU6nJXYMKYCil-N&Dx5F~YS6n0oMv=ct_XOZJ)OX-EWTK0yD3>}*&ARU_Vmf+|?2yHhzS%SsOw;H~ zIcUi{841bc#=s11=>#q9pAk-IXUB3kGmhYL!k%I_dLOc1i_?x*ct?)!&fK1RKj#<7 ztu;3#7(g0v^Bu-n7Fe28bf(fVhkB)RUCu=X_e#l@zUK~aTfV1Xj?Ou zn!+dTW1-PZN$$3?Gd0#ZYSuL;5$utiwP&w`_gS($sV#c@U?i+}iPV(KtN-Woe1He* z$ED~E;WzLm7G!jUVa>7!@eZy7g}6Y!QjCjRg_OL#hhr^C6)*HK%N9{`z)u=p+)9D{ zsKE`tXgB*_b5>wkgZQC@K1g1o$T2?j_#!bQZ~aXV`*pMou{4dDyUtV_Mga9{KzpIh0O ztjuN?-e5qcGFwb(Xo5$XL9X=#8fgFt$JnJdAps62wDILBJ1(B!9W$_LJG~J9rrPn( zi$jeHfcW*46K=GuxCuT*1wo&TgMPH3q;WAeh7x^|Dk`}J9_2fuU4(zJ`QRDVNU&9& z&WAXZqhu#{vk_w^7^JTr#J;Kh4LK#Qn1o07ZEu%*%)6Zpl-yW?YHz@c!5zWzbXW|dnN$q6u9)J~03|V~&7%s0t50$N#%N3~d0h&yqC+)u1!p6d=QgI% za<{oPw)mw$4)Jjk3{uaD{)LwBz00XH2}#ZAgW*7EW8Z2*K&&dF2e*F{2&S^rK-8C< zfVvAm;?6Xpu`u*eGpeic(xWtyYO}7D?$rgFN4*~>0nh406|0!iQGysrL}b)%P1*ym z$lzj(+sarHuTp9ADvNWy%1paknT`{5k&=Eq$Pz~sg8*5CK&Y^2f8KHsK7LgjiH9Zm zHggOfCQfbIZxdGQIOone)j1`0*4{dwy_BR_@e=n}t$W1;kXz4o?M=jzNZ`v-GY^lJ|F2e%~oh@{$XBZ5jA5aJT zfC7tTLB9@P=;tF7gNh^JKv#)>p~|7$Wks9Abdov*I3tve_T%rrg-7a9eDtb1(S|Nm z2g?XEgHzOT{&LIMLKtKMf-8Z~v8ZT*EGyTcMJIshNo6Q{b^tiq@@^82I&MnBQQ<7= zNXAiJs_4i=<7gj5$G&g`6iuTZj1w*B?pDNifO{u`J2ZVIT@#um-M;~n<=)Y5L$K;t z;(=4mlTA3=G7?!r$Nl)0NKbAk-j1LgIBk zw_nudl;pP%OG&EU2^Q#8Hp$9+I55vu^f7w>tFL#Mz-yKLWwjYNV6(|p9a@y`3A)YU z+gvz!!M|q&!k=DkcKZK48b?WewBRB~tw@;bW18PpEQb>~bmF!b9+!ilmvYjBRdZm%Ct#*SrOx6%b^# zLh=N!PAe-(gLTXMmH!P7^C&w#%4T=Tb}29gG_0RU;%eXnq$>%}KihZli1pG#nGm!* z!7*lUi8g;|X>H~p-~RPW&d@&q>1M^uL1xNP*pW@+z7~3A-bq%C~AI#1+KD z_~5WX)teVtfQIlSr8RGaR3DzCvK|3?7-><2C+W-JQz zVnByfaPqu`?jmo>kqwAG3JCWCXieMwL&OPZ#EPS9T}_FWQWLB=PFz2T7JAf~t#0LC z-oSsQ>W`S`Ek^D;TJhJ`?9$+3bQa#yA3QGGo%LrGeSnhP1#NKD8-d8A(!!(MCI6~$ z7wzy}YaHnPE8vaRx~@P#j(MW!s+ylKC|)?ckn6*J>Q!vi{;4H@MZBs-svdk_;ONKD2yB*>Ku!u zU4+68gpa9BxfmpK3MwwzeDUehvL?4w_MTj@wTRXmA-B?|!Hp5iAa6)kS`l8M*3~-i z#5{8X!%-OBNtK0*y#=4BQ#a$#_&0Ezd!}+_2AJM9Ij{qC(<06wbxE#PSs7XbIC1(k z4t$5(_X6y9E$&3GAw*pDcv|zQSv!s}cwrLwV2dM1tTR?u)B_b~(+C(!BLF8|FBz%R zIc5?cszf~s>K-a9i#vhCyT|KS;~R|*TdD8jL1?}g&$I%`@F=y^SlWNYvjl1AY z*}R`>kQHxdn5zYmAP@)$Okkc#_*a3-EWKMxBU1TF@;@+!KP_dHy8J6u?szxNz}F4mJqsz*T!cTst(@m(5%5}|al+=W8)JJE++Iw2@mll||VOVgvC= z16N3Mu4!`6Rm@UiR_hx=Fc(r{){o|xOn%Szm>LmS zjHE)0GMXk6MAxWP=v}U*?L&19u|=|qI0q$7_hByI%&piW5gO2nX_1^$&@F-GOeC~D!O86Fz7Igu4ZRHp{_xVIj|X5Td)%n~(DM~$@5 zw;P3Vk1Xo8G6A7s2`DJ-x-ChRRy~an#;d<+jFKsNa^Iwe1;}r{Cd%%z0Ko(yM1TM1 zeM9ii%}EfX#34AL-w+&i2ndR?{PAC8su+S1M^l-a0vb1#Hy&k!S83HYE`V?NXl#zC zSXy!#UMAB_SB!?#mgSvMGd8UScAi)he%24nrX{!Qw5wv6eW;U&tv{F@jZ@)z!7P{z zE&f|+2*k#UIM0CM>cm`nWh`V6*?~DtF&OC_uACT1ud9+E*vBTE#)fISSgWbPO_VtZ zL#gm_MAnAJm`ON+FQj5^OhADI`AFHLTdRSbQ^ zbaD-9rnXXyMVv|p(->OpLuwlQT!cO8Ngt`~g#H%{W~~(ur2q9Avd}InRcWcog~X@1 zThi&f8{O<~8B3!Nyx7(5fp*X>B8=l?`hr0eCJY~@VvgOfJ@Z$prNZS@-jPR5*Lppk z8L=&PX&ndGBIDwYvYNaRas>QwdS|$vRl`Le6otYFOzqNqiwBu13K9j)q4M^2VkDT5 zvrZdKL)xu$Msgk)j?+$tkkF;vk49f-1BMAnG{~=YUgx}i`s+L?a+@{tuabjH8#+a3 zOQI_tO-zPZG-hqg5R4-aRZw>nCX~q}KD!(9@FXygk6`i@2XgCFhDX*_8fRabGtQ=}qE(1*K0F_gk<Gz6qI_dq(;(qN+yx%GApTT=)1Kc@cHJ%nAn2Go3bt26Sf|=}_0q2m7sOxcYKLvTi z*j%=}r~=3u@$xz@5Sx~!@ZI=yC17wiU?av9z7>zR@K?Bqn8LrnqkZ=dQ}}Y+oX78n z()%%Z{4@(CpNyN+_&pr3_zWJ)v!R_Rjm8u411|DhbyA{N|4N~`b)Ef~|5Mf6+h*F@K(yt>z!_S8u z85{OX=%rMB3H~#G@+e<=lpmqFbNgFlFUAi7l|r%!6e0m`^BuK?xD?_|Ckg?)6J95h z4v1dlWO%YtO+m{AKO(+~B3yfd7GL2;O4&;JTG*tOXbQI)F7%UwqEJN~-_sIk$4dgY zIdDA+q@4#rL>$XjdqO2Go3JPp5vx3E)E_9H01)Bzy-*~6hBGm-@9Dr>?ZKBZmi&#A za4&ZDJ1jJ&u^mF6BRTFPNaTlbS<+TIUFE>@_?^ z!`H<%Vjg7$RpKs5%fn8%u!q@_-L9YxF;(`Urbir1?fq5I(IeXGlssD!$;Rij9#8;o zn!I_Cl(n~s8|NV$;ZbivFw{L#^}B#cR=hazXIw7U2ZbJWE_BA%K-3+9S*#s;3uokA zx0>!&ue7=o0^W93K*Fm8f1d!t_HL7G>5^>%gySpi*sKg;uW}W(DwoT=*M=&vgVu_p zBuf5Waf2r~zuco-h)K2`(-=ypX%RD^=25=(lyp`;k5gCj@eaB|>?mx;PS>2v5MQOo1Xh2(vu1n zi%HUdLuaZYh)Y2${FPGWwa@)k{AB5G+qAnqj2!4{7vY$zTn{v>YSyF_8lN=Tk~a3Q zLyeg?Dl8>wV>us(@E3W9ao$Kyg^|k+*$EjOq?L5wfPhXGmY|x46mbUnz60=Sa!|Hu zx!}lXtkxk%z&~9bl~CeScuB`}Jp|rOlfR=22##p_N(^^uCZbszNl~xv2XF2|)3g;7 z7e?7jhyd~^&<|{fRO(j2e9}0A;a;}F>WXzzk6S*8iXN;S3YrB3BtrS9v+BK zlEPhcOm$)k;K;hNh^Q^%;L0lR^Ga1mA$4*d)|GT<>p}-%tj#$^mfAoFB}!GKwxk%1 zq?+k5=dIYt?Ws;rw9cssIVt`WO{0iE^-2ouOn6tZ;;lpb651zP_`6m~RV;?6t_I8< zi;x+p4dJ#Nx1^ELDULdP+~N6-RqGgxS_hWiW3a>xu0qio4ylNQ=R$!h)dxu&Y1(a* zRxjIxyNoSrV-v1&)1G{}=~Jtm@t&N~Vju?*i?`t$_Ve2)3HH3XYBv4A7Me#nNyh0w zh$oDN^Sw}=-DVf)FlkScG6El|ZSi>JDxc9B1E!9E z0Zi?b3QTAu=4!9#mwet~BM zIHLx#3XeoA(9%2;!Ng<0Ag2ZYa3CW$)Ic@n;}Bs2+c)3s!rb4Ahk0_*zI{!g?jxx{ z#=`;ahDlDsi!EW@L9>1bXKs>dAl?qtaj4HSglyLTfiGwUQ4g7jFo;`lT(;eV65a4q zZQ5gpDwp;eoQU)V#+=Wo5M`UZI=J~BMsvO#L-R0hQvcBGU8ODlWmg;zIVf;^TL$46 zT?+&gW&tsvJ}!#U>j18Ss4%|YQ3%FCSl16AD7Mn!Zu-RT&S;J=mLcPC3xkUtP=9R$ za+%DOac#Keeo@9@-d&=3l!cJM=5}J9UA4v_J&1nP*YxuSJ{BH{Zfthje%dnJAhVcjXo6XL`^w zktXc&s29k}rS6g+F<9s|jt@fyXz_vgx)5%i4K-8(3f*!8sf!nMcDN%F@pDnkCUmti z&_Q7Yz4knXW2buQ=R*)HxrD)xs`s&Xi{QmqBcqPspBRwe$tw0xh>RJ(0%N?81sxL3 zD&TgRbyKx)TAynTGTySQDM~Z7R+{X?PUz zzF|q76``lU;z|G{H9+bNdi25%={ZYQvRYL2tG=mhx3Z2Y@Yq&(Cjgg$)=|8dH zB;IkZ0p_D9Evg^suOt&ElUV=$2YooeVxpd$8N@NPc_@HGe6wS#K_bd`5eo6muLgoc zUn6DdSYJudrM9-fEgrpzlF6?&0(4uuw42tc?BCp^%_vV^1R<=i1+7 z)9yzlvj4|O#Rv?V308_bpS7!#l8Zw^Ib?MavJq+!vRVYmR;yM~KBd{QuQ{zU2S_}g)EsTnH;wQ4yfR~3>}B9m;C3no9J#2zA)%h>Oc)t9Io zBsEv$fb8)ixs+Udvc^6!V^EbRxB~bZM!5**EHPJ-fdImTHCv_86LQ;LH6*eSC#}|x{E1FBK*yw^s;l_NNc$8K5@eYcmSZUFo!|>HU!M``+ z)t{YE{bk*&xA#>2xl}!$IAsNCCCHvW07tSX81zb6d59RAvw_(um|^3!h)(^hZFq-` z(*|&+wQaaXtKTUWtu6o=fH|*pHqZw;cd8ayfP-~yzyS{WsM<*N0eb=!luG;aU2&FV z^nh5g2C;8oMT#iKrTQwWoA&g^fsezWnvUtJ3gMlsK1@?LYSdHC{vs0J6S0##6VvnZ z5%bhMkJ2neYpMR1R3?!8%%+&8Ocr6vBkgW=4Yl3bTt%Lm5GpFsG|( zn0p-;6;lYfOPVWT7n-^%Ri`|V5^UUijr3&bmDvngm8Z!HPgRhEWy}gZ2jft9O0L#$ zW_2k6pzS>Kiv*8NssRp|EEH)M+zY!imobk*Se${meHz3RDh%6NvN2gk4MUNT%J(%8 zuFO1H(zEtE{KNi@v86L3I_={~FO?Bf!@VkGW$G@Hm1%Sav%ZB&P3v4rIL^}P{(0QL zVN5rM8>Ky}pcS<@`=~opXuL(s5p!M7$-5w<`HU}keD^D_XeidFMmsc8Niu7U)*J_d zR+}?uwK*fU+El!4v`xroCGkGywq{oc#?=gP+_l9h3gha&^ToJ21KbB|Qn?VT`4Cp~ z+pwB%m$D~eCC|sBVT8HAW-c=$I<%++%`-PXw2TEZpzwyY;}C3uK@|&OXt{6CD@*{b zLpvV527$N3zi4)P1s1(n$Oh%v+VkijtjGwQQB^glqnxC2e5;`c?f>KMZQ!FSuD|gO z5Qs0!1~nSrS40iI25U8_=mrVig#?2NMy(pf7p&ICLKG|NLRiSn?Nv}?@g*9yRH|Yl zZ8W0MfSLfcO4Ta92dz5mY8$m;wATE;-!u2#-Ay(zOZ$6%&-338WbVA5IdkUB%sDf2 zs9S|(q06uqHo~8DJ^|Xk{kXl}tJGS!l2Mlb`Y&WEa(48azh5IDr9EFIP+)2W1P7xE z2XsvdPQwaQ!P?PSuvS3gp^CKW1#X_(iu46_Pl5{TF)paDe6E*4KXQPi06_%(p;Qrq zwirPR6n5UMwZc#q8d;lQprWg%lY$Yw4ys_?rP$8LPgD=$E!_CY>WB##Y$2NMwnlKq z&YOdM5stH2{xh7qAE$D}yiP$Ckgs<5dKy;f5K>tFW1RS3JIWJ?y^4~LRCal4){{}b zKgUTvTauq#Zj4V#0Kohocj>mC%mg(ZK^$Yia0)>$6`QdF%pyf;{Zkg%EI9~HPu?ix z5_Bi)v79bKTFOI0y};Xx$i^{AK?%#d$bsPb@2C!vECOaqLV|j{lkhG{=p62A`i(P) z1p?q46UEh|(IM|Y<8=r+1DzD>xgYJ}#}ZIvI*}0OU@ffzqRX)%F6&a~e>sgnDWj$c zXPyAWt7Dm(vC-KJE^%?51W&{e5gW% zVGYQgIu=lT&`Z{nH$SO(PO)I!TJWXkdRbx-Pdfyb?1$A7*lqjMf-6UFWR+mYX5^^f zy@tbXJ=q++PRKM&rm@cwA-P*aIoLX1DBNQ^btv}Yu@@83IqEV@zp@z>Ojy@J0(q48(bSGpn( zS9lhzC%#g>+bj4*1}_8d3)F@9j7(J_N{+gpQ4<+uP0U3Du-VT$`>7jh~qt@xD0+r`RVHVJ{LSWGfMxw=-8S-PMTS#2?`ZC_~)w}S-u5+U{ zB}YA*@C4OkOgF<#w=xlxukK{jv2GOK-iRIQ`fi|aAJ=zfa<&T@HPnroN#9p8%1I3v zAd?s(FE_~$M97g0i6*DH>23_{ImsdSL+~3rKPd#G2{W8gp#CX#$;*_wWY#hmB1%f4 zu3)A^lS7VX!Fwc!G$VUVmd`FY_cLUxW(OMNWeoXSa>$KZ+|THs`V=Ca*z<{K@_)<& zxPXAmj_QhTnFql1VP6KlrUFsUB3ilZ)_DYLSePgxN9~P}_#C9yAdIB0-t5H&8C#>?bYi8G{tQnH z$~1Rfg4wMA2A4yE2=?NENWjUMr_!CZOCk-(E9d-WGFhjMM=!B^d9S?$x8aD>^&e~W z6gbW4FCRMv>$u(LxGS3iWVW2l@h>$l`pq2a+fVxvz0$#@R>bM6F6qfTYoL^*RXwFX4M9`C$V?>r_280K4K7)DaLGmwl*~UWsj)x% zVgT&>KmIU*mXiibDKr~YQ*mOnf1Hr6gX*Ax(+Hh&lch%iPuvesVz1QO51bnH=c@<4 z`XLze6%;Z*(2jg{-XPK(H;6R54I<5#I5Ii_7NlJ-4I<4$gGjSv5NT!&BF%||NVDev zX|S4dI0lC@CK~^lA82;-#6R>1N3#pmW}Mp`2sO;=@g7-Dprn9P($7&+#+hG!UxRVv z4`%K)DR^89U__jWA?g(N;ok>_gd^uO9OWDcTBg~MlqSuQ184hG#I+0dzf!rgU6bw8 zxd5Zj_G!zO1Q(d#z{y=d=8nQtX^B((B3W7bf9K_McV|7Hr73=)m#io6T_j)=MW}%C zi`?>^-Pw9)4~i+bJXaNb!F5M9>|El`jcbAOM^ao*-Yu-F=K6dc6GU@&cVez#j6JPT z9f741!n0feP>^GpbEXHVBZif`ZHUK4my?(~yR>&|S~!sD$+K$ap+YwWEB%d=Vwju4 zHVV~aSgxe+$wFkgQnH|1aB}m{pC;%c%{h%UoAPfy>9r{z?H1RC=ES<+oAOWI zOLY5WCx`UQ8GSpR!k*&Up0H+e6`Jv&Q{~W^7Z7vvuOuCFzJ9c;#aQjQS&i-67 z>{IG$OZ+=ZnIufeMzAEi5M{GV=yexIY-kWGD0B+ShCJUHwrSUliydJ9@UA9_odsAN zrA-4YbdaJ?P_tl6Ug*95S}B#2Mx?D(%N8yF1gF-9Pn-e70@I98Pk?UlXwP_&H_vx* zM|rW@y3AQh+eS!zAdG^DH7eBGPE1YFaHk`GCmku#Rq7nQf8_#6q>ZcG>p|nN0V5BccBuZ!jcNLg^iBjV$*Sdm;si zo)or=QI@~^ZFU`rfE00R%%KRE9+IhnIDp7xt@`b!P7kI_1+-PE5^Qg!kJG2n$cij= zBz5T$ag_s%lfNI+e|11)0<8{8Df$(3e*0{{K=jHdIA%V<@4Ei;$#4^-n_H&2T)X$= zA&F#6u3J7p3xP?Hx%AK)kQ{&5kZtlf!2+j;X1=8d*JB?$WS$OPKvYPLMG*sF9pvo4 z$pdI`ob{lOdU4kEZ@L`P<*fTSa1G2^mwNed|LY^KCC+_}e9(20o^B}`0>PEm(`~{L zIH*Z6?fUn8$di~EW<5t7m2^gaaeHVSbZ9gXH=~LVEWpeH&fN@AB`lXhew>qRFtc zKYWP_xZ;91kJSZ{4Lim%*q5WyEt#B3a-b`wx-I@=sJ|Ma6U}iiBth9F1zJWBvvPs@ z)lL|4snrfN^O)$2JET~&LikZLU+ zj&=J#Z8``jG)Ui!a^~9~$`P42PIkD0BJ~g;CJi|ixgYv+9{VNHO(o7Hld=}A$!ZkI znpx7+UP2A=ZSO#nH5)mg$y&XK)@0#z1n0t>^YoCulfgD=l`zw*TTf5utwha&UUPNA zjp{Cl0lfJm4ZF9p!YvfO;&($hs|^>3hp#~vUpO#v6JO>EEO}X)k^Rm}QqwL=jjVM& z?^6#TTrif;D}WUHlPAV5b$t}R{t}D4INsIZ308R9{s!sI&pj{SH;z|&-ZwvV*)-Hv zn;@e#tk_{DLB6@K`%N>M#I3uFcV}1rg%u*XU7aiji~wq}P+ipz!TGKENsg zOa4)F0yyYF89-3d#NU-xIFoyVnftT6B6{-9LFRtghX0M%+^Tx=emp?BN0ZX|`%fp+ z=4`dj*|TD4)r)ziMG-l(pl2kQLRv^uamMt5udyHXlO71_`D>zOXTR@ZAPqsGt82y& zbEf}c=yPYX?Piy>d%avcoBlgdrH)6h{|fE&K;t`DUU$-?>LjmB)CF90q@Sn@8D;rT z5qPCLF;V|+i-x$5x-_*qVnV9g7geRjoWLq-(7qseqCp3Q7hWaGdh!l+D(~BUdQ~Eb zSp`J(U!$$D^|JxNqP{nb);q=Yb3900iHAhc3dahT;m(DULm$11&{e4JEnbSggWJlg=^V~i8F^z>1{2D>MOO9F z6vZBpiQpX+lct6RYnennGf*Xlxe?ElRAMtWji;6-;!amN6`8o#RiUPD@9jN`RNJl2 zQXb1+sFxuGqS*NKzmWI@3=I88-botzf6>5wMVWXS3>ro1XDD(21YLuAAV$CoPnQ4F zO`6C{of?2~?{@hnFt^0iFGqIu3avv3S|!#s_ul)ud*Ki(v=B0Jg?1)ZXvODa zg;tzfYM0=)XoxGcEZi3L)tv@;2d=h$4pv!e;R%fvd#7i zlD*@!QXqN(K5$ZsHHB^Ok{ZsJGI5zX8E0ms2pp`Q97GD-ijgaDIGml26bvrHYOa9! z&B+EX1r?N8(?a^%7@kvjY!2FOu0vcomX7Z~{}hu|aOpU`9POzf@Vsxz^IC)+>`I__ z4r>j^VJ+U5l*Z(il?QTXR0eX-slx4^F5K1W!~vj9cn}fs(FpSKKsG+P&cbI9fU#j% z)0JbHS)mTdA+6{z8-2U%W|E8c3&o%(g%OYZ1U> zBYg!W_|LmUGlB>r(+P~VJH@H*f)k$w@T>5mV}xP3^%^{h@)GK78rOjWd9E{1P|t2k zTPIfJY+2-*^ZD@K(O6`ann$Cn8d*buhOR)vI%;xGVAM2R=a^Z51Oi=whOR(^fF48w z0|_c*(anNui!1ekL(;8#Aj|e|{~VUuD}E}=?(d()_nG+ab)*a%4ZYa3!~(oJbeSNz z5Cw@W3_2LWxP$7)|Ey8H+ndg?bZe90SnM1;OB5=3+e4LH&CA7MZ#~~nT1-|&>Vc(t z6b~+k&_XXb0}h-&eLN*2Tidoa^h$uOm;CV%ZAfIz$G%&V#DRvIHp->CQ+mQYhr$z|{4iK!nOV}Mx zpx~9&2ovLiDV(0pGOG*>uLO)D42}XbX}ED$hKm+u)^$O{p3t(Eoa8zq+)+}_n-F2M ztfCCBn&9Ei*gq$NGw2N0TSGl5J+Np zRJ0&$qDdy2WSjr4T~CfkTK-va1AT_ zx^su}^wE&Ol3Osw>hk`5>d-7ug>CfId^6-1hw{MhFFE*dmp~94olVE~KaX@O(6q*9 zu3LmOGbN4x_Xtf*s$vW8$JLO)qN5~5o-HXR7C|~1SoC|K2zRTo=$aD3*&PEYY|`+{ zX&=*WgAZ>WuV)}GEW_as@Pc6PU}n>SN4=}?)wTN$6&LY^(#dXYQ zpITUIH}Fb*nYlyQJP8trsdzW_r2KFP3<@!e9TiY)d$W{``(~HsU=mu<%%^`il}1@J z9(BO;3{jSjPh2p{zI?}x{KO5ZGf_qMb=r%WuQ-H+BpW>6EOoa2`qjA`HY%2G`L>lbo;P51votwIGqTb zPIPc8-3v4jr$9rQIU6|jPyge~@ZoHST~C~b`M9KA&(iUU@tT*v!$y9B?#sc;^Tui~ zNZ$w{p+>$u4TAne6DOi1o0wM5-hiv|cpg|<9<3z2mf(^65rH&^#*xDTQO;O1O6-G= z7;tdSk6Z<#r@Cm|Tg9~vOo{@e9D7C^Y6`+DIV{P6Ig-T$#sUNr7cqbXTSPm>EmSP4 zuMcfOLt5K}?pCaagEdg|Ch<0Riqop#;3a(-pm6noMY3oYBk*DSG#G`b34AFRKESp+ z9Pk>lVziFg@yfw{H0JQ$yv zLeS7tURjrY#Gi&@<@i{XwV~(E`?a^??CB(%iLz<@u-PcM^=uWPjy9n(0ly6&2&m_3 z0^BkmMS*j*vUy>vp&L$_)yy`6@#ToKf^AfL48O)p6t%Bp8^+yVpsxAZDbC_DGok#&u zpnh!v>7?MSEIb9yUX%j(#J9MEl2~(5pCP zIjIZ7bK{7OZjGsOy%?Krecrh>#eS~o}t!xB@qS!_# zHV6CvXZ0#?+$O5yqHM5XEp1~qE3%%B?LQ|`sXBI50}|MR469xjBDs*9L|1CnZiZuI zck(aZsDO-kJ|8{h8~>P5h^`NwK7+6jPT$-r08uJH@a`OZ<$& z4xqJ&^Z>1GV=em1#~=Vum$GK3mDx=Kp-eTv^@U_-&Rl0_-!YtcuGgp(_9wH0^MXyO z`Ag68A_y$V5u{GWrBsL5?0O0M?e?entn3dktS>UG9S^7wSck2Rv_$abn|rF2-O)SF zutcc9#}q28?3Frt7dI=_hf9$abKjQ99)LaNAy67#4~rjUWmoquu|2}tFvms6zWBrA zi?}w;?l+s~(a}(==+N!>-Gw0ahwbp~l0$7La#>5s4%D(C6nOW{J;yVu+w=As@YJ7V zkHF^IuqNkT9GKr`^sG0)^u7ojywR|CgfwYw?iYb`{r^PLF9H?oduC!0tr3q--bwDV zLX9fx4OLdO8?d%&WB*uN);lg0YroLZeXxe%QxhJFA(;JL$wu7KOTyZTy-Vx|YnmQ3 zD@cc(IawMzl^%AsV53Ux#NhVAPT-6Uy%F>ZQY8>1wWT14A?na$h@f9>=m$ZkSlLy* zBPtH@kyIP7vOc%{RX+ZS+Z^T7zt0+}u? zo3paI=@*)cuN#=!|7wO2a?sjwTfXMh&i555;p$R(OpS^S+%s{$nebVLWbSu1c zPcq$sebRk4T_C>BOLq&>1=3y{HymLJ?IdDdte3oXd;TH`%>QdlcP)L+K!_8%1555J!O9~H{JNac@*{s-mZ z-4Jw#dT8Rd_X)Oq04Y*56jlP9Inb`gjLF&lgW|)MN zvZW9?Hgjy@s25jJDi3wEFP6!`!9jb3jD4HOoU;TQ@-6OMI7_fX-*)|=qObH2T9~O& z_RQUdY8bp7E*he8_2#a>@Wt_Tf#W@u+?Qg)kRk5H9icEns0B(RO!Q*Y=%<`A^x016 zw!k5iF52QkyMg&pZnc$l&D~i{BZ~$VXMELpcs*@9tO)0+;wr*J;CLY6FaXBZr!1nkW*!M zK8kPg^q@F)E*#9*`Sf)}gK+rMvb+13S>5u<6Wv$V7vNoo)YyB3_8$?C4VDEYmVK^f*2tbHj#+ymbFd z??)p90YrCJY=R&m`;yTjabr$qL8F@RS?4cYqa|){Fwk-&ZpR)B$WkS48WXn0M16ml zpu}wtWOgKH8WVjaXBrcBxh!1qOlG~tL{wt}P01_z6`PN%ns(mId*u_DC7H79m3XWIe25er1qpKd=iqdTlI{GV5<;LnK`w*%sj0Ew0u$}Qm_()Re{Log-t60 z{D#e2$j8FwAGjh5n@=u>Q&L;gNS}RLIr@+&z<4o0ziRpMgs)YCJVl@}zM~rA-C<*( z3EX3MCVm(C%35TDY;UPJt;<=6)zApXimt?8NY7EA6@6H~^YM)aH^D=xIakJza%mrT z(C}^2zDBOrAq#+y1S39MVB0zhY@>x8i671xb_B%mSE<>&9Dz_?G>X%@5)Ne5O>is$ z!i+K(Uf2W>X7nk1Q!ps2bJ@{Dtk%ZBQT8S{2}%xQoMzuQSu+H~{1V#$A||lp43KkO zUemsPSi=d30I@7aj4E2*i#6=WNXvgIBX_?ng*DKCtYPI%LzKrF?!{TiUaWzX2c*c8 ze$c4MsE!seup?Rshd<347K|lEY#}!@N^%2bk=(#bR?^oYgo)-t4tH8%xMm$h?V_yI z;{CIAemw&F=S2V;B{npH?vQUN-d|||ibrLIvI(h;GMndM`*1lwN!vJ6) zv`BEk4LEb))y>#(`SfNRdkfnnt0I0;Vii8?{NMahv(0hZ(v@nNyK*Ap-IGl z`(hG>tx3fH$2-NRNyH&@TX>LNwvwbSJ?lT<3(|+J=|fmP8mQ?*6T4Zj>BH9aQLpL4 z@7MV>efYn=Ln}NxbVrirVU8sN7NkF|R`OU^N_`8v3$w&>^j_FL2}gaRn?b9XmdeQ=%FK7?9v!x4 z&W0jnudp?(0#7Mdrcr@FbL_@7lgLH+apdZuRDLXG*@o@E?Rsy~hDZ2XPz&_9_Eq!3 z)?!UFZTV&PBkKW=`>r!!4x5Xqh6vj?E@dgE-GzL`?ThL2#g7Wx@&%|R9F;M`DF$^O znW&RWW2da!xV3RG{CcVRcU?~<0;w8VJX=>-t1DEjuy!$hfP(Xe`^uEvhA5C(1db}* zsRde^#}-p_hl=00&TA~y>rdxP_QeHo+^)s`g9V`SGV|#wM3mXTjle{rvnR+LNI|8mY)RFq(mM7<%fXEa8r{3#3en=pCGwOnEqH%4p z`|!o}Av+IxV>+Ykl}L+a;&RE^x|EJC5#@Bk$JGb=O6^`QkKiWLpw-M=Xh9<#EZYPQ zDG|PI1WvM=o5Wf1M>r6<1MVz&g9H3^$Kv*3WB6d&!GNULTwA<0ma|sj9M0rW@zyp# z&c~1OH7pRN)d6fHNSRyPvUuemI|vwOJZ^dp45(V$g~v}TtloQ)Y3Cye@IaITej-LP zOo(3$Mjqm=o|-M+cZCCwP776kz7lm%)SEUR(qp4Ctw<#Nkh+74jhvpHaKI2Mg_%WO zaT~G{#Z@0?2?The7JbFqA?hP6Ry|?IAu4n)xEH$#j6%BUAaqmg3vBvPVlFDgX^6?W z07^K8(-V3MtKN6q*7(o6!Zp)E(1-U)Ja=PcF9y&&;f^h1q{1E zLe831t^v+{>Zv_L9LWqvb2a%!HTep8K}jMMzEE>nZ1{9nr6J~pLd;D=y=$L%3il;E zuOv7ZE?NrnV&?&Adi(|!bN~WuFIj=p5t!{|60)Rn_zF3&EtwzCiX3*1t&`|oXV`jL zXE=t|Zx@Y}b@dJ^_Y{ux>Rs_%FS76liHh?T-wV%yN1sE%=30y}99=;K#+e>Z(C39X z4&Fzel^AJX)72x)a7Wk~7-0rS*fhjk9wS3B?2?t>v2FMi-H>x*NU!+Y7X(q8Oq_6? zcsV4{ijL+l5*tD^B@IbDNUDcqHJ(_3^@_eD4+i_7hsU6Ib7ABqavh-gC`O(;)?NnB zP#dOUbgjo11aufS$cu3dORnx1tLfsy@_|LE^vKCT(_>+-M~^kn2tDdC)jvHt@%&v%&Y!U;qlC~c8(j%7tE z4|rwm_dK#JHIg{lY5^(vwdANY!8)YW!fWa+ZU-9HR180%C4A=NQ?rDrL44}bGN)jY zHS16qcZ78|dk$uHnLvdc03zfCyWdA`2rMY}Me zyO2bNbr6T4L3?D0xgI5zV_Ht4yr!YG3u}?Eb|Kfxct5*^&sabY}eEcMH1!t^DI26QQ*IRS~03cJ_)0qg7 zXGHB*-Ta26h<638vPxGUoC((Pv|Cfz_^$%d`v8L5+g24AXR8mDg0uI$W;`*k__t?V zxu^AnF>bx_#Lv$8(`$#8$7dPiHX7Tl3oNRWoHmm)?e&u$*ga>5TNX;%6^~WCcKTa~ zjM8bV4@M14hvS7gr8qi<;h=z9wfB^-#9Tm>zQBUJQ6j_(M0Dt}EO0#1VC*8&Djzeo zo7uWV7ep1hs~t;+JrV5HP$ee7Yp3tZu%fy9)nz~P8&K2+ymPGH+2X7QNAJef9G;Z@ zI=)@8ya8W=(@D63V}6TUr7D`uN5oqR72xS28JNx8bgZa2*lFoHnFMnx@r^j0GOFma zOR$ZEp4`9tC;z~?6uduY`?GJx8r7~R8RFG_$HHSeyM}fIMW`#reAR=cCBLy4s|8w6 z2T2t*E~gL2p5Wu$Kuqb=PmH$wuiULqKmF*THRy2w$zQ}lE~H_N4)t}&b{lxa>(_PJ z_4i}tybC=W)T5mat`6K8)#ql9TJ{v6@O6Z8&%ff*S)oN+15w6sV4|#2>-x>5*2SG* z(b$4J!+u(qGwiKt-KGo}Yua~uIcC@mNrUk{J@oexpkar!C-2$^W#|{7?;VnN=vY(d zC+daQKEucps_+s?DK1rDcTJ>}nO|WDhd8m=)s-Iccq|K}&l1okX@O}Vx)AM0Cy@$E z&0~Ra;e;j@8G1q%2?*$byaG!Nb4qZMIT2R&nkl%)GNKC+Af8IWN^=fi0NN|y*Lic{YxPD2x%#G~b8Tyt;^5LGf0h_a2c znA~WZa>v#;F>b8gC{A=Kw|*EfXf{T$AtvL5LVM$eZz>ao4m0==i3Y?m){X2K3^Kr~ z8V*l~ZcEUOrCvU}%32j<4%{fB<1TJKgJK^v?j!dP%au98- zUAP=+u$|is_|?v@-G+Bc-mAurXRk4wbw!vP`vS+u(L~mS3M1V77D#ERP|7ZFYLcVc zsIZbroYT`z(Kqr+p)BZKq_~3SdiFsex&hFk^c-nbb0M&baZn_V+^B%u$AHh(ft1TP zyUC26j&DFjjsu9K@&XOYD0?>JM#*V!950>+A6mjDpsrf&tD+!lR=Asq#2N-IU)V&(yr6Q~hG1%`Q{6_dUL#8Fn@=}fu(8d*j4plrVmjmoE^GYtn3 zd*+gXbfz96WLPRS6&Dn4l7_lCmJyV;Z^qUa$_Ns@0c9&3LC$8P*nn8Awm4i{JO!4c zp^4+X5E~&WvPWi%MuD0Xw2B?sgwHzv19xeS0!_Vm8ijX862&Q3AAU&2kL*A(H43fB zJg{(IqqqzxuGc8u9>~@xc9gMP7(8?Z@hWSC4K?!VC}Vk(!M`;+7-j5^r^vMhHWe)< z>Ojb%P3o-l025!7c-B zL>FM}v3Sat=zw7{aI9Y0=*txF6>@g*?p=h$*R020v!0`(l^m>NWr9IU8LVb>HaP;u ztc=p=Jov_KSc5$<8rNlf{k|MlmjzNFQcFhlB(C1_cLO+CU`e&+T{6@mLS`X21-wsP zcI_Q{+4!yc?d#4`XcE(!pT|eY;+<(>@v~NE$7inID}L(g9plqh=f|h4 z&WTT6y?cD(>h0nutlm3*>}r4f=+!&Lk6ay$AHI5r_`$1pjvu%>H$HmxsQ5mscZ=__ zdU$--)p_xqR*#5}T)k_2`_+N?@YVaohpZksv33{q{<^a9uLq*DfIc*^7Hx{}tferx zat9xOY=&9isk@_!h{3T@E)cLAr(^GOm0=$RJ85!T6HbT>!IT@ySZ9~Rx26i^$QGF0 z7g*ZHuKM-5oOQLLX8@*^Q`xw;kY$t9)w-F^_|F52t^xZlwXei(My?qf);J-B&4I{y z!q}TTNq@OyX|hQDYG-G&DGS%ePhYE&mhA-PKpaG`V>eF+t(P7(y_L%H7ZPrHGh%P@z~A% z2?=mes5l3I!uj|!y#RmCEHYqYJTR)FFpw}_P->r#i)|}3qnQB{j^6}o4B~aXfDu?c zlODZpo>VssNFEjjq@2Y|t`of#Pp{(ieur zgb6fM!ofmtwm7X-5?DVE4i@bZaqLA5#I-3nxTlUb;8ynZAb16NEjUiDIQ2o|*a|~t zWEb)?`KgA$qMvI*tG5 zdP}I?IIe;G%-x_^dSF>Huz-J#1ObzYRLj&;S*CD4&EC+_XLFgwuFz-9v6dv?GtAO; zXz{RhVk5eNToUWlSUKJtbHwbxr8LxpB~Fb;?_hy+U@8vNtqgj#`0FtttimP=jX8MD zJB=n7WbcLJ_0dU)tBsz7zrYgrkm~zif%a;It6?*ZWtx2xchNkV3y6F2KDu)a59UWt zmYkFEw>?^dzbrsd5~`5f{`55ysng zA+V^rPy7;`s5u82^-78{5fVuhsv{^C^>V1T*wAYsi0PRYmUF}A@ngc~PsZT7BrLO) z;i?jjcAY*ZsF%mZ7=twfEZxf(XECq5C|W+4}dUaSV<2M0rd6i&nHnab~aLUkvU zT36*@KApQ0Q2CwB4iVwtnRl%5g(6?$){6{rfX4YJEJKIgg(oYxW9Kx)*DJ7EOzm;0 z)~+X-vD%gHJ8i{jzR;qc(!eBPJWqlqcs;FwNddd&LaWGyKoR(>Y1WF)m2YQ9NVbGg zCF`ABxrPp3kb}VK^T48U7@%m(5z-ik1bXsnZ(rk!?J8rJtdZAwCS3Uxu=TCFD2OWt zhk&bUuF0rl5rxsU83n7!jNXw<*Yc+0^!behms4gF<2t>VQrLyi$OG+Yz820W(mBx+w=? zQG}sOSWlUWd*=|x+1byl4%8}~-oGEdvC7$aDXvHy#BA&LN49Cm)nBkvd=|Mh;0+9YBhEHSot101! zFnsGl2!9IUx^VpA$B^@sRg#$Mm?oy>KrDR!%Xx7Eu2}X zPzG&MnT$hMT&MbqJ3^!o0G7QD0Jx~S@i(s#RqxFPst!T4Y8Z|3_D6YW!MFR$m5+7k z4Sh+ak$4=gBj3@HE4;`WM#jK6T$Gvh^N42K|0p^_O=62Tri;Fr(H|a&=!Xyu0B^r# z5QK!a;U?+D`t?#v-W=poBlkfu7or%!YbqzL6;2BIt11|dR6JQIh-9iGFdS;5hs)o? z@E3GX(S-UQV%pd)1WQYjKs)6?Fq&wH6Ai(^WL-oD=cVVPDQB@M6m$$O&rs(1=m6w- z7j-22{ z{)v&}bYzZ>40@4|Fme|i8Q)s~8tO$ZV`Tf-{v~wA$)m#2Yb>tQ=@(f0{ zBBvvu{zBCcL&!tAtc5!H9bWPRCcjZfUZf+h^CEXZWPC0_n5tuDc`=`ZX~oY%%s3qr z_F`UVOvsZQ_;YoFkeA>wCfGNT;2(QQ+xPVn)FVM)2e53B3N-S8w=@@*3cP1yQj}f# z0mYGhi!R|fcy#QseLf)rw_fWQ~vzDelc$F z1g2LEs_n>sZ)47p+mcfbZ7e@D<2o&yn_4+S)z8_fEH!q@8uX1m@0L;Dc*CkwrZl?^ zRjH^9t7Zwxs5ESOnSa##S7tbZ(3wlIom8)H$vCH_$Gv59ZdT{O%oFw&8H4VeP!om# zEa#@2P{T@%97#QExLC%zHwDQcT5T-{hJj^72q?LJmb8!&Dkz$@W z4FzcdTb{8v*w0Vq=+Y9n<7PQTtdOsM_E{4%Eq>V8{76MH@1B_!=Mum)XcgD77qAW zQ>d<$)rM%B9nyU*`C4+)-+Mxlj{#FFg_{74(#^;RSgljQ*@uB-l6FAIWY=FSvfsKW z>#UU{su2OhH}@EDh1p~Rf9b@DOp(ccbB%+|c?j>xJ9Tl|WpO6m=L+Ve_&eO|#<+98Uc|#f_2KCGJp4c%62CND}P-=FP7ACOyHa3jEkM$MH zX*a_@r?S+(sL3$jFzgv2^?X$?xGU#gA@!7+AL9l(&Nh}FC(jC2A7XS+l#W7+g?x%d zoQhFQK&URb@b8bK16Os!JJlYBW0E^Qk56A|R;;*%*-Fj#)qQVLbBJgBT73XEb`?ko z0J8)tFA#*G%oqnv(3^EKrzMDTdkAOqm;~29@^lwa;mFMD$NSxqMGxiC_deH z<)!E*w0fMHKjBi}lN5{__Kz38v%wdp%#pvyGdNg^x|&HcWhi|NPc3;Fg8Ri}h`zP~A z%+NroKQ=p^o+bI)!!_+7qT;%dwL1Z1vycBjoTf42rHyE?kFniio!@2q6W{vQ{GLI z1p2pX8^%$D9ut_UHg)rYFNUmcG;J z8$WJCJO|j50jeGa(Zmnb8V_PkH8LO%X|nYQ##0OoHW8fuWvRq|Br3p#%F{5s0VWUG zymBDRIPTv2-#u7|h(9BCZkJW6Cy_bLR5rNEWgMwFuzS5t^;@K52?E+@9gW+E_((lO_Pi&e>me^ifxmq)%km-Lu%hQ zdkj9yW61;2bB{Lo430e=lagVs=e&eNZkUtO&r3S4r+ju@_P;RPC9gc8^T~@>V*H*y zCYQAZwQ&wSq4NrY+0E{w;M%@Y1>fu`H#$mWf()Cl8|I7F#2_ZfT?0#qQH+B3igCzl z*02Re)_U9+wkKS^p~EK^KVth!f(b`%?C`~Q(%(7weliazhz-{P8<9GGG_sw8kJxV! zgYTzV#3-if)B%f`>UzZN$&YG$yvih;nnb;VfB<98#>WYa2{4AN3<2+~M*!Dn&dsU` zE14AcWhT79qE*Bw|?kEA#{i;DnjaI!$m(P9wa>P+-K2{TB&Xm#(S{T<{Rg~8WTZKnaL9i^_TL@;G{8CrKo8(0`4i} z>4r&TD)9Y4%ikrkoM0GFV3!4W0T7~2ocgjPE5i5okLzTGWCjIH5#(a1l4HuS^HxPg zVLk#misg74$WG;a_bjnJRol&ur6srK1Q0^#1xS=c=#9Wf5}^}4#VvwV5PJEGB=l~C zfzYRdn5Q;XeJ0&b*Np=@KDy`qi(O3{2=n#7Tk@n$VvPp|1o-SMV0M@Gm*~C4VBJ z`;Y^Ke!)*c=sEZXpg?>0*Vp$nvTcELqL=u9Sr&R`I_WV3BLX$YOc z$%MWXeh@l?lL%cZvT8L-mNHV^b(au2)AuHHrmhv^&YGhWSqVblFdf7_#wUc{%J0oR zj}O4nSy+3-hrfd&^fZuuapxcjop~cI(j`LZ^egkm{s|p>r%LXPDzP`}7VDq>632NTE3Bq=EZ-An#O&PmpdAm2Rpcj0aj}|12LUxu%rkfH*h1VUGOry0( zMH(HzsBl-U%WIh!Pl*H#J9~Kr>F>X4RQQ-XNMxS9TyM?5TGJX8o^%0(F&+Qr@bMS% z`&xWE%LQ*!p%-@BXjJ$&w6&I z6=tn38uY9+TJNs0U||H;Vk_68zi~4Z5&?vGi!es37hX@yRlT;=D^>6&hbJOWFXdbT zL}D(`KWu|=^x?u4x4{PC@u!mEXd8r-?ETN!AY{n{*dUy9m^7NK3dx$=WH2(x!g*dY9CC$O5v2H`$nl6`Ct?tmN6y)NQwoDRkYVH~1z z52qQ}Al!s}&INvr(>^b$Yn-OHLHOsB^j&?(uc~ljpsx+WTkn8cGhu^ph4wgYY(3vV-QF zH@4M<5zt2hY@gYuMDqV+aN?U*`tBTU&(bv zM~)AiI9VTvKER+fMhTBUO|QD{IuA#6EqQjj)T&vJ)X+%0bemVbdiePN+#2DGX=e}! z_JwcmPoai-8fJ8p3=QoDAfOuLxjI}zl^(GCcSxF^yl>AXgjO3HV%;JTS~Z&psAX+t zpk32R2l^W*V_ZXsYD*dFw6wLwUUmrI9toD_*&*CX8k>n7!phhG2|Cb5FC9CC``mFV z491;(c0UH=V2AL;-f9Aq?v1J_h5UYC7{Z_J#nMVo~oiFp`UmB&&xw@(x4{ z#tz}XZ%!D&IplVHJBYGsiAu)~;dVE3;hJoR@aoI8rM(;A@~z4N>=0g#BndNnoRiqS zz3dP^-?1yOc0liTBw26Vu6JB2);>8?P|yc!kO2K_^API#=Kgg=2%bJuU4Jo)5PdcGB1(oQhNl1W9cv2x5r(O*;`ZtT)Im zf?$VGRrDf)Bm}_@;RYR@4nccp1l{>65#-t-yuEjEX|U6Vu|w!e|8qNp&pp2@P_<2V z2zRRc@7p1~my7QIlXeJ)mtd#+;Z-?+e zMsLUTyHjxKZ6Ekv0E!;L=m(iQ)ehl3tny`szmH*${*+fvZ2uC5|B~Sw5sm_Odmox_ z=*ACsukE&eh{#ns^4l#ES?5JIGLj-w+Q4L1Y>`gv~l#iI?tdrt52m(AMep z_R{@`>H69syhx|}>M$4L9gr^lX)z<69l{|G;hc|$M{dKm-NYGlL+QXd`v2c{2-~5= z-BvWY%LBesat~~QB`puSXZ{b^Aq=nG^*`v+e)#o2+y0Y6`I3j6^59u~&Hw*{@>;+N z_`^C-URqCF3JlHvY@55Of765;paR_1&ew1Bs1p|b$EFG2MT`GiH3a03@T!8Bd)g;vm3{#Tq!2R zHnZW?>Njn7@FmCY;QhOM`%J^EFGs4(?G7IIrYpVEb_Z+zkSx7RwmWzxV$@rQc*ez8 zpJ#XQct$?;{e9Z*ppN>4sJ8OLsshl$B<5r8x2~4rbyO`Z~l|3lXW` z(fkmHEgiYrru1?*j(KcRi)48Q*}l!f@v2Z4#KPL{;KscuDGKLcZdT*u(|JR)I0#i_ z-cjBgn&d`(?GEw*G4)XQeP~1jTbW{a@R-#iWn)eeR+-VI_^k7{gwxm^9K9DYk@DQ7 z#)PdgA*L15VS>+H4nbx|TBb44M_Q&aVONS|i*^S!CZZY>x!57J?aAhg-NAPY<JN(Fd>QZB~x7|UuQtkI$Dki{s*kr7b3n_@#uQOrpm$#U5WgEdqm>7pQ^2D+8 z;iR=Y$avTtWIUe5Vy5192U$tRb_bigkW0>B)>ohh)!r{q!>L1g!j3<@1>ar`oQ{C~ zlVSO6NozO3$c_4P;Ea_gGU3bBz7X0BUr_tXwU75-k+M?zLfY4c{s3Ca;R6OXv3IN$ z1f$g4qU?LYk-T{eAOxZp0U$KKkcAY;8-sxYc~Ln~Adm3{Mm4lyDB!`|CUNXWapcMB z1c}0+Al`^XjA3O@dCeX0RVceI@4?^q8SpeS2oi`OMtyQnuK|B7BQ5_dM*ivBlmWl5 zMCBQX@&^2id$5U93URVERBBB$AR8t!Q{c{+AjcOV~qzkbocnR}q0e?S?2Do$? z4ImSWva_$qr({1$N-^wg^Dyy|V8D``HsolZfatsuiL2o?kZ{1fqQnWyGVpS{_6blh z&PkuXhYd)JBrf|sosXo2`ZgRY^%?L%O~8TQ*P37_kfuKUGI`L#n&2;_--H@bhfr#P zenK3Cj^YL+z_HSLJnYDZ2FA+6V1cm>0>1e#V{JT$EhSlH>}Z_a2LX;$cJ3=A22T9k&o~oWZ*VrK=PR<!6spJE8#tuY3`bhYekREvcYy^TSR?z{G=rK$J1gr{9s?W6ImQO1 zU~O!W1@IYHI3P=wnrdvYnV1sOg1D{+;Wg~gwt>o0Z3?!bkqMiE@6e{;49BKm8Eguc zRHnNX6SmyARU~J*wE1qaR%R^c2(tYL=6VY<+~><-s!o`CgH6FGfdEYe%k1X$_;fB5 zek~Bn-MldF{j(HwEAkb$i+u^PDd<|7knq4`;&qBao$CT#om2ulW!2|{iXBA4rr=gx z4-cl%reJh7K2Tw;u5c63fk65YxCwEdO~Lgf2eV$GXI1yTkNaT0Po679#g`^mjCWZJ z0Ct(xnlGiuqp5C3;(>pbLsf#=US_s(;wiINMBt#Ebo9GrWwyY;Iy5ZO3RLy?kzN}y zbO~-xrvp{kjuK!{AFD_LZ(|})Pp1o>QzHd=OFL`a4u>VyMoN? z;s`}z?+d$vLvaxk;C3QT+Z80SCF}}zVmLW=1(TrCCiDifD|iV?!7AW$^$Q#aPqr&~ zCBT88*Fb#2uApw!=jzFiu}ksn3N`{J$F5)#KEajYC#~|AZ1>rJ<^Yu z<8Vlr7nhNo3vO{%uqeD9?L)3fmOTs(WbPbyv32;1EA*Zr!cpMt=?oE))xnP7FxL>_ zB$Od`1tCl8#}Hu=VT2(~ESNjKchC3V*9rQLy#P#Oy?hd@$Nt?JHFox- z`|w_)Hh%Hz>3E;O;TYxsw%!u72sqX6)J#8ckIuk?r_kC`Q=vuc} zGJh=yqFzp=23&_fi_O7jFsS*9#J)ug^oAiE4HPq=3G0E|Y;%yHiOoT_FtF%Fv`NhX ziek^4bPl^ve0V-s@?CRBwWP5`h)u)TSK@wQ4Yj2SB zg*>Fjq-6jKs{{{7BD~%v2W7P$ldYcJD!V3IL_!Gwh50M{O$^>`rFNqQh~p3Pr4HB{ zd%^!@dqu%!Z^;$1)oi!fHVbHfx`9%P$-M zaUi-JRpEh^&4>6-LFaX8UAkjh@KF@tm=?V7C=kyEnigDmrL(jw zVLSUbEqHJ}-exgd2@yE#CKhEjZ3b53+S_>n`JEJV+--* zHJ)|B2lm5C)vhPS{eX2rQme}S<3IW23%{|ZlI=g#Or&GS$X1PXJ)WPyGC}IK{PPdz zVCl(w`&gJ2e99YprXUq!F^UHG!!tYhLN|+9!4rOjg)<*|!G7edDhE$TV37{9f@^|( z%nC9FV=0Idv{}I`I$;Aq!L%T*AIWeKdxA2+X-`mdpN6E7=GYT_@i0BK+j{a20l=VK z*B+=tvbtOANt)`~i+Oj)r3IZ(W)hbcKr84tW+^j2#>|;3gAIT2cQhqG_17K4+*>2sl<)8=nl=g+-Lo+B}bVe6&%155C!|fEOSxKA& zQ?v^{2P`>f??4v)4&f-4&F2$G;?%Dfr(v_M%g35W*}3A>2gPY9gp+JTu%r4obT;K_ z=CtmxJf{OxM(_?qmv!!UXj+gw6=#FF{Vi@UfnfyQ>exbr^}-9@^AqB!XZzGWPbZ;B zssJ5zS(Ce+*`uHG6Q=nf3wM@b)%i5dC!8yBuCdJgh>vN=KAi-c1SsX|$Ni1G5UAiU z0_vNML?i*XHDYT|Pb15b4E@nYN_^zv+k9o?KdK&8W*+3tG-9V6bxFtB)w7>~eN*3; zTpN3oAqZ?`{=Vd!7M@1^pc9sbc^_NjK>IHXfAv|?vk0hm!p)ov)nLLsq}b-;NH zIFJwjYb$&-kkjthA9qRoG?sL8x_M8<3`}@%0bL_1TKoi;^-J> zDU3SD?1?H~e;(nlq=fIt@E(Tq5gDY9aFp8qxA#E!#|*zeCHy&t-^6eW;TlxJtER3% z*wtQGCBu$k*ery>5DXA2CryQ&s(=3mF=3`AcSY++T@)&q{o0qf0Fb)&B@Uk`&t=>& z94$VCHBD$kdAvCd(C=uK^F{9isoK6oi0F7*M_#8RpZ6m7XC&V>!)(@~+g<@gs`zsV z7ty*G9%A?{48Mu#Av#2(Fd`d~4VYUlPIM^?G3#q}S@Vgndzk0!LFX};=Md&O2zg+- zff5)rZ0%FhuvDf@-;-ptEHd0wAk%_crONUBXq(Wyo9TmuoN+$Jt=Lv z$cwp!F-Ici6&*9xi@Am|Tsb_UW5#(g=OKnx6J)6td+jUUndOs9eBq{eM)B!=u8qn( z)`3OU8$7+J^e33c0Goy$e@X9cvv}i)@_LoLd3a5N7iRh#x&Zv5DHz~-o znxMt@`a3Z;)Qv%vp*{XBJozw#-6~VtXle=$ zfTF<69;5`Bh*0C<&56el28n3c*Z{cNI6%_+21qX;w$12rE^JI&mN~F@hh9OTtadU% zi~7^`KWrSJibLh*H>jI&ww^-vhMk=YOSl>Kyk3}DvP{E7%0*i*;{a@g7zbd_<0vHc zr0UYwxteI@9u|yjC7n##3A{-j%Vr7MIDjm%Gb_Yq9(Dg~nRln7OX4;yV;X8>rEgSZ z{OqQ)wX42p8^QHn;g;h!4_up;Rb_@ijfUh`xNEVkQlCASc2sUt+2O=1+_~gc|M=y9 z5AJ?m;Z9lMF8Fl4h!7qg6XCiRx0m7dj={c)F}s<9jK?NcVh!#42SoAu8BuIja*&dT zA%=|!+j!)cFZJf|+{2_Xxna9>Oa<~%b;W=Rs2qY!P#(w~9>|@R>zUcaeY&tMm+C}I zgrfzM@cN?dZ~nVi6;F4t2yL!fQdCHdNOpa4vWzP!PtKhdjKh;tlv#MPm~R;yOgkL_ z6#xar?fAwihxubd@k3K0*p}%M0Z6+)OKK2HGMKSEOQaYms*$^TGrAIv9C2vUehR7T zvg7+CjyR0?iHH=zSA6U_EZ5-#7Cq~S$8KgZeNH>vho@G{&`0I009_Kcjwx;*j^uU( zzEblVh=_2H?fQIca{dH#{)uz8w~ef>;=rSUxq!bsJfA;AxOX3S^y{V4f3_-B7gPq0FFTr#^g%VzERJ%e+QY~iGkdc zbD-~ULL@%(@!2LNe6HG%Aoe=x(!#&0T$IZ8)n&i6cjA=8*Jn8**0lg9Y(8h0MRnP0 zm;k5RD1&{?P4Gt~C^duVj1Rtk5+E8m?RdLf4ympy83(cH{JVL0VeYv&xN!1K&cTIl z@W8$Y7YGIpE?jxzi4fWfP!tX#&})cXhj7}0r@@`xvW|(DhWi{dAcE2yGa%l5>XLV# z0Mv5K;3zCb*nhw_JKZpkak?LGk_Q&;2t5YXlOxuNdh%R3SrESp#|i|s1@cM*1e695 zJxZQ9K<9{n(m7IsQWoB!|RLPp`9_ z@1#O3&c047;)|HpP{V?d*~sbH36Hkow(iU#FY|`1u7tvKUsx(c4WhavG=W8j;@MAi z$6BZ^N7L2-E}x>%e4}GBPQ3sVcAEo(ms3XuT9Ii}O9*Qu6_ z5((E7B+N)ykX6ri02yot4`{%_36*kjR-F#VBQmfOj)JP6K{hSYA~Y4UUz`9q9!&uy zuoEHICt5++q)cFfr}4mgd~h7K9yR9Vy+zcNbBU9r?n@|e!{)1E0GF@Rhxm%Ufj;uF zOg)sz=|kvel291zJY+bh1Y%s=Vi-oAc25Zq68<^_G=Aw*0`pO~b4q|ovutWZQuX?0H4SqZI+tizbVWHBFjhEZlEw;+M*X*nEYw>F|LlE6n5od8mO#`TLl?~ZtIlJ^49+wldhqaM_A$6z)Q`WdYH zp54i`Kcv3bB;%>?D+x`{6OQ_xzQ6)P0{S8TsJ_>1thG&JwGojCtcv}3s_(yKtizQp zM}1!pkR0{>id{e>qP~B2y0d1wma!%-ylsu=hynPLaa(Dk#rzhpk*dq9sl9I|KmcX7 zIL%dbaOa2)%s5J5F}1on8Q+!CDT{G%LLXx`@#XiO<*DvJ%@WnU^q0B4Bl(AYn~sS= zGz@j|aZbF^ZrkijHRD!M-SZpkmV96Yb%-JwD{%T?Y93%{32%;o=U+Qg%ZvBh6NBMN zS9R|o6x*CaV?t6TFRQHSl!G+*x)&0etNveAp zzSFw(yfn$W0@~f{LWy4U?;{}MMfRS&Yxe+@n$)1hltJ?5WUZi=4zEti=k~TU#f8oH zoM{Y@kUYE^JhsAPFw>!r7mnag+R(>e;OgUL(h+?;ISusjlgyuvG3@FVYTlPMU@7FV z01Oy1#MqzVCY0<;1wqlxx_=_X1{VFqja!*?8pc&n;+mz?EO(X3u7FyMHA`nqGFNdz zNBPp@xwcli*SE0z+y+s)kBSoMSj?7-Q(q}gLlvA$ua~_6L_Jy+(dfc{4M2~xE>`6zDdkOSsu_hs#?6-Cq9Bj`bojRAWUCoTnX2tgJ zPq1El0O9AQgzv!c?-_nF!y(ZVHV|DZPIE0C?BSVeGgIw1K&qRV>K9D)FW@UlIehpM zgnf)Khau}IZtB#|jCuiII821Pgo9`u@f(W~vzi4tI%3k{z&hd+0D!9_-hPbeh|gBQ zrs#-wzYqGui(HI&^xP;7ZC$P#`V$~u{o}VtdE5`AJd!D+OgSoHY6wct(EyvuNSS$J zW4@vIa6n}w5#A2r9B#i71{_lqP97E1XC{eimf6T`?v{d_on>p6G|g@T`qYh&iB>}r zm^vo2Dr|0z`%@u_ctJ&8qH;sNGn19#+$UkY6)p-nw7#d(nUBZceww&#W`GSirJ1y@(j_ z;*N>sBt~10i>Qo?OiJA<`zTQzbM~|91$Tkf8LN(+S;bj@JG<2rnleV66=hTSFas>x z*lds5^ASN~4&ZAKm1owQ7@#^|QD*Y=ts-C%ys-PMdQR2q>!xkMi*&z(mrT0G9UtGI z`56u{OYV=V>^4!x2mq$6ZZL=C{tG-V6FAh17yhvFN9u4^P|GJ|I-t`nBuJlaF4O>Q$@%V5hXYj7y8iqC_7&V6ke>+HL5MP7?B004md-bjY_dGx7!5b9zcr zne7g8;v5yng$F6qu#G}BYa1XE@fjDWH4pY-Z(3s3hrIf}YJ#^za`?Q+&U`auES?I< zMJ7C3vg51q!JIraGH4dBl|NW|mJ=|QihKKDN{y+Ao7=0@nqScx8*Qz$)i$*a z1TmVhB!H;FisDiYF7=K94K5gPnfLpB&YdlpgbecbegF8)2XgMcXM4_bp7WgNJkN8^ zDF&K~fhJXrDb=({Ehy@mGQ^hAWObiU>V06nKx5_*n#%j+&6t$s*6(XVgd=^RBmDxJ zt{$kvE5iF~5dtIzXmzgLh-G{=(;kZk2g~Rsi1r#QnAoeYXh49h%}k4vSeUg%-e9SD zisc8UVw8uvG4KkcQ8)UNAG-BvWA{F7b@+F)boR`kKR9%1y6 zda=EM+J%+a-2_mSGr6C%2POI}oPS z1cA3CrtfOGO6jB8H_z#8>Lj6RuvqPNsMf}{-Dr<7vlD83wALh+v6O8> zL#0~LNyRqx`fhc$Iw~gPIzW^qBMsU|V#(0fqqt>)qZw`aM)6jo?A^d)s2g3XXssJb z-$RnV^|crR9TF(}9zN5iA~dW{Q62{Y=?=78h8%~-<~Tn>i$fgg7xqDm>|>T?)8g6D z<@8qLHLP*#<`@|Fnfhy^%R!B`#G9hMD7YSrpDH&N`b)Z{YF1^jJ6RTA?LmVEjEhbj z8Fn0R7-3Ba!Zz1*=!F1NCIYd!W~ui=1la$a9I?6n`aIDE!TsKcIS zxK{yzqas-mKFjW5i2cu4_U!Kn1nWHzZ^qdz13_MLAcaStqb#v^^t8ktL`&>br~zh> zoz}r?Vl1(bb37R04-MNOogBpyOYbLG2*g?p{##pwoDrIU?#295wv4kbuI0*{`H4!h&+xW?GeePWC)fid>EIkqu&2BhDf##n*@W9&!8vbU6P&>gW; z0ljLAKU=-AEgdIA3&o)4Z`yt9HqIOkYhw=+Eio6zM9U6Ivet@#D<;}WV2$io zOtmBjw|?em7$274(Iya>?`)!URE!!!0yxN;_J{5kTLC-UB)m{^m8CN9&q4s8ix?P+ zbwdG)qVdMcKvG!@Op_2;w>(aZZDSoi1vtms7F&)QWw9Lvr1Z4d;;2+1WdDEAG-a`U z4NvyarN#Cr$Z%{CO;84`tK%+8(rct^^tY_ne}}PV+i>k3EoP5~NiJl=eSo+zP13wFpgna% z*nqa@5O8T|bkT!-8qi|N#0COxk))3w?h+er1FNy=D4c*a2DKy8DO1~hKbOHJ-xW>S zd<+isYj*LxXj`uA=6(dY1YtN)CU$dQ zDZo_=ndpt|;Sditap$=HnQhfkCS95AXw+Sgs_d9<+n-ag^ziB;U)eI4Jvz~Ovsf2S zC6U195PdKT^FB&xz#I|iHeQrBu>pt2_miX5_%5vtnSx0@{I!Y@#wTS8ehA~!HU%?@ zn1b0_jvj6pUxt)41@q2$jN^DCu$x7=7mtZ6f6Qn*-Vm85YP4~Kj5Q0*3(!Q2h0;_f z3_$doh+`Pu2H+v5*>tTYCmM!dy*5nO#|{^|CYkj~*J@Z;<9?wwdxK0ttsE(eTHm@^ zZT9AO<4GBg;mzJ3s_~_pLQOa!1BpPFT?}yi8ITTTD*h_sGyH?(ne+(C%3>;5H8Ji& zc9tmX@Oa<=44OUIgJ0Zoh**air`cKZp?VHDj}fvC3k8JDINhwn0x7qC zbBxH=Z^9UDB94XIT}&CE@qkrWU%gf6ilwkEf;T3? zU?Jx5rc(OL_-6WRWlDs>E$xAEVT1FXA40@5tEH>^HaL?EtdB~?;LK-;UD+I@hJPyw z9*cawmCMx~O0y^R8fk@{99_YTy6;xT?iH6o*6Md6AAdM11W#yy7@QCOdO&!u_^GGc zc)A8d0S4#$KUjt8lUkkW*WNb!dS?X=J7NqvrVu5B_KHJtvLK@fF{>@(WkP9pbQ#<& zuJ~3>)VQ>Fi`RaxxB;xs-+v4JEIc+s-L2{NhH*te)eR`nnv$*T(TX&}Y1I-s2PsGz z`ZG)m>o0Sved9hn*>sOO#AX0HHA)FnR+zzocY(TRA%nwT4FsXb1bH@*;p(7}I5QE~ z%-bR_Tm?V^$iofg`TAVgt|!8FT~D(bn*?pW-887Z!+(L153)C z)+2X|*}E1!72aunA%+K*78)oGbWw+872a~yTP@zu@EiullWaf6RW9Cm^?+2Qj=l`R zEyr9z>QJE9bK_IKUOz(u|CI<(G_i%<=Bcb9T@>fAe^bSc+KZTExLGVgwNHYYB?w~e z-$nTj`p$kF(wtbZtivE&li}Ar+vmNY;_#E zW;M}deRhv*Sm!4$ml$Kz)JfoPU;uArVh+w*cmoezkHBc$guiG~8w1q{ytS)00X^N{ zsos`w$YM5^F7?-{H}*OOP`VRHljt5XEVNL%9H!Uqm=F}8DnUrLYze_zvBI8|iqkdu z7NsIvR#jy<%1+nG{VNT>K=YT_Y|teb+SAh z2#Sg={p{|wpO2iJ8$Ehas;1AtAW^9Gb2Ypy8tTfp%s$*M|ZOi6vgR1WNed==W>6b2dpY>NqntU zE(evaR{0fx z^*7K42&;|U3eGkNL|xUycXe2dQdf~Tin?k&VLh#0osP4JL+Yx#nE((Hg^z?1xRF4qtL|%!tFCh1ChDqN zA^shBjjgU~C+k$V2$Fx=haM6PsH@JpT2|B|WPqFDBgVXHiyZxgH@2l?G*F^?ELu;c z8E16-ETS{8T@gf|5=TwNj(`jQU&99$P6ShBe}*&|`Wc~hu%e4-EmbWJ+NGB2Z@=oU zr4neduYeseTuuwY#H4|W0J6=!NbMl{Oa|epFP(3uNdT;M_eZo;JRPEkmP!MI>qAS$ zbGDS0Y6zax0#0;K@z%&-XG%+zZ>tz27TfRONiDNuHXhi$*&o#w zyAG021A-n))$a$zQEf>EY)@dmkQk=A6;7(`PpGzb|1zT5vdMsxRfJ5tskS&ilxl0! zMPU`dG0CC=P+YE$^WNeD0f!F~)p0jRtG0yrY$&n!9uPrUz;sGk@bu*}5aoOCsx7t$ zoiFV%s(HQvq}n10%o`BcNTFn*wkh;fZT*rWsoq!!Y{l1b!6%xFD(qH>h~nK;Tg8}u zqZXx6%7x80<6Ie;*!dPR3C`W!YxlvyNL zh{-Yldn&U?R3J~8{jkdcX~A{bEKIX_2`RH)muF#3VPzIaT4*sAMNboe4Nxm3@E#oE zF?cV8*mV*3Hx;_gkNp63D@|()OYnB@?(1jvvhCCA0AyGuN)otL%sJ3jCO!u=6yJ@(hO0Zk!1C2#7lZa|dDS&FC;-fSIR{gu( z)LYoMMN-4QEv4nEQFEWkE_e9t$(3!UvTLteE)o=)&&>VVOCfX>(Q;*j7hC_Rw6$D( zb1ZrXB}Qqv=(d6-BO8g;b(;j$?Gn^qI}s=ZJnxbaP?-80%L0F{#%`%lWs`k1fGbF)?Q;%DC-KKla78h<@y#V{AO#>|j5n z-1ce@{TO2~+6u`EjHz28;4B6Dp(<;SuO^d|6&20if$bS_)MN|Z4XerC!0{`#3drMM@#+Y*VN?yP8#jwyE1-N(ri$u>LUTj%ev{Z4hUN(gn7n z&Z8d-a+7f`XFXn=jx!&jlbZr{!{t47a=sY7TbX*Jb_S$dEGipwmIOPkv|D;A<7zmH zp*kUq*(PDc8l(;kA0%0eAf${7Y2l=Q;8o|8xN1!Txk&)Rn9{q|h~5o48e%A0Au3y; zEv~}N*5(ZN_t3jJ{Ld+#vrGnGbsYlS2|}$FcBnQXK&9&?s1bcuFO{|-37XX|L3JmB zh>{6ts^xe4`j|1MQ`l5>Ap)!fMC%o;-OFJ#t~ZiEQXy-SItY}rJg_>R_dwdnX%35MVogePJ984 z#A~^<6*QhM2oO9(PzxG&_#YJk=p~TMRuC6@uU!H^Z$&}xbxKh46#`Ttc+6I%WvjAr z$}HoCo2f#Sa>W*Ap*DOpQmVn&Zj8QHIdt9bbR%U!_qeF*cCR#2E?3b#uiG`8xh?)D zF@PY4W>n_O)x>jNUX>JV>p0O!Ij(!Dz1+Gh{8+CRs|OB4$j6;h=~{3DP79~+pp5Qh zoE_er{)Hnw?bBT=lY$q+fF%)-6H`kM3Bw?sr&ht#5oDXTc*fR;4g{@AIRxDGxfvKK zP_>*k(q``~IOxs#a7sDTff7qZ3ysBQ$5?a>p^1cu)jDw3g@dnL5 zZDvNb2Y)fSa(XA%}w$Cva7>Z_f#%L8}v7< z!=dxhzv$LCHzP4rW$YWR{O(ym#1AEh;B1RxEJ3b*T}d=A;8Yaf-Pgi3ziPVDb$dkg zJIMOxT`ZII)wV2;dljfjI&C@ihpxSQW|u0w4Gp|UAok+Hn~pSnxYGV|*p6Ui_;~Za zE6oa#oKaK=AN*8n&KKWfIdYV9&8nmTDFofBg6eE}^J@$gE{NF_ffRF-@^Ql`X+8 ziU6}C!={MP>?egs`l#ghb_X@SraI`T_g5x$+^?AhmVNqAY`Jkkw6P3N4CQ?LRpv~odt3NSI{0&++gO((opr{I*kw5qJp`8XO%t{>e(`hJ#@fN> zKjJxR8|zJ8q}_pHq10gMvW*q~0%l6hDUofgyHA#FtWW$kw2ifP7P2iTG-k@7{e#6I@su3^TjnK2(3qk#Xj2j6n=4ZyRM2=MIyIJ9eYyaN8? zXF|Y#coVYiMmO~0YHB-#DsN&l?fGV)?e<%dXI;PZR5H(<%=0VeF;hO@+P}8GiFDT7 z>ydE=Gs2sK%ngU&%e0%eq!HyF$8z%omikmin`uS-ejvY(ikIy&Mn8QEq6fre8^iAp z@%yKk&!Tqs7G8jFZ{Qo`^fFWtwY&E$My=xX*Uj?L4Q+l>TQ1AKfA5KBF!2RUd@T~g zv4nMkqa~?*!;eov%=w53?HlF*?t9)0p^{n8bZmFoJouk^P(#lP7Kk0n+zBnfL%CRy|6A z)+*NUZ5OA^zKA&7l}iNdno0%sfqy}%kFnH$?qdlXfL`lJmM|A3;5hJ0RB$EB3*)Sa z)rIjqL%nIL4+;gMdQE-IQ6HW1u`!o{nf5vx{|$LvT1>H9Rn|6@)h=(n%G#tp+T}IK z$C^3@W?BWydy3`J&vn0nc?ye7N3k8VBW3O@jP1{(ur)JL*pc?ZC0|%KOvY_M1g`y*D`NFLPmTxeYk$9NK~v|c+T<4%Y^YRz?k4>S2N?or@*gpp*GrTU6h>YHsa8^085cQ-njt$ZY{Y#)GqEO z&5o7#`Z)W+*C=~V`^)6X}2zJ;y8#`|l|48g42EDRp zZ3Pk%9BDW=8bDhg-9yI|zWwWv*yjndq*1+;afxQDzcRi5O`^?b2o^T$-=;UFI9plAyX10nCD32r!LNS-|glb*%*cr3@13T=FUAfr(p!MiD2B8cu{*;%-F{ zb;stcL`iOqLK9c+&Z1n)I@?{680g zM-t$OGsYxVg`AV$o4_OPlGgltDHzCeVudR`hh+f91pD30c=j<7c${dFRn(Pe_k{$W zGGvb@@bJ6!JAbHMi6PC`DBg=A@X%G%`tz-cH&FQ+UN$pY;8ESIw3s*rH1W<4Fv4=xk(1wt}!}eH?8~?u% zcmz8i-}ED~li)CJV3&LXBqTV}VDDtkFYge6rx4G!6$=8-OFI)4c%DCE?*fn1VGBI> zewFCR#!e?6lwvWS95Yubfv2T)e+WF8c4=h^m)1kzxwT{;=E|k)j}KSugTOP30~=N} z398EwK;ZEqPy$aDzvH+o3H<2{5+gFdn$TRejf~d zN~9nN3E6B3WC#T6wv^OFo91gIC`q_Z-89>%H@F$lpyVO~h@)Agf{?0Qs_Ow_LW%oW z;iDnxQeC~!4$k_=o3$s0fHVpqP`M=9zL1PoUN$SK1nX9j^gM=>hRo^}YCwODLq!th zXG&5vv_gw_o+p~yWItIiL3x;HPN_F!%snL3I#Z0f)`f7S+ouA0Obk>1mS0rsx7d2*i^cGEjQ`29nN_l=I3c`3{ zL0fmJf{v!sBahETc`eRtaGi{EX^Agin+4sQT`2Qd%X3g@&!gfr90X@wavQlq+V%hB zi18Q&oyebal@>gHr5pi6m2TubxU})%WWkK3NI;tGc{W@ntu>Le;gaymv*FMZ$MVHl zRIKBA(#r7uGt4QS7;3?Gk1;?qxD$3ty4TRMy@oT#W1dy~hgGl%J-Zbx(OMU`BY@8- zzEoKfEbc_0>5IE0s7hk-t&39;V12_!Iuh{bF&`X>NBX{?wwA?w!N-d;@udr2T+g#y zS0l3(j16|cwL#K=S;~3M%jL~u@)+;5j{Cyk18!aJrSKR6q{n!ooh2IzKtlm&C;$xs z&}00W0D6q)2%Kg<+rSKZl?p_|sF}~L$44|w1yyZ$YgtSO2AoHcvTE{xWUahwfaAVj z<4aY>xN!rL9m`jnTCjZgfVn60)`DNKXecbuG&I3tV5SX3I?KCsCH8CK!kdcek|u4( zPf=P-QtQN9o=9SfGbKgFOOj$@uH1+4XYe?WF(n5b<@6X6HMGA@)j}^BO*iS13k}J7 zzO~AE1OOhC*_G_5sAgu}tYo=3>sJDEDFS4mCkrwxLx6vXZ!G2)w)0*;^O+ZeB5E|0 z>(${*G6_Bl7o>ajNty1}Nm=-cCi(>w(^O=Ey(@EQng6h6Gm3Mi!|KhNJ-RCsk1QRJ zSspXx&tI+QW41@X3{|A8Qm?tl<3vIW3GIDvAZAovNKc6v)SBt2-)g<#iKM^+0&S%H zCJ$I`mAnEPEYb+8(%S0>Bv)*3_z#z48gRP7Q856HARa>lP78rkX9TBmH8+MxZ#dlz zoPGeB4dc{QIIZp#r%phjflM6twjv*nUqpke6;2Ou>r;T!i-FUL!0ALAr_#MZ192)Q zWO_TKJ@DveylFUzp_({#>$t1NtY+zW%mO=_{^fc;W&>S0c)dxz<|2<12^I1O(4~tw z6<03PB&Mz8S@8dYR+@l9RAGP?g zL?4F@#VIB;OPk=omPMh2uQ*$k$>Hn9vSvEQOodYqZhe}bYM-4h%mIv;{(AamuU_Xv zsb0Od5&>!%?pq@7%W5TPScU*KK8wI@$QbqLuh<--1UGk2&%}m6sPm?R&rQbV7|wKe zaJ{>{z0;$d5IgW)#X&Vl3JVq%Ri!-r503A9A3>?W{KE1u_rV3j!SGu%4e84aLh5At-EIE7ZuHHU9=QYeBaoS=6geOH2avsym=^Q(*Cqq`HFC$5j~#YW1O?r~8*x-*QFahPcxkzMkwJ7mKfZRdf%0VW9lx3~^*m2ijur^|S6J z_JS`pp6UyUuUNd89SSc+VZ401PT^%>OAov_F5S=_H9L?xf*PqO1~vR*O&&$m{1FT( zE^00`QmVSgMWJSzk#dWQj)$7(PZ!jjdm2%b!p1&vqoSNX%zXvY~;*lbG=>UdWwC5Z<3{gr#637 z4fki1#~-fTX)QezX_nzbOY%TX=RI-;Vl;Chm`{DUG$~3ZDqjPqih-p=T6}+J8Bm3E zNki%_33gh~44K1@?qr!VlcBUmPCA&%as)P%*5ac)D`yiN3x73_K29rN1NKqRg!b+p z9+XoDLC<7Sm5W3YU$mCedaSYDOv`^5J|Umyiwk5fpMS5OhgISEO*{vVL~WRfzSZ&J zUVe~G7G~P9OkK(kd)OGzCXe51^m8IT9o#|_}3ukrOd_m=Z?iE ztI~GV8Z?PlWG-ePq=44t5%o^ zAg5P`zU0UevRX~3ER7iI$pQ2Cr7ZHCSVr^x5eb9Tz)r%?r{#$-E;b}`D(i_im2M@G z_K75D1>dhu95dt~A1f|d%GqSeipy(Ml$^-6KtIyrQ)^SIN!F+_9#N1)M?)_X zqYUbLDxwTJ^kYucO(i3vl|g344yZcN-0Ukt>YFTf?KekLeM6Iws&W~CkOe^D=`&zoIsxZ^~0y)HW-dm<5&6SU!PDq*^L)=EX+i+se z@TTLgG)|8V=w<#uZUyP3Lu5L`HYIc6GE6<`p;N?wl`>ox$b<)WbZ?s@eOkL?cp>&cY1jkBek!`k*0M3HRd`f{>)RB8D!ols{ma)0 z{fVM%y6VT;*nTAQRsGoN*582c5Z5Q14g~$PG^!t~(~*i@d3CnioSx&VnmpE3IXP$i zK!^V+Db8FnW_o4_90x}Ceb_{m*G$C^3yA^ajn3K60;B%BFsTpVID9oB|B!U2hK%Ds$FpJ4&f4OTCLXSS&!aS>)YeFk-Y$eQLu)? z&!A!`fQr+Zh4GomGi|~gz!bd7a`VXlQA{9kf&ifisj_SaZXUyd{($8lNMOD9QyHmG z@%ceK+auK_G+n+uD?C!K&ZRN3z6MaD;1Rpf3mp~ zRtL92KVfqx-^y&1AXCvOc{qY|khZ8SZblMfX(EFGa=>CLCkx zlla=|@3Ijh)5#Vn>j?!`tmn=VHndnvZo`R~JW)b}$`?Vf-D`NE=PF2b8*V7>ew~a_iHwT`#buUcD3zJa@~ldFIr@8Sd5sntSo=o#oXFa1LGpHfGA$^y>AM zjA@n8h$mcxU=jydN?54T)#B${lIuklP%!qRjtkwUe8R|;1diqE)y(*x;xO1`n+s=n zjfF*S19cjx6SJ1vP<0wor`LFr9Kfpw+~w<_rF7?dq5XB6muYU@h5r{7x>^ww3e3 zHI#Bb?cXuV`J>fqF7ouQoR7j6G)YY;*E-1y<@}w14}G*}RD9+9q{reY=Lf+ppqp}D z;Z#=AnzA3o!zq>XAAwNAI5ibct9!*Mw@@nO{08K+mGcUxy(#Aj3Y7E2DU|bGeHL(< z_C-ZlIZvF1l=G6NFbiXPCIMY9J4>?*4u`8s3;C6xo=K0P6bs9C@vGO7Nt{uaz|; z0R{Montc777~D9dSB;ASB?WG?x(+YU+#l;U%vwAmdKrQ^`ul^rr;rAV7XLrL9gvKZ zGX1O#eKh#iuyhw}2S)sa6d?NBQ8M2ND&ITtPHy8T(6l*-kO5YhNp9pe8k>;7ZPcts z;5F*oBxu}RI6fK!hIQWS?r zy}4sZD4#MIVJIu!QQaVgby{6hvHUTfk*_a+LimFo?(5PcNEb*XSA%H!msEA&HL#l7 zInDYRc*Z$8uv|1+s4#Sd15&YMYwW+V)4jn43gxXUb-11vYk_&xd5bnDbsWcxLag=C z`CZSWc$9zC=;64j){s+}Al0R#B$!f|L281Q+@n*W*a9}B?wPW`!{E<@xjg#KogV!c zG_2gdRT)+QmTg$MaVF#u7*_BlY*=C29KJ2Ad}Ro1F|0hrPcWO6+5g*`@PDr(eH*hn$6c=Q`aXKVVE zFtWh5f|Qp2z;psZh?7cgM(tnxnzhrmf=|JW3jjpN#bMhDz9G#kk_Pv`3xxL*LI5fd z8uumqgpDvb%3fiK22CID;ac8`n2+R-Yy2i7odPCHzT3Cl)wv$J$O z(yg{$u%?DrJqJ!)>>Tr&!cN56Vq)z{D^xYYZrF)qZMg@jA_$V&Vi3eH*480JP;PgS zLx=0Y+Hz#~xF`g{+VcIw(%N_knmSSt^lC=5wdG}%e%SFdWVj7#j)R>hj2%J;-YnPw z*nL@BkTPU#!DB=T%Jy{)9zkwg406L2E9AyS+e4=9v>z%zbSqUlcR1ZOOh@xfY`R~mbfd!Q&Oy5P<{8b_U^vE<&{se?qnx_EI0}yh(vi*R z^0iuQC&n?_#1@DvH`qiahqTC266ax(dT4iH5AA!&r0wy@{4uE zk1CXX5z8!JO5S%M!?G+)N3*~h#B{_5>!!x-``k^?GXqNQq@l|)i4YqT$;_?J&HLW@ zHV3|OUG={AiDKgKk@v)Kgng$R4p4i~P`zsD{Yz22^$YxIxmRWg8wV{uGW>lWhH8yt z-M=v+qCMX>q!(1gvtum+qytMKfqOfBE6d~st7Q20nw47#@g;3M?bzGdvdD)>228oZ5_5AeG%8gOm-)+b>32q;6wg{P2e9d4=c zA%tVqzufdIe+CTkIVXA!y6Fw;m2UbJ&G3va_UJjd90fLuGI%lK9xh$WYH{XbP-bk# zOpgAOa~VSBMHXQ#9e^hGQc-?XMMeFrsJ6F?PV1whcd8;S`lhviEqcGVidvF;Z_(VS zitg`cMStzBqN`XDRr^`u?mvQMXQ^&E-7fo32%s&_O!mN=s+g=0_LG@0e(6*iIYO2P7P>A8a8ylryFkE5zsH89$<&uwA+w!rj zrJw=kj>}o$415Mj-Ct+8I&&uDTAXXnPnm+6|x6R3qiKUv^u3hE{S{ z7%3NbkBeH#U2CMAp`zoh)72HoOaoI>>oO+BWH<)4;v5`&u!=unM8Y=EfMmt?C6{8E03R>SwMAjF$&v=>2#6~_xEZTJH zJ3zVe$vA*3G~>;MMUiEyG}YI@5(k!2BTWdcCD0AoPkdj!0J)7A*wc zEB+h3w`5S@ekoVAME|^7L(pex_B>%FX3uEgZLl5we<8nMxW!orFZU+c$MQ#Kx?1u_ zmkCM%lt2PvTBZQ9rrppBa^Ws8ur9?eIzS~hR@pX=YrBEwD=QmV3ZFh{JT_w$bNajr zo3XBoAU&(25DWb#DaXFg6YKC8jF)&r*q(il!uAFO8pv}(`Rt2$kqwI8@@CC?@GjcH zLxqN+vJ0iVrFmy6z-Fx>km&)CKN=G;#SF3!wO$M@`QKa!0i)^&5jI}p^Lcm<+0?^~ zC&sQWgxPbr{p0HlC7eZ95Lu221B)p~D5tzE)808L^hghZv@7mb*jQB+WuL#&)>7=P z#1?0I*iPTyJaNZN(c5bGvKa6CTT+;4=PZvh{r4lcNdmQQ+10bop0YLeNr33mNpxqG zcMU2zy1Xl;bhhsoAj<3Evm?}aEvOMQ-|DQ6E5JT6kiaQL!rofHJ?MK*cmzb@&eAj` zlY>dz{uZc<0=o3cNLZEF8L!;M&XBy=ke98iE}^Zze6^ z_BOX2(Y@#&HMa#G*~{EE`HQ~iw#J6;a~p&UaI~no?N{f7=e8$i_j_(TCh14bZI`z6 z!hZLCZfkf0q!&Fs>~(JYc7ftASKv&T(A@UR6`b3MBx^b@VzCeQ#hAo|#<}gDIsaGY zwkgl{cW!g;eQsNDRWHc>e>%6BWeVFnD*Bw;mX`wS`*&_za|hIQc7t<|~zuZd`NW|9C$9W2CnIiI%-4-;cg4`S@4Pe7|P2$0B% z7O16a4D0yZkSm|858YT!VjpO-c|TKNfhCN zZk?oCXUGLrBi*{8Ni49SNW~z>9*ENi3L#ord2SN+E*NPi&kYeF$jixNBNpGSn5#2H zC88ZOZ*~I7Dj$jWt2v>3!HhyXM}IWSs%s$>q)j=0uU-2s*p%J1mK(fK+nRBJ+qf9k zjEOk2WC|v)ZM#`Kha*MmwrngBj8-$l*>6j~e z*=qyW*zSZkl$QS^ffuymd)UIQwgV#Q5&d%%g0R;nw_k*(APN34n(z|C=;M?6i_x0l z_ToU~31al+8}=_o&p|u-kI`3AyR~tsU~~D@7U z=k@y+qaXhv5saSlb6~M7RWLe=&nM$~KVkF=KoT|I?cIhMHR_LY^%tYNz>H!?{i194 zFGhb2uHAncJ>wQ&@q{6Q(G&Un_Tc@7(V>7Og3(?qhy!lNwBZC+Fl`+Dw3;^Hqtl0} zGM0Yod3WGcl=3qsV`)Ql*)Zg`rzBt=-U*P1n4c2>r{4AfVY00-2fpJ8K z1h(m}d#oGwATl2~~m ziTc!9YUy3&?FW>1rIrqN8@^iPa~qY*5CjX;ox55GltB7gSnFyK??in!&QY?azO)=> zKPn>e^HJ=~8&WcqLa8 zA=wi}#JGwX1^AL`eRvBqLyit@R|a^|8v++(4J+->t(fe?G*n4 zS{UN(N2l)riWNZ@$d%?skejOHaWA|8xaskd+2GbiXb-q`@gEhp9woC49dfa00R}Nx zBX^J(7p-Mk1Xt~OWH#%9_9!cROv_F0G7D#%DLWN&`4-GTV|)t=2bMZ~3$%f9oMKiW z3B7F_C#Ho=?-~rB5sL6PVIPJN1$Vu_?$%$%Vqykpb9r9WaH{4Nwo#^c*eFGho9;F} zqYE|NtVKNSm4!(iC%R39nl9JuVuKD}%(VHD;#dwWd7=k)n^%t3m{EhpwghJO^1D-E z!Mz*$5qEh@DvQcOQA<(0S1*C}86TYZu*|N{DW5^X`J?mjxy=5Y2eWBDcTM=~>@T^= zk<06G!4_RRWle-6sj|3GdvIF)>+!~4Rmwv*q5o(=MgP_PLHZB-^eR!HqoN#L$itb; zYUXw|h@BNa9W&N1r<>sr$NhB&F-0S9cXb;_vx)Q^lDm^VdU2PgV+C|)rZFk=Tws5~ zyrHI+-0Aqcqr}nTe-U}G9@}kA8M88}Y7z`yYewPtK>x8)X`>I(u+PrI*uv)RVgyw< zAH_d|@7QpJz_&ZO^foA=`HYP+1kr;NB<4823wn(cu=iVydyQID&=e@$W#d~4kdV35>O@azLRsDhNWpbQ2{ZqU~E$`qw7D($z)x>M@FFg z#W&AG1=z3GPJ+=>-K|*3B1)a4XA%^BwH0{dJh}+*4corB*UD}^cZsPtw!h;FMU5m` z4IsRJc6bDUWTOd>DV+3m$U?Hl=wz_alU6;(>4EF9+1vd*fZ@+)AA)bP^Kc0M@Zd(h z?RbpN7r)s$XPD~pB1Y zCe<`9K}^f}93k~H(1B{tAx}LSvTivd@-S=5UfWQ_7lCHLzAV|{|BT7?W><3{wb{b{ z{QH{FMAxn+H2YLW?P?lSdLAwXMFn`4(*kkE%5SIx(Z*erT3W_=C+~qeyqDgJi<{X& zOz5Z}M-HsUp9tp&_)w&m%tjbno)_#7Yv;5LXNE}y?*42$HmS1F!FIc&$lY=RbH4>m z7)Zx#z5W+YgjqX1 z(QtwoUMjJvM5eL8y(Br)Y(oivG`9SuEZ-*gxO8q4IJS98J<`dVZj!RCDtJ9auqWP0 zMY2Cqcr#cu>(b1W@7LF&61C0OO!1a&!AF@#;J#%~N;tR|2Zpkd8h6a$0MSICvROuG zys;OoQ@4GI@m4S6ErA9`7X?1cqR^GkQTVWawfQ`<2pPMRICdMO$F4|$S~G_4Bn)4h zdBu+6Jytg2Ardv9bxA-WcuN=NtO#%ERFfJz6;liERtKuM>7MkI(E+kC8#{sH(D6C; zw51vK{0chgLI7e)VmU@lDgxXW&8y$?jb{#JafUyWff}_{a&w*GAB9i4KNGbY{?YP$ z1fDTnWa9;sM-ocKTdsObS8tkn%aV$PIpTKkD1B^ROX(P!2C>JM+yUe{&{a8Tbi{&% zLmZL2cVVo*K z665k`CeE&AV#k>3Itk2L3H(bC2ufujflA3FO5v^PCz;}wX&7O4tJ6~}@c~3t%kO$4 z5#m_%G;$Q^n;grXx#qBScu8t*9|$2mbqNNkab`LmGw|raBPtk>^e;<^LV@2RDQ+i6 zA%;n4b@L4VwePDIurT2Ykl8lK{w4)^n*`PE2=evy?&goP+(Xy7_3u3T=dt7hswT{6 zOBn*?b?D#as2mDOK_d4l$I-DiP*rE*+&oC;#jMUBRInE z_UK>Wlq&0y#^q@JX9fC4sDlX6Hn($y#(hKgU#hH3BGv~pKDi#IOqdK5PqpdUtENV1iv;HoUhF$5uoAjhQ_jCJYWGeO0IiEL9aku8|OzWjn*{PAk| zGi?S)YvK%#ZegLs^@}pShc^5f-Ngs+2y*w(w6W7_eqKotJb)LCRuK@1iH;``M=^L7 z{!A^yI#zQGKYx~E_=RO2{hlsiENXYTCO2oJTp_6fo7I2~ut*#Um5OeFG({c*X^MKKNd!4=_`3%$g=k(9CI0>t7b6^x-H zu#SFhc~W2;AOV-=)allNejI3Trd;xD3%ZI6DKo9^?=9Sse%Tq=ad;xLUAhC=29XfV zwDOCfj+p!fIda;3KJVGd=ahe3Eq6yN-rvVP*}p|P>uh+B2mXO}E7-UMuoiE|x8HH{ z(`%d{D-}iI-@1uW6^t^3vcQNdrL}4Qo(KpU072l!c+oE~`Z7jOmV&LWl3(CcE#TE;hAS*MCTZ88!cz#>=d zJ@Ei0u3^a{S?M+HF(q$RZ_79Ub$^?xXFUSQmQ50v4g6@PC8Hm$hfq*QKH%HeQdXUg zQVv2Xp{)ku&1fqOqHTS`LtC6PLe{LPO}7zu)_D2sNyi7M#Fu^G0GI!J!Vh4BY36kn(A%O5llyMC#aW%rha1w{aiA0E%f1$iRStlu<)R@vVsSdEl zUk-7?E*RI}NCH)qU51@mSGf`c+e}9lywTFe;l~`Z<8f6hHdn=1UDAwS8 zXrNkbc5-W+;jaWZ7*UFJLOg*TjkskhPLYn9{Gd}&ab+rwq=S?s9h9OmNT{E1$cU6+ zs)DK&VcP3wlW=&9Y61sIbqRu*u2zWExE`~bBO5D9G6wK~D2|}veh7{s-7g#=5pZ_- z**kKP93Sj8;d6U_r#zElr`SG+q{2um_#Pm!iSd-_2@|7HuQ0pQas~EVcj@)}(oZts zVrw~3YgBg;?Kq1NSW=gF)d|Y0)ePXTt-O$7(rWo=?@dZSOut}kPdSfTYx zq%{9h1Z)S?6-xLvwJhs4l-@EJTlDKI6EC^DOuEMtBa{B@GUYCn00RV1u%SH4hSFCC z?RgByt3FWSf3A&2~8XB5Ym~FjYE|$02ZU^K_t(C4E z<+sB|ia#k@@)iZJ8$J;U_hmk3;<*>&n^e`}%n1oQA%jqNC)ZezTmUIz!HjR#lN`RX zu}NH539#0eb0X{#6{!Jt)tX-X0QO7;K{n7gQQv!L$)xTM0s|6cuW+XsNLzk_;Vez!zPfh_tE(i zggW+{KiA4dy&7fX_;c;f2Q7Hu7XcdC!RI9UNW||wo}HYC_t9y9Btj9r^k}v>(xdrR z{p-;y0ceOd$MonSYZG?x$UVBhU3V?FU~+7SyKeir`?u?UxF?aWyJHf%>sKF2*WJwL z0zB`ht}6i~k*@3Mc|G?6^jZ!^1IFR~m8#d`Y%K4)JEKE_%i zGi?zdiRv&}gYp=qnG?}bSxOdK%)1IhI4QRwhs+A=%-4uP1^7GC}Pi6!F!=fHc(Sj>8>s$}D|K5<6N#OsnOr(6%!4TkEpGVAnn&|wX*AMzJ-wb4n? z-Ymmlh`QRyTV_3oWbsGHBB{SeCrroGXZ?MPbix!q--zel2Z^9&Z{q}Tz*jD;=Y~`c zHU>>sl#eiUXxEiDeP7-+*m0jpnDvdo&Et+}+?21L6+SrR_;NCsDfloAM)8Y_t=u`= zgZ62y>Z>&XN#y=Q-*dI>8acKEx;Z&Ya4G7r>K|eua&pP6q>|};#1gI;*7x*WYC3}% z#rZgV;9PV${gb1s+fckch})#1KP~5{;W3|nk55v8p%q%^2*}F)SxOB2aysrW7gfKl zTFenGCEcUvAc_PF-{PiIas8)GrRNi`3$}(38A+?z!B? z2>xOY!!g90HOKiln`O_?7ime>9Fz9I*Rkwy&MwEu-M&18iq>tl#j#`9*d{<($ffq! zCJ#LIa6%QY;gaLi-_rCw)&T)u03OD+i@(!PQ!@S<8F1bO&xw4i|)Ka8;C5M3o29 z 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
    ~x1O{;@ozYpf4}I)zpc$On0JV*K;^js5U{Tk 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�ItTNgGaj>p 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%0D}{->7c%jmhC4xa2y9X=xCwqv)I#~hEz3~Z@S)p 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%0DLH2!4D8_KeDw5!HEv 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 z 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