From b04f16b1e4135fa9a736c1976d4ced9193b30a90 Mon Sep 17 00:00:00 2001 From: kastale Date: Mon, 8 Dec 2025 11:01:29 +0800 Subject: [PATCH 1/2] code commit --- .github/ISSUE_TEMPLATE/bug_report.md | 33 + .github/ISSUE_TEMPLATE/config.yml | 10 + .github/ISSUE_TEMPLATE/feature_request.md | 27 + .github/workflows/deploy-tag.yaml | 97 + .github/workflows/deploy-testnet-pre.yaml | 96 + .github/workflows/deploy-testnet.yaml | 122 + .github/workflows/test-with-code-coverage.yml | 55 + .gitignore | 316 + AElfScanServer.sln | 131 + AElfScanServer.sln.DotSettings | 23 + Dockerfile | 4 + NuGet.Config | 8 + common.props | 19 + doc/token-transfer-monitoring-design.md | 279 + global.json | 7 + .../AElfScan.Plugin.NFT.csproj | 29 + .../AElfScanPluginNFTModule.cs | 44 + .../backend/NftController.cs | 72 + .../AElfScan.Plugin.NFT/backend/NftService.cs | 1012 + ...ElfScanServer.Application.Contracts.csproj | 28 + ...ElfScanServerApplicationContractsModule.cs | 29 + .../AElfScanServerDtoExtensions.cs | 28 + ...fScanServerPermissionDefinitionProvider.cs | 20 + .../Permissions/AElfScanServerPermissions.cs | 9 + .../AElfScanServer.Application.csproj | 27 + .../AElfScanServerAppService.cs | 17 + ...fScanServerApplicationAutoMapperProfile.cs | 13 + .../AElfScanServerApplicationModule.cs | 31 + .../Properties/AssemblyInfo.cs | 2 + .../AElfScanServer.AuthServer.csproj | 71 + .../AElfScanServerAuthServerModule.cs | 227 + .../AElfScanServerBrandingProvider.cs | 10 + src/AElfScanServer.AuthServer/Logs/logs.txt | 8181 +++++++ src/AElfScanServer.AuthServer/Program.cs | 56 + .../abp.resourcemapping.js | 11 + .../appsettings.json | 27 + .../appsettings.secrets.json | 2 + src/AElfScanServer.AuthServer/package.json | 8 + src/AElfScanServer.AuthServer/web.config | 18 + .../wwwroot/global-styles.css | 6 + .../logo/leptonx/logo-dark-thumbnail.png | Bin 0 -> 10695 bytes .../wwwroot/images/logo/leptonx/logo-dark.png | Bin 0 -> 38171 bytes .../logo/leptonx/logo-light-thumbnail.png | Bin 0 -> 9230 bytes .../images/logo/leptonx/logo-light.png | Bin 0 -> 33228 bytes .../@fortawesome/fontawesome-free/css/all.css | 7876 ++++++ .../fontawesome-free/css/v4-shims.css | 2194 ++ .../webfonts/fa-brands-400.ttf | Bin 0 -> 209376 bytes .../webfonts/fa-brands-400.woff2 | Bin 0 -> 118072 bytes .../webfonts/fa-regular-400.ttf | Bin 0 -> 67976 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 25464 bytes .../webfonts/fa-solid-900.ttf | Bin 0 -> 423676 bytes .../webfonts/fa-solid-900.woff2 | Bin 0 -> 157192 bytes .../webfonts/fa-v4compatibility.ttf | Bin 0 -> 10836 bytes .../webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4800 bytes .../wwwroot/libs/abp/core/abp.css | 56 + .../wwwroot/libs/abp/core/abp.js | 823 + .../wwwroot/libs/abp/jquery/abp.jquery.js | 411 + .../wwwroot/libs/abp/luxon/abp.luxon.js | 46 + .../wwwroot/libs/abp/utils/abp-utils.umd.js | 694 + .../libs/abp/utils/abp-utils.umd.js.map | 1 + .../libs/abp/utils/abp-utils.umd.min.js | 2 + .../libs/abp/utils/abp-utils.umd.min.js.map | 1 + .../bootstrap-datepicker.css.map | 1 + .../bootstrap-datepicker.min.css | 7 + .../bootstrap-datepicker.min.js | 8 + .../locales/bootstrap-datepicker-en-CA.min.js | 1 + .../locales/bootstrap-datepicker.ar-DZ.min.js | 1 + .../locales/bootstrap-datepicker.ar-tn.min.js | 1 + .../locales/bootstrap-datepicker.ar.min.js | 1 + .../locales/bootstrap-datepicker.az.min.js | 1 + .../locales/bootstrap-datepicker.bg.min.js | 1 + .../locales/bootstrap-datepicker.bm.min.js | 1 + .../locales/bootstrap-datepicker.bn.min.js | 1 + .../locales/bootstrap-datepicker.br.min.js | 1 + .../locales/bootstrap-datepicker.bs.min.js | 1 + .../locales/bootstrap-datepicker.ca.min.js | 1 + .../locales/bootstrap-datepicker.cs.min.js | 1 + .../locales/bootstrap-datepicker.cy.min.js | 1 + .../locales/bootstrap-datepicker.da.min.js | 1 + .../locales/bootstrap-datepicker.de.min.js | 1 + .../locales/bootstrap-datepicker.el.min.js | 1 + .../locales/bootstrap-datepicker.en-AU.min.js | 1 + .../locales/bootstrap-datepicker.en-CA.min.js | 1 + .../locales/bootstrap-datepicker.en-GB.min.js | 1 + .../locales/bootstrap-datepicker.en-IE.min.js | 1 + .../locales/bootstrap-datepicker.en-NZ.min.js | 1 + .../locales/bootstrap-datepicker.en-US.min.js | 1 + .../locales/bootstrap-datepicker.en-ZA.min.js | 1 + .../locales/bootstrap-datepicker.eo.min.js | 1 + .../locales/bootstrap-datepicker.es.min.js | 1 + .../locales/bootstrap-datepicker.et.min.js | 1 + .../locales/bootstrap-datepicker.eu.min.js | 1 + .../locales/bootstrap-datepicker.fa.min.js | 1 + .../locales/bootstrap-datepicker.fi.min.js | 1 + .../locales/bootstrap-datepicker.fo.min.js | 1 + .../locales/bootstrap-datepicker.fr-CH.min.js | 1 + .../locales/bootstrap-datepicker.fr.min.js | 1 + .../locales/bootstrap-datepicker.gl.min.js | 1 + .../locales/bootstrap-datepicker.he.min.js | 1 + .../locales/bootstrap-datepicker.hi.min.js | 1 + .../locales/bootstrap-datepicker.hr.min.js | 1 + .../locales/bootstrap-datepicker.hu.min.js | 1 + .../locales/bootstrap-datepicker.hy.min.js | 1 + .../locales/bootstrap-datepicker.id.min.js | 1 + .../locales/bootstrap-datepicker.is.min.js | 1 + .../locales/bootstrap-datepicker.it-CH.min.js | 1 + .../locales/bootstrap-datepicker.it.min.js | 1 + .../locales/bootstrap-datepicker.ja.min.js | 1 + .../locales/bootstrap-datepicker.ka.min.js | 1 + .../locales/bootstrap-datepicker.kh.min.js | 1 + .../locales/bootstrap-datepicker.kk.min.js | 1 + .../locales/bootstrap-datepicker.km.min.js | 1 + .../locales/bootstrap-datepicker.ko.min.js | 1 + .../locales/bootstrap-datepicker.kr.min.js | 1 + .../locales/bootstrap-datepicker.lt.min.js | 1 + .../locales/bootstrap-datepicker.lv.min.js | 1 + .../locales/bootstrap-datepicker.me.min.js | 1 + .../locales/bootstrap-datepicker.mk.min.js | 1 + .../locales/bootstrap-datepicker.mn.min.js | 1 + .../locales/bootstrap-datepicker.mr.min.js | 1 + .../locales/bootstrap-datepicker.ms.min.js | 1 + .../locales/bootstrap-datepicker.nl-BE.min.js | 1 + .../locales/bootstrap-datepicker.nl.min.js | 1 + .../locales/bootstrap-datepicker.no.min.js | 1 + .../locales/bootstrap-datepicker.oc.min.js | 1 + .../locales/bootstrap-datepicker.pl.min.js | 1 + .../locales/bootstrap-datepicker.pt-BR.min.js | 1 + .../locales/bootstrap-datepicker.pt.min.js | 1 + .../locales/bootstrap-datepicker.ro.min.js | 1 + .../bootstrap-datepicker.rs-latin.min.js | 1 + .../locales/bootstrap-datepicker.rs.min.js | 1 + .../locales/bootstrap-datepicker.ru.min.js | 1 + .../locales/bootstrap-datepicker.si.min.js | 1 + .../locales/bootstrap-datepicker.sk.min.js | 1 + .../locales/bootstrap-datepicker.sl.min.js | 1 + .../locales/bootstrap-datepicker.sq.min.js | 1 + .../bootstrap-datepicker.sr-latin.min.js | 1 + .../locales/bootstrap-datepicker.sr.min.js | 1 + .../locales/bootstrap-datepicker.sv.min.js | 1 + .../locales/bootstrap-datepicker.sw.min.js | 1 + .../locales/bootstrap-datepicker.ta.min.js | 1 + .../locales/bootstrap-datepicker.tg.min.js | 1 + .../locales/bootstrap-datepicker.th.min.js | 1 + .../locales/bootstrap-datepicker.tk.min.js | 1 + .../locales/bootstrap-datepicker.tr.min.js | 1 + .../locales/bootstrap-datepicker.uk.min.js | 1 + .../bootstrap-datepicker.uz-cyrl.min.js | 1 + .../bootstrap-datepicker.uz-latn.min.js | 1 + .../locales/bootstrap-datepicker.vi.min.js | 1 + .../locales/bootstrap-datepicker.zh-CN.min.js | 1 + .../locales/bootstrap-datepicker.zh-TW.min.js | 1 + .../daterangepicker.css | 410 + .../daterangepicker.js | 1578 ++ .../wwwroot/libs/bootstrap/css/bootstrap.css | 12057 ++++++++++ .../libs/bootstrap/css/bootstrap.css.map | 1 + .../libs/bootstrap/css/bootstrap.min.css | 6 + .../libs/bootstrap/css/bootstrap.min.css.map | 1 + .../libs/bootstrap/css/bootstrap.rtl.css | 12030 ++++++++++ .../libs/bootstrap/css/bootstrap.rtl.css.map | 1 + .../libs/bootstrap/css/bootstrap.rtl.min.css | 6 + .../bootstrap/css/bootstrap.rtl.min.css.map | 1 + .../libs/bootstrap/js/bootstrap.bundle.js | 6314 +++++ .../libs/bootstrap/js/bootstrap.bundle.js.map | 1 + .../libs/bootstrap/js/bootstrap.bundle.min.js | 7 + .../bootstrap/js/bootstrap.bundle.min.js.map | 1 + .../bootstrap.enable.popovers.everywhere.js | 5 + .../bootstrap.enable.tooltips.everywhere.js | 5 + .../css/dataTables.bootstrap5.css | 443 + .../js/dataTables.bootstrap5.js | 212 + .../datatables.net/js/jquery.dataTables.js | 15733 ++++++++++++ .../libs/jquery-form/jquery.form.min.js | 22 + .../jquery.validate.unobtrusive.js | 432 + .../libs/jquery-validation/jquery.validate.js | 1703 ++ .../localization/messages_ar.js | 64 + .../localization/messages_ar.min.js | 4 + .../localization/messages_az.js | 35 + .../localization/messages_az.min.js | 4 + .../localization/messages_bg.js | 35 + .../localization/messages_bg.min.js | 4 + .../localization/messages_bn_BD.js | 35 + .../localization/messages_bn_BD.min.js | 4 + .../localization/messages_ca.js | 35 + .../localization/messages_ca.min.js | 4 + .../localization/messages_cs.js | 36 + .../localization/messages_cs.min.js | 4 + .../localization/messages_da.js | 46 + .../localization/messages_da.min.js | 4 + .../localization/messages_de.js | 82 + .../localization/messages_de.min.js | 4 + .../localization/messages_el.js | 35 + .../localization/messages_el.min.js | 4 + .../localization/messages_es.js | 38 + .../localization/messages_es.min.js | 4 + .../localization/messages_es_AR.js | 39 + .../localization/messages_es_AR.min.js | 4 + .../localization/messages_es_PE.js | 39 + .../localization/messages_es_PE.min.js | 4 + .../localization/messages_et.js | 33 + .../localization/messages_et.min.js | 4 + .../localization/messages_eu.js | 35 + .../localization/messages_eu.min.js | 4 + .../localization/messages_fa.js | 39 + .../localization/messages_fa.min.js | 4 + .../localization/messages_fi.js | 33 + .../localization/messages_fi.min.js | 4 + .../localization/messages_fr.js | 65 + .../localization/messages_fr.min.js | 4 + .../localization/messages_ge.js | 35 + .../localization/messages_ge.min.js | 4 + .../localization/messages_gl.js | 40 + .../localization/messages_gl.min.js | 4 + .../localization/messages_he.js | 35 + .../localization/messages_he.min.js | 4 + .../localization/messages_hi.js | 54 + .../localization/messages_hi.min.js | 4 + .../localization/messages_hr.js | 35 + .../localization/messages_hr.min.js | 4 + .../localization/messages_hu.js | 35 + .../localization/messages_hu.min.js | 4 + .../localization/messages_hy_AM.js | 35 + .../localization/messages_hy_AM.min.js | 4 + .../localization/messages_id.js | 34 + .../localization/messages_id.min.js | 4 + .../localization/messages_is.js | 33 + .../localization/messages_is.min.js | 4 + .../localization/messages_it.js | 39 + .../localization/messages_it.min.js | 4 + .../localization/messages_ja.js | 36 + .../localization/messages_ja.min.js | 4 + .../localization/messages_ka.js | 35 + .../localization/messages_ka.min.js | 4 + .../localization/messages_kk.js | 35 + .../localization/messages_kk.min.js | 4 + .../localization/messages_ko.js | 35 + .../localization/messages_ko.min.js | 4 + .../localization/messages_lt.js | 35 + .../localization/messages_lt.min.js | 4 + .../localization/messages_lv.js | 35 + .../localization/messages_lv.min.js | 4 + .../localization/messages_mk.js | 35 + .../localization/messages_mk.min.js | 4 + .../localization/messages_my.js | 35 + .../localization/messages_my.min.js | 4 + .../localization/messages_nl.js | 46 + .../localization/messages_nl.min.js | 4 + .../localization/messages_no.js | 35 + .../localization/messages_no.min.js | 4 + .../localization/messages_pl.js | 38 + .../localization/messages_pl.min.js | 4 + .../localization/messages_pt_BR.js | 91 + .../localization/messages_pt_BR.min.js | 4 + .../localization/messages_pt_PT.js | 39 + .../localization/messages_pt_PT.min.js | 4 + .../localization/messages_ro.js | 35 + .../localization/messages_ro.min.js | 4 + .../localization/messages_ru.js | 35 + .../localization/messages_ru.min.js | 4 + .../localization/messages_sd.js | 35 + .../localization/messages_sd.min.js | 4 + .../localization/messages_si.js | 35 + .../localization/messages_si.min.js | 4 + .../localization/messages_sk.js | 33 + .../localization/messages_sk.min.js | 4 + .../localization/messages_sl.js | 35 + .../localization/messages_sl.min.js | 4 + .../localization/messages_sr.js | 36 + .../localization/messages_sr.min.js | 4 + .../localization/messages_sr_lat.js | 36 + .../localization/messages_sr_lat.min.js | 4 + .../localization/messages_sv.js | 35 + .../localization/messages_sv.min.js | 4 + .../localization/messages_th.js | 35 + .../localization/messages_th.min.js | 4 + .../localization/messages_tj.js | 35 + .../localization/messages_tj.min.js | 4 + .../localization/messages_tr.js | 37 + .../localization/messages_tr.min.js | 4 + .../localization/messages_uk.js | 35 + .../localization/messages_uk.min.js | 4 + .../localization/messages_ur.js | 35 + .../localization/messages_ur.min.js | 4 + .../localization/messages_vi.js | 35 + .../localization/messages_vi.min.js | 4 + .../localization/messages_zh.js | 36 + .../localization/messages_zh.min.js | 4 + .../localization/messages_zh_TW.js | 37 + .../localization/messages_zh_TW.min.js | 4 + .../localization/methods_de.js | 24 + .../localization/methods_de.min.js | 4 + .../localization/methods_es_CL.js | 24 + .../localization/methods_es_CL.min.js | 4 + .../localization/methods_fi.js | 24 + .../localization/methods_fi.min.js | 4 + .../localization/methods_it.js | 24 + .../localization/methods_it.min.js | 4 + .../localization/methods_nl.js | 24 + .../localization/methods_nl.min.js | 4 + .../localization/methods_pt.js | 21 + .../localization/methods_pt.min.js | 4 + .../wwwroot/libs/jquery/jquery.js | 10716 +++++++++ .../wwwroot/libs/lodash/lodash.min.js | 140 + .../wwwroot/libs/luxon/luxon.js | 8537 +++++++ .../wwwroot/libs/luxon/luxon.js.map | 1 + .../wwwroot/libs/luxon/luxon.min.js | 1 + .../wwwroot/libs/luxon/luxon.min.js.map | 1 + .../jquery.mCustomScrollbar.concat.min.js | 5 + .../jquery.mCustomScrollbar.css | 1267 + .../jquery.mCustomScrollbar.js | 2458 ++ .../mCSB_buttons.png | Bin 0 -> 2998 bytes .../package.json | 37 + .../malihu-custom-scrollbar-plugin/readme.md | 82 + .../wwwroot/libs/moment/locale/af.js | 82 + .../wwwroot/libs/moment/locale/ar-dz.js | 167 + .../wwwroot/libs/moment/locale/ar-kw.js | 66 + .../wwwroot/libs/moment/locale/ar-ly.js | 182 + .../wwwroot/libs/moment/locale/ar-ma.js | 67 + .../wwwroot/libs/moment/locale/ar-ps.js | 123 + .../wwwroot/libs/moment/locale/ar-sa.js | 116 + .../wwwroot/libs/moment/locale/ar-tn.js | 66 + .../wwwroot/libs/moment/locale/ar.js | 200 + .../wwwroot/libs/moment/locale/az.js | 113 + .../wwwroot/libs/moment/locale/be.js | 153 + .../wwwroot/libs/moment/locale/bg.js | 98 + .../wwwroot/libs/moment/locale/bm.js | 62 + .../wwwroot/libs/moment/locale/bn-bd.js | 140 + .../wwwroot/libs/moment/locale/bn.js | 130 + .../wwwroot/libs/moment/locale/bo.js | 135 + .../wwwroot/libs/moment/locale/br.js | 179 + .../wwwroot/libs/moment/locale/bs.js | 171 + .../wwwroot/libs/moment/locale/ca.js | 111 + .../wwwroot/libs/moment/locale/cs.js | 192 + .../wwwroot/libs/moment/locale/cv.js | 74 + .../wwwroot/libs/moment/locale/cy.js | 109 + .../wwwroot/libs/moment/locale/da.js | 64 + .../wwwroot/libs/moment/locale/de-at.js | 90 + .../wwwroot/libs/moment/locale/de-ch.js | 87 + .../wwwroot/libs/moment/locale/de.js | 89 + .../wwwroot/libs/moment/locale/dv.js | 101 + .../wwwroot/libs/moment/locale/el.js | 117 + .../wwwroot/libs/moment/locale/en-au.js | 79 + .../wwwroot/libs/moment/locale/en-ca.js | 75 + .../wwwroot/libs/moment/locale/en-gb.js | 79 + .../wwwroot/libs/moment/locale/en-ie.js | 79 + .../wwwroot/libs/moment/locale/en-il.js | 75 + .../wwwroot/libs/moment/locale/en-in.js | 79 + .../wwwroot/libs/moment/locale/en-nz.js | 79 + .../wwwroot/libs/moment/locale/en-sg.js | 79 + .../wwwroot/libs/moment/locale/eo.js | 79 + .../wwwroot/libs/moment/locale/es-do.js | 119 + .../wwwroot/libs/moment/locale/es-mx.js | 121 + .../wwwroot/libs/moment/locale/es-us.js | 121 + .../wwwroot/libs/moment/locale/es.js | 121 + .../wwwroot/libs/moment/locale/et.js | 89 + .../wwwroot/libs/moment/locale/eu.js | 76 + .../wwwroot/libs/moment/locale/fa.js | 124 + .../wwwroot/libs/moment/locale/fi.js | 135 + .../wwwroot/libs/moment/locale/fil.js | 69 + .../wwwroot/libs/moment/locale/fo.js | 68 + .../wwwroot/libs/moment/locale/fr-ca.js | 81 + .../wwwroot/libs/moment/locale/fr-ch.js | 85 + .../wwwroot/libs/moment/locale/fr.js | 119 + .../wwwroot/libs/moment/locale/fy.js | 86 + .../wwwroot/libs/moment/locale/ga.js | 106 + .../wwwroot/libs/moment/locale/gd.js | 106 + .../wwwroot/libs/moment/locale/gl.js | 86 + .../wwwroot/libs/moment/locale/gom-deva.js | 137 + .../wwwroot/libs/moment/locale/gom-latn.js | 135 + .../wwwroot/libs/moment/locale/gu.js | 133 + .../wwwroot/libs/moment/locale/he.js | 105 + .../wwwroot/libs/moment/locale/hi.js | 179 + .../wwwroot/libs/moment/locale/hr.js | 167 + .../wwwroot/libs/moment/locale/hu.js | 129 + .../wwwroot/libs/moment/locale/hy-am.js | 105 + .../wwwroot/libs/moment/locale/id.js | 87 + .../wwwroot/libs/moment/locale/is.js | 151 + .../wwwroot/libs/moment/locale/it-ch.js | 75 + .../wwwroot/libs/moment/locale/it.js | 117 + .../wwwroot/libs/moment/locale/ja.js | 159 + .../wwwroot/libs/moment/locale/jv.js | 87 + .../wwwroot/libs/moment/locale/ka.js | 103 + .../wwwroot/libs/moment/locale/kk.js | 93 + .../wwwroot/libs/moment/locale/km.js | 114 + .../wwwroot/libs/moment/locale/kn.js | 135 + .../wwwroot/libs/moment/locale/ko.js | 86 + .../wwwroot/libs/moment/locale/ku-kmr.js | 125 + .../wwwroot/libs/moment/locale/ku.js | 129 + .../wwwroot/libs/moment/locale/ky.js | 95 + .../wwwroot/libs/moment/locale/lb.js | 148 + .../wwwroot/libs/moment/locale/lo.js | 77 + .../wwwroot/libs/moment/locale/lt.js | 136 + .../wwwroot/libs/moment/locale/lv.js | 105 + .../wwwroot/libs/moment/locale/me.js | 128 + .../wwwroot/libs/moment/locale/mi.js | 71 + .../wwwroot/libs/moment/locale/mk.js | 97 + .../wwwroot/libs/moment/locale/ml.js | 93 + .../wwwroot/libs/moment/locale/mn.js | 111 + .../wwwroot/libs/moment/locale/mr.js | 214 + .../wwwroot/libs/moment/locale/ms-my.js | 87 + .../wwwroot/libs/moment/locale/ms.js | 86 + .../wwwroot/libs/moment/locale/mt.js | 67 + .../wwwroot/libs/moment/locale/my.js | 102 + .../wwwroot/libs/moment/locale/nb.js | 71 + .../wwwroot/libs/moment/locale/ne.js | 132 + .../wwwroot/libs/moment/locale/nl-be.js | 113 + .../wwwroot/libs/moment/locale/nl.js | 115 + .../wwwroot/libs/moment/locale/nn.js | 70 + .../wwwroot/libs/moment/locale/oc-lnc.js | 96 + .../wwwroot/libs/moment/locale/pa-in.js | 133 + .../wwwroot/libs/moment/locale/pl.js | 151 + .../wwwroot/libs/moment/locale/pt-br.js | 69 + .../wwwroot/libs/moment/locale/pt.js | 74 + .../wwwroot/libs/moment/locale/ro.js | 87 + .../wwwroot/libs/moment/locale/ru.js | 224 + .../wwwroot/libs/moment/locale/sd.js | 92 + .../wwwroot/libs/moment/locale/se.js | 68 + .../wwwroot/libs/moment/locale/si.js | 80 + .../wwwroot/libs/moment/locale/sk.js | 156 + .../wwwroot/libs/moment/locale/sl.js | 182 + .../wwwroot/libs/moment/locale/sq.js | 76 + .../wwwroot/libs/moment/locale/sr-cyrl.js | 138 + .../wwwroot/libs/moment/locale/sr.js | 140 + .../wwwroot/libs/moment/locale/ss.js | 95 + .../wwwroot/libs/moment/locale/sv.js | 79 + .../wwwroot/libs/moment/locale/sw.js | 66 + .../wwwroot/libs/moment/locale/ta.js | 142 + .../wwwroot/libs/moment/locale/te.js | 99 + .../wwwroot/libs/moment/locale/tet.js | 79 + .../wwwroot/libs/moment/locale/tg.js | 128 + .../wwwroot/libs/moment/locale/th.js | 76 + .../wwwroot/libs/moment/locale/tk.js | 102 + .../wwwroot/libs/moment/locale/tl-ph.js | 68 + .../wwwroot/libs/moment/locale/tlh.js | 135 + .../wwwroot/libs/moment/locale/tr.js | 117 + .../wwwroot/libs/moment/locale/tzl.js | 100 + .../wwwroot/libs/moment/locale/tzm-latn.js | 65 + .../wwwroot/libs/moment/locale/tzm.js | 65 + .../wwwroot/libs/moment/locale/ug-cn.js | 122 + .../wwwroot/libs/moment/locale/uk.js | 178 + .../wwwroot/libs/moment/locale/ur.js | 93 + .../wwwroot/libs/moment/locale/uz-latn.js | 65 + .../wwwroot/libs/moment/locale/uz.js | 62 + .../wwwroot/libs/moment/locale/vi.js | 91 + .../wwwroot/libs/moment/locale/x-pseudo.js | 84 + .../wwwroot/libs/moment/locale/yo.js | 64 + .../wwwroot/libs/moment/locale/zh-cn.js | 131 + .../wwwroot/libs/moment/locale/zh-hk.js | 112 + .../wwwroot/libs/moment/locale/zh-mo.js | 111 + .../wwwroot/libs/moment/locale/zh-tw.js | 110 + .../wwwroot/libs/moment/moment.min.js | 2 + .../wwwroot/libs/select2/css/select2.min.css | 1 + .../wwwroot/libs/select2/js/i18n/af.js | 3 + .../wwwroot/libs/select2/js/i18n/ar.js | 3 + .../wwwroot/libs/select2/js/i18n/az.js | 3 + .../wwwroot/libs/select2/js/i18n/bg.js | 3 + .../wwwroot/libs/select2/js/i18n/bn.js | 3 + .../wwwroot/libs/select2/js/i18n/bs.js | 3 + .../wwwroot/libs/select2/js/i18n/ca.js | 3 + .../wwwroot/libs/select2/js/i18n/cs.js | 3 + .../wwwroot/libs/select2/js/i18n/da.js | 3 + .../wwwroot/libs/select2/js/i18n/de.js | 3 + .../wwwroot/libs/select2/js/i18n/dsb.js | 3 + .../wwwroot/libs/select2/js/i18n/el.js | 3 + .../wwwroot/libs/select2/js/i18n/en.js | 3 + .../wwwroot/libs/select2/js/i18n/es.js | 3 + .../wwwroot/libs/select2/js/i18n/et.js | 3 + .../wwwroot/libs/select2/js/i18n/eu.js | 3 + .../wwwroot/libs/select2/js/i18n/fa.js | 3 + .../wwwroot/libs/select2/js/i18n/fi.js | 3 + .../wwwroot/libs/select2/js/i18n/fr.js | 3 + .../wwwroot/libs/select2/js/i18n/gl.js | 3 + .../wwwroot/libs/select2/js/i18n/he.js | 3 + .../wwwroot/libs/select2/js/i18n/hi.js | 3 + .../wwwroot/libs/select2/js/i18n/hr.js | 3 + .../wwwroot/libs/select2/js/i18n/hsb.js | 3 + .../wwwroot/libs/select2/js/i18n/hu.js | 3 + .../wwwroot/libs/select2/js/i18n/hy.js | 3 + .../wwwroot/libs/select2/js/i18n/id.js | 3 + .../wwwroot/libs/select2/js/i18n/is.js | 3 + .../wwwroot/libs/select2/js/i18n/it.js | 3 + .../wwwroot/libs/select2/js/i18n/ja.js | 3 + .../wwwroot/libs/select2/js/i18n/ka.js | 3 + .../wwwroot/libs/select2/js/i18n/km.js | 3 + .../wwwroot/libs/select2/js/i18n/ko.js | 3 + .../wwwroot/libs/select2/js/i18n/lt.js | 3 + .../wwwroot/libs/select2/js/i18n/lv.js | 3 + .../wwwroot/libs/select2/js/i18n/mk.js | 3 + .../wwwroot/libs/select2/js/i18n/ms.js | 3 + .../wwwroot/libs/select2/js/i18n/nb.js | 3 + .../wwwroot/libs/select2/js/i18n/ne.js | 3 + .../wwwroot/libs/select2/js/i18n/nl.js | 3 + .../wwwroot/libs/select2/js/i18n/pl.js | 3 + .../wwwroot/libs/select2/js/i18n/ps.js | 3 + .../wwwroot/libs/select2/js/i18n/pt-BR.js | 3 + .../wwwroot/libs/select2/js/i18n/pt.js | 3 + .../wwwroot/libs/select2/js/i18n/ro.js | 3 + .../wwwroot/libs/select2/js/i18n/ru.js | 3 + .../wwwroot/libs/select2/js/i18n/sk.js | 3 + .../wwwroot/libs/select2/js/i18n/sl.js | 3 + .../wwwroot/libs/select2/js/i18n/sq.js | 3 + .../wwwroot/libs/select2/js/i18n/sr-Cyrl.js | 3 + .../wwwroot/libs/select2/js/i18n/sr.js | 3 + .../wwwroot/libs/select2/js/i18n/sv.js | 3 + .../wwwroot/libs/select2/js/i18n/th.js | 3 + .../wwwroot/libs/select2/js/i18n/tk.js | 3 + .../wwwroot/libs/select2/js/i18n/tr.js | 3 + .../wwwroot/libs/select2/js/i18n/uk.js | 3 + .../wwwroot/libs/select2/js/i18n/vi.js | 3 + .../wwwroot/libs/select2/js/i18n/zh-CN.js | 3 + .../wwwroot/libs/select2/js/i18n/zh-TW.js | 3 + .../libs/select2/js/select2.full.min.js | 2 + .../wwwroot/libs/select2/js/select2.min.js | 2 + .../libs/sweetalert2/sweetalert2.all.js | 4656 ++++ .../libs/sweetalert2/sweetalert2.all.min.js | 6 + .../wwwroot/libs/sweetalert2/sweetalert2.css | 1085 + .../wwwroot/libs/sweetalert2/sweetalert2.js | 4655 ++++ .../libs/sweetalert2/sweetalert2.min.css | 1 + .../libs/sweetalert2/sweetalert2.min.js | 5 + .../wwwroot/libs/timeago/jquery.timeago.js | 232 + .../wwwroot/libs/timeago/locales/README.md | 27 + .../libs/timeago/locales/jquery.timeago.af.js | 30 + .../libs/timeago/locales/jquery.timeago.am.js | 30 + .../libs/timeago/locales/jquery.timeago.ar.js | 104 + .../locales/jquery.timeago.az-short.js | 30 + .../libs/timeago/locales/jquery.timeago.az.js | 30 + .../libs/timeago/locales/jquery.timeago.be.js | 43 + .../libs/timeago/locales/jquery.timeago.bg.js | 28 + .../libs/timeago/locales/jquery.timeago.bs.js | 55 + .../libs/timeago/locales/jquery.timeago.ca.js | 30 + .../libs/timeago/locales/jquery.timeago.cs.js | 34 + .../libs/timeago/locales/jquery.timeago.cy.js | 30 + .../libs/timeago/locales/jquery.timeago.da.js | 28 + .../locales/jquery.timeago.de-short.js | 30 + .../libs/timeago/locales/jquery.timeago.de.js | 28 + .../libs/timeago/locales/jquery.timeago.dv.js | 32 + .../libs/timeago/locales/jquery.timeago.el.js | 28 + .../locales/jquery.timeago.en-short.js | 30 + .../libs/timeago/locales/jquery.timeago.en.js | 30 + .../locales/jquery.timeago.es-short.js | 31 + .../libs/timeago/locales/jquery.timeago.es.js | 29 + .../libs/timeago/locales/jquery.timeago.et.js | 28 + .../libs/timeago/locales/jquery.timeago.eu.js | 28 + .../locales/jquery.timeago.fa-short.js | 30 + .../libs/timeago/locales/jquery.timeago.fa.js | 32 + .../libs/timeago/locales/jquery.timeago.fi.js | 38 + .../locales/jquery.timeago.fr-short.js | 26 + .../libs/timeago/locales/jquery.timeago.fr.js | 27 + .../libs/timeago/locales/jquery.timeago.gl.js | 28 + .../libs/timeago/locales/jquery.timeago.he.js | 26 + .../libs/timeago/locales/jquery.timeago.hr.js | 54 + .../libs/timeago/locales/jquery.timeago.hu.js | 28 + .../libs/timeago/locales/jquery.timeago.hy.js | 28 + .../libs/timeago/locales/jquery.timeago.id.js | 29 + .../libs/timeago/locales/jquery.timeago.is.js | 29 + .../locales/jquery.timeago.it-short.js | 30 + .../libs/timeago/locales/jquery.timeago.it.js | 28 + .../libs/timeago/locales/jquery.timeago.ja.js | 29 + .../libs/timeago/locales/jquery.timeago.jv.js | 28 + .../libs/timeago/locales/jquery.timeago.ko.js | 31 + .../libs/timeago/locales/jquery.timeago.ky.js | 42 + .../libs/timeago/locales/jquery.timeago.lt.js | 30 + .../libs/timeago/locales/jquery.timeago.lv.js | 30 + .../libs/timeago/locales/jquery.timeago.mk.js | 30 + .../libs/timeago/locales/jquery.timeago.nl.js | 30 + .../libs/timeago/locales/jquery.timeago.no.js | 28 + .../libs/timeago/locales/jquery.timeago.pl.js | 39 + .../locales/jquery.timeago.pt-br-short.js | 30 + .../timeago/locales/jquery.timeago.pt-br.js | 28 + .../locales/jquery.timeago.pt-short.js | 30 + .../libs/timeago/locales/jquery.timeago.pt.js | 26 + .../libs/timeago/locales/jquery.timeago.ro.js | 29 + .../libs/timeago/locales/jquery.timeago.rs.js | 54 + .../libs/timeago/locales/jquery.timeago.ru.js | 43 + .../libs/timeago/locales/jquery.timeago.rw.js | 30 + .../libs/timeago/locales/jquery.timeago.si.js | 28 + .../libs/timeago/locales/jquery.timeago.sk.js | 34 + .../libs/timeago/locales/jquery.timeago.sl.js | 46 + .../libs/timeago/locales/jquery.timeago.sq.js | 26 + .../libs/timeago/locales/jquery.timeago.sr.js | 54 + .../libs/timeago/locales/jquery.timeago.sv.js | 28 + .../libs/timeago/locales/jquery.timeago.th.js | 30 + .../locales/jquery.timeago.tr-short.js | 30 + .../libs/timeago/locales/jquery.timeago.tr.js | 26 + .../libs/timeago/locales/jquery.timeago.uk.js | 42 + .../libs/timeago/locales/jquery.timeago.ur.js | 30 + .../libs/timeago/locales/jquery.timeago.uz.js | 29 + .../libs/timeago/locales/jquery.timeago.vi.js | 30 + .../timeago/locales/jquery.timeago.zh-CN.js | 31 + .../timeago/locales/jquery.timeago.zh-TW.js | 30 + .../wwwroot/libs/toastr/toastr.css | 228 + .../wwwroot/libs/toastr/toastr.js.map | 1 + .../wwwroot/libs/toastr/toastr.min.css | 1 + .../wwwroot/libs/toastr/toastr.min.js | 2 + .../AElfScanCommonModule.cs | 72 + .../AElfScanPluginBaseModule.cs | 33 + .../AElfScanServer.Common.csproj | 58 + .../AElfScanServerHostBuilderExtensions.cs | 153 + .../AElfSdk/ContractProvider.cs | 184 + .../AElfSdk/Dtos/SenderAccount.cs | 25 + .../AElfSdk/Dtos/SystemContractName.cs | 33 + .../Address/Provider/AddressInfoProvider.cs | 105 + src/AElfScanServer.Common/AssertHelper.cs | 107 + .../Commons/CommonAddressHelper.cs | 51 + .../Commons/ConfigurationHelper.cs | 40 + .../Commons/LogHelper.cs | 22 + .../Commons/ZipHelper.cs | 63 + .../Constant/AElfIndexerConstant.cs | 11 + .../Constant/ApiInfoConstant.cs | 10 + .../Constant/CommonConstant.cs | 43 + .../Constant/TokenServerConstant.cs | 16 + .../Contract/Provider/ContractProvider.cs | 158 + .../Core/UmpAttribute.cs | 11 + .../Core/UmpInterceptor.cs | 59 + .../DataStrategy/IDataStrategy.cs | 89 + .../Dtos/AddressNftInfoDto.cs | 16 + .../Dtos/AddressTokenTransferInfoDto.cs | 26 + src/AElfScanServer.Common/Dtos/Ads/AdsDto.cs | 105 + .../Dtos/Ads/TwitterIndex.cs | 11 + .../Dtos/AwakenTVLDto.cs | 11 + .../Dtos/BinancePriceDto.cs | 8 + .../Dtos/BlockChainDtos.cs | 66 + .../Dtos/BlockSizeDto.cs | 21 + src/AElfScanServer.Common/Dtos/BurntFeeDto.cs | 21 + .../Dtos/CMCCryptocurrency.cs | 41 + .../Dtos/ChartData/DailyTransactionCount.cs | 124 + .../Dtos/ChartData/NodeBlockProduceIndex.cs | 824 + .../Dtos/CommonResponseDto.cs | 8 + .../Dtos/CommonTokenPriceDto.cs | 6 + .../Dtos/ContractFileResultDto.cs | 28 + .../Dtos/ContractVerifyResult.cs | 7 + .../Dtos/ExternalInfoDto.cs | 9 + .../Dtos/GetNFTListingsDto.cs | 12 + .../Dtos/GetTransferListResponseDto.cs | 5 + src/AElfScanServer.Common/Dtos/HolderInfo.cs | 10 + .../Dtos/Indexer/IndexerContractListDto.cs | 28 + .../Dtos/Indexer/IndexerDailyHolderDto.cs | 15 + .../Dtos/Indexer/IndexerNftActivityInfo.cs | 32 + .../Dtos/Indexer/IndexerTokenHolderInfoDto.cs | 34 + .../Dtos/Indexer/IndexerTokenInfoDto.cs | 45 + .../Dtos/Indexer/IndexerTransferInfoDto.cs | 33 + .../Dtos/Indexer/TransactionIndex.cs | 84 + .../Dtos/IndexerNftListingInfo.cs | 37 + .../Dtos/Input/BaseInput.cs | 36 + .../Dtos/Input/GetActivitiesInput.cs | 12 + .../Dtos/Input/GetNftCollectionInfoInput.cs | 10 + .../Dtos/Input/GetNftListInput.cs | 8 + .../Dtos/Input/GetTokenListInput.cs | 8 + .../Dtos/Input/GetTransferInfoListInput.cs | 7 + .../Dtos/Input/NftHolderInfoInput.cs | 7 + .../Dtos/Input/NftInventoryInput.cs | 20 + .../Dtos/Input/NftItemActivityInput.cs | 7 + .../Dtos/Input/NftItemHolderInfoInput.cs | 12 + .../Dtos/Input/NftItemInput.cs | 6 + .../Dtos/Input/TokenHolderInput.cs | 46 + .../Dtos/Input/TokenListInput.cs | 33 + .../Dtos/ListResponseDto.cs | 9 + .../Dtos/LogEventIndex.cs | 36 + .../Dtos/MarketInfoDto.cs | 8 + .../Dtos/MergeData/AccountTokenIndex.cs | 18 + .../Dtos/MergeData/TokenBase.cs | 12 + .../Dtos/MergeData/TokenInfoIndex.cs | 41 + src/AElfScanServer.Common/Dtos/MetadataDto.cs | 19 + .../Dtos/NftCollectionInfoDto.cs | 12 + .../Dtos/NftCollectionInfoResp.cs | 18 + .../Dtos/NftDetailDto.cs | 18 + .../Dtos/NftHolderInfoDto.cs | 10 + src/AElfScanServer.Common/Dtos/NftInfoDto.cs | 25 + .../Dtos/NftInfoListDto.cs | 7 + .../Dtos/NftInventoryDto.cs | 27 + .../Dtos/NftItemActivityDto.cs | 23 + .../Dtos/NftItemDetailDto.cs | 34 + .../Dtos/NftItemHolderInfoDto.cs | 13 + .../Dtos/NftTransferInfoDto.cs | 35 + .../Dtos/SynchronizationContractDto.cs | 12 + src/AElfScanServer.Common/Dtos/TestInput.cs | 6 + .../Dtos/TokenBaseInfo.cs | 9 + .../Dtos/TokenBaseInfoDto.cs | 33 + .../Dtos/TokenCommonDto.cs | 26 + .../Dtos/TokenDetailDto.cs | 15 + .../Dtos/TokenExchangeDto.cs | 9 + .../Dtos/TokenHolderInfoDto.cs | 28 + .../Dtos/TokenHolderPercentDto.cs | 8 + .../Dtos/TokenInfoListDto.cs | 23 + .../Dtos/TokenPriceDto.cs | 14 + .../Dtos/TokenTransferInfoDto.cs | 43 + .../Dtos/TokenTransferInput.cs | 51 + .../Dtos/TransactionFeeDto.cs | 8 + .../Entities/AElfIndexerEntity.cs | 29 + .../Entities/AbstractEntity.cs | 29 + .../Entities/NftCollectionHolderInfoIndex.cs | 14 + .../Enums/AddressAssetType.cs | 7 + .../Enums/NFTActivityType.cs | 15 + .../Enums/SortDirection.cs | 7 + src/AElfScanServer.Common/Enums/SortField.cs | 14 + .../Enums/TokenCreatedExternalInfoEnum.cs | 19 + .../Enums/TransactionStatus.cs | 39 + src/AElfScanServer.Common/EsIndex/EsIndex.cs | 397 + .../ExceptionHandlingService.cs | 244 + .../GraphQL/GraphQLHelper.cs | 34 + .../GraphQL/GraphQlFactory.cs | 46 + .../Helper/AssertHelper.cs | 86 + .../Helper/BaseConverter.cs | 51 + .../Helper/BlockHelper.cs | 53 + .../Helper/CommomHelper.cs | 151 + .../Helper/DecimalHelper.cs | 60 + .../Helper/EnumConverter.cs | 36 + .../Helper/EnumDescriptionHelper.cs | 15 + .../Helper/IdGeneratorHelper.cs | 376 + .../Helper/RedisHelper.cs | 9 + .../Helper/StringHelper.cs | 79 + .../Helper/TimeHelper.cs | 107 + .../Helper/TokenInfoHelper.cs | 81 + .../Helper/TokenSymbolHelper.cs | 30 + .../HttpClient/ApiInfo.cs | 15 + .../HttpClient/HttpProvider.cs | 408 + .../HttpClient/JsonSettingsBuilder.cs | 135 + .../AddressTypeProvider.cs | 22 + .../AwakenIndexerProvider.cs | 61 + .../NftCollectionHolderProvider.cs | 53 + .../IndexerPluginProvider/NftInfoProvider.cs | 268 + .../TokenIndexerProvider.cs | 620 + .../NodeProvider/AElfClientFactory.cs | 42 + .../NodeProvider/NodeProvider.cs | 63 + .../Options/AddressAssetOptions.cs | 21 + .../Options/ApiClientOption.cs | 30 + .../Options/AssetsInfoOptions.cs | 20 + .../Options/ChainOptions.cs | 22 + .../Options/CoinGeckoOptions.cs | 12 + .../Options/EsOptions.cs | 8 + .../Options/ExchangeOptions.cs | 22 + .../Options/GlobalOptions.cs | 151 + .../Options/IndexerOptions.cs | 13 + .../Options/NetWorkReflectionOptions.cs | 10 + .../Options/PullTransactionChainIdsOptions.cs | 8 + .../Options/SecretOptions.cs | 17 + .../Options/TokenInfoOptions.cs | 26 + .../Generated/Protobuf/Generated/Acs0.c.cs | 379 + .../Generated/Protobuf/Generated/Acs0.g.cs | 5228 ++++ .../Generated/Protobuf/Generated/Acs10.c.cs | 153 + .../Generated/Protobuf/Generated/Acs10.g.cs | 1182 + .../Generated/Protobuf/Generated/Acs12.c.cs | 54 + .../Generated/Protobuf/Generated/Acs12.g.cs | 506 + .../Generated/Protobuf/Generated/Acs2.c.cs | 64 + .../Generated/Protobuf/Generated/Acs2.g.cs | 298 + .../Protobuf/Generated/AedposContract.c.cs | 618 + .../Protobuf/Generated/AedposContract.g.cs | 9299 +++++++ .../Protobuf/Generated/AuthorityInfo.g.cs | 292 + .../Protobuf/Generated/CaContract.c.cs | 971 + .../Protobuf/Generated/CaContract.g.cs | 19799 +++++++++++++++ .../Protobuf/Generated/TokenContract.c.cs | 405 + .../Protobuf/Generated/TokenContract.g.cs | 19937 ++++++++++++++++ .../Protobuf/Generated/TransactionFee.c.cs | 153 + .../Protobuf/Generated/TransactionFee.g.cs | 1914 ++ .../Protobuf/Generated/TreasuryContract.c.cs | 204 + .../Protobuf/Generated/TreasuryContract.g.cs | 3186 +++ .../Provider/AwsS3Provider.cs | 107 + .../Provider/K8sProvider.cs | 273 + .../Redis/RedisDatabaseExtension.cs | 31 + .../Reporter/MetricsOption.cs | 6 + .../Reporter/MetricsReporter.cs | 18 + .../Reporter/TotalExecutionTimeRecorder.cs | 66 + .../Exchange/CoinMarketCapProvider.cs | 107 + .../Token/Provider/TokenExchangeProvider.cs | 129 + .../Token/Provider/TokenInfoProvider.cs | 105 + .../Token/TokenPriceService.cs | 83 + .../AElfScanServer.DbMigrator.csproj | 48 + .../AElfScanServerDbMigratorModule.cs | 29 + .../DbMigratorHostedService.cs | 51 + src/AElfScanServer.DbMigrator/Program.cs | 41 + .../appsettings.json | 20 + .../appsettings.secrets.json | 2 + .../AElfScanServer.Domain.Shared.csproj | 42 + .../AElfScanServerDomainErrorCodes.cs | 6 + .../AElfScanServerDomainSharedModule.cs | 59 + ...AElfScanServerGlobalFeatureConfigurator.cs | 22 + ...lfScanServerModuleExtensionConfigurator.cs | 70 + .../Common/ChainConstants.cs | 13 + .../Common/DeviceType.cs | 8 + .../Localization/AElfScanServer/ar.json | 8 + .../Localization/AElfScanServer/cs.json | 8 + .../Localization/AElfScanServer/de.json | 8 + .../Localization/AElfScanServer/en-GB.json | 8 + .../Localization/AElfScanServer/en.json | 8 + .../Localization/AElfScanServer/es.json | 8 + .../Localization/AElfScanServer/fi.json | 8 + .../Localization/AElfScanServer/fr.json | 8 + .../Localization/AElfScanServer/hi.json | 8 + .../Localization/AElfScanServer/hr.json | 8 + .../Localization/AElfScanServer/hu.json | 8 + .../Localization/AElfScanServer/is.json | 8 + .../Localization/AElfScanServer/it.json | 8 + .../Localization/AElfScanServer/nl.json | 8 + .../Localization/AElfScanServer/pl-PL.json | 8 + .../Localization/AElfScanServer/pt-BR.json | 8 + .../Localization/AElfScanServer/ro-RO.json | 8 + .../Localization/AElfScanServer/ru.json | 8 + .../Localization/AElfScanServer/sk.json | 8 + .../Localization/AElfScanServer/sl.json | 8 + .../Localization/AElfScanServer/tr.json | 8 + .../Localization/AElfScanServerResource.cs | 9 + .../MultiTenancy/MultiTenancyConsts.cs | 10 + .../Options/AppOptions.cs | 6 + .../Samples/Users/UserGrainDto.cs | 25 + .../AElfScanServer.Domain.csproj | 34 + .../AElfScanServerConsts.cs | 6 + .../AElfScanServerDomainModule.cs | 66 + .../Data/AElfScanServerDbMigrationService.cs | 104 + .../Data/IAElfScanServerDbSchemaMigrator.cs | 8 + .../NullAElfScanServerDbSchemaMigrator.cs | 15 + .../OpenIddictDataSeedContributor.cs | 350 + .../Properties/AssemblyInfo.cs | 3 + .../AElfScanServer.Grains.csproj | 27 + .../AElfScanServerGrainsModule.cs | 14 + .../Grain/Ads/AdsGain.cs | 39 + .../Grain/Ads/IAdsGrain.cs | 10 + .../Grain/Contract/ContractFileCodeGrain.cs | 49 + .../Grain/Contract/IContractFileCodeGrain.cs | 10 + .../Contract/ISynchronizationContractGrain.cs | 10 + .../Contract/SynchronizationContractGrain.cs | 38 + src/AElfScanServer.Grains/GrainIdHelper.cs | 38 + .../GrainsAutoMapperProfile.cs | 14 + .../State/Ads/AdsState.cs | 43 + .../State/Contract/ContractFileCodeState.cs | 16 + .../Contract/SynchronizationContractState.cs | 13 + .../SychronizationType.cs | 6 + .../AElfScanServer.HttpApi.Host.csproj | 61 + .../Extension/ApolloConfigurationExtension.cs | 27 + .../HttpApiHostModule.cs | 184 + .../OrleansHostExtensions.cs | 34 + .../Plugins/AElfScan.Plugin.NFT.dll | Bin 0 -> 71680 bytes .../Plugins/AElfScan.Plugin.Portkey.dll | Bin 0 -> 62976 bytes src/AElfScanServer.HttpApi.Host/Program.cs | 90 + .../TokenImage/BTETE.png | Bin 0 -> 44471 bytes .../TokenImage/ETH.png | Bin 0 -> 2416 bytes .../TokenImage/ETHTE.png | Bin 0 -> 3954 bytes .../TokenImage/USDC.png | Bin 0 -> 4353 bytes .../TokenImage/USDT.png | Bin 0 -> 1891 bytes .../apollo.appsettings.json | 12 + .../appsettings.json | 355 + src/AElfScanServer.HttpApi.Host/secrets.json | 14 + .../AElfScanServer.HttpApi.csproj | 58 + .../Constant/BlockChainConstant.cs | 13 + .../Controllers/AddressController.cs | 70 + .../Controllers/AdsController.cs | 115 + .../Controllers/BlockChainController.cs | 105 + .../Controllers/ChartDataController.cs | 212 + .../Controllers/ContractUpdateController.cs | 32 + .../Controllers/ContractVerifyController.cs | 42 + .../Controllers/OpenApiController.cs | 52 + .../Controllers/TokenController.cs | 65 + .../Controllers/UserController.cs | 44 + .../CurrentBpProduceDataStrategy.cs | 129 + .../DataStrategy/LatestBlocksDataStrategy.cs | 164 + .../LatestTransactionDataStrategy.cs | 104 + .../DataStrategy/OverviewDataStrategy.cs | 366 + .../Dtos/AElfAddressInput.cs | 16 + .../Dtos/AdsData/AdsReq.cs | 80 + .../Dtos/AdsData/TwitterResponseDto.cs | 35 + .../Dtos/AelfIndexerDtos.cs | 100 + .../Dtos/BlockChainDtos.cs | 586 + .../Dtos/BlockChainTestInput.cs | 6 + .../Dtos/ChartData/AddressCount.cs | 104 + .../Dtos/ChartData/TransactionCount.cs | 474 + .../Dtos/ContractVerifyDtos.cs | 65 + src/AElfScanServer.HttpApi/Dtos/ESIndex.cs | 68 + .../Dtos/GetLogEventListDto.cs | 22 + .../IndexerAddressTransactionCountDto.cs | 20 + .../Indexer/IndexerTransactionCountDto.cs | 11 + .../Dtos/Indexer/IndexerTransactionListDto.cs | 46 + .../Dtos/Indexer/common.cs | 19 + .../Dtos/OpenApi/openApiDtos.cs | 47 + .../Dtos/OrganizationUnitDto.cs | 10 + .../Dtos/RegisterUserWithOrganizationInput.cs | 36 + .../Dtos/address/AccountInfoDto.cs | 8 + .../Dtos/address/AccountTokenDto.cs | 18 + .../Dtos/address/AddressControllerBasicDto.cs | 26 + .../Dtos/address/ContractRegistrationDto.cs | 10 + .../Dtos/address/DecompilerDto.cs | 12 + .../Dtos/address/GetAddressDetailDto.cs | 60 + .../Dtos/address/GetAddressListDto.cs | 38 + .../Dtos/address/GetAddressNftListDto.cs | 11 + .../Dtos/address/GetAddressTokenListDto.cs | 35 + .../Dtos/address/GetContractDetailDto.cs | 12 + .../Dtos/address/GetContractEvent.cs | 17 + .../Dtos/address/GetContractEventListDto.cs | 15 + .../Dtos/address/GetContractFileDto.cs | 17 + .../Dtos/address/GetContractHistoryDto.cs | 53 + .../Dtos/address/GetContractListDto.cs | 33 + .../Dtos/address/GetContractTokenListDto.cs | 9 + .../address/GetContractTransactionListDto.cs | 9 + .../Dtos/address/GetTransactionDto.cs | 16 + .../Dtos/address/GetTransferListDto.cs | 34 + .../Dtos/address/GraphQLDto.cs | 15 + .../Dtos/address/IndexerAccountTokenDto.cs | 27 + .../Dtos/address/IndexerAddressListDto.cs | 8 + .../address/IndexerContractRecordListDto.cs | 8 + .../IndexerContractRegistrationListDto.cs | 8 + .../Dtos/address/IndexerTokenInfoDto.cs | 9 + .../address/IndexerTransferInfoListDto.cs | 9 + .../Dtos/address/TokenBaseDto.cs | 16 + .../Dtos/address/TransferInfoDto.cs | 18 + .../Helper/BlockChainIndexNameHelper.cs | 120 + .../Helper/HubGroupHelper.cs | 38 + .../HttpApiAutoMapperProfile.cs | 337 + src/AElfScanServer.HttpApi/HttpApiModule.cs | 153 + src/AElfScanServer.HttpApi/Hubs/ExploreHub.cs | 407 + .../Options/AELFIndexerOptions.cs | 20 + .../Options/DecompilerOption.cs | 6 + .../Options/TwitterOptions.cs | 6 + .../Generated/Protobuf/Generated/Acs0.c.cs | 379 + .../Generated/Protobuf/Generated/Acs0.g.cs | 5228 ++++ .../Generated/Protobuf/Generated/Acs10.c.cs | 153 + .../Generated/Protobuf/Generated/Acs10.g.cs | 1182 + .../Generated/Protobuf/Generated/Acs12.c.cs | 54 + .../Generated/Protobuf/Generated/Acs12.g.cs | 506 + .../Generated/Protobuf/Generated/Acs2.c.cs | 64 + .../Generated/Protobuf/Generated/Acs2.g.cs | 298 + .../Protobuf/Generated/AedposContract.c.cs | 618 + .../Protobuf/Generated/AedposContract.g.cs | 9299 +++++++ .../Protobuf/Generated/AuthorityInfo.g.cs | 292 + .../Protobuf/Generated/CaContract.c.cs | 971 + .../Protobuf/Generated/CaContract.g.cs | 19799 +++++++++++++++ .../Protobuf/Generated/TokenContract.c.cs | 405 + .../Protobuf/Generated/TokenContract.g.cs | 19937 ++++++++++++++++ .../Protobuf/Generated/TransactionFee.c.cs | 153 + .../Protobuf/Generated/TransactionFee.g.cs | 1914 ++ .../Protobuf/Generated/TreasuryContract.c.cs | 204 + .../Protobuf/Generated/TreasuryContract.g.cs | 3186 +++ .../Provider/AELFIndexerProvider.cs | 275 + .../Provider/BlockChainDataProvider.cs | 234 + .../Provider/BlockChainIndexerProvider.cs | 186 + .../Provider/DailyHodlerProvider.cs | 62 + .../Provider/DecompilerProvider.cs | 38 + .../Provider/HomePageProvider.cs | 161 + .../Provider/IndexerGenesisProvider.cs | 214 + .../Provider/IndexerTokenProvider.cs | 251 + .../Provider/LogEventProvider.cs | 92 + .../Provider/TokenAssetProvider.cs | 308 + .../Provider/TokenHolderPercentProvider.cs | 66 + .../Provider/TwitterProvider.cs | 71 + .../Service/AddressAppService.cs | 695 + .../Service/AddressService.cs | 67 + .../Service/AddressTypeService.cs | 39 + .../Service/AdsService.cs | 524 + .../Service/BlockChainService.cs | 986 + .../Service/ChartDataService.cs | 1921 ++ .../Service/ContractAppService.cs | 364 + .../Service/ContractFileComparer.cs | 132 + .../Service/ContractVerifyService.cs | 636 + .../Service/DynamicTransactionService.cs | 630 + .../Service/HomePageService.cs | 253 + .../Service/IOpenApiService.cs | 216 + .../Service/SearchService.cs | 574 + .../Service/TokenService.cs | 519 + .../Service/UserAppService.cs | 215 + .../AElfScanServer.MongoDB.csproj | 27 + .../MongoDb/AElfScanServerMongoDbContext.cs | 22 + .../MongoDb/AElfScanServerMongoDbModule.cs | 40 + .../MongoDbAElfScanServerDbSchemaMigrator.cs | 43 + .../Properties/AssemblyInfo.cs | 2 + .../AElfScanServer.Silo.csproj | 51 + .../AElfScanServerHostedService.cs | 30 + .../AElfScanServerJsonGrainStateSerializer.cs | 34 + .../AElfScanServerSiloModule.cs | 49 + .../Extensions/OrleansHostExtensions.cs | 92 + src/AElfScanServer.Silo/Program.cs | 43 + .../appsettings.apollo.json | 19 + src/AElfScanServer.Silo/appsettings.json | 54 + src/AElfScanServer.Silo/secrets.json | 15 + .../AElfScanServer.Worker.Core.csproj | 29 + .../AElfScanServerAutoMapperProfile.cs | 29 + .../AElfScanServerWorkerCoreModule.cs | 30 + .../Dtos/BlockChainProducerInfoDto.cs | 18 + .../Dtos/ContractInfoDto.cs | 28 + .../Dtos/PropertyDto.cs | 24 + .../Dtos/SearchHeightDto.cs | 6 + .../Dtos/TransferEventDto.cs | 58 + ...BlockChainProducerInfoSyncWorkerOptions.cs | 8 + .../Options/ContractInfoSyncWorkerOptions.cs | 7 + .../Options/TokenTransferMonitoringOptions.cs | 74 + .../Options/WorkerOptions.cs | 44 + .../Protobuf/Generated/Acs0.c.cs | 379 + .../Protobuf/Generated/Acs0.g.cs | 5227 ++++ .../Protobuf/Generated/AedposContract.g.cs | 9299 +++++++ .../Protobuf/Generated/TokenContract.c.cs | 878 + .../Protobuf/Generated/TokenContract.g.cs | 19937 ++++++++++++++++ .../Protobuf/Generated/TransactionFee.c.cs | 121 + .../Protobuf/Generated/TransactionFee.g.cs | 1914 ++ .../Protobuf/Generated/VoteContract.c.cs | 264 + .../Protobuf/Generated/VoteContract.g.cs | 6955 ++++++ .../Provider/EventHandler.cs | 54 + .../Provider/StorageProvider.cs | 61 + .../Service/AddressService.cs | 487 + .../ITokenTransferMonitoringService.cs | 28 + .../Service/TokenTransferMonitoringService.cs | 464 + .../Service/TransactionService.cs | 2644 ++ .../Worker/AddressAssetCalcWorker.cs | 37 + .../BlockChainProducerInfoSyncWorker.cs | 67 + .../Worker/BlockSizeWorker.cs | 30 + .../Worker/BnElfUsdtPriceWorker.cs | 30 + .../Worker/ContractFileWorker.cs | 42 + .../Worker/CurrentBpProduceWorker.cs | 44 + .../Worker/DailyNetworkStatisticWorker.cs | 31 + .../Worker/FixDailyTransactionWorker.cs | 30 + .../Worker/HomePageOverviewWorker.cs | 45 + .../Worker/LatestBlocksWorker.cs | 44 + .../Worker/LatestTransactionsWorker.cs | 45 + .../Worker/LogEventDelWorker.cs | 27 + .../Worker/LogEventWorker.cs | 30 + .../Worker/MergeAddressWorker.cs | 29 + .../DeleteMergeBlocksWorker.cs | 31 + .../FixTokenHolderInfoWorker.cs | 31 + .../Worker/MergeDataWorker/TokenInfoWorker.cs | 31 + .../Worker/MonthlyActiveAddressWorker.cs | 30 + .../Worker/RoundWorker.cs | 30 + .../Worker/TokenHolderPercentWorker.cs | 114 + .../Worker/TokenTransferMonitoringWorker.cs | 121 + .../Worker/TransactionIndexWorker.cs | 30 + .../Worker/TransactionRatePerMinuteWorker.cs | 31 + .../Worker/TwitterSyncWorker.cs | 35 + .../AElfScanServer.Worker.csproj | 44 + .../AElfScanServerHostedService.cs | 33 + .../AElfScanServerWorkerModule.cs | 237 + .../Extension/ApolloConfigurationExtension.cs | 27 + .../OrleansHostExtensions.cs | 34 + src/AElfScanServer.Worker/Program.cs | 75 + .../apollo.appsettings.json | 12 + src/AElfScanServer.Worker/appsettings.json | 292 + src/AElfScanServer.Worker/secrets.json | 14 + 1028 files changed, 334912 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/workflows/deploy-tag.yaml create mode 100644 .github/workflows/deploy-testnet-pre.yaml create mode 100644 .github/workflows/deploy-testnet.yaml create mode 100644 .github/workflows/test-with-code-coverage.yml create mode 100644 .gitignore create mode 100755 AElfScanServer.sln create mode 100755 AElfScanServer.sln.DotSettings create mode 100644 Dockerfile create mode 100755 NuGet.Config create mode 100755 common.props create mode 100644 doc/token-transfer-monitoring-design.md create mode 100644 global.json create mode 100644 plugins/AElfScan.Plugin.NFT/AElfScan.Plugin.NFT.csproj create mode 100644 plugins/AElfScan.Plugin.NFT/AElfScanPluginNFTModule.cs create mode 100644 plugins/AElfScan.Plugin.NFT/backend/NftController.cs create mode 100644 plugins/AElfScan.Plugin.NFT/backend/NftService.cs create mode 100644 src/AElfScanServer.Application.Contracts/AElfScanServer.Application.Contracts.csproj create mode 100644 src/AElfScanServer.Application.Contracts/AElfScanServerApplicationContractsModule.cs create mode 100644 src/AElfScanServer.Application.Contracts/AElfScanServerDtoExtensions.cs create mode 100644 src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissionDefinitionProvider.cs create mode 100644 src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissions.cs create mode 100644 src/AElfScanServer.Application/AElfScanServer.Application.csproj create mode 100644 src/AElfScanServer.Application/AElfScanServerAppService.cs create mode 100644 src/AElfScanServer.Application/AElfScanServerApplicationAutoMapperProfile.cs create mode 100644 src/AElfScanServer.Application/AElfScanServerApplicationModule.cs create mode 100644 src/AElfScanServer.Application/Properties/AssemblyInfo.cs create mode 100644 src/AElfScanServer.AuthServer/AElfScanServer.AuthServer.csproj create mode 100644 src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs create mode 100644 src/AElfScanServer.AuthServer/AElfScanServerBrandingProvider.cs create mode 100644 src/AElfScanServer.AuthServer/Logs/logs.txt create mode 100644 src/AElfScanServer.AuthServer/Program.cs create mode 100644 src/AElfScanServer.AuthServer/abp.resourcemapping.js create mode 100644 src/AElfScanServer.AuthServer/appsettings.json create mode 100644 src/AElfScanServer.AuthServer/appsettings.secrets.json create mode 100644 src/AElfScanServer.AuthServer/package.json create mode 100644 src/AElfScanServer.AuthServer/web.config create mode 100644 src/AElfScanServer.AuthServer/wwwroot/global-styles.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png create mode 100644 src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-dark.png create mode 100644 src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-light-thumbnail.png create mode 100644 src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-light.png create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/jquery/abp.jquery.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/luxon/abp.luxon.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.css.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker-en-CA.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-DZ.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-tn.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bm.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bn.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.br.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-AU.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-CA.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-IE.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-NZ.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-US.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-ZA.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.min.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.min.css.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.css.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.min.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.min.css.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.js.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/js/bootstrap.enable.popovers.everywhere.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/js/bootstrap.enable.tooltips.everywhere.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/datatables.net-bs5/css/dataTables.bootstrap5.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/datatables.net-bs5/js/dataTables.bootstrap5.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/datatables.net/js/jquery.dataTables.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-form/jquery.form.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/jquery.validate.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ar.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ar.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_az.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_az.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_bg.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_bg.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ca.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ca.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_cs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_cs.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_da.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_da.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_de.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_de.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_el.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_el.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_es.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_es.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_et.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_et.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_eu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_eu.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_fa.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_fa.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_fi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_fi.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_fr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_fr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ge.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ge.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_gl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_gl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_he.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_he.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hi.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hu.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_id.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_id.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_is.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_is.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_it.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_it.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ja.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ja.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ka.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ka.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_kk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_kk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ko.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ko.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_lt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_lt.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_lv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_lv.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_mk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_mk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_my.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_my.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_nl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_nl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_no.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_no.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_pl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_pl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ro.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ro.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ru.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ru.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sd.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sd.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_si.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_si.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_sv.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_th.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_th.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_tj.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_tj.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_tr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_tr.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_uk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_uk.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ur.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_ur.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_vi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_vi.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_zh.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_zh.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_de.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_de.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_fi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_fi.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_it.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_it.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_nl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_nl.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_pt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/methods_pt.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/jquery/jquery.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/lodash/lodash.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/luxon/luxon.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/luxon/luxon.js.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/luxon/luxon.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/luxon/luxon.min.js.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/af.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar-dz.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar-kw.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar-ly.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar-ma.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar-ps.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar-sa.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar-tn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ar.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/az.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/be.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/bg.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/bm.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/bn-bd.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/bn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/bo.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/br.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/bs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ca.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/cs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/cv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/cy.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/da.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/de-at.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/de-ch.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/de.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/dv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/el.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-au.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-ca.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-gb.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-ie.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-il.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-in.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-nz.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/en-sg.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/eo.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/es-do.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/es-mx.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/es-us.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/es.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/et.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/eu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fa.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fil.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fo.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fr-ca.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fr-ch.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/fy.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ga.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/gd.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/gl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/gom-deva.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/gom-latn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/gu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/he.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/hi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/hr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/hu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/hy-am.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/id.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/is.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/it-ch.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/it.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ja.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/jv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ka.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/kk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/km.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/kn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ko.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ku-kmr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ku.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ky.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/lb.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/lo.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/lt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/lv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/me.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/mi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/mk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ml.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/mn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/mr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ms-my.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ms.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/mt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/my.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/nb.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ne.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/nl-be.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/nl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/nn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/oc-lnc.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/pa-in.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/pl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/pt-br.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/pt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ro.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ru.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sd.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/se.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/si.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sq.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sr-cyrl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ss.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/sw.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ta.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/te.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tet.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tg.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/th.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tl-ph.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tlh.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tzl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tzm-latn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/tzm.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ug-cn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/uk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/ur.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/uz-latn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/uz.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/vi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/x-pseudo.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/yo.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/zh-cn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/zh-hk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/zh-mo.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/zh-tw.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/moment/moment.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/css/select2.min.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/af.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ar.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/az.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/bg.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/bn.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/bs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ca.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/cs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/da.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/de.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/dsb.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/el.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/en.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/es.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/et.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/eu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/fa.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/fi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/fr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/gl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/he.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/hi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/hr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/hsb.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/hu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/hy.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/id.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/is.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/it.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ja.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ka.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/km.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ko.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/lt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/lv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/mk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ms.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/nb.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ne.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/nl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/pl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ps.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/pt-BR.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/pt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ro.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/ru.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/sk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/sl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/sq.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/sr-Cyrl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/sr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/sv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/th.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/tk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/tr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/uk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/vi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/zh-CN.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/i18n/zh-TW.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/select2.full.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/select2.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.all.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/jquery.timeago.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/README.md create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.af.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.am.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ar.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.az.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.be.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.bg.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.bs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ca.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.cs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.cy.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.da.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.de.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.dv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.el.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.en.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.es.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.et.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.eu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.fa.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.fi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.fr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.gl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.he.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.hr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.hu.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.hy.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.id.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.is.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.it.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ja.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.jv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ko.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ky.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.lt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.lv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.mk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.nl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.no.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.pl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.pt.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ro.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.rs.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ru.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.rw.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.si.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.sk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.sl.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.sq.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.sr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.sv.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.th.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.tr.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.uk.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.ur.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.uz.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.vi.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/toastr/toastr.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/toastr/toastr.js.map create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/toastr/toastr.min.css create mode 100644 src/AElfScanServer.AuthServer/wwwroot/libs/toastr/toastr.min.js create mode 100644 src/AElfScanServer.Common/AElfScanCommonModule.cs create mode 100644 src/AElfScanServer.Common/AElfScanPluginBaseModule.cs create mode 100644 src/AElfScanServer.Common/AElfScanServer.Common.csproj create mode 100644 src/AElfScanServer.Common/AElfScanServerHostBuilderExtensions.cs create mode 100644 src/AElfScanServer.Common/AElfSdk/ContractProvider.cs create mode 100644 src/AElfScanServer.Common/AElfSdk/Dtos/SenderAccount.cs create mode 100644 src/AElfScanServer.Common/AElfSdk/Dtos/SystemContractName.cs create mode 100644 src/AElfScanServer.Common/Address/Provider/AddressInfoProvider.cs create mode 100755 src/AElfScanServer.Common/AssertHelper.cs create mode 100644 src/AElfScanServer.Common/Commons/CommonAddressHelper.cs create mode 100644 src/AElfScanServer.Common/Commons/ConfigurationHelper.cs create mode 100644 src/AElfScanServer.Common/Commons/LogHelper.cs create mode 100644 src/AElfScanServer.Common/Commons/ZipHelper.cs create mode 100644 src/AElfScanServer.Common/Constant/AElfIndexerConstant.cs create mode 100644 src/AElfScanServer.Common/Constant/ApiInfoConstant.cs create mode 100644 src/AElfScanServer.Common/Constant/CommonConstant.cs create mode 100644 src/AElfScanServer.Common/Constant/TokenServerConstant.cs create mode 100644 src/AElfScanServer.Common/Contract/Provider/ContractProvider.cs create mode 100644 src/AElfScanServer.Common/Core/UmpAttribute.cs create mode 100644 src/AElfScanServer.Common/Core/UmpInterceptor.cs create mode 100644 src/AElfScanServer.Common/DataStrategy/IDataStrategy.cs create mode 100644 src/AElfScanServer.Common/Dtos/AddressNftInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/AddressTokenTransferInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/Ads/AdsDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/Ads/TwitterIndex.cs create mode 100644 src/AElfScanServer.Common/Dtos/AwakenTVLDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/BinancePriceDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/BlockChainDtos.cs create mode 100644 src/AElfScanServer.Common/Dtos/BlockSizeDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/BurntFeeDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/CMCCryptocurrency.cs create mode 100644 src/AElfScanServer.Common/Dtos/ChartData/DailyTransactionCount.cs create mode 100644 src/AElfScanServer.Common/Dtos/ChartData/NodeBlockProduceIndex.cs create mode 100644 src/AElfScanServer.Common/Dtos/CommonResponseDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/CommonTokenPriceDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/ContractFileResultDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/ContractVerifyResult.cs create mode 100644 src/AElfScanServer.Common/Dtos/ExternalInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/GetNFTListingsDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/GetTransferListResponseDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/HolderInfo.cs create mode 100644 src/AElfScanServer.Common/Dtos/Indexer/IndexerContractListDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/Indexer/IndexerDailyHolderDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/Indexer/IndexerNftActivityInfo.cs create mode 100644 src/AElfScanServer.Common/Dtos/Indexer/IndexerTokenHolderInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/Indexer/IndexerTokenInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/Indexer/IndexerTransferInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/Indexer/TransactionIndex.cs create mode 100644 src/AElfScanServer.Common/Dtos/IndexerNftListingInfo.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/BaseInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/GetActivitiesInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/GetNftCollectionInfoInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/GetNftListInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/GetTokenListInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/GetTransferInfoListInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/NftHolderInfoInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/NftInventoryInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/NftItemActivityInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/NftItemHolderInfoInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/NftItemInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/TokenHolderInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/Input/TokenListInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/ListResponseDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/LogEventIndex.cs create mode 100644 src/AElfScanServer.Common/Dtos/MarketInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/MergeData/AccountTokenIndex.cs create mode 100644 src/AElfScanServer.Common/Dtos/MergeData/TokenBase.cs create mode 100644 src/AElfScanServer.Common/Dtos/MergeData/TokenInfoIndex.cs create mode 100644 src/AElfScanServer.Common/Dtos/MetadataDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftCollectionInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftCollectionInfoResp.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftDetailDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftHolderInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftInfoListDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftInventoryDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftItemActivityDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftItemDetailDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftItemHolderInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/NftTransferInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/SynchronizationContractDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TestInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenBaseInfo.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenBaseInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenCommonDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenDetailDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenExchangeDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenHolderInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenHolderPercentDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenInfoListDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenPriceDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenTransferInfoDto.cs create mode 100644 src/AElfScanServer.Common/Dtos/TokenTransferInput.cs create mode 100644 src/AElfScanServer.Common/Dtos/TransactionFeeDto.cs create mode 100644 src/AElfScanServer.Common/Entities/AElfIndexerEntity.cs create mode 100755 src/AElfScanServer.Common/Entities/AbstractEntity.cs create mode 100644 src/AElfScanServer.Common/Entities/NftCollectionHolderInfoIndex.cs create mode 100644 src/AElfScanServer.Common/Enums/AddressAssetType.cs create mode 100644 src/AElfScanServer.Common/Enums/NFTActivityType.cs create mode 100644 src/AElfScanServer.Common/Enums/SortDirection.cs create mode 100644 src/AElfScanServer.Common/Enums/SortField.cs create mode 100644 src/AElfScanServer.Common/Enums/TokenCreatedExternalInfoEnum.cs create mode 100644 src/AElfScanServer.Common/Enums/TransactionStatus.cs create mode 100644 src/AElfScanServer.Common/EsIndex/EsIndex.cs create mode 100644 src/AElfScanServer.Common/ExceptionHandling/ExceptionHandlingService.cs create mode 100644 src/AElfScanServer.Common/GraphQL/GraphQLHelper.cs create mode 100644 src/AElfScanServer.Common/GraphQL/GraphQlFactory.cs create mode 100644 src/AElfScanServer.Common/Helper/AssertHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/BaseConverter.cs create mode 100644 src/AElfScanServer.Common/Helper/BlockHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/CommomHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/DecimalHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/EnumConverter.cs create mode 100644 src/AElfScanServer.Common/Helper/EnumDescriptionHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/IdGeneratorHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/RedisHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/StringHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/TimeHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/TokenInfoHelper.cs create mode 100644 src/AElfScanServer.Common/Helper/TokenSymbolHelper.cs create mode 100755 src/AElfScanServer.Common/HttpClient/ApiInfo.cs create mode 100755 src/AElfScanServer.Common/HttpClient/HttpProvider.cs create mode 100755 src/AElfScanServer.Common/HttpClient/JsonSettingsBuilder.cs create mode 100644 src/AElfScanServer.Common/IndexerPluginProvider/AddressTypeProvider.cs create mode 100644 src/AElfScanServer.Common/IndexerPluginProvider/AwakenIndexerProvider.cs create mode 100644 src/AElfScanServer.Common/IndexerPluginProvider/NftCollectionHolderProvider.cs create mode 100644 src/AElfScanServer.Common/IndexerPluginProvider/NftInfoProvider.cs create mode 100644 src/AElfScanServer.Common/IndexerPluginProvider/TokenIndexerProvider.cs create mode 100644 src/AElfScanServer.Common/NodeProvider/AElfClientFactory.cs create mode 100644 src/AElfScanServer.Common/NodeProvider/NodeProvider.cs create mode 100644 src/AElfScanServer.Common/Options/AddressAssetOptions.cs create mode 100644 src/AElfScanServer.Common/Options/ApiClientOption.cs create mode 100644 src/AElfScanServer.Common/Options/AssetsInfoOptions.cs create mode 100755 src/AElfScanServer.Common/Options/ChainOptions.cs create mode 100644 src/AElfScanServer.Common/Options/CoinGeckoOptions.cs create mode 100644 src/AElfScanServer.Common/Options/EsOptions.cs create mode 100644 src/AElfScanServer.Common/Options/ExchangeOptions.cs create mode 100644 src/AElfScanServer.Common/Options/GlobalOptions.cs create mode 100644 src/AElfScanServer.Common/Options/IndexerOptions.cs create mode 100644 src/AElfScanServer.Common/Options/NetWorkReflectionOptions.cs create mode 100644 src/AElfScanServer.Common/Options/PullTransactionChainIdsOptions.cs create mode 100644 src/AElfScanServer.Common/Options/SecretOptions.cs create mode 100644 src/AElfScanServer.Common/Options/TokenInfoOptions.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs0.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs0.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs10.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs10.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs12.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs12.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs2.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/Acs2.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/AedposContract.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/AedposContract.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/AuthorityInfo.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/CaContract.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/CaContract.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/TokenContract.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/TokenContract.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/TransactionFee.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/TransactionFee.g.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/TreasuryContract.c.cs create mode 100644 src/AElfScanServer.Common/Protobuf/Generated/Protobuf/Generated/TreasuryContract.g.cs create mode 100644 src/AElfScanServer.Common/Provider/AwsS3Provider.cs create mode 100644 src/AElfScanServer.Common/Provider/K8sProvider.cs create mode 100644 src/AElfScanServer.Common/Redis/RedisDatabaseExtension.cs create mode 100644 src/AElfScanServer.Common/Reporter/MetricsOption.cs create mode 100644 src/AElfScanServer.Common/Reporter/MetricsReporter.cs create mode 100644 src/AElfScanServer.Common/Reporter/TotalExecutionTimeRecorder.cs create mode 100644 src/AElfScanServer.Common/ThirdPart/Exchange/CoinMarketCapProvider.cs create mode 100644 src/AElfScanServer.Common/Token/Provider/TokenExchangeProvider.cs create mode 100644 src/AElfScanServer.Common/Token/Provider/TokenInfoProvider.cs create mode 100644 src/AElfScanServer.Common/Token/TokenPriceService.cs create mode 100644 src/AElfScanServer.DbMigrator/AElfScanServer.DbMigrator.csproj create mode 100644 src/AElfScanServer.DbMigrator/AElfScanServerDbMigratorModule.cs create mode 100644 src/AElfScanServer.DbMigrator/DbMigratorHostedService.cs create mode 100644 src/AElfScanServer.DbMigrator/Program.cs create mode 100644 src/AElfScanServer.DbMigrator/appsettings.json create mode 100644 src/AElfScanServer.DbMigrator/appsettings.secrets.json create mode 100755 src/AElfScanServer.Domain.Shared/AElfScanServer.Domain.Shared.csproj create mode 100755 src/AElfScanServer.Domain.Shared/AElfScanServerDomainErrorCodes.cs create mode 100755 src/AElfScanServer.Domain.Shared/AElfScanServerDomainSharedModule.cs create mode 100755 src/AElfScanServer.Domain.Shared/AElfScanServerGlobalFeatureConfigurator.cs create mode 100755 src/AElfScanServer.Domain.Shared/AElfScanServerModuleExtensionConfigurator.cs create mode 100755 src/AElfScanServer.Domain.Shared/Common/ChainConstants.cs create mode 100755 src/AElfScanServer.Domain.Shared/Common/DeviceType.cs create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/ar.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/cs.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/de.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/en-GB.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/en.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/es.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/fi.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/fr.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/hi.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/hr.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/hu.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/is.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/it.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/nl.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/pl-PL.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/pt-BR.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/ro-RO.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/ru.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/sk.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/sl.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServer/tr.json create mode 100755 src/AElfScanServer.Domain.Shared/Localization/AElfScanServerResource.cs create mode 100755 src/AElfScanServer.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs create mode 100644 src/AElfScanServer.Domain.Shared/Options/AppOptions.cs create mode 100755 src/AElfScanServer.Domain.Shared/Samples/Users/UserGrainDto.cs create mode 100755 src/AElfScanServer.Domain/AElfScanServer.Domain.csproj create mode 100755 src/AElfScanServer.Domain/AElfScanServerConsts.cs create mode 100755 src/AElfScanServer.Domain/AElfScanServerDomainModule.cs create mode 100755 src/AElfScanServer.Domain/Data/AElfScanServerDbMigrationService.cs create mode 100755 src/AElfScanServer.Domain/Data/IAElfScanServerDbSchemaMigrator.cs create mode 100755 src/AElfScanServer.Domain/Data/NullAElfScanServerDbSchemaMigrator.cs create mode 100644 src/AElfScanServer.Domain/OpenIddict/OpenIddictDataSeedContributor.cs create mode 100755 src/AElfScanServer.Domain/Properties/AssemblyInfo.cs create mode 100644 src/AElfScanServer.Grains/AElfScanServer.Grains.csproj create mode 100644 src/AElfScanServer.Grains/AElfScanServerGrainsModule.cs create mode 100644 src/AElfScanServer.Grains/Grain/Ads/AdsGain.cs create mode 100644 src/AElfScanServer.Grains/Grain/Ads/IAdsGrain.cs create mode 100644 src/AElfScanServer.Grains/Grain/Contract/ContractFileCodeGrain.cs create mode 100644 src/AElfScanServer.Grains/Grain/Contract/IContractFileCodeGrain.cs create mode 100644 src/AElfScanServer.Grains/Grain/Contract/ISynchronizationContractGrain.cs create mode 100644 src/AElfScanServer.Grains/Grain/Contract/SynchronizationContractGrain.cs create mode 100644 src/AElfScanServer.Grains/GrainIdHelper.cs create mode 100644 src/AElfScanServer.Grains/GrainsAutoMapperProfile.cs create mode 100644 src/AElfScanServer.Grains/State/Ads/AdsState.cs create mode 100644 src/AElfScanServer.Grains/State/Contract/ContractFileCodeState.cs create mode 100644 src/AElfScanServer.Grains/State/Contract/SynchronizationContractState.cs create mode 100644 src/AElfScanServer.Grains/SychronizationType.cs create mode 100644 src/AElfScanServer.HttpApi.Host/AElfScanServer.HttpApi.Host.csproj create mode 100755 src/AElfScanServer.HttpApi.Host/Extension/ApolloConfigurationExtension.cs create mode 100644 src/AElfScanServer.HttpApi.Host/HttpApiHostModule.cs create mode 100644 src/AElfScanServer.HttpApi.Host/OrleansHostExtensions.cs create mode 100644 src/AElfScanServer.HttpApi.Host/Plugins/AElfScan.Plugin.NFT.dll create mode 100644 src/AElfScanServer.HttpApi.Host/Plugins/AElfScan.Plugin.Portkey.dll create mode 100644 src/AElfScanServer.HttpApi.Host/Program.cs create mode 100644 src/AElfScanServer.HttpApi.Host/TokenImage/BTETE.png create mode 100644 src/AElfScanServer.HttpApi.Host/TokenImage/ETH.png create mode 100644 src/AElfScanServer.HttpApi.Host/TokenImage/ETHTE.png create mode 100644 src/AElfScanServer.HttpApi.Host/TokenImage/USDC.png create mode 100644 src/AElfScanServer.HttpApi.Host/TokenImage/USDT.png create mode 100755 src/AElfScanServer.HttpApi.Host/apollo.appsettings.json create mode 100644 src/AElfScanServer.HttpApi.Host/appsettings.json create mode 100644 src/AElfScanServer.HttpApi.Host/secrets.json create mode 100644 src/AElfScanServer.HttpApi/AElfScanServer.HttpApi.csproj create mode 100644 src/AElfScanServer.HttpApi/Constant/BlockChainConstant.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/AddressController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/AdsController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/BlockChainController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/ChartDataController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/ContractUpdateController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/ContractVerifyController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/OpenApiController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/TokenController.cs create mode 100644 src/AElfScanServer.HttpApi/Controllers/UserController.cs create mode 100644 src/AElfScanServer.HttpApi/DataStrategy/CurrentBpProduceDataStrategy.cs create mode 100644 src/AElfScanServer.HttpApi/DataStrategy/LatestBlocksDataStrategy.cs create mode 100644 src/AElfScanServer.HttpApi/DataStrategy/LatestTransactionDataStrategy.cs create mode 100644 src/AElfScanServer.HttpApi/DataStrategy/OverviewDataStrategy.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/AElfAddressInput.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/AdsData/AdsReq.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/AdsData/TwitterResponseDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/AelfIndexerDtos.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/BlockChainDtos.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/BlockChainTestInput.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/ChartData/AddressCount.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/ChartData/TransactionCount.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/ContractVerifyDtos.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/ESIndex.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/GetLogEventListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/Indexer/IndexerAddressTransactionCountDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/Indexer/IndexerTransactionCountDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/Indexer/IndexerTransactionListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/Indexer/common.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/OpenApi/openApiDtos.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/OrganizationUnitDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/RegisterUserWithOrganizationInput.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/AccountInfoDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/AccountTokenDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/AddressControllerBasicDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/ContractRegistrationDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/DecompilerDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetAddressDetailDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetAddressListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetAddressNftListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetAddressTokenListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractDetailDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractEvent.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractEventListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractFileDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractHistoryDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractTokenListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetContractTransactionListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetTransactionDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GetTransferListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/GraphQLDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/IndexerAccountTokenDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/IndexerAddressListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/IndexerContractRecordListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/IndexerContractRegistrationListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/IndexerTokenInfoDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/IndexerTransferInfoListDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/TokenBaseDto.cs create mode 100644 src/AElfScanServer.HttpApi/Dtos/address/TransferInfoDto.cs create mode 100644 src/AElfScanServer.HttpApi/Helper/BlockChainIndexNameHelper.cs create mode 100644 src/AElfScanServer.HttpApi/Helper/HubGroupHelper.cs create mode 100644 src/AElfScanServer.HttpApi/HttpApiAutoMapperProfile.cs create mode 100644 src/AElfScanServer.HttpApi/HttpApiModule.cs create mode 100644 src/AElfScanServer.HttpApi/Hubs/ExploreHub.cs create mode 100644 src/AElfScanServer.HttpApi/Options/AELFIndexerOptions.cs create mode 100644 src/AElfScanServer.HttpApi/Options/DecompilerOption.cs create mode 100644 src/AElfScanServer.HttpApi/Options/TwitterOptions.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs0.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs0.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs10.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs10.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs12.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs12.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs2.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/Acs2.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/AedposContract.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/AedposContract.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/AuthorityInfo.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/CaContract.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/CaContract.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/TokenContract.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/TokenContract.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/TransactionFee.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/TransactionFee.g.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/TreasuryContract.c.cs create mode 100644 src/AElfScanServer.HttpApi/Protobuf/Generated/Protobuf/Generated/TreasuryContract.g.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/AELFIndexerProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/BlockChainDataProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/BlockChainIndexerProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/DailyHodlerProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/DecompilerProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/HomePageProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/IndexerGenesisProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/IndexerTokenProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/LogEventProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/TokenAssetProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/TokenHolderPercentProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Provider/TwitterProvider.cs create mode 100644 src/AElfScanServer.HttpApi/Service/AddressAppService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/AddressService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/AddressTypeService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/AdsService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/BlockChainService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/ChartDataService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/ContractAppService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/ContractFileComparer.cs create mode 100644 src/AElfScanServer.HttpApi/Service/ContractVerifyService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/DynamicTransactionService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/HomePageService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/IOpenApiService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/SearchService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/TokenService.cs create mode 100644 src/AElfScanServer.HttpApi/Service/UserAppService.cs create mode 100644 src/AElfScanServer.MongoDB/AElfScanServer.MongoDB.csproj create mode 100644 src/AElfScanServer.MongoDB/MongoDb/AElfScanServerMongoDbContext.cs create mode 100644 src/AElfScanServer.MongoDB/MongoDb/AElfScanServerMongoDbModule.cs create mode 100644 src/AElfScanServer.MongoDB/MongoDb/MongoDbAElfScanServerDbSchemaMigrator.cs create mode 100644 src/AElfScanServer.MongoDB/Properties/AssemblyInfo.cs create mode 100644 src/AElfScanServer.Silo/AElfScanServer.Silo.csproj create mode 100644 src/AElfScanServer.Silo/AElfScanServerHostedService.cs create mode 100644 src/AElfScanServer.Silo/AElfScanServerJsonGrainStateSerializer.cs create mode 100644 src/AElfScanServer.Silo/AElfScanServerSiloModule.cs create mode 100644 src/AElfScanServer.Silo/Extensions/OrleansHostExtensions.cs create mode 100644 src/AElfScanServer.Silo/Program.cs create mode 100644 src/AElfScanServer.Silo/appsettings.apollo.json create mode 100644 src/AElfScanServer.Silo/appsettings.json create mode 100644 src/AElfScanServer.Silo/secrets.json create mode 100644 src/AElfScanServer.Worker.Core/AElfScanServer.Worker.Core.csproj create mode 100644 src/AElfScanServer.Worker.Core/AElfScanServerAutoMapperProfile.cs create mode 100644 src/AElfScanServer.Worker.Core/AElfScanServerWorkerCoreModule.cs create mode 100644 src/AElfScanServer.Worker.Core/Dtos/BlockChainProducerInfoDto.cs create mode 100644 src/AElfScanServer.Worker.Core/Dtos/ContractInfoDto.cs create mode 100644 src/AElfScanServer.Worker.Core/Dtos/PropertyDto.cs create mode 100644 src/AElfScanServer.Worker.Core/Dtos/SearchHeightDto.cs create mode 100644 src/AElfScanServer.Worker.Core/Dtos/TransferEventDto.cs create mode 100644 src/AElfScanServer.Worker.Core/Options/BlockChainProducerInfoSyncWorkerOptions.cs create mode 100644 src/AElfScanServer.Worker.Core/Options/ContractInfoSyncWorkerOptions.cs create mode 100644 src/AElfScanServer.Worker.Core/Options/TokenTransferMonitoringOptions.cs create mode 100644 src/AElfScanServer.Worker.Core/Options/WorkerOptions.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/Acs0.c.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/Acs0.g.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/AedposContract.g.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/TokenContract.c.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/TokenContract.g.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/TransactionFee.c.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/TransactionFee.g.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/VoteContract.c.cs create mode 100644 src/AElfScanServer.Worker.Core/Protobuf/Generated/VoteContract.g.cs create mode 100644 src/AElfScanServer.Worker.Core/Provider/EventHandler.cs create mode 100644 src/AElfScanServer.Worker.Core/Provider/StorageProvider.cs create mode 100644 src/AElfScanServer.Worker.Core/Service/AddressService.cs create mode 100644 src/AElfScanServer.Worker.Core/Service/ITokenTransferMonitoringService.cs create mode 100644 src/AElfScanServer.Worker.Core/Service/TokenTransferMonitoringService.cs create mode 100644 src/AElfScanServer.Worker.Core/Service/TransactionService.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/AddressAssetCalcWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/BlockChainProducerInfoSyncWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/BlockSizeWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/BnElfUsdtPriceWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/ContractFileWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/CurrentBpProduceWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/DailyNetworkStatisticWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/FixDailyTransactionWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/HomePageOverviewWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/LatestBlocksWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/LatestTransactionsWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/LogEventDelWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/LogEventWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/MergeAddressWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/MergeDataWorker/DeleteMergeBlocksWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/MergeDataWorker/FixTokenHolderInfoWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/MergeDataWorker/TokenInfoWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/MonthlyActiveAddressWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/RoundWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/TokenHolderPercentWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/TokenTransferMonitoringWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/TransactionIndexWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/TransactionRatePerMinuteWorker.cs create mode 100644 src/AElfScanServer.Worker.Core/Worker/TwitterSyncWorker.cs create mode 100644 src/AElfScanServer.Worker/AElfScanServer.Worker.csproj create mode 100644 src/AElfScanServer.Worker/AElfScanServerHostedService.cs create mode 100644 src/AElfScanServer.Worker/AElfScanServerWorkerModule.cs create mode 100755 src/AElfScanServer.Worker/Extension/ApolloConfigurationExtension.cs create mode 100644 src/AElfScanServer.Worker/OrleansHostExtensions.cs create mode 100644 src/AElfScanServer.Worker/Program.cs create mode 100755 src/AElfScanServer.Worker/apollo.appsettings.json create mode 100644 src/AElfScanServer.Worker/appsettings.json create mode 100644 src/AElfScanServer.Worker/secrets.json diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..ea59817c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: 👾 Bug Report +about: Report a bug or issue with the project. +title: '' +labels: 'bug' +assignees: '' + +--- + +### Description +A clear and concise description of what the bug is. + +### Steps To Reproduce +1. Log in... +2. Ensure that... +3. Allow a long period of inactivity to pass... +4. Observe that... +5. Attempt to log in... + +### Current Behavior +- After the period of inactivity... +- When the user tries to log in using another method... +- This causes a bug due to... + +### Expected Behavior +- After a long period of inactivity... +- When a user logs in successfully... +- This ensures that only... + +### Environment +- Platform: PC +- Node: v18.18.0 +- Browser: Chrome 126.0.6478.56 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..163c1c43 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,10 @@ +blank_issues_enabled: false +issue_template: + - name: 👾 Bug Report + description: Report a bug or issue with the project. + labels: ["bug"] + template: bug_report.md + - name: 💡 Feature Request + description: Create a new ticket for a new feature request. + labels: ["enhancement"] + template: feature_request.md \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..a4b81753 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,27 @@ +--- +name: 💡 Feature Request +about: Create a new ticket for a new feature request +title: '' +labels: 'enhancement' +assignees: '' + +--- + +### Expected Behavior +Describe the expected behavior here. + +### Specifications +As a `user`, I would like to `action` so that `reason`. + +**Features:** +- describe feature details here. + +**Development Tasks:** +- [ ] Task 1 +- [ ] Task 2 + +### Dependencies +List any dependencies that are required for this feature by providing links to the issues or repositories. + +### References +List any references that are related to this feature request. \ No newline at end of file diff --git a/.github/workflows/deploy-tag.yaml b/.github/workflows/deploy-tag.yaml new file mode 100644 index 00000000..6e9e5702 --- /dev/null +++ b/.github/workflows/deploy-tag.yaml @@ -0,0 +1,97 @@ +name: Build and Deploy Release + +on: + push: + tags: + - "v*.*.*" +env: + DOTNET_INSTALL_DIR: "./.dotnet" + +jobs: + publish: + runs-on: aelfscan-runner + strategy: + matrix: + servicename: + [ + AElfScanServer.Worker, + AElfScanServer.HttpApi.Host, + AElfScanServer.Silo, + AElfScanServer.AuthServer, + AElfScanServer.DbMigrator + ] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: "8.0" + - run: dotnet publish src/${{ matrix.servicename }}/${{ matrix.servicename }}.csproj -o out/${{ matrix.servicename }} + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.servicename }} + path: out/${{ matrix.servicename }} + retention-days: 1 + build-and-push-image: + needs: publish + runs-on: aelfscan-runner + strategy: + matrix: + servicename: + [ + AElfScanServer.Worker, + AElfScanServer.HttpApi.Host, + AElfScanServer.Silo, + AElfScanServer.AuthServer, + AElfScanServer.DbMigrator + ] + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Download a single artifact + uses: actions/download-artifact@v4 + with: + name: ${{ matrix.servicename }} + path: out/${{ matrix.servicename }} + - name: Create image tag + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.REPOSITORY_REGION }}-docker.pkg.dev/${{ secrets.PROJECT_ID }}/${{ secrets.REPOSITORY }}/${{ matrix.servicename }} + tags: | + type=ref,event=tag + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + build-args: | + servicename=${{ matrix.servicename }} + platforms: linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + dispatch: + runs-on: aelfscan-runner + needs: build-and-push-image + steps: + - name: Deploy + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.TOK }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'AelfScanProject', + repo: 'devops', + workflow_id: 'aelf-explorer-server-deploy.yaml', + ref: 'main', + inputs: { + env: 'production', + appName: 'aelf-explorer-backend', + commit_sha: '${{ github.ref_name }}', + } + }) diff --git a/.github/workflows/deploy-testnet-pre.yaml b/.github/workflows/deploy-testnet-pre.yaml new file mode 100644 index 00000000..07a60391 --- /dev/null +++ b/.github/workflows/deploy-testnet-pre.yaml @@ -0,0 +1,96 @@ +name: Build and Deploy Testnet Pre + +on: + push: + branches: + - "pre-release/*" +env: + DOTNET_INSTALL_DIR: "./.dotnet" + +jobs: + publish: + runs-on: aelfscan-runner + strategy: + matrix: + servicename: + [ + AElfScanServer.HttpApi.Host, + ] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: "8.0" + - run: dotnet publish src/${{ matrix.servicename }}/${{ matrix.servicename }}.csproj -o out/${{ matrix.servicename }} + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.servicename }} + path: out/${{ matrix.servicename }} + retention-days: 1 + build-and-push-image: + needs: publish + runs-on: aelfscan-runner + strategy: + matrix: + servicename: + [ + AElfScanServer.HttpApi.Host, + ] + permissions: + contents: read + outputs: + short_sha: ${{ steps.vars.outputs.short_sha }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set short git commit SHA + id: vars + run: | + calculatedSha=$(git rev-parse --short ${{ github.sha }}) + echo "short_sha=$calculatedSha" >> "$GITHUB_OUTPUT" + - name: Download a single artifact + uses: actions/download-artifact@v4 + with: + name: ${{ matrix.servicename }} + path: out/${{ matrix.servicename }} + - name: Create image tag + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.REPOSITORY_REGION }}-docker.pkg.dev/${{ secrets.PROJECT_ID }}/${{ secrets.REPOSITORY }}/${{ matrix.servicename }} + tags: | + type=sha + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + build-args: | + servicename=${{ matrix.servicename }} + platforms: linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + dispatch: + runs-on: aelfscan-runner + needs: build-and-push-image + steps: + - name: Deploy + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.TOK }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'AelfScanProject', + repo: 'devops', + workflow_id: 'aelf-explorer-server-deploy.yaml', + ref: 'main', + inputs: { + env: 'testnet', + appName: 'aelf-explorer-httpapi-host-pre', + commit_sha: 'sha-${{ needs.build-and-push-image.outputs.short_sha }}', + } + }) diff --git a/.github/workflows/deploy-testnet.yaml b/.github/workflows/deploy-testnet.yaml new file mode 100644 index 00000000..bcce1fde --- /dev/null +++ b/.github/workflows/deploy-testnet.yaml @@ -0,0 +1,122 @@ +name: Build and Deploy Testnet + +on: + workflow_dispatch: + inputs: + servicename: + description: 'Select service to build and deploy' + required: true + default: 'AElfScanServer.Worker' + type: choice + options: + - AElfScanServer.Worker + - AElfScanServer.HttpApi.Host + - AElfScanServer.Silo + - AElfScanServer.AuthServer + - AElfScanServer.DbMigrator + +env: + DOTNET_INSTALL_DIR: "./.dotnet" + +jobs: + publish: + runs-on: aelfscan-runner + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: "8.0" + - run: dotnet publish src/${{ github.event.inputs.servicename}}/${{ github.event.inputs.servicename }}.csproj -o out/${{ github.event.inputs.servicename }} + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ github.event.inputs.servicename }} + path: out/${{ github.event.inputs.servicename }} + retention-days: 1 + + build-and-push-image: + needs: publish + runs-on: aelfscan-runner + permissions: + contents: read + outputs: + short_sha: ${{ steps.vars.outputs.short_sha }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set short git commit SHA + id: vars + run: | + calculatedSha=$(git rev-parse --short ${{ github.sha }}) + echo "short_sha=$calculatedSha" >> "$GITHUB_OUTPUT" + - name: Download a single artifact + uses: actions/download-artifact@v4 + with: + name: ${{ github.event.inputs.servicename }} + path: out/${{ github.event.inputs.servicename }} + - name: Create image tag + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.REPOSITORY_REGION }}-docker.pkg.dev/${{ secrets.PROJECT_ID }}/${{ secrets.REPOSITORY }}/${{ github.event.inputs.servicename }} + tags: | + type=sha + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + build-args: | + servicename=${{ github.event.inputs.servicename }} + platforms: linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + dispatch: + runs-on: aelfscan-runner + needs: build-and-push-image + steps: + - name: Map servicename to appName + id: map-appname + run: | + case "${{ github.event.inputs.servicename }}" in + "AElfScanServer.HttpApi.Host") + appName="aelf-explorer-httpapi-host" + ;; + "AElfScanServer.Worker") + appName="aelf-explorer-worker" + ;; + "AElfScanServer.Silo") + appName="aelf-explorer-silo" + ;; + "AElfScanServer.AuthServer") + appName="aelf-explorer-authserver" + ;; + "AElfScanServer.DbMigrator") + appName="aelf-explorer-dbmigrator" + ;; + *) + echo "Unknown service name: ${{ github.event.inputs.servicename }}" + exit 1 + ;; + esac + echo "appName=$appName" >> "$GITHUB_ENV" + + - name: Deploy + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.TOK }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'AelfScanProject', + repo: 'devops', + workflow_id: 'aelf-explorer-server-deploy.yaml', + ref: 'main', + inputs: { + env: 'testnet', + appName: process.env.appName, + commit_sha: 'sha-${{ needs.build-and-push-image.outputs.short_sha }}', + } + }) \ No newline at end of file diff --git a/.github/workflows/test-with-code-coverage.yml b/.github/workflows/test-with-code-coverage.yml new file mode 100644 index 00000000..b07df5c0 --- /dev/null +++ b/.github/workflows/test-with-code-coverage.yml @@ -0,0 +1,55 @@ +name: Test with code coverage + +on: + push: + branches: + - '**' + +env: + DOTNET_INSTALL_DIR: "./.dotnet" + +jobs: + test: + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: write + services: + elasticsearch: + image: elasticsearch:7.17.0 + ports: + - 9200:9200 + options: -e="discovery.type=single-node" -e="xpack.security.enabled=false" --health-cmd="curl http://localhost:9200/_cluster/health" --health-interval=10s --health-timeout=5s --health-retries=10 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup dotnet + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0' + - name: Verify Elasticsearch connection + env: + ELASTIC_SEARCH_URL: http://127.0.0.1:${{ job.services.elasticsearch.ports[9200] }} + run: | + echo $ELASTIC_SEARCH_URL + curl -fsSL "$ELASTIC_SEARCH_URL/_cat/health?h=status" + - name: Install dependencies + run: dotnet restore --verbosity quiet + + - name: Build + run: dotnet build --no-restore /clp:ErrorsOnly /p:GeneratePackageOnBuild=false --verbosity quiet + + - name: Test + run: | + for name in `ls ./test/*.Tests/*.csproj | awk '{print $NF}'`; + do + dotnet test ${name} --no-restore --no-build --logger trx --settings CodeCoverage.runsettings --results-directory coverage --collect:"XPlat Code Coverage" + done + +# - name: Upload coverage reports to Codecov +# uses: codecov/codecov-action@v4 +# with: +# fail_ci_if_error: true +# files: coverage/*/coverage.cobertura.xml +# env: +# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..11a9e6e9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,316 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +src/AElfScanServer.HttpApi.Host/Logs/logs.txt +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/a +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# Visual Studio Code +.vscode + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc +*.DS_Store + +.vs/ +slnx.sqlite + +# Generated Protobuf classes +grpc_csharp_plugin +*Grpc.cs +#**/Generated/*.cs + +launchSettings.json + +# dev settings +*/**/appsettings.Development.json + +yarn.lock + +results/coverage.json +results/coverage.opencover.xml + +aelf.js + +scripts/contract_csharp_plugin +scripts/contract_csharp_plugin.exe + +**/BenchmarkDotNet.Artifacts/* + +Contracts.manifest + +# coverage result +coverage*.json +coverage*.xml + +# zip package +*.gz +*.zip + +# Contract patcher dlls +scripts/patcher/* + +tools +.dotnet +.idea/ +.idea/.idea.AElfScanServer/.idea/contentModel.xml +.idea/.idea.AElfScanServer/.idea/encodings.xml +.idea/.idea.AElfScanServer/.idea/indexLayout.xml +.idea/.idea.AElfScanServer/.idea/misc.xml +.idea/.idea.AElfScanServer/.idea/modules.xml +.idea/.idea.AElfScanServer/.idea/projectSettingsUpdater.xml +.idea/.idea.AElfScanServer/.idea/vcs.xml +.idea/.idea.AElfScanServer/.idea/workspace.xml +.idea/.idea.AElfScanServer/riderModule.iml diff --git a/AElfScanServer.sln b/AElfScanServer.sln new file mode 100755 index 00000000..aac2d914 --- /dev/null +++ b/AElfScanServer.sln @@ -0,0 +1,131 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29020.237 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AElfScanServer.Domain", "src\AElfScanServer.Domain\AElfScanServer.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA9AC87F-097E-4F15-8393-4BC07735A5B0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AElfScanServer.Domain.Shared", "src\AElfScanServer.Domain.Shared\AElfScanServer.Domain.Shared.csproj", "{42F719ED-8413-4895-B5B4-5AB56079BC66}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.Common", "src\AElfScanServer.Common\AElfScanServer.Common.csproj", "{6476A52E-8A81-46B9-A8F8-43BF259F1FE3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.HttpApi", "src\AElfScanServer.HttpApi\AElfScanServer.HttpApi.csproj", "{F0E74427-B6E8-457D-A793-052570DB1A2E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.HttpApi.Host", "src\AElfScanServer.HttpApi.Host\AElfScanServer.HttpApi.Host.csproj", "{F9B10DAC-1B93-4BCE-BB64-75ACC9F24C5E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.Worker", "src\AElfScanServer.Worker\AElfScanServer.Worker.csproj", "{D6E727D9-BAF0-4470-B030-6E25203FA60B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.Worker.Core", "src\AElfScanServer.Worker.Core\AElfScanServer.Worker.Core.csproj", "{FB54DD04-A56F-4E75-BF2C-B5D80525B7E2}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "plugins", "plugins", "{602A39E5-9813-4D02-8E33-E472123309AF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScan.Plugin.NFT", "plugins\AElfScan.Plugin.NFT\AElfScan.Plugin.NFT.csproj", "{5695FDA5-227C-4659-BF3E-6386BA5FC6C9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.Silo", "src\AElfScanServer.Silo\AElfScanServer.Silo.csproj", "{C2D5DE06-0961-4E4F-9A1C-9B7ECBC7BBC4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.Grains", "src\AElfScanServer.Grains\AElfScanServer.Grains.csproj", "{24FC47A3-6C77-49CD-B848-2CDFEB0D98F3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.AuthServer", "src\AElfScanServer.AuthServer\AElfScanServer.AuthServer.csproj", "{8E555607-A9B0-48CB-A1CC-835E23E34F2D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.MongoDB", "src\AElfScanServer.MongoDB\AElfScanServer.MongoDB.csproj", "{A5563C59-EEEA-4DFD-85B5-D52D8E147D2A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.Application", "src\AElfScanServer.Application\AElfScanServer.Application.csproj", "{2585D13E-E9AF-4FFC-B6FD-2F84FE7FF4A5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.Application.Contracts", "src\AElfScanServer.Application.Contracts\AElfScanServer.Application.Contracts.csproj", "{7CAC4244-DA1D-496F-91C4-0C222740227F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AElfScanServer.DbMigrator", "src\AElfScanServer.DbMigrator\AElfScanServer.DbMigrator.csproj", "{7FE8BFF1-4C05-424A-9FF6-334B77057A1B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.Build.0 = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.Build.0 = Release|Any CPU + {6476A52E-8A81-46B9-A8F8-43BF259F1FE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6476A52E-8A81-46B9-A8F8-43BF259F1FE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6476A52E-8A81-46B9-A8F8-43BF259F1FE3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6476A52E-8A81-46B9-A8F8-43BF259F1FE3}.Release|Any CPU.Build.0 = Release|Any CPU + {F0E74427-B6E8-457D-A793-052570DB1A2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0E74427-B6E8-457D-A793-052570DB1A2E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0E74427-B6E8-457D-A793-052570DB1A2E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0E74427-B6E8-457D-A793-052570DB1A2E}.Release|Any CPU.Build.0 = Release|Any CPU + {F9B10DAC-1B93-4BCE-BB64-75ACC9F24C5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9B10DAC-1B93-4BCE-BB64-75ACC9F24C5E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9B10DAC-1B93-4BCE-BB64-75ACC9F24C5E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9B10DAC-1B93-4BCE-BB64-75ACC9F24C5E}.Release|Any CPU.Build.0 = Release|Any CPU + {D6E727D9-BAF0-4470-B030-6E25203FA60B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6E727D9-BAF0-4470-B030-6E25203FA60B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6E727D9-BAF0-4470-B030-6E25203FA60B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6E727D9-BAF0-4470-B030-6E25203FA60B}.Release|Any CPU.Build.0 = Release|Any CPU + {FB54DD04-A56F-4E75-BF2C-B5D80525B7E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB54DD04-A56F-4E75-BF2C-B5D80525B7E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB54DD04-A56F-4E75-BF2C-B5D80525B7E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB54DD04-A56F-4E75-BF2C-B5D80525B7E2}.Release|Any CPU.Build.0 = Release|Any CPU + {5695FDA5-227C-4659-BF3E-6386BA5FC6C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5695FDA5-227C-4659-BF3E-6386BA5FC6C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5695FDA5-227C-4659-BF3E-6386BA5FC6C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5695FDA5-227C-4659-BF3E-6386BA5FC6C9}.Release|Any CPU.Build.0 = Release|Any CPU + {C2D5DE06-0961-4E4F-9A1C-9B7ECBC7BBC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C2D5DE06-0961-4E4F-9A1C-9B7ECBC7BBC4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C2D5DE06-0961-4E4F-9A1C-9B7ECBC7BBC4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C2D5DE06-0961-4E4F-9A1C-9B7ECBC7BBC4}.Release|Any CPU.Build.0 = Release|Any CPU + {24FC47A3-6C77-49CD-B848-2CDFEB0D98F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24FC47A3-6C77-49CD-B848-2CDFEB0D98F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24FC47A3-6C77-49CD-B848-2CDFEB0D98F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24FC47A3-6C77-49CD-B848-2CDFEB0D98F3}.Release|Any CPU.Build.0 = Release|Any CPU + {8E555607-A9B0-48CB-A1CC-835E23E34F2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E555607-A9B0-48CB-A1CC-835E23E34F2D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E555607-A9B0-48CB-A1CC-835E23E34F2D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E555607-A9B0-48CB-A1CC-835E23E34F2D}.Release|Any CPU.Build.0 = Release|Any CPU + {A5563C59-EEEA-4DFD-85B5-D52D8E147D2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A5563C59-EEEA-4DFD-85B5-D52D8E147D2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A5563C59-EEEA-4DFD-85B5-D52D8E147D2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A5563C59-EEEA-4DFD-85B5-D52D8E147D2A}.Release|Any CPU.Build.0 = Release|Any CPU + {2585D13E-E9AF-4FFC-B6FD-2F84FE7FF4A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2585D13E-E9AF-4FFC-B6FD-2F84FE7FF4A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2585D13E-E9AF-4FFC-B6FD-2F84FE7FF4A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2585D13E-E9AF-4FFC-B6FD-2F84FE7FF4A5}.Release|Any CPU.Build.0 = Release|Any CPU + {7CAC4244-DA1D-496F-91C4-0C222740227F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7CAC4244-DA1D-496F-91C4-0C222740227F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CAC4244-DA1D-496F-91C4-0C222740227F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7CAC4244-DA1D-496F-91C4-0C222740227F}.Release|Any CPU.Build.0 = Release|Any CPU + {7FE8BFF1-4C05-424A-9FF6-334B77057A1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FE8BFF1-4C05-424A-9FF6-334B77057A1B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FE8BFF1-4C05-424A-9FF6-334B77057A1B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FE8BFF1-4C05-424A-9FF6-334B77057A1B}.Release|Any CPU.Build.0 = Release|Any CPU + + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {42F719ED-8413-4895-B5B4-5AB56079BC66} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {6476A52E-8A81-46B9-A8F8-43BF259F1FE3} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {F0E74427-B6E8-457D-A793-052570DB1A2E} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {F9B10DAC-1B93-4BCE-BB64-75ACC9F24C5E} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {D6E727D9-BAF0-4470-B030-6E25203FA60B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {FB54DD04-A56F-4E75-BF2C-B5D80525B7E2} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {5695FDA5-227C-4659-BF3E-6386BA5FC6C9} = {602A39E5-9813-4D02-8E33-E472123309AF} + {C2D5DE06-0961-4E4F-9A1C-9B7ECBC7BBC4} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {24FC47A3-6C77-49CD-B848-2CDFEB0D98F3} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {8E555607-A9B0-48CB-A1CC-835E23E34F2D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {A5563C59-EEEA-4DFD-85B5-D52D8E147D2A} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {2585D13E-E9AF-4FFC-B6FD-2F84FE7FF4A5} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {7CAC4244-DA1D-496F-91C4-0C222740227F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {7FE8BFF1-4C05-424A-9FF6-334B77057A1B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} + EndGlobalSection +EndGlobal diff --git a/AElfScanServer.sln.DotSettings b/AElfScanServer.sln.DotSettings new file mode 100755 index 00000000..b31951b0 --- /dev/null +++ b/AElfScanServer.sln.DotSettings @@ -0,0 +1,23 @@ + + True + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + Required + Required + Required + Required + False + True + False + False + True + False + False + SQL + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..d678512a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0.302-1 +ARG servicename +WORKDIR /app +COPY out/$servicename . diff --git a/NuGet.Config b/NuGet.Config new file mode 100755 index 00000000..189eb557 --- /dev/null +++ b/NuGet.Config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/common.props b/common.props new file mode 100755 index 00000000..7e89c3a0 --- /dev/null +++ b/common.props @@ -0,0 +1,19 @@ + + + latest + 1.0.0 + $(NoWarn);CS1591 + app + + + + + $(NoWarn);0436 + + + + + + + + \ No newline at end of file diff --git a/doc/token-transfer-monitoring-design.md b/doc/token-transfer-monitoring-design.md new file mode 100644 index 00000000..3b08b51a --- /dev/null +++ b/doc/token-transfer-monitoring-design.md @@ -0,0 +1,279 @@ +# Token Transfer Monitoring System Design + +## Overview +This document outlines the design for a comprehensive token transfer monitoring system for AElfScan. The system monitors blockchain transfer events using time-based incremental scanning and sends metrics to Prometheus for alerting and analysis. + +## Architecture + +### Core Components +1. **TokenTransferMonitoringWorker** - Scheduled background worker with startup delay +2. **TokenTransferMonitoringService** - Business logic and time-based data processing +3. **OpenTelemetry Integration** - Metrics collection and transmission +4. **Prometheus** - Metrics storage and alerting + +### Data Flow +``` +Blockchain → AElfScan Indexer → TokenTransferMonitoringWorker → TokenTransferMonitoringService → OpenTelemetry → Prometheus → Alerting +``` + +### Key Features +- **Time-based incremental scanning** (not block height based) +- **System contract filtering** using existing GlobalOptions.ContractNames +- **Simplified address classification** (Normal, Blacklist only) +- **30-second startup delay** to avoid system startup overload +- **UTC time handling** with Redis-based scan time tracking +- **Single simplified metric** with essential dimensions + +## Prometheus Metrics Design + +### Single Unified Metric +We use one simplified histogram metric that captures essential transfer event dimensions: + +```prometheus +# HELP aelf_transfer_events Token transfer events with amount and metadata +# TYPE aelf_transfer_events histogram +aelf_transfer_events{ + chain_id="AELF", + symbol="ELF", + transfer_type="Transfer", + from_address="2N6dJpBcS5TLm2Pj4GkMdj4MnLhbKu8FGDX3Mz...", + to_address="2N6dJpBcS5TLm2Pj4GkMdj4MnLhbKu8FGDX3Mz...", + from_address_type="Normal", + to_address_type="Blacklist", + transaction_id="abc123..." +} +``` + +### Metric Dimensions + +| Label | Values | Description | +|-------|--------|-------------| +| `chain_id` | AELF, tDVV, tDVW | Blockchain identifier | +| `symbol` | ELF, USDT, BTC, ETH, etc. | Token symbol | +| `transfer_type` | Transfer, Burn, CrossChainTransfer, CrossChainReceive | Transfer operation type | +| `from_address` | Address string | Source address of the transfer | +| `to_address` | Address string | Destination address of the transfer | +| `from_address_type` | Normal, Blacklist | Source address classification | +| `to_address_type` | Normal, Blacklist | Destination address classification | +| `transaction_id` | Transaction hash | Unique transaction identifier for tracking | + +### Histogram Buckets +Amount distribution tracking with 4 buckets for clear categorization: +- **10**: Micro transfers (≤10) +- **1000**: Small transfers (10-1000) +- **100000**: Large transfers (1000-100000) +- **Infinity**: Massive transfers (>100000) + +## PromQL Query Examples + +### 1. Large Amount Transfers +```promql +# Transfers over 100,000 ELF in the last hour +increase(aelf_transfer_events_sum{symbol="ELF"}[1h]) +/ increase(aelf_transfer_events_count{symbol="ELF"}[1h]) > 100000 + +# Total large transfers by from address +sum by (from_address) ( + increase(aelf_transfer_events_sum{symbol="ELF"}[1h]) +) > 500000 +``` + +### 2. High-Frequency Trading +```promql +# Addresses with more than 100 transfers in the last hour +sum by (from_address) ( + increase(aelf_transfer_events_count[1h]) +) > 100 + +# High-frequency between specific addresses +sum by (from_address, to_address) ( + increase(aelf_transfer_events_count[1h]) +) > 50 +``` + +### 3. Blacklist Address Monitoring +```promql +# All transfers from blacklist addresses +increase(aelf_transfer_events_count{from_address_type="Blacklist"}[1h]) + +# All transfers to blacklist addresses +increase(aelf_transfer_events_count{to_address_type="Blacklist"}[1h]) + +# Large amounts involving blacklist addresses +increase(aelf_transfer_events_sum{ + from_address_type="Blacklist" OR to_address_type="Blacklist" +}[1h]) +``` + +### 4. Cross-Chain Activity +```promql +# Cross-chain transfer volume +sum by (chain_id) ( + increase(aelf_transfer_events_sum{transfer_type="CrossChainTransfer"}[1h]) +) + +# Cross-chain transfer frequency +sum by (chain_id) ( + increase(aelf_transfer_events_count{transfer_type="CrossChainTransfer"}[1h]) +) +``` + +### 5. Transaction Tracking +```promql +# Specific transaction monitoring +aelf_transfer_events_count{transaction_id="abc123..."} + +# Transactions involving specific addresses +aelf_transfer_events_count{ + from_address="2N6dJpBcS5TLm2Pj4GkMdj4MnLhbKu8FGDX3Mz..." OR + to_address="2N6dJpBcS5TLm2Pj4GkMdj4MnLhbKu8FGDX3Mz..." +} +``` + +## Alert Rules Configuration + +### 1. Large Amount Alerts +```yaml +groups: +- name: large_transfers + rules: + - alert: LargeELFTransfer + expr: | + increase(aelf_transfer_events_sum{symbol="ELF"}[5m]) + / increase(aelf_transfer_events_count{symbol="ELF"}[5m]) > 100000 + for: 0m + labels: + severity: warning + annotations: + summary: "Large ELF transfer detected" + description: "Transfer of {{ $value }} ELF detected from {{ $labels.from_address }}" + + - alert: MassiveTransferVolume + expr: | + sum by (from_address) ( + increase(aelf_transfer_events_sum[1h]) + ) > 1000000 + for: 5m + labels: + severity: critical + annotations: + summary: "Massive transfer volume from {{ $labels.from_address }}" +``` + +### 2. High Frequency Alerts +```yaml +- name: high_frequency + rules: + - alert: HighFrequencyTrading + expr: | + sum by (from_address) ( + increase(aelf_transfer_events_count[1h]) + ) > 100 + for: 10m + labels: + severity: warning + annotations: + summary: "High frequency trading detected from {{ $labels.from_address }}" + + - alert: TransferBurst + expr: | + sum by (from_address) ( + increase(aelf_transfer_events_count[5m]) + ) > 20 + for: 0m + labels: + severity: critical + annotations: + summary: "Transfer burst detected from {{ $labels.from_address }}" +``` + +### 3. Blacklist Alerts +```yaml +- name: blacklist_monitoring + rules: + - alert: BlacklistActivity + expr: | + increase(aelf_transfer_events_count{ + from_address_type="Blacklist" OR to_address_type="Blacklist" + }[1m]) > 0 + for: 0m + labels: + severity: critical + annotations: + summary: "Blacklist address activity detected" + description: "Transfer involving blacklist address: from={{ $labels.from_address }}, to={{ $labels.to_address }}" +``` + +## Configuration Management + +### Application Configuration +```json +{ + "TokenTransferMonitoring": { + "EnableMonitoring": true, + "EnableSystemContractFilter": true, + "BlacklistAddresses": [ + "2N6dJpBcS5TLm2Pj4GkMdj4MnLhbKu8FGDX3Mz1", + "2N6dJpBcS5TLm2Pj4GkMdj4MnLhbKu8FGDX3Mz2" + ], + "MonitoredTokens": ["ELF", "USDT", "BTC", "ETH"], + "ScanConfig": { + "ChainIds": ["AELF", "tDVV", "tDVW"], + "IntervalSeconds": 30, + "BatchSize": 1000, + "RedisKeyPrefix": "token_transfer_monitoring" + }, + "HistogramBuckets": [10, 1000, 100000, "Infinity"] + } +} +``` + +### System Contract Filtering +The system uses existing `GlobalOptions.ContractNames` configuration for system contract filtering: +- No additional configuration needed +- Leverages existing contract address mappings +- Can be disabled via `EnableSystemContractFilter: false` + +## Implementation Details + +### Time-Based Scanning +- **Incremental scanning** based on block time, not block height +- **Default scan window**: 60 minutes backward from current time +- **Redis state management**: Stores last scan time per chain +- **UTC time handling**: Ensures consistent time processing across systems + +### Worker Startup Strategy +- **30-second startup delay** to avoid system startup overload +- **No immediate execution** (RunOnStart = false) +- **Graceful startup** with other system Workers + +### Error Handling +- **Chain-level isolation**: Failure in one chain doesn't affect others +- **Comprehensive logging**: Detailed error tracking and performance metrics +- **Graceful degradation**: Continues operation even with partial failures + +### Performance Optimizations +- **Batch processing**: Configurable batch sizes for efficient data processing +- **Safety limits**: 10,000 record limit to prevent memory issues +- **Incremental updates**: Only processes new data since last scan +- **Efficient Redis operations**: Minimal Redis calls with optimized key management + +## Monitoring and Observability + +### Logs +- Worker startup and configuration +- Scan progress and timing +- Transfer processing statistics +- Error conditions and recovery + +### Metrics +- Transfer volume and frequency +- Processing performance +- System contract filtering effectiveness +- Blacklist address activity + +### Health Checks +- Redis connectivity +- Indexer API availability +- Metric transmission success +- Configuration validation \ No newline at end of file diff --git a/global.json b/global.json new file mode 100644 index 00000000..dad2db5e --- /dev/null +++ b/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "8.0.0", + "rollForward": "latestMajor", + "allowPrerelease": true + } +} \ No newline at end of file diff --git a/plugins/AElfScan.Plugin.NFT/AElfScan.Plugin.NFT.csproj b/plugins/AElfScan.Plugin.NFT/AElfScan.Plugin.NFT.csproj new file mode 100644 index 00000000..30246a0c --- /dev/null +++ b/plugins/AElfScan.Plugin.NFT/AElfScan.Plugin.NFT.csproj @@ -0,0 +1,29 @@ + + + + net8.0 + enable + enable + NFT + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/AElfScan.Plugin.NFT/AElfScanPluginNFTModule.cs b/plugins/AElfScan.Plugin.NFT/AElfScanPluginNFTModule.cs new file mode 100644 index 00000000..8f0ac9c8 --- /dev/null +++ b/plugins/AElfScan.Plugin.NFT/AElfScanPluginNFTModule.cs @@ -0,0 +1,44 @@ +using AElfScanServer.Common; +using AElfScanServer.Common.GraphQL; +using AElfScanServer.Common.IndexerPluginProvider; +using AElfScanServer.Common.Options; +using AElfScanServer.Common.Token; +using Microsoft.Extensions.DependencyInjection; +using NFT.backend; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AutoMapper; +using Volo.Abp.Caching; +using Volo.Abp.Modularity; + +namespace NFT; + +[DependsOn( + typeof(AbpAutoMapperModule), + typeof(AbpAspNetCoreMvcModule), + typeof(AElfScanCommonModule) +)] +public class AElfScanPluginNFTModule : AElfScanPluginBaseModule + +{ + protected override string Name { get; } + protected override string Version { get; } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + Configure(configuration.GetSection("ChainOptions")); + Configure(configuration.GetSection("ApiClient")); + Configure(configuration.GetSection("Indexers")); + Configure(configuration.GetSection("Exchange")); + Configure(configuration.GetSection("CoinGecko")); + Configure(configuration.GetSection("TokenInfoOptions")); + Configure(configuration.GetSection("AssetsInfoOptions")); + Configure(options => { options.KeyPrefix = "BlockChainDataFunctionServer:"; }); + context.Services.AddSingleton(); + context.Services.AddSingleton(); + context.Services.AddSingleton(); + + context.Services.AddSingleton(); + context.Services.AddTransient(); + } +} \ No newline at end of file diff --git a/plugins/AElfScan.Plugin.NFT/backend/NftController.cs b/plugins/AElfScan.Plugin.NFT/backend/NftController.cs new file mode 100644 index 00000000..29dfb50d --- /dev/null +++ b/plugins/AElfScan.Plugin.NFT/backend/NftController.cs @@ -0,0 +1,72 @@ +using System.Threading.Tasks; +using AElf.OpenTelemetry.ExecutionTime; +using AElfScanServer.Common.Dtos; +using AElfScanServer.Common.Dtos.Input; +using Asp.Versioning; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; + +namespace NFT.backend; + +[RemoteService] +[Area("app")] +[ControllerName("Nft")] +[Route("api/app/token/nft/")] +public class NftController +{ + private readonly INftService _nftService; + + public NftController(INftService nftService) + { + _nftService = nftService; + } + + [HttpGet("collection-list")] + public async Task> GetNftCollectionListAsync(TokenListInput input) + { + return await _nftService.GetNftCollectionListAsync(input); + } + + [HttpGet("collection-detail")] + public async Task GetNftCollectionDetailAsync(string collectionSymbol, string chainId = "") + { + return await _nftService.GetMergeNftCollectionDetailAsync(collectionSymbol, chainId); + } + + [HttpGet("transfers")] + public async Task GetNftCollectionTransferInfosAsync(TokenTransferInput input) + { + return await _nftService.GetNftCollectionTransferInfosAsync(input); + } + + [HttpGet("holders")] + public async Task> GetNftCollectionHolderInfosAsync( + TokenHolderInput input) + { + return await _nftService.GetNftCollectionHolderInfosAsync(input); + } + + [HttpGet("inventory")] + public async Task GetNftCollectionInventoryAsync(NftInventoryInput input) + { + return await _nftService.GetNftCollectionInventoryAsync(input); + } + + [HttpGet("item-detail")] + public async Task GetNftItemDetailAsync(string symbol, string chainId = "") + { + return await _nftService.GetNftItemDetailAsync(chainId, symbol); + } + + [HttpGet("item-activity")] + public async Task> GetNftItemDetailAsync(NftItemActivityInput input) + { + return await _nftService.GetNftItemActivityAsync(input); + } + + [HttpGet("item-holders")] + public async Task> GetNftItemHoldersAsync(NftItemHolderInfoInput input) + { + return await _nftService.GetNftItemHoldersAsync(input); + } +} \ No newline at end of file diff --git a/plugins/AElfScan.Plugin.NFT/backend/NftService.cs b/plugins/AElfScan.Plugin.NFT/backend/NftService.cs new file mode 100644 index 00000000..3ac3b028 --- /dev/null +++ b/plugins/AElfScan.Plugin.NFT/backend/NftService.cs @@ -0,0 +1,1012 @@ +using System.Globalization; +using AElf.ExceptionHandler; +using AElfScanServer.Common; +using AElfScanServer.Common.Commons; +using AElfScanServer.Common.Constant; +using AElfScanServer.Common.Contract.Provider; +using AElfScanServer.Common.Dtos; +using AElfScanServer.Common.Dtos.Indexer; +using AElfScanServer.Common.Dtos.Input; +using AElfScanServer.Common.Dtos.MergeData; +using AElfScanServer.Common.Enums; +using AElfScanServer.Common.EsIndex; +using AElfScanServer.Common.ExceptionHandling; +using AElfScanServer.Common.Helper; +using AElfScanServer.Common.IndexerPluginProvider; +using AElfScanServer.Common.Options; +using AElfScanServer.Common.Token; +using AElfScanServer.Common.Token.Provider; +using AElfScanServer.Domain.Shared.Common; +using Elasticsearch.Net; +using Microsoft.Extensions.Caching.Distributed; +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Nest; +using Nito.AsyncEx; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.ObjectMapping; + +namespace NFT.backend; + +public interface INftService +{ + public Task> GetNftCollectionListAsync(TokenListInput input); + public Task GetNftCollectionDetailAsync(string chainId, string collectionSymbol); + public Task GetNftCollectionTransferInfosAsync(TokenTransferInput input); + public Task> GetNftCollectionHolderInfosAsync(TokenHolderInput input); + public Task GetNftCollectionInventoryAsync(NftInventoryInput input); + Task GetNftItemDetailAsync(string chainId, string symbol); + Task> GetNftItemActivityAsync(NftItemActivityInput input); + Task> GetNftItemHoldersAsync(NftItemHolderInfoInput input); + + Task GetMergeNftCollectionDetailAsync(string collectionSymbol, string chainId); + + Task> GetCollectionSupplyAsync(string chainId, List collectionSymbols); +} + +public class NftService : INftService, ISingletonDependency +{ + private const int MaxResultCount = 1000; + private readonly IOptionsMonitor _chainOptions; + private readonly IOptionsMonitor _globalOptions; + + private readonly ITokenIndexerProvider _tokenIndexerProvider; + private readonly ILogger _logger; + private readonly IObjectMapper _objectMapper; + private readonly INftCollectionHolderProvider _collectionHolderProvider; + private readonly INftInfoProvider _nftInfoProvider; + private readonly ITokenPriceService _tokenPriceService; + private readonly ITokenInfoProvider _tokenInfoProvider; + private readonly IGenesisPluginProvider _genesisPluginProvider; + private readonly IOptionsMonitor _tokenInfoOptionsMonitor; + private readonly IDistributedCache _distributedCache; + private readonly IMemoryCache _memoryCache; + private readonly IElasticClient _elasticClient; + + + public NftService(ITokenIndexerProvider tokenIndexerProvider, ILogger logger, + IObjectMapper objectMapper, + INftCollectionHolderProvider collectionHolderProvider, INftInfoProvider nftInfoProvider, + ITokenPriceService tokenPriceService, + IOptionsMonitor chainOptions, IOptionsMonitor tokenInfoOptionsMonitor, + ITokenInfoProvider tokenInfoProvider, IGenesisPluginProvider genesisPluginProvider, + IDistributedCache distributedCache, IMemoryCache memoryCache, + IOptionsMonitor options, IOptionsMonitor globalOptions + ) + { + _tokenIndexerProvider = tokenIndexerProvider; + _logger = logger; + _objectMapper = objectMapper; + _collectionHolderProvider = collectionHolderProvider; + _nftInfoProvider = nftInfoProvider; + _tokenPriceService = tokenPriceService; + _chainOptions = chainOptions; + _tokenInfoOptionsMonitor = tokenInfoOptionsMonitor; + _tokenInfoProvider = tokenInfoProvider; + _genesisPluginProvider = genesisPluginProvider; + _distributedCache = distributedCache; + _memoryCache = memoryCache; + var uris = options.CurrentValue.Url.ConvertAll(x => new Uri(x)); + var connectionPool = new StaticConnectionPool(uris); + var settings = new ConnectionSettings(connectionPool).DisableDirectStreaming(); + _elasticClient = new ElasticClient(settings); + EsIndex.SetElasticClient(_elasticClient); + _globalOptions = globalOptions; + } + + + public async Task> GetNftCollectionListAsync(TokenListInput input) + { + if (input.ChainId.IsNullOrEmpty()) + { + return await GetMergeNftCollectionListAsync(input); + } + + input.SetDefaultSort(); + input.Types = new List { SymbolType.Nft_Collection }; + var indexerNftListDto = await _tokenIndexerProvider.GetTokenListAsync(input); + if (indexerNftListDto.Items.IsNullOrEmpty()) + { + return new ListResponseDto(); + } + + var collectionSymbols = indexerNftListDto.Items.Select(o => o.Symbol).ToList(); + // var groupAndSumSupply = await GetCollectionSupplyAsync(input.ChainId, collectionSymbols); + + //get collection supply + var list = indexerNftListDto.Items.Select(item => + { + var nftInfoDto = _objectMapper.Map(item); + nftInfoDto.Items = item.ItemCount.ToString(CultureInfo.InvariantCulture); + + //convert url + nftInfoDto.NftCollection.ImageUrl = TokenInfoHelper.GetImageUrl(item.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(item.Symbol)); + /*nftInfoDto.Items = groupAndSumSupply.TryGetValue(item.Symbol, out var sumSupply) + ? sumSupply + : "0";*/ + nftInfoDto.ChainIds.Add(input.ChainId); + return nftInfoDto; + }).ToList(); + return new ListResponseDto + { + Total = indexerNftListDto.TotalCount, + List = list + }; + } + + public async Task> GetMergeNftCollectionListAsync(TokenListInput input) + { + var result = await EsIndex.SearchMergeTokenList( + (int)input.SkipCount, (int)input.MaxResultCount, input.Sort == null ? "desc" : input.Sort.ToLower(), + null, null, + SymbolType.Nft_Collection); + + + //get collection supply + var list = result.list.Select(item => + { + var nftInfoDto = _objectMapper.Map(item); + + nftInfoDto.ChainIds = item.ChainIds; + nftInfoDto.Items = item.ItemCount.ToString(CultureInfo.InvariantCulture); + + //convert url + nftInfoDto.NftCollection.ImageUrl = TokenInfoHelper.GetImageUrl(item.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(item.Symbol)); + /*nftInfoDto.Items = groupAndSumSupply.TryGetValue(item.Symbol, out var sumSupply) + ? sumSupply + : "0";*/ + return nftInfoDto; + }).ToList(); + return new ListResponseDto + { + Total = result.totalCount, + List = list + }; + } + + [ExceptionHandler(typeof(Exception), + Message = "GetNftCollectionDetailAsync err", + TargetType = typeof(ExceptionHandlingService), + MethodName = nameof(ExceptionHandlingService.HandleException), ReturnDefault = ReturnDefault.New,LogTargets = ["chainId","collectionSymbol"])] + public virtual async Task GetNftCollectionDetailAsync(string chainId, string collectionSymbol) + { + var getCollectionInfoTask = _tokenIndexerProvider.GetTokenDetailAsync(chainId, collectionSymbol); + var nftCollectionInfoInput = new GetNftCollectionInfoInput + { + ChainId = _globalOptions.CurrentValue.SideChainId, + CollectionSymbolList = new List { collectionSymbol } + }; + var nftCollectionInfoTask = _nftInfoProvider.GetNftCollectionInfoAsync(nftCollectionInfoInput); + + + await Task.WhenAll(getCollectionInfoTask, nftCollectionInfoTask); + + var collectionInfoDtos = await getCollectionInfoTask; + AssertHelper.NotEmpty(collectionInfoDtos, "this nft not exist"); + var collectionInfo = collectionInfoDtos[0]; + var nftDetailDto = _objectMapper.Map(collectionInfo); + nftDetailDto.Items = collectionInfo.ItemCount.ToString(CultureInfo.InvariantCulture); + + nftDetailDto.TokenContractAddress = _chainOptions.CurrentValue.GetChainInfo(chainId)?.TokenContractAddress; + nftDetailDto.ContractAddress = new CommonAddressDto() + { + Address = _chainOptions.CurrentValue.GetChainInfo(chainId)?.TokenContractAddress, + Name = collectionInfo.Symbol, + AddressType = AddressType.ContractAddress + }; + + if (_globalOptions.CurrentValue.ContractNames.TryGetValue(chainId, out var contractNames)) + { + if (contractNames.TryGetValue(nftDetailDto.TokenContractAddress, out var contractName)) + { + nftDetailDto.ContractAddress.Name = contractName; + } + } + + //collectionInfo.Symbol is xxx-0 + nftDetailDto.NftCollection.ImageUrl = TokenInfoHelper.GetImageUrl(collectionInfo.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(collectionInfo.Symbol)); + /*nftDetailDto.Items = (await groupAndSumSupplyTask).TryGetValue(collectionInfo.Symbol, out var sumSupply) + ? sumSupply + : "0";*/ + //of floor price + var nftCollectionInfo = await nftCollectionInfoTask; + if (nftCollectionInfo.TryGetValue(collectionSymbol, out var nftCollection)) + { + var priceDto = + await _tokenPriceService.GetTokenPriceAsync(nftCollection.FloorPriceSymbol, + CurrencyConstant.UsdCurrency); + nftDetailDto.FloorPrice = nftCollection.FloorPrice; + nftDetailDto.FloorPriceOfUsd = + Math.Round(nftCollection.FloorPrice * priceDto.Price, CommonConstant.UsdPriceValueDecimals); + } + else + { + nftDetailDto.FloorPrice = -1m; + } + + return nftDetailDto; + + + } + + + public async Task GetMergeNftCollectionDetailAsync(string collectionSymbol, string chainId) + { + var tasks = new List(); + + var nftDetailDto = new NftDetailDto(); + var mainNftDetailDto = new NftDetailDto(); + var sideNftDetailDto = new NftDetailDto(); + var mergeHolders = 0l; + + tasks.Add(GetNftCollectionDetailAsync("AELF", collectionSymbol).ContinueWith(task => + { + mainNftDetailDto = task.Result == null ? new NftDetailDto() : task.Result; + })); + + tasks.Add(EsIndex.GetTokenHolders(collectionSymbol, "").ContinueWith(task => { mergeHolders = task.Result; })); + tasks.Add(GetNftCollectionDetailAsync(_globalOptions.CurrentValue.SideChainId, collectionSymbol) + .ContinueWith(task => { sideNftDetailDto = task.Result == null ? new NftDetailDto() : task.Result; })); + + await tasks.WhenAll(); + + if (chainId == "AELF" || chainId.IsNullOrEmpty()) + { + nftDetailDto = mainNftDetailDto; + } + else + { + nftDetailDto = sideNftDetailDto; + } + + nftDetailDto.MainChainItems = mainNftDetailDto.Items; + nftDetailDto.SideChainItems = sideNftDetailDto.Items; + + nftDetailDto.MergeItems = + (decimal.Parse(nftDetailDto.MainChainItems.IsNullOrEmpty() ? "0" : nftDetailDto.MainChainItems) + + decimal.Parse(nftDetailDto.SideChainItems.IsNullOrEmpty() ? "0" : nftDetailDto.SideChainItems)).ToString(); + nftDetailDto.MainChainHolders = mainNftDetailDto.Holders; + nftDetailDto.SideChainHolders = sideNftDetailDto.Holders; + + + nftDetailDto.MainChainTransferCount = mainNftDetailDto.TransferCount; + nftDetailDto.SideChainTransferCount = sideNftDetailDto.TransferCount; + nftDetailDto.MergeTransferCount = nftDetailDto.MainChainTransferCount + nftDetailDto.SideChainTransferCount; + + nftDetailDto.MainChainFloorPrice = mainNftDetailDto.FloorPrice; + nftDetailDto.SideChainFloorPrice = sideNftDetailDto.FloorPrice; + + nftDetailDto.MainChainFloorPriceOfUsd = mainNftDetailDto.FloorPriceOfUsd; + nftDetailDto.SideChainFloorPriceOfUsd = sideNftDetailDto.FloorPriceOfUsd; + + nftDetailDto.MergeHolders = mergeHolders; + if (!mainNftDetailDto.Items.IsNullOrEmpty()) + { + nftDetailDto.ChainIds.Add("AELF"); + } + + if (!sideNftDetailDto.Items.IsNullOrEmpty()) + { + nftDetailDto.ChainIds.Add(_globalOptions.CurrentValue.SideChainId); + } + + + return nftDetailDto; + } + + + public async Task GetNftCollectionTransferInfosAsync(TokenTransferInput input) + { + var types = new List { SymbolType.Nft }; + input.Types = types; + var tokenTransferInfos = await _tokenIndexerProvider.GetTokenTransfersAsync(input); + var result = new NftTransferInfosDto + { + Total = tokenTransferInfos.Total, + List = _objectMapper.Map, List>(tokenTransferInfos.List) + }; + if (input.IsSearchAddress()) + { + result.IsAddress = true; + result.Items = await _tokenIndexerProvider.GetHolderInfoAsync(input.ChainId, input.Search, types); + } + + return result; + } + + public async Task> GetNftCollectionHolderInfosAsync(TokenHolderInput input) + { + if (input.ChainId.IsNullOrEmpty()) + { + return await GetMergeNftCollectionHolderInfosAsync(input); + } + + input.SetDefaultSort(); + + var indexerTokenHolderInfo = await _tokenIndexerProvider.GetCollectionHolderInfoAsync(input); + + var list = await ConvertIndexerNftHolderInfoDtoAsync(indexerTokenHolderInfo.Items, input.ChainId, + input.CollectionSymbol); + + return new ListResponseDto + { + Total = indexerTokenHolderInfo.TotalCount, + List = list + }; + } + + public async Task> GetMergeNftCollectionHolderInfosAsync(TokenHolderInput input) + { + input.SetDefaultSort(); + + var result = new ListResponseDto(); + + var tasks = new List(); + input.Symbol = input.CollectionSymbol; + var accountTokenIndices = new List(); + var list = new List(); + var totalCount = 0L; + + tasks.Add(EsIndex.SearchAccountList(input).ContinueWith(task => + { + accountTokenIndices = task.Result.list; + totalCount = task.Result.totalCount; + })); + + + var indexerTokenList = new List(); + + tasks.Add(_tokenIndexerProvider.GetTokenDetailAsync("", input.CollectionSymbol).ContinueWith(task => + { + indexerTokenList = task.Result; + })); + + + await tasks.WhenAll(); + + if (indexerTokenList.IsNullOrEmpty()) + { + return result; + } + + var tokenSupply = indexerTokenList.Sum(c => c.ItemCount); + _logger.LogInformation("nft supply :{supply},{symbol}", tokenSupply, input.CollectionSymbol); + var addressList = accountTokenIndices + .Where(value => !string.IsNullOrEmpty(value.Address)) + .Select(value => value.Address).Distinct().ToList(); + + var priceDtoTask = _tokenPriceService.GetTokenPriceAsync(input.Symbol, CurrencyConstant.UsdCurrency); + var contractInfoDictTask = _genesisPluginProvider.GetContractListAsync("", addressList); + + await Task.WhenAll(priceDtoTask, contractInfoDictTask); + + + var priceDto = await priceDtoTask; + var contractInfoDict = await contractInfoDictTask; + foreach (var indexerTokenHolderInfoDto in accountTokenIndices) + { + var tokenHolderInfoDto = new TokenHolderInfoDto(); + tokenHolderInfoDto.Quantity = indexerTokenHolderInfoDto.FormatAmount; + + tokenHolderInfoDto.Address = CommonAddressHelper.GetCommonAddress(indexerTokenHolderInfoDto.Address, + indexerTokenHolderInfoDto.ChainId, contractInfoDict, _globalOptions.CurrentValue.ContractNames); + + + if (tokenSupply != 0) + { + tokenHolderInfoDto.Percentage = + Math.Round((decimal)indexerTokenHolderInfoDto.FormatAmount / tokenSupply * 100, + CommonConstant.PercentageValueDecimals); + } + + tokenHolderInfoDto.Value = + Math.Round(indexerTokenHolderInfoDto.FormatAmount * priceDto.Price, CommonConstant.UsdValueDecimals); + tokenHolderInfoDto.ChainIds = indexerTokenHolderInfoDto.ChainIds; + _logger.LogInformation("nft holder info chainIds :{chainIds}", indexerTokenHolderInfoDto.ChainIds); + list.Add(tokenHolderInfoDto); + } + + + return new ListResponseDto + { + Total = totalCount, + List = list + }; + } + + public async Task GetNftCollectionInventoryAsync(NftInventoryInput input) + { + if (input.ChainId.IsNullOrEmpty()) + { + return await GetMergeNftCollectionInventoryAsync(input); + } + + var result = new NftInventorysDto(); + List indexerTokenInfoList; + long totalCount; + if (input.IsSearchAddress()) + { + var tokenHolderInput = _objectMapper.Map(input); + tokenHolderInput.Types = new List { SymbolType.Nft }; + var tokenHolderInfos = await _tokenIndexerProvider.GetTokenHolderInfoAsync(tokenHolderInput); + var symbols = tokenHolderInfos.Items.Select(i => i.Token.Symbol).ToList(); + var tokenListInput = new TokenListInput() + { + ChainId = input.ChainId, + Symbols = symbols, + Types = new List { SymbolType.Nft } + }; + tokenListInput.OfOrderInfos((SortField.BlockHeight, SortDirection.Desc)); + indexerTokenInfoList = await _tokenIndexerProvider.GetAllTokenInfosAsync(tokenListInput); + result.IsAddress = true; + result.Items = tokenHolderInfos.Items.Select(i => new HolderInfo + { + Balance = i.FormatAmount, Symbol = i.Token.Symbol + }).ToList(); + totalCount = tokenHolderInfos.TotalCount; + } + else + { + var tokenListInput = _objectMapper.Map(input); + tokenListInput.CollectionSymbols = new List { input.CollectionSymbol }; + tokenListInput.Types = new List { SymbolType.Nft }; + tokenListInput.OfOrderInfos((SortField.BlockHeight, SortDirection.Desc)); + tokenListInput.Search = ""; + tokenListInput.ExactSearch = input.Search; + var indexerTokenInfoListDto = await _tokenIndexerProvider.GetTokenListAsync(tokenListInput); + totalCount = indexerTokenInfoListDto.TotalCount; + indexerTokenInfoList = indexerTokenInfoListDto.Items; + } + + var list = await ConvertIndexerNftInventoryDtoAsync(indexerTokenInfoList, input.ChainId); + result.Total = totalCount; + result.List = list; + return result; + } + + + public async Task GetMergeNftCollectionInventoryAsync(NftInventoryInput input) + { + var result = new NftInventorysDto(); + + var tokenListInput = _objectMapper.Map(input); + tokenListInput.CollectionSymbols = new List { input.CollectionSymbol }; + tokenListInput.Types = new List { SymbolType.Nft }; + tokenListInput.OfOrderInfos((SortField.BlockHeight, SortDirection.Desc)); + tokenListInput.Search = ""; + tokenListInput.ExactSearch = input.Search; + + var tokenInfoResult = await EsIndex.SearchMergeTokenList((int)input.SkipCount, (int)input.MaxResultCount, + "desc", input.Search.IsNullOrEmpty() ? new List() { } : new List() { input.Search }, null, + SymbolType.Nft, input.CollectionSymbol); + + + var list = await ConvertMergeNftInventoryDtoAsync(tokenInfoResult.list); + result.Total = tokenInfoResult.totalCount; + result.List = list; + return result; + } + + public async Task GetNftItemDetailAsync(string chainId, string symbol) + { + if (chainId.IsNullOrEmpty()) + { + return await GetMergeNftItemDetailAsync(symbol); + } + + var nftItems = await _tokenIndexerProvider.GetTokenDetailAsync(chainId, symbol); + + AssertHelper.NotEmpty(nftItems, "this nft item not exist"); + var nftItem = nftItems[0]; + var collectionInfos = await _tokenIndexerProvider.GetTokenDetailAsync(chainId, nftItem.CollectionSymbol); + AssertHelper.NotEmpty(collectionInfos, "this nft collection not exist"); + var collectionInfo = collectionInfos[0]; + var nftItemDetailDto = _objectMapper.Map(nftItem); + nftItemDetailDto.Quantity = DecimalHelper.Divide(nftItem.Supply, nftItem.Decimals); + + nftItemDetailDto.Item.ImageUrl = TokenInfoHelper.GetImageUrl(nftItem.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(nftItem.Symbol)); + var marketInfo = _tokenInfoOptionsMonitor.CurrentValue.GetMarketInfo(CommonConstant.DefaultMarket); + marketInfo.MarketUrl = string.Format(marketInfo.MarketUrl, symbol); + nftItemDetailDto.MarketPlaces = marketInfo; + nftItemDetailDto.NftCollection = new TokenBaseInfo + { + Name = collectionInfo.TokenName, + Symbol = collectionInfo.Symbol, + Decimals = collectionInfo.Decimals, + ImageUrl = TokenInfoHelper.GetImageUrl(collectionInfo.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(collectionInfo.Symbol)) + }; + + nftItemDetailDto.ChainIds.Add(nftItem.Metadata.ChainId); + return nftItemDetailDto; + } + + public async Task GetMergeNftItemDetailAsync(string symbol) + { + var searchTokenDetail = new TokenInfoIndex(); + var tokenHolders = 0l; + var tasks = new List(); + tasks.Add(EsIndex.SearchTokenDetail(symbol).ContinueWith(task => { searchTokenDetail = task.Result; })); + tasks.Add(EsIndex.GetTokenHolders(symbol, "").ContinueWith(task => { tokenHolders = task.Result; })); + + + await tasks.WhenAll(); + + var collectionInfos = await _tokenIndexerProvider.GetTokenDetailAsync("", searchTokenDetail.CollectionSymbol); + AssertHelper.NotEmpty(collectionInfos, "this nft collection not exist"); + var collectionInfo = collectionInfos[0]; + var nftItemDetailDto = _objectMapper.Map(searchTokenDetail); + + nftItemDetailDto.Quantity = DecimalHelper.Divide(searchTokenDetail.Supply, searchTokenDetail.Decimals); + nftItemDetailDto.Item.ImageUrl = TokenInfoHelper.GetImageUrl(searchTokenDetail.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(searchTokenDetail.Symbol)); + var marketInfo = _tokenInfoOptionsMonitor.CurrentValue.GetMarketInfo(CommonConstant.DefaultMarket); + marketInfo.MarketUrl = string.Format(marketInfo.MarketUrl, symbol); + nftItemDetailDto.MarketPlaces = marketInfo; + nftItemDetailDto.NftCollection = new TokenBaseInfo + { + Name = collectionInfo.TokenName, + Symbol = collectionInfo.Symbol, + Decimals = collectionInfo.Decimals, + ImageUrl = TokenInfoHelper.GetImageUrl(collectionInfo.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(collectionInfo.Symbol)) + }; + + nftItemDetailDto.Holders = tokenHolders; + nftItemDetailDto.ChainIds = searchTokenDetail.ChainIds; + + + return nftItemDetailDto; + } + + + public async Task> GetNftItemActivityAsync(NftItemActivityInput input) + { + if (input.ChainId.IsNullOrEmpty()) + { + input.ChainId = _globalOptions.CurrentValue.SideChainId; + } + + var activitiesInput = _objectMapper.Map(input); + activitiesInput.Types = _tokenInfoOptionsMonitor.CurrentValue.ActivityTypes; + activitiesInput.NftInfoId = IdGeneratorHelper.GetNftInfoId(input.ChainId, input.Symbol); + + var nftActivityInfo = await _nftInfoProvider.GetNftActivityListAsync(activitiesInput); + + if (nftActivityInfo==null || nftActivityInfo.Items.IsNullOrEmpty()) + { + return new ListResponseDto(); + } + + var list = await ConvertNftItemActivityAsync(input.ChainId, nftActivityInfo.Items); + + return new ListResponseDto + { + Total = nftActivityInfo.TotalCount, + List = list + }; + } + + public async Task> GetNftItemHoldersAsync(NftItemHolderInfoInput input) + { + if (input.ChainId.IsNullOrEmpty()) + { + return await GetMergeNftItemHoldersAsync(input); + } + + var tokenHolderInput = _objectMapper.Map(input); + tokenHolderInput.SetDefaultSort(); + var tokenHolderInfoTask = _tokenIndexerProvider.GetTokenHolderInfoAsync(tokenHolderInput); + var tokenDetailTask = _tokenIndexerProvider.GetTokenDetailAsync(input.ChainId, input.Symbol); + await Task.WhenAll(tokenHolderInfoTask, tokenDetailTask); + var nftItemHolderInfos = await tokenHolderInfoTask; + var nftItemList = await tokenDetailTask; + AssertHelper.NotEmpty(nftItemList, "this nft not exist"); + var supply = nftItemList[0].Supply; + + var addressList = nftItemHolderInfos.Items + .Where(value => !string.IsNullOrEmpty(value.Address)) + .Select(value => value.Address).Distinct().ToList(); + var contractInfoDict = await _genesisPluginProvider.GetContractListAsync(input.ChainId, addressList); + + var list = new List(); + foreach (var nftCollectionHolderInfoIndex in nftItemHolderInfos.Items) + { + var nftItemHolderInfoDto = new NftItemHolderInfoDto() + { + Quantity = nftCollectionHolderInfoIndex.FormatAmount + }; + + nftItemHolderInfoDto.Address = CommonAddressHelper.GetCommonAddress(nftCollectionHolderInfoIndex.Address, + nftCollectionHolderInfoIndex.Metadata.ChainId, contractInfoDict, + _globalOptions.CurrentValue.ContractNames); + if (supply > 0) + { + nftItemHolderInfoDto.Percentage = + Math.Round((decimal)nftCollectionHolderInfoIndex.Amount / supply * 100, + CommonConstant.PercentageValueDecimals); + } + + nftItemHolderInfoDto.ChainIds = new List() { input.ChainId }; + list.Add(nftItemHolderInfoDto); + } + + return new ListResponseDto() + { + Total = nftItemHolderInfos.TotalCount, + List = list + }; + } + + public async Task> GetMergeNftItemHoldersAsync(NftItemHolderInfoInput input) + { + var tokenHolderInput = _objectMapper.Map(input); + tokenHolderInput.SetDefaultSort(); + + List accountTokenIndexList = new(); + var total = 0l; + TokenInfoIndex tokenInfoIndex = new(); + var tasks = new List(); + + tasks.Add(EsIndex.SearchAccountList(tokenHolderInput).ContinueWith(task => + { + accountTokenIndexList = task.Result.list; + total = task.Result.totalCount; + })); + + + tasks.Add(EsIndex.SearchTokenDetail(input.Symbol).ContinueWith(task => { tokenInfoIndex = task.Result; })); + + await tasks.WhenAll(); + + + var supply = tokenInfoIndex.Supply; + + var addressList = accountTokenIndexList + .Where(value => !string.IsNullOrEmpty(value.Address)) + .Select(value => value.Address).Distinct().ToList(); + var contractInfoDict = await _genesisPluginProvider.GetContractListAsync("", addressList); + + var list = new List(); + foreach (var tokenInfo in accountTokenIndexList) + { + var nftItemHolderInfoDto = new NftItemHolderInfoDto() + { + Quantity = tokenInfo.FormatAmount + }; + + foreach (var chainId in tokenInfo.ChainIds) + { + nftItemHolderInfoDto.Address = CommonAddressHelper.GetCommonAddress(tokenInfo.Address, + chainId, contractInfoDict, _globalOptions.CurrentValue.ContractNames); + } + + if (supply > 0) + { + nftItemHolderInfoDto.Percentage = + Math.Round((decimal)tokenInfo.Amount / supply * 100, + CommonConstant.PercentageValueDecimals); + } + + nftItemHolderInfoDto.ChainIds = tokenInfo.ChainIds; + list.Add(nftItemHolderInfoDto); + } + + return new ListResponseDto() + { + Total = total, + List = list + }; + } + + private async Task> ConvertNftItemActivityAsync(string chainId, + List items) + { + var list = new List(); + var priceDict = new Dictionary(); + var addressList = items + .SelectMany(c => new[] { c.From, c.To }) + .Where(value => !string.IsNullOrEmpty(value)).Distinct().ToList(); + var contractInfoDict = await _genesisPluginProvider.GetContractListAsync(chainId, addressList); + foreach (var item in items) + { + var activityDto = _objectMapper.Map(item); + + activityDto.From = CommonAddressHelper.GetCommonAddress(item.From, + _globalOptions.CurrentValue.SideChainId, contractInfoDict, _globalOptions.CurrentValue.ContractNames); + + activityDto.To = CommonAddressHelper.GetCommonAddress(item.To, + _globalOptions.CurrentValue.SideChainId, contractInfoDict, _globalOptions.CurrentValue.ContractNames); + activityDto.Status = TransactionStatus.Mined; + var priceSymbol = activityDto.PriceSymbol; + if (!priceSymbol.IsNullOrEmpty()) + { + if (!priceDict.TryGetValue(priceSymbol, out var priceDto)) + { + priceDto = await _tokenPriceService.GetTokenPriceAsync(priceSymbol, + CurrencyConstant.UsdCurrency); + priceDict[priceSymbol] = priceDto; + } + + activityDto.PriceOfUsd = + Math.Round(activityDto.Price * priceDto.Price, CommonConstant.UsdPriceValueDecimals); + } + + activityDto.ChainIds = new List() { chainId }; + list.Add(activityDto); + } + + return list; + } + + [ExceptionHandler(typeof(Exception), + Message = "ConvertIndexerNftInventoryDtoAsync err", + TargetType = typeof(ExceptionHandlingService), + MethodName = nameof(ExceptionHandlingService.HandleException), ReturnDefault = ReturnDefault.New,LogTargets = ["tokenInfos","chainId"])] + public virtual async Task> ConvertIndexerNftInventoryDtoAsync( + List tokenInfos, string chainId) + { + var list = new List(); + if (tokenInfos.IsNullOrEmpty()) + { + return list; + } + + var priceDict = new Dictionary(); + var symbols = tokenInfos.Select(i => i.Symbol).Distinct().ToList(); + var itemInfosDict = tokenInfos.ToDictionary(i => i.Symbol, i => i); + //batch query symbol last sale info + var lastSaleInfoDict = await _nftInfoProvider.GetLatestPriceAsync(chainId, symbols); + foreach (var tokenInfo in tokenInfos) + { + var nftInventoryDto = + _objectMapper.Map(tokenInfo); + var symbol = nftInventoryDto.Item.Symbol; + if (itemInfosDict.TryGetValue(symbol, out var itemInfo)) + { + //handle image url + nftInventoryDto.Item.ImageUrl = TokenInfoHelper.GetImageUrl(itemInfo.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(symbol)); + } + + if (lastSaleInfoDict.TryGetValue(symbol, out var lastSaleInfo)) + { + var saleAmountSymbol = BaseConverter.OfSymbol(lastSaleInfo.PriceTokenInfo); + nftInventoryDto.LastTransactionId = lastSaleInfo.TransactionHash; + nftInventoryDto.BlockHeight = lastSaleInfo.BlockHeight; + //single price + nftInventoryDto.LastSalePrice = lastSaleInfo.Price; + nftInventoryDto.LastSaleAmount = lastSaleInfo.Amount; + nftInventoryDto.LastSaleAmountSymbol = saleAmountSymbol; + if (!saleAmountSymbol.IsNullOrEmpty()) + { + if (!priceDict.TryGetValue(saleAmountSymbol, out var priceDto)) + { + priceDto = await _tokenPriceService.GetTokenPriceAsync(saleAmountSymbol, + CurrencyConstant.UsdCurrency); + priceDict[saleAmountSymbol] = priceDto; + } + + nftInventoryDto.LastSalePriceInUsd = Math.Round(nftInventoryDto.LastSalePrice * priceDto.Price, + CommonConstant.UsdPriceValueDecimals); + } + } + + nftInventoryDto.ChainIds = new List() { _globalOptions.CurrentValue.SideChainId }; + list.Add(nftInventoryDto); + } + + return list; + + } + + + [ExceptionHandler(typeof(Exception), + Message = "ConvertMergeNftInventoryDtoAsync err", + TargetType = typeof(ExceptionHandlingService), + MethodName = nameof(ExceptionHandlingService.HandleException), ReturnDefault = ReturnDefault.New,LogTargets = ["tokenInfos"])] + public virtual async Task> ConvertMergeNftInventoryDtoAsync( + List tokenInfos) + { + var list = new List(); + if (tokenInfos.IsNullOrEmpty()) + { + return list; + } + + var priceDict = new Dictionary(); + var symbols = tokenInfos.Select(i => i.Symbol).Distinct().ToList(); + var itemInfosDict = tokenInfos.ToDictionary(i => i.Symbol, i => i); + //batch query symbol last sale info + var lastSaleInfoDict = + await _nftInfoProvider.GetLatestPriceAsync(_globalOptions.CurrentValue.SideChainId, symbols); + foreach (var tokenInfo in tokenInfos) + { + var nftInventoryDto = new NftInventoryDto(); + var symbol = tokenInfo.Symbol; + if (itemInfosDict.TryGetValue(symbol, out var itemInfo)) + { + nftInventoryDto.Item.ImageUrl = TokenInfoHelper.GetImageUrl(itemInfo.ExternalInfo, + () => _tokenInfoProvider.BuildImageUrl(symbol)); + } + + nftInventoryDto.Item.Symbol = tokenInfo.Symbol; + nftInventoryDto.Item.Name = tokenInfo.TokenName; + if (lastSaleInfoDict.TryGetValue(symbol, out var lastSaleInfo)) + { + var saleAmountSymbol = BaseConverter.OfSymbol(lastSaleInfo.PriceTokenInfo); + nftInventoryDto.LastTransactionId = lastSaleInfo.TransactionHash; + nftInventoryDto.BlockHeight = lastSaleInfo.BlockHeight; + //single price + nftInventoryDto.LastSalePrice = lastSaleInfo.Price; + nftInventoryDto.LastSaleAmount = lastSaleInfo.Amount; + nftInventoryDto.LastSaleAmountSymbol = saleAmountSymbol; + if (!saleAmountSymbol.IsNullOrEmpty()) + { + if (!priceDict.TryGetValue(saleAmountSymbol, out var priceDto)) + { + priceDto = await _tokenPriceService.GetTokenPriceAsync(saleAmountSymbol, + CurrencyConstant.UsdCurrency); + priceDict[saleAmountSymbol] = priceDto; + } + + nftInventoryDto.LastSalePriceInUsd = Math.Round(nftInventoryDto.LastSalePrice * priceDto.Price, + CommonConstant.UsdPriceValueDecimals); + } + } + + nftInventoryDto.ChainIds = new List() { _globalOptions.CurrentValue.SideChainId }; + list.Add(nftInventoryDto); + } + + + return list; + } + + private async Task> GetTokenDicAsync(List symbols, string chainId) + { + var input = new TokenListInput + { + ChainId = chainId, + Symbols = symbols + }; + var indexerTokenListDto = await _tokenIndexerProvider.GetTokenListAsync(input); + var tokenInfoDtoList = + _objectMapper.Map, List>(indexerTokenListDto.Items); + return tokenInfoDtoList.ToDictionary(token => token.Token.Symbol, token => token); + } + + private async Task> ConvertIndexerNftHolderInfoDtoAsync( + List indexerTokenHolderInfo, string chainId, string collectionSymbol) + { + var addressList = indexerTokenHolderInfo + .Where(value => !string.IsNullOrEmpty(value.Address)) + .Select(value => value.Address).Distinct().ToList(); + var getCollectionInfoTask = _tokenIndexerProvider.GetTokenDetailAsync(chainId, collectionSymbol); + + var contractInfoDictTask = _genesisPluginProvider.GetContractListAsync(chainId, addressList); + await Task.WhenAll(getCollectionInfoTask, contractInfoDictTask); + + var list = new List(); + var contractInfoDict = await contractInfoDictTask; + var tokenSupply = (await getCollectionInfoTask)[0].ItemCount; + + foreach (var indexerTokenHolderInfoDto in indexerTokenHolderInfo) + { + var tokenHolderInfoDto = + _objectMapper.Map(indexerTokenHolderInfoDto); + + tokenHolderInfoDto.Address = + CommonAddressHelper.GetCommonAddress(indexerTokenHolderInfoDto.Address, + indexerTokenHolderInfoDto.Metadata.ChainId, contractInfoDict, + _globalOptions.CurrentValue.ContractNames); + + if (tokenSupply != 0) + { + tokenHolderInfoDto.Percentage = + Math.Round(indexerTokenHolderInfoDto.FormatAmount / tokenSupply * 100, + CommonConstant.PercentageValueDecimals); + } + + tokenHolderInfoDto.ChainIds = new List() { indexerTokenHolderInfoDto.Metadata.ChainId }; + list.Add(tokenHolderInfoDto); + } + + return list; + } + + public async Task> GetCollectionSupplyAsync(string chainId, + List collectionSymbols) + { + var keyList = collectionSymbols.Select(o => GetCollectionItemsKey(chainId, o)).ToList(); + var keyValuePairs = await _distributedCache.GetManyAsync(keyList); + foreach (var collectionSymbol in collectionSymbols) + { + _ = SetCollectionItemAsync(chainId, collectionSymbol); + } + + return keyValuePairs.ToDictionary(o => o.Key.Split("_")[2], o => o.Value ?? "0"); + } + + private async Task> GetHolderInfoAsync(SymbolType symbolType, string chainId, string address) + { + var tokenHolderInput = new TokenHolderInput + { + Types = new List { symbolType }, + ChainId = chainId, + Address = address + }; + var indexerNftHolder = await _tokenIndexerProvider.GetTokenHolderInfoAsync(tokenHolderInput); + return indexerNftHolder.Items.Select(i => new HolderInfo + { + Balance = i.FormatAmount, + Symbol = i.Token.Symbol + }).ToList(); + } + + private async Task SetCollectionItemAsync(string chainId, string symbol) + { + var exist = _memoryCache.TryGetValue(GetCollectionItemsTimeKey(chainId, symbol), out var time); + if (exist) + { + return; + } + + var sumSupply = await QueryCollectionItem(chainId, symbol); + _logger.LogInformation("QueryCollectionItem {chainId} {symbol} value {exist}", chainId, symbol, exist); + await _distributedCache.SetAsync(GetCollectionItemsKey(chainId, symbol), + sumSupply.ToString(CultureInfo.InvariantCulture), + new DistributedCacheEntryOptions + { SlidingExpiration = null, AbsoluteExpiration = DateTimeOffset.MaxValue }); + await _memoryCache.GetOrCreateAsync( + GetCollectionItemsTimeKey(chainId, symbol), entry => + { + entry.SetSlidingExpiration(TimeSpan.FromMinutes(new Random().Next(3, 6))); + return Task.FromResult(DateTime.Now.ToString(CultureInfo.InvariantCulture)); + } + ); + _logger.LogInformation("GetOrCreateAsync {chainId} {symbol}", chainId, symbol); + } + + + private async Task QueryCollectionItem(string chainId, string symbol) + { + decimal sumSupply = 0; + var nftInput = new TokenListInput() + { + ChainId = chainId, Types = [SymbolType.Nft], + CollectionSymbols = [symbol], MaxResultCount = 1000, + OrderBy = "Symbol", Sort = "Desc" + }; + int count; + do + { + var nftListDto = await _tokenIndexerProvider.GetTokenListAsync(nftInput); + count = nftListDto.Items.Count; + if (!nftListDto.Items.IsNullOrEmpty()) + { + sumSupply += nftListDto.Items.Sum(token => DecimalHelper.Divide(token.Supply, token.Decimals)); + nftInput.SearchAfter = [nftListDto.Items [count + -1].Symbol]; + } + } while (count == MaxResultCount); + + return sumSupply; + } + + private string GetCollectionItemsKey(string chainId, string symbol) + { + return $"explore_{chainId}_{symbol}_collection_items"; + } + + private string GetCollectionItemsTimeKey(string chainId, string symbol) + { + return $"explore_{chainId}_{symbol}_collection_items_time"; + } +} \ No newline at end of file diff --git a/src/AElfScanServer.Application.Contracts/AElfScanServer.Application.Contracts.csproj b/src/AElfScanServer.Application.Contracts/AElfScanServer.Application.Contracts.csproj new file mode 100644 index 00000000..9cefaf40 --- /dev/null +++ b/src/AElfScanServer.Application.Contracts/AElfScanServer.Application.Contracts.csproj @@ -0,0 +1,28 @@ + + + + + + net8.0 + enable + AElfScanServer + + + + + + + + + + + + + + + + + + + + diff --git a/src/AElfScanServer.Application.Contracts/AElfScanServerApplicationContractsModule.cs b/src/AElfScanServer.Application.Contracts/AElfScanServerApplicationContractsModule.cs new file mode 100644 index 00000000..f44ea339 --- /dev/null +++ b/src/AElfScanServer.Application.Contracts/AElfScanServerApplicationContractsModule.cs @@ -0,0 +1,29 @@ +using AElfScanServer.Domain.Shared; +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace AElfScanServer; + +[DependsOn( + typeof(AElfScanServerDomainSharedModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpFeatureManagementApplicationContractsModule), + typeof(AbpIdentityApplicationContractsModule), + typeof(AbpPermissionManagementApplicationContractsModule), + typeof(AbpSettingManagementApplicationContractsModule), + typeof(AbpTenantManagementApplicationContractsModule), + typeof(AbpObjectExtendingModule) +)] +public class AElfScanServerApplicationContractsModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + AElfScanServerDtoExtensions.Configure(); + } +} diff --git a/src/AElfScanServer.Application.Contracts/AElfScanServerDtoExtensions.cs b/src/AElfScanServer.Application.Contracts/AElfScanServerDtoExtensions.cs new file mode 100644 index 00000000..98f1aa74 --- /dev/null +++ b/src/AElfScanServer.Application.Contracts/AElfScanServerDtoExtensions.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace AElfScanServer; + +public static class AElfScanServerDtoExtensions +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + /* You can add extension properties to DTOs + * defined in the depended modules. + * + * Example: + * + * ObjectExtensionManager.Instance + * .AddOrUpdateProperty("Title"); + * + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Object-Extensions + */ + }); + } +} diff --git a/src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissionDefinitionProvider.cs b/src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissionDefinitionProvider.cs new file mode 100644 index 00000000..8654f545 --- /dev/null +++ b/src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissionDefinitionProvider.cs @@ -0,0 +1,20 @@ +using AElfScanServer.Domain.Shared.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace AElfScanServer.Permissions; + +public class AElfScanServerPermissionDefinitionProvider : PermissionDefinitionProvider +{ + public override void Define(IPermissionDefinitionContext context) + { + var myGroup = context.AddGroup(AElfScanServerPermissions.GroupName); + //Define your own permissions here. Example: + //myGroup.AddPermission(AElfScanServerPermissions.MyPermission1, L("Permission:MyPermission1")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissions.cs b/src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissions.cs new file mode 100644 index 00000000..c36bedaa --- /dev/null +++ b/src/AElfScanServer.Application.Contracts/Permissions/AElfScanServerPermissions.cs @@ -0,0 +1,9 @@ +namespace AElfScanServer.Permissions; + +public static class AElfScanServerPermissions +{ + public const string GroupName = "AElfScanServer"; + + //Add your own permission names. Example: + //public const string MyPermission1 = GroupName + ".MyPermission1"; +} diff --git a/src/AElfScanServer.Application/AElfScanServer.Application.csproj b/src/AElfScanServer.Application/AElfScanServer.Application.csproj new file mode 100644 index 00000000..8e147e1d --- /dev/null +++ b/src/AElfScanServer.Application/AElfScanServer.Application.csproj @@ -0,0 +1,27 @@ + + + + + + net8.0 + enable + AElfScanServer + + + + + + + + + + + + + + + + + + + diff --git a/src/AElfScanServer.Application/AElfScanServerAppService.cs b/src/AElfScanServer.Application/AElfScanServerAppService.cs new file mode 100644 index 00000000..8cafa566 --- /dev/null +++ b/src/AElfScanServer.Application/AElfScanServerAppService.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AElfScanServer.Domain.Shared.Localization; +using Volo.Abp.Application.Services; + +namespace AElfScanServer; + +/* Inherit your application services from this class. + */ +public abstract class AElfScanServerAppService : ApplicationService +{ + protected AElfScanServerAppService() + { + LocalizationResource = typeof(AElfScanServerResource); + } +} diff --git a/src/AElfScanServer.Application/AElfScanServerApplicationAutoMapperProfile.cs b/src/AElfScanServer.Application/AElfScanServerApplicationAutoMapperProfile.cs new file mode 100644 index 00000000..19fa78cf --- /dev/null +++ b/src/AElfScanServer.Application/AElfScanServerApplicationAutoMapperProfile.cs @@ -0,0 +1,13 @@ +using AutoMapper; + +namespace AElfScanServer; + +public class AElfScanServerApplicationAutoMapperProfile : Profile +{ + public AElfScanServerApplicationAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + } +} diff --git a/src/AElfScanServer.Application/AElfScanServerApplicationModule.cs b/src/AElfScanServer.Application/AElfScanServerApplicationModule.cs new file mode 100644 index 00000000..4b075cfc --- /dev/null +++ b/src/AElfScanServer.Application/AElfScanServerApplicationModule.cs @@ -0,0 +1,31 @@ +using Volo.Abp.Account; +using Volo.Abp.AutoMapper; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace AElfScanServer; + +[DependsOn( + typeof(AElfScanServerDomainModule), + typeof(AbpAccountApplicationModule), + typeof(AElfScanServerApplicationContractsModule), + typeof(AbpIdentityApplicationModule), + typeof(AbpPermissionManagementApplicationModule), + typeof(AbpTenantManagementApplicationModule), + typeof(AbpFeatureManagementApplicationModule), + typeof(AbpSettingManagementApplicationModule) + )] +public class AElfScanServerApplicationModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.AddMaps(); + }); + } +} diff --git a/src/AElfScanServer.Application/Properties/AssemblyInfo.cs b/src/AElfScanServer.Application/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..10e5a929 --- /dev/null +++ b/src/AElfScanServer.Application/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("AElfScanServer.Application.Tests")] diff --git a/src/AElfScanServer.AuthServer/AElfScanServer.AuthServer.csproj b/src/AElfScanServer.AuthServer/AElfScanServer.AuthServer.csproj new file mode 100644 index 00000000..9827885f --- /dev/null +++ b/src/AElfScanServer.AuthServer/AElfScanServer.AuthServer.csproj @@ -0,0 +1,71 @@ + + + + + + net8.0 + enable + AElfScanServer + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + true + true + false + true + AElfScanServer-4681b4fd-151f-4221-84a4-929d86723e4c + + + + + + + + + + + + Always + + + Always + + + + + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ContentIncludedByDefault Remove="Pages\Index.cshtml" /> + <_ContentIncludedByDefault Remove="Pages\_ViewImports.cshtml" /> + + + diff --git a/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs b/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs new file mode 100644 index 00000000..9ba1669f --- /dev/null +++ b/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs @@ -0,0 +1,227 @@ +using System; +using System.IO; +using System.Linq; +using AElfScanServer.Domain.Shared; +using AElfScanServer.Domain.Shared.Localization; +using AElfScanServer.Domain.Shared.MultiTenancy; +using Localization.Resources.AbpUi; +using Medallion.Threading; +using Medallion.Threading.Redis; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using AElfScanServer.MongoDB; +using StackExchange.Redis; +using Volo.Abp; +using Volo.Abp.Account; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.Mvc.UI; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.Auditing; +using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Caching; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.DistributedLocking; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; +using Volo.Abp.Security.Claims; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.UI; +using Volo.Abp.VirtualFileSystem; +using Volo.Abp.Account.Localization; +using Volo.Abp.Data; + +namespace AElfScanServer; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpDistributedLockingModule), + typeof(AbpAccountWebOpenIddictModule), + typeof(AbpAccountApplicationModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), + typeof(AElfScanServerMongoDbModule), + typeof(AbpAspNetCoreSerilogModule) +)] +public class AElfScanServerAuthServerModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + PreConfigure(builder => + { + builder.AddServer(options => + { + options.AllowClientCredentialsFlow(); + options.UseAspNetCore().DisableTransportSecurityRequirement(); + options.SetIssuer(new Uri(configuration["AuthServer:IssuerUri"])); + }); + builder.AddValidation(options => + { + options.AddAudiences("AElfScanServer"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + + PreConfigure(builder => { builder.Configure(openIddictServerOptions => { openIddictServerOptions.GrantTypes.Add("login_credentials"); }); }); + // + // if (!hostingEnvironment.IsDevelopment()) + // { + // PreConfigure(options => + // { + // options.AddDevelopmentEncryptionAndSigningCertificate = false; + // }); + // + // PreConfigure(serverBuilder => + // { + // serverBuilder.AddProductionEncryptionAndSigningCertificate("openiddict.pfx", + // "ef404633-6a12-412b-ad69-6df1c6be4aeb"); + // }); + // } + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource), + typeof(AccountResource) + ); + }); + + Configure(options => + { + options.StyleBundles.Configure( + LeptonXLiteThemeBundles.Styles.Global, + bundle => { bundle.AddFiles("/global-styles.css"); } + ); + }); + + Configure(options => + { + //options.IsEnabledForGetRequests = true; + options.ApplicationName = "AuthServer"; + }); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical( + Path.Combine(hostingEnvironment.ContentRootPath, + $"..{Path.DirectorySeparatorChar}AElfScanServer.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical( + Path.Combine(hostingEnvironment.ContentRootPath, + $"..{Path.DirectorySeparatorChar}AElfScanServer.Domain")); + }); + } + + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + options.RedirectAllowedUrls.AddRange(configuration["App:RedirectAllowedUrls"]?.Split(',') ?? + Array.Empty()); + + options.Applications["Angular"].RootUrl = configuration["App:ClientUrl"]; + options.Applications["Angular"].Urls[AccountUrlNames.PasswordReset] = "account/reset-password"; + }); + + Configure(options => { options.IsJobExecutionEnabled = false; }); + + Configure(options => { options.KeyPrefix = "AElfScanServer:"; }); + + var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("AElfScanServer"); + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!); + dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "AElfScanServer-Protection-Keys"); + } + + context.Services.AddSingleton(sp => + { + var connection = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!); + return new RedisDistributedSynchronizationProvider(connection.GetDatabase()); + }); + + context.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"]? + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() ?? Array.Empty() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + + context.Services.Configure(options => + { + options.IsDynamicClaimsEnabled = true; + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseAbpRequestLocalization(); + + if (!env.IsDevelopment()) + { + app.UseErrorPage(); + } + + app.UseCorrelationId(); + app.UseStaticFiles(); + app.UseRouting(); + app.UseCors(); + app.UseAuthentication(); + app.UseAbpOpenIddictValidation(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseUnitOfWork(); + // app.UseDynamicClaims(); + app.UseAuthorization(); + + app.UseAuditing(); + app.UseAbpSerilogEnrichers(); + app.UseConfiguredEndpoints(); + } +} \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/AElfScanServerBrandingProvider.cs b/src/AElfScanServer.AuthServer/AElfScanServerBrandingProvider.cs new file mode 100644 index 00000000..16e0cad9 --- /dev/null +++ b/src/AElfScanServer.AuthServer/AElfScanServerBrandingProvider.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Ui.Branding; +using Volo.Abp.DependencyInjection; + +namespace AElfScanServer; + +[Dependency(ReplaceServices = true)] +public class AElfScanServerBrandingProvider : DefaultBrandingProvider +{ + public override string AppName => "AElfScanServer"; +} diff --git a/src/AElfScanServer.AuthServer/Logs/logs.txt b/src/AElfScanServer.AuthServer/Logs/logs.txt new file mode 100644 index 00000000..7fed4759 --- /dev/null +++ b/src/AElfScanServer.AuthServer/Logs/logs.txt @@ -0,0 +1,8181 @@ +2024-08-15 13:48:26.008 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-15 13:48:27.692 +08:00 [INF] Loaded ABP modules: +2024-08-15 13:48:27.693 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-15 13:48:27.693 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - AElfScanServer.AElfScanServerDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.PermissionManagement.OpenIddict.AbpPermissionManagementDomainOpenIddictModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-15 13:48:27.693 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-15 13:48:27.851 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-15 13:48:28.165 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-15 13:48:28.271 +08:00 [INF] Initialized all ABP modules. +2024-08-15 13:48:28.484 +08:00 [INF] Now listening on: https://localhost:44336 +2024-08-15 13:48:28.484 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-15 13:48:28.484 +08:00 [INF] Hosting environment: Development +2024-08-15 13:48:28.484 +08:00 [INF] Content root path: /Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer +2024-08-15 13:48:28.623 +08:00 [ERR] This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. +MongoDB.Driver.MongoCommandException: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. + ---> MongoDB.Driver.MongoCommandException: Command aggregate failed: Transaction numbers are only allowed on a replica set member or mongos. + --- End of inner exception stack trace --- + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ProcessResponse(ConnectionId connectionId, CommandMessage responseMessage) + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Servers.Server.ServerChannel.ExecuteProtocolAsync[TResult](IWireProtocol`1 protocol, ICoreSession session, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.RetryableReadOperationExecutor.ExecuteAsync[TResult](IRetryableReadOperation`1 operation, RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.ReadCommandOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken) + at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle session, PipelineDefinition`2 pipeline, AggregateOptions options, CancellationToken cancellationToken) + at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExecutableQuery`3.ExecuteAsync(IClientSessionHandle session, CancellationToken cancellationToken) + at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken) + at Volo.Abp.Domain.Repositories.MongoDB.MongoDbRepository`2.GetListAsync(Boolean includeDetails, CancellationToken cancellationToken) + at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) + at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync() + at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) + at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) + at Volo.Abp.PermissionManagement.StaticPermissionSaver.UpdateChangedPermissionGroupsAsync(IEnumerable`1 permissionGroupRecords) + at Volo.Abp.PermissionManagement.StaticPermissionSaver.SaveAsync() + at Volo.Abp.PermissionManagement.StaticPermissionSaver.SaveAsync() + at Volo.Abp.PermissionManagement.StaticPermissionSaver.SaveAsync() + at Volo.Abp.PermissionManagement.StaticPermissionSaver.SaveAsync() + at Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule.<>c__DisplayClass8_0.<b__1>d.MoveNext() +2024-08-15 13:48:28.623 +08:00 [ERR] This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. +MongoDB.Driver.MongoCommandException: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. + ---> MongoDB.Driver.MongoCommandException: Command aggregate failed: Transaction numbers are only allowed on a replica set member or mongos. + --- End of inner exception stack trace --- + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ProcessResponse(ConnectionId connectionId, CommandMessage responseMessage) + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Servers.Server.ServerChannel.ExecuteProtocolAsync[TResult](IWireProtocol`1 protocol, ICoreSession session, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.RetryableReadOperationExecutor.ExecuteAsync[TResult](IRetryableReadOperation`1 operation, RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.ReadCommandOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken) + at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle session, PipelineDefinition`2 pipeline, AggregateOptions options, CancellationToken cancellationToken) + at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExecutableQuery`3.ExecuteAsync(IClientSessionHandle session, CancellationToken cancellationToken) + at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken) + at Volo.Abp.Domain.Repositories.MongoDB.MongoDbRepository`2.GetListAsync(Boolean includeDetails, CancellationToken cancellationToken) + at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) + at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync() + at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) + at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) + at Volo.Abp.FeatureManagement.StaticFeatureSaver.UpdateChangedFeatureGroupsAsync(IEnumerable`1 featureGroupRecords) + at Volo.Abp.FeatureManagement.StaticFeatureSaver.SaveAsync() + at Volo.Abp.FeatureManagement.StaticFeatureSaver.SaveAsync() + at Volo.Abp.FeatureManagement.StaticFeatureSaver.SaveAsync() + at Volo.Abp.FeatureManagement.StaticFeatureSaver.SaveAsync() + at Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule.<>c__DisplayClass8_0.<b__1>d.MoveNext() +--- End of stack trace from previous location --- + at Polly.AsyncPolicy.<>c__DisplayClass40_0.<b__0>d.MoveNext() +--- End of stack trace from previous location --- + at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, CancellationToken cancellationToken, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext) +2024-08-15 13:48:28.624 +08:00 [ERR] This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. +MongoDB.Driver.MongoCommandException: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. + ---> MongoDB.Driver.MongoCommandException: Command aggregate failed: Transaction numbers are only allowed on a replica set member or mongos. + --- End of inner exception stack trace --- + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ProcessResponse(ConnectionId connectionId, CommandMessage responseMessage) + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Servers.Server.ServerChannel.ExecuteProtocolAsync[TResult](IWireProtocol`1 protocol, ICoreSession session, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.RetryableReadOperationExecutor.ExecuteAsync[TResult](IRetryableReadOperation`1 operation, RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.ReadCommandOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken) + at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle session, PipelineDefinition`2 pipeline, AggregateOptions options, CancellationToken cancellationToken) + at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExecutableQuery`3.ExecuteAsync(IClientSessionHandle session, CancellationToken cancellationToken) + at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken) + at Volo.Abp.Domain.Repositories.MongoDB.MongoDbRepository`2.GetListAsync(Boolean includeDetails, CancellationToken cancellationToken) + at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) + at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync() + at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) + at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) + at Volo.Abp.SettingManagement.StaticSettingSaver.UpdateChangedSettingsAsync(List`1 SettingRecords) + at Volo.Abp.SettingManagement.StaticSettingSaver.SaveAsync() + at Volo.Abp.SettingManagement.StaticSettingSaver.SaveAsync() + at Volo.Abp.SettingManagement.StaticSettingSaver.SaveAsync() + at Volo.Abp.SettingManagement.StaticSettingSaver.SaveAsync() + at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) + at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() + at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) + at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) + at Volo.Abp.SettingManagement.AbpSettingManagementDomainModule.<>c__DisplayClass8_0.<b__1>d.MoveNext() +--- End of stack trace from previous location --- + at Polly.AsyncPolicy.<>c__DisplayClass40_0.<b__0>d.MoveNext() +--- End of stack trace from previous location --- + at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, CancellationToken cancellationToken, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext) +2024-08-15 13:48:29.169 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/ - null null +2024-08-15 13:48:31.925 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:31.934 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:31.936 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:31.937 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:31.937 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:31.945 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:31.946 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:31.946 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:31.947 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:31.949 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:31.951 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:31.951 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:31.951 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:32.212 +08:00 [INF] Executing endpoint '/Index' +2024-08-15 13:48:32.224 +08:00 [INF] Route matched with {page = "/Index", area = "", action = "", controller = ""}. Executing page /Index +2024-08-15 13:48:32.225 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-15 13:48:32.264 +08:00 [INF] Executing handler method AElfScanServer.Pages.IndexModel.OnGetAsync - ModelState is "Valid" +2024-08-15 13:48:32.314 +08:00 [INF] Executed handler method OnGetAsync, returned result . +2024-08-15 13:48:32.317 +08:00 [INF] Executing an implicit handler method - ModelState is "Valid" +2024-08-15 13:48:32.317 +08:00 [INF] Executed an implicit handler method, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult. +2024-08-15 13:48:32.597 +08:00 [DBG] Added bundle 'LeptonXLite.Global' to the page in 27.68 ms. +2024-08-15 13:48:32.635 +08:00 [DBG] Added bundle 'LeptonXLite.Global' to the page in 14.29 ms. +2024-08-15 13:48:32.665 +08:00 [INF] Executed page /Index in 436.4784ms +2024-08-15 13:48:32.666 +08:00 [INF] Executed endpoint '/Index' +2024-08-15 13:48:32.687 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/core/abp.css?_v=638592886740000000 - null null +2024-08-15 13:48:32.689 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/bootstrap-dim.css?_v=638550048240000000 - null null +2024-08-15 13:48:32.690 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/@fortawesome/fontawesome-free/css/all.css?_v=638592886740000000 - null null +2024-08-15 13:48:32.690 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/@fortawesome/fontawesome-free/css/v4-shims.css?_v=638592886740000000 - null null +2024-08-15 13:48:32.690 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/toastr/toastr.min.css?_v=638560452480000000 - null null +2024-08-15 13:48:32.692 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/select2/css/select2.min.css?_v=638560452460000000 - null null +2024-08-15 13:48:32.694 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css?_v=638560452470000000 - null null +2024-08-15 13:48:32.699 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/bootstrap-datepicker/bootstrap-datepicker.min.css?_v=638560452450000000 - null null +2024-08-15 13:48:32.699 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/datatables.net-bs5/css/dataTables.bootstrap5.css?_v=638560452460000000 - null null +2024-08-15 13:48:32.701 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/bootstrap-daterangepicker/daterangepicker.css?_v=638560452450000000 - null null +2024-08-15 13:48:32.701 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/js-bundle.css?_v=638550048240000000 - null null +2024-08-15 13:48:32.701 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css?_v=638592122120000000 - null null +2024-08-15 13:48:32.701 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-styles.css?_v=638592122120000000 - null null +2024-08-15 13:48:32.702 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/abp-bundle.css?_v=638550048240000000 - null null +2024-08-15 13:48:32.702 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/layout-bundle.css?_v=638550048240000000 - null null +2024-08-15 13:48:32.702 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/font-bundle.css?_v=638550048240000000 - null null +2024-08-15 13:48:32.702 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/libs/bootstrap-icons/font/bootstrap-icons.css?_v=638550048240000000 - null null +2024-08-15 13:48:32.702 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-styles.css'. Physical path: 'N/A' +2024-08-15 13:48:32.702 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css'. Physical path: 'N/A' +2024-08-15 13:48:32.702 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/css/font-bundle.css'. Physical path: 'N/A' +2024-08-15 13:48:32.702 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/css/abp-bundle.css'. Physical path: 'N/A' +2024-08-15 13:48:32.702 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/images/clients/angular.svg - null null +2024-08-15 13:48:32.702 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/global-styles.css?_v=638592883640000000 - null null +2024-08-15 13:48:32.702 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-styles.css?_v=638592122120000000 - 200 338 text/css 1.1289ms +2024-08-15 13:48:32.702 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/abp-bundle.css?_v=638550048240000000 - 200 3385 text/css 0.77ms +2024-08-15 13:48:32.702 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/font-bundle.css?_v=638550048240000000 - 200 48 text/css 0.426ms +2024-08-15 13:48:32.702 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css?_v=638592122120000000 - 200 266 text/css 1.1937ms +2024-08-15 13:48:32.703 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/images/clients/swagger.svg - null null +2024-08-15 13:48:32.705 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/ - 200 null text/html; charset=utf-8 3536.8197ms +2024-08-15 13:48:32.705 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.705 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:32.706 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.707 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.707 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:32.707 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:32.707 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:32.707 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:32.707 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.708 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:32.708 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:32.708 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:32.708 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:32.707 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.708 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.708 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.708 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.708 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:32.709 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:32.709 +08:00 [INF] Sending file. Request path: '/libs/abp/core/abp.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.css' +2024-08-15 13:48:32.709 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/core/abp.css?_v=638592886740000000 - 200 1331 text/css 22.6654ms +2024-08-15 13:48:32.709 +08:00 [INF] Sending file. Request path: '/libs/select2/css/select2.min.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/select2/css/select2.min.css' +2024-08-15 13:48:32.710 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/select2/css/select2.min.css?_v=638560452460000000 - 200 14966 text/css 17.1206ms +2024-08-15 13:48:32.710 +08:00 [INF] Sending file. Request path: '/global-styles.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/global-styles.css' +2024-08-15 13:48:32.710 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/global-styles.css?_v=638592883640000000 - 200 186 text/css 8.1498ms +2024-08-15 13:48:32.711 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/images/clients/swagger.svg - 404 0 null 8.7907ms +2024-08-15 13:48:32.712 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET https://localhost:44336/images/clients/swagger.svg, Response status code: 404 +2024-08-15 13:48:32.713 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/images/clients/angular.svg - 404 0 null 10.2917ms +2024-08-15 13:48:32.713 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET https://localhost:44336/images/clients/angular.svg, Response status code: 404 +2024-08-15 13:48:32.715 +08:00 [INF] Sending file. Request path: '/libs/bootstrap-datepicker/bootstrap-datepicker.min.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.css' +2024-08-15 13:48:32.715 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/bootstrap-datepicker/bootstrap-datepicker.min.css?_v=638560452450000000 - 200 15733 text/css 15.926ms +2024-08-15 13:48:32.716 +08:00 [INF] Sending file. Request path: '/libs/datatables.net-bs5/css/dataTables.bootstrap5.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/datatables.net-bs5/css/dataTables.bootstrap5.css' +2024-08-15 13:48:32.716 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/datatables.net-bs5/css/dataTables.bootstrap5.css?_v=638560452460000000 - 200 13900 text/css 16.396ms +2024-08-15 13:48:32.716 +08:00 [INF] Sending file. Request path: '/libs/bootstrap-daterangepicker/daterangepicker.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.css' +2024-08-15 13:48:32.716 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/bootstrap-daterangepicker/daterangepicker.css?_v=638560452450000000 - 200 8069 text/css 14.7334ms +2024-08-15 13:48:32.716 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/css/layout-bundle.css'. Physical path: 'N/A' +2024-08-15 13:48:32.716 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/layout-bundle.css?_v=638550048240000000 - 200 25953 text/css 14.3071ms +2024-08-15 13:48:32.716 +08:00 [INF] Sending file. Request path: '/libs/toastr/toastr.min.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/toastr/toastr.min.css' +2024-08-15 13:48:32.716 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/css/js-bundle.css'. Physical path: 'N/A' +2024-08-15 13:48:32.716 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/toastr/toastr.min.css?_v=638560452480000000 - 200 6454 text/css 25.95ms +2024-08-15 13:48:32.716 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/js-bundle.css?_v=638550048240000000 - 200 27971 text/css 14.85ms +2024-08-15 13:48:32.718 +08:00 [INF] Sending file. Request path: '/libs/@fortawesome/fontawesome-free/css/v4-shims.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css' +2024-08-15 13:48:32.718 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/@fortawesome/fontawesome-free/css/v4-shims.css?_v=638592886740000000 - 200 41574 text/css 27.9795ms +2024-08-15 13:48:32.718 +08:00 [INF] Sending file. Request path: '/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css' +2024-08-15 13:48:32.718 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css?_v=638560452470000000 - 200 54850 text/css 24.3163ms +2024-08-15 13:48:32.718 +08:00 [INF] Sending file. Request path: '/libs/@fortawesome/fontawesome-free/css/all.css'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css' +2024-08-15 13:48:32.718 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/@fortawesome/fontawesome-free/css/all.css?_v=638592886740000000 - 200 132658 text/css 28.6326ms +2024-08-15 13:48:32.720 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/libs/bootstrap-icons/font/bootstrap-icons.css'. Physical path: 'N/A' +2024-08-15 13:48:32.721 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/libs/bootstrap-icons/font/bootstrap-icons.css?_v=638550048240000000 - 200 74827 text/css 18.5692ms +2024-08-15 13:48:32.721 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/css/bootstrap-dim.css'. Physical path: 'N/A' +2024-08-15 13:48:32.721 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/css/bootstrap-dim.css?_v=638550048240000000 - 200 262392 text/css 32.0032ms +2024-08-15 13:48:32.742 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/utils/abp-utils.umd.min.js?_v=638592886070000000 - null null +2024-08-15 13:48:32.745 +08:00 [INF] Sending file. Request path: '/libs/abp/utils/abp-utils.umd.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js' +2024-08-15 13:48:32.745 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/utils/abp-utils.umd.min.js?_v=638592886070000000 - 200 8256 application/javascript 2.9188ms +2024-08-15 13:48:32.746 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/core/abp.js?_v=638592886740000000 - null null +2024-08-15 13:48:32.746 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/jquery/abp.jquery.js?_v=638592886740000000 - null null +2024-08-15 13:48:32.746 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/jquery/jquery.js?_v=638560452460000000 - null null +2024-08-15 13:48:32.748 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/bootstrap/js/bootstrap.bundle.js?_v=638560452460000000 - null null +2024-08-15 13:48:32.748 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/lodash/lodash.min.js?_v=638560452470000000 - null null +2024-08-15 13:48:32.748 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/jquery-validation/jquery.validate.js?_v=638592886740000000 - null null +2024-08-15 13:48:32.748 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js?_v=638560452450000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/jquery-form/jquery.form.min.js?_v=638592886740000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/select2/js/select2.min.js?_v=638560452460000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/datatables.net/js/jquery.dataTables.js?_v=638560452470000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/datatables.net-bs5/js/dataTables.bootstrap5.js?_v=638560452460000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/sweetalert2/sweetalert2.all.min.js?_v=638592886740000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/toastr/toastr.min.js?_v=638560452480000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js?_v=638560452470000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/timeago/jquery.timeago.js?_v=638560452470000000 - null null +2024-08-15 13:48:32.749 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/luxon/abp.luxon.js?_v=638592886730000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/moment/moment.min.js?_v=638560452470000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/bootstrap-daterangepicker/daterangepicker.js?_v=638560452450000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/luxon/luxon.min.js?_v=638560452480000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/bootstrap-datepicker/bootstrap-datepicker.min.js?_v=638560452450000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/ui-extensions.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js'. Physical path: 'N/A' +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Sending file. Request path: '/libs/abp/luxon/abp.luxon.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/abp/luxon/abp.luxon.js' +2024-08-15 13:48:32.750 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js?_v=638592122120000000 - 200 3605 application/javascript 0.438ms +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/luxon/abp.luxon.js?_v=638592886730000000 - 200 1361 application/javascript 0.9293ms +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert2/abp-sweetalert2.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.750 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/authentication-state/authentication-state-listener.js?_v=638592122120000000 - null null +2024-08-15 13:48:32.751 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Pages/Abp/MultiTenancy/tenant-switch.js?_v=638549833820000000 - null null +2024-08-15 13:48:32.751 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js'. Physical path: 'N/A' +2024-08-15 13:48:32.751 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/authentication-state/authentication-state-listener.js'. Physical path: 'N/A' +2024-08-15 13:48:32.751 +08:00 [INF] Sending file. Request path: '/Pages/Abp/MultiTenancy/tenant-switch.js'. Physical path: 'N/A' +2024-08-15 13:48:32.751 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Pages/Abp/MultiTenancy/tenant-switch.js?_v=638549833820000000 - 200 414 application/javascript 0.2281ms +2024-08-15 13:48:32.751 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/js/lepton-x.bundle.min.js?_v=638550048240000000 - null null +2024-08-15 13:48:32.751 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/scripts/leptonx-mvc-ui-initializer.js?_v=638550048240000000 - null null +2024-08-15 13:48:32.751 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/scripts/leptonx-mvc-ui-initializer.js'. Physical path: 'N/A' +2024-08-15 13:48:32.751 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/scripts/leptonx-mvc-ui-initializer.js?_v=638550048240000000 - 200 143 application/javascript 0.2615ms +2024-08-15 13:48:32.751 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/authentication-state/authentication-state-listener.js?_v=638592122120000000 - 200 776 application/javascript 0.8182ms +2024-08-15 13:48:32.751 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/jquery-validation/localization/messages_zh.js?_v=638592886740000000 - null null +2024-08-15 13:48:32.751 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/timeago/locales/jquery.timeago.zh-CN.js?_v=638560452470000000 - null null +2024-08-15 13:48:32.751 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js?_v=638592122120000000 - 200 951 application/javascript 0.9783ms +2024-08-15 13:48:32.751 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js?_v=638560452450000000 - null null +2024-08-15 13:48:32.751 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/moment/locale/zh-cn.js?_v=638560452470000000 - null null +2024-08-15 13:48:32.752 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert2/abp-sweetalert2.js'. Physical path: 'N/A' +2024-08-15 13:48:32.752 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert2/abp-sweetalert2.js?_v=638592122120000000 - 200 3680 application/javascript 1.2529ms +2024-08-15 13:48:32.752 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Abp/ApplicationLocalizationScript?cultureName=zh-Hans - null null +2024-08-15 13:48:32.752 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Abp/ApplicationConfigurationScript - null null +2024-08-15 13:48:32.752 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Abp/ServiceProxyScript - null null +2024-08-15 13:48:32.752 +08:00 [INF] Sending file. Request path: '/libs/jquery-validation/localization/messages_zh.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/localization/messages_zh.js' +2024-08-15 13:48:32.752 +08:00 [INF] Sending file. Request path: '/libs/timeago/locales/jquery.timeago.zh-CN.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js' +2024-08-15 13:48:32.752 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/jquery-validation/localization/messages_zh.js?_v=638592886740000000 - 200 1401 application/javascript 0.5354ms +2024-08-15 13:48:32.752 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/timeago/locales/jquery.timeago.zh-CN.js?_v=638560452470000000 - 200 759 application/javascript 0.6899ms +2024-08-15 13:48:32.752 +08:00 [INF] Sending file. Request path: '/libs/abp/jquery/abp.jquery.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/abp/jquery/abp.jquery.js' +2024-08-15 13:48:32.752 +08:00 [INF] Sending file. Request path: '/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js' +2024-08-15 13:48:32.752 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js?_v=638560452450000000 - 200 613 application/javascript 0.8776ms +2024-08-15 13:48:32.753 +08:00 [INF] Sending file. Request path: '/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js' +2024-08-15 13:48:32.753 +08:00 [INF] Sending file. Request path: '/libs/datatables.net-bs5/js/dataTables.bootstrap5.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/datatables.net-bs5/js/dataTables.bootstrap5.js' +2024-08-15 13:48:32.753 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/jquery/abp.jquery.js?_v=638592886740000000 - 200 13489 application/javascript 5.9451ms +2024-08-15 13:48:32.753 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/datatables.net-bs5/js/dataTables.bootstrap5.js?_v=638560452460000000 - 200 5282 application/javascript 4.1972ms +2024-08-15 13:48:32.753 +08:00 [INF] Sending file. Request path: '/libs/toastr/toastr.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/toastr/toastr.min.js' +2024-08-15 13:48:32.753 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/toastr/toastr.min.js?_v=638560452480000000 - 200 5251 application/javascript 4.2425ms +2024-08-15 13:48:32.754 +08:00 [INF] Sending file. Request path: '/libs/jquery-form/jquery.form.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/jquery-form/jquery.form.min.js' +2024-08-15 13:48:32.754 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/jquery-form/jquery.form.min.js?_v=638592886740000000 - 200 17239 application/javascript 5.6114ms +2024-08-15 13:48:32.755 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js'. Physical path: 'N/A' +2024-08-15 13:48:32.755 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js?_v=638592122120000000 - 200 5965 application/javascript 5.7506ms +2024-08-15 13:48:32.755 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/ui-extensions.js'. Physical path: 'N/A' +2024-08-15 13:48:32.755 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/ui-extensions.js?_v=638592122120000000 - 200 10589 application/javascript 5.1822ms +2024-08-15 13:48:32.755 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js'. Physical path: 'N/A' +2024-08-15 13:48:32.756 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js?_v=638592122120000000 - 200 4790 application/javascript 5.7068ms +2024-08-15 13:48:32.756 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js?_v=638560452450000000 - 200 19798 application/javascript 4.5177ms +2024-08-15 13:48:32.756 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js'. Physical path: 'N/A' +2024-08-15 13:48:32.756 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js'. Physical path: 'N/A' +2024-08-15 13:48:32.756 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js?_v=638592122120000000 - 200 22351 application/javascript 5.3027ms +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.756 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js'. Physical path: 'N/A' +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:32.756 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js?_v=638592122120000000 - 200 9938 application/javascript 6.209ms +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:32.756 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.757 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:32.756 +08:00 [INF] Sending file. Request path: '/libs/timeago/jquery.timeago.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/timeago/jquery.timeago.js' +2024-08-15 13:48:32.757 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/timeago/jquery.timeago.js?_v=638560452470000000 - 200 7404 application/javascript 7.4677ms +2024-08-15 13:48:32.757 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js?_v=638592122120000000 - 200 8329 application/javascript 7.0333ms +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.757 +08:00 [INF] Sending file. Request path: '/libs/moment/locale/zh-cn.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/moment/locale/zh-cn.js' +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:32.757 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/moment/locale/zh-cn.js?_v=638560452470000000 - 200 4507 application/javascript 5.5906ms +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.757 +08:00 [INF] Sending file. Request path: '/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js'. Physical path: 'N/A' +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:32.757 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js?_v=638592122120000000 - 200 29160 application/javascript 6.7811ms +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:32.757 +08:00 [INF] Sending file. Request path: '/libs/abp/core/abp.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.js' +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:32.757 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/abp/core/abp.js?_v=638592886740000000 - 200 25156 application/javascript 11.545ms +2024-08-15 13:48:32.757 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/js/lepton-x.bundle.min.js'. Physical path: 'N/A' +2024-08-15 13:48:32.757 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/js/lepton-x.bundle.min.js?_v=638550048240000000 - 200 31189 application/javascript 6.5057ms +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.757 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.757 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:32.758 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.758 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:32.758 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:32.758 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:32.760 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.761 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:32.761 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:32.761 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:32.761 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:32.761 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:32.761 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:32.761 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.761 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:32.762 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:32.763 +08:00 [INF] Sending file. Request path: '/libs/bootstrap-datepicker/bootstrap-datepicker.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.js' +2024-08-15 13:48:32.763 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/bootstrap-datepicker/bootstrap-datepicker.min.js?_v=638560452450000000 - 200 33871 application/javascript 13.9326ms +2024-08-15 13:48:32.764 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:32.764 +08:00 [INF] Sending file. Request path: '/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js' +2024-08-15 13:48:32.764 +08:00 [INF] Sending file. Request path: '/libs/jquery-validation/jquery.validate.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/jquery-validation/jquery.validate.js' +2024-08-15 13:48:32.764 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js?_v=638560452470000000 - 200 45483 application/javascript 15.0097ms +2024-08-15 13:48:32.764 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/jquery-validation/jquery.validate.js?_v=638592886740000000 - 200 52536 application/javascript 16.1476ms +2024-08-15 13:48:32.765 +08:00 [INF] Sending file. Request path: '/libs/moment/moment.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/moment/moment.min.js' +2024-08-15 13:48:32.765 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/moment/moment.min.js?_v=638560452470000000 - 200 58890 application/javascript 15.1522ms +2024-08-15 13:48:32.765 +08:00 [INF] Sending file. Request path: '/libs/bootstrap-daterangepicker/daterangepicker.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js' +2024-08-15 13:48:32.765 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/bootstrap-daterangepicker/daterangepicker.js?_v=638560452450000000 - 200 67842 application/javascript 15.6932ms +2024-08-15 13:48:32.765 +08:00 [INF] Sending file. Request path: '/libs/lodash/lodash.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/lodash/lodash.min.js' +2024-08-15 13:48:32.765 +08:00 [INF] Sending file. Request path: '/libs/select2/js/select2.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/select2/js/select2.min.js' +2024-08-15 13:48:32.765 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/lodash/lodash.min.js?_v=638560452470000000 - 200 73015 application/javascript 17.6813ms +2024-08-15 13:48:32.765 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/select2/js/select2.min.js?_v=638560452460000000 - 200 70851 application/javascript 16.8234ms +2024-08-15 13:48:32.766 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:32.766 +08:00 [INF] Sending file. Request path: '/libs/luxon/luxon.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/luxon/luxon.min.js' +2024-08-15 13:48:32.766 +08:00 [INF] Sending file. Request path: '/libs/sweetalert2/sweetalert2.all.min.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js' +2024-08-15 13:48:32.766 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/sweetalert2/sweetalert2.all.min.js?_v=638592886740000000 - 200 77219 application/javascript 16.9472ms +2024-08-15 13:48:32.766 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/luxon/luxon.min.js?_v=638560452480000000 - 200 71248 application/javascript 16.5192ms +2024-08-15 13:48:32.770 +08:00 [INF] Route matched with {area = "Abp", action = "Get", controller = "AbpApplicationConfigurationScript", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Get() on controller Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController (Volo.Abp.AspNetCore.Mvc). +2024-08-15 13:48:32.778 +08:00 [INF] Sending file. Request path: '/libs/bootstrap/js/bootstrap.bundle.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.js' +2024-08-15 13:48:32.779 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/bootstrap/js/bootstrap.bundle.js?_v=638560452460000000 - 200 207819 application/javascript 30.8665ms +2024-08-15 13:48:32.781 +08:00 [INF] Sending file. Request path: '/libs/jquery/jquery.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/jquery/jquery.js' +2024-08-15 13:48:32.782 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/jquery/jquery.js?_v=638560452460000000 - 200 285314 application/javascript 35.223ms +2024-08-15 13:48:32.782 +08:00 [INF] Sending file. Request path: '/libs/datatables.net/js/jquery.dataTables.js'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/datatables.net/js/jquery.dataTables.js' +2024-08-15 13:48:32.782 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/datatables.net/js/jquery.dataTables.js?_v=638560452470000000 - 200 457711 application/javascript 33.1847ms +2024-08-15 13:48:32.783 +08:00 [INF] Route matched with {area = "Abp", action = "GetAll", controller = "AbpServiceProxyScript", page = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult GetAll(Volo.Abp.AspNetCore.Mvc.ProxyScripting.ServiceProxyGenerationModel) on controller Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController (Volo.Abp.AspNetCore.Mvc). +2024-08-15 13:48:32.783 +08:00 [INF] Route matched with {area = "Abp", action = "Get", controller = "AbpApplicationLocalizationScript", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] GetAsync(Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationRequestDto) on controller Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController (Volo.Abp.AspNetCore.Mvc). +2024-08-15 13:48:32.850 +08:00 [DBG] Executing AbpApplicationConfigurationAppService.GetAsync()... +2024-08-15 13:48:32.853 +08:00 [DBG] ActionApiDescriptionModel.Create: Account.RegisterAsyncByInput +2024-08-15 13:48:32.858 +08:00 [DBG] ActionApiDescriptionModel.Create: Account.SendPasswordResetCodeAsyncByInput +2024-08-15 13:48:32.859 +08:00 [DBG] ActionApiDescriptionModel.Create: Account.VerifyPasswordResetTokenAsyncByInput +2024-08-15 13:48:32.859 +08:00 [DBG] ActionApiDescriptionModel.Create: Account.ResetPasswordAsyncByInput +2024-08-15 13:48:32.860 +08:00 [DBG] ActionApiDescriptionModel.Create: Account.LoginByLogin +2024-08-15 13:48:32.860 +08:00 [DBG] ActionApiDescriptionModel.Create: Account.Logout +2024-08-15 13:48:32.860 +08:00 [DBG] ActionApiDescriptionModel.Create: Account.CheckPasswordByLogin +2024-08-15 13:48:32.861 +08:00 [DBG] ActionApiDescriptionModel.Create: DynamicClaims.RefreshAsync +2024-08-15 13:48:32.862 +08:00 [DBG] ActionApiDescriptionModel.Create: Profile.GetAsync +2024-08-15 13:48:32.862 +08:00 [DBG] ActionApiDescriptionModel.Create: Profile.UpdateAsyncByInput +2024-08-15 13:48:32.862 +08:00 [DBG] ActionApiDescriptionModel.Create: Profile.ChangePasswordAsyncByInput +2024-08-15 13:48:32.862 +08:00 [DBG] ActionApiDescriptionModel.Create: AbpTenant.FindTenantByNameAsyncByName +2024-08-15 13:48:32.862 +08:00 [DBG] ActionApiDescriptionModel.Create: AbpTenant.FindTenantByIdAsyncById +2024-08-15 13:48:32.863 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityRole.GetAllListAsync +2024-08-15 13:48:32.863 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityRole.GetListAsyncByInput +2024-08-15 13:48:32.863 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityRole.GetAsyncById +2024-08-15 13:48:32.863 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityRole.CreateAsyncByInput +2024-08-15 13:48:32.863 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityRole.UpdateAsyncByIdAndInput +2024-08-15 13:48:32.863 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityRole.DeleteAsyncById +2024-08-15 13:48:32.863 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.GetAsyncById +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.GetListAsyncByInput +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.CreateAsyncByInput +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.UpdateAsyncByIdAndInput +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.DeleteAsyncById +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.GetRolesAsyncById +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.GetAssignableRolesAsync +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.UpdateRolesAsyncByIdAndInput +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.FindByUsernameAsyncByUserName +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUser.FindByEmailAsyncByEmail +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUserLookup.FindByIdAsyncById +2024-08-15 13:48:32.864 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUserLookup.FindByUserNameAsyncByUserName +2024-08-15 13:48:32.865 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUserLookup.SearchAsyncByInput +2024-08-15 13:48:32.865 +08:00 [DBG] ActionApiDescriptionModel.Create: IdentityUserLookup.GetCountAsyncByInput +2024-08-15 13:48:32.865 +08:00 [DBG] ActionApiDescriptionModel.Create: AbpApplicationConfiguration.GetAsyncByOptions +2024-08-15 13:48:32.865 +08:00 [DBG] ActionApiDescriptionModel.Create: AbpApplicationLocalization.GetAsyncByInput +2024-08-15 13:48:32.865 +08:00 [DBG] ActionApiDescriptionModel.Create: AbpApiDefinition.GetByModel +2024-08-15 13:48:32.883 +08:00 [INF] Executing ContentResult with HTTP Response ContentType of application/javascript +2024-08-15 13:48:32.886 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc) in 102.4472ms +2024-08-15 13:48:32.886 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:32.886 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Abp/ServiceProxyScript - 200 6240 application/javascript 134.5827ms +2024-08-15 13:48:32.888 +08:00 [INF] Executing ContentResult with HTTP Response ContentType of application/javascript +2024-08-15 13:48:32.889 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc) in 103.514ms +2024-08-15 13:48:32.889 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:32.889 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Abp/ApplicationLocalizationScript?cultureName=zh-Hans - 200 36669 application/javascript 137.1283ms +2024-08-15 13:48:33.422 +08:00 [DBG] Executed AbpApplicationConfigurationAppService.GetAsync(). +2024-08-15 13:48:33.471 +08:00 [INF] Executing ContentResult with HTTP Response ContentType of application/javascript +2024-08-15 13:48:33.471 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc) in 701.0351ms +2024-08-15 13:48:33.472 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:33.473 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Abp/ApplicationConfigurationScript - 200 7383 application/javascript 721.0377ms +2024-08-15 13:48:33.664 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/favicon.svg - null null +2024-08-15 13:48:33.664 +08:00 [INF] Sending file. Request path: '/favicon.svg'. Physical path: 'N/A' +2024-08-15 13:48:33.664 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/favicon.svg - 200 2827 image/svg+xml 0.866ms +2024-08-15 13:48:44.120 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Account/Login - null null +2024-08-15 13:48:44.140 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.141 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.142 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:44.142 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:44.142 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.144 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.144 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:44.144 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:44.144 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:44.144 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:44.144 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.144 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.144 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:44.156 +08:00 [INF] Executing endpoint '/Account/Login' +2024-08-15 13:48:44.172 +08:00 [INF] Route matched with {page = "/Account/Login", area = "", action = "", controller = ""}. Executing page /Account/Login +2024-08-15 13:48:44.172 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-15 13:48:44.380 +08:00 [INF] Executing handler method Volo.Abp.Account.Web.Pages.Account.LoginModel.OnGetAsync - ModelState is "Valid" +2024-08-15 13:48:44.389 +08:00 [INF] Executed handler method OnGetAsync, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult. +2024-08-15 13:48:44.446 +08:00 [DBG] Added bundle 'LeptonXLite.Global' to the page in 1.15 ms. +2024-08-15 13:48:44.490 +08:00 [DBG] Added bundle 'LeptonXLite.Global' to the page in 1.53 ms. +2024-08-15 13:48:44.496 +08:00 [DBG] Added bundle 'Volo.Abp.Account.Web.Pages.Account.LoginModel' to the page in 0.81 ms. +2024-08-15 13:48:44.496 +08:00 [INF] Executed page /Account/Login in 324.6153ms +2024-08-15 13:48:44.497 +08:00 [INF] Executed endpoint '/Account/Login' +2024-08-15 13:48:44.498 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Account/Login - 200 null text/html; charset=utf-8 378.0406ms +2024-08-15 13:48:44.527 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Abp/ApplicationLocalizationScript?cultureName=zh-Hans - null null +2024-08-15 13:48:44.527 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Abp/ApplicationConfigurationScript - null null +2024-08-15 13:48:44.527 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Abp/ServiceProxyScript - null null +2024-08-15 13:48:44.527 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Pages/Account/Login.js?_v=638592129220000000 - null null +2024-08-15 13:48:44.528 +08:00 [INF] Sending file. Request path: '/Pages/Account/Login.js'. Physical path: 'N/A' +2024-08-15 13:48:44.528 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Pages/Account/Login.js?_v=638592129220000000 - 200 585 application/javascript 0.4617ms +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.529 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.530 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:44.530 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:44.530 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-15 13:48:44.531 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-15 13:48:44.531 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-15 13:48:44.531 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-15 13:48:44.531 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-15 13:48:44.531 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.531 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-15 13:48:44.531 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-15 13:48:44.533 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:44.533 +08:00 [INF] Route matched with {area = "Abp", action = "Get", controller = "AbpApplicationLocalizationScript", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] GetAsync(Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationRequestDto) on controller Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController (Volo.Abp.AspNetCore.Mvc). +2024-08-15 13:48:44.534 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:44.534 +08:00 [INF] Route matched with {area = "Abp", action = "GetAll", controller = "AbpServiceProxyScript", page = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult GetAll(Volo.Abp.AspNetCore.Mvc.ProxyScripting.ServiceProxyGenerationModel) on controller Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController (Volo.Abp.AspNetCore.Mvc). +2024-08-15 13:48:44.535 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:44.536 +08:00 [INF] Route matched with {area = "Abp", action = "Get", controller = "AbpApplicationConfigurationScript", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Get() on controller Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController (Volo.Abp.AspNetCore.Mvc). +2024-08-15 13:48:44.536 +08:00 [INF] Executing ContentResult with HTTP Response ContentType of application/javascript +2024-08-15 13:48:44.536 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc) in 2.0879ms +2024-08-15 13:48:44.536 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:44.536 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Abp/ServiceProxyScript - 200 6240 application/javascript 9.461ms +2024-08-15 13:48:44.542 +08:00 [INF] Executing ContentResult with HTTP Response ContentType of application/javascript +2024-08-15 13:48:44.543 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc) in 9.4262ms +2024-08-15 13:48:44.543 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:44.543 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Abp/ApplicationLocalizationScript?cultureName=zh-Hans - 200 36669 application/javascript 15.9864ms +2024-08-15 13:48:44.544 +08:00 [DBG] Executing AbpApplicationConfigurationAppService.GetAsync()... +2024-08-15 13:48:44.558 +08:00 [DBG] Executed AbpApplicationConfigurationAppService.GetAsync(). +2024-08-15 13:48:44.559 +08:00 [INF] Executing ContentResult with HTTP Response ContentType of application/javascript +2024-08-15 13:48:44.560 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc) in 23.9245ms +2024-08-15 13:48:44.560 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc)' +2024-08-15 13:48:44.560 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Abp/ApplicationConfigurationScript - 200 7383 application/javascript 32.8357ms +2024-08-15 13:48:44.573 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff2?30af91bf14e37666a085fb8a161ff36d - null null +2024-08-15 13:48:44.573 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 - null null +2024-08-15 13:48:44.575 +08:00 [INF] Sending file. Request path: '/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2'. Physical path: '/Users/wuhaoxuan/Downloads/AElfScanServer/aspnet-core/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2' +2024-08-15 13:48:44.576 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 - 200 25464 font/woff2 2.5174ms +2024-08-15 13:48:44.577 +08:00 [INF] Sending file. Request path: '/Themes/LeptonXLite/Global/side-menu/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff2'. Physical path: 'N/A' +2024-08-15 13:48:44.577 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/Themes/LeptonXLite/Global/side-menu/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff2?30af91bf14e37666a085fb8a161ff36d - 200 92064 font/woff2 3.5881ms +2024-08-15 13:48:46.670 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-15 13:48:48.642 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-15 13:48:51.635 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-15 13:49:11.085 +08:00 [INF] Application is shutting down... +2024-08-15 13:49:11.104 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-15 14:01:43.649 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-15 14:01:44.824 +08:00 [INF] Loaded ABP modules: +2024-08-15 14:01:44.825 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-15 14:01:44.825 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-15 14:01:44.825 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-15 14:01:44.983 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-15 14:01:45.120 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 221 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-15 14:29:53.853 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-15 14:29:54.946 +08:00 [INF] Loaded ABP modules: +2024-08-15 14:29:54.946 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-15 14:29:54.946 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-15 14:29:54.946 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-15 14:29:55.089 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-15 14:29:55.253 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 221 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-19 13:57:00.079 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 13:57:01.940 +08:00 [INF] Loaded ABP modules: +2024-08-19 13:57:01.941 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 13:57:01.941 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 13:57:01.941 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 13:57:02.133 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 13:57:02.340 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 221 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-19 14:01:33.575 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 14:01:35.368 +08:00 [INF] Loaded ABP modules: +2024-08-19 14:01:35.368 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 14:01:35.368 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 14:01:35.369 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 14:01:35.369 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 14:01:35.588 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 14:01:35.744 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 221 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-19 14:05:25.285 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 14:05:27.071 +08:00 [INF] Loaded ABP modules: +2024-08-19 14:05:27.072 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 14:05:27.072 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 14:05:27.073 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 14:05:27.073 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 14:05:27.297 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 14:05:27.464 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 219 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-19 14:09:02.943 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 14:09:04.092 +08:00 [INF] Loaded ABP modules: +2024-08-19 14:09:04.093 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 14:09:04.093 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 14:09:04.093 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 14:09:04.416 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 14:09:04.566 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 219 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-19 14:19:18.396 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 14:19:19.637 +08:00 [INF] Loaded ABP modules: +2024-08-19 14:19:19.637 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 14:19:19.637 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 14:19:19.637 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 14:19:19.865 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 14:19:20.087 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 219 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-19 14:38:24.208 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 14:38:26.528 +08:00 [INF] Loaded ABP modules: +2024-08-19 14:38:26.529 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 14:38:26.529 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 14:38:26.529 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 14:38:26.981 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 14:39:26.878 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 14:39:27.852 +08:00 [INF] Loaded ABP modules: +2024-08-19 14:39:27.853 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 14:39:27.853 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 14:39:27.853 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 14:39:28.012 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 14:39:28.166 +08:00 [FTL] AElfScanServer.AuthServer terminated unexpectedly! +Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module AElfScanServer.AElfScanServerAuthServerModule, AElfScanServer.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.. See the inner exception for details. + ---> Autofac.Core.DependencyResolutionException: An exception was thrown while activating Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionEndpointDataSourceFactory -> Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider[] -> Microsoft.AspNetCore.Mvc.HotReload.HotReloadService -> Microsoft.AspNetCore.Mvc.Razor.RazorHotReload -> Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine -> Microsoft.AspNetCore.Mvc.Razor.Compilation.DefaultRazorPageFactoryProvider -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RuntimeViewCompilerProvider -> λ:Microsoft.AspNetCore.Razor.Language.RazorProjectEngine. + ---> System.TypeLoadException: Declaration referenced in a method implementation cannot be a final method. Type: 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions'. Assembly: 'Microsoft.CodeAnalysis.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.EnsureOptions() + at Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.CSharpCompiler.get_ParseOptions() + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c__DisplayClass2_0.b__3(RazorProjectEngineBuilder builder) + at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action`1 configure) + at Microsoft.Extensions.DependencyInjection.RazorRuntimeCompilationMvcCoreBuilderExtensions.<>c.b__2_2(IServiceProvider s) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass4_0.b__1(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.b__0() + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator) + at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Extensions.DependencyInjection.KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext context) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext context) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest& request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest& request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.ResolveComponent(ResolveRequest& request) + at Autofac.Core.Container.Autofac.IComponentContext.ResolveComponent(ResolveRequest& request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllerRoute(IEndpointRouteBuilder endpoints, String name, String pattern, Object defaults, Object constraints, Object dataTokens) + at Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule.<>c.b__1_13(EndpointRouteBuilderContext endpointContext) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.<>c__DisplayClass0_0.b__0(IEndpointRouteBuilder endpoints) + at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure) + at Microsoft.AspNetCore.Builder.AbpAspNetCoreApplicationBuilderExtensions.UseConfiguredEndpoints(IApplicationBuilder app, Action`1 additionalConfigurationAction) + at AElfScanServer.AElfScanServerAuthServerModule.OnApplicationInitialization(ApplicationInitializationContext context) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/AElfScanServerAuthServerModule.cs:line 219 + at Volo.Abp.Modularity.AbpModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) + at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + --- End of inner exception stack trace --- + at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) + at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() + at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) + at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) + at AElfScanServer.Program.Main(String[] args) in /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer/Program.cs:line 37 +2024-08-19 14:52:57.552 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 14:52:58.978 +08:00 [INF] Loaded ABP modules: +2024-08-19 14:52:58.978 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 14:52:58.978 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 14:52:58.978 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 14:52:59.159 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 14:52:59.574 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 14:52:59.743 +08:00 [INF] Initialized all ABP modules. +2024-08-19 14:53:00.156 +08:00 [INF] Now listening on: https://localhost:44336 +2024-08-19 14:53:00.157 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 14:53:00.157 +08:00 [INF] Hosting environment: Development +2024-08-19 14:53:00.157 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 14:53:01.369 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/ - null null +2024-08-19 14:53:01.575 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 14:53:01.592 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 14:53:01.601 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 14:53:01.606 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 14:53:01.607 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 14:53:01.630 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 14:53:01.632 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-19 14:53:01.633 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-19 14:53:01.634 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-19 14:53:01.639 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-19 14:53:01.640 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 14:53:01.640 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 14:53:01.641 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-19 14:53:01.984 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/ - 404 0 null 614.9486ms +2024-08-19 14:53:01.986 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET https://localhost:44336/, Response status code: 404 +2024-08-19 14:53:37.503 +08:00 [INF] Application is shutting down... +2024-08-19 14:53:37.532 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 15:37:36.726 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 15:37:39.042 +08:00 [INF] Loaded ABP modules: +2024-08-19 15:37:39.042 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 15:37:39.042 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 15:37:39.042 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 15:37:39.379 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 15:37:39.790 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 15:37:40.284 +08:00 [INF] Initialized all ABP modules. +2024-08-19 15:37:40.627 +08:00 [INF] Now listening on: https://localhost:44336 +2024-08-19 15:37:40.628 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 15:37:40.628 +08:00 [INF] Hosting environment: Development +2024-08-19 15:37:40.629 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 15:37:43.724 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/ - null null +2024-08-19 15:37:44.444 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 15:37:44.456 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 15:37:44.461 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 15:37:44.463 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 15:37:44.464 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 15:37:44.473 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 15:37:44.474 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-19 15:37:44.475 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-19 15:37:44.476 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-19 15:37:44.484 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-19 15:37:44.486 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 15:37:44.486 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 15:37:44.486 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-19 15:37:44.885 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/ - 404 0 null 1160.7438ms +2024-08-19 15:37:44.890 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET https://localhost:44336/, Response status code: 404 +2024-08-19 17:41:02.251 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 17:41:03.572 +08:00 [INF] Loaded ABP modules: +2024-08-19 17:41:03.572 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 17:41:03.572 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 17:41:03.573 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 17:41:03.573 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 17:41:03.778 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 17:41:04.136 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 17:41:04.198 +08:00 [INF] Initialized all ABP modules. +2024-08-19 17:41:04.628 +08:00 [INF] Now listening on: https://localhost:44336 +2024-08-19 17:41:04.629 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 17:41:04.629 +08:00 [INF] Hosting environment: Development +2024-08-19 17:41:04.629 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 17:41:06.417 +08:00 [INF] Request starting HTTP/2 GET https://localhost:44336/ - null null +2024-08-19 17:41:07.409 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 17:41:07.420 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 17:41:07.422 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 17:41:07.423 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 17:41:07.424 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 17:41:07.432 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 17:41:07.433 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-19 17:41:07.434 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-19 17:41:07.434 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-19 17:41:07.437 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-19 17:41:07.439 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 17:41:07.439 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 17:41:07.440 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-19 17:41:07.725 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44336/ - 404 0 null 1311.0318ms +2024-08-19 17:41:07.727 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET https://localhost:44336/, Response status code: 404 +2024-08-19 17:42:17.707 +08:00 [INF] Application is shutting down... +2024-08-19 17:42:17.724 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 18:34:08.574 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 18:34:09.711 +08:00 [INF] Loaded ABP modules: +2024-08-19 18:34:09.712 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 18:34:09.712 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 18:34:09.712 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 18:34:09.871 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 18:34:10.273 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 18:34:10.331 +08:00 [INF] Initialized all ABP modules. +2024-08-19 18:34:10.387 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-19 18:34:10.396 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-19 18:34:10.396 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 18:34:10.396 +08:00 [INF] Hosting environment: Development +2024-08-19 18:34:10.396 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 18:44:15.361 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - null 0 +2024-08-19 18:44:15.624 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:44:15.634 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:44:15.637 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 18:44:15.637 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 18:44:15.639 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:44:15.639 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as rejected by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:44:15.644 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachErrorParameters. +2024-08-19 18:44:15.645 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomErrorParameters. +2024-08-19 18:44:15.649 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 18:44:15.650 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:15.650 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:15.651 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:15.655 +08:00 [INF] The response was successfully returned as a JSON document: { + "error": "invalid_request", + "error_description": "This server only accepts HTTPS requests.", + "error_uri": "https://documentation.openiddict.com/errors/ID2083" +}. +2024-08-19 18:44:15.659 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:15.659 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:15.659 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:15.659 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:15.664 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 400 168 application/json;charset=UTF-8 305.1128ms +2024-08-19 18:44:44.481 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - null 0 +2024-08-19 18:44:44.494 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:44:44.495 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:44:44.495 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 18:44:44.495 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 18:44:44.496 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:44:44.496 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as rejected by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:44:44.496 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachErrorParameters. +2024-08-19 18:44:44.496 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomErrorParameters. +2024-08-19 18:44:44.496 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 18:44:44.497 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:44.497 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:44.497 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:44.497 +08:00 [INF] The response was successfully returned as a JSON document: { + "error": "invalid_request", + "error_description": "This server only accepts HTTPS requests.", + "error_uri": "https://documentation.openiddict.com/errors/ID2083" +}. +2024-08-19 18:44:44.498 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:44.498 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:44.498 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:44.498 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:44:44.498 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 400 168 application/json;charset=UTF-8 17.7987ms +2024-08-19 18:45:55.714 +08:00 [INF] Application is shutting down... +2024-08-19 18:45:55.760 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 18:46:03.818 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 18:46:04.874 +08:00 [INF] Loaded ABP modules: +2024-08-19 18:46:04.875 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 18:46:04.875 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 18:46:04.875 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 18:46:05.034 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 18:46:05.423 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 18:46:05.484 +08:00 [INF] Initialized all ABP modules. +2024-08-19 18:46:05.524 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-19 18:46:05.529 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-19 18:46:05.529 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 18:46:05.529 +08:00 [INF] Hosting environment: Development +2024-08-19 18:46:05.529 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 18:46:15.599 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - null 0 +2024-08-19 18:46:15.743 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:46:15.754 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:46:15.757 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 18:46:15.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 18:46:15.759 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:46:15.759 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as rejected by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:46:15.764 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachErrorParameters. +2024-08-19 18:46:15.764 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomErrorParameters. +2024-08-19 18:46:15.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 18:46:15.769 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:15.771 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:15.772 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:15.777 +08:00 [INF] The response was successfully returned as a JSON document: { + "error": "invalid_request", + "error_description": "This server only accepts HTTPS requests.", + "error_uri": "https://documentation.openiddict.com/errors/ID2083" +}. +2024-08-19 18:46:15.782 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:15.782 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:15.782 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:15.782 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:15.791 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 400 168 application/json;charset=UTF-8 191.576ms +2024-08-19 18:46:16.796 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - null 0 +2024-08-19 18:46:16.803 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:46:16.805 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:46:16.806 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 18:46:16.806 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 18:46:16.806 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:46:16.806 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as rejected by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. +2024-08-19 18:46:16.806 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachErrorParameters. +2024-08-19 18:46:16.806 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomErrorParameters. +2024-08-19 18:46:16.807 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 18:46:16.807 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:16.808 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:16.808 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:16.809 +08:00 [INF] The response was successfully returned as a JSON document: { + "error": "invalid_request", + "error_description": "This server only accepts HTTPS requests.", + "error_uri": "https://documentation.openiddict.com/errors/ID2083" +}. +2024-08-19 18:46:16.809 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:16.809 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:16.809 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:16.809 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:46:16.810 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 400 168 application/json;charset=UTF-8 13.5993ms +2024-08-19 18:48:44.920 +08:00 [INF] Application is shutting down... +2024-08-19 18:48:44.941 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 18:48:49.984 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 18:48:50.957 +08:00 [INF] Loaded ABP modules: +2024-08-19 18:48:50.957 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 18:48:50.957 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 18:48:50.957 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 18:48:51.108 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 18:48:51.435 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 18:48:51.483 +08:00 [INF] Initialized all ABP modules. +2024-08-19 18:48:51.521 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-19 18:48:51.526 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-19 18:48:51.526 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 18:48:51.526 +08:00 [INF] Hosting environment: Development +2024-08-19 18:48:51.526 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 18:48:58.652 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - null 0 +2024-08-19 18:48:58.788 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:48:58.791 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 18:48:58.791 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 18:48:58.792 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 18:48:58.795 +08:00 [INF] The request was rejected because the mandatory 'Content-Type' header was missing. +2024-08-19 18:48:58.796 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.796 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was marked as rejected by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.797 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-19 18:48:58.797 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as rejected by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-19 18:48:58.800 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachErrorParameters. +2024-08-19 18:48:58.801 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomErrorParameters. +2024-08-19 18:48:58.803 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 18:48:58.804 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.804 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.805 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.809 +08:00 [INF] The response was successfully returned as a JSON document: { + "error": "invalid_request", + "error_description": "The mandatory 'Content-Type' header is missing.", + "error_uri": "https://documentation.openiddict.com/errors/ID2081" +}. +2024-08-19 18:48:58.814 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.814 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.814 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.814 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:48:58.820 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 400 175 application/json;charset=UTF-8 168.1223ms +2024-08-19 18:49:59.436 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - application/x-www-form-urlencoded 0 +2024-08-19 18:49:59.444 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:49:59.444 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 18:49:59.445 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 18:49:59.445 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 18:49:59.448 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.450 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.452 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.453 +08:00 [INF] The token request was successfully extracted: {}. +2024-08-19 18:49:59.453 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-19 18:49:59.456 +08:00 [INF] The token request was rejected because the mandatory 'grant_type' parameter was missing. +2024-08-19 18:49:59.457 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-19 18:49:59.457 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was marked as rejected by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-19 18:49:59.457 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-19 18:49:59.457 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as rejected by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-19 18:49:59.457 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachErrorParameters. +2024-08-19 18:49:59.458 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomErrorParameters. +2024-08-19 18:49:59.458 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 18:49:59.458 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.458 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.458 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.458 +08:00 [INF] The response was successfully returned as a JSON document: { + "error": "invalid_request", + "error_description": "The mandatory 'grant_type' parameter is missing.", + "error_uri": "https://documentation.openiddict.com/errors/ID2029" +}. +2024-08-19 18:49:59.459 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.459 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.459 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.459 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:49:59.459 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 400 176 application/json;charset=UTF-8 24.0056ms +2024-08-19 18:50:45.795 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-19 18:50:45.803 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:50:45.803 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 18:50:45.803 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 18:50:45.803 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 18:50:45.818 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:45.818 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:45.818 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:45.818 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-19 18:50:45.818 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-19 18:50:45.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-19 18:50:45.820 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-19 18:50:45.820 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-19 18:50:45.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-19 18:50:45.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-19 18:50:45.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-19 18:50:45.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-19 18:50:45.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-19 18:50:45.822 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-19 18:50:46.244 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-19 18:50:46.245 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-19 18:50:46.247 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-19 18:50:46.248 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-19 18:50:46.249 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-19 18:50:46.250 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-19 18:50:46.402 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-19 18:50:46.408 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-19 18:50:46.410 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-19 18:50:46.410 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-19 18:50:46.411 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-19 18:50:46.415 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-19 18:50:46.417 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-19 18:50:46.419 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-19 18:50:46.419 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-19 18:50:46.420 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-19 18:50:46.420 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-19 18:50:46.420 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-19 18:50:46.420 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-19 18:50:46.421 +08:00 [INF] The token request was successfully validated. +2024-08-19 18:50:46.421 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-19 18:50:46.422 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-19 18:50:46.423 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:46.423 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:46.423 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-19 18:50:46.423 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-19 18:50:46.438 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 18:50:46.443 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 18:50:46.444 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-19 18:50:46.445 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-19 18:50:46.445 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-19 18:50:46.445 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-19 18:50:46.446 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 18:50:46.446 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 18:50:46.446 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-19 18:50:46.647 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-19 18:50:46.657 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-19 18:50:46.658 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-19 18:50:46.996 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-19 18:50:47.112 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-19 18:50:47.114 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-19 18:50:47.311 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-19 18:50:47.315 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-19 18:50:47.318 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-19 18:50:47.354 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-19 18:50:47.355 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-19 18:50:47.356 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-19 18:50:47.357 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-19 18:50:47.358 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-19 18:50:47.358 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-19 18:50:47.361 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-19 18:50:47.373 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-19 18:50:47.374 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-19 18:50:47.381 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-19 18:50:47.405 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-19 18:50:47.407 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-19 18:50:47.411 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-19 18:50:47.518 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-19 18:50:53.286 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-19 18:50:53.289 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-19 18:50:53.291 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-19 18:50:53.294 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-19 18:50:53.295 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 18:50:53.296 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:53.296 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:53.296 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:53.296 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3594 +}. +2024-08-19 18:50:53.300 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:53.300 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:53.300 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:53.300 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 18:50:53.308 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 6647.185ms +2024-08-19 18:50:53.309 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-19 18:50:53.383 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 7588.8015ms +2024-08-19 18:54:55.222 +08:00 [INF] Application is shutting down... +2024-08-19 18:54:55.271 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 19:49:10.819 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 19:49:13.044 +08:00 [INF] Loaded ABP modules: +2024-08-19 19:49:13.044 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 19:49:13.044 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 19:49:13.044 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 19:49:13.045 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 19:49:13.348 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 19:49:13.753 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 19:49:13.814 +08:00 [INF] Initialized all ABP modules. +2024-08-19 19:49:13.850 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-19 19:49:13.855 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-19 19:49:13.855 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 19:49:13.855 +08:00 [INF] Hosting environment: Development +2024-08-19 19:49:13.855 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 19:50:06.007 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-19 19:50:06.487 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 19:50:06.489 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-19 19:50:06.489 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-19 19:50:06.491 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 19:50:06.499 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:06.501 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:06.501 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:06.504 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-19 19:50:06.504 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-19 19:50:06.507 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-19 19:50:06.507 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-19 19:50:06.508 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-19 19:50:06.508 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-19 19:50:06.508 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-19 19:50:06.508 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-19 19:50:06.509 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-19 19:50:06.509 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-19 19:50:06.509 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-19 19:50:06.623 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-19 19:50:06.624 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-19 19:50:06.626 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-19 19:50:06.627 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-19 19:50:06.628 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-19 19:50:06.629 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-19 19:50:06.718 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-19 19:50:06.725 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-19 19:50:06.727 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-19 19:50:06.728 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-19 19:50:06.728 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-19 19:50:06.747 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-19 19:50:06.750 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-19 19:50:06.753 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-19 19:50:06.754 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-19 19:50:06.754 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-19 19:50:06.754 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-19 19:50:06.755 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-19 19:50:06.755 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-19 19:50:06.756 +08:00 [INF] The token request was successfully validated. +2024-08-19 19:50:06.756 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-19 19:50:06.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-19 19:50:06.758 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:06.758 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:06.758 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-19 19:50:06.758 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-19 19:50:06.778 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-19 19:50:06.785 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-19 19:50:06.786 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-19 19:50:06.786 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-19 19:50:06.787 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-19 19:50:06.787 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-19 19:50:06.788 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 19:50:06.788 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-19 19:50:06.789 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-19 19:50:07.083 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-19 19:50:07.097 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-19 19:50:07.098 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-19 19:50:07.421 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-19 19:50:07.541 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-19 19:50:07.542 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-19 19:50:07.745 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-19 19:50:07.749 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-19 19:50:07.753 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-19 19:50:07.789 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-19 19:50:07.790 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-19 19:50:07.791 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-19 19:50:07.791 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-19 19:50:07.792 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-19 19:50:07.793 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-19 19:50:07.796 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-19 19:50:07.807 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-19 19:50:07.808 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-19 19:50:07.812 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-19 19:50:07.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-19 19:50:07.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-19 19:50:07.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-19 19:50:07.884 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-19 19:50:13.172 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-19 19:50:13.180 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-19 19:50:13.181 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-19 19:50:13.185 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-19 19:50:13.187 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-19 19:50:13.188 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:13.189 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:13.190 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:13.191 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3594 +}. +2024-08-19 19:50:13.195 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:13.195 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:13.196 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:13.196 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-19 19:50:13.203 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 6102.5537ms +2024-08-19 19:50:13.204 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-19 19:50:13.266 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 7260.7239ms +2024-08-19 19:59:33.359 +08:00 [INF] Application is shutting down... +2024-08-19 19:59:33.403 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 19:59:43.822 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 19:59:44.990 +08:00 [INF] Loaded ABP modules: +2024-08-19 19:59:44.990 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 19:59:44.990 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 19:59:44.991 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 19:59:44.991 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 19:59:44.991 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 19:59:45.147 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 19:59:45.451 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 19:59:45.496 +08:00 [INF] Initialized all ABP modules. +2024-08-19 19:59:45.533 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-19 19:59:45.538 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-19 19:59:45.538 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 19:59:45.538 +08:00 [INF] Hosting environment: Development +2024-08-19 19:59:45.538 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 20:19:36.400 +08:00 [INF] Application is shutting down... +2024-08-19 20:19:36.468 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 20:22:39.923 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-19 20:22:41.097 +08:00 [INF] Loaded ABP modules: +2024-08-19 20:22:41.098 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-19 20:22:41.098 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-19 20:22:41.098 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-19 20:22:41.268 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-19 20:22:41.611 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-19 20:22:41.669 +08:00 [INF] Initialized all ABP modules. +2024-08-19 20:22:41.706 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-19 20:22:41.713 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-19 20:22:41.713 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-19 20:22:41.713 +08:00 [INF] Hosting environment: Development +2024-08-19 20:22:41.713 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-19 21:22:41.344 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-19 21:22:41.499 +08:00 [INF] Start cleanup. +2024-08-19 21:22:41.499 +08:00 [INF] Start cleanup tokens. +2024-08-19 21:22:41.913 +08:00 [ERR] This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. +MongoDB.Driver.MongoCommandException: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. + ---> MongoDB.Driver.MongoCommandException: Command aggregate failed: Transaction numbers are only allowed on a replica set member or mongos. + --- End of inner exception stack trace --- + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ProcessResponse(ConnectionId connectionId, CommandMessage responseMessage) + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Servers.Server.ServerChannel.ExecuteProtocolAsync[TResult](IWireProtocol`1 protocol, ICoreSession session, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.RetryableReadOperationExecutor.ExecuteAsync[TResult](IRetryableReadOperation`1 operation, RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.ReadCommandOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken) + at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle session, PipelineDefinition`2 pipeline, AggregateOptions options, CancellationToken cancellationToken) + at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExecutableQuery`3.ExecuteAsync(IClientSessionHandle session, CancellationToken cancellationToken) + at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken) + at Volo.Abp.OpenIddict.Tokens.MongoOpenIddictTokenRepository.PruneAsync(DateTime date, CancellationToken cancellationToken) + at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) + at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync() + at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) + at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) + at Volo.Abp.OpenIddict.Tokens.AbpOpenIddictTokenStore.PruneAsync(DateTimeOffset threshold, CancellationToken cancellationToken) + at Volo.Abp.OpenIddict.Tokens.TokenCleanupService.CleanAsync() +2024-08-19 21:22:41.914 +08:00 [INF] Start cleanup authorizations. +2024-08-19 21:22:41.920 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-19 21:22:41.999 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-19 22:22:42.159 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-19 22:22:42.201 +08:00 [INF] Start cleanup. +2024-08-19 22:22:42.201 +08:00 [INF] Start cleanup tokens. +2024-08-19 22:22:42.222 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-19 22:22:42.315 +08:00 [INF] Start cleanup authorizations. +2024-08-19 22:22:42.316 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-19 22:22:42.321 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-19 23:22:42.384 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-19 23:22:42.426 +08:00 [INF] Start cleanup. +2024-08-19 23:22:42.426 +08:00 [INF] Start cleanup tokens. +2024-08-19 23:22:42.445 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-19 23:22:42.476 +08:00 [INF] Start cleanup authorizations. +2024-08-19 23:22:42.476 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-19 23:22:42.487 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 00:22:42.432 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 00:22:42.469 +08:00 [INF] Start cleanup. +2024-08-20 00:22:42.470 +08:00 [INF] Start cleanup tokens. +2024-08-20 00:22:42.480 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 00:22:42.499 +08:00 [INF] Start cleanup authorizations. +2024-08-20 00:22:42.499 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 00:22:42.509 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 01:22:42.616 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 01:22:42.665 +08:00 [INF] Start cleanup. +2024-08-20 01:22:42.666 +08:00 [INF] Start cleanup tokens. +2024-08-20 01:22:42.700 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 01:22:42.750 +08:00 [INF] Start cleanup authorizations. +2024-08-20 01:22:42.750 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 01:22:42.756 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 02:22:42.850 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 02:22:42.883 +08:00 [INF] Start cleanup. +2024-08-20 02:22:42.883 +08:00 [INF] Start cleanup tokens. +2024-08-20 02:22:42.897 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 02:22:42.933 +08:00 [INF] Start cleanup authorizations. +2024-08-20 02:22:42.935 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 02:22:42.943 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 03:22:42.902 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 03:22:42.929 +08:00 [INF] Start cleanup. +2024-08-20 03:22:42.929 +08:00 [INF] Start cleanup tokens. +2024-08-20 03:22:42.948 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 03:22:43.019 +08:00 [INF] Start cleanup authorizations. +2024-08-20 03:22:43.020 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 03:22:43.031 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 04:22:42.982 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 04:22:42.999 +08:00 [INF] Start cleanup. +2024-08-20 04:22:42.999 +08:00 [INF] Start cleanup tokens. +2024-08-20 04:22:43.007 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 04:22:43.049 +08:00 [INF] Start cleanup authorizations. +2024-08-20 04:22:43.051 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 04:22:43.067 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 05:22:42.968 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 05:22:42.997 +08:00 [INF] Start cleanup. +2024-08-20 05:22:42.997 +08:00 [INF] Start cleanup tokens. +2024-08-20 05:22:43.014 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 05:22:43.108 +08:00 [INF] Start cleanup authorizations. +2024-08-20 05:22:43.109 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 05:22:43.131 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 06:22:43.099 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 06:22:43.133 +08:00 [INF] Start cleanup. +2024-08-20 06:22:43.133 +08:00 [INF] Start cleanup tokens. +2024-08-20 06:22:43.146 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 06:22:43.208 +08:00 [INF] Start cleanup authorizations. +2024-08-20 06:22:43.209 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 06:22:43.216 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 07:22:43.458 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 07:22:43.496 +08:00 [INF] Start cleanup. +2024-08-20 07:22:43.496 +08:00 [INF] Start cleanup tokens. +2024-08-20 07:22:43.517 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 07:22:43.595 +08:00 [INF] Start cleanup authorizations. +2024-08-20 07:22:43.596 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 07:22:43.613 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 08:22:43.640 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 08:22:43.676 +08:00 [INF] Start cleanup. +2024-08-20 08:22:43.676 +08:00 [INF] Start cleanup tokens. +2024-08-20 08:22:43.689 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 08:22:43.719 +08:00 [INF] Start cleanup authorizations. +2024-08-20 08:22:43.720 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 08:22:43.735 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 09:22:43.880 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 09:22:43.905 +08:00 [INF] Start cleanup. +2024-08-20 09:22:43.905 +08:00 [INF] Start cleanup tokens. +2024-08-20 09:22:43.921 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 09:22:43.964 +08:00 [INF] Start cleanup authorizations. +2024-08-20 09:22:43.965 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 09:22:43.974 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 10:22:43.947 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 10:22:43.983 +08:00 [INF] Start cleanup. +2024-08-20 10:22:43.983 +08:00 [INF] Start cleanup tokens. +2024-08-20 10:22:44.005 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 10:22:44.062 +08:00 [INF] Start cleanup authorizations. +2024-08-20 10:22:44.064 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 10:22:44.079 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 10:26:42.847 +08:00 [INF] Application is shutting down... +2024-08-20 10:26:42.994 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 10:26:54.078 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 10:26:55.496 +08:00 [INF] Loaded ABP modules: +2024-08-20 10:26:55.496 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 10:26:55.496 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 10:26:55.497 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 10:26:55.497 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 10:26:55.671 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 10:26:56.141 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 10:26:56.258 +08:00 [INF] Initialized all ABP modules. +2024-08-20 10:26:56.411 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 10:26:56.422 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 10:26:56.423 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 10:26:56.423 +08:00 [INF] Hosting environment: Development +2024-08-20 10:26:56.423 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 10:27:36.020 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 10:27:37.021 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 10:27:37.025 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 10:27:37.025 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 10:27:37.027 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 10:27:37.040 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:37.041 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:37.042 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:37.045 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 10:27:37.045 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 10:27:37.048 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 10:27:37.049 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 10:27:37.049 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 10:27:37.050 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 10:27:37.051 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 10:27:37.051 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 10:27:37.052 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 10:27:37.052 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 10:27:37.052 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 10:27:37.230 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 10:27:37.232 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 10:27:37.238 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 10:27:37.240 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 10:27:37.241 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 10:27:37.243 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 10:27:37.426 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 10:27:37.434 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 10:27:37.436 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 10:27:37.436 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 10:27:37.437 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 10:27:37.441 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 10:27:37.444 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 10:27:37.447 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 10:27:37.448 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 10:27:37.448 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 10:27:37.448 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 10:27:37.449 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 10:27:37.449 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 10:27:37.449 +08:00 [INF] The token request was successfully validated. +2024-08-20 10:27:37.450 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 10:27:37.453 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 10:27:37.454 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:37.454 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:37.454 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 10:27:37.454 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 10:27:37.479 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 10:27:37.489 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 10:27:37.490 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 10:27:37.490 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 10:27:37.491 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 10:27:37.491 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 10:27:37.492 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 10:27:37.492 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 10:27:37.494 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 10:27:37.912 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 10:27:37.925 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 10:27:37.927 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 10:27:38.388 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 10:27:38.473 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 10:27:38.475 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 10:27:38.727 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 10:27:38.733 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 10:27:38.737 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 10:27:38.820 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 10:27:38.825 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 10:27:38.826 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 10:27:38.829 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 10:27:38.831 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 10:27:38.832 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 10:27:38.837 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 10:27:38.856 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 10:27:38.858 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 10:27:38.862 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 10:27:38.868 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 10:27:38.870 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 10:27:38.871 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 10:27:39.005 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 10:27:39.123 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 10:27:39.127 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 10:27:39.129 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 10:27:39.136 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 10:27:39.141 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 10:27:39.142 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:39.143 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:39.145 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:39.152 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3599 +}. +2024-08-20 10:27:39.163 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:39.163 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:39.164 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:39.164 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:27:39.176 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 1246.0994ms +2024-08-20 10:27:39.179 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 10:27:39.314 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 3298.7657ms +2024-08-20 10:30:23.760 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - null 0 +2024-08-20 10:30:23.771 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 10:30:23.772 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 10:30:23.772 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 10:30:23.772 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 10:30:23.773 +08:00 [INF] The request was rejected because the mandatory 'Content-Type' header was missing. +2024-08-20 10:30:23.773 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.773 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was marked as rejected by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.775 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 10:30:23.775 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as rejected by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 10:30:23.780 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachErrorParameters. +2024-08-20 10:30:23.783 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomErrorParameters. +2024-08-20 10:30:23.786 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 10:30:23.786 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.786 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.787 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.787 +08:00 [INF] The response was successfully returned as a JSON document: { + "error": "invalid_request", + "error_description": "The mandatory 'Content-Type' header is missing.", + "error_uri": "https://documentation.openiddict.com/errors/ID2081" +}. +2024-08-20 10:30:23.788 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.788 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.788 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.788 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessErrorContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:23.788 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - 400 175 application/json;charset=UTF-8 30.7072ms +2024-08-20 10:30:52.752 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - application/x-www-form-urlencoded 103 +2024-08-20 10:30:52.760 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 10:30:52.760 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 10:30:52.760 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 10:30:52.761 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 10:30:52.766 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:52.766 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:52.767 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:52.767 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "whx", + "password": "[redacted]" +}. +2024-08-20 10:30:52.767 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 10:30:52.767 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 10:30:52.768 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 10:30:52.800 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 10:30:52.800 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 10:30:52.800 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 10:30:52.800 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 10:30:52.800 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 10:30:52.800 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 10:30:52.809 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 10:30:52.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 10:30:52.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 10:30:52.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 10:30:52.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 10:30:52.813 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 10:30:52.815 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 10:30:52.817 +08:00 [INF] The token request was successfully validated. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 10:30:52.817 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 10:30:52.819 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 10:30:52.820 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 10:30:52.820 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 10:30:52.820 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 10:30:52.821 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 10:30:52.821 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 10:30:52.821 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 10:30:52.821 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 10:30:52.821 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 10:30:52.829 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 10:30:52.831 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 10:30:52.831 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 10:30:52.905 +08:00 [DBG] Remove dynamic claims cache for user: 9cfa2326-fcd1-b20e-a0d4-3a147fca9801 +2024-08-20 10:30:52.929 +08:00 [DBG] Get dynamic claims cache for user: 9cfa2326-fcd1-b20e-a0d4-3a147fca9801 +2024-08-20 10:30:52.930 +08:00 [DBG] Filling dynamic claims cache for user: 9cfa2326-fcd1-b20e-a0d4-3a147fca9801 +2024-08-20 10:30:52.975 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 10:30:52.976 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 10:30:52.976 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 10:30:52.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 10:30:52.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 10:30:52.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 10:30:52.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 10:30:52.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 10:30:52.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 10:30:52.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 10:30:52.978 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 10:30:52.978 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 10:30:52.979 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 10:30:52.980 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 10:30:52.981 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 10:30:52.981 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 10:30:52.996 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 10:30:53.018 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 10:30:53.018 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 10:30:53.018 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:53.019 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3599 +}. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:53.019 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 10:30:53.020 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 188.9375ms +2024-08-20 10:30:53.020 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 10:30:53.032 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - 200 1188 application/json;charset=UTF-8 280.7559ms +2024-08-20 10:51:26.888 +08:00 [INF] Application is shutting down... +2024-08-20 10:51:27.677 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 10:51:42.557 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 10:51:44.937 +08:00 [INF] Loaded ABP modules: +2024-08-20 10:51:44.938 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 10:51:44.938 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 10:51:44.939 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 10:51:44.939 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 10:51:45.284 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 10:51:45.805 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 10:51:45.903 +08:00 [INF] Initialized all ABP modules. +2024-08-20 10:51:46.003 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 10:51:46.008 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 10:51:46.008 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 10:51:46.008 +08:00 [INF] Hosting environment: Development +2024-08-20 10:51:46.008 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 11:51:45.420 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 11:51:45.657 +08:00 [INF] Start cleanup. +2024-08-20 11:51:45.657 +08:00 [INF] Start cleanup tokens. +2024-08-20 11:51:46.316 +08:00 [ERR] This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. +MongoDB.Driver.MongoCommandException: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. + ---> MongoDB.Driver.MongoCommandException: Command aggregate failed: Transaction numbers are only allowed on a replica set member or mongos. + --- End of inner exception stack trace --- + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ProcessResponse(ConnectionId connectionId, CommandMessage responseMessage) + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Servers.Server.ServerChannel.ExecuteProtocolAsync[TResult](IWireProtocol`1 protocol, ICoreSession session, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.RetryableReadOperationExecutor.ExecuteAsync[TResult](IRetryableReadOperation`1 operation, RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.ReadCommandOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken) + at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle session, PipelineDefinition`2 pipeline, AggregateOptions options, CancellationToken cancellationToken) + at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExecutableQuery`3.ExecuteAsync(IClientSessionHandle session, CancellationToken cancellationToken) + at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken) + at Volo.Abp.OpenIddict.Tokens.MongoOpenIddictTokenRepository.PruneAsync(DateTime date, CancellationToken cancellationToken) + at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) + at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync() + at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) + at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) + at Volo.Abp.OpenIddict.Tokens.AbpOpenIddictTokenStore.PruneAsync(DateTimeOffset threshold, CancellationToken cancellationToken) + at Volo.Abp.OpenIddict.Tokens.TokenCleanupService.CleanAsync() +2024-08-20 11:51:46.317 +08:00 [INF] Start cleanup authorizations. +2024-08-20 11:51:46.325 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 11:51:46.476 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 11:55:41.155 +08:00 [INF] Application is shutting down... +2024-08-20 11:55:41.198 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 11:55:46.660 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 11:55:48.126 +08:00 [INF] Loaded ABP modules: +2024-08-20 11:55:48.127 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 11:55:48.127 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 11:55:48.127 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 11:55:48.328 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 11:55:48.738 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 11:55:48.807 +08:00 [INF] Initialized all ABP modules. +2024-08-20 11:55:48.870 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 11:55:48.881 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 11:55:48.881 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 11:55:48.881 +08:00 [INF] Hosting environment: Development +2024-08-20 11:55:48.881 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 11:57:26.821 +08:00 [INF] Application is shutting down... +2024-08-20 11:57:26.834 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 11:57:49.621 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 11:57:52.635 +08:00 [INF] Loaded ABP modules: +2024-08-20 11:57:52.635 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 11:57:52.635 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 11:57:52.636 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 11:57:52.636 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 11:57:53.302 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 11:57:53.794 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 11:57:54.279 +08:00 [INF] Initialized all ABP modules. +2024-08-20 11:57:54.397 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 11:57:54.405 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 11:57:54.405 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 11:57:54.405 +08:00 [INF] Hosting environment: Development +2024-08-20 11:57:54.405 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 11:58:30.135 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 14:27:04.797 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 14:27:08.128 +08:00 [INF] Loaded ABP modules: +2024-08-20 14:27:08.129 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 14:27:08.129 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 14:27:08.130 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 14:27:08.130 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 14:27:08.349 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 14:27:08.756 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 14:27:08.814 +08:00 [INF] Initialized all ABP modules. +2024-08-20 14:27:08.866 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 14:27:08.872 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 14:27:08.872 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 14:27:08.872 +08:00 [INF] Hosting environment: Development +2024-08-20 14:27:08.872 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 14:27:26.148 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 14:27:26.704 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 14:27:26.707 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 14:27:26.707 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 14:27:26.708 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 14:27:26.717 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:26.719 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:26.720 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:26.723 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 14:27:26.723 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 14:27:26.726 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 14:27:26.727 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 14:27:26.727 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 14:27:26.728 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 14:27:26.728 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 14:27:26.728 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 14:27:26.728 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 14:27:26.729 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 14:27:26.729 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 14:27:26.864 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 14:27:26.865 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 14:27:26.867 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 14:27:26.868 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 14:27:26.868 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 14:27:26.869 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 14:27:26.963 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 14:27:26.970 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 14:27:26.971 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 14:27:26.972 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 14:27:26.972 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 14:27:26.976 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 14:27:26.979 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 14:27:26.981 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 14:27:26.981 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 14:27:26.982 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 14:27:26.982 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 14:27:26.982 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 14:27:26.983 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 14:27:26.983 +08:00 [INF] The token request was successfully validated. +2024-08-20 14:27:26.983 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 14:27:26.984 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 14:27:26.986 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:26.987 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:26.987 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 14:27:26.987 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 14:27:27.013 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 14:27:27.020 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 14:27:27.021 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 14:27:27.022 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 14:27:27.022 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 14:27:27.023 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 14:27:27.024 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 14:27:27.024 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 14:27:27.024 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 14:27:27.313 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 14:27:27.324 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 14:27:27.325 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 14:27:27.674 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 14:27:27.775 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 14:27:27.777 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 14:27:28.012 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 14:27:28.016 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 14:27:28.021 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 14:27:28.057 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 14:27:28.058 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 14:27:28.059 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 14:27:28.060 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 14:27:28.061 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 14:27:28.061 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 14:27:28.064 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 14:27:28.077 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 14:27:28.078 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 14:27:28.082 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 14:27:28.087 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 14:27:28.087 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 14:27:28.089 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 14:27:28.166 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 14:27:28.220 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 14:27:28.221 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 14:27:28.221 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 14:27:28.223 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 14:27:28.224 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 14:27:28.225 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:28.225 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:28.226 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:28.226 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3600 +}. +2024-08-20 14:27:28.228 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:28.229 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:28.229 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:28.229 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 14:27:28.234 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 907.146ms +2024-08-20 14:27:28.234 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 14:27:28.319 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 2171.2808ms +2024-08-20 15:21:19.323 +08:00 [INF] Application is shutting down... +2024-08-20 15:21:19.550 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 15:27:45.499 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 15:27:48.443 +08:00 [INF] Loaded ABP modules: +2024-08-20 15:27:48.444 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 15:27:48.444 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 15:27:48.445 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 15:27:48.445 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 15:27:48.445 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 15:27:48.799 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 15:27:49.338 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 15:27:49.468 +08:00 [INF] Initialized all ABP modules. +2024-08-20 15:27:49.596 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 15:27:49.626 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 15:27:49.626 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 15:27:49.626 +08:00 [INF] Hosting environment: Development +2024-08-20 15:27:49.626 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 15:28:31.596 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 15:28:31.939 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 15:28:31.944 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 15:28:31.944 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 15:28:31.946 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 15:28:31.960 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:31.962 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:31.963 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:31.969 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 15:28:31.969 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 15:28:31.972 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 15:28:31.972 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 15:28:31.972 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 15:28:31.973 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 15:28:31.973 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 15:28:31.974 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 15:28:31.974 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 15:28:31.974 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 15:28:31.974 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 15:28:32.745 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 15:28:32.746 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 15:28:32.749 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 15:28:32.751 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 15:28:32.752 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 15:28:32.753 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 15:28:32.841 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 15:28:32.848 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 15:28:32.850 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 15:28:32.851 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 15:28:32.852 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 15:28:32.856 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 15:28:32.858 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 15:28:32.860 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 15:28:32.861 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 15:28:32.861 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 15:28:32.861 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 15:28:32.862 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 15:28:32.862 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 15:28:32.862 +08:00 [INF] The token request was successfully validated. +2024-08-20 15:28:32.862 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 15:28:32.863 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 15:28:32.864 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:32.864 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:32.864 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 15:28:32.864 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 15:28:32.890 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 15:28:32.900 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 15:28:32.900 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 15:28:32.901 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 15:28:32.902 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 15:28:32.902 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 15:28:32.902 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 15:28:32.902 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 15:28:32.903 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 15:28:33.207 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 15:28:33.245 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 15:28:33.250 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 15:28:33.728 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 15:28:33.838 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 15:28:33.840 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 15:28:34.063 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 15:28:34.068 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 15:28:34.073 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 15:28:34.125 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 15:28:34.126 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 15:28:34.128 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 15:28:34.128 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 15:28:34.130 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 15:28:34.130 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 15:28:34.134 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 15:28:34.147 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 15:28:34.148 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 15:28:34.155 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 15:28:34.161 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 15:28:34.162 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 15:28:34.163 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 15:28:34.251 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 15:28:34.313 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 15:28:34.313 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 15:28:34.314 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 15:28:34.316 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 15:28:34.317 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 15:28:34.318 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:34.318 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:34.319 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:34.320 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3600 +}. +2024-08-20 15:28:34.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:34.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:34.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:34.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 15:28:34.328 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 1080.1845ms +2024-08-20 15:28:34.329 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 15:28:34.439 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 2843.9904ms +2024-08-20 15:46:01.892 +08:00 [INF] Application is shutting down... +2024-08-20 15:46:01.996 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 15:46:52.463 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 15:46:54.000 +08:00 [INF] Loaded ABP modules: +2024-08-20 15:46:54.001 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 15:46:54.001 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 15:46:54.001 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 15:46:54.198 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 15:46:54.585 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 15:46:54.734 +08:00 [INF] Initialized all ABP modules. +2024-08-20 15:46:54.798 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 15:46:54.808 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 15:46:54.808 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 15:46:54.808 +08:00 [INF] Hosting environment: Development +2024-08-20 15:46:54.808 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 15:49:58.671 +08:00 [INF] Application is shutting down... +2024-08-20 15:49:58.712 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 15:50:04.841 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 15:50:05.894 +08:00 [INF] Loaded ABP modules: +2024-08-20 15:50:05.895 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 15:50:05.895 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 15:50:05.895 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 15:50:06.064 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 15:50:06.401 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 15:50:06.483 +08:00 [INF] Initialized all ABP modules. +2024-08-20 15:50:06.531 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 15:50:06.539 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 15:50:06.539 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 15:50:06.539 +08:00 [INF] Hosting environment: Development +2024-08-20 15:50:06.539 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 16:07:30.953 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 16:07:31.335 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 16:07:31.338 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 16:07:31.339 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 16:07:31.341 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 16:07:31.355 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:31.356 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:31.357 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:31.360 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 16:07:31.360 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 16:07:31.363 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 16:07:31.364 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 16:07:31.364 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 16:07:31.365 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 16:07:31.365 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 16:07:31.365 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 16:07:31.366 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 16:07:31.366 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 16:07:31.367 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 16:07:31.979 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 16:07:31.980 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 16:07:31.983 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 16:07:31.984 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 16:07:31.985 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 16:07:31.986 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 16:07:32.099 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 16:07:32.107 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 16:07:32.110 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 16:07:32.110 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 16:07:32.111 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 16:07:32.118 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 16:07:32.121 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 16:07:32.124 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 16:07:32.125 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 16:07:32.125 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 16:07:32.125 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 16:07:32.126 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 16:07:32.126 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 16:07:32.128 +08:00 [INF] The token request was successfully validated. +2024-08-20 16:07:32.128 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 16:07:32.130 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 16:07:32.131 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:32.131 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:32.131 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 16:07:32.131 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 16:07:32.152 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 16:07:32.161 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 16:07:32.162 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 16:07:32.162 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 16:07:32.163 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 16:07:32.163 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 16:07:32.164 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 16:07:32.164 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 16:07:32.164 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 16:07:32.452 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 16:07:32.468 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 16:07:32.469 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 16:07:32.938 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 16:07:33.039 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 16:07:33.041 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 16:07:33.249 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 16:07:33.254 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 16:07:33.258 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 16:07:33.296 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 16:07:33.297 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 16:07:33.298 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 16:07:33.298 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 16:07:33.300 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 16:07:33.300 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 16:07:33.303 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 16:07:33.315 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 16:07:33.316 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 16:07:33.321 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 16:07:33.325 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 16:07:33.326 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 16:07:33.327 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 16:07:33.414 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 16:07:33.482 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 16:07:33.483 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 16:07:33.484 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 16:07:33.486 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 16:07:33.487 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 16:07:33.487 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:33.488 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:33.488 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:33.489 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3600 +}. +2024-08-20 16:07:33.491 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:33.491 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:33.491 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:33.491 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 16:07:33.498 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 1026.5192ms +2024-08-20 16:07:33.498 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 16:07:33.581 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 2634.884ms +2024-08-20 16:49:09.376 +08:00 [INF] Application is shutting down... +2024-08-20 16:49:10.366 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 16:50:31.478 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 16:50:33.867 +08:00 [INF] Loaded ABP modules: +2024-08-20 16:50:33.868 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 16:50:33.868 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 16:50:33.868 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 16:50:34.133 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 16:50:34.700 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 16:50:34.799 +08:00 [INF] Initialized all ABP modules. +2024-08-20 16:50:34.902 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 16:50:34.914 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 16:50:34.915 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 16:50:34.915 +08:00 [INF] Hosting environment: Development +2024-08-20 16:50:34.915 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 16:54:18.197 +08:00 [INF] Application is shutting down... +2024-08-20 16:54:18.254 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:18:00.719 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 17:18:02.321 +08:00 [INF] Loaded ABP modules: +2024-08-20 17:18:02.322 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 17:18:02.322 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 17:18:02.322 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 17:18:02.505 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:18:02.923 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 17:18:03.106 +08:00 [INF] Initialized all ABP modules. +2024-08-20 17:18:03.492 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 17:18:03.521 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 17:18:03.522 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 17:18:03.522 +08:00 [INF] Hosting environment: Development +2024-08-20 17:18:03.522 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 17:19:34.056 +08:00 [INF] Application is shutting down... +2024-08-20 17:19:34.138 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:21:02.429 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 17:21:03.813 +08:00 [INF] Loaded ABP modules: +2024-08-20 17:21:03.813 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 17:21:03.813 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 17:21:03.813 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 17:21:03.813 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 17:21:03.813 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 17:21:03.814 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 17:21:03.814 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 17:21:03.975 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:21:04.331 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 17:21:04.413 +08:00 [INF] Initialized all ABP modules. +2024-08-20 17:21:04.472 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 17:21:04.481 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 17:21:04.481 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 17:21:04.481 +08:00 [INF] Hosting environment: Development +2024-08-20 17:21:04.481 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 17:28:54.359 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 17:28:54.826 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 17:28:54.830 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 17:28:54.830 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 17:28:54.833 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 17:28:54.852 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:54.858 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:54.859 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:54.871 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 17:28:54.872 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 17:28:54.878 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 17:28:54.878 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 17:28:54.879 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 17:28:54.881 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 17:28:54.885 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 17:28:54.885 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 17:28:54.886 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 17:28:54.886 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 17:28:54.886 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 17:28:55.716 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 17:28:55.721 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 17:28:55.727 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 17:28:55.733 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 17:28:55.734 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 17:28:55.737 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 17:28:55.855 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 17:28:55.862 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 17:28:55.864 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 17:28:55.865 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 17:28:55.866 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 17:28:55.869 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 17:28:55.870 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 17:28:55.872 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 17:28:55.872 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 17:28:55.873 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 17:28:55.873 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 17:28:55.873 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 17:28:55.873 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 17:28:55.874 +08:00 [INF] The token request was successfully validated. +2024-08-20 17:28:55.874 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 17:28:55.875 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 17:28:55.875 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:55.876 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:55.876 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 17:28:55.876 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 17:28:55.893 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 17:28:55.901 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 17:28:55.901 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 17:28:55.902 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 17:28:55.903 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 17:28:55.903 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 17:28:55.904 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 17:28:55.904 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 17:28:55.904 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 17:28:56.203 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 17:28:56.218 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 17:28:56.219 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 17:28:56.589 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 17:28:56.681 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 17:28:56.683 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 17:28:56.891 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 17:28:56.895 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 17:28:56.899 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 17:28:56.936 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 17:28:56.936 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 17:28:56.937 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 17:28:56.938 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 17:28:56.939 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 17:28:56.940 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 17:28:56.944 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 17:28:56.957 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 17:28:56.958 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 17:28:56.962 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 17:28:56.969 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 17:28:56.969 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 17:28:56.971 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 17:28:57.044 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 17:28:57.111 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 17:28:57.112 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 17:28:57.113 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 17:28:57.118 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 17:28:57.121 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 17:28:57.121 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:57.122 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:57.123 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:57.125 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3599 +}. +2024-08-20 17:28:57.132 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:57.132 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:57.132 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:57.132 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:28:57.144 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 919.6753ms +2024-08-20 17:28:57.145 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 17:28:57.275 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 2921.2716ms +2024-08-20 17:33:06.056 +08:00 [INF] Application is shutting down... +2024-08-20 17:33:06.134 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:36:55.095 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 17:36:56.283 +08:00 [INF] Loaded ABP modules: +2024-08-20 17:36:56.284 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 17:36:56.284 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 17:36:56.284 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 17:36:56.503 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:36:56.874 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 17:36:56.963 +08:00 [INF] Initialized all ABP modules. +2024-08-20 17:36:57.023 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 17:36:57.037 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 17:36:57.037 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 17:36:57.037 +08:00 [INF] Hosting environment: Development +2024-08-20 17:36:57.038 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 17:37:20.733 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 17:37:20.882 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 17:37:20.885 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 17:37:20.885 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 17:37:20.887 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 17:37:20.897 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:20.898 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:20.898 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:20.903 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 17:37:20.903 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 17:37:20.910 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 17:37:20.911 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 17:37:20.911 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 17:37:20.912 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 17:37:20.912 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 17:37:20.913 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 17:37:20.914 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 17:37:20.914 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 17:37:20.914 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 17:37:21.513 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 17:37:21.514 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 17:37:21.516 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 17:37:21.517 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 17:37:21.518 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 17:37:21.519 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 17:37:21.581 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 17:37:21.583 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 17:37:21.585 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 17:37:21.585 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 17:37:21.586 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 17:37:21.590 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 17:37:21.591 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 17:37:21.593 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 17:37:21.594 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 17:37:21.594 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 17:37:21.595 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 17:37:21.595 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 17:37:21.595 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 17:37:21.595 +08:00 [INF] The token request was successfully validated. +2024-08-20 17:37:21.595 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 17:37:21.596 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 17:37:21.597 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:21.597 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:21.597 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 17:37:21.597 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 17:37:21.614 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 17:37:21.620 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 17:37:21.620 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 17:37:21.621 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 17:37:21.621 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 17:37:21.621 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 17:37:21.622 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 17:37:21.622 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 17:37:21.622 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 17:37:21.857 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 17:37:21.867 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 17:37:21.868 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 17:37:22.236 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 17:37:22.337 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 17:37:22.339 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 17:37:22.544 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 17:37:22.549 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 17:37:22.553 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 17:37:22.590 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 17:37:22.591 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 17:37:22.592 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 17:37:22.593 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 17:37:22.594 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 17:37:22.595 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 17:37:22.598 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 17:37:22.615 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 17:37:22.616 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 17:37:22.622 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 17:37:22.630 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 17:37:22.631 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 17:37:22.635 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 17:37:22.720 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 17:37:22.788 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 17:37:22.789 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 17:37:22.790 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 17:37:22.792 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 17:37:22.793 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 17:37:22.794 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:22.794 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:22.795 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:22.795 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3599 +}. +2024-08-20 17:37:22.798 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:22.798 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:22.798 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:22.798 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 17:37:22.803 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 933.3686ms +2024-08-20 17:37:22.804 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 17:37:22.866 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 2133.7365ms +2024-08-20 17:44:31.885 +08:00 [INF] Application is shutting down... +2024-08-20 17:44:31.977 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:44:37.558 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 17:44:38.527 +08:00 [INF] Loaded ABP modules: +2024-08-20 17:44:38.528 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 17:44:38.528 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 17:44:38.528 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 17:44:38.678 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:44:39.068 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 17:44:39.168 +08:00 [INF] Initialized all ABP modules. +2024-08-20 17:44:39.210 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 17:44:39.216 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 17:44:39.216 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 17:44:39.216 +08:00 [INF] Hosting environment: Development +2024-08-20 17:44:39.216 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 17:51:37.953 +08:00 [INF] Application is shutting down... +2024-08-20 17:51:38.042 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:51:47.761 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 17:51:49.050 +08:00 [INF] Loaded ABP modules: +2024-08-20 17:51:49.050 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 17:51:49.051 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 17:51:49.051 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 17:51:49.268 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:51:49.759 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 17:51:49.860 +08:00 [INF] Initialized all ABP modules. +2024-08-20 17:51:49.945 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 17:51:49.951 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 17:51:49.951 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 17:51:49.951 +08:00 [INF] Hosting environment: Development +2024-08-20 17:51:49.951 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 17:56:49.978 +08:00 [INF] Application is shutting down... +2024-08-20 17:56:50.022 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:57:53.012 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 17:57:54.431 +08:00 [INF] Loaded ABP modules: +2024-08-20 17:57:54.432 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 17:57:54.432 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 17:57:54.432 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 17:57:54.432 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 17:57:54.433 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 17:57:54.433 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 17:57:54.433 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 17:57:54.433 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 17:57:54.650 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 17:57:55.093 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 17:57:55.150 +08:00 [INF] Initialized all ABP modules. +2024-08-20 17:57:55.230 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 17:57:55.236 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 17:57:55.236 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 17:57:55.236 +08:00 [INF] Hosting environment: Development +2024-08-20 17:57:55.236 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 18:01:30.579 +08:00 [INF] Application is shutting down... +2024-08-20 18:01:30.623 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 18:06:07.549 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 18:06:08.942 +08:00 [INF] Loaded ABP modules: +2024-08-20 18:06:08.943 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 18:06:08.943 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 18:06:08.943 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 18:06:08.943 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 18:06:08.944 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 18:06:09.330 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 18:06:10.650 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 18:06:10.857 +08:00 [INF] Initialized all ABP modules. +2024-08-20 18:06:10.935 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 18:06:10.944 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 18:06:10.944 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 18:06:10.944 +08:00 [INF] Hosting environment: Development +2024-08-20 18:06:10.944 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 18:32:08.781 +08:00 [INF] Application is shutting down... +2024-08-20 18:32:08.937 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 20:25:59.891 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 20:26:03.310 +08:00 [INF] Loaded ABP modules: +2024-08-20 20:26:03.313 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 20:26:03.313 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 20:26:03.314 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 20:26:03.315 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 20:26:03.315 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 20:26:03.315 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 20:26:03.964 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 20:26:05.324 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 20:26:06.012 +08:00 [INF] Initialized all ABP modules. +2024-08-20 20:26:06.214 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 20:26:06.220 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 20:26:06.220 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 20:26:06.220 +08:00 [INF] Hosting environment: Development +2024-08-20 20:26:06.220 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 20:27:20.424 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 20:27:20.955 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 20:27:20.958 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 20:27:20.958 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 20:27:20.959 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 20:27:20.969 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:20.971 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:20.972 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:20.975 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 20:27:20.975 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 20:27:20.977 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 20:27:20.978 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 20:27:20.978 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 20:27:20.979 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 20:27:20.979 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 20:27:20.980 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 20:27:20.980 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 20:27:20.980 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 20:27:20.980 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 20:27:21.097 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 20:27:21.098 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 20:27:21.100 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 20:27:21.101 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 20:27:21.101 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 20:27:21.102 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 20:27:21.192 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 20:27:21.200 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 20:27:21.204 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 20:27:21.205 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 20:27:21.206 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 20:27:21.209 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 20:27:21.212 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 20:27:21.214 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 20:27:21.215 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 20:27:21.215 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 20:27:21.216 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 20:27:21.217 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 20:27:21.217 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 20:27:21.218 +08:00 [INF] The token request was successfully validated. +2024-08-20 20:27:21.218 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 20:27:21.219 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 20:27:21.220 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:21.220 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:21.220 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 20:27:21.220 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 20:27:21.240 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 20:27:21.265 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 20:27:21.265 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 20:27:21.266 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 20:27:21.266 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 20:27:21.267 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 20:27:21.268 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 20:27:21.268 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 20:27:21.268 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 20:27:21.504 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 20:27:21.516 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 20:27:21.517 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 20:27:21.915 +08:00 [DBG] Remove dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 20:27:22.008 +08:00 [DBG] Get dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 20:27:22.010 +08:00 [DBG] Filling dynamic claims cache for user: 66039ab9-04e6-8fba-e5ca-3a146290a0c6 +2024-08-20 20:27:22.202 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 20:27:22.207 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 20:27:22.212 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 20:27:22.247 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 20:27:22.247 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 20:27:22.248 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 20:27:22.249 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 20:27:22.250 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 20:27:22.250 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 20:27:22.254 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 20:27:22.264 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 20:27:22.265 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 20:27:22.269 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 20:27:22.274 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 20:27:22.274 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 20:27:22.275 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 20:27:22.358 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 20:27:22.421 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 20:27:22.422 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 20:27:22.423 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 20:27:22.426 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 20:27:22.428 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 20:27:22.428 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:22.429 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:22.429 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:22.431 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3600 +}. +2024-08-20 20:27:22.434 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:22.434 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:22.434 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:22.434 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 20:27:22.442 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 921.8747ms +2024-08-20 20:27:22.444 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 20:27:22.544 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=admin&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 2122.108ms +2024-08-20 20:57:32.002 +08:00 [INF] Application is shutting down... +2024-08-20 20:57:32.131 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 21:38:46.868 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 21:38:48.016 +08:00 [INF] Loaded ABP modules: +2024-08-20 21:38:48.016 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 21:38:48.016 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 21:38:48.017 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 21:38:48.017 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 21:38:48.176 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 21:38:48.569 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 21:38:48.634 +08:00 [INF] Initialized all ABP modules. +2024-08-20 21:38:48.675 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 21:38:48.680 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 21:38:48.681 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 21:38:48.681 +08:00 [INF] Hosting environment: Development +2024-08-20 21:38:48.681 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 21:40:01.642 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8099/.well-known/openid-configuration - null null +2024-08-20 21:40:01.794 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 21:40:01.797 +08:00 [INF] The request URI matched a server endpoint: "Configuration". +2024-08-20 21:40:01.797 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 21:40:01.799 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 21:40:01.803 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractConfigurationRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractGetRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractConfigurationRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:01.806 +08:00 [INF] The configuration request was successfully extracted: {}. +2024-08-20 21:40:01.806 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ExtractConfigurationRequest. +2024-08-20 21:40:01.807 +08:00 [INF] The configuration request was successfully validated. +2024-08-20 21:40:01.807 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ValidateConfigurationRequest. +2024-08-20 21:40:01.809 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachIssuer. +2024-08-20 21:40:01.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachEndpoints. +2024-08-20 21:40:01.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachGrantTypes. +2024-08-20 21:40:01.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachResponseModes. +2024-08-20 21:40:01.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachResponseTypes. +2024-08-20 21:40:01.812 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachClientAuthenticationMethods. +2024-08-20 21:40:01.812 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachCodeChallengeMethods. +2024-08-20 21:40:01.813 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachScopes. +2024-08-20 21:40:02.280 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by Volo.Abp.OpenIddict.Scopes.AttachScopes. +2024-08-20 21:40:02.281 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachClaims. +2024-08-20 21:40:02.281 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSubjectTypes. +2024-08-20 21:40:02.282 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSigningAlgorithms. +2024-08-20 21:40:02.283 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachAdditionalMetadata. +2024-08-20 21:40:02.285 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+HandleConfigurationRequest. +2024-08-20 21:40:02.287 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.288 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.289 +08:00 [INF] The response was successfully returned as a JSON document: { + "issuer": "http://localhost:8099/", + "authorization_endpoint": "http://localhost:8099/connect/authorize", + "token_endpoint": "http://localhost:8099/connect/token", + "introspection_endpoint": "http://localhost:8099/connect/introspect", + "end_session_endpoint": "http://localhost:8099/connect/logout", + "revocation_endpoint": "http://localhost:8099/connect/revocat", + "userinfo_endpoint": "http://localhost:8099/connect/userinfo", + "device_authorization_endpoint": "http://localhost:8099/device", + "jwks_uri": "http://localhost:8099/.well-known/jwks", + "grant_types_supported": [ + "client_credentials", + "authorization_code", + "implicit", + "password", + "refresh_token", + "urn:ietf:params:oauth:grant-type:device_code", + "login_credentials" + ], + "response_types_supported": [ + "code", + "code id_token", + "code id_token token", + "code token", + "id_token", + "id_token token", + "token", + "none" + ], + "response_modes_supported": [ + "form_post", + "fragment", + "query" + ], + "scopes_supported": [ + "openid", + "offline_access", + "email", + "profile", + "phone", + "roles", + "address", + "AElfScanServer" + ], + "claims_supported": [ + "aud", + "exp", + "iat", + "iss", + "sub" + ], + "id_token_signing_alg_values_supported": [ + "RS256" + ], + "code_challenge_methods_supported": [ + "plain", + "S256" + ], + "subject_types_supported": [ + "public" + ], + "token_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "introspection_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "revocation_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "device_authorization_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "claims_parameter_supported": false, + "request_parameter_supported": false, + "request_uri_parameter_supported": false, + "authorization_response_iss_parameter_supported": true +}. +2024-08-20 21:40:02.293 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.293 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.294 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyConfigurationResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.294 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyConfigurationResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.298 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8099/.well-known/openid-configuration - 200 2163 application/json;charset=UTF-8 657.0458ms +2024-08-20 21:40:02.311 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8099/.well-known/jwks - null null +2024-08-20 21:40:02.312 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 21:40:02.312 +08:00 [INF] The request URI matched a server endpoint: "Cryptography". +2024-08-20 21:40:02.312 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 21:40:02.312 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 21:40:02.313 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractCryptographyRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractGetRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractCryptographyRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.313 +08:00 [INF] The cryptography request was successfully extracted: {}. +2024-08-20 21:40:02.313 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ExtractCryptographyRequest. +2024-08-20 21:40:02.314 +08:00 [INF] The cryptography request was successfully validated. +2024-08-20 21:40:02.314 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ValidateCryptographyRequest. +2024-08-20 21:40:02.320 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleCryptographyRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSigningKeys. +2024-08-20 21:40:02.321 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+HandleCryptographyRequest. +2024-08-20 21:40:02.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.322 +08:00 [INF] The response was successfully returned as a JSON document: { + "keys": [ + { + "kid": "C81BF52089DF1C3C6E021A959CE81D30E68FE759", + "use": "sig", + "kty": "RSA", + "alg": "RS256", + "e": "AQAB", + "n": "qfePedhEYUUF1J32RfcJVgVXb-g2uaaC-XDEoimf-2IHMtMNOUZw23XZU3pN9QJ2YuZPjGLFPms0I2G5Sp3P-jyckTQpxLdPAurqvzdZIZR33JUfZ44pO7zBupiQa4dvusFDMjqTx0YuW3KKHEFQCVllQseQV2Uy-U4clHu9b_VAiiMl4_n5WvxWqgKXCksPREoJLoDYyAR3Yk4nx9F6O944RLlp1172EuVvSKURTtdejms3F6N3-eAHdLlqv5otaPFFZ8_Ac0mlmG2mHywTeNjs4oM3kHxkwkmZs9_LxIxNDfxk39VBT6BIDv-6OCGFkwmVdfJvyCEqG2WS0XzRrw", + "x5t": "yBv1IInfHDxuAhqVnOgdMOaP51k", + "x5c": [ + "MIIC9DCCAdygAwIBAgIIQDFO8N5AZHMwDQYJKoZIhvcNAQELBQAwMDEuMCwGA1UEAxMlT3BlbklkZGljdCBTZXJ2ZXIgU2lnbmluZyBDZXJ0aWZpY2F0ZTAeFw0yMzA5MDgwMjQ1MDZaFw0yNTA5MDgwMjQ1MDZaMDAxLjAsBgNVBAMTJU9wZW5JZGRpY3QgU2VydmVyIFNpZ25pbmcgQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp94952ERhRQXUnfZF9wlWBVdv6Da5poL5cMSiKZ/7Ygcy0w05RnDbddlTek31AnZi5k+MYsU+azQjYblKnc/6PJyRNCnEt08C6uq/N1khlHfclR9njik7vMG6mJBrh2+6wUMyOpPHRi5bcoocQVAJWWVCx5BXZTL5ThyUe71v9UCKIyXj+fla/FaqApcKSw9ESgkugNjIBHdiTifH0Xo73jhEuWnXXvYS5W9IpRFO116OazcXo3f54Ad0uWq/mi1o8UVnz8BzSaWYbaYfLBN42OzigzeQfGTCSZmz38vEjE0N/GTf1UFPoEgO/7o4IYWTCZV18m/IISobZZLRfNGvAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAV76exWrOFsACD/cOd7j7ANVD13RPLAJ6RhCp5w7ADHGf/BRpmUb9GrKVK/8aQtXLVKpgRqiFEZRsOHyoPUszowK1A5GMkNZEDdp1yzGlVchQXJOShz2KmuZJOCoJK7+WzVz4Jivnie74PMdrUrk5POb7Mh/XaQXyTZrV78iNA2ab+we90xFHCcvwXaF0sxYTjJRQCn16c76EgllKrB9eEfo54ExEosboiCI9DaxMHymD67RiWeZxj3iJYlc1X8JJeWCrn+D3xDEEx6aHuJ3wI0eWua8utsqluug43m2EsPhHhSBZxumgoEHdQYYUlvlcZebVrV1eNGowm5E+Sw/dGQ==" + ] + } + ] +}. +2024-08-20 21:40:02.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyCryptographyResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.322 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyCryptographyResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:40:02.323 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8099/.well-known/jwks - 200 1620 application/json;charset=UTF-8 11.7838ms +2024-08-20 21:42:28.614 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8099/.well-known/openid-configuration - null null +2024-08-20 21:42:28.621 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 21:42:28.622 +08:00 [INF] The request URI matched a server endpoint: "Configuration". +2024-08-20 21:42:28.622 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 21:42:28.622 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 21:42:28.623 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractConfigurationRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractGetRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractConfigurationRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.623 +08:00 [INF] The configuration request was successfully extracted: {}. +2024-08-20 21:42:28.624 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ExtractConfigurationRequest. +2024-08-20 21:42:28.624 +08:00 [INF] The configuration request was successfully validated. +2024-08-20 21:42:28.624 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ValidateConfigurationRequest. +2024-08-20 21:42:28.625 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachIssuer. +2024-08-20 21:42:28.625 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachEndpoints. +2024-08-20 21:42:28.625 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachGrantTypes. +2024-08-20 21:42:28.625 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachResponseModes. +2024-08-20 21:42:28.625 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachResponseTypes. +2024-08-20 21:42:28.626 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachClientAuthenticationMethods. +2024-08-20 21:42:28.626 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachCodeChallengeMethods. +2024-08-20 21:42:28.626 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachScopes. +2024-08-20 21:42:28.661 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by Volo.Abp.OpenIddict.Scopes.AttachScopes. +2024-08-20 21:42:28.662 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachClaims. +2024-08-20 21:42:28.662 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSubjectTypes. +2024-08-20 21:42:28.662 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSigningAlgorithms. +2024-08-20 21:42:28.662 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachAdditionalMetadata. +2024-08-20 21:42:28.662 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+HandleConfigurationRequest. +2024-08-20 21:42:28.663 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.663 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.663 +08:00 [INF] The response was successfully returned as a JSON document: { + "issuer": "http://localhost:8099/", + "authorization_endpoint": "http://localhost:8099/connect/authorize", + "token_endpoint": "http://localhost:8099/connect/token", + "introspection_endpoint": "http://localhost:8099/connect/introspect", + "end_session_endpoint": "http://localhost:8099/connect/logout", + "revocation_endpoint": "http://localhost:8099/connect/revocat", + "userinfo_endpoint": "http://localhost:8099/connect/userinfo", + "device_authorization_endpoint": "http://localhost:8099/device", + "jwks_uri": "http://localhost:8099/.well-known/jwks", + "grant_types_supported": [ + "client_credentials", + "authorization_code", + "implicit", + "password", + "refresh_token", + "urn:ietf:params:oauth:grant-type:device_code", + "login_credentials" + ], + "response_types_supported": [ + "code", + "code id_token", + "code id_token token", + "code token", + "id_token", + "id_token token", + "token", + "none" + ], + "response_modes_supported": [ + "form_post", + "fragment", + "query" + ], + "scopes_supported": [ + "openid", + "offline_access", + "email", + "profile", + "phone", + "roles", + "address", + "AElfScanServer" + ], + "claims_supported": [ + "aud", + "exp", + "iat", + "iss", + "sub" + ], + "id_token_signing_alg_values_supported": [ + "RS256" + ], + "code_challenge_methods_supported": [ + "plain", + "S256" + ], + "subject_types_supported": [ + "public" + ], + "token_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "introspection_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "revocation_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "device_authorization_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "claims_parameter_supported": false, + "request_parameter_supported": false, + "request_uri_parameter_supported": false, + "authorization_response_iss_parameter_supported": true +}. +2024-08-20 21:42:28.664 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.664 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.664 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyConfigurationResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.664 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyConfigurationResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.666 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8099/.well-known/openid-configuration - 200 2163 application/json;charset=UTF-8 52.7214ms +2024-08-20 21:42:28.679 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8099/.well-known/jwks - null null +2024-08-20 21:42:28.679 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 21:42:28.679 +08:00 [INF] The request URI matched a server endpoint: "Cryptography". +2024-08-20 21:42:28.679 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 21:42:28.679 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 21:42:28.680 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractCryptographyRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractGetRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractCryptographyRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.680 +08:00 [INF] The cryptography request was successfully extracted: {}. +2024-08-20 21:42:28.680 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ExtractCryptographyRequest. +2024-08-20 21:42:28.680 +08:00 [INF] The cryptography request was successfully validated. +2024-08-20 21:42:28.680 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ValidateCryptographyRequest. +2024-08-20 21:42:28.681 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleCryptographyRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSigningKeys. +2024-08-20 21:42:28.681 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+HandleCryptographyRequest. +2024-08-20 21:42:28.681 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.681 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.682 +08:00 [INF] The response was successfully returned as a JSON document: { + "keys": [ + { + "kid": "C81BF52089DF1C3C6E021A959CE81D30E68FE759", + "use": "sig", + "kty": "RSA", + "alg": "RS256", + "e": "AQAB", + "n": "qfePedhEYUUF1J32RfcJVgVXb-g2uaaC-XDEoimf-2IHMtMNOUZw23XZU3pN9QJ2YuZPjGLFPms0I2G5Sp3P-jyckTQpxLdPAurqvzdZIZR33JUfZ44pO7zBupiQa4dvusFDMjqTx0YuW3KKHEFQCVllQseQV2Uy-U4clHu9b_VAiiMl4_n5WvxWqgKXCksPREoJLoDYyAR3Yk4nx9F6O944RLlp1172EuVvSKURTtdejms3F6N3-eAHdLlqv5otaPFFZ8_Ac0mlmG2mHywTeNjs4oM3kHxkwkmZs9_LxIxNDfxk39VBT6BIDv-6OCGFkwmVdfJvyCEqG2WS0XzRrw", + "x5t": "yBv1IInfHDxuAhqVnOgdMOaP51k", + "x5c": [ + "MIIC9DCCAdygAwIBAgIIQDFO8N5AZHMwDQYJKoZIhvcNAQELBQAwMDEuMCwGA1UEAxMlT3BlbklkZGljdCBTZXJ2ZXIgU2lnbmluZyBDZXJ0aWZpY2F0ZTAeFw0yMzA5MDgwMjQ1MDZaFw0yNTA5MDgwMjQ1MDZaMDAxLjAsBgNVBAMTJU9wZW5JZGRpY3QgU2VydmVyIFNpZ25pbmcgQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp94952ERhRQXUnfZF9wlWBVdv6Da5poL5cMSiKZ/7Ygcy0w05RnDbddlTek31AnZi5k+MYsU+azQjYblKnc/6PJyRNCnEt08C6uq/N1khlHfclR9njik7vMG6mJBrh2+6wUMyOpPHRi5bcoocQVAJWWVCx5BXZTL5ThyUe71v9UCKIyXj+fla/FaqApcKSw9ESgkugNjIBHdiTifH0Xo73jhEuWnXXvYS5W9IpRFO116OazcXo3f54Ad0uWq/mi1o8UVnz8BzSaWYbaYfLBN42OzigzeQfGTCSZmz38vEjE0N/GTf1UFPoEgO/7o4IYWTCZV18m/IISobZZLRfNGvAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAV76exWrOFsACD/cOd7j7ANVD13RPLAJ6RhCp5w7ADHGf/BRpmUb9GrKVK/8aQtXLVKpgRqiFEZRsOHyoPUszowK1A5GMkNZEDdp1yzGlVchQXJOShz2KmuZJOCoJK7+WzVz4Jivnie74PMdrUrk5POb7Mh/XaQXyTZrV78iNA2ab+we90xFHCcvwXaF0sxYTjJRQCn16c76EgllKrB9eEfo54ExEosboiCI9DaxMHymD67RiWeZxj3iJYlc1X8JJeWCrn+D3xDEEx6aHuJ3wI0eWua8utsqluug43m2EsPhHhSBZxumgoEHdQYYUlvlcZebVrV1eNGowm5E+Sw/dGQ==" + ] + } + ] +}. +2024-08-20 21:42:28.682 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.682 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.682 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyCryptographyResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.682 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyCryptographyResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:28.682 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8099/.well-known/jwks - 200 1620 application/json;charset=UTF-8 2.8072ms +2024-08-20 21:42:37.539 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-20 21:42:37.563 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 21:42:37.564 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-20 21:42:37.564 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-20 21:42:37.564 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 21:42:37.577 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:37.578 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:37.579 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:37.580 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-20 21:42:37.580 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-20 21:42:37.582 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-20 21:42:37.583 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-20 21:42:37.583 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-20 21:42:37.590 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-20 21:42:37.591 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-20 21:42:37.591 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-20 21:42:37.591 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-20 21:42:37.592 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-20 21:42:37.592 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-20 21:42:37.687 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-20 21:42:37.688 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-20 21:42:37.690 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-20 21:42:37.691 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-20 21:42:37.691 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-20 21:42:37.692 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-20 21:42:37.803 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-20 21:42:37.809 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-20 21:42:37.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-20 21:42:37.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-20 21:42:37.811 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-20 21:42:37.814 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-20 21:42:37.816 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-20 21:42:37.818 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-20 21:42:37.818 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-20 21:42:37.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-20 21:42:37.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-20 21:42:37.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-20 21:42:37.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-20 21:42:37.819 +08:00 [INF] The token request was successfully validated. +2024-08-20 21:42:37.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-20 21:42:37.820 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-20 21:42:37.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:37.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:37.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 21:42:37.821 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-20 21:42:37.839 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-20 21:42:37.846 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-20 21:42:37.846 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-20 21:42:37.847 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-20 21:42:37.847 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-20 21:42:37.848 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-20 21:42:37.848 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 21:42:37.848 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-20 21:42:37.848 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-20 21:42:38.054 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 21:42:38.079 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-20 21:42:38.080 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-20 21:42:38.421 +08:00 [DBG] Remove dynamic claims cache for user: 23b71aef-aa0f-f452-c445-3a14820a22f5 +2024-08-20 21:42:38.504 +08:00 [DBG] Get dynamic claims cache for user: 23b71aef-aa0f-f452-c445-3a14820a22f5 +2024-08-20 21:42:38.506 +08:00 [DBG] Filling dynamic claims cache for user: 23b71aef-aa0f-f452-c445-3a14820a22f5 +2024-08-20 21:42:38.692 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-20 21:42:38.695 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-20 21:42:38.698 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-20 21:42:38.733 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-20 21:42:38.734 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-20 21:42:38.735 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-20 21:42:38.735 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-20 21:42:38.736 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-20 21:42:38.737 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-20 21:42:38.739 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-20 21:42:38.749 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-20 21:42:38.750 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-20 21:42:38.753 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-20 21:42:38.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-20 21:42:38.757 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-20 21:42:38.759 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-20 21:42:38.819 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-20 21:42:38.879 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-20 21:42:38.880 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-20 21:42:38.881 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-20 21:42:38.882 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-20 21:42:38.884 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-20 21:42:38.884 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:38.884 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:38.884 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:38.884 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3599 +}. +2024-08-20 21:42:38.885 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:38.885 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:38.885 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:38.885 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-20 21:42:38.889 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 807.9528ms +2024-08-20 21:42:38.890 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-20 21:42:38.934 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 1395.0757ms +2024-08-20 21:46:17.204 +08:00 [INF] Application is shutting down... +2024-08-20 21:46:17.245 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 21:47:55.996 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-20 21:47:57.091 +08:00 [INF] Loaded ABP modules: +2024-08-20 21:47:57.091 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-20 21:47:57.091 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-20 21:47:57.092 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-20 21:47:57.092 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-20 21:47:57.248 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-20 21:47:57.578 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-20 21:47:57.637 +08:00 [INF] Initialized all ABP modules. +2024-08-20 21:47:57.674 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-20 21:47:57.679 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-20 21:47:57.679 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-20 21:47:57.679 +08:00 [INF] Hosting environment: Development +2024-08-20 21:47:57.679 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-20 22:47:57.232 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 22:47:57.383 +08:00 [INF] Start cleanup. +2024-08-20 22:47:57.383 +08:00 [INF] Start cleanup tokens. +2024-08-20 22:47:57.775 +08:00 [ERR] This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. +MongoDB.Driver.MongoCommandException: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. + ---> MongoDB.Driver.MongoCommandException: Command aggregate failed: Transaction numbers are only allowed on a replica set member or mongos. + --- End of inner exception stack trace --- + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ProcessResponse(ConnectionId connectionId, CommandMessage responseMessage) + at MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol`1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Servers.Server.ServerChannel.ExecuteProtocolAsync[TResult](IWireProtocol`1 protocol, ICoreSession session, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.RetryableReadOperationExecutor.ExecuteAsync[TResult](IRetryableReadOperation`1 operation, RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.ReadCommandOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken) + at MongoDB.Driver.Core.Operations.AggregateOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken) + at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken) + at MongoDB.Driver.MongoCollectionImpl`1.AggregateAsync[TResult](IClientSessionHandle session, PipelineDefinition`2 pipeline, AggregateOptions options, CancellationToken cancellationToken) + at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExecutableQuery`3.ExecuteAsync(IClientSessionHandle session, CancellationToken cancellationToken) + at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken) + at Volo.Abp.OpenIddict.Tokens.MongoOpenIddictTokenRepository.PruneAsync(DateTime date, CancellationToken cancellationToken) + at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) + at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync() + at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) + at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) + at Volo.Abp.OpenIddict.Tokens.AbpOpenIddictTokenStore.PruneAsync(DateTimeOffset threshold, CancellationToken cancellationToken) + at Volo.Abp.OpenIddict.Tokens.TokenCleanupService.CleanAsync() +2024-08-20 22:47:57.776 +08:00 [INF] Start cleanup authorizations. +2024-08-20 22:47:57.783 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 22:47:57.852 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-20 23:47:57.806 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-20 23:47:57.847 +08:00 [INF] Start cleanup. +2024-08-20 23:47:57.847 +08:00 [INF] Start cleanup tokens. +2024-08-20 23:47:57.871 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 23:47:57.970 +08:00 [INF] Start cleanup authorizations. +2024-08-20 23:47:57.971 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-20 23:47:57.976 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 00:47:58.191 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 00:47:58.230 +08:00 [INF] Start cleanup. +2024-08-21 00:47:58.230 +08:00 [INF] Start cleanup tokens. +2024-08-21 00:47:58.251 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 00:47:58.300 +08:00 [INF] Start cleanup authorizations. +2024-08-21 00:47:58.301 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 00:47:58.306 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 01:47:58.468 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 01:47:58.517 +08:00 [INF] Start cleanup. +2024-08-21 01:47:58.517 +08:00 [INF] Start cleanup tokens. +2024-08-21 01:47:58.541 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 01:47:58.588 +08:00 [INF] Start cleanup authorizations. +2024-08-21 01:47:58.590 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 01:47:58.597 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 02:47:58.710 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 02:47:58.754 +08:00 [INF] Start cleanup. +2024-08-21 02:47:58.754 +08:00 [INF] Start cleanup tokens. +2024-08-21 02:47:58.773 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 02:47:58.828 +08:00 [INF] Start cleanup authorizations. +2024-08-21 02:47:58.829 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 02:47:58.839 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 03:47:58.828 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 03:47:58.863 +08:00 [INF] Start cleanup. +2024-08-21 03:47:58.863 +08:00 [INF] Start cleanup tokens. +2024-08-21 03:47:58.900 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 03:47:58.960 +08:00 [INF] Start cleanup authorizations. +2024-08-21 03:47:58.962 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 03:47:58.969 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 04:47:58.970 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 04:47:58.999 +08:00 [INF] Start cleanup. +2024-08-21 04:47:58.999 +08:00 [INF] Start cleanup tokens. +2024-08-21 04:47:59.019 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 04:47:59.137 +08:00 [INF] Start cleanup authorizations. +2024-08-21 04:47:59.137 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 04:47:59.144 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 05:47:59.158 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 05:47:59.177 +08:00 [INF] Start cleanup. +2024-08-21 05:47:59.177 +08:00 [INF] Start cleanup tokens. +2024-08-21 05:47:59.198 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 05:47:59.265 +08:00 [INF] Start cleanup authorizations. +2024-08-21 05:47:59.266 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 05:47:59.286 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 06:47:59.289 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 06:47:59.311 +08:00 [INF] Start cleanup. +2024-08-21 06:47:59.311 +08:00 [INF] Start cleanup tokens. +2024-08-21 06:47:59.327 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 06:47:59.449 +08:00 [INF] Start cleanup authorizations. +2024-08-21 06:47:59.451 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 06:47:59.467 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 07:47:59.491 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 07:47:59.512 +08:00 [INF] Start cleanup. +2024-08-21 07:47:59.512 +08:00 [INF] Start cleanup tokens. +2024-08-21 07:47:59.529 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 07:47:59.664 +08:00 [INF] Start cleanup authorizations. +2024-08-21 07:47:59.665 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 07:47:59.671 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 08:47:59.752 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 08:47:59.777 +08:00 [INF] Start cleanup. +2024-08-21 08:47:59.777 +08:00 [INF] Start cleanup tokens. +2024-08-21 08:47:59.789 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 08:47:59.916 +08:00 [INF] Start cleanup authorizations. +2024-08-21 08:47:59.916 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 08:47:59.933 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 09:48:00.007 +08:00 [INF] Lock is acquired for TokenCleanupBackgroundWorker +2024-08-21 09:48:00.070 +08:00 [INF] Start cleanup. +2024-08-21 09:48:00.070 +08:00 [INF] Start cleanup tokens. +2024-08-21 09:48:00.093 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 09:48:00.175 +08:00 [INF] Start cleanup authorizations. +2024-08-21 09:48:00.177 +08:00 [WRN] Current database does not support transactions. Your database may remain in an inconsistent state in an error case. +2024-08-21 09:48:00.185 +08:00 [INF] Lock is released for TokenCleanupBackgroundWorker +2024-08-21 10:27:58.514 +08:00 [INF] Application is shutting down... +2024-08-21 10:27:58.652 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-21 10:40:56.630 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-21 10:40:57.797 +08:00 [INF] Loaded ABP modules: +2024-08-21 10:40:57.798 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-21 10:40:57.798 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-21 10:40:57.799 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-21 10:40:57.799 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-21 10:40:57.799 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-21 10:40:57.802 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-21 10:40:58.015 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-21 10:40:58.427 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-21 10:40:58.520 +08:00 [INF] Initialized all ABP modules. +2024-08-21 10:40:58.564 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-21 10:40:58.573 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-21 10:40:58.574 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-21 10:40:58.574 +08:00 [INF] Hosting environment: Development +2024-08-21 10:40:58.574 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-21 10:41:46.787 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - application/x-www-form-urlencoded 105 +2024-08-21 10:41:46.940 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-21 10:41:46.943 +08:00 [INF] The request URI matched a server endpoint: "Token". +2024-08-21 10:41:46.943 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-21 10:41:46.945 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-21 10:41:46.955 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractPostRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:46.956 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateClientAuthenticationMethod`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:46.957 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:46.960 +08:00 [INF] The token request was successfully extracted: { + "grant_type": "password", + "scope": "AElfScanServer", + "client_id": "AElfScanServer_App", + "username": "admin", + "password": "[redacted]" +}. +2024-08-21 10:41:46.960 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest. +2024-08-21 10:41:46.963 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantType. +2024-08-21 10:41:46.963 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientIdParameter. +2024-08-21 10:41:46.963 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthorizationCodeParameter. +2024-08-21 10:41:46.964 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateClientCredentialsParameters. +2024-08-21 10:41:46.964 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateDeviceCodeParameter. +2024-08-21 10:41:46.964 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRefreshTokenParameter. +2024-08-21 10:41:46.965 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateResourceOwnerCredentialsParameters. +2024-08-21 10:41:46.965 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeParameters. +2024-08-21 10:41:46.965 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopeParameter. +2024-08-21 10:41:47.507 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopes. +2024-08-21 10:41:47.508 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateAuthenticationDemand. +2024-08-21 10:41:47.511 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateValidatedTokens. +2024-08-21 10:41:47.511 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveValidatedTokens. +2024-08-21 10:41:47.512 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateRequiredTokens. +2024-08-21 10:41:47.513 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientAssertion. +2024-08-21 10:41:47.615 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientId. +2024-08-21 10:41:47.622 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateClientType. +2024-08-21 10:41:47.624 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ResolveHostAuthenticationProperties. +2024-08-21 10:41:47.624 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ReformatValidatedTokens. +2024-08-21 10:41:47.625 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateAuthentication. +2024-08-21 10:41:47.628 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateEndpointPermissions. +2024-08-21 10:41:47.629 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantTypePermissions. +2024-08-21 10:41:47.631 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateScopePermissions. +2024-08-21 10:41:47.632 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateProofKeyForCodeExchangeRequirement. +2024-08-21 10:41:47.632 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidatePresenters. +2024-08-21 10:41:47.633 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateRedirectUri. +2024-08-21 10:41:47.633 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateCodeVerifier. +2024-08-21 10:41:47.633 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ValidateTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateGrantedScopes. +2024-08-21 10:41:47.634 +08:00 [INF] The token request was successfully validated. +2024-08-21 10:41:47.634 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ValidateTokenRequest. +2024-08-21 10:41:47.635 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+AttachPrincipal. +2024-08-21 10:41:47.639 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:47.639 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext was marked as skipped by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+EnablePassthroughMode`2[[OpenIddict.Server.OpenIddictServerEvents+HandleTokenRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f],[OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlerFilters+RequireTokenEndpointPassthroughEnabled, OpenIddict.Server.AspNetCore, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:47.639 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-21 10:41:47.639 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as skipped by OpenIddict.Server.OpenIddictServerHandlers+Exchange+HandleTokenRequest. +2024-08-21 10:41:47.660 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. +2024-08-21 10:41:47.667 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. +2024-08-21 10:41:47.667 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens. +2024-08-21 10:41:47.668 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. +2024-08-21 10:41:47.669 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. +2024-08-21 10:41:47.669 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. +2024-08-21 10:41:47.670 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-21 10:41:47.670 +08:00 [DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. +2024-08-21 10:41:47.670 +08:00 [DBG] AuthenticationScheme: OpenIddict.Validation.AspNetCore was not authenticated. +2024-08-21 10:41:47.909 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-21 10:41:47.921 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore). +2024-08-21 10:41:47.922 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy +2024-08-21 10:41:48.237 +08:00 [DBG] Remove dynamic claims cache for user: 23b71aef-aa0f-f452-c445-3a14820a22f5 +2024-08-21 10:41:48.333 +08:00 [DBG] Get dynamic claims cache for user: 23b71aef-aa0f-f452-c445-3a14820a22f5 +2024-08-21 10:41:48.335 +08:00 [DBG] Filling dynamic claims cache for user: 23b71aef-aa0f-f452-c445-3a14820a22f5 +2024-08-21 10:41:48.551 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. +2024-08-21 10:41:48.555 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveHostSignInProperties. +2024-08-21 10:41:48.560 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+ValidateSignInDemand. +2024-08-21 10:41:48.600 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RedeemTokenEntry. +2024-08-21 10:41:48.601 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+RestoreInternalClaims. +2024-08-21 10:41:48.602 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachHostProperties. +2024-08-21 10:41:48.602 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultScopes. +2024-08-21 10:41:48.603 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachDefaultPresenters. +2024-08-21 10:41:48.604 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferResources. +2024-08-21 10:41:48.608 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+EvaluateGeneratedTokens. +2024-08-21 10:41:48.621 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachAuthorization. +2024-08-21 10:41:48.623 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by Volo.Abp.OpenIddict.RemoveClaimsFromClientCredentialsGrantType. +2024-08-21 10:41:48.627 +08:00 [DBG] 'AspNet.Identity.SecurityStamp' was excluded from the access token claims. +2024-08-21 10:41:48.632 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+PrepareAccessTokenPrincipal. +2024-08-21 10:41:48.633 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachCustomSignInParameters. +2024-08-21 10:41:48.634 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+AttachSecurityCredentials. +2024-08-21 10:41:48.718 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+CreateTokenEntry. +2024-08-21 10:41:48.769 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+GenerateTokenContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Protection+GenerateIdentityModelToken. +2024-08-21 10:41:48.769 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+GenerateAccessToken. +2024-08-21 10:41:48.770 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+BeautifyGeneratedTokens. +2024-08-21 10:41:48.772 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+AttachSignInParameters. +2024-08-21 10:41:48.774 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+NormalizeErrorResponse. +2024-08-21 10:41:48.774 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:48.774 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachCacheControlHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:48.775 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:48.776 +08:00 [INF] The response was successfully returned as a JSON document: { + "access_token": "[redacted]", + "token_type": "Bearer", + "expires_in": 3599 +}. +2024-08-21 10:41:48.778 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:48.778 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyTokenResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:48.778 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:48.778 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ApplyTokenResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessSignInContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:41:48.784 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 860.2705ms +2024-08-21 10:41:48.784 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' +2024-08-21 10:41:48.843 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8099/connect/token?grant_type=password&scope=AElfScanServer&client_id=AElfScanServer_App&username=whx&password=Xuan123,. - 200 1218 application/json;charset=UTF-8 2057.2297ms +2024-08-21 10:42:03.174 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8099/.well-known/openid-configuration - null null +2024-08-21 10:42:03.189 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-21 10:42:03.190 +08:00 [INF] The request URI matched a server endpoint: "Configuration". +2024-08-21 10:42:03.190 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-21 10:42:03.190 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-21 10:42:03.193 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractConfigurationRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractGetRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractConfigurationRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.194 +08:00 [INF] The configuration request was successfully extracted: {}. +2024-08-21 10:42:03.194 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ExtractConfigurationRequest. +2024-08-21 10:42:03.195 +08:00 [INF] The configuration request was successfully validated. +2024-08-21 10:42:03.195 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ValidateConfigurationRequest. +2024-08-21 10:42:03.197 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachIssuer. +2024-08-21 10:42:03.198 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachEndpoints. +2024-08-21 10:42:03.199 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachGrantTypes. +2024-08-21 10:42:03.199 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachResponseModes. +2024-08-21 10:42:03.200 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachResponseTypes. +2024-08-21 10:42:03.200 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachClientAuthenticationMethods. +2024-08-21 10:42:03.201 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachCodeChallengeMethods. +2024-08-21 10:42:03.201 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachScopes. +2024-08-21 10:42:03.227 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by Volo.Abp.OpenIddict.Scopes.AttachScopes. +2024-08-21 10:42:03.228 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachClaims. +2024-08-21 10:42:03.228 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSubjectTypes. +2024-08-21 10:42:03.228 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSigningAlgorithms. +2024-08-21 10:42:03.229 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleConfigurationRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachAdditionalMetadata. +2024-08-21 10:42:03.230 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+HandleConfigurationRequest. +2024-08-21 10:42:03.232 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.232 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.233 +08:00 [INF] The response was successfully returned as a JSON document: { + "issuer": "http://localhost:8099/", + "authorization_endpoint": "http://localhost:8099/connect/authorize", + "token_endpoint": "http://localhost:8099/connect/token", + "introspection_endpoint": "http://localhost:8099/connect/introspect", + "end_session_endpoint": "http://localhost:8099/connect/logout", + "revocation_endpoint": "http://localhost:8099/connect/revocat", + "userinfo_endpoint": "http://localhost:8099/connect/userinfo", + "device_authorization_endpoint": "http://localhost:8099/device", + "jwks_uri": "http://localhost:8099/.well-known/jwks", + "grant_types_supported": [ + "client_credentials", + "authorization_code", + "implicit", + "password", + "refresh_token", + "urn:ietf:params:oauth:grant-type:device_code", + "login_credentials" + ], + "response_types_supported": [ + "code", + "code id_token", + "code id_token token", + "code token", + "id_token", + "id_token token", + "token", + "none" + ], + "response_modes_supported": [ + "form_post", + "fragment", + "query" + ], + "scopes_supported": [ + "openid", + "offline_access", + "email", + "profile", + "phone", + "roles", + "address", + "AElfScanServer" + ], + "claims_supported": [ + "aud", + "exp", + "iat", + "iss", + "sub" + ], + "id_token_signing_alg_values_supported": [ + "RS256" + ], + "code_challenge_methods_supported": [ + "plain", + "S256" + ], + "subject_types_supported": [ + "public" + ], + "token_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "introspection_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "revocation_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "device_authorization_endpoint_auth_methods_supported": [ + "client_secret_post", + "private_key_jwt", + "client_secret_basic" + ], + "claims_parameter_supported": false, + "request_parameter_supported": false, + "request_uri_parameter_supported": false, + "authorization_response_iss_parameter_supported": true +}. +2024-08-21 10:42:03.233 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.233 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyConfigurationResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.233 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyConfigurationResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.233 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyConfigurationResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.234 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8099/.well-known/openid-configuration - 200 2163 application/json;charset=UTF-8 63.5212ms +2024-08-21 10:42:03.252 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8099/.well-known/jwks - null null +2024-08-21 10:42:03.252 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. +2024-08-21 10:42:03.252 +08:00 [INF] The request URI matched a server endpoint: "Cryptography". +2024-08-21 10:42:03.252 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. +2024-08-21 10:42:03.252 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. +2024-08-21 10:42:03.254 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractCryptographyRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractGetRequest`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractCryptographyRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.254 +08:00 [INF] The cryptography request was successfully extracted: {}. +2024-08-21 10:42:03.254 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ExtractCryptographyRequest. +2024-08-21 10:42:03.255 +08:00 [INF] The cryptography request was successfully validated. +2024-08-21 10:42:03.255 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ValidateCryptographyRequest. +2024-08-21 10:42:03.261 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+HandleCryptographyRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+AttachSigningKeys. +2024-08-21 10:42:03.262 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+HandleCryptographyRequest. +2024-08-21 10:42:03.263 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachHttpResponseCode`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.263 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+AttachWwwAuthenticateHeader`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.263 +08:00 [INF] The response was successfully returned as a JSON document: { + "keys": [ + { + "kid": "C81BF52089DF1C3C6E021A959CE81D30E68FE759", + "use": "sig", + "kty": "RSA", + "alg": "RS256", + "e": "AQAB", + "n": "qfePedhEYUUF1J32RfcJVgVXb-g2uaaC-XDEoimf-2IHMtMNOUZw23XZU3pN9QJ2YuZPjGLFPms0I2G5Sp3P-jyckTQpxLdPAurqvzdZIZR33JUfZ44pO7zBupiQa4dvusFDMjqTx0YuW3KKHEFQCVllQseQV2Uy-U4clHu9b_VAiiMl4_n5WvxWqgKXCksPREoJLoDYyAR3Yk4nx9F6O944RLlp1172EuVvSKURTtdejms3F6N3-eAHdLlqv5otaPFFZ8_Ac0mlmG2mHywTeNjs4oM3kHxkwkmZs9_LxIxNDfxk39VBT6BIDv-6OCGFkwmVdfJvyCEqG2WS0XzRrw", + "x5t": "yBv1IInfHDxuAhqVnOgdMOaP51k", + "x5c": [ + "MIIC9DCCAdygAwIBAgIIQDFO8N5AZHMwDQYJKoZIhvcNAQELBQAwMDEuMCwGA1UEAxMlT3BlbklkZGljdCBTZXJ2ZXIgU2lnbmluZyBDZXJ0aWZpY2F0ZTAeFw0yMzA5MDgwMjQ1MDZaFw0yNTA5MDgwMjQ1MDZaMDAxLjAsBgNVBAMTJU9wZW5JZGRpY3QgU2VydmVyIFNpZ25pbmcgQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp94952ERhRQXUnfZF9wlWBVdv6Da5poL5cMSiKZ/7Ygcy0w05RnDbddlTek31AnZi5k+MYsU+azQjYblKnc/6PJyRNCnEt08C6uq/N1khlHfclR9njik7vMG6mJBrh2+6wUMyOpPHRi5bcoocQVAJWWVCx5BXZTL5ThyUe71v9UCKIyXj+fla/FaqApcKSw9ESgkugNjIBHdiTifH0Xo73jhEuWnXXvYS5W9IpRFO116OazcXo3f54Ad0uWq/mi1o8UVnz8BzSaWYbaYfLBN42OzigzeQfGTCSZmz38vEjE0N/GTf1UFPoEgO/7o4IYWTCZV18m/IISobZZLRfNGvAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAV76exWrOFsACD/cOd7j7ANVD13RPLAJ6RhCp5w7ADHGf/BRpmUb9GrKVK/8aQtXLVKpgRqiFEZRsOHyoPUszowK1A5GMkNZEDdp1yzGlVchQXJOShz2KmuZJOCoJK7+WzVz4Jivnie74PMdrUrk5POb7Mh/XaQXyTZrV78iNA2ab+we90xFHCcvwXaF0sxYTjJRQCn16c76EgllKrB9eEfo54ExEosboiCI9DaxMHymD67RiWeZxj3iJYlc1X8JJeWCrn+D3xDEEx6aHuJ3wI0eWua8utsqluug43m2EsPhHhSBZxumgoEHdQYYUlvlcZebVrV1eNGowm5E+Sw/dGQ==" + ] + } + ] +}. +2024-08-21 10:42:03.263 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.263 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext was marked as handled by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ProcessJsonResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ApplyCryptographyResponseContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.263 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyCryptographyResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.263 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was marked as handled by OpenIddict.Server.OpenIddictServerHandlers+Discovery+ApplyCryptographyResponse`1[[OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext, OpenIddict.Server, Version=5.5.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]]. +2024-08-21 10:42:03.263 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8099/.well-known/jwks - 200 1620 application/json;charset=UTF-8 11.8319ms +2024-08-21 10:48:02.233 +08:00 [INF] Application is shutting down... +2024-08-21 10:48:02.260 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-21 15:24:32.171 +08:00 [INF] Starting AElfScanServer.AuthServer. +2024-08-21 15:24:34.509 +08:00 [INF] Loaded ABP modules: +2024-08-21 15:24:34.510 +08:00 [INF] - AElfScanServer.AElfScanServerAuthServerModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Account.Web.AbpAccountWebModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Identity.AspNetCore.AbpIdentityAspNetCoreModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.AbpAspNetCoreMvcUiLeptonXLiteThemeModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2024-08-21 15:24:34.510 +08:00 [INF] - AElfScanServer.MongoDB.AElfScanServerMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - AElfScanServer.AElfScanServerDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - AElfScanServer.Domain.Shared.AElfScanServerDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.PermissionManagement.MongoDB.AbpPermissionManagementMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.MongoDB.AbpMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.SettingManagement.MongoDB.AbpSettingManagementMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Identity.MongoDB.AbpIdentityMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.Users.MongoDB.AbpUsersMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.OpenIddict.MongoDB.AbpOpenIddictMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.BackgroundJobs.MongoDB.AbpBackgroundJobsMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AuditLogging.MongoDB.AbpAuditLoggingMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.TenantManagement.MongoDB.AbpTenantManagementMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.FeatureManagement.MongoDB.AbpFeatureManagementMongoDbModule +2024-08-21 15:24:34.510 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2024-08-21 15:24:34.767 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker +2024-08-21 15:24:35.254 +08:00 [INF] User profile is available. Using '/Users/wuhaoxuan/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2024-08-21 15:24:35.358 +08:00 [INF] Initialized all ABP modules. +2024-08-21 15:24:35.459 +08:00 [WRN] Overriding address(es) 'https://localhost:44336'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2024-08-21 15:24:35.466 +08:00 [INF] Now listening on: http://[::]:8099 +2024-08-21 15:24:35.466 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2024-08-21 15:24:35.466 +08:00 [INF] Hosting environment: Development +2024-08-21 15:24:35.466 +08:00 [INF] Content root path: /Users/wuhaoxuan/RiderProjects/aelfscan-server/src/AElfScanServer.AuthServer +2024-08-21 16:05:39.577 +08:00 [INF] Application is shutting down... +2024-08-21 16:05:39.693 +08:00 [DBG] Stopped background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker diff --git a/src/AElfScanServer.AuthServer/Program.cs b/src/AElfScanServer.AuthServer/Program.cs new file mode 100644 index 00000000..d2b84c0b --- /dev/null +++ b/src/AElfScanServer.AuthServer/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Events; + +namespace AElfScanServer; + +public class Program +{ + public async static Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() +#if DEBUG + .MinimumLevel.Debug() +#else + .MinimumLevel.Information() +#endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateLogger(); + + try + { + Log.Information("Starting AElfScanServer.AuthServer."); + var builder = WebApplication.CreateBuilder(args); + builder.Host.AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog(); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); + return 0; + } + catch (Exception ex) + { + if (ex is HostAbortedException) + { + throw; + } + + Log.Fatal(ex, "AElfScanServer.AuthServer terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } +} diff --git a/src/AElfScanServer.AuthServer/abp.resourcemapping.js b/src/AElfScanServer.AuthServer/abp.resourcemapping.js new file mode 100644 index 00000000..98822e49 --- /dev/null +++ b/src/AElfScanServer.AuthServer/abp.resourcemapping.js @@ -0,0 +1,11 @@ +module.exports = { + aliases: { + + }, + clean: [ + + ], + mappings: { + + } +}; \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/appsettings.json b/src/AElfScanServer.AuthServer/appsettings.json new file mode 100644 index 00000000..f1a857d8 --- /dev/null +++ b/src/AElfScanServer.AuthServer/appsettings.json @@ -0,0 +1,27 @@ +{ + "App": { + "SelfUrl": "https://localhost:44336", + "ClientUrl": "http://localhost:4200", + "CorsOrigins": "https://*.AElfScanServer.com,http://localhost:4200,https://localhost:44348,https://localhost:44311", + "RedirectAllowedUrls": "http://localhost:4200,https://localhost:44329,https://localhost:44348,https://localhost:44394" + }, + "Kestrel": { + "EndPoints": { + "Http": { + "Url": "http://*:8099/" + } + } + }, + "AuthServer": { + "IssuerUri": "http://localhost:8099" + }, + "ConnectionStrings": { + "Default": "mongodb://localhost:27017/AElfScanServer" + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "StringEncryption": { + "DefaultPassPhrase": "lXZpxTjcxFYcYSZP" + } +} diff --git a/src/AElfScanServer.AuthServer/appsettings.secrets.json b/src/AElfScanServer.AuthServer/appsettings.secrets.json new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/src/AElfScanServer.AuthServer/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/package.json b/src/AElfScanServer.AuthServer/package.json new file mode 100644 index 00000000..370a7c9b --- /dev/null +++ b/src/AElfScanServer.AuthServer/package.json @@ -0,0 +1,8 @@ +{ + "version": "1.0.0", + "name": "my-app-authserver", + "private": true, + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.2.2" + } +} diff --git a/src/AElfScanServer.AuthServer/web.config b/src/AElfScanServer.AuthServer/web.config new file mode 100644 index 00000000..c40b834f --- /dev/null +++ b/src/AElfScanServer.AuthServer/web.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/AElfScanServer.AuthServer/wwwroot/global-styles.css b/src/AElfScanServer.AuthServer/wwwroot/global-styles.css new file mode 100644 index 00000000..74db4bd5 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/global-styles.css @@ -0,0 +1,6 @@ +/* Your Global Styles */ + +:root .lpx-brand-logo { + --lpx-logo: url('/images/logo/leptonx/logo-light.png'); + --lpx-logo-icon: url('/images/logo/leptonx/logo-light-thumbnail.png'); +} \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png b/src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..9734a07a4d4539d3081bb897ffc8d5e75dab8798 GIT binary patch literal 10695 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 iRGz-n4VZ}kM?W?F&FYYBo literal 0 HcmV?d00001 diff --git a/src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-dark.png b/src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a3bbe82224deec74650461230f66d609eda717e3 GIT binary patch literal 38171 zcmY&=1yoc2`#&Nmp@1MEAs7QC1cMR;!~`Tn7^73k5z^f%BH<{JmJk>nqX(0ckRCO< z27}R^|2yLI{rx#dIp^-~xzGE_*AtfjC52a)DVQmUh=?xByne1sL_`)zM0D;C*#+QA zNoMCN@Qd8~wYn`45hWer-#Mb6u}nln97HnDpQ<bGjLEsW%NVDnFeI)lKZxHntGN0dMDG4jU;DzW`j_7l^cb*}tK>TSc!R|S9FRwiE51?nQV z+Qe$a)DF{1*H`{c9E|__ov>Lrv1zTcNL4s-$iahTHkvLua9bU2;r3vf3iEW>#SbHuMTaMEK1$b2edabXtYAI;Eb(C`T4q<>#x;~)mpn99 zzaloK{f#t#|c=%Oaasx=!+3ClOeMcqs z@)8u0bTzLfwH{QeyJa?>X`V6zfxJ?lCrEWlv8Fv|*vTV5A!3V^@3DsZN<_BJ*|UUI zynUX6J$Ur=%~{9KI2bc#AH6rSgbiCF;ZafTMlRP19Ia$NJR|?u63}8%0;43EO1dyH zr@9U1+8L*8s-zc5?(}5X7naVyIg>?j2Jv|xI@!`Q-nZ$KXhB+MU#WbW{yeVale*35 zwX+)nXu0410i7|=;wKvp{U5_*5qJK_=;d0#EPQDG5ABE$E5;>Csr1L@PHS_&+a8@# z`O*sLx2K(Jlw2~se10;fey>gB>?1#=0JDNLcl_tfcG0!diyXwhS=+K>PX)_C3KBbu z1Q&^OKmCj*4>ddR8O-w*pQWX|-+7Jf^!k-_1n0HjuZnxgtH{Ivvn;?k|M#8f$;2iO z{-cieKz2V46{w)gX41nm{oLF%Xkmp%r!$+0;NSIGidWC_p32&bge*EeLJjOT-Fhl7 zuR7MxZ~Sic6rkI`V%qMUKKgYBaJ)yX^a)f2tC}~+?Q`^GBzBT;ui7}zZs>0;3Eavy z_+=4rrpDM=C;BiCi5&$K=>gg^S9Rh!NB3Ut%nQd1tK1?Efk}Q{ZETn&(ySarv_Z(uvY+YLW^2dg%X| z8{pW=o+=}ZSxR8OGgldD-W0((p<&z>Q{PSxK{TT0$|~6Ub+7I0L1WoE79oZkFoh^p zxzn4x-lO&7%rzb#A< zzCKm2L$5QZF>55iT}@LtD;+T^G?4qrd1ZP%)S*+p?B*HXR|Kc%Oj z;{Q5R^;srOqlN1C2IAXTir81E=%v@ZI--N_ql z;EDk9fprrHPc{9Y*Mg7-JL3e0ioq$?j#iNc?XL~sW@E-@t^3T*%#}Rj&+S4yw7IVK zHdkLD)Hb-_sx)Wq+cKUn-_1&==CWsY-{!k+>IH<7pFCEI)@2|;*qA5GPWa77gTE6M}+ zeZy-g8nzmkw%fjrb=Q7ZTE~5M7AV|@#<$Yxwo<`_>YIXO-ZT$^R?o^oLLhix@!1ya z`_`resn^60(mVC4j>IT$TFfxnkNt^BO#R*;&|FV3OFO@iaAXfV@0GLcW8x(h;MHX6 zC)btXakvhqbDv4>9QWt+1reV;Sa9~e=SVEn`PS?Wy^q}Ew3zW&G{D^O%hKmHrw*hi zQ?;O%Ey=xfc~$0a|CKjE@I=MG2QN!+`_s#DN+Z}-^FB$rKS315_zHFDU_?4^G#+5)y!yDb(Dcs%eK0Hf(B4_KbQJ9f8 z4S!e=jq1JD>+A2%1v#1jI4H$Dm%KLQv8ls^f+fsvAsSCj(uoo?Qm64g4>P&GHW3;6 zGKHYS&Q}u5Y&vATkkz$KksJcjBm69>z{B_7n};%vQkp#1eh+x3^nxy6cm9blW9f<1Q z=f%q* z3$Q+wKMg|?Exl{0k%-G~2FK3>kcPr(08=b#JbH_c7YKDFV};Q(<;`chD8?xAwgP{9BkyQ3Oot9qh%; zQ*AO;%Eij-eC1x*#`<}+(`cCJ;JaX=x&0Kalf0_0>Ao+kqg4P>5D{$k7=jvE$caN9 zv~o=nPS&S-nq1T6`S;dlI1<8rs51j_K;VaNY?wt{N(xr;0Zkup2Jcv_h`$zvtQG_# zcV@$CDRVxY7*kF2KWWfKV(QERZYxCRXzuWxdz))bjy`NYAoAYxYNxnOZ~B7sN>!+@ zSyFS$fG%QicCB{55l*;CrgwHZ2hMy#Ebl?>TW7_Zr^S$qRasi*$xGA(=uL%!U7c^n z8~14spBixLMq%=syr-mjptjPWLrJD5drGCx@^05N&xEa@#U!idxlau+RueeYhhq8w zC0~l9UG@C#24?`dNm4kGMW(2~8a5#1_dl6)*b^z#ACaK5O5gM!{6(o3nqjm*P%uqKtuh->OUW$r?|O zPDH_Tj)gLD@hLTmR&(OyX+&|xl&thF8wIsGlh_wvj~la{FY~4vhdG0n1o)8)mU&Yz z4o1+YLH9=sg9w1%tkkkKZq9Z}129LPbrdj>^2z^0@OL3;Z~>@oZnrz(?!pa-!5R8X z472b~wg|8-=W(`?=}#Ugk9~5`{_mToHg!a+nVnM~n&yNfr&>ZN^`YQKayJGg@BrmS z%`0C3-|F9LR860XDnD3wqW0ocRK|sT)>+_Rzp^~Q3y++UDo-zZhZOmM)Ry+wbEJR- z>&7r#j-aN=jGM1^{urY`+GNd;}&`$trs*l>kM3m~LN$rlO>^{b}3`R^z#% zpp>7hQGl6peh4683in6vcZweNpb3~knHE6BD1Ch;h4u(X97lrxS0P? zM4EqKjn!hj?QA}56LCV;i;CsL=O^AI5pRN;Kg-8U`eyA*ZznHuANBmrZw(ZazHQYj zknl}%cWT)O4kD7O>h0|n5*89F*x1;pGJUfD&&uPWL=NsK{&1(Q$VG#YvAh~CuQowA zo~Eh*@g~2immu8bx2@?@+2U3|V4Pv5>l;RA4ifi@GKda5(8*V6WLXl=Gv%Uvo*MaBuYW?|%>3lHWZ?G*_Szfa}i$1-WZliEummKLu-5^Bk537z+Ol9Hk86 z)uPst32<6f;?vzzolT*LbuuN-TP~i{VR`zLkJ`()_FYLxMQ#KnkDnaqTn+cM2S4yW zkB$I>Qv=dlPb?PQcMJn<7Ct3Uc-Q=$*y!Z?%%~+FV85z_R-QDiSfcnzRJl=JG|;Y+8ksJV>?GUE%Hy_`ck$j-^@A)MN5?E`e{I4u|vu} zr@$aL!`31+%9DmnUH)=m!FQ0%#gc?7t~(zQ0PFcY+}{OTz&p8+H}-_x}!!l;xE8s zp{hHbz{9xeU@1L3<#b3)-~q4vgm{{uKrDU8Aqa$*hxbPS?<`ubX1&@Hg*rz)UW#J337q6HGFn zi3CsjA#X#7iR|Pg#hOVjsW`$dEYw>FT@$7P3!qT5uLKIU)Wp9#h}x4Bmvc<;fT7BZ zJakvkRM?L`nUx$6;l0Y{iJy^^eC{%NBt)~3PbHjhY9*Fy{eymfw@C4cS6zMQ1zjT! zfCQvBzP~s7IE;=U;iOh=;TP}g>sy*Dlls+{Qbhy)`tdf=vPG%&_5t!gTERH~ay{ze=T^BY{+}9IeYQ|2RK)@y`uJEov%>;+CGWeD54e%Ahah)s1iY!6ZcS zm)na#ZSvWT<|kYQKXoYLgCwc|gtPz?xk@GKc^SydfV(A6K1GQ zixAO_7V6JM`}OU@^vH=i*a&5gN@7ong_&3^0bJew2%tN#5Mp5#Kmjx~>N%OJx?1mL zj8>J@t4Q?FeJOE74L$j{&H>gS{D&w6P82ZDMY(xwUSbz^rliuPGECpU!pO(k5^6ty z8qj>m3ou;ooL%&hubi&IgFl!j}qb?b))5GIH zoH#E?u8g@Y^78QWygCXcA}1m78<+Bs$U~Dh`=Z~VD}aqXPEMc~BPNwS&r|!p1};CzIGWrdCVTeN-j*JG)V%aP5TVg{Q=+ z9@;=1V?Hy)bHu^>F%n2;{iRNO1Fpn3;PCPEe*0q3r>18>i>~7n0?fDa>wMydF&zpf zm2g?N`lZ6rQk-aC4;$a$+_6`rSp8tzBq0xXc>+-uTK!iA_{9z0kDs8{FYABH2L+)i zSOBV7O?^3~1Sb9Dh&0NDpv3}UibLWe$wSIWl3j~!gg{L!hl#p&d$F1E9>J7CkpMs- zqrJ27QgC(oNoydS_!i|S+0`aT`QV^#!?jd_zh?8exP%dVG-&;V(}@k!-zb|^S3WA5 zx_*8L?QG#V<_{72NSB^NH2dFgPh#~<#wAT6Tcuu=m38oR8Nj%-%<2LV zSj1KgGb5bHkK;8TJW|W?KhkM)r5owqD=RgWR9<@V@+5M^?n2^o8lp?iA6@vWbKi>% z90%BSRi1}rSMF>?HU}eOL@w?*ulSDr-3RiDd{7_)mGS#t$k&RTaz7x}bn&>xozKq@ z)w-!dOw(H!0BEZH({FA5-<}9Z4UCnAg@yTW+Xlf6IH2gSmxuvgt1_X#eu_|ERNu)S zdo2QwP_giRr}@Ns8aRHfs^xuw15xT*IV)M4aPm2lKcFX1*uN}j6l>N(L=fVVQr44I z$B(e}0hxDK7kbKKqW+M?ojAlGA&h%TWrP86z4k*}?J9El@7xAq6p_~O0yEa529#zF z$B&^$R$}DyhK1mWm|lmCowN;+UmXDf+8n*}Xw=sRDY)=CKhfS}eTppYB<-%@m|bP} zV$RQjkE3xHIQuV$RANs6`tSK|pbUX zu%HSE>cX1iw|lIckXE?!--8PWM9*_hTUcy9IL|S3UnlQ&hjHzToCH0Hr1pjg=`dtivT$YLdg_EHEoILSv{QEnz^@Z9`jrF;t0A3o&eujBVvrc%H z>|lw;fDu<+DB&!d^L=)#u8)k}o}`1re+Je5u_GD}!TW%`C0On;Ur5jShnRj2#O~K4 zK-}>!?+qAVn|vE~ z%O;T_nqX-mC76-cqf1KKp4cp2hcV{ifD?a$hAPUApG#H9@o)%7yI*-C-s3@2h!v4H1-Pc?$xcFniHa~7^_ctJ^_3{&z)@Q z5OOT&!cXTip|dmMw-!xSQchenN8h2J4xp*c8I~Tc}k;AUgZUJ^$DqvE=999968`ZA`u@@VfkjQD&o87@za9|0pBh z#6Pl?h#aK|D=N`w3N#E=L^ABASAW_uTA+CIH|(JGCcWKJC?>Kn>^O41Rs(uV{ujc3Y6gk>sqxs60d^9U%jM+KiS=n!gi{g6-d0BF|oCkKFDUJ81$KnPml4hJA& zN0O`FvAUx!MYg&k?)qPboj7$lkURs9Nk&B!FS$Sd+sscQmx-2*ckf?^^b_pp$J)@1@Cmm>Qkp5x$Ipzk%1`7IS2+I9^0IJAA;9xyN~nI-AT;DwI} zjjy&`Ff1Zy>Aohk2`DaK%I8#2(BS}&lA&q*y<#0eXvmw)ji?=)kE-9fw4;VL(?%0_ z_k;N4&^ISB0R;Kg^9KdXE^luH5MR-}=9m^>?eZbMV4f?y0AA6P$!kpCbr|&~5PQ9k zJSFB25bHI(v8C`IYacltCHCAz!FEgVvu=4tyE`%0&u4?X%z(DfiGCA2i`9*Q>g4|(JzkG+N397}IoLibTV#Ph$? zh-X60m?@&dHCTweJ|&!F5-ocsJslI|uI;PaxRU@Nm-jrQJ~M&seQ`nv+vP}tNTA>T zBN8zA-V>N%6PNZ84xyeL4CKxZx4T|6_NOuxNDSALfeUh1n;0$tWuG27S!A6tAojP< zFyjlRP~iM-LRSdq&kGii+OPtjgS`tLI9y-K5`FOY7<&40xN>Qk=tr5KwQi#m%00 z2SKC^a2*H89%Wh%iQKO9$}`O**g)x4u@b-!S)_=iE%L@}|2d+Lo+rT6E3utP@SY@a1|NdU80xUL2JpW&)VpK>#jmFzfQs^E$>^i@&8;^u^D-UhJ5tC{3fCzjpWEzTN4xL$_Vuwz5)m0xm(cU7PYmQ`2-NV3ds+|L z6#X)|dZN(2M)j4~CQ=zY=(-&dAfCW3MFNWngkfcWugKO%%Gjp9Kdk!btKOM)w{U69IyUS(goF{)${-)yxE61d>8kgNXB+Sn+P1>B-i2!`+oHBsZ4YNg zc-kW|jax<2}A$i=(1i7`Y=4ZCEI;&aCyy9&%#hrm7ijLh+kZ;yjtnl7)R z=g3H`aVy&^-dTY6u6@D0t>%aA9`b7>dxi7k!O)CydqvNEWtRZtMz5NwM8Pr>kPq$`j;d%@ z<58}gQ0lO3c-);__?yyt&qX$;rp}$F?E{8}JvH4tRsG0ps$zHO)_cLxzUw`1Pt;Qo z#FB`r&_6`ByU*rGUv&VMl2V3kv61VmnPhHXL?Kus(5!tz3F;rRHV%^~=< zg;;1Nbjw(uuKo2~(9xC#^AUAs=m4)t7rrbUz&zxa?+E@bXetG=A)%?jttm55myT6G+)cXooSka>1_m!CVZ5WFzXX@fEjtA94Ajpg8>P#2z>>CY?(0Y|6Spm^oPSu$?n$du zNsGHu)wA~2?e}%eTFu=Q(kSd&XZWbrlLi;HpNSZ^47g{8%2c|~>6lC&+5AljyZAno z4N6IMM^G5Dni9R1zb%_?WN+b3X9Z<2 zu5oH&-0$CjObm%B{;j*6>CrbK{5*_Im>l4&XxSC-Us-^}nS^}*_M*1!nn{*00g zu$n-9Lq!=#A5ni;yf4ZDCAVeti8*GHA9C4y)>cfnGg{;s4OUB1+YsOQo^Lu-%&4Ga zmw>PL(+jX|cm6#ZU1K$ke3SP)FC}OcYTou_tKWpV@gT;0F#|h_qG*UVvq#`YJ{TJs zCTpZZ=PUJt2O_VdJ*&0<&A*vnSs+be?B7`T*6;xpuGkLjWvxaai^b+ORjX%JtGCEi z57ezT9UVVtz6*|ulQeaO&oH-P^adRe<;nNUu4_1?> z8JSR|avw%xFKvQ;LMXpJ~^-q6F2zn?^oL{4M> zz`?+Iz{HJ_SM-@C-$s|`CUk9hAh4$RlLuDTYO~8`lyV_rgfaUO-k|q*4j{||>ji^E7 zKgUf*Iv)^E%+(aJJd^Xq9%so(ZzU_XguB#v+E8= zJTd=US2plBU$mX#?=gey>^ z!Qt~xPkH-ONB!w7%Gq7=npWs|O?Mo%V!AI<`<<^vdeZUkI7h&I9|p5e4s2d9PYStZ zeDKFhb<)FGz2d80llop?mes~h{IiSl7bt#9&d;dN+#|NYWIv2g2+@9LF4otGb&|Ne z$ZS2r9{{4$a@pbYJV%^5qA@Tfa|;XX*936_ot05S6`S-;Kj9k{KUu_cRqCOaS9S^b zUZv5d!W-cIx#ArZ%#`K%8Xo7zo+eiH)#q3bX5H^2EfG(su#1jsU}mN2pCXI?F1)0G zO-Xxx%5Jbswk+MU0tbp=80n>5?`u!CG@N%g+|g^|-41;|`uG_;cMMrn?0bpy@{!L& z3GGfEiy3mzseT4$Mn#yPbXe%!k2@?Ys+W>rQ%jViE^F5T`maiKbs+1-V9-{D;T-{*PJTZ$_5*-RGl|uk+FN_OR3h< z{5ua;rivZ!)*Atw|d@|KF%9fQe`1tOSw?cf>GyV;Z=XM zO`|#b)BQUx@gLH*0WmC_1=aPF(;E0W|LT5j;*M;M(Rh1VettgNhBq6~$-e=}I15-v z`undTF#A36=MR}DFOG$bd8*OzSXxMPq?3D!PFsMDr^&Cx=YSJ9k z8^^0>stUKx$3i7Opcs4KXSIJf=f@Xcxz~vRpVxfBl5hh8*+?DkR|^oG&s2RYY3>P^(TLnGJL|gZTjw+nME2zxn_m+88q!E_6b)pXVNo(TK8`>R24$KgJ9L*2(e zCcypBqSN@Z3AQv7FF{~7nc10!Wq)(vGwPG<%W1|N!Ro3aPha0c62=)AZi62{(v&eI zmd=~nKlklN^)S00dzI-ti{@n3E)edUWOYB>!Nz$Q7iYd$YGKtx!AutE%4zF@=1T1> zic9@-KHo*YiS53Jp+v~#8e;!N`+@>30=2T4Y4&gzt#(>}f1*%Zab_fsc!P1^&zBI% zg(hHb7R4L?3itI7%=uc_yjJqIYJp#q(7^<&cm5?UNRX_e*Gjz2Q+=@Qu;TG$5=|&Y z#17aReVA9!({FcNOTa+u^$rBqKmxG0L(C*!WUA%^%Fo%I06DVqedAOjZ^cLH0SVO}B$Yo#SzjQhsTE)7j(FV5Nf}}oSTw$l)EDkV zJQgI%w@9~U@Nmh2D!Nf=xPDgsW)tUT7AC?X!cYf>nuh~yQ# zhMV^IhaGNcXh2ki>TXoT?7r9?r$y1CU__ov#i9oVMO`W)TUKlXpRB)Qo7z6B7-JWa z5fd}*^ObU` zRJI1&?QeQAJHLS`?cJXHvgxbG8 zpz6Hx=&@~1;0!`*A4i@0URKlHUU*&l9LWB+$D;I7qx8l{s|P-HAY5{b)#&dzFMu`& zd_Zdmy!?~xWm&O>R&x6Iohq=Jnz!h@t`N!QM3d~!KL(E+9Xd7T9;T9m% z_Ttf=vOb4IBVc&VLdX%T+v`ohY(z2VVZVXLkViN* z4fps(>NT<8K`IlK=EOL}HOM`x|Jf^@2Jl7W7*S?jCw z4jA>Z>yLv~;im&9GnUxemzMp6eHvmA7ag~ZDNAgVeaWS|2ZTxyZ8HR51_`gXTa*j; zNaSvMq9ARY#5&m~l5*Vq3M6t2mcO&V?9D&DiPae>W{mv)IU06tEykmhlOWtRxxDm9 zRmJr~KD1sFu`SQ;$SVJbEwSYt#j4(Ra!EHU%e8&}RBWr5{pNn0Fk+y09(%ZUK-~WI z37!cUg|Yj9Y*-uPRD3BY z#m90NY*W{NrKEZ=xumE3yyT+g9%yc8cnjW8ZANSKo&49p^*qhOqYuA#h0~6fwu?Yt z&O0|%Mb`kfThM>o?%Hmd+Awu%TUGW8jJrcH7(48+F{*Z?FlM;%RE<;3knEwnXQSEN z)Ms?*llf;Y!8;9mQTRe(^S%hRe^^KLz9sih&BT(qu6MQgu}>y4s)VkCRc z>a%O=H~$2QS#^ z*DmC7K@x$%htQ_{S4MqmZk0JVe=c4>Z5>nzcr3p21=${ocU$RXK~&?p z_63Y9qO_r|W*CX3Raw?RH&pXZS$SE)Sc&`fsW9bIDSI)<$DY43yTCZc9XPFa)mnE& z_vn$i{w2(qlqR7ux$*EIrz-}Pki@P={@l3iIu*xXZ-wC!D@TCa#G&Nyz+ z-`C-X8~^B0a|m2HJn@{mok{P<^$pyp8tgWr%?+nb?sfQjm64uQB@ap zn|kLqvO&YLNoQC{)Ybah|5SSxvIXOu1ULUp5!O_mB*9h{eLD-O4Oyl9WxKL)rR7gJ z(oS-}wzAWGZ7fzyhx~RuWApo@0~@{+1o`v}$5wt8QaJ_0Us%QEY*-#$bD1zp z_m(tMl+Te6dMCFj;Q~pl1pN^f1}l@47{SygVle_dBQcWQZ_|Y<{diV@TgPXzIvkyjj*9*dmc-U@oN6SadYMvUUHsqk0Re z^Fdo%pS#CFac)rLx2HP2@y_P(d>19g89oZRtUvA`4s07|_Z=>R)7SL85%^%5dbzb3 zr=L19rM`HU#e*2UwTc=%icLu9?b^*t1x7!NfOlF9wd1B#2{oPGZghh*69VN;bKK7r z{iK<}UJLO7B~>qECM^w{msL3$x;P8P+;N)#ZOL*ih+X3~b>7Q(kVd{h^UXgkl3R?BAGEs% z>FPBjLw{V%R|qXG`}%yNkS@C497-QNfcR+Mu=jAILMO#t{Am7a2` z+1R0EW-D-CTZJ~cf8543F@M)qhF$rcL0i?kOf#|Kjn26EUuB4U$&}0M1s~saNDW;0 zEdeYkR5&H3?7u7iCr`l>R%sc^=tv?!3ry@Ngp;3(5_ta1iM)c@l-m#W1?3|bG*I_N zJ4T8XUiLUkEIsc9`+%w~LtOd%vC3qxii*EJUms1+j$}s2%GgaFJWas^gNfNf{RMs* z2FSEc*2PD*N0H5xCEf9FtCn?5bv5Rjon0IB0?Y?R_x`O^O`Ga=(O$AvhKab9aS~oY`izU2NCc^_$d3s#z=pRm^Rlp$UVZsXrzHe8gwr}Dy5h5R1 zr0RrCd_d!hCip)0OV8qq%zby#RKaHhK=vONI@1(SV*=t_EBO2- z7GDkNR7E!I+i;`)A^w2wD_BrQ`ne*1Tl1waf-3BCui*|fZ@QayL+BdZq-1qhMOvzm zE4clGwA}*P4J;QaNg8xdX+CZ*miOJ^1iG>;U=ms1jCq3OyL@q=6OreQ0~XW58fbNZ z7e~6iAeRQR2?eSYfZkSN|`EZi1? zxhLGPMSIX1XaO%tb1drG+E|9#5^)K1w2L`j_gJ{%!Hy9mc3(Tg~CunT&C+RD93k zav>|*SL<2jpKob%A-^E_2D_k|4yN@{&h0O>wL3-pTzmAe{GZhGdF&El)Dcs3!qtK? zPi70=4^9nceWu}^b4fRHV5MT#L3$SYVmER;4qnFCNkEjV##RlgdnFKP0J3(v zQLd)AV>hZIhHJ?mRaHTccRb$Ukrr(&0l2l1o?Eyw&%%Esg6kRC&m|^r+KQ)+Sf>dM zi%vcXqlbe#5E(&hw()^fT7As(w&uT|lqiP0b2^t0QfQ#KEtOiSA;Zse*-Nl2R#BpG zLw+lhf^P1hjxfKcU8-y5)?NI(td60Ie8aA=xn5G-&f*k)@2eo z)q-ZbWI@m&>iTtt&pIMr;oY4s>=A6DHo zZyB|xQylK@+t*wCdJw2`fYl5@uhDeNgMB<;&m&IApG>Tj^1vqplwLqozwwfADthfF z6cdj46kVbbpaU$yn1$+IVl}G2b%P|rKt0=N16WIG=LUg!yn&rWQn`uPbU7RKT?SuJ zWRcsz=%O>K-zg?nkZFe81r57*QSPTkc3tM1YO}SfoLr5rWgH*%M%jm5E#5vg6wJE) zNM$Ji>rVm4&#r$%k5oG&4Fa6Kx$b_hVYn12;tB4vDuTL0T|4}3AEeB6&U3YOVjhJdwtYXw;uV9{^wStw` z)TEdeJDj_xc`GR=v{wAGjxF_q;iyTdHLHy4@r?7wDrJfDIez|Nu)E0gxyHeY6=+>iA#N8om!lt;yfm6tamq3Dgw#F}&Va+k1=L3((Y9sVaRAs}_ zvajD0CifMMyhV&OfW2nL+N8-a!E5VA4^cT9U1&X-XYdG-rNN4}3(jqVl^OxaKI@9c zju{}7Z`RiVsg793$C{_o^WovUchwqlV{1^2x$H=XVV$w-a{-YWP)x(&i)_-iSA7N6 z2?>8FSu~2DgXnpiva<3hd@=1KKvV3ZG(7;^fBa?O&Cq-Yf8|$HZ9$2m<-h)TXp~s| z!sNZr8Rg8prUnF&WE@!LdT);2AL%f{eD24Nd|V_ajC_CWQikJ5Ar$b#I_smE_pA-+ zbdsYV7W!70Fshi|ZbZJMc^j}u{Fi4L`uU5PzYfhpM7KWQv+drK*Ue_S?!=Ku>-zlVJO$&kyMh-YMr-aCnbsLXp8 z>A;*Vu}!YJCv zO2tL9ycE0jD4eij5p;6P5&(rQsJn(i^uf2v94|W{^Ib&wQxbn=E&L^Nda0TSyx@49 zOewvj7vE%WOwO4{DrY9HkRV)Y@X9)D@$v;Zw>7=AB#tmuI%1aGXP4CM`5;|2HY1Kg zadS=!cKW0NpAZrcXD(W|)9r$<1A^A^Ew?*tt6)%E3R{}z!&c{%GUQF!7r;@pw)8E< z_;>`g5=wpZK>W!TtW%q@IlT=}7zQXSt@z8z?wKZdO9lK?t9?73D%zy*6R=5}ZwTf~ zBoC5+9rlx5fC!Q@t@rN$9Znpn#;}_#afGy#n)6WD@j;Xw(_30%A8u6-s;!dUXhqlc z8?@?{w&U&a5=+JH#~XdPeagIOfc<<+eyMGwL8+HeUy6&gh9eiEg zxtoKx21a*6f4NdSe7+_DXuvRCG)^kuvEi^yZ|KRsPZ-5TZQX36O+Dd7oUv6#Rl=i= zkwuwW33iurLH^nlkw##i0P|nm{?L9LRok|MuJxqbwe1}sNdst>G51CxHot3=9A5R? zM)D7=?=_0Hts8+EL_{El-^>>Nc=&B?=kCzn5n&;eFP#a@bHA?g7^JF7=?yCAQp%>+ z&(E?LQ{N?wLW(4kI!w}UPklyy(n+zJcMhtQ5=^Sxzu#PbwFn0wgqi%dmRzsgXXt*+ zgt1tjhKy6#AX-GrFq?FL;CSb20at~o#Ag5t5li!;z;JVowFb7ur+qn+Y_8YQy&JK} zrt_olvO;@j@R|qTEU?($lE3UjQD))2mKFsMV;zY@v_oD?4-j9ZCIavmYgl%qGzgWp z#6l67HRt}@^I0uU0L7YIULr$=W5H{aM?T8C9K5Vmvn2<^yOV-=Ku2F#|~Utt~xc zT$yGS5+%hYdzDrbnn_<7c2iEGkVKSmpI5if(M4%o;Amgzy}YR*DK%eEd{S{X0=jhl zZ&dO`sl>PB*fqTIt7sZuikyPgeEsQZ-0j-V@f@^FPnRI~b&=%RKZIFNVORwEK{J#@ z*1+j?rWjC|QC3M|1|!LAzFjNMeL&Of+!>)K6PJ{eSe-=Ix4oUxfGkaz*g)Ur#WJm( zD943K&l~%}HkWdwnmjUZswz;Ad=QKg+7-_UdEU+Fn5>=Z5=!s-=Mr}~4jbls&&t~n z&QiP!;C}`YI}4vTc`4C`)*ayVl-&ysvth26E4K@>7Q}*}0ebXRuiFBZbZYED5M``= z4P|V^Mtxj3!U*oV2kKL68{j{Fz8zn*C!2LbMgKtzvJSS@>H{*-gkq-FoaXLu*|4*0 z+M4q7^kqivNMGjuhL#O}EcpE$)b`e!UuM~uu=#u4cGGEcc`4sN=Qi?Pko~p8>3SYT zOGm!cPm5ZiSkq+FCX4KG<3pg;&WEMl*9pvQ668_2GUg1p$)aDSYw1oqNL9~Mj)y!_ zX779%gtrvR2cV_De&|_oKny;v#k~aA^!GLYd*hL{JoJ}%I~L$(0Rp=7 z(`J<;!cY~vDaWa=Za|1U>jNDJtGSES3a-IoWFBQ3kxQfNpvX!_I^L%kGYn_0dUP@? zT5v+9XYKnzR{s@CC49EZ1DVYj(?&v}X{{FeTo4SrzasZgn~;&z-8I$7=cI^1Z{=}l zHm43TPfKi|Ng2^L!w=8B| z3br4vuOH4Kg=l$`5POU$+M;ZPc1AbxR*rh-Mq^y4+LZQR4xUXvR+UMfh^a7NGj#0L zi=Vhv9_+^n1elcvBg5u`zX0$el2Te~+^kHhjGAcYVXja}8*m&Ho?ua=yy>YoXeD4E>Ul@1Ee&B0L zw&g<<{w!PbQ zIHA7!>qmmo(%&YzuJTZGjMe_;70JJWV!(@;0n8(h?QCU?*#Uf|Q2jPr=Ypk$g%KL7 zsjKVB^f7dbZ_neEU^Ew`>vh5i+?jP*N@sNEZCYjAi;F%W^`L}*9vznzVjFtc=XLOZ zdyRQJPsDTeg2>8G>p}Pa(pu;($e-qa13A*i!clWyD#Vk$5`EE`5J`cPiueSUYt>viob#8TPoML{D+v$qAyysD4p(1he(q77U zg{@LfP?5-OT1e6li>euW4k;K7b!>?&{QxSi#TI&fuac61wpjeDCC4Id5;=%{f`%AW z;^i?H?K^u*E@^YEYtP*@SvCr)EmSe#WKwsMU})ekdtCfOEt^h)ixyXzQ_bSvB9&t{ zoy6X)u2ghm9hGq|j_&aV2?krG7A7MM9ccFKUD`G;?_R&5KvID<-x=tr8p<%lO@^v@ zQsNKgbthuoaXL7jX$na~3~3hJ4>0~YwL4|0+*kx`eoE7rZD2;PhLk^kP5A2r0%0lx*JA~l&O!N?gb*r!AUlcF*Zo?J8P(Q>-{8@>lOB*DU^RBP2@0b&Sdnm9A2 zS^D`JL0dW;t_<%#E!Z(y=m;Z;#7h}9?@MeZ$iAfm*fD3Z+`@G`06s3wjSOrLoOR57 z5LUc92x?u+y}RY|zE537z7Du$cAz{myB=$798%+zvl6}jr0_`Wrp#fYo88!Zrz_l( z*`9Mc??IImEHBFFMhaQ~Vz}y#HZ*s6s55}sfV9}wBrIPEv)~KsiB{ueph1#0&m>)W zX0DpLtrIs5>L?GY(?okbkjX%}*zmN4%$ zQgo66ArZ?GSka<#losd-0}UPFXRj^#Dq-R$CoD5OYg^<|1%0~Me|rfVav?x`UH5M zFCAZO)|Fn%&oRxgkppD2_R%F|qE)fgs6)_PJ|c?6y(`*ixV5F-OG@lYvQn-ZO)&qp zSkSz5<(m>(D}xOX9kjjM12U0`vT>sJz6qXYLq4#95QyHKx!JhMwhr>XQRZ*2f4`t6 zBIsOK;HmO=r#Xa_o6xDdQgbip!E?{D^;Z4(v$s0Qt)iMUKQ=X)1y7_R%t!@Rsm%y- zBp*6g9clZ?Ev3aghOMD?1IR?{*T7srJoEnES=ty0m6uf>jLrsz3VCc}0ynpQz0${G zz@$q6odaLXO3%erGaihpwWBNd$QHj6J9YMNcqZ}JmJh#8`@GWvn)YvWt2f*R+%V56 z%?~%)R)*D#X-*fUBZ;Kdc{Q4K6s7Hsk2V5iKhQAirLZM1$sg1qZ|OT`KCCOULeu8V zn=^Yl;Bin7uIjIY#=k>ONSv$dZ4KomdZ343O;)$9mM(X2Wzb5iXVxKj`UQIdXpnAc zHP|BBy~YVIqDVKS>qv3_t30-f>0&1)rf4;_Y86kD*-)R4XwgE4AzC!SudA$ID$MiP ziND)~@!mC1TfU_ERzOAB1CG*}{sXV()VQhBRmT{CJ~4jlQpZ4K3g*T@Z3~y!&8|fq z7f8cxX3*6SYnl(9)oX9I=lLx)q?Y$%OI=7Rbns!+uP8;`u-cV9tr}s{bKJc-77ltH zEXms*z=XY)&i>GDLmC{;GrkjOnia;~13EW=!7h0}K1`R~<(W$F{O!yIkON2AJy6j! zILTq}$O6W3;@fpR8AfVz!yfzP2rCO?WFUsA zmAQ^O0Y-{^YZrSn!{W4D)Umq1TA3yAAgPm6qf1BIriPl;%=0|rs@jaJC>etLC_`_?>)Mx0j~cYUUj`F-FubHS1=in7pP&&n8l#{E6w-iul{Ox_569u{IG z*j%te^o;L!XRlhGakHZ$DYEwZ|LnVnns?$nYzjTD}>JdbGZ zU44ZL7d#ptesKfj7XIf|lR!?}Cwt&(+kd5?&*A8g=#YcdO*Otxo)L(tM~>uM#^A*# zTiB*ISNKL~KnNIoCZx*vemohnXrtUo_gsWN>3ugit46_(YG3|Zxnb9XqMC}D8ZYVh zop&?}bPiCeNkM}Sw%u6>rnb2|nGv#1rjwy4rQjGs6!rD8`lE}mOd?s;B&TDLBq?-* zzExGzW^~*$yoW3F_MWvlIY5(c?SRicvcmD}?>~Zlys|p+tRjN$*+Flq`=S=3@KeID zz#2FJxsr<1|73n!!!Uxg!sFk#9u`j96$hBiBq-+1#9}8bO%Mfhe5F+b1#=OqvTpfI ze?9o$tJS!{S9!^_c&HPIBNj|LPgH+$*wCn48Tc;|pu>k+(p%}in!%5<%(Ol3(bJsJ zZ?tZk&widve~?QoB9qhleQE_?%DT0)2ZCYCDCXk?>wBNGoY0Z3PD7h=Z!Zt!NDCG*L4VXLK@ zDiI0u0qxZ|!B=sw8aqDgV~R3QnDY2l0By#-Do6Up_A#y`1f5VD`$^rMhn8XfTpo`$M7N)8S{kN0 zSC!`Z2R3np5W^O)pZhC~o8`o?a3GAsvgcvQvdFc=SK2YFZRPCCPxi~J^2E!n)M)Ow zQn5w1tG`WsaUQSUoSve0N|vs1^|uC~_Z>l#Vvt!c>6x&S((1e0#ByF%E}L)G-168` zZK1`I9XI(_NSupahS~LQC)v1fZtfmvrO!OgGgcW9zI0_6ga`01%jRatSP1~pv>{(Z z{B{8u;0`Qki2-?Xr=Y#JyERYpj6b=P@@blT_PH`mNowfs*y!S5StQ}|C!f|WpCZ~R z6Zi;LU@6|8f2*(o?JlW7tz9-Vi@m~cCak0^m0bb}Nb&aY*nIP=r!%wUoU1lrbSakr z8(4S#!->aMg3twti z0iqS@BK!xD(&q$^vC4NFYPn_+>d6jR)`q|92+B_}9t0D1X$AI{l8v>`Rp+u~R()2b zjm*m{hpp(G{U>}Ut=?u+*lLhBVmKXd9v9>klrhR(K)l~8oV2<=tsZ6CrLw+D&k)wE`9hv*E4H&QP}c*N42?EKmB zwiV;L&cLQPbO9S=3s8OsT;2!cCokl2dxoE5L0;r6J6HP4^+fYl`rPZAGLVvnTYaS5 zb<}60|1FBD@?fn-5()_Oht|nQJ9B~g;#8i6$ zTboH1^Yz&O2=?d4XJSuPUZD^SYWqH2MMNW{gD6S+V>ZO8^*Q zMQ*KdJSnOo*w%W|H_+L^aZ+TPXS{vZYi;mk*Ezq$u{Z!T`_itTlifj$QeqabZ4xBx_G22Qnl(d_=v#= z^4lL4TwM?Vz584+%TiEba<}FNCqQC7X!*LJesUxoyU^&)I*Bmqm1Amnna^dsVeg3G zw7t5y$R^Fwk3LE`aoUeQUe7*qi()zAP}d@$8UGEQh>xLL4Cz=C=pJv&V#TG=Rj74^ z=T9Y0LtVSBxJ?pX+0Wh|VcWC_ICKsKq>Yk?B46{}MZ;|+_QzV69XcsU@ZL9S-8YXM zG$}d|!(LA!PIkPZ8O#r^3qslC?U$!dmf*)bpt;IhNM(an13`BpdsW&yil(#^(BWyG z+y~n5R>Wpz%&jm?e}*sAODb43J^7MUT(07Y4;RmSNkBh*rC|ni^d%d;1CCHEhskHp z`vCWs$^(6qG;Y;9vg%YM2-|)M0;g3nkV=rIbr;CJG*Ao>_cD+ zSagR;vm^P^wb*+a8{gbC*VQwMF_w_9>PNzZiq0`HQwD&VM42?~&|}&928G_`aHjqU z^j%&d2L zHBGHc{#R(#qp%GZRYZ7*s`PPqe%9N2z2f)cry7X0r%l!x4 zeOCsy3>m>*({w3VX7j>y%q&ONeCu6Q{bOo;&K)3~L4#dATWvsx_vM-PI1b0)*=gE? zH^@b#fEw91zfCjLoY&41u0mrLLK85kp+-!Xbnz}}JJL4yG~0Jw;j#7f(9!kT zTHIerAQ-4^rfE#ruNsZVzJMzd4S$-KocTz2FQ!Kg?cyF2VbMH%QPm)bsI=oQoLIlW zaCJ6-%^NDka99`Tz1Qy((>NL?1K~5@$G$k^ZOGouQaumT>q*~jt}{KE9(Od5U<3?^ zV-wpm`+Npri-+dk+A#|PyPjL(6dR`fuXI9ZtTNxJc&jXDXR=)0{C+YM0DJgAr=L`Gw7R4vEV!d?3Uu`ln-ZgPH59RZ73vpW_lUh!_LHU5JB~Gn#Tcets{B(R z?YxqN9YUR~dNYs29yVkoAN;mDJ^|zT5pO)*hIbO1wt2QDcAGbZOG}?iXcVjt!Q_rQqB<`%dEj>v2QjSPllGFG zdjvq|zUF%cOF}etUL+VT-QLw2_m)-bh`Y4ios=imjiBM=#jyn+*RkBv@wZDJDs^F* zdO1$^;mrO@3b~7`s>5qcR_Z5KTdQvc${Y}r?cX02H?~&+L&2hWVtp0e{m1mEp~VNn zJiutmph}di1x>!>qjD=eEE8~Ftg80*{`xuMus9naexmaDhK`)*0B}1#$yd(Y!kO?g zjwn{9tjiHq6+#N@{ng8R=&qJ*t>UeATb08T+^Dn-lWe@m8U=-wAS=rNW#7BR+L|9k zEO$ahT=-|&F6rqX{TJHbry0xIPhEx8C%q#up{qgl3KJ>${+54-@r2$xy$`&eh?wUt z#&*Xfe+*tpclRiznjr46rDbJRNV81%i!TqgMlUWdt}L#qc#0|}&X`y&S2Ir+M*LAe z#@a&jAG~;6(sV2S2xTLj;H~v~yw?Ug&#sl{%ft>G#TMp^H9W55{4ZY}3sk}TjWn?O zP)u{Xu!@S1Ubck^bu|YSw^(yw5*@dhbSWPXkL2^^&Axq;(d>h6jQ5FBE>Fs+_NiW} z?W{4h(CkRjIQrJ64-G4AN|M;L_S`h5F$gb^*2XqmD{%1SZ&&k9nEvU{W@<(e~Vf>&{m62 z?d~9ak3$QNvktE5*+@Rt=hcvr!DmuugU@k6LeA;U%y=H&P(M5Z&ns8yk9hsut*y+s zjbrlot_EVhFe!2t8Z9)Cd1CUvoV`usmEfB>t83^g(ATag`l#!g?CE7Hi!Y+?98 z$RuzkBuXHpLX|nRo_udiIz;ElkZk*w^M0=O&5Or@c4fNj*enw;M+YkyZ_}~whhC2A z1l@aEFZU0Hf|_pn40iFOE^`FD%>Dr5$4X*9rYh$}#XWd9xg#Luo|1%U$cprxEWz1{ zDglliu%*5}JMr)uq`LL~`l$p_n{eL|ip?u3dJE@@bn*&kz9hHZ_yjO56zY-BRs~T( zL-uxp_U^BF{g50NiwBZ~5LZJn?7TY)C_NyIj0PQhyI1e_X>lkp!MpKNVk}f#!u_5f zh*C>VuEY)(1r8e{Q zNM7lAr;iD+N>5K5*A3vGb0=-r+)pJ4Q^$gF$l!KhzDwn|PSs|8j3-|zR|4HU86jCq zYSe1y5NsqHWmMcy7}4_qa4okxW(YNo`G>X1PC26<`@@Dy-+K<=&JKT4 zzCS%H()j_xrU;TPI7^1#jUnSGl4Ce!eGT}355cq18^;XI@E63Ehs87R*3mt+@LSHu8(PbhheENq>;_OVR%t4 zwfO3ErDMaI8f6{znJ_o8Yj^f|Luy2hhhE;^@^`4CR-Q<)C|aKYfRlm;dP$_(n)h#M z2wE^4ocE9oOL?;D+~mc=C{lH-7yF7l8gp^(;&OF`v=xpfGTs&5Y#$E$F+8AxG_Xsn;Ns-_i8Hx`{kzdY& z?0(S2l4n1stDet|yaDlCk3(l}wrJ|OE~k52|BmQmG+tcY*fbE0>y-&Do-PzVkm0*l zLdo8z;!(9nW8fNGM0?>@A>i{q%Z}sk%fF{&mdIwGm#o160n#-24k{wysh<0SV4MyN z5=YKLr2CzNSxF^8yzph~98h{>HcR;^s*U(6&541do1v>(2l`N7hfdLEJA!27FM(DU zg4P=hTnbSXz1Wl=Yy<|iy`xM=LLFj4yF0Ny5P$Qu;p=bzOch;AN*HN?U7US`s0}LACl!-tB?S@l)tX`< z8QSK%O~Rr$c8`7)J?n7Km1zFiC@*L9T_e(!$0M6@tAl` ziDv9olUzZ5Yq9akUk}4t9-fme%d@>Hv1Gz3To2K%{Yb~;+@Q@T+Drq zjrpk6jp`ebO-BKzCR9J$+oL`J?sc<~ulKHoVN9$!O;*@7E}dlBJ0KM}AuJa2ov$*1 zGItSYcP%SSzNt`~!N&QvhRpWm`45of2ccNV`;r^eov~an-6p$XT*rERb8DwrfP|aaiZP3R|8_7J_*(zB)027Zl=<}5$ z#mtlrSqABVNIn#dfY-oc~5?R1Ou8TG8FYr{%bQq{}k8n!2UyXdh2 z_^s3&15oP|#5dL5O8O)LGEPN1b!B;|lrSl&B~slqMk?-4c9tmG9|G6`PcBs<^H>&+ zF_wSZYDJ^ub+&Ck-@QNT4f@b=9oZDziALU&T|BmfWZb0DNwf{M0yJ$_6iGC<0u{TN zjnsj|B6uR=&8;wP8FuXaJ(iRH>wF~@47mFlt8W|Tb!8J&@DSeTZ&;yuY%66~SS^DR zN9iQYUiC)?zqo{K)2bNDgv_|{rLV>&~jRqn<4V*J%vqMVe`olcmflldD zhbwXYI8>EB8s_r>0-hFb6a^R+zJ7t``+dGQXM8X`Ql$}XoR)F)G|x92|J0w8bseye z%1wT1$tWsrh?^V?1{)U!Eq!L*mdbg_e;hhnsIcf8G_7O(R%ahHMdhxxOHyV>dN8eU z93TCglM_56TDebW4d^QYCA<)u_CgI7`#Xd3X7KfV%=Dr(SJT>QdSnxLaG46L?= z!4-RoFcPGS);P*4xMq3#0<(7f;hadnwbYT-4xdlQ=U!dLy!Ie{(r7$v?aQwxz)~LO zPu8fyHlp)1*P=!hmfc0zH3XSgYf9~(6ksP_@*T3!goQNb*55m^cD^0NrzfxO-WleR zUO1zVQFI#^OrVHEZ!xR4lzk*cUOA{ZMF^4YOQCd1!`TGu5b73xG&#t}`PA;2`6uXE zD8ui3V7r)wcZXQ_9zK6K zBOJ{(@}+-Zf{q0mcM%hR`2}cF5Zz(Nj-E4Bxr^0DzZssLo!uI#7pE$L=Zox#am>+) z&Y{@GE{r1&kIpZ3xKL1YW4tUE65bwZ{VBhtA+x;njUew$E-T$|7w8w`F>ss&d}wko z#__>6F63nO2@=fNli2ZYl!ej6LvRu9mok{Hgo@#6fSvyUh3@*ZT} zw4y}Y1%fqq$Lj~C8;iuS0xRb%j#%q#%22hdBrgtD?$(U_S40y*nt%R9RQ$DXKh1=~ zo*UKFIDbey{v2W1g}a1aDaF$f%PKJ6 z-}^SeIET%H>T$*39qrG(&lmHGgY==2rJd0|3i&Ov0q?`63f~GR=t&K9rIIv}gpweY z#!1=hsHvlWUgges?J*DxXs9Jok`CWeSpaq5wZ~E~$dONmkjZ>KLTHSr<5=YAL00s& zBe7mO^L(|;uAR*5OB~+Qk1pWWQ2MXFP6L8Zp5WCZ2COV!(~)*+9iq8BI4ipI+@JF> z9W=Nt-I)~Tr5tu4ZtP8(8Gr;J_AOKHQN&p~H>?C5 zO<>X*vYzfHleoW?I?lakll$th@+mI&f%2ivvB|Hy$4$qsx}Xqoh+AdyKd*kS?BO{0cbozEVIc1=cni7uFe0{KL2$G4(GTGK6_#~|R~drwo%^IO86 ztMgvls=jt!l0HtmC1zX>vm2Ix$S?+**?dopx~eF#Mx|6A^WCVXb;nJW(Lwce*H5e# zTlG>a0NN*qlrXxGM5!zB8G=Pl4ekILw5|^>b8_VpO}A09iQoyOU3=_(T8$% zxr%HTto@i?D}9cg*r8zBJlG#26HrTSnN{C1xd=O~|Fhirv7=v$8H+1WkH|F0n<=YZ z)d=CliOq8Ww0%CnVZL~~?5qf-;=Zf)>&o_jnmGR8eb^_wDtfa)E1K^E33FH+$I}+- z=F}$RyG~>{iD3w@D7`-}`KU(t_Q8oIK!|rA(|z3^H3F3_?$0)jiAEeyBdd$FUq$EW zJQbxs7YeHKYS%uQ_cody9mK~Eiza=NO|I|@ef%2KvDeMU&;50f$J;X@Ou1K`q^Y;l zcg!I##?N9CD`LK*pNXXj?>v^kGdm7s{-lW_DCg&X`p}`v-6gVjOauXTV%zJB%Ly3; zW$zO*Vfp=$bKggEb0qWYb&uFX_CD{Lc+6d0KT6%oXRs>3N!@NYeazQs;p#okXA#rF zcmbxSuq(CX)>EGwBu$Deb28Jmiut)yXih3?;a^u#E9n#mT_%F z!T(g}GP-$hCY<%PYd$pduCxgkKPm*^R-TX@IZbWZUVe=(!PFlDU_;jsG@Ba#afkz) z<_mREgSGa=ZMAgcKQEW3Ey!XUxR8M-H}E5If!RLHh%TPKB;SJ9vdJ=eY|;J;UO(u9 zj@WBzqdc(ar(V(SB0j=qpaizPNCjtDor?F**sl9&;y!nz)6o8DDLt!Y21W_VKdRH8_mO$g8{!} zi+bh0jY&9_d|V|BKm7Ks>gS3zc@7x`;6ic~k%d;+^w-?q8ySyZi>p%6c^9U}B}QLL$h4MxvzRsN?1W0IHzr71`q!aJJfCFX zqM9AO$(XVt4l@mlJb?iXo_MEx?*l};L7VsF{$$E~eNu>`6WFm>jr+nn)b4)1u}Djh zr*~c1y1f(X|H2)r{3xAm57T$4>2Sy&X6cMmaIrhv(VaLW>MhLz<|dw`kd39w236FBMvkQ)SuP?30#D zR!3aiG{G`zav{lcD$n2Cx^4sl8USDF{o$ZFiHKkJ66Ae%y@{e}`xict$Uu%1sm&cM=?bB2 zVdXd7(=ej$i_%0dsXqw$O?lK$ENxz<_2~-c_txH+{UFX8Hy4tNCnW=Ib|2M8FMQc2 z2DHkbB&xvb30aSzrk+k~?zkwHF@LVsUsdfvMhcp9fJ0@5r@YP|ndt1mC)KD{TFkx` zX9}P-tSfl=3eu*J&KVtz;EJvMV*lV30HfWZVpXSxo}M23$B}l2r`faJIt-!7pPNtY-!^KAz1}FTxe9ow zlHI%pt%wLP{x83Xfj{KdJY)A1ZJ66gmbfs}>aEuE(fOVQ7jU^0jJLQJMJ_LHE8Dr< zkjlKHvQZl)y^|?sHSOu3#uZ&M7~uYyFvyYVgx6#l6&GL%m$c`cLgEG-?N@N(r(!m> zS~;4`@&w{WUL*H<7^^UF^qeTUinHW;fD<=L&E61Yb-Z>!-)z7`eyj@?cDmJyDC5*u zBL+#quVELbFTwB6N!&Ur%^b4cC}lAj(E9)h%^kkiQLPjvuxvvUY#_E>8FA@g^f>p# zo@s|`*>rm3F;V{Ti!$SFp=WtNB#+HXJTmO^k|m9ni_I|$Lxn;{G*SMtIxMHo#;jON zzI&?j!LXaMgC36G15T8j&FD$HsiB23ewN3!>~&>Y^lgK!whI`X`C+m48Nn!eD(+kU z{=%R(*A#*afZz9u7&N~cfeQZOa8ovK=BIEue6~Dtlaspp-H-19%{i4#hi(^RGH6G?jaG!-+|d{GBe+oysSU6v#F=Vf?__23jV5*02&_4xc=*>w)faj~dK}Bv&M# ziA!ix5#3EQw5nFl)50(TD%VHhn5dPeiHfy%%FTVj!)KHe@PUXwM!XKu64L&dkI^)^ z5M_9_X3A;*Zhr)z4dY~>!=hxxs^=57Hdy$Yl69FST#O;#xsU=O#RSg&EB@Pj6FJp*F=<*dx@t_lP{6(P^P1nAw~IyS6OloH=J=~Bz{-2|rDjohr=t?V-cKh*471wA|x ziCj@HAAQE`C3zQ+xO|FWPw>ti!Ai&_$1Sc2@|1f;%2mprgBW>o#~h%`ORjyrFkkXH zf95{l=g-r5RaH!>J7*eqT%rzuUHIgF*nP-YIai11gH9hwa8=C1@0AWLCD>YBAtXvw zY7UMVHu*3A`QoSRd~y#Xmg_W+W+zsDhPM;hMsJD{Vm=T9rr8TSL+vbZx|>RiW%`)4 z%;B@A^GXB4T6wm>SFU#25>@J3u<1Us;ZM~+y~15j0Ho<4*#m<9ll#Efejai%9X^!G z+d8dyFe;iKTs!)9PewRbTyzY5mPT zYad_(_rUo(9CU_EVI6a8*8yc!a3(f#l=ch8I8>h$Bb`o)WD`JUbL>u;ddvf+0qA(8 zkZ$x$R=6IoT1E5n)UZb0%*-})t8wXg1KpUrrFZ~4DU^SGLyI9X!BAUXYTD;(&>p5{ zO`3!b`5PNh<8((tR3SS=^6*7_n-IO1~|KrPuM3P*e~)`l&10B81AO?2R$c?AQZomLG)!q*uJ^}naN}4HL0KHY1PQSEcQIh+DIKO3&79Ws5iNfo<@t>PH++b_;m>4(RGzghfGSW0dhr z1Kz+#%fAK$OhTz6s8+JXHj9yPsCykXHvXM@%F#-Vk!4kgEz3YIG;ik71#FQ%X>;{` zrUdqfgMbD}qBBE`xP^5qDLM(^ngH0%0jfv1f6s9e@v0cB?l7XAmXFgB57a(;%hlSa zdm+e)_}N_U_FSQKvncN0@G%NMud#N!;gs-NMX)fR0T$sYive!&-Sis_M+tuy5q@jDvr*E50bBi~9Y{!B1`u z2g+u6k7skluQz+nt)@z(`JU4A#mBjRlO;;e^@b;kY$Ua*XvK6LMVh@s92IDWy#V=> zBS<1WTdjDS2)$Yi(8G}+4Po@z_7mOUZ+25a6(~SD4MEc#@9R434>i=r(EY1}h zHs&%;>EoF6<*BdSh2PYVvkca3>RHpsk-m0C#v?PUI6N6uL5)MqL*Bo>VRGN)9zZdw zCJoS>E3>;BqW7)Z=y*SALlx4I(!UQiCbBDlYy2>3TEc_j${S@shF!IJXE?^vzj?`K8?8@Ro}0-)kuP=JZN|GG4$n zRVOS8#Dw!p>!}~uLyGJzDpZA_cBRDxWuGH$Kk+e=hon_ z*2{Aems#2?ytB;GONFp4Ot_DK!p0<~w=`FxPm?LnI;VrYoFs5Uw--zk@#>Gh;6Htg zH=1GE#St&EpJGvc!rr@{;YM$#7fjxtO#!j)*k-V{f;}P01$1DLOQIT&_%C#Y{`cbve01G1(!=*XPkDK z-CIs_&%NE56d~sAs9PENAE;V7j4eeIB8I-Vmdj~1CWfk;*9M6NhYd=3nC!O~eIJEi ztrZr<=EP}WRYb^bNNMf}9S`By#qcd%Uw-{a(T94nGgVDk|FqvHTNe2M>5x2=>!$cE z^MZ}DQ}D5)$h3eFWYUR-+hDAw>%kKJ_!lJ`BbkhDc&xW$z?YfwriZ8R58!mh5}rz% zL~|*xd|z#9Q56BV_e|&}IKF8&lD;_uq>6nXcc`mdOP61n)$sdWDRVw^eR#r>!lpce zbs7pH)d2?X7~5M#IUac>F$ zn#@r%QZMQzn9d@6P(FgI=Z>NtF%m}8UKTe;sUlw*VbME(z~XzQxtJ0TVjK|H+l5ow zT#w!CXQ>x$;e+5y8rs8?ceV}-hVLv2GO%gLfV_V(llupFfqR`x0B~NWMqqa5Nw21C z?uaL`bGXv3axE6ln3_g?qy*)xlOV5wAY-$~+rKd44th^E79L{S?{h#yf-- zp79!u^*Bbyu__gukcV5PH#v!#qJEnS1czAJ(!RpAn|cR3DmVgnEbpOEN&VXOQiT~j zNew>MUKBqg;HrPv*V<67es|FNjWiY5xsaWL@jemL__ws?)Hf1*SM4Z zm==FT(K-)Vz`M?bbzhKc(HMO}NIJy0SpBs69J^rNIGlDEKOHNBlr3QH7|gtS;U&^! z#gbzDD!Jx!+>Zxomj2%@ea^WOBxA`KNQTq&7n*C?%7R(mfG~YWIlY-(mac0xTaUF& zrH}aNdteSOlG+ONr*ya-2aUQjk4u@7{JC)`R~=D{l^&=`Optl5Oc;Shm$m6A`~FML ze*fteh+_Hdi=(+}aE9rAKyk5Lnn=~{YXyn>9yVfqVkY8Dy#xEZ{vsoSp~HBMk#U7v zU~*^zo}IgN{R4z*$VIz0S*o@B`eq>|)mIN`?{Q!m*C{`hB4F$s#_Qm0^k{Z ze0;gG$JrOr_r1fl{*9u~3#;k6degW-dEHr*BuqkZbt}fO7cr@75ZbLOez+4O5d1^Yq)v9?IEqXNK((;<;kF(L`z`m&C9hZL3Cf<7uZ~&dtS_vKHHAz;rkw0@csGud zcXe7@Ta)NxIyUzV|2m^3O`A8cuDqPbqy8p3xApd7Q41$tR8k%;LlIEM_3Tj)u=Ul? zlf4h!<7%?g#AlAq-XhB$TLVLFaT3i89iI3T?>urNbS)?g_(_1Tb#CU#xpVA#hAh%` zfbnB}B&LRbQN#m4?+o>>W;A)&FR6z(xC_6nHja;cu^H>I-zC$W#!9^Lrb6bY6BT82 z&6;>Yz=_v>=LnCQO!V==^m*OxlH2X4AULbIgvM3gwPQz#I7LrU&y^_GxF|iYzO<7O zCp%BgwXJXSbeAo>`F;Vv==`%eU6k>aS#??qgPn8lzci}m@3%$_EAj%NWA}ED9RM^) z7rO`^KhVnUUU}9JYk$C&2d}PvfY4MinGdxdFXUSG$9?V{i==ISl;}&HbNh(6IaVzI zo45qQRy!wbO+n%Njn#dlZL7uK;N7PNg49aOXX$Za>9M8%IwUF7)d$kBW5g6@=tuGX z%lZDMvElrV41COy_ujnC9AZ$0bNa7`V-1uX;`B+oFD_|S&sg_7-r5TWr{J93xzzox zzbu$m2s+ezf$( zxkx>5Uct3E=#xh(l9tAB4G_YL3aaPLmWox|3REuYTzkl%OPqF0;Rj@^hlk zB?)c=XBNeFUjY;;?gu=rcs{GuYpc#Fp_WI{e%%p4<#vX11L zn?ntb78PgfMi1nc&v;Fd8yxJ6)P@swB0Q6yB3xLMYl(9Q{mqg zS>jn_k(9l4FieE{vBTx|US_~W^*Y`M2mWd%HIgD~^NthW zU`+EP(&3FlT9V*TH5>Es#f?E8*r4IDjO`+mqdBnE`5eEmm!77QE@WYh&lbXP{Er2Gu_a2eJ^(@92l%hVc zgqjF< z+m#}|S5c7V=6ENGO*T!Xs&J3%)1xCfB5YABNI)Q zleLdotVFej_;VMDh`v-i(U%7FKKOcr+syybol2DWb@$f#8+KXMd&`~qof+2j)m+Jm z1;b}eEnHe@z?0TbpOg+Zp&kwQU1^O1{08)uoKgc;NVoiGMrPT;e52IamqtZcHM;;n zw}{>;7ipoazzJXAGB@B^_UfC_hjNhjwOSk1A3&=426#TDFg zBaq4bDU>rYpK zH|KlZSK@22IXDq2oX3`k=qqlj@pFhAIr2|2KYskbiyO*{X`jJKklY|^cMlw{2?;JZ zPf7I9LAT1qPRB5BCZF~K_+BD4kc^=!kiRe=#DUJQHdWYm$kE(9%-}*q7p*A1Hj2t( zCVE&7Mk^ORJaH{6>5U2g0i4~GK3lKP!{Sllqp72)N&mAq+I5PPT|U99+UU%cpad@* z9Nnu_qn1U}LXPAHSg`&U{GBSP%=@`05bXgEG~4gdm6bOunUJ{aihN{3>5HYc45PMw z=ZO9z;JCo_pwwEoKN4=sVs1he^Y6>#84G~QC~2f6g>?2}>>@s77D-=}fjs8BK}5t_ z;j(Us2J5EHg+GH@sT{9^k=!5kp$`baB-OZAqx@BnnZ$4E^j@zlF*BJLh_1*|?ccel z0uUKGU0wJ`u_ZA#;r1`WKB~7`Hy7s}yjPNC?Y%yhvFO36x8f}94<{2(k4i#x-~$bF zaKGZ<@Pxd1b_9O&JeLzE?^|N#9^~;PHK;@U!0(*Qjx-AqZx7EC6Z9{ifR_N!=0pQt zF--%Syxc3tzV#f2AM2M`@Th3~L2HV6Y^b4fJnRhId1Q;3n-{OUsQTJbWH4)KN z03b=pr|8h-p#Zl%v>!@38PcM+CPT))C>5C}aY$BuI*`@^9IR)nm!#9XWFQ7_8zRVv zZst7CinvyXDCxs5{7op1-?~>or;F5Qt6(^%P{>0u>UK3DzT^bkY1LJhM1~aX@tIs9 zJ0N~uAf2FLK^SJygO32c&Zq-mjG3Joti(6TlW1u<2N`WDmCq3Upfe%^-Y{g`0vu{Y zM1)W;wS|fYN^w@Ut4X_V1mBeXT0C_9ZKhP3FDzV%l;|Ni&Z$pbKnBvS5B)_rP1!g} zVG`j)A1)=(KRBRGJN3K}sHxmdkU{UohTDFk<~&366PAC}-qqFRqX8h!dC4iW_<8^N zET|rmg8otsrtSPKO6{pOR-JFYazsQMzs!q===k)OWho;her@1KWt?_n67ic(V94Ct zgq-l*WsZ6Xpb;RtsoMPz^F8W4;xU+~+xYK3L@r+8{q$P_lxJn%-Nq3n=-R1k^UL=u zGbh8C{rR&*ci>d>8d_TWnVAnUMf>0gPjG3vQ}GTSarc9>)c0DgzxVR*icAL0SfmY< z-0{PEzv>(bSn)HL9F5c20rS;6>qxvuF!J-e8b>o{1l~CUX-wXi-TOH}WGcWWjfE=!SSDC~u!CSY zemzaH?|d7i$mJ54O_+A4ny>IiI)JiO;*$|7c-c-kcCrGnHT|bPStN9xhYiZo$s@4 zXx1g7+Nl|8?tHurBO)s92X=eNATQpl%=nLH;PxH0`YQuJ(}8KqAZ%xIi`WZ(a`p2c zxk$l%vsbvIJ(?~CU&G%T^qaCF>(fP8&40fspDI1lzg=i$SMrf1)#+4`*F(0(_fzq2 z?M6ftejAjIy*C*6#FX*3-j`d{o-S%o%#9em@bvj3joWA~9L0mX@vlmnGOTa|`xl53 zbuuo(*b{PbckmMUO9SkvGzQ@99b4pe^sPxg3X-<~yZ>5enxQILR%B0V%@V*rRsxv} z=bP2X014KW#h)Ght_fzhg)pp)FF-rv=jHkBZXUb(T|Mk(^(_8o$IsUEW7KUw-6Kv_ z&LR;|S)h>`;3E!#f%i*9#DwTtgv9Y{gsjJjSN{%9d{$B%W?q&IK*d?%L`3`v*L)y& zjLic<{FiNg!NCZiw35DWi!sS)M{_X&qD`nVyEMGF%%7%z&H$?@|LBL?n z%!E5ceGJ`Wp~cg9Rcz#eROkPX$)>O+mm1h#ELX8mtoikU^F5>)K?J{O}`YLW%Ku(~hs; z;wwB5W~yw?Ns5&4^Y>o@^iSEY``_Ds4jFi41X|ex0F7K=Cp_E!)|Xp4hydWQ3J^owz8)!3BbD_MjqC~lRYI)4-!^+ux_Vv3wqF; z9TAf#)-OiaE)e}x1PC-%`Hi1Q5&X?x(w$tk=ibtUIrz#yga6pgE@`0Rg^sqW%KOUe zeS~hSb3_+?##sZ^STX?w9%!568E=QtMK;3Cp>*1_2}?Yv1cD;0fRJsTt^xhM>FNL>acmTGQ)!Qr#Cbe;W4azb#Ghb0=D4l`K75Iu&?G?`H=yZ=on-KOh@1s{5yf`P)7Xl&(LR-gVXTS0pksCX|Cf!dhbdSW)k@Qn>qzT zB=`_OX~!W$V{*DNfW1badz|Egt^u{|)`HpLy@{eyfqHVUQ{@!MuQJB9|Qv0-_q=~eWWq$AP z$F(}yT80)(fB$-S+tJ-8IPvLbCJ;!=AiR;rU$OJ}I#0lt_jykrmo^PD5@$u8{)31J zRC+5}NHp)eTQL3ahq49cp9`=% za|D&hdw%Z2R=boZID&A_V3aVF@D3( z7vPJ8)fyLz%)gZy*LI@)JGzHK1bl#8dSTyC-%UJjp4pTjUEo)HzVO)fu$E%-1OB~# zPayb21^`oD`N{|ULKKqyeYSZmQZzGg(K`5;)A-*+2<0(;Jh}2w$t2gn)4DdXR-8)q^%ah<)A89p@R-pPRX6Y*E{ z5?DkIk|bJfcW?XG{~r6|+9M(Z5{Sybw_$>oJ;8g7r&lvz%{et0;P2Y}Q+Mz5U$)u3 zAZ*I>#rtxnS8&hZfO{?&5-~?lesS?m{Jryk|HHT#af4{iQRSyAr`EpXg>wYhmT`(mK|NeC-XX>!3c$Sue zBEnMgWDUPbV*fp^Heb!XQ+$-ahQsoAq7r5%YUzKsTmYc=0LJy#Q=A1hB;k0|*-hf_ zFl;#+OYY$Pv3k0#?3KCs+>)Aq59>%N1h3NzGrx9+blUxYKc`Iv9csYv>OY$Uk;Q^X zO=-65zl}>~dTO^%f1Rmy@vjBK|1J7bJWxGb5AhZU5RPMgul_#gUCY1?j%q8L2Qlv6 z6?hN0`s&}YrN`pzy3%`5Se8q`^qpQ%YW|GWz7lq;QUz_2{U%r~v=~ojwd=1^@udiDTdf1yKSW z4N)XcRDLjnHqc(BszWk1q&?f@ws=KA{t>duhy1j6fNM>UFRZr6do^86Gy#Mc^ue(so6ceP$4 zFIVC#Wr-eo;19&X;O+ZQ(4rU8;?3U8kd{8BMG$LB}7O>uk7zRI9^2a5`yvb zn&;_kR^UjI)tBE`3!Vr^}GTsqsfULY<@ajMgw%bAPa=@K0QHnZMHuD+o%MSR|9A1DtA7MW^8suiK`8f1J zD=%Q&S3{z_PirPnqgYx9kT1C*vTHN`B^%BQkS?7Y>wX0SNb|Xo0lZ&L8Nfg?WRXw+ z<3!Y531ufJ0Gk9{d8DzE7s6c!Ffi<1IQ=w+g6IO$r1|UGqk<7+q@yb5XE^X(agw( z&-%KS-q4bu2%5fPDDIpkw7mlICjmXWb=EPyNdW6gpqLgvISo;>Oo!%=E-Pd+ux$?dN+FGpv&5{G!@4|% zflgX8ZcQpi4}gDtz&<)vie0{riWdNi?@+kseaFIhK$3aD>40#sVJdta2ph<8=B@~0G(j)qAO=Npz<>T8`!6b27s+xMgL9wGdA;pm>XJ!NkQg85PSf@ zEH!hVHygtfXGxdJNt^+0|D^dKIl*LWptMjx3M)X)1uAdgn9mDv;lyot;@VK0OJ7>--hS_s_*2CMZY;|ot<}Zr2J;}S4q3+LbVv(->Xi&NE6$He|KCocC1>N zY{}|$>|)J1ahTQr;b6~R>Zb2gXLSbXyx3DS43_hfBit@}etxWn{-SGj{!Pzan_pQ8 z-}V#9ujSt@j6X7Nq8x_*2@K~jQ)KhvZ7bw5e|h%z9{8n-Iyc7)3y_SNXQaTuS!}SIk_tjF?=bu((H*&?YF9Gx#FU*`t+A;Jh(mQxHwvn zoSN=g&2#}&zClSqLCRoYeE8_zuj55@I4`oIJ;q30wlL@mqHOZKr9CqY~Y-AH)xy8auNe7UnlBuvfn z`{Ao+wKY$1rpo_$ew)*F{_^W+FaZS%nknxt@qP7R9fxypTmRa|3{@!uvQuQ80tMHPHfY zm0tmLfdvr?yg~tf!Nb1-X3$i0$F((~_5n1XZXW6P6!<9k3%$$V6Si`1Sborlq?ipd zc+ad)bhd1?m&+Zo)eu5xv44ONh?#5q6^ngjdeTfGi~aPY-SVO39uxEsmAQG4oxm6H z+b{FI4I4J*mto4Vps1aOGPv5t8qz~d)fAV&cNP1vS64S%u~c&RB+=}yaen2+^1v4c z*;R>pyc%2ZRw9#>vB@OwPQ35J#SYo+)QtCI>g?+q)h|-K@Kc<%22-7OP4R1_K@#G& zMu@)_?CUBzInQF!@uWgOP6&!>6f|D*w z9p4NUZ#9W;BIsB4!xD>jRW39|XHt6F`rON}**)%k7{?+xvVVJx_wR|Tzcz{Y6t~<$ zRu~#>Z#B=p9SUaQ=Wj_!EV&t|vb_g;^v!fwxK+4_vS)01bP#R)9F710}P zMG+t;NNK~|GuLk;0R0$ef&meV_;#aSg-CV#ETU3?<&U7>cawu!nZBJlN{l1B9zket zkaK3gJCF~)J%?j72cmvVwgNyLS0ef;fS=kEC^9q>^r zqIoIEX12V?pp~|FC8PV1T(~!8w1|1G)EiM1wwV$B??rNaz!vU_UY*<~vnaTf^2fC% z$;@CQTXFY`Ccn=Ck^qixar*C-a_kFSzz+S8-2YhSp9e^nR0qoaZ!j? zLPNVWgCz%$`JJXK-wlL!Z0+gNL?LZFmC7iW3>{_VXMLJLu%n8|Ey>$-lz%64NgGr} zSLDE=LH=;z% z(7p1eU$>l@DEEm+JVIsE>ZbA&WhjQK_q$uEc@=(h%U!tz$d6ejoh= z^>onuET28TBVh3ZE(DX+4seBlDI-KDW4t06g-($JugVmr;Ic$-oFuV`x}wME>)ANy zQWLPiTp_OPn1FPgRCYo zUU8Ss?h;K&z{=1I7G&-97S0#LrVcp+Q)kQ@uPIL&?r$^tR()p?7M=33%bPrUyqA;F z_?Fc}z+8B~AqMq_G~w+>(fLEMF{o1bO@Eolp?h4@`jzh0vObvs-sDtT(P&oD!6(A?w?+bG%8TbM zQaK|=_1|oGWuM;=>ny2PE)#TnS)`W4BsCENQ*e1{HwCnC>T8S^IHg=*@PsGR*OCyz zZ+gVPpD=v>V8~l03wk_AdnXtwqr#y(thZo8 zL&`)wDf)a!gGPX==WP~p{UJ%X6ss_RkZMunH{gm#ScVl=7_)>3cFH&K}nNl$o=6%rwnE{6wUW=PQd zL{h-W@U{H%V^c!1=Kc5_AUo-8Owkp zx`v1*;I8*?dUQnHZ4K;JlIER{bPr)0&8V~4HX{&2rBol>SV%Izi6cwi&PqNE_I{4t zN&FgxL0mlr>JJ7(R_Siy>j~ufpO0Yan-98W(-_U9`Dgt+_BOt1OFndrtK)&#DqHju zRdtgG84TyioMdIXgzYAm>vL1D2vkvnYhw0R{SOfaPTr7q+0-&|BV`KNJaIuLl1t&I z$4lK+AGgIIqes-qAOYY~ z+Yw0`Q_{`tE&|0L(zlC*N^4FlR=#D!nYem`4s)7_+z7>;{+^aiz>l{}{SrJe`U>Z! zY4+ANND#wm=^PLLVT?(Bq~_v>{5Z?@HAi~K zXpf5qZLLrjyq!i88{CuHfxQ}t;xM5+4#-Vzf^*y7w)8kL+N_{97B@Da=h(FWI22-f zp>0t|*fdL$E^`U?&ei4@rmXAud-9aRbn3HNH4(8Wi>dINS=i}ZXwP29KKGgl+C5dD6Utgw2I%Z>#*@LyNrajdf#P* zPDN|c*BW#1)Xd!qLd~Y6|9HSGSlmnbqRZX@BUep!QKj1zwxT-4ztAdDu2TfHi?d3i z-5SYqSo(2k`Ody_M^p*tp&7qmU>6^=1y?d)z+6CF)fpuuw1!uj_d?B;Z}f_BpHx?ge^}=vzK9Qu{vgrKSblwWXv-poHf~YiPoy?UX>JZD zjIP15F%|JWxTsDM+24qOyX-c5{iI5Bg@3ymKR` zV9xo|izHCFzUu1p+Z@@4^Eub#!Jyj{*{#fUKbv}T^Gqh{yih4z*iicddDIQs6p$&H z0F8f7Jf&-+mh&s;Yl!+dI8$IZ4 zr3fw9O&;x9z;1u&s&eWNrgckT@-eIt?{`ojg-@D3ikRE;qzWN@;bs+K3?$(ywNmw4 zy6#6^Kz!d!4gI*@=Q=Rmnl+x1d{b4kx_=FuDyOKy`{Dy{T~Nz#9qP&QZ{&D?*onmdB7FD|_ z5zwb#6k~CAa-pn#L*!T_`LfwW`?hYL+wOrS#rjqZ$KJ?M^;%{UChya&)fedd5`?)x z!hqA07-d(j1r8k6WdMa2egEY%Vx0CFp*0*&q34b%#39|G2fvHX{yH1_Jd-XjLTwjZ zqAgFOZ*G`{s1L-6A55L=-6SqFpi($n2b5F}F5ttAzgja#@=X+>uDvN|;~rWsdo&-2 z-}Mr5fsVU>4C`PV{#YYfz4lH4E$4R2Xe6qd6Z=H0Q>Lz?#h}MJo^#>om6O(k!Og>n z%K7C+XRxoC)M|+nl$xVJLisNzs=&wROOklg25sp@Gti=o zaVNO9-UIw8&-cMuk=nP&$D%E|>QfP%r{QYm1Qq?J0@zToMQ%C{yJb&TsuLuyz8hYA z|M6tLd$jQW7%lDg>y)O;OInfRAD@jkbDAOG0yCc3qiR_I>y)R{}B z|K%r)<_EQ8Dmv75MHTqQs*V-i4km|>?VHV2UDFFW3iysxwnJ>JF>?g7U~Ox{rUg6Q zPO=$l3kB>h2sGrI|8&4xtiydj5hPf-)gACdK7ze|>BK;7iJ6+jArog%dHSgOj4p!ZL9FLnEYc`F2)3?>8s26dz&+t0k=zua~dd{pIsb1O5DBL~qUl0Y(_|w$x zAsMM^YQ9|Tbk-sJ--f&7=Bne^9OLAZP#*$y&q&Sn!c|52+YfW!W3bB6bBWAH{T-BI z-_2bwj{H{CiW*LKfuAOds&uhH-I3+DB;8?EV zefF25Ra^OTZTNS+o5LAXdy)`M_hA1&biBg+k-ExirgxE(l(*?PO~y<7eVMYURcW7% zalG^m4vzj=tzqyHNx>SlmqZO-$E{OL+_nu5`S`iR1}!M28t8e!lcC3MCBR;HFVgbB z0H@zA36lV64BEPg$UlKDL2b4+XKYF8+J7BH){hElGrK@njJmt+nq7)Oi^em^7~dKx z-T71%g7cvIDw}yVuWcWXa0BUuZn1RfiyIWjvUvB1tPZLLDe*{Sds-{~N{y=$+AlwS z)a4ryessgNk^}hq2k$l~TYu(kfkDS4Dmhv8yEb6-pQ_35bW5`VEylqkAnWJz)v38d8;qIL{heW=} z`H8sUk*Qfj8oGRwiEg2!nWA4&1@XV6%axNbQ(2SV_eyi#&C5NV>v9Ft))fv9A{S+D z%?1<9yie5-_Y4szfdw6|?vbNBli||W#9eIn{RVI1+t5j?=`?LLtLwy5Z2Nb3w0Z8I zYf~DzGam4;IjI_ozGeRXO>Y&-ZYY*N36(BpFVSRHZ4$fe>^ea=>;H}gSDL??oF*|! zrm8CKiex$g&wY9S{mz3y8=BIMvY*uYA~WxLXm{%3WgfH2(AmHA!vm+C!Qs_EGj)!$ zid4v3IyG`EBM1B@eZiEds<+)$@haYQoHGF~B0?Js;YFAP~4==ST@}@cx2k|tC{PuY?nDU<}Z_!&O32|)wLu+4a)RfyVB z=hZv^qWQLu(WsZrRoeM#oM){_$WwssHnnO6Z1u8@JPA>MLdop*N*jWU_?PAhg6@Km zKd!p|Eog8W<}+|WvP~HWIp0WtdafBHr6K06{%r-xHY{ejypu69ML64M$F!I*fr5s; zLFQqba`5MOy4vOhc1p`sCY4%MdFMmvv>|(P0qR{>W^?z%6cPCfbv5T44|bC*erkjI z;AgVlXb*Q}lE}E;I64JhBq~}=`kI@K3;j02FJz!LYwUwgf@p1N<5-+PQ-|VeOaNR zJ0*QNR_3L=#P{WQ2Jk@5(H@iaMIr=H?(bnVow(%RO5~c?qh>nJ3VcI~#v}*zqi;Y8iszd)u_d?>>9oGuX1&{)e&H!&cRKKy+54^or*f zwTIhty)Ck;Maa{=5AF!ypb3+YwK!|uEO{t<)%O%AW;gr!*wG<>UB?IdH(ib?wWpqQ zR6@deCox&|L;#go`5h+ili4_q67IKDznoWb<T>td7qipVZ8Yb&9)nC3|M@$8s%TQ~aFMr5k(BNoy9egO8>2@(XBtAQL zKeKYptyKE;cvaise+-{3m54bshkzMjUU?Z07SYOCOpeEQ`}%`%Mip-Pk!S@&w=T;A z%Fe~|&A=!pe>DAe$0z*?ErIy^`*0r?umQ zU?z>lUXP1n{5RmA#O6gzvk;>1L)6F7Svf@k-b_RkR4`+SB=<_x&k6LikcXi8aVD0b zHxk8lp{Ap}I%t7^DghExb7BIShfu}xJ+`|{8Jg>L7oqF{FXjtgMjk@`WGZojYtRDhtENhK8>aOI3Uk#BYjtp07#{sW{jn-H zaF=k96xZ`yArIx*0K*j9jHJp97?*MDGTd8Q0EZ}sDK8;QnSfC7ufjKA8FL_VYc*brg>Sn7(--MMXFnOm%u3}S;bf{TH za~q{zYJH=$d1Z1Mv}~E3@U(%&wDitP@Hf^#8AHUZ)A#!?9$M(h6`&AnpAQ^t>F{SQ#Nv7m+{f1{IYxHJq z=1Jbq63|9eS+L4L=&>VPc(S!ShZHwG#_aZ3^OTDJp{pnOHK>O>lzOAQ8@V|hEE!X~ zZG3~KKv_jmJp-rzaGvZ!=Lp5!y@@CjmvvZ|C5RXY(?N_+LEgIO#&>?6<#;#Uk}s`4 zTxz76r@Igj6>E1AfXpi%rzqeL+(i=cbo)ziJUmc=x%U+dtAeC8(xun`UoQ210d9 zgKNP)Q!b4`OAa8hZe!oIhV~+Kx`jYZAowbxARZLWvH4<1L%rMNEcfL50s@E9cqav^ zBEI{d-4s);QyM2$v>x>$gz#G}Qk4s0#N650y{w3_d6Y|tU5Z7~*AI;U@DL>@6q;^4 z%?mldr*!8F5ktxFi8>+n65i9Ck1qV5LUL`@?XzAvnelc4~%U~v$?Yo~T| z??YCO-I>vYcABCGUIMHH^w;-MC%X5ngBE>+^6|AW52>}t?B^1Wp)@7;`RIdH!n5D* zz<*pb7dPPMAm{v*KiU#x)HD4**@qpxXWQ{968_v8;4}OyN(REn0Dd~jPE|c$f`qvj z?!*DFEX$m-Et|3Aj}|#(Yu3pRrMjs%L#166&Aj@M`Volu!yM4%Q0?_oeS1FH`hzk` zW{i4e>(A?S&p4IaRCwHjcZLuLOKYevT_D+EZF6%<~QPv_L11|nvVcSX(ki5&%t@`Ae5@=cuH5(gAm zBxt3j7OyhJxu8VCFR6D>vkTD!RBni-f|GVBGZ)CUY%>>UwrHue?1dscag{ef&vSU= zvPFV)YrNAccPXc8EKHw@QuQ^1-aO>5s}ik~t-AJNBS9fX&@f4l5n8fl7R4ONG!_M2 z_e~&2e%6r=%SBOk0y*FZCyo_LtoUgaLXY33sn|AaC{6ELvsBpASDfUOiHZ&;}`(n zJ)wJO^mmC>%oiZPt{%?ZS518NU&lZrC7=(LHeV9W2XG=f5`alwsC&C$<>)Nu4AA$) ztuju#9|*ws!1l_0IUm)zr{zuq`Hzocu16$QVH9S!|SVuKGr MU)LDY2zE;NA05R;CIA2c literal 0 HcmV?d00001 diff --git a/src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-light.png b/src/AElfScanServer.AuthServer/wwwroot/images/logo/leptonx/logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..761fb4443d597661e7700574e52b787d7ed7255b GIT binary patch literal 33228 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 nuxmBTJ6Y+ll0437Z literal 0 HcmV?d00001 diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css new file mode 100644 index 00000000..c093364e --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css @@ -0,0 +1,7876 @@ +/*! + * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa-solid, +.fa-regular, +.fa-brands, +.fas, +.far, +.fab, +.fa-sharp-solid, +.fa-classic, +.fa { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(-1 * var(--fa-li-width, 2em)); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } + +@keyframes fa-beat { + 0%, 90% { + transform: scale(1); } + 45% { + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-bounce { + 0% { + transform: scale(1, 1) translateY(0); } + 10% { + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + transform: scale(1, 1) translateY(0); } + 100% { + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + transform: scale(1); } + 50% { + opacity: 1; + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-flip { + 50% { + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-shake { + 0% { + transform: rotate(-15deg); } + 4% { + transform: rotate(15deg); } + 8%, 24% { + transform: rotate(-18deg); } + 12%, 28% { + transform: rotate(18deg); } + 16% { + transform: rotate(-22deg); } + 20% { + transform: rotate(22deg); } + 32% { + transform: rotate(-12deg); } + 36% { + transform: rotate(12deg); } + 40%, 100% { + transform: rotate(0deg); } } + +@keyframes fa-spin { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +.fa-rotate-90 { + transform: rotate(90deg); } + +.fa-rotate-180 { + transform: rotate(180deg); } + +.fa-rotate-270 { + transform: rotate(270deg); } + +.fa-flip-horizontal { + transform: scale(-1, 1); } + +.fa-flip-vertical { + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + transform: scale(-1, -1); } + +.fa-rotate-by { + transform: rotate(var(--fa-rotate-angle, 0)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-at::before { + content: "\40"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-w::before { + content: "\57"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-film::before { + content: "\f008"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-om::before { + content: "\f679"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-i::before { + content: "\49"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-v::before { + content: "\56"; } + +.fa-bangladeshi-taka-sign::before { + content: "\e2e6"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-school::before { + content: "\f549"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-q::before { + content: "\51"; } + +.fa-g::before { + content: "\47"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-user::before { + content: "\f007"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-key::before { + content: "\f084"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-c::before { + content: "\43"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-star::before { + content: "\f005"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-box::before { + content: "\f466"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-server::before { + content: "\f233"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-thumbtack-slash::before { + content: "\e68f"; } + +.fa-thumb-tack-slash::before { + content: "\e68f"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-table-cells-column-lock::before { + content: "\e678"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-z::before { + content: "\5a"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-f::before { + content: "\46"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-road::before { + content: "\f018"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-h::before { + content: "\48"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-j::before { + content: "\4a"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-water::before { + content: "\f773"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-s::before { + content: "\53"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-images::before { + content: "\f302"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-n::before { + content: "\4e"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-download::before { + content: "\f019"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-b::before { + content: "\42"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-table-cells-row-lock::before { + content: "\e67a"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-display::before { + content: "\e163"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-t::before { + content: "\54"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-table-cells-row-unlock::before { + content: "\e691"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-d::before { + content: "\44"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-pixiv:before { + content: "\e640"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-jxl:before { + content: "\e67b"; } + +.fa-dart-lang:before { + content: "\e693"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-brave:before { + content: "\e63c"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-opensuse:before { + content: "\e62b"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-node:before { + content: "\f419"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-debian:before { + content: "\e60b"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-square-kickstarter:before { + content: "\f3bb"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-square-letterboxd:before { + content: "\e62e"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-shoelace:before { + content: "\e60c"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-square-threads:before { + content: "\e619"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-google-scholar:before { + content: "\e63b"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-signal-messenger:before { + content: "\e663"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-mintbit:before { + content: "\e62f"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-brave-reverse:before { + content: "\e63d"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-web-awesome:before { + content: "\e682"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-letterboxd:before { + content: "\e62d"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-x-twitter:before { + content: "\e61b"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-square-web-awesome-stroke:before { + content: "\e684"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-flutter:before { + content: "\e694"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-upwork:before { + content: "\e641"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-square-upwork:before { + content: "\e67c"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-square-web-awesome:before { + content: "\e683"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-bluesky:before { + content: "\e671"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-webflow:before { + content: "\e65c"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-php:before { + content: "\f457"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-stubber:before { + content: "\e5c7"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-square-x-twitter:before { + content: "\e61a"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 900; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype"); + unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; } diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css new file mode 100644 index 00000000..239be56f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css @@ -0,0 +1,2194 @@ +/*! + * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa.fa-glass:before { + content: "\f000"; } + +.fa.fa-envelope-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-envelope-o:before { + content: "\f0e0"; } + +.fa.fa-star-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-o:before { + content: "\f005"; } + +.fa.fa-remove:before { + content: "\f00d"; } + +.fa.fa-close:before { + content: "\f00d"; } + +.fa.fa-gear:before { + content: "\f013"; } + +.fa.fa-trash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-trash-o:before { + content: "\f2ed"; } + +.fa.fa-home:before { + content: "\f015"; } + +.fa.fa-file-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-o:before { + content: "\f15b"; } + +.fa.fa-clock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-clock-o:before { + content: "\f017"; } + +.fa.fa-arrow-circle-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-down:before { + content: "\f358"; } + +.fa.fa-arrow-circle-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-up:before { + content: "\f35b"; } + +.fa.fa-play-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-play-circle-o:before { + content: "\f144"; } + +.fa.fa-repeat:before { + content: "\f01e"; } + +.fa.fa-rotate-right:before { + content: "\f01e"; } + +.fa.fa-refresh:before { + content: "\f021"; } + +.fa.fa-list-alt { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-list-alt:before { + content: "\f022"; } + +.fa.fa-dedent:before { + content: "\f03b"; } + +.fa.fa-video-camera:before { + content: "\f03d"; } + +.fa.fa-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-picture-o:before { + content: "\f03e"; } + +.fa.fa-photo { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-photo:before { + content: "\f03e"; } + +.fa.fa-image { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-image:before { + content: "\f03e"; } + +.fa.fa-map-marker:before { + content: "\f3c5"; } + +.fa.fa-pencil-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-pencil-square-o:before { + content: "\f044"; } + +.fa.fa-edit { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-edit:before { + content: "\f044"; } + +.fa.fa-share-square-o:before { + content: "\f14d"; } + +.fa.fa-check-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-check-square-o:before { + content: "\f14a"; } + +.fa.fa-arrows:before { + content: "\f0b2"; } + +.fa.fa-times-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-circle-o:before { + content: "\f057"; } + +.fa.fa-check-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-check-circle-o:before { + content: "\f058"; } + +.fa.fa-mail-forward:before { + content: "\f064"; } + +.fa.fa-expand:before { + content: "\f424"; } + +.fa.fa-compress:before { + content: "\f422"; } + +.fa.fa-eye { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-eye-slash { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-warning:before { + content: "\f071"; } + +.fa.fa-calendar:before { + content: "\f073"; } + +.fa.fa-arrows-v:before { + content: "\f338"; } + +.fa.fa-arrows-h:before { + content: "\f337"; } + +.fa.fa-bar-chart:before { + content: "\e0e3"; } + +.fa.fa-bar-chart-o:before { + content: "\e0e3"; } + +.fa.fa-twitter-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-twitter-square:before { + content: "\f081"; } + +.fa.fa-facebook-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-square:before { + content: "\f082"; } + +.fa.fa-gears:before { + content: "\f085"; } + +.fa.fa-thumbs-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-up:before { + content: "\f164"; } + +.fa.fa-thumbs-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-down:before { + content: "\f165"; } + +.fa.fa-heart-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-heart-o:before { + content: "\f004"; } + +.fa.fa-sign-out:before { + content: "\f2f5"; } + +.fa.fa-linkedin-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linkedin-square:before { + content: "\f08c"; } + +.fa.fa-thumb-tack:before { + content: "\f08d"; } + +.fa.fa-external-link:before { + content: "\f35d"; } + +.fa.fa-sign-in:before { + content: "\f2f6"; } + +.fa.fa-github-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-github-square:before { + content: "\f092"; } + +.fa.fa-lemon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-lemon-o:before { + content: "\f094"; } + +.fa.fa-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-square-o:before { + content: "\f0c8"; } + +.fa.fa-bookmark-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bookmark-o:before { + content: "\f02e"; } + +.fa.fa-twitter { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook:before { + content: "\f39e"; } + +.fa.fa-facebook-f { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-f:before { + content: "\f39e"; } + +.fa.fa-github { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-credit-card { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-feed:before { + content: "\f09e"; } + +.fa.fa-hdd-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hdd-o:before { + content: "\f0a0"; } + +.fa.fa-hand-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-right:before { + content: "\f0a4"; } + +.fa.fa-hand-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-left:before { + content: "\f0a5"; } + +.fa.fa-hand-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-up:before { + content: "\f0a6"; } + +.fa.fa-hand-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-down:before { + content: "\f0a7"; } + +.fa.fa-globe:before { + content: "\f57d"; } + +.fa.fa-tasks:before { + content: "\f828"; } + +.fa.fa-arrows-alt:before { + content: "\f31e"; } + +.fa.fa-group:before { + content: "\f0c0"; } + +.fa.fa-chain:before { + content: "\f0c1"; } + +.fa.fa-cut:before { + content: "\f0c4"; } + +.fa.fa-files-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-files-o:before { + content: "\f0c5"; } + +.fa.fa-floppy-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-floppy-o:before { + content: "\f0c7"; } + +.fa.fa-save { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-save:before { + content: "\f0c7"; } + +.fa.fa-navicon:before { + content: "\f0c9"; } + +.fa.fa-reorder:before { + content: "\f0c9"; } + +.fa.fa-magic:before { + content: "\e2ca"; } + +.fa.fa-pinterest { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pinterest-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa.fa-google-plus-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa.fa-google-plus { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus:before { + content: "\f0d5"; } + +.fa.fa-money:before { + content: "\f3d1"; } + +.fa.fa-unsorted:before { + content: "\f0dc"; } + +.fa.fa-sort-desc:before { + content: "\f0dd"; } + +.fa.fa-sort-asc:before { + content: "\f0de"; } + +.fa.fa-linkedin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linkedin:before { + content: "\f0e1"; } + +.fa.fa-rotate-left:before { + content: "\f0e2"; } + +.fa.fa-legal:before { + content: "\f0e3"; } + +.fa.fa-tachometer:before { + content: "\f625"; } + +.fa.fa-dashboard:before { + content: "\f625"; } + +.fa.fa-comment-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-comment-o:before { + content: "\f075"; } + +.fa.fa-comments-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-comments-o:before { + content: "\f086"; } + +.fa.fa-flash:before { + content: "\f0e7"; } + +.fa.fa-clipboard:before { + content: "\f0ea"; } + +.fa.fa-lightbulb-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-lightbulb-o:before { + content: "\f0eb"; } + +.fa.fa-exchange:before { + content: "\f362"; } + +.fa.fa-cloud-download:before { + content: "\f0ed"; } + +.fa.fa-cloud-upload:before { + content: "\f0ee"; } + +.fa.fa-bell-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bell-o:before { + content: "\f0f3"; } + +.fa.fa-cutlery:before { + content: "\f2e7"; } + +.fa.fa-file-text-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-text-o:before { + content: "\f15c"; } + +.fa.fa-building-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-building-o:before { + content: "\f1ad"; } + +.fa.fa-hospital-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hospital-o:before { + content: "\f0f8"; } + +.fa.fa-tablet:before { + content: "\f3fa"; } + +.fa.fa-mobile:before { + content: "\f3cd"; } + +.fa.fa-mobile-phone:before { + content: "\f3cd"; } + +.fa.fa-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-circle-o:before { + content: "\f111"; } + +.fa.fa-mail-reply:before { + content: "\f3e5"; } + +.fa.fa-github-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-folder-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-folder-o:before { + content: "\f07b"; } + +.fa.fa-folder-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-folder-open-o:before { + content: "\f07c"; } + +.fa.fa-smile-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-smile-o:before { + content: "\f118"; } + +.fa.fa-frown-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-frown-o:before { + content: "\f119"; } + +.fa.fa-meh-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-meh-o:before { + content: "\f11a"; } + +.fa.fa-keyboard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-keyboard-o:before { + content: "\f11c"; } + +.fa.fa-flag-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-flag-o:before { + content: "\f024"; } + +.fa.fa-mail-reply-all:before { + content: "\f122"; } + +.fa.fa-star-half-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-o:before { + content: "\f5c0"; } + +.fa.fa-star-half-empty { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-empty:before { + content: "\f5c0"; } + +.fa.fa-star-half-full { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-full:before { + content: "\f5c0"; } + +.fa.fa-code-fork:before { + content: "\f126"; } + +.fa.fa-chain-broken:before { + content: "\f127"; } + +.fa.fa-unlink:before { + content: "\f127"; } + +.fa.fa-calendar-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-o:before { + content: "\f133"; } + +.fa.fa-maxcdn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-html5 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-css3 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-unlock-alt:before { + content: "\f09c"; } + +.fa.fa-minus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-minus-square-o:before { + content: "\f146"; } + +.fa.fa-level-up:before { + content: "\f3bf"; } + +.fa.fa-level-down:before { + content: "\f3be"; } + +.fa.fa-pencil-square:before { + content: "\f14b"; } + +.fa.fa-external-link-square:before { + content: "\f360"; } + +.fa.fa-compass { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down:before { + content: "\f150"; } + +.fa.fa-toggle-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-down:before { + content: "\f150"; } + +.fa.fa-caret-square-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-up:before { + content: "\f151"; } + +.fa.fa-toggle-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-up:before { + content: "\f151"; } + +.fa.fa-caret-square-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-right:before { + content: "\f152"; } + +.fa.fa-toggle-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-right:before { + content: "\f152"; } + +.fa.fa-eur:before { + content: "\f153"; } + +.fa.fa-euro:before { + content: "\f153"; } + +.fa.fa-gbp:before { + content: "\f154"; } + +.fa.fa-usd:before { + content: "\24"; } + +.fa.fa-dollar:before { + content: "\24"; } + +.fa.fa-inr:before { + content: "\e1bc"; } + +.fa.fa-rupee:before { + content: "\e1bc"; } + +.fa.fa-jpy:before { + content: "\f157"; } + +.fa.fa-cny:before { + content: "\f157"; } + +.fa.fa-rmb:before { + content: "\f157"; } + +.fa.fa-yen:before { + content: "\f157"; } + +.fa.fa-rub:before { + content: "\f158"; } + +.fa.fa-ruble:before { + content: "\f158"; } + +.fa.fa-rouble:before { + content: "\f158"; } + +.fa.fa-krw:before { + content: "\f159"; } + +.fa.fa-won:before { + content: "\f159"; } + +.fa.fa-btc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin:before { + content: "\f15a"; } + +.fa.fa-file-text:before { + content: "\f15c"; } + +.fa.fa-sort-alpha-asc:before { + content: "\f15d"; } + +.fa.fa-sort-alpha-desc:before { + content: "\f881"; } + +.fa.fa-sort-amount-asc:before { + content: "\f884"; } + +.fa.fa-sort-amount-desc:before { + content: "\f160"; } + +.fa.fa-sort-numeric-asc:before { + content: "\f162"; } + +.fa.fa-sort-numeric-desc:before { + content: "\f886"; } + +.fa.fa-youtube-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-youtube-square:before { + content: "\f431"; } + +.fa.fa-youtube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing-square:before { + content: "\f169"; } + +.fa.fa-youtube-play { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-youtube-play:before { + content: "\f167"; } + +.fa.fa-dropbox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-overflow { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-instagram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-flickr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-adn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square:before { + content: "\f171"; } + +.fa.fa-tumblr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-tumblr-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-tumblr-square:before { + content: "\f174"; } + +.fa.fa-long-arrow-down:before { + content: "\f309"; } + +.fa.fa-long-arrow-up:before { + content: "\f30c"; } + +.fa.fa-long-arrow-left:before { + content: "\f30a"; } + +.fa.fa-long-arrow-right:before { + content: "\f30b"; } + +.fa.fa-apple { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-windows { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-android { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linux { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dribbble { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-skype { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-foursquare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-trello { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gratipay { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gittip { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gittip:before { + content: "\f184"; } + +.fa.fa-sun-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sun-o:before { + content: "\f185"; } + +.fa.fa-moon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-moon-o:before { + content: "\f186"; } + +.fa.fa-vk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-renren { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pagelines { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-exchange { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right:before { + content: "\f35a"; } + +.fa.fa-arrow-circle-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-left:before { + content: "\f359"; } + +.fa.fa-caret-square-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-left:before { + content: "\f191"; } + +.fa.fa-toggle-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-left:before { + content: "\f191"; } + +.fa.fa-dot-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-dot-circle-o:before { + content: "\f192"; } + +.fa.fa-vimeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo-square:before { + content: "\f194"; } + +.fa.fa-try:before { + content: "\e2bb"; } + +.fa.fa-turkish-lira:before { + content: "\e2bb"; } + +.fa.fa-plus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-plus-square-o:before { + content: "\f0fe"; } + +.fa.fa-slack { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wordpress { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-openid { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-institution:before { + content: "\f19c"; } + +.fa.fa-bank:before { + content: "\f19c"; } + +.fa.fa-mortar-board:before { + content: "\f19d"; } + +.fa.fa-yahoo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square:before { + content: "\f1a2"; } + +.fa.fa-stumbleupon-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stumbleupon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-delicious { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-digg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-pp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-drupal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-joomla { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square:before { + content: "\f1b5"; } + +.fa.fa-steam { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-steam-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-steam-square:before { + content: "\f1b7"; } + +.fa.fa-automobile:before { + content: "\f1b9"; } + +.fa.fa-cab:before { + content: "\f1ba"; } + +.fa.fa-spotify { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-deviantart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-soundcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-file-pdf-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-pdf-o:before { + content: "\f1c1"; } + +.fa.fa-file-word-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-word-o:before { + content: "\f1c2"; } + +.fa.fa-file-excel-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-excel-o:before { + content: "\f1c3"; } + +.fa.fa-file-powerpoint-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-powerpoint-o:before { + content: "\f1c4"; } + +.fa.fa-file-image-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-image-o:before { + content: "\f1c5"; } + +.fa.fa-file-photo-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-photo-o:before { + content: "\f1c5"; } + +.fa.fa-file-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-picture-o:before { + content: "\f1c5"; } + +.fa.fa-file-archive-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-archive-o:before { + content: "\f1c6"; } + +.fa.fa-file-zip-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-zip-o:before { + content: "\f1c6"; } + +.fa.fa-file-audio-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-audio-o:before { + content: "\f1c7"; } + +.fa.fa-file-sound-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-sound-o:before { + content: "\f1c7"; } + +.fa.fa-file-video-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-video-o:before { + content: "\f1c8"; } + +.fa.fa-file-movie-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-movie-o:before { + content: "\f1c8"; } + +.fa.fa-file-code-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-code-o:before { + content: "\f1c9"; } + +.fa.fa-vine { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-codepen { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-jsfiddle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-life-bouy:before { + content: "\f1cd"; } + +.fa.fa-life-buoy:before { + content: "\f1cd"; } + +.fa.fa-life-saver:before { + content: "\f1cd"; } + +.fa.fa-support:before { + content: "\f1cd"; } + +.fa.fa-circle-o-notch:before { + content: "\f1ce"; } + +.fa.fa-rebel { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ra { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ra:before { + content: "\f1d0"; } + +.fa.fa-resistance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-resistance:before { + content: "\f1d0"; } + +.fa.fa-empire { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ge:before { + content: "\f1d1"; } + +.fa.fa-git-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-git-square:before { + content: "\f1d2"; } + +.fa.fa-git { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hacker-news { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square:before { + content: "\f1d4"; } + +.fa.fa-yc-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc-square:before { + content: "\f1d4"; } + +.fa.fa-tencent-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-qq { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weixin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wechat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wechat:before { + content: "\f1d7"; } + +.fa.fa-send:before { + content: "\f1d8"; } + +.fa.fa-paper-plane-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-paper-plane-o:before { + content: "\f1d8"; } + +.fa.fa-send-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-send-o:before { + content: "\f1d8"; } + +.fa.fa-circle-thin { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-circle-thin:before { + content: "\f111"; } + +.fa.fa-header:before { + content: "\f1dc"; } + +.fa.fa-futbol-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-futbol-o:before { + content: "\f1e3"; } + +.fa.fa-soccer-ball-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-soccer-ball-o:before { + content: "\f1e3"; } + +.fa.fa-slideshare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-twitch { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yelp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-newspaper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-newspaper-o:before { + content: "\f1ea"; } + +.fa.fa-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-wallet { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-visa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-mastercard { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-discover { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-amex { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-stripe { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bell-slash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bell-slash-o:before { + content: "\f1f6"; } + +.fa.fa-trash:before { + content: "\f2ed"; } + +.fa.fa-copyright { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-eyedropper:before { + content: "\f1fb"; } + +.fa.fa-area-chart:before { + content: "\f1fe"; } + +.fa.fa-pie-chart:before { + content: "\f200"; } + +.fa.fa-line-chart:before { + content: "\f201"; } + +.fa.fa-lastfm { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square:before { + content: "\f203"; } + +.fa.fa-ioxhost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-angellist { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-cc:before { + content: "\f20a"; } + +.fa.fa-ils:before { + content: "\f20b"; } + +.fa.fa-shekel:before { + content: "\f20b"; } + +.fa.fa-sheqel:before { + content: "\f20b"; } + +.fa.fa-buysellads { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-connectdevelop { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dashcube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-forumbee { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-leanpub { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-sellsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-shirtsinbulk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-simplybuilt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-skyatlas { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-diamond { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-diamond:before { + content: "\f3a5"; } + +.fa.fa-transgender:before { + content: "\f224"; } + +.fa.fa-intersex:before { + content: "\f224"; } + +.fa.fa-transgender-alt:before { + content: "\f225"; } + +.fa.fa-facebook-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-official:before { + content: "\f09a"; } + +.fa.fa-pinterest-p { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-whatsapp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hotel:before { + content: "\f236"; } + +.fa.fa-viacoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-medium { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc:before { + content: "\f23b"; } + +.fa.fa-optin-monster { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opencart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-expeditedssl { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-battery-4:before { + content: "\f240"; } + +.fa.fa-battery:before { + content: "\f240"; } + +.fa.fa-battery-3:before { + content: "\f241"; } + +.fa.fa-battery-2:before { + content: "\f242"; } + +.fa.fa-battery-1:before { + content: "\f243"; } + +.fa.fa-battery-0:before { + content: "\f244"; } + +.fa.fa-object-group { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-object-ungroup { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o:before { + content: "\f249"; } + +.fa.fa-cc-jcb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-diners-club { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-clone { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hourglass-o:before { + content: "\f254"; } + +.fa.fa-hourglass-1:before { + content: "\f251"; } + +.fa.fa-hourglass-2:before { + content: "\f252"; } + +.fa.fa-hourglass-3:before { + content: "\f253"; } + +.fa.fa-hand-rock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-rock-o:before { + content: "\f255"; } + +.fa.fa-hand-grab-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-grab-o:before { + content: "\f255"; } + +.fa.fa-hand-paper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-paper-o:before { + content: "\f256"; } + +.fa.fa-hand-stop-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-stop-o:before { + content: "\f256"; } + +.fa.fa-hand-scissors-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-scissors-o:before { + content: "\f257"; } + +.fa.fa-hand-lizard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-lizard-o:before { + content: "\f258"; } + +.fa.fa-hand-spock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-spock-o:before { + content: "\f259"; } + +.fa.fa-hand-pointer-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-pointer-o:before { + content: "\f25a"; } + +.fa.fa-hand-peace-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-peace-o:before { + content: "\f25b"; } + +.fa.fa-registered { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-creative-commons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa.fa-get-pocket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wikipedia-w { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-safari { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-chrome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-firefox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opera { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-internet-explorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-television:before { + content: "\f26c"; } + +.fa.fa-contao { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-500px { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-amazon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-calendar-plus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-plus-o:before { + content: "\f271"; } + +.fa.fa-calendar-minus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-minus-o:before { + content: "\f272"; } + +.fa.fa-calendar-times-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-times-o:before { + content: "\f273"; } + +.fa.fa-calendar-check-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-check-o:before { + content: "\f274"; } + +.fa.fa-map-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-map-o:before { + content: "\f279"; } + +.fa.fa-commenting:before { + content: "\f4ad"; } + +.fa.fa-commenting-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-commenting-o:before { + content: "\f4ad"; } + +.fa.fa-houzz { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo:before { + content: "\f27d"; } + +.fa.fa-black-tie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fonticons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-alien { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-edge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-credit-card-alt:before { + content: "\f09d"; } + +.fa.fa-codiepie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-modx { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fort-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-usb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-product-hunt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-mixcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-scribd { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pause-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-pause-circle-o:before { + content: "\f28b"; } + +.fa.fa-stop-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-stop-circle-o:before { + content: "\f28d"; } + +.fa.fa-bluetooth { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bluetooth-b { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gitlab { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpbeginner { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpforms { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-envira { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt:before { + content: "\f368"; } + +.fa.fa-question-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-question-circle-o:before { + content: "\f059"; } + +.fa.fa-volume-control-phone:before { + content: "\f2a0"; } + +.fa.fa-asl-interpreting:before { + content: "\f2a3"; } + +.fa.fa-deafness:before { + content: "\f2a4"; } + +.fa.fa-hard-of-hearing:before { + content: "\f2a4"; } + +.fa.fa-glide { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-glide-g { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-signing:before { + content: "\f2a7"; } + +.fa.fa-viadeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa.fa-snapchat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-ghost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa.fa-snapchat-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa.fa-pied-piper { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-first-order { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yoast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-themeisle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official:before { + content: "\f2b3"; } + +.fa.fa-google-plus-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-circle:before { + content: "\f2b3"; } + +.fa.fa-font-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fa:before { + content: "\f2b4"; } + +.fa.fa-handshake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-handshake-o:before { + content: "\f2b5"; } + +.fa.fa-envelope-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-envelope-open-o:before { + content: "\f2b6"; } + +.fa.fa-linode { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-address-book-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-address-book-o:before { + content: "\f2b9"; } + +.fa.fa-vcard:before { + content: "\f2bb"; } + +.fa.fa-address-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-address-card-o:before { + content: "\f2bb"; } + +.fa.fa-vcard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-vcard-o:before { + content: "\f2bb"; } + +.fa.fa-user-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-user-circle-o:before { + content: "\f2bd"; } + +.fa.fa-user-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-user-o:before { + content: "\f007"; } + +.fa.fa-id-badge { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-drivers-license:before { + content: "\f2c2"; } + +.fa.fa-id-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-id-card-o:before { + content: "\f2c2"; } + +.fa.fa-drivers-license-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-drivers-license-o:before { + content: "\f2c2"; } + +.fa.fa-quora { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-free-code-camp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-telegram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-thermometer-4:before { + content: "\f2c7"; } + +.fa.fa-thermometer:before { + content: "\f2c7"; } + +.fa.fa-thermometer-3:before { + content: "\f2c8"; } + +.fa.fa-thermometer-2:before { + content: "\f2c9"; } + +.fa.fa-thermometer-1:before { + content: "\f2ca"; } + +.fa.fa-thermometer-0:before { + content: "\f2cb"; } + +.fa.fa-bathtub:before { + content: "\f2cd"; } + +.fa.fa-s15:before { + content: "\f2cd"; } + +.fa.fa-window-maximize { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-window-restore { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle:before { + content: "\f410"; } + +.fa.fa-window-close-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-window-close-o:before { + content: "\f410"; } + +.fa.fa-times-rectangle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle-o:before { + content: "\f410"; } + +.fa.fa-bandcamp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-grav { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-etsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-imdb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ravelry { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-eercast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-eercast:before { + content: "\f2da"; } + +.fa.fa-snowflake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-snowflake-o:before { + content: "\f2dc"; } + +.fa.fa-superpowers { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpexplorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-meetup { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..08362f3424c6932efba0af7041f531553f4de176 GIT binary patch literal 209376 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/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

gL&gJg`Pn(jyz$gwLgAz=RT!Gesdt`)a2AxB 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 literal 0 HcmV?d00001 diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fec1fae77d486cc8f907b27accca01b59a5b7d90 GIT binary patch literal 157192 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

8BC^!BI#_0UW9ia1p5G*c|qTx5tf3z)F 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 af4^(?DQT-B1Zb=3!=IPs{$&6I000044J$wZ literal 0 HcmV?d00001 diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.css b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.css new file mode 100644 index 00000000..ddf9cae5 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.css @@ -0,0 +1,56 @@ +@keyframes spin { + 0% { + transform: translateZ(0) rotate(0deg); + } + + 100% { + transform: translateZ(0) rotate(360deg); + } +} + +.abp-block-area { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 102; + background-color: #fff; + opacity: .8; + transition: opacity .25s; +} + + .abp-block-area.abp-block-area-disappearing { + opacity: 0; + } + + .abp-block-area.abp-block-area-busy:after { + content: attr(data-text); + display: block; + max-width: 125px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 20px; + font-family: sans-serif; + color: #343a40; + text-align: center; + text-transform: uppercase; + } + + .abp-block-area.abp-block-area-busy:before { + content: ""; + display: block; + width: 150px; + height: 150px; + border-radius: 50%; + border-width: 2px; + border-style: solid; + border-color: transparent #228ae6 #228ae6 #228ae6; + position: absolute; + top: calc(50% - 75px); + left: calc(50% - 75px); + will-change: transform; + animation: spin .75s infinite ease-in-out; + } diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.js b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.js new file mode 100644 index 00000000..7a82f58e --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/core/abp.js @@ -0,0 +1,823 @@ +var abp = abp || {}; +(function () { + + /* Application paths *****************************************/ + + //Current application root path (including virtual directory if exists). + abp.appPath = abp.appPath || '/'; + + abp.pageLoadTime = new Date(); + + //Converts given path to absolute path using abp.appPath variable. + abp.toAbsAppPath = function (path) { + if (path.indexOf('/') == 0) { + path = path.substring(1); + } + + return abp.appPath + path; + }; + + /* LOGGING ***************************************************/ + //Implements Logging API that provides secure & controlled usage of console.log + + abp.log = abp.log || {}; + + abp.log.levels = { + DEBUG: 1, + INFO: 2, + WARN: 3, + ERROR: 4, + FATAL: 5 + }; + + abp.log.level = abp.log.levels.DEBUG; + + abp.log.log = function (logObject, logLevel) { + if (!window.console || !window.console.log) { + return; + } + + if (logLevel != undefined && logLevel < abp.log.level) { + return; + } + + console.log(logObject); + }; + + abp.log.debug = function (logObject) { + abp.log.log("DEBUG: ", abp.log.levels.DEBUG); + abp.log.log(logObject, abp.log.levels.DEBUG); + }; + + abp.log.info = function (logObject) { + abp.log.log("INFO: ", abp.log.levels.INFO); + abp.log.log(logObject, abp.log.levels.INFO); + }; + + abp.log.warn = function (logObject) { + abp.log.log("WARN: ", abp.log.levels.WARN); + abp.log.log(logObject, abp.log.levels.WARN); + }; + + abp.log.error = function (logObject) { + abp.log.log("ERROR: ", abp.log.levels.ERROR); + abp.log.log(logObject, abp.log.levels.ERROR); + }; + + abp.log.fatal = function (logObject) { + abp.log.log("FATAL: ", abp.log.levels.FATAL); + abp.log.log(logObject, abp.log.levels.FATAL); + }; + + /* LOCALIZATION ***********************************************/ + + abp.localization = abp.localization || {}; + abp.localization.internal = abp.localization.internal || {}; + abp.localization.values = abp.localization.values || {}; + abp.localization.resources = abp.localization.resources || {}; + + abp.localization.internal.getResource = function (resourceName) { + var resource = abp.localization.resources[resourceName]; + if (resource) { + return resource; + } + + var legacySource = abp.localization.values[resourceName]; + if (legacySource) { + return { + texts: abp.localization.values[resourceName], + baseResources: [] + }; + } + + abp.log.warn('Could not find localization source: ' + resourceName); + return null; + }; + + abp.localization.internal.localize = function (key, sourceName) { + var resource = abp.localization.internal.getResource(sourceName); + if (!resource){ + return { + value: key, + found: false + }; + } + + var value = resource.texts[key]; + if (value === undefined) { + for (var i = 0; i < resource.baseResources.length; i++){ + var basedArguments = Array.prototype.slice.call(arguments, 0); + basedArguments[1] = resource.baseResources[i]; + + var result = abp.localization.internal.localize.apply(this, basedArguments); + if (result.found){ + return result; + } + } + + return { + value: key, + found: false + }; + } + + var copiedArguments = Array.prototype.slice.call(arguments, 0); + copiedArguments.splice(1, 1); + copiedArguments[0] = value; + + return { + value: abp.utils.formatString.apply(this, copiedArguments), + found: true + }; + }; + + abp.localization.localize = function (key, sourceName) { + if (sourceName === '_') { //A convention to suppress the localization + return key; + } + + if (sourceName) { + return abp.localization.internal.localize.apply(this, arguments).value; + } + + if (!abp.localization.defaultResourceName) { + abp.log.warn('Localization source name is not specified and the defaultResourceName was not defined!'); + return key; + } + + var copiedArguments = Array.prototype.slice.call(arguments, 0); + copiedArguments.splice(1, 1, abp.localization.defaultResourceName); + + return abp.localization.internal.localize.apply(this, copiedArguments).value; + }; + + abp.localization.isLocalized = function (key, sourceName) { + if (sourceName === '_') { //A convention to suppress the localization + return true; + } + + sourceName = sourceName || abp.localization.defaultResourceName; + if (!sourceName) { + return false; + } + + return abp.localization.internal.localize(key, sourceName).found; + }; + + abp.localization.getResource = function (name) { + return function () { + var copiedArguments = Array.prototype.slice.call(arguments, 0); + copiedArguments.splice(1, 0, name); + return abp.localization.localize.apply(this, copiedArguments); + }; + }; + + abp.localization.defaultResourceName = undefined; + abp.localization.currentCulture = { + cultureName: undefined + }; + + var getMapValue = function (packageMaps, packageName, language) { + language = language || abp.localization.currentCulture.name; + if (!packageMaps || !packageName || !language) { + return language; + } + + var packageMap = packageMaps[packageName]; + if (!packageMap) { + return language; + } + + for (var i = 0; i < packageMap.length; i++) { + var map = packageMap[i]; + if (map.name === language){ + return map.value; + } + } + + return language; + }; + + abp.localization.getLanguagesMap = function (packageName, language) { + return getMapValue(abp.localization.languagesMap, packageName, language); + }; + + abp.localization.getLanguageFilesMap = function (packageName, language) { + return getMapValue(abp.localization.languageFilesMap, packageName, language); + }; + + /* AUTHORIZATION **********************************************/ + + abp.auth = abp.auth || {}; + + abp.auth.grantedPolicies = abp.auth.grantedPolicies || {}; + + abp.auth.isGranted = function (policyName) { + return abp.auth.grantedPolicies[policyName] != undefined; + }; + + abp.auth.isAnyGranted = function () { + if (!arguments || arguments.length <= 0) { + return true; + } + + for (var i = 0; i < arguments.length; i++) { + if (abp.auth.isGranted(arguments[i])) { + return true; + } + } + + return false; + }; + + abp.auth.areAllGranted = function () { + if (!arguments || arguments.length <= 0) { + return true; + } + + for (var i = 0; i < arguments.length; i++) { + if (!abp.auth.isGranted(arguments[i])) { + return false; + } + } + + return true; + }; + + abp.auth.tokenCookieName = 'Abp.AuthToken'; + + abp.auth.setToken = function (authToken, expireDate) { + abp.utils.setCookieValue(abp.auth.tokenCookieName, authToken, expireDate, abp.appPath, abp.domain); + }; + + abp.auth.getToken = function () { + return abp.utils.getCookieValue(abp.auth.tokenCookieName); + } + + abp.auth.clearToken = function () { + abp.auth.setToken(); + } + + /* SETTINGS *************************************************/ + + abp.setting = abp.setting || {}; + + abp.setting.values = abp.setting.values || {}; + + abp.setting.get = function (name) { + return abp.setting.values[name]; + }; + + abp.setting.getBoolean = function (name) { + var value = abp.setting.get(name); + return value == 'true' || value == 'True'; + }; + + abp.setting.getInt = function (name) { + return parseInt(abp.setting.values[name]); + }; + + /* NOTIFICATION *********************************************/ + //Defines Notification API, not implements it + + abp.notify = abp.notify || {}; + + abp.notify.success = function (message, title, options) { + abp.log.warn('abp.notify.success is not implemented!'); + }; + + abp.notify.info = function (message, title, options) { + abp.log.warn('abp.notify.info is not implemented!'); + }; + + abp.notify.warn = function (message, title, options) { + abp.log.warn('abp.notify.warn is not implemented!'); + }; + + abp.notify.error = function (message, title, options) { + abp.log.warn('abp.notify.error is not implemented!'); + }; + + /* MESSAGE **************************************************/ + //Defines Message API, not implements it + + abp.message = abp.message || {}; + + abp.message._showMessage = function (message, title) { + alert((title || '') + ' ' + message); + }; + + abp.message.info = function (message, title) { + abp.log.warn('abp.message.info is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.success = function (message, title) { + abp.log.warn('abp.message.success is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.warn = function (message, title) { + abp.log.warn('abp.message.warn is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.error = function (message, title) { + abp.log.warn('abp.message.error is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.confirm = function (message, titleOrCallback, callback) { + abp.log.warn('abp.message.confirm is not properly implemented!'); + + if (titleOrCallback && !(typeof titleOrCallback == 'string')) { + callback = titleOrCallback; + } + + var result = confirm(message); + callback && callback(result); + }; + + /* UI *******************************************************/ + + abp.ui = abp.ui || {}; + + /* UI BLOCK */ + //Defines UI Block API and implements basically + + var $abpBlockArea = document.createElement('div'); + $abpBlockArea.classList.add('abp-block-area'); + + /* opts: { //Can be an object with options or a string for query a selector + * elm: a query selector (optional - default: document.body) + * busy: boolean (optional - default: false) + * promise: A promise with always or finally handler (optional - auto unblocks the ui if provided) + * } + */ + abp.ui.block = function (opts) { + if (!opts) { + opts = {}; + } else if (typeof opts == 'string') { + opts = { + elm: opts + }; + } + + var $elm = document.querySelector(opts.elm) || document.body; + + if (opts.busy) { + $abpBlockArea.classList.add('abp-block-area-busy'); + } else { + $abpBlockArea.classList.remove('abp-block-area-busy'); + } + + if (document.querySelector(opts.elm)) { + $abpBlockArea.style.position = 'absolute'; + } else { + $abpBlockArea.style.position = 'fixed'; + } + + $elm.appendChild($abpBlockArea); + + if (opts.promise) { + if (opts.promise.always) { //jQuery.Deferred style + opts.promise.always(function () { + abp.ui.unblock({ + $elm: opts.elm + }); + }); + } else if (opts.promise['finally']) { //Q style + opts.promise['finally'](function () { + abp.ui.unblock({ + $elm: opts.elm + }); + }); + } + } + }; + + /* opts: { + * + * } + */ + abp.ui.unblock = function (opts) { + var element = document.querySelector('.abp-block-area'); + if (element) { + element.classList.add('abp-block-area-disappearing'); + setTimeout(function () { + if (element) { + element.classList.remove('abp-block-area-disappearing'); + if (element.parentElement) { + element.parentElement.removeChild(element); + } + } + }, 250); + } + }; + + /* UI BUSY */ + //Defines UI Busy API, not implements it + + abp.ui.setBusy = function (opts) { + if (!opts) { + opts = { + busy: true + }; + } else if (typeof opts == 'string') { + opts = { + elm: opts, + busy: true + }; + } + + abp.ui.block(opts); + }; + + abp.ui.clearBusy = function (opts) { + abp.ui.unblock(opts); + }; + + /* SIMPLE EVENT BUS *****************************************/ + + abp.event = (function () { + + var _callbacks = {}; + + var on = function (eventName, callback) { + if (!_callbacks[eventName]) { + _callbacks[eventName] = []; + } + + _callbacks[eventName].push(callback); + }; + + var off = function (eventName, callback) { + var callbacks = _callbacks[eventName]; + if (!callbacks) { + return; + } + + var index = -1; + for (var i = 0; i < callbacks.length; i++) { + if (callbacks[i] === callback) { + index = i; + break; + } + } + + if (index < 0) { + return; + } + + _callbacks[eventName].splice(index, 1); + }; + + var trigger = function (eventName) { + var callbacks = _callbacks[eventName]; + if (!callbacks || !callbacks.length) { + return; + } + + var args = Array.prototype.slice.call(arguments, 1); + for (var i = 0; i < callbacks.length; i++) { + callbacks[i].apply(this, args); + } + }; + + // Public interface /////////////////////////////////////////////////// + + return { + on: on, + off: off, + trigger: trigger + }; + })(); + + + /* UTILS ***************************************************/ + + abp.utils = abp.utils || {}; + + /* Creates a name namespace. + * Example: + * var taskService = abp.utils.createNamespace(abp, 'services.task'); + * taskService will be equal to abp.services.task + * first argument (root) must be defined first + ************************************************************/ + abp.utils.createNamespace = function (root, ns) { + var parts = ns.split('.'); + for (var i = 0; i < parts.length; i++) { + if (typeof root[parts[i]] == 'undefined') { + root[parts[i]] = {}; + } + + root = root[parts[i]]; + } + + return root; + }; + + /* Find and replaces a string (search) to another string (replacement) in + * given string (str). + * Example: + * abp.utils.replaceAll('This is a test string', 'is', 'X') = 'ThX X a test string' + ************************************************************/ + abp.utils.replaceAll = function (str, search, replacement) { + var fix = search.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + return str.replace(new RegExp(fix, 'g'), replacement); + }; + + /* Formats a string just like string.format in C#. + * Example: + * abp.utils.formatString('Hello {0}','Tuana') = 'Hello Tuana' + ************************************************************/ + abp.utils.formatString = function () { + if (arguments.length < 1) { + return null; + } + + var str = arguments[0]; + + for (var i = 1; i < arguments.length; i++) { + var placeHolder = '{' + (i - 1) + '}'; + str = abp.utils.replaceAll(str, placeHolder, arguments[i]); + } + + return str; + }; + + abp.utils.toPascalCase = function (str) { + if (!str || !str.length) { + return str; + } + + if (str.length === 1) { + return str.charAt(0).toUpperCase(); + } + + return str.charAt(0).toUpperCase() + str.substr(1); + } + + abp.utils.toCamelCase = function (str) { + if (!str || !str.length) { + return str; + } + + if (str.length === 1) { + return str.charAt(0).toLowerCase(); + } + + return str.charAt(0).toLowerCase() + str.substr(1); + } + + abp.utils.truncateString = function (str, maxLength) { + if (!str || !str.length || str.length <= maxLength) { + return str; + } + + return str.substr(0, maxLength); + }; + + abp.utils.truncateStringWithPostfix = function (str, maxLength, postfix) { + postfix = postfix || '...'; + + if (!str || !str.length || str.length <= maxLength) { + return str; + } + + if (maxLength <= postfix.length) { + return postfix.substr(0, maxLength); + } + + return str.substr(0, maxLength - postfix.length) + postfix; + }; + + abp.utils.isFunction = function (obj) { + return !!(obj && obj.constructor && obj.call && obj.apply); + }; + + /** + * parameterInfos should be an array of { name, value } objects + * where name is query string parameter name and value is it's value. + * includeQuestionMark is true by default. + */ + abp.utils.buildQueryString = function (parameterInfos, includeQuestionMark) { + if (includeQuestionMark === undefined) { + includeQuestionMark = true; + } + + var qs = ''; + + function addSeperator() { + if (!qs.length) { + if (includeQuestionMark) { + qs = qs + '?'; + } + } else { + qs = qs + '&'; + } + } + + for (var i = 0; i < parameterInfos.length; ++i) { + var parameterInfo = parameterInfos[i]; + if (parameterInfo.value === undefined) { + continue; + } + + if (parameterInfo.value === null) { + parameterInfo.value = ''; + } + + addSeperator(); + + if (parameterInfo.value.toJSON && typeof parameterInfo.value.toJSON === "function") { + qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value.toJSON()); + } else if (Array.isArray(parameterInfo.value) && parameterInfo.value.length) { + for (var j = 0; j < parameterInfo.value.length; j++) { + if (j > 0) { + addSeperator(); + } + + qs = qs + parameterInfo.name + '[' + j + ']=' + encodeURIComponent(parameterInfo.value[j]); + } + } else { + qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value); + } + } + + return qs; + } + + /** + * Sets a cookie value for given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @param {string} value + * @param {Date} expireDate (optional). If not specified the cookie will expire at the end of session. + * @param {string} path (optional) + */ + abp.utils.setCookieValue = function (key, value, expireDate, path) { + var cookieValue = encodeURIComponent(key) + '='; + + if (value) { + cookieValue = cookieValue + encodeURIComponent(value); + } + + if (expireDate) { + cookieValue = cookieValue + "; expires=" + expireDate.toUTCString(); + } + + if (path) { + cookieValue = cookieValue + "; path=" + path; + } + + document.cookie = cookieValue; + }; + + /** + * Gets a cookie with given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @returns {string} Cookie value or null + */ + abp.utils.getCookieValue = function (key) { + var equalities = document.cookie.split('; '); + for (var i = 0; i < equalities.length; i++) { + if (!equalities[i]) { + continue; + } + + var splitted = equalities[i].split('='); + if (splitted.length != 2) { + continue; + } + + if (decodeURIComponent(splitted[0]) === key) { + return decodeURIComponent(splitted[1] || ''); + } + } + + return null; + }; + + /** + * Deletes cookie for given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @param {string} path (optional) + */ + abp.utils.deleteCookie = function (key, path) { + var cookieValue = encodeURIComponent(key) + '='; + + cookieValue = cookieValue + "; expires=" + (new Date(new Date().getTime() - 86400000)).toUTCString(); + + if (path) { + cookieValue = cookieValue + "; path=" + path; + } + + document.cookie = cookieValue; + } + + /** + * Escape HTML to help prevent XSS attacks. + */ + abp.utils.htmlEscape = function (html) { + return typeof html === 'string' ? html.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"') : html; + } + + /* SECURITY ***************************************/ + abp.security = abp.security || {}; + abp.security.antiForgery = abp.security.antiForgery || {}; + + abp.security.antiForgery.tokenCookieName = 'XSRF-TOKEN'; + abp.security.antiForgery.tokenHeaderName = 'RequestVerificationToken'; + + abp.security.antiForgery.getToken = function () { + return abp.utils.getCookieValue(abp.security.antiForgery.tokenCookieName); + }; + + /* CLOCK *****************************************/ + abp.clock = abp.clock || {}; + + abp.clock.kind = 'Unspecified'; + + abp.clock.supportsMultipleTimezone = function () { + return abp.clock.kind === 'Utc'; + }; + + var toLocal = function (date) { + return new Date( + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() + ); + }; + + var toUtc = function (date) { + return Date.UTC( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds(), + date.getUTCMilliseconds() + ); + }; + + abp.clock.now = function () { + if (abp.clock.kind === 'Utc') { + return toUtc(new Date()); + } + return new Date(); + }; + + abp.clock.normalize = function (date) { + var kind = abp.clock.kind; + + if (kind === 'Unspecified') { + return date; + } + + if (kind === 'Local') { + return toLocal(date); + } + + if (kind === 'Utc') { + return toUtc(date); + } + }; + + /* FEATURES *************************************************/ + + abp.features = abp.features || {}; + + abp.features.values = abp.features.values || {}; + + abp.features.isEnabled = function(name){ + var value = abp.features.get(name); + return value == 'true' || value == 'True'; + } + + abp.features.get = function (name) { + return abp.features.values[name]; + }; + + /* GLOBAL FEATURES *************************************************/ + + abp.globalFeatures = abp.globalFeatures || {}; + + abp.globalFeatures.enabledFeatures = abp.globalFeatures.enabledFeatures || []; + + abp.globalFeatures.isEnabled = function(name){ + return abp.globalFeatures.enabledFeatures.indexOf(name) != -1; + } + +})(); diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/jquery/abp.jquery.js b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/jquery/abp.jquery.js new file mode 100644 index 00000000..7dc3439d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/jquery/abp.jquery.js @@ -0,0 +1,411 @@ +var abp = abp || {}; +(function($) { + + if (!$) { + throw "abp/jquery library requires the jquery library included to the page!"; + } + + // ABP CORE OVERRIDES ///////////////////////////////////////////////////// + + abp.message._showMessage = function (message, title) { + alert((title || '') + ' ' + message); + + return $.Deferred(function ($dfd) { + $dfd.resolve(); + }); + }; + + abp.message.confirm = function (message, titleOrCallback, callback) { + if (titleOrCallback && !(typeof titleOrCallback == 'string')) { + callback = titleOrCallback; + } + + var result = confirm(message); + callback && callback(result); + + return $.Deferred(function ($dfd) { + $dfd.resolve(result); + }); + }; + + abp.utils.isFunction = function (obj) { + return $.isFunction(obj); + }; + + // JQUERY EXTENSIONS ////////////////////////////////////////////////////// + + $.fn.findWithSelf = function (selector) { + return this.filter(selector).add(this.find(selector)); + }; + + // DOM //////////////////////////////////////////////////////////////////// + + abp.dom = abp.dom || {}; + + abp.dom.onNodeAdded = function (callback) { + abp.event.on('abp.dom.nodeAdded', callback); + }; + + abp.dom.onNodeRemoved = function (callback) { + abp.event.on('abp.dom.nodeRemoved', callback); + }; + + var mutationObserverCallback = function (mutationsList) { + for (var i = 0; i < mutationsList.length; i++) { + var mutation = mutationsList[i]; + if (mutation.type === 'childList') { + if (mutation.addedNodes && mutation.removedNodes.length) { + for (var k = 0; k < mutation.removedNodes.length; k++) { + abp.event.trigger( + 'abp.dom.nodeRemoved', + { + $el: $(mutation.removedNodes[k]) + } + ); + } + } + + if (mutation.addedNodes && mutation.addedNodes.length) { + for (var j = 0; j < mutation.addedNodes.length; j++) { + abp.event.trigger( + 'abp.dom.nodeAdded', + { + $el: $(mutation.addedNodes[j]) + } + ); + } + } + } + } + }; + + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); + + // AJAX /////////////////////////////////////////////////////////////////// + + abp.ajax = function (userOptions) { + userOptions = userOptions || {}; + + var options = $.extend(true, {}, abp.ajax.defaultOpts, userOptions); + + options.success = undefined; + options.error = undefined; + + var xhr = null; + var promise = $.Deferred(function ($dfd) { + xhr = $.ajax(options) + .done(function (data, textStatus, jqXHR) { + $dfd.resolve(data); + userOptions.success && userOptions.success(data); + }).fail(function (jqXHR) { + if(jqXHR.statusText === 'abort') { + //ajax request is abort, ignore error handle. + return; + } + if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') { + abp.ajax.handleAbpErrorResponse(jqXHR, userOptions, $dfd); + } else { + abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd); + } + }); + }).promise(); + + promise['jqXHR'] = xhr; + + return promise; + }; + + $.extend(abp.ajax, { + defaultOpts: { + dataType: 'json', + type: 'POST', + contentType: 'application/json', + headers: { + 'X-Requested-With': 'XMLHttpRequest' + } + }, + + defaultError: { + message: 'An error has occurred!', + details: 'Error detail not sent by server.' + }, + + defaultError401: { + message: 'You are not authenticated!', + details: 'You should be authenticated (sign in) in order to perform this operation.' + }, + + defaultError403: { + message: 'You are not authorized!', + details: 'You are not allowed to perform this operation.' + }, + + defaultError404: { + message: 'Resource not found!', + details: 'The resource requested could not found on the server.' + }, + + logError: function (error) { + abp.log.error(error); + }, + + showError: function (error) { + if (error.details) { + return abp.message.error(error.details, error.message); + } else { + return abp.message.error(error.message || abp.ajax.defaultError.message); + } + }, + + handleTargetUrl: function (targetUrl) { + if (!targetUrl) { + location.href = abp.appPath; + } else { + location.href = targetUrl; + } + }, + + handleErrorStatusCode: function (status) { + switch (status) { + case 401: + abp.ajax.handleUnAuthorizedRequest( + abp.ajax.showError(abp.ajax.defaultError401), + abp.appPath + ); + break; + case 403: + abp.ajax.showError(abp.ajax.defaultError403); + break; + case 404: + abp.ajax.showError(abp.ajax.defaultError404); + break; + default: + abp.ajax.showError(abp.ajax.defaultError); + break; + } + }, + + handleNonAbpErrorResponse: function (jqXHR, userOptions, $dfd) { + if (userOptions.abpHandleError !== false) { + abp.ajax.handleErrorStatusCode(jqXHR.status); + } + + $dfd.reject.apply(this, arguments); + userOptions.error && userOptions.error.apply(this, arguments); + }, + + handleAbpErrorResponse: function (jqXHR, userOptions, $dfd) { + var messagePromise = null; + + var responseJSON = jqXHR.responseJSON ? jqXHR.responseJSON : JSON.parse(jqXHR.responseText); + + if (userOptions.abpHandleError !== false) { + messagePromise = abp.ajax.showError(responseJSON.error); + } + + abp.ajax.logError(responseJSON.error); + + $dfd && $dfd.reject(responseJSON.error, jqXHR); + userOptions.error && userOptions.error(responseJSON.error, jqXHR); + + if (jqXHR.status === 401 && userOptions.abpHandleError !== false) { + abp.ajax.handleUnAuthorizedRequest(messagePromise); + } + }, + + handleUnAuthorizedRequest: function (messagePromise, targetUrl) { + if (messagePromise) { + messagePromise.done(function () { + abp.ajax.handleTargetUrl(targetUrl); + }); + } else { + abp.ajax.handleTargetUrl(targetUrl); + } + }, + + blockUI: function (options) { + if (options.blockUI) { + if (options.blockUI === true) { //block whole page + abp.ui.setBusy(); + } else { //block an element + abp.ui.setBusy(options.blockUI); + } + } + }, + + unblockUI: function (options) { + if (options.blockUI) { + if (options.blockUI === true) { //unblock whole page + abp.ui.clearBusy(); + } else { //unblock an element + abp.ui.clearBusy(options.blockUI); + } + } + }, + + ajaxSendHandler: function (event, request, settings) { + var token = abp.security.antiForgery.getToken(); + if (!token) { + return; + } + + if (!settings.headers || settings.headers[abp.security.antiForgery.tokenHeaderName] === undefined) { + request.setRequestHeader(abp.security.antiForgery.tokenHeaderName, token); + } + } + }); + + $(document).ajaxSend(function (event, request, settings) { + return abp.ajax.ajaxSendHandler(event, request, settings); + }); + + abp.event.on('abp.configurationInitialized', function () { + var l = abp.localization.getResource('AbpUi'); + + abp.ajax.defaultError.message = l('DefaultErrorMessage'); + abp.ajax.defaultError.details = l('DefaultErrorMessageDetail'); + abp.ajax.defaultError401.message = l('DefaultErrorMessage401'); + abp.ajax.defaultError401.details = l('DefaultErrorMessage401Detail'); + abp.ajax.defaultError403.message = l('DefaultErrorMessage403'); + abp.ajax.defaultError403.details = l('DefaultErrorMessage403Detail'); + abp.ajax.defaultError404.message = l('DefaultErrorMessage404'); + abp.ajax.defaultError404.details = l('DefaultErrorMessage404Detail'); + }); + + // RESOURCE LOADER //////////////////////////////////////////////////////// + + /* UrlStates enum */ + var UrlStates = { + LOADING: 'LOADING', + LOADED: 'LOADED', + FAILED: 'FAILED' + }; + + /* UrlInfo class */ + function UrlInfo(url) { + this.url = url; + this.state = UrlStates.LOADING; + this.loadCallbacks = []; + this.failCallbacks = []; + } + + UrlInfo.prototype.succeed = function () { + this.state = UrlStates.LOADED; + for (var i = 0; i < this.loadCallbacks.length; i++) { + this.loadCallbacks[i](); + } + }; + + UrlInfo.prototype.failed = function () { + this.state = UrlStates.FAILED; + for (var i = 0; i < this.failCallbacks.length; i++) { + this.failCallbacks[i](); + } + }; + + UrlInfo.prototype.handleCallbacks = function (loadCallback, failCallback) { + switch (this.state) { + case UrlStates.LOADED: + loadCallback && loadCallback(); + break; + case UrlStates.FAILED: + failCallback && failCallback(); + break; + case UrlStates.LOADING: + this.addCallbacks(loadCallback, failCallback); + break; + } + }; + + UrlInfo.prototype.addCallbacks = function (loadCallback, failCallback) { + loadCallback && this.loadCallbacks.push(loadCallback); + failCallback && this.failCallbacks.push(failCallback); + }; + + /* ResourceLoader API */ + + abp.ResourceLoader = (function () { + + var _urlInfos = {}; + + function getCacheKey(url) { + return url; + } + + function appendTimeToUrl(url) { + + if (url.indexOf('?') < 0) { + url += '?'; + } else { + url += '&'; + } + + url += '_=' + new Date().getTime(); + + return url; + } + + var _loadFromUrl = function (url, loadCallback, failCallback, serverLoader) { + + var cacheKey = getCacheKey(url); + + var urlInfo = _urlInfos[cacheKey]; + + if (urlInfo) { + urlInfo.handleCallbacks(loadCallback, failCallback); + return; + } + + _urlInfos[cacheKey] = urlInfo = new UrlInfo(url); + urlInfo.addCallbacks(loadCallback, failCallback); + + serverLoader(urlInfo); + }; + + var _loadScript = function (url, loadCallback, failCallback) { + var nonce = document.body.nonce || document.body.getAttribute('nonce'); + _loadFromUrl(url, loadCallback, failCallback, function (urlInfo) { + $.get({ + url: url, + dataType: 'text' + }) + .done(function (script) { + if(nonce){ + $.globalEval(script, { nonce: nonce}); + }else{ + $.globalEval(script); + } + urlInfo.succeed(); + }) + .fail(function () { + urlInfo.failed(); + }); + }); + }; + + var _loadStyle = function (url) { + _loadFromUrl(url, undefined, undefined, function (urlInfo) { + + $('', { + rel: 'stylesheet', + type: 'text/css', + href: appendTimeToUrl(url) + }).appendTo('head'); + }); + }; + + return { + loadScript: _loadScript, + loadStyle: _loadStyle + } + })(); + +})(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/luxon/abp.luxon.js b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/luxon/abp.luxon.js new file mode 100644 index 00000000..b04de7ca --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/luxon/abp.luxon.js @@ -0,0 +1,46 @@ +var abp = abp || {}; +(function () { + + if (!luxon) { + throw "abp/luxon library requires the luxon library included to the page!"; + } + + /* TIMING *************************************************/ + + abp.timing = abp.timing || {}; + + var setObjectValue = function (obj, property, value) { + if (typeof property === "string") { + property = property.split('.'); + } + + if (property.length > 1) { + var p = property.shift(); + setObjectValue(obj[p], property, value); + } else { + obj[property[0]] = value; + } + } + + var getObjectValue = function (obj, property) { + return property.split('.').reduce((a, v) => a[v], obj) + } + + abp.timing.convertFieldsToIsoDate = function (form, fields) { + for (var field of fields) { + var dateTime = luxon.DateTime + .fromFormat( + getObjectValue(form, field), + abp.localization.currentCulture.dateTimeFormat.shortDatePattern, + {locale: abp.localization.currentCulture.cultureName} + ); + + if (!dateTime.invalid) { + setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss")) + } + } + + return form; + } + +})(jQuery); diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js new file mode 100644 index 00000000..28ebcc37 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js @@ -0,0 +1,694 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('just-compare')) : + typeof define === 'function' && define.amd ? define('@abp/utils', ['exports', 'just-compare'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.utils = global.abp.utils || {}, global.abp.utils.common = {}), global.compare)); +}(this, (function (exports, compare) { 'use strict'; + + compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + /* global Reflect, Promise */ + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) + if (b.hasOwnProperty(p)) + d[p] = b[p]; }; + return extendStatics(d, b); + }; + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + function __rest(s, e) { + var t = {}; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + } + function __decorate(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; + } + function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); }; + } + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") + return Reflect.metadata(metadataKey, metadataValue); + } + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { + step(generator.next(value)); + } + catch (e) { + reject(e); + } } + function rejected(value) { try { + step(generator["throw"](value)); + } + catch (e) { + reject(e); + } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + function __generator(thisArg, body) { + var _ = { label: 0, sent: function () { if (t[0] & 1) + throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } + catch (e) { + op = [6, e]; + y = 0; + } + finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + } + var __createBinding = Object.create ? (function (o, m, k, k2) { + if (k2 === undefined) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } }); + }) : (function (o, m, k, k2) { + if (k2 === undefined) + k2 = k; + o[k2] = m[k]; + }); + function __exportStar(m, exports) { + for (var p in m) + if (p !== "default" && !exports.hasOwnProperty(p)) + __createBinding(exports, m, p); + } + function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) + return m.call(o); + if (o && typeof o.length === "number") + return { + next: function () { + if (o && i >= o.length) + o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + } + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) + return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } + catch (error) { + e = { error: error }; + } + finally { + try { + if (r && !r.done && (m = i["return"])) + m.call(i); + } + finally { + if (e) + throw e.error; + } + } + return ar; + } + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) + s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; + } + ; + function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + } + function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) + i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { + step(g[n](v)); + } + catch (e) { + settle(q[0][3], e); + } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) + resume(q[0][0], q[0][1]); } + } + function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } + } + function __asyncValues(o) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } + } + function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; + } + return cooked; + } + ; + var __setModuleDefault = Object.create ? (function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function (o, v) { + o["default"] = v; + }; + function __importStar(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) + for (var k in mod) + if (Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; + } + function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; + } + function __classPrivateFieldGet(receiver, privateMap) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return privateMap.get(receiver); + } + function __classPrivateFieldSet(receiver, privateMap, value) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to set private field on non-instance"); + } + privateMap.set(receiver, value); + return value; + } + + var ListNode = /** @class */ (function () { + function ListNode(value) { + this.value = value; + } + return ListNode; + }()); + var LinkedList = /** @class */ (function () { + function LinkedList() { + this.size = 0; + } + Object.defineProperty(LinkedList.prototype, "head", { + get: function () { + return this.first; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LinkedList.prototype, "tail", { + get: function () { + return this.last; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LinkedList.prototype, "length", { + get: function () { + return this.size; + }, + enumerable: false, + configurable: true + }); + LinkedList.prototype.attach = function (value, previousNode, nextNode) { + if (!previousNode) + return this.addHead(value); + if (!nextNode) + return this.addTail(value); + var node = new ListNode(value); + node.previous = previousNode; + previousNode.next = node; + node.next = nextNode; + nextNode.previous = node; + this.size++; + return node; + }; + LinkedList.prototype.attachMany = function (values, previousNode, nextNode) { + if (!values.length) + return []; + if (!previousNode) + return this.addManyHead(values); + if (!nextNode) + return this.addManyTail(values); + var list = new LinkedList(); + list.addManyTail(values); + list.first.previous = previousNode; + previousNode.next = list.first; + list.last.next = nextNode; + nextNode.previous = list.last; + this.size += values.length; + return list.toNodeArray(); + }; + LinkedList.prototype.detach = function (node) { + if (!node.previous) + return this.dropHead(); + if (!node.next) + return this.dropTail(); + node.previous.next = node.next; + node.next.previous = node.previous; + this.size--; + return node; + }; + LinkedList.prototype.add = function (value) { + var _this = this; + return { + after: function () { + var _a; + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params)); + }, + before: function () { + var _a; + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params)); + }, + byIndex: function (position) { return _this.addByIndex(value, position); }, + head: function () { return _this.addHead(value); }, + tail: function () { return _this.addTail(value); }, + }; + }; + LinkedList.prototype.addMany = function (values) { + var _this = this; + return { + after: function () { + var _a; + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params)); + }, + before: function () { + var _a; + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params)); + }, + byIndex: function (position) { return _this.addManyByIndex(values, position); }, + head: function () { return _this.addManyHead(values); }, + tail: function () { return _this.addManyTail(values); }, + }; + }; + LinkedList.prototype.addAfter = function (value, previousValue, compareFn) { + if (compareFn === void 0) { compareFn = compare; } + var previous = this.find(function (node) { return compareFn(node.value, previousValue); }); + return previous ? this.attach(value, previous, previous.next) : this.addTail(value); + }; + LinkedList.prototype.addBefore = function (value, nextValue, compareFn) { + if (compareFn === void 0) { compareFn = compare; } + var next = this.find(function (node) { return compareFn(node.value, nextValue); }); + return next ? this.attach(value, next.previous, next) : this.addHead(value); + }; + LinkedList.prototype.addByIndex = function (value, position) { + if (position < 0) + position += this.size; + else if (position >= this.size) + return this.addTail(value); + if (position <= 0) + return this.addHead(value); + var next = this.get(position); + return this.attach(value, next.previous, next); + }; + LinkedList.prototype.addHead = function (value) { + var node = new ListNode(value); + node.next = this.first; + if (this.first) + this.first.previous = node; + else + this.last = node; + this.first = node; + this.size++; + return node; + }; + LinkedList.prototype.addTail = function (value) { + var node = new ListNode(value); + if (this.first) { + node.previous = this.last; + this.last.next = node; + this.last = node; + } + else { + this.first = node; + this.last = node; + } + this.size++; + return node; + }; + LinkedList.prototype.addManyAfter = function (values, previousValue, compareFn) { + if (compareFn === void 0) { compareFn = compare; } + var previous = this.find(function (node) { return compareFn(node.value, previousValue); }); + return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values); + }; + LinkedList.prototype.addManyBefore = function (values, nextValue, compareFn) { + if (compareFn === void 0) { compareFn = compare; } + var next = this.find(function (node) { return compareFn(node.value, nextValue); }); + return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values); + }; + LinkedList.prototype.addManyByIndex = function (values, position) { + if (position < 0) + position += this.size; + if (position <= 0) + return this.addManyHead(values); + if (position >= this.size) + return this.addManyTail(values); + var next = this.get(position); + return this.attachMany(values, next.previous, next); + }; + LinkedList.prototype.addManyHead = function (values) { + var _this = this; + return values.reduceRight(function (nodes, value) { + nodes.unshift(_this.addHead(value)); + return nodes; + }, []); + }; + LinkedList.prototype.addManyTail = function (values) { + var _this = this; + return values.map(function (value) { return _this.addTail(value); }); + }; + LinkedList.prototype.drop = function () { + var _this = this; + return { + byIndex: function (position) { return _this.dropByIndex(position); }, + byValue: function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return _this.dropByValue.apply(_this, params); + }, + byValueAll: function () { + var params = []; + for (var _i = 0; _i < arguments.length; _i++) { + params[_i] = arguments[_i]; + } + return _this.dropByValueAll.apply(_this, params); + }, + head: function () { return _this.dropHead(); }, + tail: function () { return _this.dropTail(); }, + }; + }; + LinkedList.prototype.dropMany = function (count) { + var _this = this; + return { + byIndex: function (position) { return _this.dropManyByIndex(count, position); }, + head: function () { return _this.dropManyHead(count); }, + tail: function () { return _this.dropManyTail(count); }, + }; + }; + LinkedList.prototype.dropByIndex = function (position) { + if (position < 0) + position += this.size; + var current = this.get(position); + return current ? this.detach(current) : undefined; + }; + LinkedList.prototype.dropByValue = function (value, compareFn) { + if (compareFn === void 0) { compareFn = compare; } + var position = this.findIndex(function (node) { return compareFn(node.value, value); }); + return position < 0 ? undefined : this.dropByIndex(position); + }; + LinkedList.prototype.dropByValueAll = function (value, compareFn) { + if (compareFn === void 0) { compareFn = compare; } + var dropped = []; + for (var current = this.first, position = 0; current; position++, current = current.next) { + if (compareFn(current.value, value)) { + dropped.push(this.dropByIndex(position - dropped.length)); + } + } + return dropped; + }; + LinkedList.prototype.dropHead = function () { + var head = this.first; + if (head) { + this.first = head.next; + if (this.first) + this.first.previous = undefined; + else + this.last = undefined; + this.size--; + return head; + } + return undefined; + }; + LinkedList.prototype.dropTail = function () { + var tail = this.last; + if (tail) { + this.last = tail.previous; + if (this.last) + this.last.next = undefined; + else + this.first = undefined; + this.size--; + return tail; + } + return undefined; + }; + LinkedList.prototype.dropManyByIndex = function (count, position) { + if (count <= 0) + return []; + if (position < 0) + position = Math.max(position + this.size, 0); + else if (position >= this.size) + return []; + count = Math.min(count, this.size - position); + var dropped = []; + while (count--) { + var current = this.get(position); + dropped.push(this.detach(current)); + } + return dropped; + }; + LinkedList.prototype.dropManyHead = function (count) { + if (count <= 0) + return []; + count = Math.min(count, this.size); + var dropped = []; + while (count--) + dropped.unshift(this.dropHead()); + return dropped; + }; + LinkedList.prototype.dropManyTail = function (count) { + if (count <= 0) + return []; + count = Math.min(count, this.size); + var dropped = []; + while (count--) + dropped.push(this.dropTail()); + return dropped; + }; + LinkedList.prototype.find = function (predicate) { + for (var current = this.first, position = 0; current; position++, current = current.next) { + if (predicate(current, position, this)) + return current; + } + return undefined; + }; + LinkedList.prototype.findIndex = function (predicate) { + for (var current = this.first, position = 0; current; position++, current = current.next) { + if (predicate(current, position, this)) + return position; + } + return -1; + }; + LinkedList.prototype.forEach = function (iteratorFn) { + for (var node = this.first, position = 0; node; position++, node = node.next) { + iteratorFn(node, position, this); + } + }; + LinkedList.prototype.get = function (position) { + return this.find(function (_, index) { return position === index; }); + }; + LinkedList.prototype.indexOf = function (value, compareFn) { + if (compareFn === void 0) { compareFn = compare; } + return this.findIndex(function (node) { return compareFn(node.value, value); }); + }; + LinkedList.prototype.toArray = function () { + var array = new Array(this.size); + this.forEach(function (node, index) { return (array[index] = node.value); }); + return array; + }; + LinkedList.prototype.toNodeArray = function () { + var array = new Array(this.size); + this.forEach(function (node, index) { return (array[index] = node); }); + return array; + }; + LinkedList.prototype.toString = function (mapperFn) { + if (mapperFn === void 0) { mapperFn = JSON.stringify; } + return this.toArray() + .map(function (value) { return mapperFn(value); }) + .join(' <-> '); + }; + // Cannot use Generator type because of ng-packagr + LinkedList.prototype[Symbol.iterator] = function () { + var node, position; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + node = this.first, position = 0; + _a.label = 1; + case 1: + if (!node) return [3 /*break*/, 4]; + return [4 /*yield*/, node.value]; + case 2: + _a.sent(); + _a.label = 3; + case 3: + position++, node = node.next; + return [3 /*break*/, 1]; + case 4: return [2 /*return*/]; + } + }); + }; + return LinkedList; + }()); + + /* + * Public API Surface of utils + */ + + /** + * Generated bundle index. Do not edit. + */ + + exports.LinkedList = LinkedList; + exports.ListNode = ListNode; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=abp-utils.umd.js.map diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map new file mode 100644 index 00000000..c8cf999f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n 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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js new file mode 100644 index 00000000..57b22e51 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js @@ -0,0 +1,2 @@ +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("just-compare")):"function"==typeof define&&define.amd?define("@abp/utils",["exports","just-compare"],r):r(((t=t||self).abp=t.abp||{},t.abp.utils=t.abp.utils||{},t.abp.utils.common={}),t.compare)}(this,(function(t,r){"use strict";r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;function e(t,r){var e,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(o){return function(u){return function(o){if(e)throw new TypeError("Generator is already executing.");for(;a;)try{if(e=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(i)throw i.error}}return a}function i(){for(var t=[],r=0;r=this.size)return this.addTail(t);if(r<=0)return this.addHead(t);var e=this.get(r);return this.attach(t,e.previous,e)},t.prototype.addHead=function(t){var r=new o(t);return r.next=this.first,this.first?this.first.previous=r:this.last=r,this.first=r,this.size++,r},t.prototype.addTail=function(t){var r=new o(t);return this.first?(r.previous=this.last,this.last.next=r,this.last=r):(this.first=r,this.last=r),this.size++,r},t.prototype.addManyAfter=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i,i.next):this.addManyTail(t)},t.prototype.addManyBefore=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i.previous,i):this.addManyHead(t)},t.prototype.addManyByIndex=function(t,r){if(r<0&&(r+=this.size),r<=0)return this.addManyHead(t);if(r>=this.size)return this.addManyTail(t);var e=this.get(r);return this.attachMany(t,e.previous,e)},t.prototype.addManyHead=function(t){var r=this;return t.reduceRight((function(t,e){return t.unshift(r.addHead(e)),t}),[])},t.prototype.addManyTail=function(t){var r=this;return t.map((function(t){return r.addTail(t)}))},t.prototype.drop=function(){var t=this;return{byIndex:function(r){return t.dropByIndex(r)},byValue:function(){for(var r=[],e=0;e=this.size)return[];t=Math.min(t,this.size-r);for(var e=[];t--;){var n=this.get(r);e.push(this.detach(n))}return e},t.prototype.dropManyHead=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.unshift(this.dropHead());return r},t.prototype.dropManyTail=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.push(this.dropTail());return r},t.prototype.find=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return r},t.prototype.findIndex=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return e;return-1},t.prototype.forEach=function(t){for(var r=this.first,e=0;r;e++,r=r.next)t(r,e,this)},t.prototype.get=function(t){return this.find((function(r,e){return t===e}))},t.prototype.indexOf=function(t,e){return void 0===e&&(e=r),this.findIndex((function(r){return e(r.value,t)}))},t.prototype.toArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r.value})),t},t.prototype.toNodeArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r})),t},t.prototype.toString=function(t){return void 0===t&&(t=JSON.stringify),this.toArray().map((function(r){return t(r)})).join(" <-> ")},t.prototype[Symbol.iterator]=function(){var t;return e(this,(function(r){switch(r.label){case 0:t=this.first,0,r.label=1;case 1:return t?[4,t.value]:[3,4];case 2:r.sent(),r.label=3;case 3:return t=t.next,[3,1];case 4:return[2]}}))},t}();t.LinkedList=a,t.ListNode=o,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=abp-utils.umd.min.js.map \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map new file mode 100644 index 00000000..529ba4c4 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n 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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.css.map b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.css.map new file mode 100644 index 00000000..7e08a210 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/datepicker.less","build/build.less"],"names":[],"mappings":"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","sourcesContent":[".datepicker {\n\tpadding: 4px;\n\t.border-radius(@baseBorderRadius);\n\t&-inline {\n\t\twidth: 220px;\n\t}\n\tdirection: ltr;\n\t&-rtl {\n\t\tdirection: rtl;\n\t\t&.dropdown-menu { left: auto; }\n\t\ttable tr td span {\n\t\t\tfloat: right;\n\t\t}\n\t}\n\t&-dropdown {\n\t\ttop: 0;\n\t\tleft: 0;\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left: 7px solid transparent;\n\t\t\tborder-right: 7px solid transparent;\n\t\t\tborder-bottom: 7px solid @grayLight;\n\t\t\tborder-top: 0;\n\t\t\tborder-bottom-color: rgba(0,0,0,.2);\n\t\t\tposition: absolute;\n\t\t}\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left: 6px solid transparent;\n\t\t\tborder-right: 6px solid transparent;\n\t\t\tborder-bottom: 6px solid @white;\n\t\t\tborder-top: 0;\n\t\t\tposition: absolute;\n\t\t}\n\t\t&.datepicker-orient-left:before { left: 6px; }\n\t\t&.datepicker-orient-left:after { left: 7px; }\n\t\t&.datepicker-orient-right:before { right: 6px; }\n\t\t&.datepicker-orient-right:after { right: 7px; }\n\t\t&.datepicker-orient-bottom:before { top: -7px; }\n\t\t&.datepicker-orient-bottom:after { top: -6px; }\n\t\t&.datepicker-orient-top:before {\n\t\t\tbottom: -7px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top: 7px solid @grayLight;\n\t\t}\n\t\t&.datepicker-orient-top:after {\n\t\t\tbottom: -6px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top: 6px solid @white;\n\t\t}\n\t}\n\ttable {\n\t\tmargin: 0;\n\t\t-webkit-touch-callout: none;\n\t\t-webkit-user-select: none;\n\t\t-khtml-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t}\n\ttd, th {\n\t\ttext-align: center;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\t.border-radius(4px);\n\n\t\tborder: none;\n\t}\n\t// Inline display inside a table presents some problems with\n\t// border and background colors.\n\t.table-striped & table tr {\n\t\ttd, th {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\ttable tr td {\n\t\t&.day:hover,\n\t\t&.day.focused {\n\t\t\tbackground: @grayLighter;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.old,\n\t\t&.new {\n\t\t\tcolor: @grayLight;\n\t\t}\n\t\t&.disabled,\n\t\t&.disabled:hover {\n\t\t\tbackground: none;\n\t\t\tcolor: @grayLight;\n\t\t\tcursor: default;\n\t\t}\n\t\t&.highlighted {\n\t\t\tbackground: @infoBackground;\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t&.today,\n\t\t&.today:hover,\n\t\t&.today.disabled,\n\t\t&.today.disabled:hover {\n\t\t\t@todayBackground: lighten(@orange, 30%);\n\t\t\t.buttonBackground(@todayBackground, spin(@todayBackground, 20));\n\t\t\tcolor: #000;\n\t\t}\n\t\t&.today:hover:hover { // Thank bootstrap 2.0 for this selector...\n\t\t\t// TODO: Bump min BS to 2.1, use @textColor in buttonBackground above\n\t\t\tcolor: #000;\n\t\t}\n\t\t&.today.active:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t&.range,\n\t\t&.range:hover,\n\t\t&.range.disabled,\n\t\t&.range.disabled:hover {\n\t\t\tbackground: @grayLighter;\n\t\t\t.border-radius(0);\n\t\t}\n\t\t&.range.today,\n\t\t&.range.today:hover,\n\t\t&.range.today.disabled,\n\t\t&.range.today.disabled:hover {\n\t\t\t@todayBackground: mix(@orange, @grayLighter, 50%);\n\t\t\t.buttonBackground(@todayBackground, spin(@todayBackground, 20));\n\t\t\t.border-radius(0);\n\t\t}\n\t\t&.selected,\n\t\t&.selected:hover,\n\t\t&.selected.disabled,\n\t\t&.selected.disabled:hover {\n\t\t\t.buttonBackground(lighten(@grayLight, 10), darken(@grayLight, 10));\n\t\t\tcolor: #fff;\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\t&.active,\n\t\t&.active:hover,\n\t\t&.active.disabled,\n\t\t&.active.disabled:hover {\n\t\t\t.buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20));\n\t\t\tcolor: #fff;\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\tspan {\n\t\t\tdisplay: block;\n\t\t\twidth: 23%;\n\t\t\theight: 54px;\n\t\t\tline-height: 54px;\n\t\t\tfloat: left;\n\t\t\tmargin: 1%;\n\t\t\tcursor: pointer;\n\t\t\t.border-radius(4px);\n\t\t\t&:hover,\n\t\t\t&.focused {\n\t\t\t\tbackground: @grayLighter;\n\t\t\t}\n\t\t\t&.disabled,\n\t\t\t&.disabled:hover {\n\t\t\t\tbackground: none;\n\t\t\t\tcolor: @grayLight;\n\t\t\t\tcursor: default;\n\t\t\t}\n\t\t\t&.active,\n\t\t\t&.active:hover,\n\t\t\t&.active.disabled,\n\t\t\t&.active.disabled:hover {\n\t\t\t\t.buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20));\n\t\t\t\tcolor: #fff;\n\t\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t\t}\n\t\t\t&.old,\n\t\t\t&.new {\n\t\t\t\tcolor: @grayLight;\n\t\t\t}\n\t\t}\n\t}\n\n\t.datepicker-switch {\n\t\twidth: 145px;\n\t}\n\n\t.datepicker-switch,\n\t.prev,\n\t.next,\n\ttfoot tr th {\n\t\tcursor: pointer;\n\t\t&:hover {\n\t\t\tbackground: @grayLighter;\n\t\t}\n\t}\n\n\t.prev, .next {\n\t\t&.disabled {\n\t\t\tvisibility: hidden;\n\t\t}\n\t}\n\n\t// Basic styling for calendar-week cells\n\t.cw {\n\t\tfont-size: 10px;\n\t\twidth: 12px;\n\t\tpadding: 0 2px 0 5px;\n\t\tvertical-align: middle;\n\t}\n}\n.input-append,\n.input-prepend {\n\t&.date .add-on {\n\t\tcursor: pointer;\n\n\t\ti {\n\t\t\tmargin-top: 3px;\n\t\t}\n\t}\n}\n.input-daterange {\n\tinput {\n\t\ttext-align:center;\n\t}\n\tinput:first-child {\n\t\t.border-radius(3px 0 0 3px);\n\t}\n\tinput:last-child {\n\t\t.border-radius(0 3px 3px 0);\n\t}\n\t.add-on {\n\t\tdisplay: inline-block;\n\t\twidth: auto;\n\t\tmin-width: 16px;\n\t\theight: @baseLineHeight;\n\t\tpadding: 4px 5px;\n\t\tfont-weight: normal;\n\t\tline-height: @baseLineHeight;\n\t\ttext-align: center;\n\t\ttext-shadow: 0 1px 0 @white;\n\t\tvertical-align: middle;\n\t\tbackground-color: @grayLighter;\n\t\tborder: 1px solid #ccc;\n\t\tmargin-left: -5px;\n\t\tmargin-right: -5px;\n\t}\n}\n","// Datepicker .less buildfile. Includes select mixins/variables from bootstrap\n// and imports the included datepicker.less to output a minimal datepicker.css\n//\n// Usage:\n// lessc build.less datepicker.css\n//\n// Variables and mixins copied from bootstrap 2.0.2\n\n// Variables\n@grayLight: #999;\n@grayLighter: #eee;\n@white: #fff;\n@linkColor: #08c;\n@btnPrimaryBackground: @linkColor;\n@orange: #f89406;\n@infoBackground: #d9edf7;\n@baseLineHeight: 18px;\n@baseBorderRadius: 4px;\n\n// Mixins\n\n// Border Radius\n.border-radius(@radius: 5px) {\n -webkit-border-radius: @radius;\n -moz-border-radius: @radius;\n border-radius: @radius;\n}\n\n// Button backgrounds\n.buttonBackground(@startColor, @endColor) {\n .gradientBar(@startColor, @endColor);\n .reset-filter();\n &:hover, &:active, &.active, &.disabled, &[disabled] {\n background-color: @endColor;\n }\n &:active,\n &.active {\n background-color: darken(@endColor, 10%) e(\"\\9\");\n }\n}\n\n// Reset filters for IE\n.reset-filter() {\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n\n// Gradient Bar Colors for buttons and alerts\n.gradientBar(@primaryColor, @secondaryColor) {\n #gradient > .vertical(@primaryColor, @secondaryColor);\n border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);\n border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);\n}\n\n// Gradients\n#gradient {\n .vertical(@startColor: #555, @endColor: #333) {\n background-color: mix(@startColor, @endColor, 60%);\n background-image: -moz-linear-gradient(to bottom, @startColor, @endColor); // FF 3.6+\n background-image: -ms-linear-gradient(to bottom, @startColor, @endColor); // IE10\n background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n background-image: -webkit-linear-gradient(to bottom, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n background-image: -o-linear-gradient(to bottom, @startColor, @endColor); // Opera 11.10\n background-image: linear-gradient(to bottom, @startColor, @endColor); // The standard\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",@startColor,@endColor)); // IE9 and down\n }\n}\n\n@import \"../less/datepicker.less\";\n"]} \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.css b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.css new file mode 100644 index 00000000..9d39187a --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.css @@ -0,0 +1,7 @@ +/*! + * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker) + * + * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0) + */ + +.datepicker{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker-rtl{direction:rtl}.datepicker-rtl.dropdown-menu{left:auto}.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #999;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.highlighted{background:#d9edf7;border-radius:0}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{background-color:#fde19a;background-image:-moz-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-o-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:linear-gradient(to bottom,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#000}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today[disabled]{background-color:#fdf59a}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active{background-color:#fbf069\9}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{background-color:#f3d17a;background-image:-moz-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-ms-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3c17a),to(#f3e97a));background-image:-webkit-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-o-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:linear-gradient(to bottom,#f3c17a,#f3e97a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);border-color:#f3e97a #f3e97a #edde34;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today[disabled]{background-color:#f3e97a}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active{background-color:#efe24b\9}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{background-color:#9e9e9e;background-image:-moz-linear-gradient(to bottom,#b3b3b3,grey);background-image:-ms-linear-gradient(to bottom,#b3b3b3,grey);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3b3b3),to(grey));background-image:-webkit-linear-gradient(to bottom,#b3b3b3,grey);background-image:-o-linear-gradient(to bottom,#b3b3b3,grey);background-image:linear-gradient(to bottom,#b3b3b3,grey);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);border-color:grey grey #595959;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected[disabled]{background-color:grey}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active{background-color:#666\9}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active[disabled]{background-color:#04c}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active{background-color:#039\9}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active[disabled]{background-color:#04c}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{background-color:#039\9}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .next.disabled,.datepicker .prev.disabled{visibility:hidden}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:400;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc;margin-left:-5px;margin-right:-5px} \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.js new file mode 100644 index 00000000..017a3de6 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/bootstrap-datepicker.min.js @@ -0,0 +1,8 @@ +/*! + * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker) + * + * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0) + */ + +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(c,d){return function(){return d!==b&&a.fn.datepicker.deprecated(d),this[c].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;c]/g)||[]).length<=0)return!0;return a(c).length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),!0!==e.multidate&&(e.multidate=Number(e.multidate)||!1,!1!==e.multidate&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-1/0&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-1/0),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],Array.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_applyEvents:function(a){for(var c,d,e,f=0;fe?(this.picker.addClass("datepicker-orient-right"),m+=l-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var o,p=this.o.orientation.y;if("auto"===p&&(o=-f+n-c,p=o<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+p),"top"===p?n-=c+parseInt(this.picker.css("padding-top")):n+=k,this.o.rtl){var q=e-(m+l);this.picker.css({top:n,right:q,zIndex:i})}else this.picker.css({top:n,left:m,zIndex:i});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="";for(this.o.calendarWeeks&&(c+=' ');b";c+="",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+=''+q[this.o.language].monthsShort[d]+"";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&bh)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),!1===l.enabled&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='"+t+"";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var e,f,g=new Date(this.viewDate),h=g.getUTCFullYear(),i=g.getUTCMonth(),j=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,k=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,m=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,n=q[this.o.language].today||q.en.today||"",o=q[this.o.language].clear||q.en.clear||"",p=q[this.o.language].titleFormat||q.en.titleFormat,s=d(),t=(!0===this.o.todayBtn||"linked"===this.o.todayBtn)&&s>=this.o.startDate&&s<=this.o.endDate&&!this.weekOfDateIsDisabled(s);if(!isNaN(h)&&!isNaN(i)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(g,p,this.o.language)),this.picker.find("tfoot .today").text(n).css("display",t?"table-cell":"none"),this.picker.find("tfoot .clear").text(o).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var u=c(h,i,0),v=u.getUTCDate();u.setUTCDate(v-(u.getUTCDay()-this.o.weekStart+7)%7);var w=new Date(u);u.getUTCFullYear()<100&&w.setUTCFullYear(u.getUTCFullYear()),w.setUTCDate(w.getUTCDate()+42),w=w.valueOf();for(var x,y,z=[];u.valueOf()"),this.o.calendarWeeks)){var A=new Date(+u+(this.o.weekStart-x-7)%7*864e5),B=new Date(Number(A)+(11-A.getUTCDay())%7*864e5),C=new Date(Number(C=c(B.getUTCFullYear(),0,1))+(11-C.getUTCDay())%7*864e5),D=(B-C)/864e5/7+1;z.push(''+D+"")}y=this.getClassNames(u),y.push("day");var E=u.getUTCDate();this.o.beforeShowDay!==a.noop&&(f=this.o.beforeShowDay(this._utc_to_local(u)),f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1===f.enabled&&y.push("disabled"),f.classes&&(y=y.concat(f.classes.split(/\s+/))),f.tooltip&&(e=f.tooltip),f.content&&(E=f.content)),y="function"==typeof a.uniqueSort?a.uniqueSort(y):a.unique(y),z.push(''+E+""),e=null,x===this.o.weekEnd&&z.push(""),u.setUTCDate(u.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(z.join(""));var F=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",G=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?F:h).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===h&&G.eq(b.getUTCMonth()).addClass("active")}),(hl)&&G.addClass("disabled"),h===j&&G.slice(0,k).addClass("disabled"),h===l&&G.slice(m+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var H=this;a.each(G,function(c,d){var e=new Date(h,c,1),f=H.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1!==f.enabled||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,h,j,l,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,h,j,l,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,h,j,l,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,g=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*j<=f,b=Math.floor(d/j)*j+j>h;break;case 0:a=d<=f&&e<=g,b=d>=h&&e>=i}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):!1===this.o.multidate?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"))&&this._trigger("changeYear",this.viewDate):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},clearDates:function(){a.each(this.pickers,function(a,b){b.clearDates()})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(-1!==g){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e=0&&e0;)this.pickers[h--].setUTCDate(e);else if(e>this.dates[i])for(;ithis.dates[i]&&(this.pickers[i].element.val()||"").length>0;)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",isInline:null,keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return!0===b&&(b=10),a<100&&(a+=2e3)>(new Date).getFullYear()+b&&(a-=100),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n'+o.templates.leftArrow+''+o.templates.rightArrow+"",contTemplate:'',footTemplate:''};r.template='

",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.10.0",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker-en-CA.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker-en-CA.min.js new file mode 100644 index 00000000..0aab38f3 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker-en-CA.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"},a.fn.datepicker.deprecated("This filename doesn't follow the convention, use bootstrap-datepicker.en-CA.js instead.")}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-DZ.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-DZ.min.js new file mode 100644 index 00000000..58096cf1 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-DZ.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["ar-DZ"]={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0,monthsTitle:"أشهر",clear:"إزالة",format:"yyyy/mm/dd",weekStart:0}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-tn.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-tn.min.js new file mode 100644 index 00000000..9d70dc2f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar-tn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["ar-tn"]={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js new file mode 100644 index 00000000..ece41af7 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js new file mode 100644 index 00000000..aa1edbf4 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1,clear:"Təmizlə",monthsTitle:"Aylar"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js new file mode 100644 index 00000000..28e8b22d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bm.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bm.min.js new file mode 100644 index 00000000..e0796a3b --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bm.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.bm={days:["Kari","Ntɛnɛn","Tarata","Araba","Alamisa","Juma","Sibiri"],daysShort:["Kar","Ntɛ","Tar","Ara","Ala","Jum","Sib"],daysMin:["Ka","Nt","Ta","Ar","Al","Ju","Si"],months:["Zanwuyekalo","Fewuruyekalo","Marisikalo","Awirilikalo","Mɛkalo","Zuwɛnkalo","Zuluyekalo","Utikalo","Sɛtanburukalo","ɔkutɔburukalo","Nowanburukalo","Desanburukalo"],monthsShort:["Zan","Few","Mar","Awi","Mɛ","Zuw","Zul","Uti","Sɛt","ɔku","Now","Des"],today:"Bi",monthsTitle:"Kalo",clear:"Ka jɔsi",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bn.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bn.min.js new file mode 100644 index 00000000..f67b5e26 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.bn={days:["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],daysShort:["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],daysMin:["রবি","সোম","মঙ্গল","বুধ","বৃহস্পতি","শুক্র","শনি"],months:["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],monthsShort:["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],today:"আজ",monthsTitle:"মাস",clear:"পরিষ্কার",weekStart:0,format:"mm/dd/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.br.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.br.min.js new file mode 100644 index 00000000..af3e3bd0 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.br.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.br={days:["Sul","Lun","Meurzh","Merc'her","Yaou","Gwener","Sadorn"],daysShort:["Sul","Lun","Meu.","Mer.","Yao.","Gwe.","Sad."],daysMin:["Su","L","Meu","Mer","Y","G","Sa"],months:["Genver","C'hwevrer","Meurzh","Ebrel","Mae","Mezheven","Gouere","Eost","Gwengolo","Here","Du","Kerzu"],monthsShort:["Genv.","C'hw.","Meur.","Ebre.","Mae","Mezh.","Goue.","Eost","Gwen.","Here","Du","Kerz."],today:"Hiziv",monthsTitle:"Miz",clear:"Dilemel",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js new file mode 100644 index 00000000..cfb06fde --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js new file mode 100644 index 00000000..d2135186 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ca={days:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],daysShort:["dg.","dl.","dt.","dc.","dj.","dv.","ds."],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthsShort:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],today:"Avui",monthsTitle:"Mesos",clear:"Esborra",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js new file mode 100644 index 00000000..42dfd1a2 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js new file mode 100644 index 00000000..f85ea031 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js new file mode 100644 index 00000000..53c81805 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",weekStart:1,clear:"Nulstil",format:"dd/mm/yyyy",monthsTitle:"Måneder"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js new file mode 100644 index 00000000..c76f75d3 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["So","Mo","Di","Mi","Do","Fr","Sa"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js new file mode 100644 index 00000000..046e9eb5 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-AU.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-AU.min.js new file mode 100644 index 00000000..b8d5f41c --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-AU.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-CA.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-CA.min.js new file mode 100644 index 00000000..7b1070f7 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-CA.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js new file mode 100644 index 00000000..2966f541 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-IE.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-IE.min.js new file mode 100644 index 00000000..dc8f71c0 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-IE.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-IE"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-NZ.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-NZ.min.js new file mode 100644 index 00000000..c374a8d4 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-NZ.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-NZ"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-US.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-US.min.js new file mode 100644 index 00000000..126f2ded --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-US.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-US"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"m/d/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-ZA.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-ZA.min.js new file mode 100644 index 00000000..885a928c --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-ZA.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-ZA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"yyyy/mm/d"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js new file mode 100644 index 00000000..736db021 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js new file mode 100644 index 00000000..f3cef5d2 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js new file mode 100644 index 00000000..34cd9c60 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js new file mode 100644 index 00000000..c5aa359e --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur",monthsTitle:"Hilabeteak",clear:"Ezabatu",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js new file mode 100644 index 00000000..8575237a --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fa={days:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js new file mode 100644 index 00000000..33af3d3e --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js new file mode 100644 index 00000000..fa24e3a1 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js new file mode 100644 index 00000000..1c6bcdcb --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js new file mode 100644 index 00000000..244cfba8 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],daysMin:["d","l","ma","me","j","v","s"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js new file mode 100644 index 00000000..3d92606b --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js new file mode 100644 index 00000000..191cb453 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js new file mode 100644 index 00000000..635baffa --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js new file mode 100644 index 00000000..8b34bce0 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js new file mode 100644 index 00000000..f9decf9a --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js new file mode 100644 index 00000000..a1cf653d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js new file mode 100644 index 00000000..bc9258d6 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Rb","Km","Jm","Sb"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],today:"Hari Ini",monthsTitle:"Bulan",clear:"Kosongkan",weekStart:0,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js new file mode 100644 index 00000000..f49bd18c --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js new file mode 100644 index 00000000..7e1adbb9 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js new file mode 100644 index 00000000..cc30766f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js new file mode 100644 index 00000000..e321f04f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js new file mode 100644 index 00000000..84f14c0e --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js new file mode 100644 index 00000000..bf2abc5d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"},a.fn.datepicker.deprecated('The language code "kh" is deprecated and will be removed in 2.0. For Khmer support use "km" instead.')}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js new file mode 100644 index 00000000..f4e2f3f1 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js new file mode 100644 index 00000000..648d83f8 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js new file mode 100644 index 00000000..9751ee5c --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js new file mode 100644 index 00000000..43393409 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js new file mode 100644 index 00000000..da78ea85 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js new file mode 100644 index 00000000..89cea00f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js new file mode 100644 index 00000000..c65a8916 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js new file mode 100644 index 00000000..46423f75 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js new file mode 100644 index 00000000..6ebaec9d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js new file mode 100644 index 00000000..2f25159d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mar={days:["रविवार","सोमवार","मंगळवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["रवि","सोम","मंगळ","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोव्हेंबर","डिसेंबर"],monthsShort:["जाने.","फेब्रु.","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टें.","ऑक्टो.","नोव्हें.","डिसें."],today:"आज",monthsTitle:"महीने",clear:"हटवा",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js new file mode 100644 index 00000000..47efafdc --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js new file mode 100644 index 00000000..85d3146d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js new file mode 100644 index 00000000..af977b71 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js new file mode 100644 index 00000000..0c5136e4 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js new file mode 100644 index 00000000..630fa16b --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js new file mode 100644 index 00000000..ffb30ec8 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],daysShort:["Niedz.","Pon.","Wt.","Śr.","Czw.","Piąt.","Sob."],daysMin:["Ndz.","Pn.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty.","Lut.","Mar.","Kwi.","Maj","Cze.","Lip.","Sie.","Wrz.","Paź.","Lis.","Gru."],today:"Dzisiaj",weekStart:1,clear:"Wyczyść",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js new file mode 100644 index 00000000..2d3f8afd --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js new file mode 100644 index 00000000..e2b4e64d --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js new file mode 100644 index 00000000..5fff2986 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js new file mode 100644 index 00000000..e520c957 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs-latin" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use "sr-latin" instead.')}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js new file mode 100644 index 00000000..ba95ae29 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use "sr" instead.')}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js new file mode 100644 index 00000000..52bc010b --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js new file mode 100644 index 00000000..b9746b8f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.si={days:["ඉරිදා","සඳුදා","අඟහරුවාදා","බදාදා","බ්‍රහස්පතින්දා","සිකුරාදා","සෙනසුරාදා"],daysShort:["ඉරි","සඳු","අඟ","බදා","බ්‍රහ","සිකු","සෙන"],daysMin:["ඉ","ස","අ","බ","බ්‍ර","සි","සෙ"],months:["ජනවාරි","පෙබරවාරි","මාර්තු","අප්‍රේල්","මැයි","ජුනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"],monthsShort:["ජන","පෙබ","මාර්","අප්‍රේ","මැයි","ජුනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],today:"අද",monthsTitle:"මාස",clear:"මකන්න",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js new file mode 100644 index 00000000..79a9267f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js new file mode 100644 index 00000000..831cf739 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js new file mode 100644 index 00000000..8c586055 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js new file mode 100644 index 00000000..c6b7001a --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js new file mode 100644 index 00000000..4e46dbf6 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js new file mode 100644 index 00000000..7ab6becb --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js new file mode 100644 index 00000000..454d3053 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js new file mode 100644 index 00000000..e7909494 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js new file mode 100644 index 00000000..104b6dd9 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js new file mode 100644 index 00000000..1e398ba8 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js new file mode 100644 index 00000000..716edef2 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js new file mode 100644 index 00000000..7889b113 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js new file mode 100644 index 00000000..a555be80 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js new file mode 100644 index 00000000..a0a8f213 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js new file mode 100644 index 00000000..2f58e343 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js new file mode 100644 index 00000000..3311d23f --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js new file mode 100644 index 00000000..8e6920b0 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js new file mode 100644 index 00000000..5d2c0b55 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"月份",format:"yyyy/mm/dd",weekStart:0,titleFormat:"yyyy年mm月",clear:"清除"}}(jQuery); \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.css b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.css new file mode 100644 index 00000000..a9638049 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.css @@ -0,0 +1,410 @@ +.daterangepicker { + position: absolute; + color: inherit; + background-color: #fff; + border-radius: 4px; + border: 1px solid #ddd; + width: 278px; + max-width: none; + padding: 0; + margin-top: 7px; + top: 100px; + left: 20px; + z-index: 3001; + display: none; + font-family: arial; + font-size: 15px; + line-height: 1em; +} + +.daterangepicker:before, .daterangepicker:after { + position: absolute; + display: inline-block; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker:before { + top: -7px; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #ccc; +} + +.daterangepicker:after { + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; +} + +.daterangepicker.opensleft:before { + right: 9px; +} + +.daterangepicker.opensleft:after { + right: 10px; +} + +.daterangepicker.openscenter:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.openscenter:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.opensright:before { + left: 9px; +} + +.daterangepicker.opensright:after { + left: 10px; +} + +.daterangepicker.drop-up { + margin-top: -7px; +} + +.daterangepicker.drop-up:before { + top: initial; + bottom: -7px; + border-bottom: initial; + border-top: 7px solid #ccc; +} + +.daterangepicker.drop-up:after { + top: initial; + bottom: -6px; + border-bottom: initial; + border-top: 6px solid #fff; +} + +.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar { + float: none; +} + +.daterangepicker.single .drp-selected { + display: none; +} + +.daterangepicker.show-calendar .drp-calendar { + display: block; +} + +.daterangepicker.show-calendar .drp-buttons { + display: block; +} + +.daterangepicker.auto-apply .drp-buttons { + display: none; +} + +.daterangepicker .drp-calendar { + display: none; + max-width: 270px; +} + +.daterangepicker .drp-calendar.left { + padding: 8px 0 8px 8px; +} + +.daterangepicker .drp-calendar.right { + padding: 8px; +} + +.daterangepicker .drp-calendar.single .calendar-table { + border: none; +} + +.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { + color: #fff; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + padding: 3px; +} + +.daterangepicker .calendar-table .next span { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); +} + +.daterangepicker .calendar-table .prev span { + transform: rotate(135deg); + -webkit-transform: rotate(135deg); +} + +.daterangepicker .calendar-table th, .daterangepicker .calendar-table td { + white-space: nowrap; + text-align: center; + vertical-align: middle; + min-width: 32px; + width: 32px; + height: 24px; + line-height: 24px; + font-size: 12px; + border-radius: 4px; + border: 1px solid transparent; + white-space: nowrap; + cursor: pointer; +} + +.daterangepicker .calendar-table { + border: 1px solid #fff; + border-radius: 4px; + background-color: #fff; +} + +.daterangepicker .calendar-table table { + width: 100%; + margin: 0; + border-spacing: 0; + border-collapse: collapse; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background-color: #eee; + border-color: transparent; + color: inherit; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: #fff; + border-color: transparent; + color: #999; +} + +.daterangepicker td.in-range { + background-color: #ebf4f8; + border-color: transparent; + color: #000; + border-radius: 0; +} + +.daterangepicker td.start-date { + border-radius: 4px 0 0 4px; +} + +.daterangepicker td.end-date { + border-radius: 0 4px 4px 0; +} + +.daterangepicker td.start-date.end-date { + border-radius: 4px; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: transparent; + color: #fff; +} + +.daterangepicker th.month { + width: auto; +} + +.daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin: 0 auto; + background: #eee; + border: 1px solid #eee; + padding: 2px; + outline: 0; + font-size: 12px; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 4px auto 0 auto; + line-height: 30px; + position: relative; +} + +.daterangepicker .calendar-time select.disabled { + color: #ccc; + cursor: not-allowed; +} + +.daterangepicker .drp-buttons { + clear: both; + text-align: right; + padding: 8px; + border-top: 1px solid #ddd; + display: none; + line-height: 12px; + vertical-align: middle; +} + +.daterangepicker .drp-selected { + display: inline-block; + font-size: 12px; + padding-right: 8px; +} + +.daterangepicker .drp-buttons .btn { + margin-left: 8px; + font-size: 12px; + font-weight: bold; + padding: 4px 8px; +} + +.daterangepicker.show-ranges.single.rtl .drp-calendar.left { + border-right: 1px solid #ddd; +} + +.daterangepicker.show-ranges.single.ltr .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker.show-ranges.rtl .drp-calendar.right { + border-right: 1px solid #ddd; +} + +.daterangepicker.show-ranges.ltr .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker .ranges { + float: none; + text-align: left; + margin: 0; +} + +.daterangepicker.show-calendar .ranges { + margin-top: 8px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; +} + +.daterangepicker .ranges li { + font-size: 12px; + padding: 8px 12px; + cursor: pointer; +} + +.daterangepicker .ranges li:hover { + background-color: #eee; +} + +.daterangepicker .ranges li.active { + background-color: #08c; + color: #fff; +} + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .daterangepicker { + width: auto; + } + + .daterangepicker .ranges ul { + width: 140px; + } + + .daterangepicker.single .ranges ul { + width: 100%; + } + + .daterangepicker.single .drp-calendar.left { + clear: none; + } + + .daterangepicker.single .ranges, .daterangepicker.single .drp-calendar { + float: left; + } + + .daterangepicker { + direction: ltr; + text-align: left; + } + + .daterangepicker .drp-calendar.left { + clear: left; + margin-right: 0; + } + + .daterangepicker .drp-calendar.left .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .daterangepicker .drp-calendar.right { + margin-left: 0; + } + + .daterangepicker .drp-calendar.right .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .daterangepicker .drp-calendar.left .calendar-table { + padding-right: 8px; + } + + .daterangepicker .ranges, .daterangepicker .drp-calendar { + float: left; + } +} + +@media (min-width: 730px) { + .daterangepicker .ranges { + width: auto; + } + + .daterangepicker .ranges { + float: left; + } + + .daterangepicker.rtl .ranges { + float: right; + } + + .daterangepicker .drp-calendar.left { + clear: none !important; + } +} diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js new file mode 100644 index 00000000..4048310c --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js @@ -0,0 +1,1578 @@ +/** +* @version: 3.1 +* @author: Dan Grossman http://www.dangrossman.info/ +* @copyright: Copyright (c) 2012-2019 Dan Grossman. All rights reserved. +* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php +* @website: http://www.daterangepicker.com/ +*/ +// Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Make globaly available as well + define(['moment', 'jquery'], function (moment, jquery) { + if (!jquery.fn) jquery.fn = {}; // webpack server rendering + if (typeof moment !== 'function' && moment.hasOwnProperty('default')) moment = moment['default'] + return factory(moment, jquery); + }); + } else if (typeof module === 'object' && module.exports) { + // Node / Browserify + //isomorphic issue + var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; + if (!jQuery) { + jQuery = require('jquery'); + if (!jQuery.fn) jQuery.fn = {}; + } + var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment'); + module.exports = factory(moment, jQuery); + } else { + // Browser globals + root.daterangepicker = factory(root.moment, root.jQuery); + } +}(this, function(moment, $) { + var DateRangePicker = function(element, options, cb) { + + //default settings for options + this.parentEl = 'body'; + this.element = $(element); + this.startDate = moment().startOf('day'); + this.endDate = moment().endOf('day'); + this.minDate = false; + this.maxDate = false; + this.maxSpan = false; + this.autoApply = false; + this.singleDatePicker = false; + this.showDropdowns = false; + this.minYear = moment().subtract(100, 'year').format('YYYY'); + this.maxYear = moment().add(100, 'year').format('YYYY'); + this.showWeekNumbers = false; + this.showISOWeekNumbers = false; + this.showCustomRangeLabel = true; + this.timePicker = false; + this.timePicker24Hour = false; + this.timePickerIncrement = 1; + this.timePickerSeconds = false; + this.linkedCalendars = true; + this.autoUpdateInput = true; + this.alwaysShowCalendars = false; + this.ranges = {}; + + this.opens = 'right'; + if (this.element.hasClass('pull-right')) + this.opens = 'left'; + + this.drops = 'down'; + if (this.element.hasClass('dropup')) + this.drops = 'up'; + + this.buttonClasses = 'btn btn-sm'; + this.applyButtonClasses = 'btn-primary'; + this.cancelButtonClasses = 'btn-default'; + + this.locale = { + direction: 'ltr', + format: moment.localeData().longDateFormat('L'), + separator: ' - ', + applyLabel: 'Apply', + cancelLabel: 'Cancel', + weekLabel: 'W', + customRangeLabel: 'Custom Range', + daysOfWeek: moment.weekdaysMin(), + monthNames: moment.monthsShort(), + firstDay: moment.localeData().firstDayOfWeek() + }; + + this.callback = function() { }; + + //some state information + this.isShowing = false; + this.leftCalendar = {}; + this.rightCalendar = {}; + + //custom options from user + if (typeof options !== 'object' || options === null) + options = {}; + + //allow setting options with data attributes + //data-api options will be overwritten with custom javascript options + options = $.extend(this.element.data(), options); + + //html template for the picker UI + if (typeof options.template !== 'string' && !(options.template instanceof $)) + options.template = + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '' + + '' + + ' ' + + '
' + + '
'; + + this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); + this.container = $(options.template).appendTo(this.parentEl); + + // + // handle all the possible options overriding defaults + // + + if (typeof options.locale === 'object') { + + if (typeof options.locale.direction === 'string') + this.locale.direction = options.locale.direction; + + if (typeof options.locale.format === 'string') + this.locale.format = options.locale.format; + + if (typeof options.locale.separator === 'string') + this.locale.separator = options.locale.separator; + + if (typeof options.locale.daysOfWeek === 'object') + this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); + + if (typeof options.locale.monthNames === 'object') + this.locale.monthNames = options.locale.monthNames.slice(); + + if (typeof options.locale.firstDay === 'number') + this.locale.firstDay = options.locale.firstDay; + + if (typeof options.locale.applyLabel === 'string') + this.locale.applyLabel = options.locale.applyLabel; + + if (typeof options.locale.cancelLabel === 'string') + this.locale.cancelLabel = options.locale.cancelLabel; + + if (typeof options.locale.weekLabel === 'string') + this.locale.weekLabel = options.locale.weekLabel; + + if (typeof options.locale.customRangeLabel === 'string'){ + //Support unicode chars in the custom range name. + var elem = document.createElement('textarea'); + elem.innerHTML = options.locale.customRangeLabel; + var rangeHtml = elem.value; + this.locale.customRangeLabel = rangeHtml; + } + } + this.container.addClass(this.locale.direction); + + if (typeof options.startDate === 'string') + this.startDate = moment(options.startDate, this.locale.format); + + if (typeof options.endDate === 'string') + this.endDate = moment(options.endDate, this.locale.format); + + if (typeof options.minDate === 'string') + this.minDate = moment(options.minDate, this.locale.format); + + if (typeof options.maxDate === 'string') + this.maxDate = moment(options.maxDate, this.locale.format); + + if (typeof options.startDate === 'object') + this.startDate = moment(options.startDate); + + if (typeof options.endDate === 'object') + this.endDate = moment(options.endDate); + + if (typeof options.minDate === 'object') + this.minDate = moment(options.minDate); + + if (typeof options.maxDate === 'object') + this.maxDate = moment(options.maxDate); + + // sanity check for bad options + if (this.minDate && this.startDate.isBefore(this.minDate)) + this.startDate = this.minDate.clone(); + + // sanity check for bad options + if (this.maxDate && this.endDate.isAfter(this.maxDate)) + this.endDate = this.maxDate.clone(); + + if (typeof options.applyButtonClasses === 'string') + this.applyButtonClasses = options.applyButtonClasses; + + if (typeof options.applyClass === 'string') //backwards compat + this.applyButtonClasses = options.applyClass; + + if (typeof options.cancelButtonClasses === 'string') + this.cancelButtonClasses = options.cancelButtonClasses; + + if (typeof options.cancelClass === 'string') //backwards compat + this.cancelButtonClasses = options.cancelClass; + + if (typeof options.maxSpan === 'object') + this.maxSpan = options.maxSpan; + + if (typeof options.dateLimit === 'object') //backwards compat + this.maxSpan = options.dateLimit; + + if (typeof options.opens === 'string') + this.opens = options.opens; + + if (typeof options.drops === 'string') + this.drops = options.drops; + + if (typeof options.showWeekNumbers === 'boolean') + this.showWeekNumbers = options.showWeekNumbers; + + if (typeof options.showISOWeekNumbers === 'boolean') + this.showISOWeekNumbers = options.showISOWeekNumbers; + + if (typeof options.buttonClasses === 'string') + this.buttonClasses = options.buttonClasses; + + if (typeof options.buttonClasses === 'object') + this.buttonClasses = options.buttonClasses.join(' '); + + if (typeof options.showDropdowns === 'boolean') + this.showDropdowns = options.showDropdowns; + + if (typeof options.minYear === 'number') + this.minYear = options.minYear; + + if (typeof options.maxYear === 'number') + this.maxYear = options.maxYear; + + if (typeof options.showCustomRangeLabel === 'boolean') + this.showCustomRangeLabel = options.showCustomRangeLabel; + + if (typeof options.singleDatePicker === 'boolean') { + this.singleDatePicker = options.singleDatePicker; + if (this.singleDatePicker) + this.endDate = this.startDate.clone(); + } + + if (typeof options.timePicker === 'boolean') + this.timePicker = options.timePicker; + + if (typeof options.timePickerSeconds === 'boolean') + this.timePickerSeconds = options.timePickerSeconds; + + if (typeof options.timePickerIncrement === 'number') + this.timePickerIncrement = options.timePickerIncrement; + + if (typeof options.timePicker24Hour === 'boolean') + this.timePicker24Hour = options.timePicker24Hour; + + if (typeof options.autoApply === 'boolean') + this.autoApply = options.autoApply; + + if (typeof options.autoUpdateInput === 'boolean') + this.autoUpdateInput = options.autoUpdateInput; + + if (typeof options.linkedCalendars === 'boolean') + this.linkedCalendars = options.linkedCalendars; + + if (typeof options.isInvalidDate === 'function') + this.isInvalidDate = options.isInvalidDate; + + if (typeof options.isCustomDate === 'function') + this.isCustomDate = options.isCustomDate; + + if (typeof options.alwaysShowCalendars === 'boolean') + this.alwaysShowCalendars = options.alwaysShowCalendars; + + // update day names order to firstDay + if (this.locale.firstDay != 0) { + var iterator = this.locale.firstDay; + while (iterator > 0) { + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); + iterator--; + } + } + + var start, end, range; + + //if no start/end dates set, check if an input element contains initial values + if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { + if ($(this.element).is(':text')) { + var val = $(this.element).val(), + split = val.split(this.locale.separator); + + start = end = null; + + if (split.length == 2) { + start = moment(split[0], this.locale.format); + end = moment(split[1], this.locale.format); + } else if (this.singleDatePicker && val !== "") { + start = moment(val, this.locale.format); + end = moment(val, this.locale.format); + } + if (start !== null && end !== null) { + this.setStartDate(start); + this.setEndDate(end); + } + } + } + + if (typeof options.ranges === 'object') { + for (range in options.ranges) { + + if (typeof options.ranges[range][0] === 'string') + start = moment(options.ranges[range][0], this.locale.format); + else + start = moment(options.ranges[range][0]); + + if (typeof options.ranges[range][1] === 'string') + end = moment(options.ranges[range][1], this.locale.format); + else + end = moment(options.ranges[range][1]); + + // If the start or end date exceed those allowed by the minDate or maxSpan + // options, shorten the range to the allowable period. + if (this.minDate && start.isBefore(this.minDate)) + start = this.minDate.clone(); + + var maxDate = this.maxDate; + if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate)) + maxDate = start.clone().add(this.maxSpan); + if (maxDate && end.isAfter(maxDate)) + end = maxDate.clone(); + + // If the end of the range is before the minimum or the start of the range is + // after the maximum, don't display this range option at all. + if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) + || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day'))) + continue; + + //Support unicode chars in the range names. + var elem = document.createElement('textarea'); + elem.innerHTML = range; + var rangeHtml = elem.value; + + this.ranges[rangeHtml] = [start, end]; + } + + var list = '
    '; + for (range in this.ranges) { + list += '
  • ' + range + '
  • '; + } + if (this.showCustomRangeLabel) { + list += '
  • ' + this.locale.customRangeLabel + '
  • '; + } + list += '
'; + this.container.find('.ranges').prepend(list); + } + + if (typeof cb === 'function') { + this.callback = cb; + } + + if (!this.timePicker) { + this.startDate = this.startDate.startOf('day'); + this.endDate = this.endDate.endOf('day'); + this.container.find('.calendar-time').hide(); + } + + //can't be used together for now + if (this.timePicker && this.autoApply) + this.autoApply = false; + + if (this.autoApply) { + this.container.addClass('auto-apply'); + } + + if (typeof options.ranges === 'object') + this.container.addClass('show-ranges'); + + if (this.singleDatePicker) { + this.container.addClass('single'); + this.container.find('.drp-calendar.left').addClass('single'); + this.container.find('.drp-calendar.left').show(); + this.container.find('.drp-calendar.right').hide(); + if (!this.timePicker && this.autoApply) { + this.container.addClass('auto-apply'); + } + } + + if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { + this.container.addClass('show-calendar'); + } + + this.container.addClass('opens' + this.opens); + + //apply CSS classes and labels to buttons + this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses); + if (this.applyButtonClasses.length) + this.container.find('.applyBtn').addClass(this.applyButtonClasses); + if (this.cancelButtonClasses.length) + this.container.find('.cancelBtn').addClass(this.cancelButtonClasses); + this.container.find('.applyBtn').html(this.locale.applyLabel); + this.container.find('.cancelBtn').html(this.locale.cancelLabel); + + // + // event listeners + // + + this.container.find('.drp-calendar') + .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) + .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) + .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) + .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) + .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this)) + .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this)) + .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this)); + + this.container.find('.ranges') + .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)); + + this.container.find('.drp-buttons') + .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) + .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)); + + if (this.element.is('input') || this.element.is('button')) { + this.element.on({ + 'click.daterangepicker': $.proxy(this.show, this), + 'focus.daterangepicker': $.proxy(this.show, this), + 'keyup.daterangepicker': $.proxy(this.elementChanged, this), + 'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility + }); + } else { + this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); + this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this)); + } + + // + // if attached to a text input, set the initial value + // + + this.updateElement(); + + }; + + DateRangePicker.prototype = { + + constructor: DateRangePicker, + + setStartDate: function(startDate) { + if (typeof startDate === 'string') + this.startDate = moment(startDate, this.locale.format); + + if (typeof startDate === 'object') + this.startDate = moment(startDate); + + if (!this.timePicker) + this.startDate = this.startDate.startOf('day'); + + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + + if (this.minDate && this.startDate.isBefore(this.minDate)) { + this.startDate = this.minDate.clone(); + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + } + + if (this.maxDate && this.startDate.isAfter(this.maxDate)) { + this.startDate = this.maxDate.clone(); + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + } + + if (!this.isShowing) + this.updateElement(); + + this.updateMonthsInView(); + }, + + setEndDate: function(endDate) { + if (typeof endDate === 'string') + this.endDate = moment(endDate, this.locale.format); + + if (typeof endDate === 'object') + this.endDate = moment(endDate); + + if (!this.timePicker) + this.endDate = this.endDate.endOf('day'); + + if (this.timePicker && this.timePickerIncrement) + this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + + if (this.endDate.isBefore(this.startDate)) + this.endDate = this.startDate.clone(); + + if (this.maxDate && this.endDate.isAfter(this.maxDate)) + this.endDate = this.maxDate.clone(); + + if (this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate)) + this.endDate = this.startDate.clone().add(this.maxSpan); + + this.previousRightTime = this.endDate.clone(); + + this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); + + if (!this.isShowing) + this.updateElement(); + + this.updateMonthsInView(); + }, + + isInvalidDate: function() { + return false; + }, + + isCustomDate: function() { + return false; + }, + + updateView: function() { + if (this.timePicker) { + this.renderTimePicker('left'); + this.renderTimePicker('right'); + if (!this.endDate) { + this.container.find('.right .calendar-time select').prop('disabled', true).addClass('disabled'); + } else { + this.container.find('.right .calendar-time select').prop('disabled', false).removeClass('disabled'); + } + } + if (this.endDate) + this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); + this.updateMonthsInView(); + this.updateCalendars(); + this.updateFormInputs(); + }, + + updateMonthsInView: function() { + if (this.endDate) { + + //if both dates are visible already, do nothing + if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && + (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) + && + (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) + ) { + return; + } + + this.leftCalendar.month = this.startDate.clone().date(2); + if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) { + this.rightCalendar.month = this.endDate.clone().date(2); + } else { + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); + } + + } else { + if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) { + this.leftCalendar.month = this.startDate.clone().date(2); + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); + } + } + if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) { + this.rightCalendar.month = this.maxDate.clone().date(2); + this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month'); + } + }, + + updateCalendars: function() { + + if (this.timePicker) { + var hour, minute, second; + if (this.endDate) { + hour = parseInt(this.container.find('.left .hourselect').val(), 10); + minute = parseInt(this.container.find('.left .minuteselect').val(), 10); + if (isNaN(minute)) { + minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10); + } + second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; + if (!this.timePicker24Hour) { + var ampm = this.container.find('.left .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + } else { + hour = parseInt(this.container.find('.right .hourselect').val(), 10); + minute = parseInt(this.container.find('.right .minuteselect').val(), 10); + if (isNaN(minute)) { + minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10); + } + second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; + if (!this.timePicker24Hour) { + var ampm = this.container.find('.right .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + } + this.leftCalendar.month.hour(hour).minute(minute).second(second); + this.rightCalendar.month.hour(hour).minute(minute).second(second); + } + + this.renderCalendar('left'); + this.renderCalendar('right'); + + //highlight any predefined range matching the current start and end dates + this.container.find('.ranges li').removeClass('active'); + if (this.endDate == null) return; + + this.calculateChosenLabel(); + }, + + renderCalendar: function(side) { + + // + // Build the matrix of dates that will populate the calendar + // + + var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar; + var month = calendar.month.month(); + var year = calendar.month.year(); + var hour = calendar.month.hour(); + var minute = calendar.month.minute(); + var second = calendar.month.second(); + var daysInMonth = moment([year, month]).daysInMonth(); + var firstDay = moment([year, month, 1]); + var lastDay = moment([year, month, daysInMonth]); + var lastMonth = moment(firstDay).subtract(1, 'month').month(); + var lastYear = moment(firstDay).subtract(1, 'month').year(); + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); + var dayOfWeek = firstDay.day(); + + //initialize a 6 rows x 7 columns array for the calendar + var calendar = []; + calendar.firstDay = firstDay; + calendar.lastDay = lastDay; + + for (var i = 0; i < 6; i++) { + calendar[i] = []; + } + + //populate the calendar with date objects + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; + if (startDay > daysInLastMonth) + startDay -= 7; + + if (dayOfWeek == this.locale.firstDay) + startDay = daysInLastMonth - 6; + + var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]); + + var col, row; + for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { + if (i > 0 && col % 7 === 0) { + col = 0; + row++; + } + calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second); + curDate.hour(12); + + if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { + calendar[row][col] = this.minDate.clone(); + } + + if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { + calendar[row][col] = this.maxDate.clone(); + } + + } + + //make the calendar object available to hoverDate/clickDate + if (side == 'left') { + this.leftCalendar.calendar = calendar; + } else { + this.rightCalendar.calendar = calendar; + } + + // + // Display the calendar + // + + var minDate = side == 'left' ? this.minDate : this.startDate; + var maxDate = this.maxDate; + var selected = side == 'left' ? this.startDate : this.endDate; + var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'}; + + var html = ''; + html += ''; + html += ''; + + // add empty cell for week number + if (this.showWeekNumbers || this.showISOWeekNumbers) + html += ''; + + if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) { + html += ''; + } else { + html += ''; + } + + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); + + if (this.showDropdowns) { + var currentMonth = calendar[1][1].month(); + var currentYear = calendar[1][1].year(); + var maxYear = (maxDate && maxDate.year()) || (this.maxYear); + var minYear = (minDate && minDate.year()) || (this.minYear); + var inMinYear = currentYear == minYear; + var inMaxYear = currentYear == maxYear; + + var monthHtml = '"; + + var yearHtml = ''; + + dateHtml = monthHtml + yearHtml; + } + + html += ''; + if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) { + html += ''; + } else { + html += ''; + } + + html += ''; + html += ''; + + // add week number label + if (this.showWeekNumbers || this.showISOWeekNumbers) + html += ''; + + $.each(this.locale.daysOfWeek, function(index, dayOfWeek) { + html += ''; + }); + + html += ''; + html += ''; + html += ''; + + //adjust maxDate to reflect the maxSpan setting in order to + //grey out end dates beyond the maxSpan + if (this.endDate == null && this.maxSpan) { + var maxLimit = this.startDate.clone().add(this.maxSpan).endOf('day'); + if (!maxDate || maxLimit.isBefore(maxDate)) { + maxDate = maxLimit; + } + } + + for (var row = 0; row < 6; row++) { + html += ''; + + // add week number + if (this.showWeekNumbers) + html += ''; + else if (this.showISOWeekNumbers) + html += ''; + + for (var col = 0; col < 7; col++) { + + var classes = []; + + //highlight today's date + if (calendar[row][col].isSame(new Date(), "day")) + classes.push('today'); + + //highlight weekends + if (calendar[row][col].isoWeekday() > 5) + classes.push('weekend'); + + //grey out the dates in other months displayed at beginning and end of this calendar + if (calendar[row][col].month() != calendar[1][1].month()) + classes.push('off', 'ends'); + + //don't allow selection of dates before the minimum date + if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) + classes.push('off', 'disabled'); + + //don't allow selection of dates after the maximum date + if (maxDate && calendar[row][col].isAfter(maxDate, 'day')) + classes.push('off', 'disabled'); + + //don't allow selection of date if a custom function decides it's invalid + if (this.isInvalidDate(calendar[row][col])) + classes.push('off', 'disabled'); + + //highlight the currently selected start date + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) + classes.push('active', 'start-date'); + + //highlight the currently selected end date + if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) + classes.push('active', 'end-date'); + + //highlight dates in-between the selected dates + if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) + classes.push('in-range'); + + //apply custom classes for this date + var isCustom = this.isCustomDate(calendar[row][col]); + if (isCustom !== false) { + if (typeof isCustom === 'string') + classes.push(isCustom); + else + Array.prototype.push.apply(classes, isCustom); + } + + var cname = '', disabled = false; + for (var i = 0; i < classes.length; i++) { + cname += classes[i] + ' '; + if (classes[i] == 'disabled') + disabled = true; + } + if (!disabled) + cname += 'available'; + + html += ''; + + } + html += ''; + } + + html += ''; + html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][0].isoWeek() + '' + calendar[row][col].date() + '
'; + + this.container.find('.drp-calendar.' + side + ' .calendar-table').html(html); + + }, + + renderTimePicker: function(side) { + + // Don't bother updating the time picker if it's currently disabled + // because an end date hasn't been clicked yet + if (side == 'right' && !this.endDate) return; + + var html, selected, minDate, maxDate = this.maxDate; + + if (this.maxSpan && (!this.maxDate || this.startDate.clone().add(this.maxSpan).isBefore(this.maxDate))) + maxDate = this.startDate.clone().add(this.maxSpan); + + if (side == 'left') { + selected = this.startDate.clone(); + minDate = this.minDate; + } else if (side == 'right') { + selected = this.endDate.clone(); + minDate = this.startDate; + + //Preserve the time already selected + var timeSelector = this.container.find('.drp-calendar.right .calendar-time'); + if (timeSelector.html() != '') { + + selected.hour(!isNaN(selected.hour()) ? selected.hour() : timeSelector.find('.hourselect option:selected').val()); + selected.minute(!isNaN(selected.minute()) ? selected.minute() : timeSelector.find('.minuteselect option:selected').val()); + selected.second(!isNaN(selected.second()) ? selected.second() : timeSelector.find('.secondselect option:selected').val()); + + if (!this.timePicker24Hour) { + var ampm = timeSelector.find('.ampmselect option:selected').val(); + if (ampm === 'PM' && selected.hour() < 12) + selected.hour(selected.hour() + 12); + if (ampm === 'AM' && selected.hour() === 12) + selected.hour(0); + } + + } + + if (selected.isBefore(this.startDate)) + selected = this.startDate.clone(); + + if (maxDate && selected.isAfter(maxDate)) + selected = maxDate.clone(); + + } + + // + // hours + // + + html = ' '; + + // + // minutes + // + + html += ': '; + + // + // seconds + // + + if (this.timePickerSeconds) { + html += ': '; + } + + // + // AM/PM + // + + if (!this.timePicker24Hour) { + html += ''; + } + + this.container.find('.drp-calendar.' + side + ' .calendar-time').html(html); + + }, + + updateFormInputs: function() { + + if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) { + this.container.find('button.applyBtn').prop('disabled', false); + } else { + this.container.find('button.applyBtn').prop('disabled', true); + } + + }, + + move: function() { + var parentOffset = { top: 0, left: 0 }, + containerTop, + drops = this.drops; + + var parentRightEdge = $(window).width(); + if (!this.parentEl.is('body')) { + parentOffset = { + top: this.parentEl.offset().top - this.parentEl.scrollTop(), + left: this.parentEl.offset().left - this.parentEl.scrollLeft() + }; + parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; + } + + switch (drops) { + case 'auto': + containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; + if (containerTop + this.container.outerHeight() >= this.parentEl[0].scrollHeight) { + containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; + drops = 'up'; + } + break; + case 'up': + containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; + break; + default: + containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; + break; + } + + // Force the container to it's actual width + this.container.css({ + top: 0, + left: 0, + right: 'auto' + }); + var containerWidth = this.container.outerWidth(); + + this.container.toggleClass('drop-up', drops == 'up'); + + if (this.opens == 'left') { + var containerRight = parentRightEdge - this.element.offset().left - this.element.outerWidth(); + if (containerWidth + containerRight > $(window).width()) { + this.container.css({ + top: containerTop, + right: 'auto', + left: 9 + }); + } else { + this.container.css({ + top: containerTop, + right: containerRight, + left: 'auto' + }); + } + } else if (this.opens == 'center') { + var containerLeft = this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 + - containerWidth / 2; + if (containerLeft < 0) { + this.container.css({ + top: containerTop, + right: 'auto', + left: 9 + }); + } else if (containerLeft + containerWidth > $(window).width()) { + this.container.css({ + top: containerTop, + left: 'auto', + right: 0 + }); + } else { + this.container.css({ + top: containerTop, + left: containerLeft, + right: 'auto' + }); + } + } else { + var containerLeft = this.element.offset().left - parentOffset.left; + if (containerLeft + containerWidth > $(window).width()) { + this.container.css({ + top: containerTop, + left: 'auto', + right: 0 + }); + } else { + this.container.css({ + top: containerTop, + left: containerLeft, + right: 'auto' + }); + } + } + }, + + show: function(e) { + if (this.isShowing) return; + + // Create a click proxy that is private to this instance of datepicker, for unbinding + this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this); + + // Bind global datepicker mousedown for hiding and + $(document) + .on('mousedown.daterangepicker', this._outsideClickProxy) + // also support mobile devices + .on('touchend.daterangepicker', this._outsideClickProxy) + // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them + .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) + // and also close when focus changes to outside the picker (eg. tabbing between controls) + .on('focusin.daterangepicker', this._outsideClickProxy); + + // Reposition the picker if the window is resized while it's open + $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this)); + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + this.previousRightTime = this.endDate.clone(); + + this.updateView(); + this.container.show(); + this.move(); + this.element.trigger('show.daterangepicker', this); + this.isShowing = true; + }, + + hide: function(e) { + if (!this.isShowing) return; + + //incomplete date selection, revert to last values + if (!this.endDate) { + this.startDate = this.oldStartDate.clone(); + this.endDate = this.oldEndDate.clone(); + } + + //if a new date range was selected, invoke the user callback function + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel); + + //if picker is attached to a text input, update it + this.updateElement(); + + $(document).off('.daterangepicker'); + $(window).off('.daterangepicker'); + this.container.hide(); + this.element.trigger('hide.daterangepicker', this); + this.isShowing = false; + }, + + toggle: function(e) { + if (this.isShowing) { + this.hide(); + } else { + this.show(); + } + }, + + outsideClick: function(e) { + var target = $(e.target); + // if the page is clicked anywhere except within the daterangerpicker/button + // itself then call this.hide() + if ( + // ie modal dialog fix + e.type == "focusin" || + target.closest(this.element).length || + target.closest(this.container).length || + target.closest('.calendar-table').length + ) return; + this.hide(); + this.element.trigger('outsideClick.daterangepicker', this); + }, + + showCalendars: function() { + this.container.addClass('show-calendar'); + this.move(); + this.element.trigger('showCalendar.daterangepicker', this); + }, + + hideCalendars: function() { + this.container.removeClass('show-calendar'); + this.element.trigger('hideCalendar.daterangepicker', this); + }, + + clickRange: function(e) { + var label = e.target.getAttribute('data-range-key'); + this.chosenLabel = label; + if (label == this.locale.customRangeLabel) { + this.showCalendars(); + } else { + var dates = this.ranges[label]; + this.startDate = dates[0]; + this.endDate = dates[1]; + + if (!this.timePicker) { + this.startDate.startOf('day'); + this.endDate.endOf('day'); + } + + if (!this.alwaysShowCalendars) + this.hideCalendars(); + this.clickApply(); + } + }, + + clickPrev: function(e) { + var cal = $(e.target).parents('.drp-calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.subtract(1, 'month'); + if (this.linkedCalendars) + this.rightCalendar.month.subtract(1, 'month'); + } else { + this.rightCalendar.month.subtract(1, 'month'); + } + this.updateCalendars(); + }, + + clickNext: function(e) { + var cal = $(e.target).parents('.drp-calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.add(1, 'month'); + } else { + this.rightCalendar.month.add(1, 'month'); + if (this.linkedCalendars) + this.leftCalendar.month.add(1, 'month'); + } + this.updateCalendars(); + }, + + hoverDate: function(e) { + + //ignore dates that can't be selected + if (!$(e.target).hasClass('available')) return; + + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.drp-calendar'); + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; + + //highlight the dates between the start date and the date being hovered as a potential end date + var leftCalendar = this.leftCalendar; + var rightCalendar = this.rightCalendar; + var startDate = this.startDate; + if (!this.endDate) { + this.container.find('.drp-calendar tbody td').each(function(index, el) { + + //skip week numbers, only look at dates + if ($(el).hasClass('week')) return; + + var title = $(el).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(el).parents('.drp-calendar'); + var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col]; + + if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) { + $(el).addClass('in-range'); + } else { + $(el).removeClass('in-range'); + } + + }); + } + + }, + + clickDate: function(e) { + + if (!$(e.target).hasClass('available')) return; + + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.drp-calendar'); + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; + + // + // this function needs to do a few things: + // * alternate between selecting a start and end date for the range, + // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date + // * if autoapply is enabled, and an end date was chosen, apply the selection + // * if single date picker mode, and time picker isn't enabled, apply the selection immediately + // * if one of the inputs above the calendars was focused, cancel that manual input + // + + if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start + if (this.timePicker) { + var hour = parseInt(this.container.find('.left .hourselect').val(), 10); + if (!this.timePicker24Hour) { + var ampm = this.container.find('.left .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + var minute = parseInt(this.container.find('.left .minuteselect').val(), 10); + if (isNaN(minute)) { + minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10); + } + var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; + date = date.clone().hour(hour).minute(minute).second(second); + } + this.endDate = null; + this.setStartDate(date.clone()); + } else if (!this.endDate && date.isBefore(this.startDate)) { + //special case: clicking the same date for start/end, + //but the time of the end date is before the start date + this.setEndDate(this.startDate.clone()); + } else { // picking end + if (this.timePicker) { + var hour = parseInt(this.container.find('.right .hourselect').val(), 10); + if (!this.timePicker24Hour) { + var ampm = this.container.find('.right .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + var minute = parseInt(this.container.find('.right .minuteselect').val(), 10); + if (isNaN(minute)) { + minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10); + } + var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; + date = date.clone().hour(hour).minute(minute).second(second); + } + this.setEndDate(date.clone()); + if (this.autoApply) { + this.calculateChosenLabel(); + this.clickApply(); + } + } + + if (this.singleDatePicker) { + this.setEndDate(this.startDate); + if (!this.timePicker && this.autoApply) + this.clickApply(); + } + + this.updateView(); + + //This is to cancel the blur event handler if the mouse was in one of the inputs + e.stopPropagation(); + + }, + + calculateChosenLabel: function () { + var customRange = true; + var i = 0; + for (var range in this.ranges) { + if (this.timePicker) { + var format = this.timePickerSeconds ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD HH:mm"; + //ignore times when comparing dates if time picker seconds is not enabled + if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key'); + break; + } + } else { + //ignore times when comparing dates if time picker is not enabled + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key'); + break; + } + } + i++; + } + if (customRange) { + if (this.showCustomRangeLabel) { + this.chosenLabel = this.container.find('.ranges li:last').addClass('active').attr('data-range-key'); + } else { + this.chosenLabel = null; + } + this.showCalendars(); + } + }, + + clickApply: function(e) { + this.hide(); + this.element.trigger('apply.daterangepicker', this); + }, + + clickCancel: function(e) { + this.startDate = this.oldStartDate; + this.endDate = this.oldEndDate; + this.hide(); + this.element.trigger('cancel.daterangepicker', this); + }, + + monthOrYearChanged: function(e) { + var isLeft = $(e.target).closest('.drp-calendar').hasClass('left'), + leftOrRight = isLeft ? 'left' : 'right', + cal = this.container.find('.drp-calendar.'+leftOrRight); + + // Month must be Number for new moment versions + var month = parseInt(cal.find('.monthselect').val(), 10); + var year = cal.find('.yearselect').val(); + + if (!isLeft) { + if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) { + month = this.startDate.month(); + year = this.startDate.year(); + } + } + + if (this.minDate) { + if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) { + month = this.minDate.month(); + year = this.minDate.year(); + } + } + + if (this.maxDate) { + if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) { + month = this.maxDate.month(); + year = this.maxDate.year(); + } + } + + if (isLeft) { + this.leftCalendar.month.month(month).year(year); + if (this.linkedCalendars) + this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month'); + } else { + this.rightCalendar.month.month(month).year(year); + if (this.linkedCalendars) + this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month'); + } + this.updateCalendars(); + }, + + timeChanged: function(e) { + + var cal = $(e.target).closest('.drp-calendar'), + isLeft = cal.hasClass('left'); + + var hour = parseInt(cal.find('.hourselect').val(), 10); + var minute = parseInt(cal.find('.minuteselect').val(), 10); + if (isNaN(minute)) { + minute = parseInt(cal.find('.minuteselect option:last').val(), 10); + } + var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0; + + if (!this.timePicker24Hour) { + var ampm = cal.find('.ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + + if (isLeft) { + var start = this.startDate.clone(); + start.hour(hour); + start.minute(minute); + start.second(second); + this.setStartDate(start); + if (this.singleDatePicker) { + this.endDate = this.startDate.clone(); + } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) { + this.setEndDate(start.clone()); + } + } else if (this.endDate) { + var end = this.endDate.clone(); + end.hour(hour); + end.minute(minute); + end.second(second); + this.setEndDate(end); + } + + //update the calendars so all clickable dates reflect the new time component + this.updateCalendars(); + + //update the form inputs above the calendars with the new time + this.updateFormInputs(); + + //re-render the time pickers because changing one selection can affect what's enabled in another + this.renderTimePicker('left'); + this.renderTimePicker('right'); + + }, + + elementChanged: function() { + if (!this.element.is('input')) return; + if (!this.element.val().length) return; + + var dateString = this.element.val().split(this.locale.separator), + start = null, + end = null; + + if (dateString.length === 2) { + start = moment(dateString[0], this.locale.format); + end = moment(dateString[1], this.locale.format); + } + + if (this.singleDatePicker || start === null || end === null) { + start = moment(this.element.val(), this.locale.format); + end = start; + } + + if (!start.isValid() || !end.isValid()) return; + + this.setStartDate(start); + this.setEndDate(end); + this.updateView(); + }, + + keydown: function(e) { + //hide on tab or enter + if ((e.keyCode === 9) || (e.keyCode === 13)) { + this.hide(); + } + + //hide on esc and prevent propagation + if (e.keyCode === 27) { + e.preventDefault(); + e.stopPropagation(); + + this.hide(); + } + }, + + updateElement: function() { + if (this.element.is('input') && this.autoUpdateInput) { + var newValue = this.startDate.format(this.locale.format); + if (!this.singleDatePicker) { + newValue += this.locale.separator + this.endDate.format(this.locale.format); + } + if (newValue !== this.element.val()) { + this.element.val(newValue).trigger('change'); + } + } + }, + + remove: function() { + this.container.remove(); + this.element.off('.daterangepicker'); + this.element.removeData(); + } + + }; + + $.fn.daterangepicker = function(options, callback) { + var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options); + this.each(function() { + var el = $(this); + if (el.data('daterangepicker')) + el.data('daterangepicker').remove(); + el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback)); + }); + return this; + }; + + return DateRangePicker; + +})); diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css new file mode 100644 index 00000000..b7ab57f2 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css @@ -0,0 +1,12057 @@ +@charset "UTF-8"; +/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-primary-text-emphasis: #052c65; + --bs-secondary-text-emphasis: #2b2f32; + --bs-success-text-emphasis: #0a3622; + --bs-info-text-emphasis: #055160; + --bs-warning-text-emphasis: #664d03; + --bs-danger-text-emphasis: #58151c; + --bs-light-text-emphasis: #495057; + --bs-dark-text-emphasis: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #e2e3e5; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #c4c8cb; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33, 37, 41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233, 236, 239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33, 37, 41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248, 249, 250; + --bs-heading-color: inherit; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-highlight-color: #212529; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-xxl: 2rem; + --bs-border-radius-2xl: var(--bs-border-radius-xxl); + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-focus-ring-width: 0.25rem; + --bs-focus-ring-opacity: 0.25; + --bs-focus-ring-color: rgba(13, 110, 253, 0.25); + --bs-form-valid-color: #198754; + --bs-form-valid-border-color: #198754; + --bs-form-invalid-color: #dc3545; + --bs-form-invalid-border-color: #dc3545; +} + +[data-bs-theme=dark] { + color-scheme: dark; + --bs-body-color: #dee2e6; + --bs-body-color-rgb: 222, 226, 230; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #fff; + --bs-emphasis-color-rgb: 255, 255, 255; + --bs-secondary-color: rgba(222, 226, 230, 0.75); + --bs-secondary-color-rgb: 222, 226, 230; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(222, 226, 230, 0.5); + --bs-tertiary-color-rgb: 222, 226, 230; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-primary-text-emphasis: #6ea8fe; + --bs-secondary-text-emphasis: #a7acb1; + --bs-success-text-emphasis: #75b798; + --bs-info-text-emphasis: #6edff6; + --bs-warning-text-emphasis: #ffda6a; + --bs-danger-text-emphasis: #ea868f; + --bs-light-text-emphasis: #f8f9fa; + --bs-dark-text-emphasis: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #161719; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #41464b; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #087990; + --bs-warning-border-subtle: #997404; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: inherit; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #8bb9fe; + --bs-link-color-rgb: 110, 168, 254; + --bs-link-hover-color-rgb: 139, 185, 254; + --bs-code-color: #e685b5; + --bs-highlight-color: #dee2e6; + --bs-highlight-bg: #664d03; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); + --bs-form-valid-color: #75b798; + --bs-form-valid-border-color: #75b798; + --bs-form-invalid-color: #ea868f; + --bs-form-invalid-border-color: #ea868f; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color); +} + +h1, .h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + h1, .h1 { + font-size: 2.5rem; + } +} + +h2, .h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + h2, .h2 { + font-size: 2rem; + } +} + +h3, .h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.75rem; + } +} + +h4, .h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h4, .h4 { + font-size: 1.5rem; + } +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.1875em; + color: var(--bs-highlight-color); + background-color: var(--bs-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-secondary-color); + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 0.875em; + color: var(--bs-secondary-color); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.33333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.table { + --bs-table-color-type: initial; + --bs-table-bg-type: initial; + --bs-table-color-state: initial; + --bs-table-bg-state: initial; + --bs-table-color: var(--bs-emphasis-color); + --bs-table-bg: var(--bs-body-bg); + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-emphasis-color); + --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05); + --bs-table-active-color: var(--bs-emphasis-color); + --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1); + --bs-table-hover-color: var(--bs-emphasis-color); + --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color))); + background-color: var(--bs-table-bg); + border-bottom-width: var(--bs-border-width); + box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: calc(var(--bs-border-width) * 2) solid currentcolor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: var(--bs-border-width) 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 var(--bs-border-width); +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); +} + +.table-active { + --bs-table-color-state: var(--bs-table-active-color); + --bs-table-bg-state: var(--bs-table-active-bg); +} + +.table-hover > tbody > tr:hover > * { + --bs-table-color-state: var(--bs-table-hover-color); + --bs-table-bg-state: var(--bs-table-hover-bg); +} + +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #cfe2ff; + --bs-table-border-color: #a6b5cc; + --bs-table-striped-bg: #c5d7f2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bacbe6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfd1ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #e2e3e5; + --bs-table-border-color: #b5b6b7; + --bs-table-striped-bg: #d7d8da; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbccce; + --bs-table-active-color: #000; + --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-success { + --bs-table-color: #000; + --bs-table-bg: #d1e7dd; + --bs-table-border-color: #a7b9b1; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-info { + --bs-table-color: #000; + --bs-table-bg: #cff4fc; + --bs-table-border-color: #a6c3ca; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #fff3cd; + --bs-table-border-color: #ccc2a4; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #f8d7da; + --bs-table-border-color: #c6acae; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f8f9fa; + --bs-table-border-color: #c6c7c8; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #212529; + --bs-table-border-color: #4d5154; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; +} + +.col-form-label { + padding-top: calc(0.375rem + var(--bs-border-width)); + padding-bottom: calc(0.375rem + var(--bs-border-width)); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + var(--bs-border-width)); + padding-bottom: calc(0.5rem + var(--bs-border-width)); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + var(--bs-border-width)); + padding-bottom: calc(0.25rem + var(--bs-border-width)); + font-size: 0.875rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-secondary-color); +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-body-bg); + background-clip: padding-box; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: var(--bs-body-color); + background-color: var(--bs-body-bg); + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.5em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-moz-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control::placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control:disabled { + background-color: var(--bs-secondary-bg); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--bs-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--bs-secondary-bg); +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: var(--bs-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--bs-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} + +textarea.form-control { + min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} + +.form-control-color { + width: 3rem; + height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); + padding: 0.375rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} + +.form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-body-bg); + background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--bs-secondary-bg); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--bs-body-color); +} + +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} + +[data-bs-theme=dark] .form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; +} + +.form-check-input { + --bs-form-check-bg: var(--bs-body-bg); + flex-shrink: 0; + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-form-check-bg); + background-image: var(--bs-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--bs-border-width) solid var(--bs-border-color); + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-check-input:checked { + background-color: #0d6efd; + border-color: #0d6efd; +} +.form-check-input:checked[type=checkbox] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: #0d6efd; + border-color: #0d6efd; + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + width: 2em; + margin-left: -2.5em; + background-image: var(--bs-form-switch-bg); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + -webkit-appearance: none; + appearance: none; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b6d4fe; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-secondary-bg); + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + -moz-appearance: none; + appearance: none; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b6d4fe; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-secondary-bg); + border-color: transparent; + border-radius: 1rem; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--bs-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--bs-secondary-color); +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + z-index: 2; + height: 100%; + padding: 1rem 0.75rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: var(--bs-border-width) solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; +} +.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); +} +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); +} +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--bs-border-width) 0; +} +.form-floating > :disabled ~ label, +.form-floating > .form-control:disabled ~ label { + color: #6c757d; +} +.form-floating > :disabled ~ label::after, +.form-floating > .form-control:disabled ~ label::after { + background-color: var(--bs-secondary-bg); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-tertiary-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: calc(var(--bs-border-width) * -1); + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-valid-color); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-success); + border-radius: var(--bs-border-radius); +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--bs-form-valid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--bs-form-valid-border-color); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--bs-form-valid-border-color); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--bs-form-valid-color); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--bs-form-valid-color); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-invalid-color); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-danger); + border-radius: var(--bs-border-radius); +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--bs-form-invalid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--bs-form-invalid-border-color); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--bs-form-invalid-border-color); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--bs-form-invalid-color); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--bs-form-invalid-color); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --bs-btn-padding-x: 0.75rem; + --bs-btn-padding-y: 0.375rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1.5; + --bs-btn-color: var(--bs-body-color); + --bs-btn-bg: transparent; + --bs-btn-border-width: var(--bs-border-width); + --bs-btn-border-color: transparent; + --bs-btn-border-radius: var(--bs-border-radius); + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:checked:focus-visible + .btn { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); +} + +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0b5ed7; + --bs-btn-hover-border-color: #0a58ca; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0a58ca; + --bs-btn-active-border-color: #0a53be; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0d6efd; + --bs-btn-disabled-border-color: #0d6efd; +} + +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5c636a; + --bs-btn-hover-border-color: #565e64; + --bs-btn-focus-shadow-rgb: 130, 138, 145; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #565e64; + --bs-btn-active-border-color: #51585e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6c757d; + --bs-btn-disabled-border-color: #6c757d; +} + +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #157347; + --bs-btn-hover-border-color: #146c43; + --bs-btn-focus-shadow-rgb: 60, 153, 110; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #146c43; + --bs-btn-active-border-color: #13653f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #198754; + --bs-btn-disabled-border-color: #198754; +} + +.btn-info { + --bs-btn-color: #000; + --bs-btn-bg: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #31d2f2; + --bs-btn-hover-border-color: #25cff2; + --bs-btn-focus-shadow-rgb: 11, 172, 204; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #3dd5f3; + --bs-btn-active-border-color: #25cff2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #0dcaf0; + --bs-btn-disabled-border-color: #0dcaf0; +} + +.btn-warning { + --bs-btn-color: #000; + --bs-btn-bg: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffca2c; + --bs-btn-hover-border-color: #ffc720; + --bs-btn-focus-shadow-rgb: 217, 164, 6; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffcd39; + --bs-btn-active-border-color: #ffc720; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ffc107; + --bs-btn-disabled-border-color: #ffc107; +} + +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #bb2d3b; + --bs-btn-hover-border-color: #b02a37; + --bs-btn-focus-shadow-rgb: 225, 83, 97; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #b02a37; + --bs-btn-active-border-color: #a52834; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #dc3545; + --bs-btn-disabled-border-color: #dc3545; +} + +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #d3d4d5; + --bs-btn-hover-border-color: #c6c7c8; + --bs-btn-focus-shadow-rgb: 211, 212, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #c6c7c8; + --bs-btn-active-border-color: #babbbc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f8f9fa; + --bs-btn-disabled-border-color: #f8f9fa; +} + +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #424649; + --bs-btn-hover-border-color: #373b3e; + --bs-btn-focus-shadow-rgb: 66, 70, 73; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4d5154; + --bs-btn-active-border-color: #373b3e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #212529; + --bs-btn-disabled-border-color: #212529; +} + +.btn-outline-primary { + --bs-btn-color: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0d6efd; + --bs-btn-hover-border-color: #0d6efd; + --bs-btn-focus-shadow-rgb: 13, 110, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0d6efd; + --bs-btn-active-border-color: #0d6efd; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0d6efd; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0d6efd; + --bs-gradient: none; +} + +.btn-outline-secondary { + --bs-btn-color: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6c757d; + --bs-btn-hover-border-color: #6c757d; + --bs-btn-focus-shadow-rgb: 108, 117, 125; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6c757d; + --bs-btn-active-border-color: #6c757d; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6c757d; + --bs-gradient: none; +} + +.btn-outline-success { + --bs-btn-color: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #198754; + --bs-btn-hover-border-color: #198754; + --bs-btn-focus-shadow-rgb: 25, 135, 84; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #198754; + --bs-btn-active-border-color: #198754; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #198754; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #198754; + --bs-gradient: none; +} + +.btn-outline-info { + --bs-btn-color: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #0dcaf0; + --bs-btn-hover-border-color: #0dcaf0; + --bs-btn-focus-shadow-rgb: 13, 202, 240; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #0dcaf0; + --bs-btn-active-border-color: #0dcaf0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0dcaf0; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0dcaf0; + --bs-gradient: none; +} + +.btn-outline-warning { + --bs-btn-color: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffc107; + --bs-btn-hover-border-color: #ffc107; + --bs-btn-focus-shadow-rgb: 255, 193, 7; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffc107; + --bs-btn-active-border-color: #ffc107; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc107; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc107; + --bs-gradient: none; +} + +.btn-outline-danger { + --bs-btn-color: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #dc3545; + --bs-btn-hover-border-color: #dc3545; + --bs-btn-focus-shadow-rgb: 220, 53, 69; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #dc3545; + --bs-btn-active-border-color: #dc3545; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dc3545; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dc3545; + --bs-gradient: none; +} + +.btn-outline-light { + --bs-btn-color: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f8f9fa; + --bs-btn-hover-border-color: #f8f9fa; + --bs-btn-focus-shadow-rgb: 248, 249, 250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f8f9fa; + --bs-btn-active-border-color: #f8f9fa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f8f9fa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f8f9fa; + --bs-gradient: none; +} + +.btn-outline-dark { + --bs-btn-color: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #212529; + --bs-btn-hover-border-color: #212529; + --bs-btn-focus-shadow-rgb: 33, 37, 41; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #212529; + --bs-btn-active-border-color: #212529; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #212529; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #212529; + --bs-gradient: none; +} + +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: 0 0 0 #000; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); +} + +.btn-sm, .btn-group-sm > .btn { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: var(--bs-border-radius-sm); +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: var(--bs-border-radius); + --bs-dropdown-border-width: var(--bs-border-width); + --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: var(--bs-box-shadow); + --bs-dropdown-link-color: var(--bs-body-color); + --bs-dropdown-link-hover-color: var(--bs-body-color); + --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #6c757d; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--bs-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} + +.dropdown-menu-dark { + --bs-dropdown-color: #dee2e6; + --bs-dropdown-bg: #343a40; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #dee2e6; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-header-color: #adb5bd; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: var(--bs-border-radius); +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: calc(var(--bs-border-width) * -1); +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(var(--bs-border-width) * -1); +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + text-decoration: none; + background: none; + border: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--bs-nav-link-hover-color); +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.nav-link.disabled, .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --bs-nav-tabs-border-width: var(--bs-border-width); + --bs-nav-tabs-border-color: var(--bs-border-color); + --bs-nav-tabs-border-radius: var(--bs-border-radius); + --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color); + --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); + --bs-nav-tabs-link-active-bg: var(--bs-body-bg); + --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg); + border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --bs-nav-pills-border-radius: var(--bs-border-radius); + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #0d6efd; +} +.nav-pills .nav-link { + border-radius: var(--bs-nav-pills-border-radius); +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} + +.nav-underline { + --bs-nav-underline-gap: 1rem; + --bs-nav-underline-border-width: 0.125rem; + --bs-nav-underline-link-active-color: var(--bs-emphasis-color); + gap: var(--bs-nav-underline-gap); +} +.nav-underline .nav-link { + padding-right: 0; + padding-left: 0; + border-bottom: var(--bs-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 700; + color: var(--bs-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65); + --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8); + --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); + --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-padding-y: 0.3125rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.25rem; + --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.25rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); + --bs-navbar-toggler-border-radius: var(--bs-border-radius); + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + text-decoration: none; + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--bs-navbar-brand-hover-color); +} + +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--bs-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--bs-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark, +.navbar[data-bs-theme=dark] { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: #fff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +[data-bs-theme=dark] .navbar-toggler-icon { + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-title-color: ; + --bs-card-subtitle-color: ; + --bs-card-border-width: var(--bs-border-width); + --bs-card-border-color: var(--bs-border-color-translucent); + --bs-card-border-radius: var(--bs-border-radius); + --bs-card-box-shadow: ; + --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: var(--bs-body-bg); + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + color: var(--bs-body-color); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} + +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); + color: var(--bs-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; + color: var(--bs-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} + +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --bs-accordion-color: var(--bs-body-color); + --bs-accordion-bg: var(--bs-body-bg); + --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: var(--bs-border-width); + --bs-accordion-border-radius: var(--bs-border-radius); + --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: var(--bs-body-color); + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: var(--bs-primary-text-emphasis); + --bs-accordion-active-bg: var(--bs-primary-bg-subtle); +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} +.accordion-item:first-of-type > .accordion-header .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:last-of-type > .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} + +.accordion-body { + padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); +} + +.accordion-flush > .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush > .accordion-item:first-child { + border-top: 0; +} +.accordion-flush > .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed { + border-radius: 0; +} +.accordion-flush > .accordion-item > .accordion-collapse { + border-radius: 0; +} + +[data-bs-theme=dark] .accordion-button::after { + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: var(--bs-secondary-color); + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} + +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: var(--bs-body-bg); + --bs-pagination-border-width: var(--bs-border-width); + --bs-pagination-border-color: var(--bs-border-color); + --bs-pagination-border-radius: var(--bs-border-radius); + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: var(--bs-tertiary-bg); + --bs-pagination-hover-border-color: var(--bs-border-color); + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: var(--bs-secondary-bg); + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #0d6efd; + --bs-pagination-active-border-color: #0d6efd; + --bs-pagination-disabled-color: var(--bs-secondary-color); + --bs-pagination-disabled-bg: var(--bs-secondary-bg); + --bs-pagination-disabled-border-color: var(--bs-border-color); + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: calc(var(--bs-border-width) * -1); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} + +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.25rem; + --bs-pagination-border-radius: var(--bs-border-radius-lg); +} + +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-border-radius: var(--bs-border-radius-sm); +} + +.badge { + --bs-badge-padding-x: 0.65em; + --bs-badge-padding-y: 0.35em; + --bs-badge-font-size: 0.75em; + --bs-badge-font-weight: 700; + --bs-badge-color: #fff; + --bs-badge-border-radius: var(--bs-border-radius); + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); + --bs-alert-border-radius: var(--bs-border-radius); + --bs-alert-link-color: inherit; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; + color: var(--bs-alert-link-color); +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-primary { + --bs-alert-color: var(--bs-primary-text-emphasis); + --bs-alert-bg: var(--bs-primary-bg-subtle); + --bs-alert-border-color: var(--bs-primary-border-subtle); + --bs-alert-link-color: var(--bs-primary-text-emphasis); +} + +.alert-secondary { + --bs-alert-color: var(--bs-secondary-text-emphasis); + --bs-alert-bg: var(--bs-secondary-bg-subtle); + --bs-alert-border-color: var(--bs-secondary-border-subtle); + --bs-alert-link-color: var(--bs-secondary-text-emphasis); +} + +.alert-success { + --bs-alert-color: var(--bs-success-text-emphasis); + --bs-alert-bg: var(--bs-success-bg-subtle); + --bs-alert-border-color: var(--bs-success-border-subtle); + --bs-alert-link-color: var(--bs-success-text-emphasis); +} + +.alert-info { + --bs-alert-color: var(--bs-info-text-emphasis); + --bs-alert-bg: var(--bs-info-bg-subtle); + --bs-alert-border-color: var(--bs-info-border-subtle); + --bs-alert-link-color: var(--bs-info-text-emphasis); +} + +.alert-warning { + --bs-alert-color: var(--bs-warning-text-emphasis); + --bs-alert-bg: var(--bs-warning-bg-subtle); + --bs-alert-border-color: var(--bs-warning-border-subtle); + --bs-alert-link-color: var(--bs-warning-text-emphasis); +} + +.alert-danger { + --bs-alert-color: var(--bs-danger-text-emphasis); + --bs-alert-bg: var(--bs-danger-bg-subtle); + --bs-alert-border-color: var(--bs-danger-border-subtle); + --bs-alert-link-color: var(--bs-danger-text-emphasis); +} + +.alert-light { + --bs-alert-color: var(--bs-light-text-emphasis); + --bs-alert-bg: var(--bs-light-bg-subtle); + --bs-alert-border-color: var(--bs-light-border-subtle); + --bs-alert-link-color: var(--bs-light-text-emphasis); +} + +.alert-dark { + --bs-alert-color: var(--bs-dark-text-emphasis); + --bs-alert-bg: var(--bs-dark-bg-subtle); + --bs-alert-border-color: var(--bs-dark-border-subtle); + --bs-alert-link-color: var(--bs-dark-text-emphasis); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress, +.progress-stacked { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: var(--bs-secondary-bg); + --bs-progress-border-radius: var(--bs-border-radius); + --bs-progress-box-shadow: var(--bs-box-shadow-inset); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #0d6efd; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} + +.progress-stacked > .progress { + overflow: visible; +} + +.progress-stacked > .progress > .progress-bar { + width: 100%; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --bs-list-group-color: var(--bs-body-color); + --bs-list-group-bg: var(--bs-body-bg); + --bs-list-group-border-color: var(--bs-border-color); + --bs-list-group-border-width: var(--bs-border-width); + --bs-list-group-border-radius: var(--bs-border-radius); + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: var(--bs-secondary-color); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-tertiary-bg); + --bs-list-group-action-active-color: var(--bs-body-color); + --bs-list-group-action-active-bg: var(--bs-secondary-bg); + --bs-list-group-disabled-color: var(--bs-secondary-color); + --bs-list-group-disabled-bg: var(--bs-body-bg); + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #0d6efd; + --bs-list-group-active-border-color: #0d6efd; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + --bs-list-group-color: var(--bs-primary-text-emphasis); + --bs-list-group-bg: var(--bs-primary-bg-subtle); + --bs-list-group-border-color: var(--bs-primary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-primary-border-subtle); + --bs-list-group-active-color: var(--bs-primary-bg-subtle); + --bs-list-group-active-bg: var(--bs-primary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-primary-text-emphasis); +} + +.list-group-item-secondary { + --bs-list-group-color: var(--bs-secondary-text-emphasis); + --bs-list-group-bg: var(--bs-secondary-bg-subtle); + --bs-list-group-border-color: var(--bs-secondary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle); + --bs-list-group-active-color: var(--bs-secondary-bg-subtle); + --bs-list-group-active-bg: var(--bs-secondary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis); +} + +.list-group-item-success { + --bs-list-group-color: var(--bs-success-text-emphasis); + --bs-list-group-bg: var(--bs-success-bg-subtle); + --bs-list-group-border-color: var(--bs-success-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-success-border-subtle); + --bs-list-group-active-color: var(--bs-success-bg-subtle); + --bs-list-group-active-bg: var(--bs-success-text-emphasis); + --bs-list-group-active-border-color: var(--bs-success-text-emphasis); +} + +.list-group-item-info { + --bs-list-group-color: var(--bs-info-text-emphasis); + --bs-list-group-bg: var(--bs-info-bg-subtle); + --bs-list-group-border-color: var(--bs-info-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-info-border-subtle); + --bs-list-group-active-color: var(--bs-info-bg-subtle); + --bs-list-group-active-bg: var(--bs-info-text-emphasis); + --bs-list-group-active-border-color: var(--bs-info-text-emphasis); +} + +.list-group-item-warning { + --bs-list-group-color: var(--bs-warning-text-emphasis); + --bs-list-group-bg: var(--bs-warning-bg-subtle); + --bs-list-group-border-color: var(--bs-warning-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-warning-border-subtle); + --bs-list-group-active-color: var(--bs-warning-bg-subtle); + --bs-list-group-active-bg: var(--bs-warning-text-emphasis); + --bs-list-group-active-border-color: var(--bs-warning-text-emphasis); +} + +.list-group-item-danger { + --bs-list-group-color: var(--bs-danger-text-emphasis); + --bs-list-group-bg: var(--bs-danger-bg-subtle); + --bs-list-group-border-color: var(--bs-danger-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-danger-border-subtle); + --bs-list-group-active-color: var(--bs-danger-bg-subtle); + --bs-list-group-active-bg: var(--bs-danger-text-emphasis); + --bs-list-group-active-border-color: var(--bs-danger-text-emphasis); +} + +.list-group-item-light { + --bs-list-group-color: var(--bs-light-text-emphasis); + --bs-list-group-bg: var(--bs-light-bg-subtle); + --bs-list-group-border-color: var(--bs-light-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-light-border-subtle); + --bs-list-group-active-color: var(--bs-light-bg-subtle); + --bs-list-group-active-bg: var(--bs-light-text-emphasis); + --bs-list-group-active-border-color: var(--bs-light-text-emphasis); +} + +.list-group-item-dark { + --bs-list-group-color: var(--bs-dark-text-emphasis); + --bs-list-group-bg: var(--bs-dark-bg-subtle); + --bs-list-group-border-color: var(--bs-dark-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-dark-border-subtle); + --bs-list-group-active-color: var(--bs-dark-bg-subtle); + --bs-list-group-active-bg: var(--bs-dark-text-emphasis); + --bs-list-group-active-border-color: var(--bs-dark-text-emphasis); +} + +.btn-close { + --bs-btn-close-color: #000; + --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --bs-btn-close-opacity: 0.5; + --bs-btn-close-hover-opacity: 0.75; + --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-btn-close-focus-opacity: 1; + --bs-btn-close-disabled-opacity: 0.25; + --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 0.375rem; + opacity: var(--bs-btn-close-opacity); +} +.btn-close:hover { + color: var(--bs-btn-close-color); + text-decoration: none; + opacity: var(--bs-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--bs-btn-close-focus-shadow); + opacity: var(--bs-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: var(--bs-btn-close-disabled-opacity); +} + +.btn-close-white { + filter: var(--bs-btn-close-white-filter); +} + +[data-bs-theme=dark] .btn-close { + filter: var(--bs-btn-close-white-filter); +} + +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-border-width: var(--bs-border-width); + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: var(--bs-border-radius); + --bs-toast-box-shadow: var(--bs-box-shadow); + --bs-toast-header-color: var(--bs-secondary-color); + --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-header-border-color: var(--bs-border-color-translucent); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); + border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); + border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} + +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: var(--bs-body-bg); + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: var(--bs-border-width); + --bs-modal-border-radius: var(--bs-border-radius-lg); + --bs-modal-box-shadow: var(--bs-box-shadow-sm); + --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width))); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: var(--bs-border-width); + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: var(--bs-border-width); + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + outline: 0; +} + +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: var(--bs-box-shadow); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --bs-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: var(--bs-body-bg); + --bs-tooltip-bg: var(--bs-emphasis-color); + --bs-tooltip-border-radius: var(--bs-border-radius); + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} + +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.875rem; + --bs-popover-bg: var(--bs-body-bg); + --bs-popover-border-width: var(--bs-border-width); + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: var(--bs-border-radius-lg); + --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width)); + --bs-popover-box-shadow: var(--bs-box-shadow); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: inherit; + --bs-popover-header-bg: var(--bs-secondary-bg); + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: var(--bs-body-color); + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")*/; +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")*/; +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} + +[data-bs-theme=dark] .carousel .carousel-control-prev-icon, +[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon, +[data-bs-theme=dark].carousel .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] { + background-color: #000; +} +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { + color: #000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: var(--bs-body-color); + --bs-offcanvas-bg: var(--bs-body-bg); + --bs-offcanvas-border-width: var(--bs-border-width); + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm); + --bs-offcanvas-transition: transform 0.3s ease-in-out; + --bs-offcanvas-title-line-height: 1.5; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x)) calc(-0.5 * var(--bs-offcanvas-padding-y)) auto; +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--bs-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fff !important; + background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fff !important; + background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #000 !important; + background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #000 !important; + background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fff !important; + background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #000 !important; + background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fff !important; + background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-underline-offset: 0.25em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} + +.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.visually-hidden:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: var(--bs-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.object-fit-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-fit-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fit-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-fit-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-fit-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.overflow-x-auto { + overflow-x: auto !important; +} + +.overflow-x-hidden { + overflow-x: hidden !important; +} + +.overflow-x-visible { + overflow-x: visible !important; +} + +.overflow-x-scroll { + overflow-x: scroll !important; +} + +.overflow-y-auto { + overflow-y: auto !important; +} + +.overflow-y-hidden { + overflow-y: hidden !important; +} + +.overflow-y-visible { + overflow-y: visible !important; +} + +.overflow-y-scroll { + overflow-y: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-inline-grid { + display: inline-grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: var(--bs-box-shadow) !important; +} + +.shadow-sm { + box-shadow: var(--bs-box-shadow-sm) !important; +} + +.shadow-lg { + box-shadow: var(--bs-box-shadow-lg) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-secondary { + --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-success { + --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-info { + --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-warning { + --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-danger { + --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-light { + --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-dark { + --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity)); +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; +} + +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} + +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} + +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} + +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} + +.border-black { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; +} + +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--bs-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--bs-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--bs-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--bs-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--bs-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--bs-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--bs-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--bs-dark-border-subtle) !important; +} + +.border-1 { + border-width: 1px !important; +} + +.border-2 { + border-width: 2px !important; +} + +.border-3 { + border-width: 3px !important; +} + +.border-4 { + border-width: 4px !important; +} + +.border-5 { + border-width: 5px !important; +} + +.border-opacity-10 { + --bs-border-opacity: 0.1; +} + +.border-opacity-25 { + --bs-border-opacity: 0.25; +} + +.border-opacity-50 { + --bs-border-opacity: 0.5; +} + +.border-opacity-75 { + --bs-border-opacity: 0.75; +} + +.border-opacity-100 { + --bs-border-opacity: 1; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.row-gap-0 { + row-gap: 0 !important; +} + +.row-gap-1 { + row-gap: 0.25rem !important; +} + +.row-gap-2 { + row-gap: 0.5rem !important; +} + +.row-gap-3 { + row-gap: 1rem !important; +} + +.row-gap-4 { + row-gap: 1.5rem !important; +} + +.row-gap-5 { + row-gap: 3rem !important; +} + +.column-gap-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; +} + +.column-gap-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; +} + +.column-gap-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; +} + +.column-gap-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; +} + +.column-gap-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; +} + +.column-gap-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} + +.text-body-tertiary { + --bs-text-opacity: 1; + color: var(--bs-tertiary-color) !important; +} + +.text-body-emphasis { + --bs-text-opacity: 1; + color: var(--bs-emphasis-color) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--bs-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--bs-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--bs-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--bs-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--bs-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--bs-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--bs-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--bs-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --bs-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --bs-link-opacity: 0.1; +} + +.link-opacity-25 { + --bs-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --bs-link-opacity: 0.25; +} + +.link-opacity-50 { + --bs-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --bs-link-opacity: 0.5; +} + +.link-opacity-75 { + --bs-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --bs-link-opacity: 0.75; +} + +.link-opacity-100 { + --bs-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --bs-link-opacity: 1; +} + +.link-offset-1 { + text-underline-offset: 0.125em !important; +} + +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} + +.link-offset-2 { + text-underline-offset: 0.25em !important; +} + +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} + +.link-offset-3 { + text-underline-offset: 0.375em !important; +} + +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} + +.link-underline-primary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-success { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-info { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-warning { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-danger { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-light { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-dark { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --bs-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --bs-link-underline-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body-tertiary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--bs-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--bs-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--bs-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--bs-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--bs-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--bs-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--bs-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--bs-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-top-1 { + border-top-left-radius: var(--bs-border-radius-sm) !important; + border-top-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-3 { + border-top-left-radius: var(--bs-border-radius-lg) !important; + border-top-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-left-radius: var(--bs-border-radius-xl) !important; + border-top-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-left-radius: var(--bs-border-radius-xxl) !important; + border-top-right-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-top-circle { + border-top-left-radius: 50% !important; + border-top-right-radius: 50% !important; +} + +.rounded-top-pill { + border-top-left-radius: var(--bs-border-radius-pill) !important; + border-top-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-end-1 { + border-top-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-3 { + border-top-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-end-circle { + border-top-right-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} + +.rounded-end-pill { + border-top-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-bottom-1 { + border-bottom-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-bottom-circle { + border-bottom-right-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} + +.rounded-bottom-pill { + border-bottom-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-left-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} + +.rounded-start-1 { + border-bottom-left-radius: var(--bs-border-radius-sm) !important; + border-top-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-left-radius: var(--bs-border-radius-lg) !important; + border-top-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-left-radius: var(--bs-border-radius-xl) !important; + border-top-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; + border-top-left-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-start-circle { + border-bottom-left-radius: 50% !important; + border-top-left-radius: 50% !important; +} + +.rounded-start-pill { + border-bottom-left-radius: var(--bs-border-radius-pill) !important; + border-top-left-radius: var(--bs-border-radius-pill) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +.z-n1 { + z-index: -1 !important; +} + +.z-0 { + z-index: 0 !important; +} + +.z-1 { + z-index: 1 !important; +} + +.z-2 { + z-index: 2 !important; +} + +.z-3 { + z-index: 3 !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-sm-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-sm-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-sm-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-sm-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.5rem !important; + } + .row-gap-sm-5 { + row-gap: 3rem !important; + } + .column-gap-sm-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-sm-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-sm-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-sm-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-md-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-md-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-md-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-md-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 3rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.5rem !important; + } + .row-gap-md-5 { + row-gap: 3rem !important; + } + .column-gap-md-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-md-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-md-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-md-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-lg-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-lg-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-lg-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-lg-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 3rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.5rem !important; + } + .row-gap-lg-5 { + row-gap: 3rem !important; + } + .column-gap-lg-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-lg-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-lg-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-lg-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xl-5 { + row-gap: 3rem !important; + } + .column-gap-xl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xxl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xxl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xxl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xxl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 3rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-5 { + row-gap: 3rem !important; + } + .column-gap-xxl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xxl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xxl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + .fs-2 { + font-size: 2rem !important; + } + .fs-3 { + font-size: 1.75rem !important; + } + .fs-4 { + font-size: 1.5rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} + +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css.map b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css.map new file mode 100644 index 00000000..a1f9a189 --- /dev/null +++ b/src/AElfScanServer.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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EExnBlB,gBFwmB0B;AN9C9B;AG3dI;EKpGF;ILuQM,iBAAA;EH4TN;AACF;;AQpkBE;ELgQM,iCAAA;EK5PJ,gBFynBkB;EExnBlB,gBFwmB0B;ANnC9B;AGteI;EKpGF;ILuQM,eAAA;EHuUN;AACF;;AQ/kBE;ELgQM,iCAAA;EK5PJ,gBFynBkB;EExnBlB,gBFwmB0B;ANxB9B;AGjfI;EKpGF;ILuQM,iBAAA;EHkVN;AACF;;AQ1lBE;ELgQM,iCAAA;EK5PJ,gBFynBkB;EExnBlB,gBFwmB0B;ANb9B;AG5fI;EKpGF;ILuQM,eAAA;EH6VN;AACF;;AQrmBE;ELgQM,iCAAA;EK5PJ,gBFynBkB;EExnBlB,gBFwmB0B;ANF9B;AGvgBI;EKpGF;ILuQM,iBAAA;EHwWN;AACF;;AQxlBA;ECvDE,eAAA;EACA,gBAAA;ATmpBF;;AQxlBA;EC5DE,eAAA;EACA,gBAAA;ATwpBF;;AQ1lBA;EACE,qBAAA;AR6lBF;AQ3lBE;EACE,oBFsoB0B;ANzC9B;;AQnlBA;EL8MM,kBALI;EKvMR,yBAAA;ARslBF;;AQllBA;EACE,mBFiUO;EH1HH,kBALI;AHoZV;AQnlBE;EACE,gBAAA;ARqlBJ;;AQjlBA;EACE,iBAAA;EACA,mBFuTO;EH1HH,kBALI;EKtLR,cFtFS;AN0qBX;AQllBE;EACE,aAAA;ARolBJ;;AUprBA;ECIE,eAAA;EAGA,YAAA;AXkrBF;;AUnrBA;EACE,gBJ+jDkC;EI9jDlC,mCJ+jDkC;EI9jDlC,2DAAA;EHGE,sCAAA;EIRF,eAAA;EAGA,YAAA;AX2rBF;;AU7qBA;EAEE,qBAAA;AV+qBF;;AU5qBA;EACE,qBAAA;EACA,cAAA;AV+qBF;;AU5qBA;EPyPM,kBALI;EOlPR,gCJkjDkC;ANn4BpC;;AYjtBE;;;;;;;ECHA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,6CAAA;EACA,4CAAA;EACA,kBAAA;EACA,iBAAA;Ab8tBF;;AcxqBI;EF5CE;IACE,gBNkee;ENsPrB;AACF;Ac9qBI;EF5CE;IACE,gBNkee;EN2PrB;AACF;AcnrBI;EF5CE;IACE,gBNkee;ENgQrB;AACF;AcxrBI;EF5CE;IACE,iBNkee;ENqQrB;AACF;Ac7rBI;EF5CE;IACE,iBNkee;EN0QrB;AACF;Ae7vBA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;AfmwBJ;;Ae9vBE;ECNA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EAEA,yCAAA;EACA,6CAAA;EACA,4CAAA;AhBuwBF;AerwBI;ECOF,cAAA;EACA,WAAA;EACA,eAAA;EACA,6CAAA;EACA,4CAAA;EACA,8BAAA;AhBiwBF;;AgBltBM;EACE,YAAA;AhBqtBR;;AgBltBM;EApCJ,cAAA;EACA,WAAA;AhB0vBF;;AgB5uBE;EACE,cAAA;EACA,WAAA;AhB+uBJ;;AgBjvBE;EACE,cAAA;EACA,UAAA;AhBovBJ;;AgBtvBE;EACE,cAAA;EACA,mBAAA;AhByvBJ;;AgB3vBE;EACE,cAAA;EACA,UAAA;AhB8vBJ;;AgBhwBE;EACE,cAAA;EACA,UAAA;AhBmwBJ;;AgBrwBE;EACE,cAAA;EACA,mBAAA;AhBwwBJ;;AgBzuBM;EAhDJ,cAAA;EACA,WAAA;AhB6xBF;;AgBxuBU;EAhEN,cAAA;EACA,kBAAA;AhB4yBJ;;AgB7uBU;EAhEN,cAAA;EACA,mBAAA;AhBizBJ;;AgBlvBU;EAhEN,cAAA;EACA,UAAA;AhBszBJ;;AgBvvBU;EAhEN,cAAA;EACA,mBAAA;AhB2zBJ;;AgB5vBU;EAhEN,cAAA;EACA,mBAAA;AhBg0BJ;;AgBjwBU;EAhEN,cAAA;EACA,UAAA;AhBq0BJ;;AgBtwBU;EAhEN,cAAA;EACA,mBAAA;AhB00BJ;;AgB3wBU;EAhEN,cAAA;EACA,mBAAA;AhB+0BJ;;AgBhxBU;EAhEN,cAAA;EACA,UAAA;AhBo1BJ;;AgBrxBU;EAhEN,cAAA;EACA,mBAAA;AhBy1BJ;;AgB1xBU;EAhEN,cAAA;EACA,mBAAA;AhB81BJ;;AgB/xBU;EAhEN,cAAA;EACA,WAAA;AhBm2BJ;;AgB5xBY;EAxDV,wBAAA;AhBw1BF;;AgBhyBY;EAxDV,yBAAA;AhB41BF;;AgBpyBY;EAxDV,gBAAA;AhBg2BF;;AgBxyBY;EAxDV,yBAAA;AhBo2BF;;AgB5yBY;EAxDV,yBAAA;AhBw2BF;;AgBhzBY;EAxDV,gBAAA;AhB42BF;;AgBpzBY;EAxDV,yBAAA;AhBg3BF;;AgBxzBY;EAxDV,yBAAA;AhBo3BF;;AgB5zBY;EAxDV,gBAAA;AhBw3BF;;AgBh0BY;EAxDV,yBAAA;AhB43BF;;AgBp0BY;EAxDV,yBAAA;AhBg4BF;;AgB7zBQ;;EAEE,gBAAA;AhBg0BV;;AgB7zBQ;;EAEE,gBAAA;AhBg0BV;;AgBv0BQ;;EAEE,sBAAA;AhB00BV;;AgBv0BQ;;EAEE,sBAAA;AhB00BV;;AgBj1BQ;;EAEE,qBAAA;AhBo1BV;;AgBj1BQ;;EAEE,qBAAA;AhBo1BV;;AgB31BQ;;EAEE,mBAAA;AhB81BV;;AgB31BQ;;EAEE,mBAAA;AhB81BV;;AgBr2BQ;;EAEE,qBAAA;AhBw2BV;;AgBr2BQ;;EAEE,qBAAA;AhBw2BV;;AgB/2BQ;;EAEE,mBAAA;AhBk3BV;;AgB/2BQ;;EAEE,mBAAA;AhBk3BV;;Ac56BI;EEUE;IACE,YAAA;EhBs6BN;EgBn6BI;IApCJ,cAAA;IACA,WAAA;EhB08BA;EgB57BA;IACE,cAAA;IACA,WAAA;EhB87BF;EgBh8BA;IACE,cAAA;IACA,UAAA;EhBk8BF;EgBp8BA;IACE,cAAA;IACA,mBAAA;EhBs8BF;EgBx8BA;IACE,cAAA;IACA,UAAA;EhB08BF;EgB58BA;IACE,cAAA;IACA,UAAA;EhB88BF;EgBh9BA;IACE,cAAA;IACA,mBAAA;EhBk9BF;EgBn7BI;IAhDJ,cAAA;IACA,WAAA;EhBs+BA;EgBj7BQ;IAhEN,cAAA;IACA,kBAAA;EhBo/BF;EgBr7BQ;IAhEN,cAAA;IACA,mBAAA;EhBw/BF;EgBz7BQ;IAhEN,cAAA;IACA,UAAA;EhB4/BF;EgB77BQ;IAhEN,cAAA;IACA,mBAAA;EhBggCF;EgBj8BQ;IAhEN,cAAA;IACA,mBAAA;EhBogCF;EgBr8BQ;IAhEN,cAAA;IACA,UAAA;EhBwgCF;EgBz8BQ;IAhEN,cAAA;IACA,mBAAA;EhB4gCF;EgB78BQ;IAhEN,cAAA;IACA,mBAAA;EhBghCF;EgBj9BQ;IAhEN,cAAA;IACA,UAAA;EhBohCF;EgBr9BQ;IAhEN,cAAA;IACA,mBAAA;EhBwhCF;EgBz9BQ;IAhEN,cAAA;IACA,mBAAA;EhB4hCF;EgB79BQ;IAhEN,cAAA;IACA,WAAA;EhBgiCF;EgBz9BU;IAxDV,cAAA;EhBohCA;EgB59BU;IAxDV,wBAAA;EhBuhCA;EgB/9BU;IAxDV,yBAAA;EhB0hCA;EgBl+BU;IAxDV,gBAAA;EhB6hCA;EgBr+BU;IAxDV,yBAAA;EhBgiCA;EgBx+BU;IAxDV,yBAAA;EhBmiCA;EgB3+BU;IAxDV,gBAAA;EhBsiCA;EgB9+BU;IAxDV,yBAAA;EhByiCA;EgBj/BU;IAxDV,yBAAA;EhB4iCA;EgBp/BU;IAxDV,gBAAA;EhB+iCA;EgBv/BU;IAxDV,yBAAA;EhBkjCA;EgB1/BU;IAxDV,yBAAA;EhBqjCA;EgBl/BM;;IAEE,gBAAA;EhBo/BR;EgBj/BM;;IAEE,gBAAA;EhBm/BR;EgB1/BM;;IAEE,sBAAA;EhB4/BR;EgBz/BM;;IAEE,sBAAA;EhB2/BR;EgBlgCM;;IAEE,qBAAA;EhBogCR;EgBjgCM;;IAEE,qBAAA;EhBmgCR;EgB1gCM;;IAEE,mBAAA;EhB4gCR;EgBzgCM;;IAEE,mBAAA;EhB2gCR;EgBlhCM;;IAEE,qBAAA;EhBohCR;EgBjhCM;;IAEE,qBAAA;EhBmhCR;EgB1hCM;;IAEE,mBAAA;EhB4hCR;EgBzhCM;;IAEE,mBAAA;EhB2hCR;AACF;ActlCI;EEUE;IACE,YAAA;EhB+kCN;EgB5kCI;IApCJ,cAAA;IACA,WAAA;EhBmnCA;EgBrmCA;IACE,cAAA;IACA,WAAA;EhBumCF;EgBzmCA;IACE,cAAA;IACA,UAAA;EhB2mCF;EgB7mCA;IACE,cAAA;IACA,mBAAA;EhB+mCF;EgBjnCA;IACE,cAAA;IACA,UAAA;EhBmnCF;EgBrnCA;IACE,cAAA;IACA,UAAA;EhBunCF;EgBznCA;IACE,cAAA;IACA,mBAAA;EhB2nCF;EgB5lCI;IAhDJ,cAAA;IACA,WAAA;EhB+oCA;EgB1lCQ;IAhEN,cAAA;IACA,kBAAA;EhB6pCF;EgB9lCQ;IAhEN,cAAA;IACA,mBAAA;EhBiqCF;EgBlmCQ;IAhEN,cAAA;IACA,UAAA;EhBqqCF;EgBtmCQ;IAhEN,cAAA;IACA,mBAAA;EhByqCF;EgB1mCQ;IAhEN,cAAA;IACA,mBAAA;EhB6qCF;EgB9mCQ;IAhEN,cAAA;IACA,UAAA;EhBirCF;EgBlnCQ;IAhEN,cAAA;IACA,mBAAA;EhBqrCF;EgBtnCQ;IAhEN,cAAA;IACA,mBAAA;EhByrCF;EgB1nCQ;IAhEN,cAAA;IACA,UAAA;EhB6rCF;EgB9nCQ;IAhEN,cAAA;IACA,mBAAA;EhBisCF;EgBloCQ;IAhEN,cAAA;IACA,mBAAA;EhBqsCF;EgBtoCQ;IAhEN,cAAA;IACA,WAAA;EhBysCF;EgBloCU;IAxDV,cAAA;EhB6rCA;EgBroCU;IAxDV,wBAAA;EhBgsCA;EgBxoCU;IAxDV,yBAAA;EhBmsCA;EgB3oCU;IAxDV,gBAAA;EhBssCA;EgB9oCU;IAxDV,yBAAA;EhBysCA;EgBjpCU;IAxDV,yBAAA;EhB4sCA;EgBppCU;IAxDV,gBAAA;EhB+sCA;EgBvpCU;IAxDV,yBAAA;EhBktCA;EgB1pCU;IAxDV,yBAAA;EhBqtCA;EgB7pCU;IAxDV,gBAAA;EhBwtCA;EgBhqCU;IAxDV,yBAAA;EhB2tCA;EgBnqCU;IAxDV,yBAAA;EhB8tCA;EgB3pCM;;IAEE,gBAAA;EhB6pCR;EgB1pCM;;IAEE,gBAAA;EhB4pCR;EgBnqCM;;IAEE,sBAAA;EhBqqCR;EgBlqCM;;IAEE,sBAAA;EhBoqCR;EgB3qCM;;IAEE,qBAAA;EhB6qCR;EgB1qCM;;IAEE,qBAAA;EhB4qCR;EgBnrCM;;IAEE,mBAAA;EhBqrCR;EgBlrCM;;IAEE,mBAAA;EhBorCR;EgB3rCM;;IAEE,qBAAA;EhB6rCR;EgB1rCM;;IAEE,qBAAA;EhB4rCR;EgBnsCM;;IAEE,mBAAA;EhBqsCR;EgBlsCM;;IAEE,mBAAA;EhBosCR;AACF;Ac/vCI;EEUE;IACE,YAAA;EhBwvCN;EgBrvCI;IApCJ,cAAA;IACA,WAAA;EhB4xCA;EgB9wCA;IACE,cAAA;IACA,WAAA;EhBgxCF;EgBlxCA;IACE,cAAA;IACA,UAAA;EhBoxCF;EgBtxCA;IACE,cAAA;IACA,mBAAA;EhBwxCF;EgB1xCA;IACE,cAAA;IACA,UAAA;EhB4xCF;EgB9xCA;IACE,cAAA;IACA,UAAA;EhBgyCF;EgBlyCA;IACE,cAAA;IACA,mBAAA;EhBoyCF;EgBrwCI;IAhDJ,cAAA;IACA,WAAA;EhBwzCA;EgBnwCQ;IAhEN,cAAA;IACA,kBAAA;EhBs0CF;EgBvwCQ;IAhEN,cAAA;IACA,mBAAA;EhB00CF;EgB3wCQ;IAhEN,cAAA;IACA,UAAA;EhB80CF;EgB/wCQ;IAhEN,cAAA;IACA,mBAAA;EhBk1CF;EgBnxCQ;IAhEN,cAAA;IACA,mBAAA;EhBs1CF;EgBvxCQ;IAhEN,cAAA;IACA,UAAA;EhB01CF;EgB3xCQ;IAhEN,cAAA;IACA,mBAAA;EhB81CF;EgB/xCQ;IAhEN,cAAA;IACA,mBAAA;EhBk2CF;EgBnyCQ;IAhEN,cAAA;IACA,UAAA;EhBs2CF;EgBvyCQ;IAhEN,cAAA;IACA,mBAAA;EhB02CF;EgB3yCQ;IAhEN,cAAA;IACA,mBAAA;EhB82CF;EgB/yCQ;IAhEN,cAAA;IACA,WAAA;EhBk3CF;EgB3yCU;IAxDV,cAAA;EhBs2CA;EgB9yCU;IAxDV,wBAAA;EhBy2CA;EgBjzCU;IAxDV,yBAAA;EhB42CA;EgBpzCU;IAxDV,gBAAA;EhB+2CA;EgBvzCU;IAxDV,yBAAA;EhBk3CA;EgB1zCU;IAxDV,yBAAA;EhBq3CA;EgB7zCU;IAxDV,gBAAA;EhBw3CA;EgBh0CU;IAxDV,yBAAA;EhB23CA;EgBn0CU;IAxDV,yBAAA;EhB83CA;EgBt0CU;IAxDV,gBAAA;EhBi4CA;EgBz0CU;IAxDV,yBAAA;EhBo4CA;EgB50CU;IAxDV,yBAAA;EhBu4CA;EgBp0CM;;IAEE,gBAAA;EhBs0CR;EgBn0CM;;IAEE,gBAAA;EhBq0CR;EgB50CM;;IAEE,sBAAA;EhB80CR;EgB30CM;;IAEE,sBAAA;EhB60CR;EgBp1CM;;IAEE,qBAAA;EhBs1CR;EgBn1CM;;IAEE,qBAAA;EhBq1CR;EgB51CM;;IAEE,mBAAA;EhB81CR;EgB31CM;;IAEE,mBAAA;EhB61CR;EgBp2CM;;IAEE,qBAAA;EhBs2CR;EgBn2CM;;IAEE,qBAAA;EhBq2CR;EgB52CM;;IAEE,mBAAA;EhB82CR;EgB32CM;;IAEE,mBAAA;EhB62CR;AACF;Acx6CI;EEUE;IACE,YAAA;EhBi6CN;EgB95CI;IApCJ,cAAA;IACA,WAAA;EhBq8CA;EgBv7CA;IACE,cAAA;IACA,WAAA;EhBy7CF;EgB37CA;IACE,cAAA;IACA,UAAA;EhB67CF;EgB/7CA;IACE,cAAA;IACA,mBAAA;EhBi8CF;EgBn8CA;IACE,cAAA;IACA,UAAA;EhBq8CF;EgBv8CA;IACE,cAAA;IACA,UAAA;EhBy8CF;EgB38CA;IACE,cAAA;IACA,mBAAA;EhB68CF;EgB96CI;IAhDJ,cAAA;IACA,WAAA;EhBi+CA;EgB56CQ;IAhEN,cAAA;IACA,kBAAA;EhB++CF;EgBh7CQ;IAhEN,cAAA;IACA,mBAAA;EhBm/CF;EgBp7CQ;IAhEN,cAAA;IACA,UAAA;EhBu/CF;EgBx7CQ;IAhEN,cAAA;IACA,mBAAA;EhB2/CF;EgB57CQ;IAhEN,cAAA;IACA,mBAAA;EhB+/CF;EgBh8CQ;IAhEN,cAAA;IACA,UAAA;EhBmgDF;EgBp8CQ;IAhEN,cAAA;IACA,mBAAA;EhBugDF;EgBx8CQ;IAhEN,cAAA;IACA,mBAAA;EhB2gDF;EgB58CQ;IAhEN,cAAA;IACA,UAAA;EhB+gDF;EgBh9CQ;IAhEN,cAAA;IACA,mBAAA;EhBmhDF;EgBp9CQ;IAhEN,cAAA;IACA,mBAAA;EhBuhDF;EgBx9CQ;IAhEN,cAAA;IACA,WAAA;EhB2hDF;EgBp9CU;IAxDV,cAAA;EhB+gDA;EgBv9CU;IAxDV,wBAAA;EhBkhDA;EgB19CU;IAxDV,yBAAA;EhBqhDA;EgB79CU;IAxDV,gBAAA;EhBwhDA;EgBh+CU;IAxDV,yBAAA;EhB2hDA;EgBn+CU;IAxDV,yBAAA;EhB8hDA;EgBt+CU;IAxDV,gBAAA;EhBiiDA;EgBz+CU;IAxDV,yBAAA;EhBoiDA;EgB5+CU;IAxDV,yBAAA;EhBuiDA;EgB/+CU;IAxDV,gBAAA;EhB0iDA;EgBl/CU;IAxDV,yBAAA;EhB6iDA;EgBr/CU;IAxDV,yBAAA;EhBgjDA;EgB7+CM;;IAEE,gBAAA;EhB++CR;EgB5+CM;;IAEE,gBAAA;EhB8+CR;EgBr/CM;;IAEE,sBAAA;EhBu/CR;EgBp/CM;;IAEE,sBAAA;EhBs/CR;EgB7/CM;;IAEE,qBAAA;EhB+/CR;EgB5/CM;;IAEE,qBAAA;EhB8/CR;EgBrgDM;;IAEE,mBAAA;EhBugDR;EgBpgDM;;IAEE,mBAAA;EhBsgDR;EgB7gDM;;IAEE,qBAAA;EhB+gDR;EgB5gDM;;IAEE,qBAAA;EhB8gDR;EgBrhDM;;IAEE,mBAAA;EhBuhDR;EgBphDM;;IAEE,mBAAA;EhBshDR;AACF;AcjlDI;EEUE;IACE,YAAA;EhB0kDN;EgBvkDI;IApCJ,cAAA;IACA,WAAA;EhB8mDA;EgBhmDA;IACE,cAAA;IACA,WAAA;EhBkmDF;EgBpmDA;IACE,cAAA;IACA,UAAA;EhBsmDF;EgBxmDA;IACE,cAAA;IACA,mBAAA;EhB0mDF;EgB5mDA;IACE,cAAA;IACA,UAAA;EhB8mDF;EgBhnDA;IACE,cAAA;IACA,UAAA;EhBknDF;EgBpnDA;IACE,cAAA;IACA,mBAAA;EhBsnDF;EgBvlDI;IAhDJ,cAAA;IACA,WAAA;EhB0oDA;EgBrlDQ;IAhEN,cAAA;IACA,kBAAA;EhBwpDF;EgBzlDQ;IAhEN,cAAA;IACA,mBAAA;EhB4pDF;EgB7lDQ;IAhEN,cAAA;IACA,UAAA;EhBgqDF;EgBjmDQ;IAhEN,cAAA;IACA,mBAAA;EhBoqDF;EgBrmDQ;IAhEN,cAAA;IACA,mBAAA;EhBwqDF;EgBzmDQ;IAhEN,cAAA;IACA,UAAA;EhB4qDF;EgB7mDQ;IAhEN,cAAA;IACA,mBAAA;EhBgrDF;EgBjnDQ;IAhEN,cAAA;IACA,mBAAA;EhBorDF;EgBrnDQ;IAhEN,cAAA;IACA,UAAA;EhBwrDF;EgBznDQ;IAhEN,cAAA;IACA,mBAAA;EhB4rDF;EgB7nDQ;IAhEN,cAAA;IACA,mBAAA;EhBgsDF;EgBjoDQ;IAhEN,cAAA;IACA,WAAA;EhBosDF;EgB7nDU;IAxDV,cAAA;EhBwrDA;EgBhoDU;IAxDV,wBAAA;EhB2rDA;EgBnoDU;IAxDV,yBAAA;EhB8rDA;EgBtoDU;IAxDV,gBAAA;EhBisDA;EgBzoDU;IAxDV,yBAAA;EhBosDA;EgB5oDU;IAxDV,yBAAA;EhBusDA;EgB/oDU;IAxDV,gBAAA;EhB0sDA;EgBlpDU;IAxDV,yBAAA;EhB6sDA;EgBrpDU;IAxDV,yBAAA;EhBgtDA;EgBxpDU;IAxDV,gBAAA;EhBmtDA;EgB3pDU;IAxDV,yBAAA;EhBstDA;EgB9pDU;IAxDV,yBAAA;EhBytDA;EgBtpDM;;IAEE,gBAAA;EhBwpDR;EgBrpDM;;IAEE,gBAAA;EhBupDR;EgB9pDM;;IAEE,sBAAA;EhBgqDR;EgB7pDM;;IAEE,sBAAA;EhB+pDR;EgBtqDM;;IAEE,qBAAA;EhBwqDR;EgBrqDM;;IAEE,qBAAA;EhBuqDR;EgB9qDM;;IAEE,mBAAA;EhBgrDR;EgB7qDM;;IAEE,mBAAA;EhB+qDR;EgBtrDM;;IAEE,qBAAA;EhBwrDR;EgBrrDM;;IAEE,qBAAA;EhBurDR;EgB9rDM;;IAEE,mBAAA;EhBgsDR;EgB7rDM;;IAEE,mBAAA;EhB+rDR;AACF;AiBrzDA;EAEE,8BAAA;EACA,2BAAA;EACA,+BAAA;EACA,4BAAA;EAEA,0CAAA;EACA,gCAAA;EACA,+CAAA;EACA,iCAAA;EACA,kDAAA;EACA,+DAAA;EACA,iDAAA;EACA,6DAAA;EACA,gDAAA;EACA,8DAAA;EAEA,WAAA;EACA,mBXkYO;EWjYP,mBXusB4B;EWtsB5B,0CAAA;AjBozDF;AiB7yDE;EACE,sBAAA;EAEA,qFAAA;EACA,oCAAA;EACA,2CX+sB0B;EW9sB1B,2GAAA;AjB8yDJ;AiB3yDE;EACE,uBAAA;AjB6yDJ;AiB1yDE;EACE,sBAAA;AjB4yDJ;;AiBxyDA;EACE,+DAAA;AjB2yDF;;AiBpyDA;EACE,iBAAA;AjBuyDF;;AiB7xDE;EACE,wBAAA;AjBgyDJ;;AiBjxDE;EACE,sCAAA;AjBoxDJ;AiBjxDI;EACE,sCAAA;AjBmxDN;;AiB5wDE;EACE,sBAAA;AjB+wDJ;AiB5wDE;EACE,mBAAA;AjB8wDJ;;AiBpwDE;EACE,oDAAA;EACA,8CAAA;AjBuwDJ;;AiBjwDE;EACE,oDAAA;EACA,8CAAA;AjBowDJ;;AiB5vDA;EACE,oDAAA;EACA,8CAAA;AjB+vDF;;AiBvvDE;EACE,mDAAA;EACA,6CAAA;AjB0vDJ;;AkBt4DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlBk4DJ;;AkBp5DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlBg5DJ;;AkBl6DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlB85DJ;;AkBh7DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlB46DJ;;AkB97DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlB07DJ;;AkB58DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlBw8DJ;;AkB19DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlBs9DJ;;AkBx+DE;EAOE,sBAAA;EACA,sBAAA;EACA,gCAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,4BAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AlBo+DJ;;AiBn1DI;EACE,gBAAA;EACA,iCAAA;AjBs1DN;;Acj7DI;EGyFA;IACE,gBAAA;IACA,iCAAA;EjB41DJ;AACF;Acx7DI;EGyFA;IACE,gBAAA;IACA,iCAAA;EjBk2DJ;AACF;Ac97DI;EGyFA;IACE,gBAAA;IACA,iCAAA;EjBw2DJ;AACF;Acp8DI;EGyFA;IACE,gBAAA;IACA,iCAAA;EjB82DJ;AACF;Ac18DI;EGyFA;IACE,gBAAA;IACA,iCAAA;EjBo3DJ;AACF;AmBxhEA;EACE,qBbu2BsC;ANmrCxC;;AmBjhEA;EACE,oDAAA;EACA,uDAAA;EACA,gBAAA;EhB8QI,kBALI;EgBrQR,gBb+lB4B;ANm7C9B;;AmB9gEA;EACE,kDAAA;EACA,qDAAA;EhBoQI,kBALI;AHmxDV;;AmB9gEA;EACE,mDAAA;EACA,sDAAA;EhB8PI,mBALI;AHyxDV;;AoB/iEA;EACE,mBd+1BsC;EHrkBlC,kBALI;EiBjRR,gCd+1BsC;ANitCxC;;AqBrjEA;EACE,cAAA;EACA,WAAA;EACA,yBAAA;ElBwRI,eALI;EkBhRR,gBfkmB4B;EejmB5B,gBfymB4B;EexmB5B,2Bf43BsC;Ee33BtC,wBAAA;EAAA,qBAAA;EAAA,gBAAA;EACA,mCfq3BsC;Eep3BtC,4BAAA;EACA,2DAAA;EdGE,sCAAA;EeHE,wEDMJ;ArBmjEF;AsBrjEM;EDhBN;ICiBQ,gBAAA;EtBwjEN;AACF;AqBtjEE;EACE,gBAAA;ArBwjEJ;AqBtjEI;EACE,eAAA;ArBwjEN;AqBnjEE;EACE,2Bfs2BoC;Eer2BpC,mCfg2BoC;Ee/1BpC,qBf82BoC;Ee72BpC,UAAA;EAKE,kDfkhBkB;AN+hDxB;AqB7iEE;EAME,eAAA;EAMA,aAAA;EAKA,SAAA;ArBiiEJ;AqB5hEE;EACE,cAAA;EACA,UAAA;ArB8hEJ;AqB1hEE;EACE,gCf40BoC;Ee10BpC,UAAA;ArB2hEJ;AqB9hEE;EACE,gCf40BoC;Ee10BpC,UAAA;ArB2hEJ;AqBnhEE;EAEE,wCf8yBoC;Ee3yBpC,UAAA;ArBkhEJ;AqB9gEE;EACE,yBAAA;EACA,0BAAA;EACA,2BforB0B;EeprB1B,0BforB0B;EenrB1B,2BfsyBoC;EiBp4BtC,uCjBqiCgC;Eer8B9B,oBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,+CfgsB0B;Ee/rB1B,gBAAA;ECzFE,6ID0FF;EC1FE,qID0FF;ArBghEJ;AqB5hEE;EACE,yBAAA;EACA,0BAAA;EACA,2BforB0B;EeprB1B,0BforB0B;EenrB1B,2BfsyBoC;EiBp4BtC,uCjBqiCgC;Eer8B9B,oBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,+CfgsB0B;Ee/rB1B,gBAAA;ECzFE,qID0FF;ArBghEJ;AsBtmEM;ED0EJ;ICzEM,wBAAA;IAAA,gBAAA;EtBymEN;EqBhiEA;ICzEM,gBAAA;EtBymEN;AACF;AqBlhEE;EACE,wCf47B8B;ANwlClC;AqBrhEE;EACE,wCf47B8B;ANwlClC;;AqB3gEA;EACE,cAAA;EACA,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBfwf4B;Eevf5B,2Bf2xBsC;Ee1xBtC,6BAAA;EACA,yBAAA;EACA,sCAAA;ArB8gEF;AqB5gEE;EACE,UAAA;ArB8gEJ;AqB3gEE;EAEE,gBAAA;EACA,eAAA;ArB4gEJ;;AqBjgEA;EACE,mEf4wBsC;Ee3wBtC,uBAAA;ElByII,mBALI;EIvQN,yCAAA;APyoEJ;AqBlgEE;EACE,uBAAA;EACA,wBAAA;EACA,0BfooB0B;EepoB1B,yBfooB0B;ANg4C9B;AqBvgEE;EACE,uBAAA;EACA,wBAAA;EACA,0BfooB0B;EepoB1B,yBfooB0B;ANg4C9B;;AqBhgEA;EACE,iEfgwBsC;Ee/vBtC,oBAAA;ElB4HI,kBALI;EIvQN,yCAAA;APqpEJ;AqBjgEE;EACE,oBAAA;EACA,qBAAA;EACA,wBf2nB0B;Ee3nB1B,uBf2nB0B;ANw4C9B;AqBtgEE;EACE,oBAAA;EACA,qBAAA;EACA,wBf2nB0B;Ee3nB1B,uBf2nB0B;ANw4C9B;;AqB3/DE;EACE,oEf6uBoC;ANixCxC;AqB3/DE;EACE,mEf0uBoC;ANmxCxC;AqB1/DE;EACE,iEfuuBoC;ANqxCxC;;AqBv/DA;EACE,WfquBsC;EepuBtC,gEf8tBsC;Ee7tBtC,iBfilB4B;ANy6C9B;AqBx/DE;EACE,eAAA;ArB0/DJ;AqBv/DE;EACE,oBAAA;EdvLA,sCAAA;APirEJ;AqBt/DE;EACE,oBAAA;Ed5LA,sCAAA;APqrEJ;AqBr/DE;EAAoB,+Df8sBkB;AN0yCxC;AqBv/DE;EAAoB,6Df8sBkB;AN4yCxC;;AwBzsEA;EACE,wPAAA;EAEA,cAAA;EACA,WAAA;EACA,0CAAA;ErBqRI,eALI;EqB7QR,gBlB+lB4B;EkB9lB5B,gBlBsmB4B;EkBrmB5B,2BlBy3BsC;EkBx3BtC,wBAAA;EAAA,qBAAA;EAAA,gBAAA;EACA,mClBk3BsC;EkBj3BtC,mFAAA;EACA,4BAAA;EACA,yClB+9BkC;EkB99BlC,0BlB+9BkC;EkB99BlC,2DAAA;EjBHE,sCAAA;EeHE,wEESJ;AxBysEF;AsB9sEM;EEfN;IFgBQ,gBAAA;EtBitEN;AACF;AwB5sEE;EACE,qBlBs3BoC;EkBr3BpC,UAAA;EAKE,kDlBi+B4B;ANyuClC;AwBtsEE;EAEE,sBlB6uB0B;EkB5uB1B,sBAAA;AxBusEJ;AwBpsEE;EAEE,wClBu1BoC;AN82CxC;AwBhsEE;EACE,kBAAA;EACA,uCAAA;AxBksEJ;;AwB9rEA;EACE,oBlBsuB4B;EkBruB5B,uBlBquB4B;EkBpuB5B,oBlBquB4B;EHlgBxB,mBALI;EIvQN,yCAAA;AP4uEJ;;AwB9rEA;EACE,mBlBkuB4B;EkBjuB5B,sBlBiuB4B;EkBhuB5B,kBlBiuB4B;EHtgBxB,kBALI;EIvQN,yCAAA;APovEJ;;AwB5rEI;EACE,wPAAA;AxB+rEN;;AyBvwEA;EACE,cAAA;EACA,kBnBq6BwC;EmBp6BxC,mBnBq6BwC;EmBp6BxC,uBnBq6BwC;ANq2C1C;AyBxwEE;EACE,WAAA;EACA,mBAAA;AzB0wEJ;;AyBtwEA;EACE,oBnB25BwC;EmB15BxC,eAAA;EACA,iBAAA;AzBywEF;AyBvwEE;EACE,YAAA;EACA,oBAAA;EACA,cAAA;AzBywEJ;;AyBrwEA;EACE,qCAAA;EAEA,cAAA;EACA,UnB04BwC;EmBz4BxC,WnBy4BwC;EmBx4BxC,kBAAA;EACA,mBAAA;EACA,wBAAA;EAAA,qBAAA;EAAA,gBAAA;EACA,yCAAA;EACA,+CAAA;EACA,4BAAA;EACA,2BAAA;EACA,wBAAA;EACA,2DnB24BwC;EmB14BxC,iCAAA;EAAA,mBAAA;EAAA,yBAAA;AzBuwEF;AyBpwEE;ElB3BE,qBAAA;APkyEJ;AyBnwEE;EAEE,kBnBm4BsC;ANi4C1C;AyBjwEE;EACE,uBnB03BsC;ANy4C1C;AyBhwEE;EACE,qBnBs1BoC;EmBr1BpC,UAAA;EACA,kDnB8foB;ANowDxB;AyB/vEE;EACE,yBnB5BM;EmB6BN,qBnB7BM;AN8xEV;AyB/vEI;EAII,uPAAA;AzB8vER;AyB1vEI;EAII,+JAAA;AzByvER;AyBpvEE;EACE,yBnBjDM;EmBkDN,qBnBlDM;EmBuDJ,iPAAA;AzBkvEN;AyB9uEE;EACE,oBAAA;EACA,YAAA;EACA,YnBk2BuC;AN84C3C;AyBzuEI;EACE,eAAA;EACA,YnBy1BqC;ANk5C3C;;AyB7tEA;EACE,mBnBo1BgC;AN44ClC;AyB9tEE;EACE,2KAAA;EAEA,UnB80B8B;EmB70B9B,mBAAA;EACA,0CAAA;EACA,gCAAA;ElBjHA,kBAAA;EeHE,iDGsHF;AzB+tEJ;AsBj1EM;EG0GJ;IHzGM,gBAAA;EtBo1EN;AACF;AyBluEI;EACE,6JAAA;AzBouEN;AyBjuEI;EACE,iCnB60B4B;EmBx0B1B,0JAAA;AzB+tER;AyB1tEE;EACE,oBnBwzB8B;EmBvzB9B,eAAA;AzB4tEJ;AyB1tEI;EACE,oBAAA;EACA,cAAA;AzB4tEN;;AyBvtEA;EACE,qBAAA;EACA,kBnBsyBgC;ANo7ClC;;AyBvtEA;EACE,kBAAA;EACA,sBAAA;EACA,oBAAA;AzB0tEF;AyBttEI;EACE,oBAAA;EACA,YAAA;EACA,anBspBwB;ANkkD9B;;AyBjtEI;EACE,iLAAA;AzBotEN;;A0Bv4EA;EACE,WAAA;EACA,cAAA;EACA,UAAA;EACA,wBAAA;EAAA,qBAAA;EAAA,gBAAA;EACA,6BAAA;A1B04EF;A0Bx4EE;EACE,UAAA;A1B04EJ;A0Bt4EI;EAA0B,kEpB8gCa;AN23C3C;A0Bx4EI;EAA0B,kEpB6gCa;AN83C3C;A0Bx4EE;EACE,SAAA;A1B04EJ;A0Bv4EE;EACE,WpB+/BuC;EoB9/BvC,YpB8/BuC;EoB7/BvC,oBAAA;EACA,wBAAA;EAAA,gBAAA;EH1BF,yBjBkCQ;EoBNN,SpB6/BuC;EC1gCvC,mBAAA;EeHE,oHImBF;EJnBE,4GImBF;A1Bw4EJ;AsBv5EM;EIMJ;IJLM,wBAAA;IAAA,gBAAA;EtB05EN;AACF;A0B34EI;EHjCF,yBjB8hCyC;ANi5C3C;A0Bz4EE;EACE,WpBw+B8B;EoBv+B9B,cpBw+B8B;EoBv+B9B,kBAAA;EACA,epBu+B8B;EoBt+B9B,wCpBu+B8B;EoBt+B9B,yBAAA;EnB7BA,mBAAA;APy6EJ;A0Bv4EE;EACE,WpBo+BuC;EoBn+BvC,YpBm+BuC;EoBl+BvC,qBAAA;EAAA,gBAAA;EHpDF,yBjBkCQ;EoBoBN,SpBm+BuC;EC1gCvC,mBAAA;EeHE,iHI6CF;EJ7CE,4GI6CF;A1Bw4EJ;AsBj7EM;EIiCJ;IJhCM,qBAAA;IAAA,gBAAA;EtBo7EN;AACF;A0B34EI;EH3DF,yBjB8hCyC;AN26C3C;A0Bz4EE;EACE,WpB88B8B;EoB78B9B,cpB88B8B;EoB78B9B,kBAAA;EACA,epB68B8B;EoB58B9B,wCpB68B8B;EoB58B9B,yBAAA;EnBvDA,mBAAA;APm8EJ;A0Bv4EE;EACE,oBAAA;A1By4EJ;A0Bv4EI;EACE,2CpBg9BqC;ANy7C3C;A0Bt4EI;EACE,2CpB48BqC;AN47C3C;;A2B/9EA;EACE,kBAAA;A3Bk+EF;A2Bh+EE;;;EAGE,uDrBwiCoC;EqBviCpC,2DrBuiCoC;EqBtiCpC,iBrBuiCoC;AN27CxC;A2B/9EE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;EACA,YAAA;EACA,qBAAA;EACA,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;EACA,gDAAA;EACA,qBAAA;ELRE,gEKSF;A3Bi+EJ;AsBt+EM;EKTJ;ILUM,gBAAA;EtBy+EN;AACF;A2Bn+EE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AA;AxEk0OZ;;AwEz0OQ;EAOI,sBAAA;AxEs0OZ;;AwE70OQ;EAOI,sBAAA;AxE00OZ;;AwEj1OQ;EAOI,sBAAA;AxE80OZ;;AwEr1OQ;EAOI,uBAAA;AxEk1OZ;;AwEz1OQ;EAOI,uBAAA;AxEs1OZ;;AwE71OQ;EAOI,2BAAA;AxE01OZ;;AwEj2OQ;EAOI,wBAAA;AxE81OZ;;AwEr2OQ;EAOI,4BAAA;AxEk2OZ;;AwEz2OQ;EAOI,yBAAA;AxEs2OZ;;AwE72OQ;EAOI,8BAAA;AxE02OZ;;AwEj3OQ;EAOI,iCAAA;AxE82OZ;;AwEr3OQ;EAOI,sCAAA;AxEk3OZ;;AwEz3OQ;EAOI,yCAAA;AxEs3OZ;;AwE73OQ;EAOI,uBAAA;AxE03OZ;;AwEj4OQ;EAOI,uBAAA;AxE83OZ;;AwEr4OQ;EAOI,yBAAA;AxEk4OZ;;AwEz4OQ;EAOI,yBAAA;AxEs4OZ;;AwE74OQ;EAOI,0BAAA;AxE04OZ;;AwEj5OQ;EAOI,4BAAA;AxE84OZ;;AwEr5OQ;EAOI,kCAAA;AxEk5OZ;;AwEz5OQ;EAOI,sCAAA;AxEs5OZ;;AwE75OQ;EAOI,oCAAA;AxE05OZ;;AwEj6OQ;EAOI,kCAAA;AxE85OZ;;AwEr6OQ;EAOI,yCAAA;AxEk6OZ;;AwEz6OQ;EAOI,wCAAA;AxEs6OZ;;AwE76OQ;EAOI,wCAAA;AxE06OZ;;AwEj7OQ;EAOI,kCAAA;AxE86OZ;;AwEr7OQ;EAOI,gCAAA;AxEk7OZ;;AwEz7OQ;EAOI,8BAAA;AxEs7OZ;;AwE77OQ;EAOI,gCAAA;AxE07OZ;;AwEj8OQ;EAOI,+BAAA;AxE87OZ;;AwEr8OQ;EAOI,oCAAA;AxEk8OZ;;AwEz8OQ;EAOI,kCAAA;AxEs8OZ;;AwE78OQ;EAOI,gCAAA;AxE08OZ;;AwEj9OQ;EAOI,uCAAA;AxE88OZ;;AwEr9OQ;EAOI,sCAAA;AxEk9OZ;;AwEz9OQ;EAOI,iCAAA;AxEs9OZ;;AwE79OQ;EAOI,2BAAA;AxE09OZ;;AwEj+OQ;EAOI,iCAAA;AxE89OZ;;AwEr+OQ;EAOI,+BAAA;AxEk+OZ;;AwEz+OQ;EAOI,6BAAA;AxEs+OZ;;AwE7+OQ;EAOI,+BAAA;AxE0+OZ;;AwEj/OQ;EAOI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AA;ExEs3SV;EwE73SM;IAOI,sCAAA;ExEy3SV;EwEh4SM;IAOI,yCAAA;ExE43SV;EwEn4SM;IAOI,uBAAA;ExE+3SV;EwEt4SM;IAOI,uBAAA;ExEk4SV;EwEz4SM;IAOI,yBAAA;ExEq4SV;EwE54SM;IAOI,yBAAA;ExEw4SV;EwE/4SM;IAOI,0BAAA;ExE24SV;EwEl5SM;IAOI,4BAAA;ExE84SV;EwEr5SM;IAOI,kCAAA;ExEi5SV;EwEx5SM;IAOI,sCAAA;ExEo5SV;EwE35SM;IAOI,oCAAA;ExEu5SV;EwE95SM;IAOI,kCAAA;ExE05SV;EwEj6SM;IAOI,yCAAA;ExE65SV;EwEp6SM;IAOI,wCAAA;ExEg6SV;EwEv6SM;IAOI,wCAAA;ExEm6SV;EwE16SM;IAOI,kCAAA;ExEs6SV;EwE76SM;IAOI,gCAAA;ExEy6SV;EwEh7SM;IAOI,8BAAA;ExE46SV;EwEn7SM;IAOI,gCAAA;ExE+6SV;EwEt7SM;IAOI,+BAAA;ExEk7SV;EwEz7SM;IAOI,oCAAA;ExEq7SV;EwE57SM;IAOI,kCAAA;ExEw7SV;EwE/7SM;IAOI,gCAAA;ExE27SV;EwEl8SM;IAOI,uCAAA;ExE87SV;EwEr8SM;IAOI,sCAAA;ExEi8SV;EwEx8SM;IAOI,iCAAA;ExEo8SV;EwE38SM;IAOI,2BAAA;ExEu8SV;EwE98SM;IAOI,iCAAA;ExE08SV;EwEj9SM;IAOI,+BAAA;ExE68SV;EwEp9SM;IAOI,6BAAA;ExEg9SV;EwEv9SM;IAOI,+BAAA;ExEm9SV;EwE19SM;IAOI,8BAAA;ExEs9SV;EwE79SM;IAOI,oBAAA;ExEy9SV;EwEh+SM;IAOI,mBAAA;ExE49SV;EwEn+SM;IAOI,mBAAA;ExE+9SV;EwEt+SM;IAOI,mBAAA;ExEk+SV;EwEz+SM;IAOI,mBAAA;ExEq+SV;EwE5+SM;IAOI,mBAAA;ExEw+SV;EwE/+SM;IAOI,mBAAA;ExE2+SV;EwEl/SM;IAOI,mBAAA;ExE8+SV;EwEr/SM;IAOI,oBAAA;ExEi/SV;EwEx/SM;IAOI,0BAAA;ExEo/SV;EwE3/SM;IAOI,yBAAA;ExEu/SV;EwE9/SM;IAOI,uBAAA;ExE0/SV;E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V;EwE/3TM;IAOI,yBAAA;ExE23TV;EwEl4TM;IAOI,wBAAA;ExE83TV;EwEr4TM;IAOI,+BAAA;ExEi4TV;EwEx4TM;IAOI,yBAAA;ExEo4TV;EwE34TM;IAOI,6BAAA;ExEu4TV;EwE94TM;IAOI,8BAAA;ExE04TV;EwEj5TM;IAOI,wBAAA;ExE64TV;EwEp5TM;IAOI,+BAAA;ExEg5TV;EwEv5TM;IAOI,wBAAA;ExEm5TV;EwE15TM;IAOI,yBAAA;ExEs5TV;EwE75TM;IAOI,8BAAA;ExEy5TV;EwEh6TM;IAOI,iCAAA;ExE45TV;EwEn6TM;IAOI,sCAAA;ExE+5TV;EwEt6TM;IAOI,yCAAA;ExEk6TV;EwEz6TM;IAOI,uBAAA;ExEq6TV;EwE56TM;IAOI,uBAAA;ExEw6TV;EwE/6TM;IAOI,yBAAA;ExE26TV;EwEl7TM;IAOI,yBAAA;ExE86TV;EwEr7TM;IAOI,0BAAA;ExEi7TV;EwEx7TM;IAOI,4BAAA;ExEo7TV;EwE37TM;IAOI,kCAAA;ExEu7TV;EwE97TM;IAOI,sCAAA;ExE07TV;EwEj8TM;IAOI,oCAAA;ExE67TV;EwEp8TM;IAOI,kCAAA;ExEg8TV;EwEv8TM;IAOI,yCAAA;ExEm8TV;EwE18TM;IAOI,wCAAA;ExEs8TV;EwE78TM;IAOI,wCAAA;ExEy8TV;EwEh9TM;IAOI,kCAAA;ExE48TV;EwEn9TM;IAOI,gCAAA;ExE+8TV;EwEt9TM;IAOI,8BAAA;ExEk9TV;EwEz9TM;IAOI,gCAAA;ExEq9TV;EwE59TM;IAOI,+BAAA;ExEw9TV;EwE/9TM;IAOI,oCAAA;ExE29TV;EwEl+TM;IAOI,kCAAA;ExE89TV;EwEr+TM;IAOI,gCAAA;ExEi+TV;EwEx+TM;IAOI,uCAAA;ExEo+TV;EwE3+TM;IAOI,sCAAA;ExEu+TV;EwE9+TM;IAOI,iCAAA;ExE0+TV;EwEj/TM;IAOI,2BAAA;ExE6+TV;EwEp/TM;IAOI,iCAAA;ExEg/TV;EwEv/TM;IAOI,+BAAA;ExEm/TV;EwE1/TM;IAOI,6BAAA;ExEs/TV;EwE7/TM;IAOI,+BAAA;ExEy/TV;EwEhgUM;IAOI,8BAAA;ExE4/TV;EwEngUM;IA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","file":"bootstrap.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1, .h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1, .h1 {\n font-size: 2.5rem;\n }\n}\n\nh2, .h2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2, .h2 {\n font-size: 2rem;\n }\n}\n\nh3, .h3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3, .h3 {\n font-size: 1.75rem;\n }\n}\n\nh4, .h4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4, .h4 {\n font-size: 1.5rem;\n }\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall, .small {\n font-size: 0.875em;\n}\n\nmark, .mark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 0.875em;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: 0.875em;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);\n width: 100%;\n margin-bottom: 1rem;\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n}\n.table > :not(caption) > * > * {\n padding: 0.5rem 0.5rem;\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n}\n.table > tbody {\n vertical-align: inherit;\n}\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-striped-columns > :not(caption) > tr > :nth-child(even) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n.form-label {\n margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + var(--bs-border-width));\n padding-bottom: calc(0.375rem + var(--bs-border-width));\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + var(--bs-border-width));\n padding-bottom: calc(0.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + var(--bs-border-width));\n padding-bottom: calc(0.25rem + var(--bs-border-width));\n font-size: 0.875rem;\n}\n\n.form-text {\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n appearance: none;\n background-color: var(--bs-body-bg);\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control[type=file] {\n overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n.form-control::-webkit-datetime-edit {\n display: block;\n padding: 0;\n}\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n.form-control::file-selector-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control::file-selector-button {\n transition: none;\n }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n line-height: 1.5;\n color: var(--bs-body-color);\n background-color: transparent;\n border: solid transparent;\n border-width: var(--bs-border-width) 0;\n}\n.form-control-plaintext:focus {\n outline: 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n.form-control-sm::file-selector-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n.form-control-lg::file-selector-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n width: 3rem;\n height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color::-webkit-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color.form-control-sm {\n height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n display: block;\n width: 100%;\n padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 16px 12px;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n padding-right: 0.75rem;\n background-image: none;\n}\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n.form-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n[data-bs-theme=dark] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5em;\n margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n padding-right: 1.5em;\n padding-left: 0;\n text-align: right;\n}\n.form-check-reverse .form-check-input {\n float: right;\n margin-right: -1.5em;\n margin-left: 0;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: 0.25em;\n vertical-align: top;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: var(--bs-border-width) solid var(--bs-border-color);\n print-color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n border-radius: 50%;\n}\n.form-check-input:active {\n filter: brightness(90%);\n}\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n background-color: #0d6efd;\n border-color: #0d6efd;\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n cursor: default;\n opacity: 0.5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n width: 2em;\n margin-left: -2.5em;\n background-image: var(--bs-form-switch-bg);\n background-position: left center;\n border-radius: 2em;\n transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n background-position: right center;\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-switch.form-check-reverse {\n padding-right: 2.5em;\n padding-left: 0;\n}\n.form-switch.form-check-reverse .form-check-input {\n margin-right: -2.5em;\n margin-left: 0;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: 1rem;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n pointer-events: none;\n filter: none;\n opacity: 0.65;\n}\n\n[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n width: 100%;\n height: 1.5rem;\n padding: 0;\n appearance: none;\n background-color: transparent;\n}\n.form-range:focus {\n outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n border: 0;\n}\n.form-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-moz-range-thumb {\n transition: none;\n }\n}\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range:disabled {\n pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext,\n.form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n.form-floating > label {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n height: 100%;\n padding: 1rem 0.75rem;\n overflow: hidden;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-floating > label {\n transition: none;\n }\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext {\n padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::placeholder,\n.form-floating > .form-control-plaintext::placeholder {\n color: transparent;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n.form-floating > .form-control-plaintext:focus,\n.form-floating > .form-control-plaintext:not(:placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill,\n.form-floating > .form-control-plaintext:-webkit-autofill {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-control-plaintext ~ label,\n.form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:focus ~ label::after,\n.form-floating > .form-control:not(:placeholder-shown) ~ label::after,\n.form-floating > .form-control-plaintext ~ label::after,\n.form-floating > .form-select ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n.form-floating > :disabled ~ label,\n.form-floating > .form-control:disabled ~ label {\n color: #6c757d;\n}\n.form-floating > :disabled ~ label::after,\n.form-floating > .form-control:disabled ~ label::after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select,\n.input-group > .form-floating {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus,\n.input-group > .form-floating:focus-within {\n z-index: 5;\n}\n.input-group .btn {\n position: relative;\n z-index: 2;\n}\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(var(--bs-border-width) * -1);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .form-floating:not(:first-child) > .form-control,\n.input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-valid-color);\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: var(--bs-form-valid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated .form-control-color:valid, .form-control-color.is-valid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n.was-validated .input-group > .form-select:not(:focus):valid,\n.input-group > .form-select:not(:focus).is-valid,\n.was-validated .input-group > .form-floating:not(:focus-within):valid,\n.input-group > .form-floating:not(:focus-within).is-valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-invalid-color);\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated .form-control-color:invalid, .form-control-color.is-invalid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n.was-validated .input-group > .form-select:not(:focus):invalid,\n.input-group > .form-select:not(:focus).is-invalid,\n.was-validated .input-group > .form-floating:not(:focus-within):invalid,\n.input-group > .form-floating:not(:focus-within).is-invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked:focus-visible + .btn {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-lg, .btn-group-lg > .btn {\n --bs-btn-padding-y: 0.5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-sm, .btn-group-sm > .btn {\n --bs-btn-padding-y: 0.25rem;\n --bs-btn-padding-x: 0.5rem;\n --bs-btn-font-size: 0.875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n.collapsing.collapse-horizontal {\n width: 0;\n height: auto;\n transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing.collapse-horizontal {\n transition: none;\n }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: 0.5rem;\n --bs-dropdown-spacer: 0.125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: 0.5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: 0.25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: 0.5rem;\n position: absolute;\n z-index: var(--bs-dropdown-zindex);\n display: none;\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n margin: 0;\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n list-style: none;\n background-color: var(--bs-dropdown-bg);\n background-clip: padding-box;\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.dropdown-menu[data-bs-popper] {\n top: 100%;\n left: 0;\n margin-top: var(--bs-dropdown-spacer);\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n .dropdown-menu-sm-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n .dropdown-menu-sm-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n .dropdown-menu-md-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n .dropdown-menu-md-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n .dropdown-menu-lg-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n .dropdown-menu-lg-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n .dropdown-menu-xl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n .dropdown-menu-xl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n .dropdown-menu-xxl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n .dropdown-menu-xxl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n}\n.dropend .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n}\n.dropstart .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n display: none;\n}\n.dropstart .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: var(--bs-dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n font-weight: 400;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n text-decoration: none;\n background-color: var(--bs-dropdown-link-active-bg);\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n margin-bottom: 0;\n font-size: 0.875rem;\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n.btn-group > :not(.btn-check:first-child) + .btn,\n.btn-group > .btn-group:not(:first-child) {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn.dropdown-toggle-split:first-child,\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n text-decoration: none;\n background: none;\n border: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .nav-link {\n transition: none;\n }\n}\n.nav-link:hover, .nav-link:focus {\n color: var(--bs-nav-link-hover-color);\n}\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: 0.125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n.nav-underline .nav-link {\n padding-right: 0;\n padding-left: 0;\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n}\n.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n border-bottom-color: currentcolor;\n}\n.nav-underline .nav-link.active,\n.nav-underline .show > .nav-link {\n font-weight: 700;\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: 0.5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: 0.3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: 0.5rem;\n --bs-navbar-toggler-padding-y: 0.25rem;\n --bs-navbar-toggler-padding-x: 0.75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: 0.25rem;\n --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n text-decoration: none;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-navbar-color);\n}\n.navbar-text a,\n.navbar-text a:hover,\n.navbar-text a:focus {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n line-height: 1;\n color: var(--bs-navbar-color);\n background-color: transparent;\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n.navbar-toggler:hover {\n text-decoration: none;\n}\n.navbar-toggler:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xxl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xxl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-expand .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n}\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n.navbar-expand .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=dark] {\n --bs-navbar-color: rgba(255, 255, 255, 0.55);\n --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=dark] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: 0.5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: 0.5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: 0.75rem;\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n background-clip: border-box;\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));\n margin-bottom: 0;\n color: var(--bs-card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n margin-bottom: 0;\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n font-size: 1rem;\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n border: 0;\n border-radius: 0;\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n.accordion-button:not(.collapsed)::after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n.accordion-button::after {\n flex-shrink: 0;\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n margin-left: auto;\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button::after {\n transition: none;\n }\n}\n.accordion-button:hover {\n z-index: 2;\n}\n.accordion-button:focus {\n z-index: 3;\n outline: 0;\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:first-of-type > .accordion-header .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:last-of-type > .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush > .accordion-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n.accordion-flush > .accordion-item:first-child {\n border-top: 0;\n}\n.accordion-flush > .accordion-item:last-child {\n border-bottom: 0;\n}\n.accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed {\n border-radius: 0;\n}\n.accordion-flush > .accordion-item > .accordion-collapse {\n border-radius: 0;\n}\n\n[data-bs-theme=dark] .accordion-button::after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: 0.5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n list-style: none;\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n.breadcrumb-item + .breadcrumb-item::before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: 0.75rem;\n --bs-pagination-padding-y: 0.375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n display: flex;\n padding-left: 0;\n list-style: none;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n text-decoration: none;\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .page-link {\n transition: none;\n }\n}\n.page-link:hover {\n z-index: 2;\n color: var(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n outline: 0;\n box-shadow: var(--bs-pagination-focus-box-shadow);\n}\n.page-link.active, .active > .page-link {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n.page-link.disabled, .disabled > .page-link {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: 0.75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: 0.5rem;\n --bs-pagination-padding-y: 0.25rem;\n --bs-pagination-font-size: 0.875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: 0.65em;\n --bs-badge-padding-y: 0.35em;\n --bs-badge-font-size: 0.75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n display: inline-block;\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n line-height: 1;\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n}\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n position: relative;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n color: var(--bs-alert-link-color);\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n.progress,\n.progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: 0.75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width 0.6s ease;\n display: flex;\n height: var(--bs-progress-height);\n overflow: hidden;\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: var(--bs-progress-height) var(--bs-progress-height);\n}\n\n.progress-stacked > .progress {\n overflow: visible;\n}\n\n.progress-stacked > .progress > .progress-bar {\n width: 100%;\n}\n\n.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: 0.5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: var(--bs-list-group-border-radius);\n}\n\n.list-group-numbered {\n list-style-type: none;\n counter-reset: section;\n}\n.list-group-numbered > .list-group-item::before {\n content: counters(section, \".\") \". \";\n counter-increment: section;\n}\n\n.list-group-item-action {\n width: 100%;\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--bs-list-group-action-hover-bg);\n}\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n text-decoration: none;\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n}\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n.list-group-flush {\n border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n border-width: 0 0 var(--bs-list-group-border-width);\n}\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: 0.5;\n --bs-btn-close-hover-opacity: 0.75;\n --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: 0.25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em 0.25em;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;\n border: 0;\n border-radius: 0.375rem;\n opacity: var(--bs-btn-close-opacity);\n}\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n text-decoration: none;\n opacity: var(--bs-btn-close-hover-opacity);\n}\n.btn-close:focus {\n outline: 0;\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n}\n.btn-close:disabled, .btn-close.disabled {\n pointer-events: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white {\n filter: var(--bs-btn-close-white-filter);\n}\n\n[data-bs-theme=dark] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: 0.75rem;\n --bs-toast-padding-y: 0.5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: 0.875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n max-width: 100%;\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n background-clip: padding-box;\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n}\n.toast.showing {\n opacity: 0;\n}\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n position: absolute;\n z-index: var(--bs-toast-zindex);\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n}\n.toast-header .btn-close {\n margin-right: calc(-0.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: 0.5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: 0.5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--bs-modal-margin);\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n background-clip: padding-box;\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n outline: 0;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: 0.5;\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-backdrop-zindex);\n width: 100vw;\n height: 100vh;\n background-color: var(--bs-backdrop-bg);\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: var(--bs-modal-title-line-height);\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: var(--bs-modal-padding);\n}\n\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * 0.5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n.modal-fullscreen .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n}\n.modal-fullscreen .modal-header,\n.modal-fullscreen .modal-footer {\n border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-sm-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-header,\n .modal-fullscreen-sm-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-md-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-header,\n .modal-fullscreen-md-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-lg-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-header,\n .modal-fullscreen-lg-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-header,\n .modal-fullscreen-xl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xxl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-header,\n .modal-fullscreen-xxl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: 0.5rem;\n --bs-tooltip-padding-y: 0.25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: 0.875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: 0.9;\n --bs-tooltip-arrow-width: 0.8rem;\n --bs-tooltip-arrow-height: 0.4rem;\n z-index: var(--bs-tooltip-zindex);\n display: block;\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n.tooltip .tooltip-arrow {\n display: block;\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n}\n.tooltip .tooltip-arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n top: -1px;\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-top-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n right: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-right-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n bottom: -1px;\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n left: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: 0.875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: 0.5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: 0.5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n display: block;\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n background-clip: padding-box;\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n}\n.popover .popover-arrow {\n display: block;\n width: var(--bs-popover-arrow-width);\n height: var(--bs-popover-arrow-height);\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n border-width: 0;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n bottom: 0;\n border-top-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n left: 0;\n border-right-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n top: 0;\n border-bottom-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-0.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n right: 0;\n border-left-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n margin-bottom: 0;\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-start,\n .carousel-fade .active.carousel-item-end {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n padding: 0;\n color: #fff;\n text-align: center;\n background: none;\n border: 0;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\") /*rtl:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")*/;\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\") /*rtl:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\")*/;\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n margin-right: 15%;\n margin-bottom: 1rem;\n margin-left: 15%;\n}\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n padding: 0;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 1.25rem;\n left: 15%;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n color: #fff;\n text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=dark] .carousel .carousel-control-prev-icon,\n[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,\n[data-bs-theme=dark].carousel .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n border-radius: 50%;\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg) /* rtl:ignore */;\n }\n}\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-border-width: 0.25em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n.spinner-grow {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-grow;\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform 0.3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-sm.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-sm.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-sm.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n visibility: visible;\n }\n}\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n .offcanvas-sm .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-md.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-md.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-md.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n visibility: visible;\n }\n}\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n .offcanvas-md .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-lg.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-lg.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-lg.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n visibility: visible;\n }\n}\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n .offcanvas-lg .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n .offcanvas-xl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xxl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xxl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xxl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n .offcanvas-xxl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n.offcanvas {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n.offcanvas.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n}\n.offcanvas.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n}\n.offcanvas.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n}\n.offcanvas.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n}\n.offcanvas.showing, .offcanvas.show:not(.hiding) {\n transform: none;\n}\n.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n.offcanvas-backdrop.show {\n opacity: 0.5;\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n}\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x)) calc(-0.5 * var(--bs-offcanvas-padding-y)) auto;\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--bs-offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n overflow-y: auto;\n}\n\n.placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: 0.5;\n}\n.placeholder.btn::before {\n display: inline-block;\n content: \"\";\n}\n\n.placeholder-xs {\n min-height: 0.6em;\n}\n\n.placeholder-sm {\n min-height: 0.8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: 0.2;\n }\n}\n.placeholder-wave {\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n mask-position: -200% 0%;\n }\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-primary:hover, .link-primary:focus {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-secondary:hover, .link-secondary:focus {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-success:hover, .link-success:focus {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-info:hover, .link-info:focus {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-warning:hover, .link-warning:focus {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-danger:hover, .link-danger:focus {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-light:hover, .link-light:focus {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-dark:hover, .link-dark:focus {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-body-emphasis:hover, .link-body-emphasis:focus {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n}\n\n.focus-ring:focus {\n outline: 0;\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n}\n\n.icon-link {\n display: inline-flex;\n gap: 0.375rem;\n align-items: center;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-underline-offset: 0.25em;\n backface-visibility: hidden;\n}\n.icon-link > .bi {\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n fill: currentcolor;\n transition: 0.2s ease-in-out transform;\n}\n@media (prefers-reduced-motion: reduce) {\n .icon-link > .bi {\n transition: none;\n }\n}\n\n.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));\n}\n\n.ratio {\n position: relative;\n width: 100%;\n}\n.ratio::before {\n display: block;\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n}\n.ratio > * {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sticky-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-sm-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 768px) {\n .sticky-md-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-md-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 992px) {\n .sticky-lg-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-lg-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1200px) {\n .sticky-xl-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xl-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xxl-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n.visually-hidden:not(caption),\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n position: absolute !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n content: \"\";\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vr {\n display: inline-block;\n align-self: stretch;\n width: var(--bs-border-width);\n min-height: 1em;\n background-color: currentcolor;\n opacity: 0.25;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: 0.25 !important;\n}\n\n.opacity-50 {\n opacity: 0.5 !important;\n}\n\n.opacity-75 {\n opacity: 0.75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: 0.1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: 0.25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: 0.5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: 0.75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: 0.25rem !important;\n}\n\n.gap-2 {\n gap: 0.5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10 {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-10-hover:hover {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-25 {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-25-hover:hover {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-50 {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-50-hover:hover {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-75 {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-75-hover:hover {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-100 {\n --bs-link-opacity: 1;\n}\n\n.link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1 {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-1-hover:hover {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-2 {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-2-hover:hover {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-3 {\n text-underline-offset: 0.375em !important;\n}\n\n.link-offset-3-hover:hover {\n text-underline-offset: 0.375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0 {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10 {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-25 {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-50 {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-75 {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-100 {\n --bs-link-underline-opacity: 1;\n}\n\n.link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: transparent !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n user-select: all !important;\n}\n\n.user-select-auto {\n user-select: auto !important;\n}\n\n.user-select-none {\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-bottom-left-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-bottom-left-radius: 50% !important;\n border-top-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: left !important;\n }\n .float-sm-end {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n .object-fit-sm-contain {\n object-fit: contain !important;\n }\n .object-fit-sm-cover {\n object-fit: cover !important;\n }\n .object-fit-sm-fill {\n object-fit: fill !important;\n }\n .object-fit-sm-scale {\n object-fit: scale-down !important;\n }\n .object-fit-sm-none {\n object-fit: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n .gap-sm-0 {\n gap: 0 !important;\n }\n .gap-sm-1 {\n gap: 0.25rem !important;\n }\n .gap-sm-2 {\n gap: 0.5rem !important;\n }\n .gap-sm-3 {\n gap: 1rem !important;\n }\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n .gap-sm-5 {\n gap: 3rem !important;\n }\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n .row-gap-sm-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-sm-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n .column-gap-sm-0 {\n column-gap: 0 !important;\n }\n .column-gap-sm-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-sm-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-sm-3 {\n column-gap: 1rem !important;\n }\n .column-gap-sm-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-sm-5 {\n column-gap: 3rem !important;\n }\n .text-sm-start {\n text-align: left !important;\n }\n .text-sm-end {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-start {\n float: left !important;\n }\n .float-md-end {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n .object-fit-md-contain {\n object-fit: contain !important;\n }\n .object-fit-md-cover {\n object-fit: cover !important;\n }\n .object-fit-md-fill {\n object-fit: fill !important;\n }\n .object-fit-md-scale {\n object-fit: scale-down !important;\n }\n .object-fit-md-none {\n object-fit: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n .gap-md-0 {\n gap: 0 !important;\n }\n .gap-md-1 {\n gap: 0.25rem !important;\n }\n .gap-md-2 {\n gap: 0.5rem !important;\n }\n .gap-md-3 {\n gap: 1rem !important;\n }\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n .gap-md-5 {\n gap: 3rem !important;\n }\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n .row-gap-md-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-md-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n .column-gap-md-0 {\n column-gap: 0 !important;\n }\n .column-gap-md-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-md-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-md-3 {\n column-gap: 1rem !important;\n }\n .column-gap-md-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-md-5 {\n column-gap: 3rem !important;\n }\n .text-md-start {\n text-align: left !important;\n }\n .text-md-end {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-start {\n float: left !important;\n }\n .float-lg-end {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n .object-fit-lg-contain {\n object-fit: contain !important;\n }\n .object-fit-lg-cover {\n object-fit: cover !important;\n }\n .object-fit-lg-fill {\n object-fit: fill !important;\n }\n .object-fit-lg-scale {\n object-fit: scale-down !important;\n }\n .object-fit-lg-none {\n object-fit: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n .gap-lg-0 {\n gap: 0 !important;\n }\n .gap-lg-1 {\n gap: 0.25rem !important;\n }\n .gap-lg-2 {\n gap: 0.5rem !important;\n }\n .gap-lg-3 {\n gap: 1rem !important;\n }\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n .gap-lg-5 {\n gap: 3rem !important;\n }\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n .row-gap-lg-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-lg-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n .column-gap-lg-0 {\n column-gap: 0 !important;\n }\n .column-gap-lg-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-lg-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-lg-3 {\n column-gap: 1rem !important;\n }\n .column-gap-lg-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-lg-5 {\n column-gap: 3rem !important;\n }\n .text-lg-start {\n text-align: left !important;\n }\n .text-lg-end {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n .float-xl-end {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n .object-fit-xl-contain {\n object-fit: contain !important;\n }\n .object-fit-xl-cover {\n object-fit: cover !important;\n }\n .object-fit-xl-fill {\n object-fit: fill !important;\n }\n .object-fit-xl-scale {\n object-fit: scale-down !important;\n }\n .object-fit-xl-none {\n object-fit: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n .gap-xl-0 {\n gap: 0 !important;\n }\n .gap-xl-1 {\n gap: 0.25rem !important;\n }\n .gap-xl-2 {\n gap: 0.5rem !important;\n }\n .gap-xl-3 {\n gap: 1rem !important;\n }\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n .gap-xl-5 {\n gap: 3rem !important;\n }\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xl-0 {\n column-gap: 0 !important;\n }\n .column-gap-xl-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-xl-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-xl-3 {\n column-gap: 1rem !important;\n }\n .column-gap-xl-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-xl-5 {\n column-gap: 3rem !important;\n }\n .text-xl-start {\n text-align: left !important;\n }\n .text-xl-end {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: left !important;\n }\n .float-xxl-end {\n float: right !important;\n }\n .float-xxl-none {\n float: none !important;\n }\n .object-fit-xxl-contain {\n object-fit: contain !important;\n }\n .object-fit-xxl-cover {\n object-fit: cover !important;\n }\n .object-fit-xxl-fill {\n object-fit: fill !important;\n }\n .object-fit-xxl-scale {\n object-fit: scale-down !important;\n }\n .object-fit-xxl-none {\n object-fit: none !important;\n }\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n .gap-xxl-0 {\n gap: 0 !important;\n }\n .gap-xxl-1 {\n gap: 0.25rem !important;\n }\n .gap-xxl-2 {\n gap: 0.5rem !important;\n }\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xxl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xxl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xxl-0 {\n column-gap: 0 !important;\n }\n .column-gap-xxl-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-xxl-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-xxl-3 {\n column-gap: 1rem !important;\n }\n .column-gap-xxl-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-xxl-5 {\n column-gap: 3rem !important;\n }\n .text-xxl-start {\n text-align: left !important;\n }\n .text-xxl-end {\n text-align: right !important;\n }\n .text-xxl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n .fs-2 {\n font-size: 2rem !important;\n }\n .fs-3 {\n font-size: 1.75rem !important;\n }\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`

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≶ws+2+-PuOKxw3bzuPfiP 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%0D=Ogd^2@_T$Q{pZ{z$}stJmiXui>%`Yuekf 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�|$6P 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 UB&)Ah%9Xrn%?H&yh}z})e{115sQ>@~ literal 0 HcmV?d00001 diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..452b49c0407e7ec42821f8d8799ad0327e2c2282 GIT binary patch literal 25464 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 literal 0 HcmV?d00001 diff --git a/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf b/src/AElfScanServer.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e7e2ecfa341157f2a42ec210bf82cc0156a5540b GIT binary patch literal 423676 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