gitextract_fztawn0h/ ├── .cargo/ │ └── config.toml ├── .codecov.yml ├── .config/ │ └── nextest.toml ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── CODEOWNERS │ ├── actions/ │ │ ├── build-frontend/ │ │ │ └── action.yml │ │ └── build-policies/ │ │ └── action.yml │ ├── dependabot.yml │ ├── release.yml │ ├── scripts/ │ │ ├── .gitignore │ │ ├── cleanup-pr.cjs │ │ ├── commit-and-tag.cjs │ │ ├── create-release-branch.cjs │ │ ├── create-version-tag.cjs │ │ ├── merge-back.cjs │ │ ├── package.json │ │ ├── update-release-branch.cjs │ │ └── update-unstable-tag.cjs │ └── workflows/ │ ├── build.yaml │ ├── ci.yaml │ ├── coverage.yaml │ ├── docs.yaml │ ├── merge-back.yaml │ ├── release-branch.yaml │ ├── release-bump.yaml │ ├── tag.yaml │ ├── translations-download.yaml │ └── translations-upload.yaml ├── .gitignore ├── .rustfmt.toml ├── CONTRIBUTING.md ├── Cargo.toml ├── Dockerfile ├── LICENSE ├── LICENSE-COMMERCIAL ├── README.md ├── biome.json ├── book.toml ├── clippy.toml ├── crates/ │ ├── axum-utils/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── client_authorization.rs │ │ ├── cookies.rs │ │ ├── csrf.rs │ │ ├── error_wrapper.rs │ │ ├── fancy_error.rs │ │ ├── jwt.rs │ │ ├── language_detection.rs │ │ ├── lib.rs │ │ ├── sentry.rs │ │ ├── session.rs │ │ └── user_authorization.rs │ ├── cli/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ └── src/ │ │ ├── app_state.rs │ │ ├── commands/ │ │ │ ├── config.rs │ │ │ ├── database.rs │ │ │ ├── debug.rs │ │ │ ├── doctor.rs │ │ │ ├── manage.rs │ │ │ ├── mod.rs │ │ │ ├── server.rs │ │ │ ├── syn2mas.rs │ │ │ ├── templates.rs │ │ │ └── worker.rs │ │ ├── lifecycle.rs │ │ ├── main.rs │ │ ├── server.rs │ │ ├── sync.rs │ │ ├── telemetry.rs │ │ └── util.rs │ ├── config/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── bin/ │ │ │ └── schema.rs │ │ ├── lib.rs │ │ ├── schema.rs │ │ ├── sections/ │ │ │ ├── account.rs │ │ │ ├── branding.rs │ │ │ ├── captcha.rs │ │ │ ├── clients.rs │ │ │ ├── database.rs │ │ │ ├── email.rs │ │ │ ├── experimental.rs │ │ │ ├── http.rs │ │ │ ├── matrix.rs │ │ │ ├── mod.rs │ │ │ ├── oauth.rs │ │ │ ├── passwords.rs │ │ │ ├── policy.rs │ │ │ ├── rate_limiting.rs │ │ │ ├── secrets.rs │ │ │ ├── telemetry.rs │ │ │ ├── templates.rs │ │ │ └── upstream_oauth2.rs │ │ └── util.rs │ ├── context/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── fmt.rs │ │ ├── future.rs │ │ ├── layer.rs │ │ ├── lib.rs │ │ └── service.rs │ ├── data-model/ │ │ ├── Cargo.toml │ │ ├── examples/ │ │ │ └── ua-parser.rs │ │ └── src/ │ │ ├── clock.rs │ │ ├── compat/ │ │ │ ├── device.rs │ │ │ ├── mod.rs │ │ │ ├── session.rs │ │ │ └── sso_login.rs │ │ ├── lib.rs │ │ ├── oauth2/ │ │ │ ├── authorization_grant.rs │ │ │ ├── client.rs │ │ │ ├── device_code_grant.rs │ │ │ ├── mod.rs │ │ │ └── session.rs │ │ ├── personal/ │ │ │ ├── mod.rs │ │ │ └── session.rs │ │ ├── policy_data.rs │ │ ├── site_config.rs │ │ ├── tokens.rs │ │ ├── upstream_oauth2/ │ │ │ ├── link.rs │ │ │ ├── mod.rs │ │ │ ├── provider.rs │ │ │ └── session.rs │ │ ├── user_agent.rs │ │ ├── users.rs │ │ ├── utils.rs │ │ └── version.rs │ ├── email/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── lib.rs │ │ ├── mailer.rs │ │ └── transport.rs │ ├── handlers/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── activity_tracker/ │ │ │ ├── bound.rs │ │ │ ├── mod.rs │ │ │ └── worker.rs │ │ ├── admin/ │ │ │ ├── call_context.rs │ │ │ ├── mod.rs │ │ │ ├── model.rs │ │ │ ├── params.rs │ │ │ ├── response.rs │ │ │ ├── schema.rs │ │ │ └── v1/ │ │ │ ├── compat_sessions/ │ │ │ │ ├── finish.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ └── mod.rs │ │ │ ├── mod.rs │ │ │ ├── oauth2_sessions/ │ │ │ │ ├── finish.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ └── mod.rs │ │ │ ├── personal_sessions/ │ │ │ │ ├── add.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── regenerate.rs │ │ │ │ └── revoke.rs │ │ │ ├── policy_data/ │ │ │ │ ├── get.rs │ │ │ │ ├── get_latest.rs │ │ │ │ ├── mod.rs │ │ │ │ └── set.rs │ │ │ ├── site_config.rs │ │ │ ├── upstream_oauth_links/ │ │ │ │ ├── add.rs │ │ │ │ ├── delete.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ └── mod.rs │ │ │ ├── upstream_oauth_providers/ │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ └── mod.rs │ │ │ ├── user_emails/ │ │ │ │ ├── add.rs │ │ │ │ ├── delete.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ └── mod.rs │ │ │ ├── user_registration_tokens/ │ │ │ │ ├── add.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── revoke.rs │ │ │ │ ├── unrevoke.rs │ │ │ │ └── update.rs │ │ │ ├── user_sessions/ │ │ │ │ ├── finish.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ └── mod.rs │ │ │ ├── users/ │ │ │ │ ├── add.rs │ │ │ │ ├── by_username.rs │ │ │ │ ├── deactivate.rs │ │ │ │ ├── get.rs │ │ │ │ ├── list.rs │ │ │ │ ├── lock.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── reactivate.rs │ │ │ │ ├── set_admin.rs │ │ │ │ ├── set_password.rs │ │ │ │ └── unlock.rs │ │ │ └── version.rs │ │ ├── bin/ │ │ │ ├── api-schema.rs │ │ │ └── graphql-schema.rs │ │ ├── captcha.rs │ │ ├── cleanup_tests.rs │ │ ├── compat/ │ │ │ ├── login.rs │ │ │ ├── login_sso_complete.rs │ │ │ ├── login_sso_redirect.rs │ │ │ ├── logout.rs │ │ │ ├── logout_all.rs │ │ │ ├── mod.rs │ │ │ ├── refresh.rs │ │ │ └── tests.rs │ │ ├── graphql/ │ │ │ ├── mod.rs │ │ │ ├── model/ │ │ │ │ ├── browser_sessions.rs │ │ │ │ ├── compat_sessions.rs │ │ │ │ ├── cursor.rs │ │ │ │ ├── matrix.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── node.rs │ │ │ │ ├── oauth.rs │ │ │ │ ├── site_config.rs │ │ │ │ ├── upstream_oauth.rs │ │ │ │ ├── users.rs │ │ │ │ └── viewer/ │ │ │ │ ├── anonymous.rs │ │ │ │ └── mod.rs │ │ │ ├── mutations/ │ │ │ │ ├── browser_session.rs │ │ │ │ ├── compat_session.rs │ │ │ │ ├── matrix.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── oauth2_session.rs │ │ │ │ ├── user.rs │ │ │ │ └── user_email.rs │ │ │ ├── query/ │ │ │ │ ├── mod.rs │ │ │ │ ├── session.rs │ │ │ │ ├── upstream_oauth.rs │ │ │ │ ├── user.rs │ │ │ │ └── viewer.rs │ │ │ ├── state.rs │ │ │ └── tests.rs │ │ ├── health.rs │ │ ├── lib.rs │ │ ├── oauth2/ │ │ │ ├── authorization/ │ │ │ │ ├── callback.rs │ │ │ │ ├── consent.rs │ │ │ │ └── mod.rs │ │ │ ├── device/ │ │ │ │ ├── authorize.rs │ │ │ │ ├── consent.rs │ │ │ │ ├── link.rs │ │ │ │ └── mod.rs │ │ │ ├── discovery.rs │ │ │ ├── introspection.rs │ │ │ ├── keys.rs │ │ │ ├── mod.rs │ │ │ ├── registration.rs │ │ │ ├── revoke.rs │ │ │ ├── token.rs │ │ │ ├── userinfo.rs │ │ │ └── webfinger.rs │ │ ├── passwords.rs │ │ ├── preferred_language.rs │ │ ├── rate_limit.rs │ │ ├── session.rs │ │ ├── snapshots/ │ │ │ ├── mas_handlers__passwords__tests__hash_verify_and_upgrade-2.snap │ │ │ ├── mas_handlers__passwords__tests__hash_verify_and_upgrade-3.snap │ │ │ ├── mas_handlers__passwords__tests__hash_verify_and_upgrade.snap │ │ │ ├── mas_handlers__passwords__tests__hashing_argon2id-2.snap │ │ │ ├── mas_handlers__passwords__tests__hashing_argon2id.snap │ │ │ ├── mas_handlers__passwords__tests__hashing_bcrypt-2.snap │ │ │ ├── mas_handlers__passwords__tests__hashing_bcrypt.snap │ │ │ ├── mas_handlers__passwords__tests__hashing_pbkdf2-2.snap │ │ │ └── mas_handlers__passwords__tests__hashing_pbkdf2.snap │ │ ├── test_utils.rs │ │ ├── upstream_oauth2/ │ │ │ ├── authorize.rs │ │ │ ├── backchannel_logout.rs │ │ │ ├── cache.rs │ │ │ ├── callback.rs │ │ │ ├── cookie.rs │ │ │ ├── link.rs │ │ │ ├── mod.rs │ │ │ └── template.rs │ │ └── views/ │ │ ├── app.rs │ │ ├── index.rs │ │ ├── login.rs │ │ ├── logout.rs │ │ ├── mod.rs │ │ ├── recovery/ │ │ │ ├── mod.rs │ │ │ ├── progress.rs │ │ │ └── start.rs │ │ ├── register/ │ │ │ ├── cookie.rs │ │ │ ├── mod.rs │ │ │ ├── password.rs │ │ │ └── steps/ │ │ │ ├── display_name.rs │ │ │ ├── finish.rs │ │ │ ├── mod.rs │ │ │ ├── registration_token.rs │ │ │ └── verify_email.rs │ │ └── shared.rs │ ├── http/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── ext.rs │ │ ├── lib.rs │ │ └── reqwest.rs │ ├── i18n/ │ │ ├── Cargo.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ ├── sprintf/ │ │ │ │ ├── argument.rs │ │ │ │ ├── formatter.rs │ │ │ │ ├── grammar.pest │ │ │ │ ├── message.rs │ │ │ │ ├── mod.rs │ │ │ │ └── parser.rs │ │ │ ├── translations.rs │ │ │ └── translator.rs │ │ └── test_data/ │ │ ├── en-US.json │ │ ├── en.json │ │ └── fr.json │ ├── i18n-scan/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── key.rs │ │ ├── main.rs │ │ └── minijinja.rs │ ├── iana/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── jose.rs │ │ ├── lib.rs │ │ └── oauth.rs │ ├── iana-codegen/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── generation.rs │ │ ├── jose.rs │ │ ├── main.rs │ │ ├── oauth.rs │ │ └── traits.rs │ ├── jose/ │ │ ├── Cargo.toml │ │ ├── src/ │ │ │ ├── base64.rs │ │ │ ├── claims.rs │ │ │ ├── constraints.rs │ │ │ ├── jwa/ │ │ │ │ ├── asymmetric.rs │ │ │ │ ├── hmac.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── signature.rs │ │ │ │ └── symmetric.rs │ │ │ ├── jwk/ │ │ │ │ ├── mod.rs │ │ │ │ ├── private_parameters.rs │ │ │ │ └── public_parameters.rs │ │ │ ├── jwt/ │ │ │ │ ├── header.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── raw.rs │ │ │ │ └── signed.rs │ │ │ └── lib.rs │ │ └── tests/ │ │ ├── generate.py │ │ ├── jws.rs │ │ ├── jwts/ │ │ │ ├── eddsa-ed25519.jwt │ │ │ ├── eddsa-ed448.jwt │ │ │ ├── es256.jwt │ │ │ ├── es256k.jwt │ │ │ ├── es384.jwt │ │ │ ├── es512.jwt │ │ │ ├── hs256.jwt │ │ │ ├── hs384.jwt │ │ │ ├── hs512.jwt │ │ │ ├── ps256.jwt │ │ │ ├── ps384.jwt │ │ │ ├── ps512.jwt │ │ │ ├── rs256.jwt │ │ │ ├── rs384.jwt │ │ │ └── rs512.jwt │ │ ├── keys/ │ │ │ ├── ed25519.priv.pem │ │ │ ├── ed25519.pub.pem │ │ │ ├── ed448.priv.pem │ │ │ ├── ed448.pub.pem │ │ │ ├── jwks.priv.json │ │ │ ├── jwks.pub.json │ │ │ ├── k256.priv.pem │ │ │ ├── k256.pub.pem │ │ │ ├── p256.priv.pem │ │ │ ├── p256.pub.pem │ │ │ ├── p384.priv.pem │ │ │ ├── p384.pub.pem │ │ │ ├── p521.priv.pem │ │ │ ├── p521.pub.pem │ │ │ ├── rsa.priv.pem │ │ │ └── rsa.pub.pem │ │ └── snapshots/ │ │ ├── jws__es256__sign_jwt.snap │ │ ├── jws__es256k__sign_jwt.snap │ │ ├── jws__es384__sign_jwt.snap │ │ ├── jws__ps256__sign_jwt.snap │ │ ├── jws__ps384__sign_jwt.snap │ │ ├── jws__ps512__sign_jwt.snap │ │ ├── jws__rs256__sign_jwt.snap │ │ ├── jws__rs384__sign_jwt.snap │ │ └── jws__rs512__sign_jwt.snap │ ├── keystore/ │ │ ├── Cargo.toml │ │ ├── src/ │ │ │ ├── encrypter.rs │ │ │ └── lib.rs │ │ └── tests/ │ │ ├── generate.sh │ │ ├── keys/ │ │ │ ├── ec-k256.pkcs8.der │ │ │ ├── ec-k256.pkcs8.encrypted.der │ │ │ ├── ec-k256.pkcs8.encrypted.pem │ │ │ ├── ec-k256.pkcs8.pem │ │ │ ├── ec-k256.sec1.der │ │ │ ├── ec-k256.sec1.pem │ │ │ ├── ec-p256.pkcs8.der │ │ │ ├── ec-p256.pkcs8.encrypted.der │ │ │ ├── ec-p256.pkcs8.encrypted.pem │ │ │ ├── ec-p256.pkcs8.pem │ │ │ ├── ec-p256.sec1.der │ │ │ ├── ec-p256.sec1.pem │ │ │ ├── ec-p384.pkcs8.der │ │ │ ├── ec-p384.pkcs8.encrypted.der │ │ │ ├── ec-p384.pkcs8.encrypted.pem │ │ │ ├── ec-p384.pkcs8.pem │ │ │ ├── ec-p384.sec1.der │ │ │ ├── ec-p384.sec1.pem │ │ │ ├── ec256.pkcs8.encrypted.pem │ │ │ ├── rsa.pkcs1.der │ │ │ ├── rsa.pkcs1.pem │ │ │ ├── rsa.pkcs8.der │ │ │ ├── rsa.pkcs8.encrypted.der │ │ │ ├── rsa.pkcs8.encrypted.pem │ │ │ └── rsa.pkcs8.pem │ │ ├── keystore.rs │ │ └── snapshots/ │ │ ├── keystore__generate_sign_and_verify-2.snap │ │ ├── keystore__generate_sign_and_verify-3.snap │ │ ├── keystore__generate_sign_and_verify-4.snap │ │ ├── keystore__generate_sign_and_verify-5.snap │ │ ├── keystore__generate_sign_and_verify.snap │ │ ├── keystore__jwt_ES256.snap │ │ ├── keystore__jwt_ES256K.snap │ │ ├── keystore__jwt_ES384.snap │ │ ├── keystore__jwt_PS256.snap │ │ ├── keystore__jwt_PS384.snap │ │ ├── keystore__jwt_PS512.snap │ │ ├── keystore__jwt_RS256.snap │ │ ├── keystore__jwt_RS384.snap │ │ └── keystore__jwt_RS512.snap │ ├── listener/ │ │ ├── Cargo.toml │ │ ├── examples/ │ │ │ └── demo/ │ │ │ ├── certs/ │ │ │ │ ├── ca-key.pem │ │ │ │ ├── ca.csr │ │ │ │ ├── ca.json │ │ │ │ ├── ca.pem │ │ │ │ ├── client-key.pem │ │ │ │ ├── client.csr │ │ │ │ ├── client.json │ │ │ │ ├── client.pem │ │ │ │ ├── config.json │ │ │ │ ├── gen.sh │ │ │ │ ├── server-key.pem │ │ │ │ ├── server.csr │ │ │ │ ├── server.json │ │ │ │ └── server.pem │ │ │ └── main.rs │ │ └── src/ │ │ ├── lib.rs │ │ ├── maybe_tls.rs │ │ ├── proxy_protocol/ │ │ │ ├── acceptor.rs │ │ │ ├── maybe.rs │ │ │ ├── mod.rs │ │ │ └── v1.rs │ │ ├── rewind.rs │ │ ├── server.rs │ │ └── unix_or_tcp.rs │ ├── matrix/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── lib.rs │ │ ├── mock.rs │ │ └── readonly.rs │ ├── matrix-synapse/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── error.rs │ │ ├── legacy.rs │ │ ├── lib.rs │ │ └── modern.rs │ ├── oauth2-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── errors.rs │ │ ├── lib.rs │ │ ├── oidc.rs │ │ ├── pkce.rs │ │ ├── registration/ │ │ │ ├── client_metadata_serde.rs │ │ │ └── mod.rs │ │ ├── requests.rs │ │ ├── response_type.rs │ │ ├── scope.rs │ │ ├── test_utils.rs │ │ └── webfinger.rs │ ├── oidc-client/ │ │ ├── Cargo.toml │ │ ├── src/ │ │ │ ├── error.rs │ │ │ ├── lib.rs │ │ │ ├── requests/ │ │ │ │ ├── authorization_code.rs │ │ │ │ ├── client_credentials.rs │ │ │ │ ├── discovery.rs │ │ │ │ ├── jose.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── refresh_token.rs │ │ │ │ ├── token.rs │ │ │ │ └── userinfo.rs │ │ │ └── types/ │ │ │ ├── client_credentials.rs │ │ │ └── mod.rs │ │ └── tests/ │ │ └── it/ │ │ ├── main.rs │ │ ├── requests/ │ │ │ ├── authorization_code.rs │ │ │ ├── client_credentials.rs │ │ │ ├── discovery.rs │ │ │ ├── jose.rs │ │ │ ├── mod.rs │ │ │ ├── refresh_token.rs │ │ │ └── userinfo.rs │ │ └── types/ │ │ ├── client_credentials.rs │ │ └── mod.rs │ ├── policy/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── bin/ │ │ │ └── schema.rs │ │ ├── lib.rs │ │ └── model.rs │ ├── router/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── endpoints.rs │ │ ├── lib.rs │ │ ├── traits.rs │ │ └── url_builder.rs │ ├── spa/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── vite.rs │ ├── storage/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── app_session.rs │ │ ├── compat/ │ │ │ ├── access_token.rs │ │ │ ├── mod.rs │ │ │ ├── refresh_token.rs │ │ │ ├── session.rs │ │ │ └── sso_login.rs │ │ ├── lib.rs │ │ ├── oauth2/ │ │ │ ├── access_token.rs │ │ │ ├── authorization_grant.rs │ │ │ ├── client.rs │ │ │ ├── device_code_grant.rs │ │ │ ├── mod.rs │ │ │ ├── refresh_token.rs │ │ │ └── session.rs │ │ ├── pagination.rs │ │ ├── personal/ │ │ │ ├── access_token.rs │ │ │ ├── mod.rs │ │ │ └── session.rs │ │ ├── policy_data.rs │ │ ├── queue/ │ │ │ ├── job.rs │ │ │ ├── mod.rs │ │ │ ├── schedule.rs │ │ │ ├── tasks.rs │ │ │ └── worker.rs │ │ ├── repository.rs │ │ ├── upstream_oauth2/ │ │ │ ├── link.rs │ │ │ ├── mod.rs │ │ │ ├── provider.rs │ │ │ └── session.rs │ │ ├── user/ │ │ │ ├── email.rs │ │ │ ├── mod.rs │ │ │ ├── password.rs │ │ │ ├── recovery.rs │ │ │ ├── registration.rs │ │ │ ├── registration_token.rs │ │ │ ├── session.rs │ │ │ └── terms.rs │ │ └── utils.rs │ ├── storage-pg/ │ │ ├── .sqlx/ │ │ │ ├── query-015f7ad7c8d5403ce4dfb71d598fd9af472689d5aef7c1c4b1c594ca57c02237.json │ │ │ ├── query-037fae6964130343453ef607791c4c3deaa01b5aaa091d3a3487caf3e2634daf.json │ │ │ ├── query-03eee34f05df9c79f8ca5bfb1af339b3fcea95ba59395106318366a6ef432d85.json │ │ │ ├── query-047990a99794b565c2cad396946299db5b617f52f6c24bcca0a24c0c185c4478.json │ │ │ ├── query-048eec775f4af3ffd805e830e8286c6a5745e523b76e1083d6bfced0035c2f76.json │ │ │ ├── query-05b4dd39521eaf4e8e3c21654df67c00c8781f54054a84b3f3005b65cbc2a14a.json │ │ │ ├── query-06d67595eeef23d5f2773632e0956577d98074e244a35c0d3be24bc18d9d0daa.json │ │ │ ├── query-07cd2da428f0984513b4ce58e526c35c9c236ea8beb6696e5740fa45655e59f3.json │ │ │ ├── query-093d42238578771b4183b48c1680ba438b6b18306dfe1454fa4124c0207b3deb.json │ │ │ ├── query-0e1bce56e15751d82a622d532b279bfc50e22cb12ddf7495c7b0fedca61f9421.json │ │ │ ├── query-0e45995714e60b71e0f0158500a63aa46225245a04d1c7bc24b5275c44a6d58d.json │ │ │ ├── query-0f2ea548e00b080502edc04ee97ea304d43c336ce80723789ff3e66c0dd4d86c.json │ │ │ ├── query-109f0c859e123966462f1001aef550e4e12d1778474aba72762d9aa093d21ee2.json │ │ │ ├── query-12c4577701416a9dc23708c46700f3f086e4e62c6de9d6864a6a11a2470ebe62.json │ │ │ ├── query-1764715e59f879f6b917ca30f8e3c1de5910c7a46e7fe52d1fb3bfd5561ac320.json │ │ │ ├── query-188a4aeef5a8b4bf3230c7176ded64d52804848df378dc74f8f54ec4404e094e.json │ │ │ ├── query-1919d402fd6f148d14417f633be3353004f458c85f7b4f361802f86651900fbc.json │ │ │ ├── query-1b547552eed4128f2227c681ff2d45586cdb0c20b98393f89036fbf0f1d2dee2.json │ │ │ ├── query-1dbc50cdab36da307c569891ab7b1ab4aaf128fed6be67ca0f139d697614c63b.json │ │ │ ├── query-1eb829460407fca22b717b88a1a0a9b7b920d807a4b6c235e1bee524cd73b266.json │ │ │ ├── query-21b9e39ffd89de288305765c339a991d2471667cf2981770447cde6fd025fbb7.json │ │ │ ├── query-22896e8f2a002f307089c3e0f9ee561e6521c45ce07d3a42411984c9a6b75fdc.json │ │ │ ├── query-23d5fcd8bf611dc7279bef0d66ce05461c3c1f43f966fee3a80ae42540783f08.json │ │ │ ├── query-245cab1cf7d9cf4e94cdec91ecb4dc8e678278121efbe1f66bcdc24144d684d0.json │ │ │ ├── query-2564bf6366eb59268c41fb25bb40d0e4e9e1fd1f9ea53b7a359c9025d7304223.json │ │ │ ├── query-29148548d592046f7d711676911e3847e376e443ccd841f76b17a81f53fafc3a.json │ │ │ ├── query-2a0d8d70d21afa9a2c9c1c432853361bb85911c48f7db6c3873b0f5abf35940b.json │ │ │ ├── query-2a61003da3655158e6a261d91fdff670f1b4ba3c56605c53e2b905d7ec38c8be.json │ │ │ ├── query-2d249684e0e4db0e3bc189f821521657559d9b77fd931f972ce4d9f03a57f97a.json │ │ │ ├── query-2ee26886c56f04cd53d4c0968f5cf0963f92b6d15e6af0e69378a6447dee677c.json │ │ │ ├── query-2f66991d7b9ba58f011d9aef0eb6a38f3b244c2f46444c0ab345de7feff54aba.json │ │ │ ├── query-2f7aba76cd7df75d6a9a6d91d5ddebaedf37437f3bd4f796f5581fab997587d7.json │ │ │ ├── query-2f8d402b7217aef47a5c45d4f7cfddbaeedcbbc6963ee573409bfc98e57de6ed.json │ │ │ ├── query-31e8bf68ff70a436fd0b6787ac8e2777f9327708b450d048638a162343478cc6.json │ │ │ ├── query-3312f901f70c3b69e0d315206c31ffe11da64835ae297c9277271b8971d5de81.json │ │ │ ├── query-38d0608b7d8ba30927f939491c1d43cfd962c729298ad07ee1ade2f2880c0eb3.json │ │ │ ├── query-38eb6b635d30ca78ff78b926b414cbd866cfc2918ca4b1741b5687f21cfe273b.json │ │ │ ├── query-399e261027fe6c9167511636157ab747a469404533f59ff6fbd56e9eb5ad38e1.json │ │ │ ├── query-3c7960a2eb2edd71bc71177fc0fb2e83858c9944893b8f3a0f0131e8a9b7a494.json │ │ │ ├── query-3c7fc3e386ce51187f6344ad65e1d78a7f026e8311bdc7d5ccc2f39d962e898f.json │ │ │ ├── query-3d66f3121b11ce923b9c60609b510a8ca899640e78cc8f5b03168622928ffe94.json │ │ │ ├── query-3e6e3aad53b22fc53eb3ee881b29bb249b18ced57d6a4809dffc23972b3e9423.json │ │ │ ├── query-3ed73cfce8ef6a1108f454e18b1668f64b76975dba07e67d04ed7a52e2e8107f.json │ │ │ ├── query-3f9d76f442c82a1631da931950b83b80c9620e1825ab07ab6c52f3f1a32d2527.json │ │ │ ├── query-432e199b0d47fe299d840c91159726c0a4f89f65b4dc3e33ddad58aabf6b148b.json │ │ │ ├── query-446a8d7bd8532a751810401adfab924dc20785c91770ed43d62df2e590e8da71.json │ │ │ ├── query-45d7e962d91fcdcf8284d81d04bc0737c0d20799b497089a566e2ff704d56b67.json │ │ │ ├── query-494ca16f0f00f977a3031924a15318aa7346917e5c8a37bb0f5b2b3067588009.json │ │ │ ├── query-4968c60adef69c7215a7efe2021baffb050b2f475ae106155c2e2f210a81191a.json │ │ │ ├── query-4c2064fed8fa464ea3d2a1258fb0544dbf1493cad31a21c0cd7ddb57ed12de16.json │ │ │ ├── query-4c37988dacca5a83c8b64209042d5f1a8ec44ec8ccccad2d7fce9ac855209883.json │ │ │ ├── query-4d0386ad2fe47f1aded46917abe6141752ba90d36467693a68318573171d57b0.json │ │ │ ├── query-4dad1838536c10ba723adc0fb6da0f24afb3d6a1925a80a1b6d35b9a8258a0ce.json │ │ │ ├── query-4e64540bbffe5f4b9c4a6589012cf69eb67adaa4d40fc1910dfcd2640e32ab37.json │ │ │ ├── query-5006c3e60c98c91a0b0fbb3205373e81d9b75e90929af80961f8b5910873a43e.json │ │ │ ├── query-5133f9c5ba06201433be4ec784034d222975d084d0a9ebe7f1b6b865ab2e09ef.json │ │ │ ├── query-535225206622b9190ccf42f7d66268818dc84c37b168ab45e582e0a727796a06.json │ │ │ ├── query-53ad718642644b47a2d49f768d81bd993088526923769a9147281686c2d47591.json │ │ │ ├── query-5402b8ddb674d05319830477eb3e72ecb536092b46c92a7dda01598962842323.json │ │ │ ├── query-55bc51efddf7a1cf06610fdb20d46beca29964733338ea4fec2a29393f031c4f.json │ │ │ ├── query-572ead41d62cfbe40e6f0c8edf6928e8eebd99036255b62d688ac02b5bd74b40.json │ │ │ ├── query-5a6b91660e4c12b4a1fe2cad08e727a305cbe4029cd4cebd5ecc274e3e32f533.json │ │ │ ├── query-5b21644dd3c094b0f2f8babb2c730554dc067d0a6cad963dd7e0c66a80b342bf.json │ │ │ ├── query-5b697dd7834d33ec55972d3ba43d25fe794bc0b69c5938275711faa7a80b811f.json │ │ │ ├── query-5d0d4699aa82b3976c6c1fcb0d77559da26def223b8954cf32959cce777577d7.json │ │ │ ├── query-5da7a197e0008f100ad4daa78f4aa6515f0fc9eb54075e8d6d15520d25b75172.json │ │ │ ├── query-5eea2f4c3e82ae606b09b8a81332594c97ba0afe972f0fee145b6094789fb6c7.json │ │ │ ├── query-5f2199865fae3a969bb37429dd70dc74505b22c681322bd99b62c2a540c6cd35.json │ │ │ ├── query-5fe1bb569d13a7d3ff22887b3fc5b76ff901c183b314f8ccb5018d70c516abf6.json │ │ │ ├── query-607262ccf28b672df51e4e5d371e5cc5119a7d6e7fe784112703c0406f28300f.json │ │ │ ├── query-608366f45ecaf392ab69cddb12252b5efcc103c3383fa68b552295e2289d1f55.json │ │ │ ├── query-623097fc45ffa5d6e09fedfbdbe5e42662e9854430bcd9e53598debf99c9ca37.json │ │ │ ├── query-64b6e274e2bed6814f5ae41ddf57093589f7d1b2b8458521b635546b8012041e.json │ │ │ ├── query-6589987e88fa9dbbd2bd48acd910e08bab57721007c64ef2597cb09a62100792.json │ │ │ ├── query-66693f31eff5673e88ca516ee727a709b06455e08b9fd75cc08f142070f330b3.json │ │ │ ├── query-67cd4880d84b38f20c3960789934d55cbfb01492985ac2af5a1ad4af9b3ccc77.json │ │ │ ├── query-6b8d28b76d7ab33178b46dbb28c11e41d86f22b3fa899a952cad00129e59bee6.json │ │ │ ├── query-6bd38759f569fcf972924d12f565b531b9873f4139eadcbf1450e726b9a27379.json │ │ │ ├── query-6d71188dffc492ddc8f7f21476516d3b08fd5d736ecf36845e6fd4bfc515b2cf.json │ │ │ ├── query-6db23fc9c39c2c7d9224d4e1233205f636568c990ccb05cf9208750ad1330b9b.json │ │ │ ├── query-6e21e7d816f806da9bb5176931bdb550dee05c44c9d93f53df95fe3b4a840347.json │ │ │ ├── query-6ecad60e565367a6cfa539b4c32dabe674ea853e0d47eb5c713705cb0130c758.json │ │ │ ├── query-6f97b5f9ad0d4d15387150bea3839fb7f81015f7ceef61ecaadba64521895cff.json │ │ │ ├── query-707d78340069627aba9f18bbe5ac1388d6723f82549d88d704d9c939b9d35c49.json │ │ │ ├── query-7189b6136fd08ac9ae7c51bff06fb2254d1bf9e8a97cd7d32ba789c740e0fbdb.json │ │ │ ├── query-755f62d0a3a40acc90037371339a8459736fdd4bbffd932f7930d847f2c3ef5d.json │ │ │ ├── query-75a62d170e4c959a14c5698f1da983113e7d1bc565d01e85c158856abb17ddc6.json │ │ │ ├── query-77dfa9fae1a9c77b70476d7da19d3313a02886994cfff0690451229fb5ae2f77.json │ │ │ ├── query-785e6bceed803cb1caccc373cde0c999d601f3a9730e6bbb40cfc43c04195c61.json │ │ │ ├── query-7a0641df5058927c5cd67d4cdaa59fe609112afbabcbfcc0e7f96c1e531b6567.json │ │ │ ├── query-7b06e6f21c69056b526538f06f06268efd13d7af3cecb452168d514a379fec30.json │ │ │ ├── query-7ce387b1b0aaf10e72adde667b19521b66eaafa51f73bf2f95e38b8f3b64a229.json │ │ │ ├── query-7e367e416d18fcf9b227bf053421410b4b7b4af441f0a138c5421d1111cb9f79.json │ │ │ ├── query-7e414c29745cf5c85fa4e7cb5d661b07f43ab168956470d120166ed7eab631d9.json │ │ │ ├── query-7f4c4634ada4dc2745530dcca8eee92abf78dfbdf1a25e58a2bc9c14be8035f0.json │ │ │ ├── query-7f8335cc94347bc3a15afe7051658659347a1bf71dd62335df046708f19c967e.json │ │ │ ├── query-8275a440640ea28fd8f82e7df672e45a6eba981a0d621665ed8f8b60354b3389.json │ │ │ ├── query-83d1b0720dfde3209d77f1142aa19359913b8a934ca8a642b7bb43c9a7a58a6d.json │ │ │ ├── query-860e01cd660b450439d63c5ee31ade59f478b0b096b4bc90c89fb9c26b467dd2.json │ │ │ ├── query-875294dc5cf87bcf302fb9e87933745cc1c57bbe3c3c69110592a07400116c7f.json │ │ │ ├── query-89041298e272d15c21e2b7127bd16c5a4f48e2be87dc26e9d0e3a932c9c49dfb.json │ │ │ ├── query-89edaec8661e435c3b71bb9b995cd711eb78a4d39608e897432d6124cd135938.json │ │ │ ├── query-8acbdc892d44efb53529da1c2df65bea6b799a43cf4c9264a37d392847e6eff0.json │ │ │ ├── query-8afada5220fefb0d01ed6f87d3d0ee8fca86b5cdce9320e190e3d3b8fd9f63bc.json │ │ │ ├── query-8d240d72d651f59d53bed7380710038e9d00492b1e282237c0ec0e03bc36a9c0.json │ │ │ ├── query-8ef27901b96b73826a431ad6c5fabecc18c36d8cdba8db3b47953855fa5c9035.json │ │ │ ├── query-8ef977487429f84c557dc62272c47e411b96b2376288a90c242034295e1a147e.json │ │ │ ├── query-8f4f071f844281fb14ecd99db3261540441b14c8206038fdc4a4336bbae3f382.json │ │ │ ├── query-8f5ce493e8b8473ba03d5263915a8b231f9e7c211ab83487536008e48316c269.json │ │ │ ├── query-90875bdd2f75cdf0dc3f48dc2516f5c701411387c939f6b8a3478b41b3de4f20.json │ │ │ ├── query-90fe32cb9c88a262a682c0db700fef7d69d6ce0be1f930d9f16c50b921a8b819.json │ │ │ ├── query-91a3ee5ad64a947b7807a590f6b014c6856229918b972b98946f98b75686ab6c.json │ │ │ ├── query-926cb81dc7931890a02c5a372aef79832e5d0748dad18ab44c6671f3196d6f60.json │ │ │ ├── query-92c8eb526fcc5de6874eb0fab1d71fb1ed3dafe2bd1a49aa72e4f4862931c6c2.json │ │ │ ├── query-933d2bed9c00eb9b37bfe757266ead15df5e0a4209ff47dcf4a5f19d35154e89.json │ │ │ ├── query-966ca0f7eebd2896c007b2fd6e9327d03b29fe413d57cce21c67b6d539f59e7d.json │ │ │ ├── query-98a5491eb5f10997ac1f3718c835903ac99d9bb8ca4d79c908b25a6d1209b9b1.json │ │ │ ├── query-99394fbd9c07d6d24429934b3f7344dfab024b42e47ddc7bd9e551897ba6e9b8.json │ │ │ ├── query-9b7363000017fa3dee46441bc0679cb16f9f8df08fa258cc907007fb9bcd0bc7.json │ │ │ ├── query-9c9c65d4ca6847761d8f999253590082672b3782875cf3f5ba0b2f9d26e3a507.json │ │ │ ├── query-9e8152d445f9996b221ad3690ba982ad01035296bf4539ca5620a043924a7292.json │ │ │ ├── query-9eaf35f045aaca8473efc4a1f529afe24f01d9ec34609f373db5c535ccb58516.json │ │ │ ├── query-9f7bdc034c618e47e49c467d0d7f5b8c297d055abe248cc876dbc12c5a7dc920.json │ │ │ ├── query-9fe87eeaf4b7d0ba09b59ddad3476eb57ccb6e4053ab8f4450dd4a9d1f6ba108.json │ │ │ ├── query-a0be6c56e470382b9470df414497e260ba8911123744980e24a52bc9b95bd056.json │ │ │ ├── query-a2f7433f06fb4f6a7ad5ac6c1db18705276bce41e9b19d5d7e910ad4b767fb5e.json │ │ │ ├── query-a50eb326c3522f971f6ee7e13dff61efbeb1ec24e2c694e1673347bae993762d.json │ │ │ ├── query-a63a217981b97448ddcc96b2489ddd9d3bc8c99b5b8b1d373939fc3ae9715c27.json │ │ │ ├── query-a7094d84d313602729fde155cfbe63041fca7cbab407f98452462ec45e3cfd16.json │ │ │ ├── query-a75a6a08c9639053cfc3cffa9d4a009785f358b334f5c586c2e358f0d0b4d856.json │ │ │ ├── query-a7f780528882a2ae66c45435215763eed0582264861436eab3f862e3eb12cab1.json │ │ │ ├── query-ab34912b42a48a8b5c8d63e271b99b7d0b690a2471873c6654b1b6cf2079b95c.json │ │ │ ├── query-ae6bf8958c4d9837d63f56574e91f91acc6076a8521adc3e30a83bf70e2121a0.json │ │ │ ├── query-afa86e79e3de2a83265cb0db8549d378a2f11b2a27bbd86d60558318c87eb698.json │ │ │ ├── query-b3568613352efae1125a88565d886157d96866f7ef9b09b03a45ba4322664bd0.json │ │ │ ├── query-b60d34f4d250c12f75dba10491c1337d69aebad12be6fbfbdde91e34083ba4ed.json │ │ │ ├── query-b6c4f4a23968cba2a82c2b7cfffc05a7ed582c9e5c1f65d27b0686f843ccfe42.json │ │ │ ├── query-b700dc3f7d0f86f4904725d8357e34b7e457f857ed37c467c314142877fd5367.json │ │ │ ├── query-b74e4d620bed4832a4e8e713a346691f260a7eca4bf494d6fb11c7cf699adaad.json │ │ │ ├── query-b91cc2458e1a530e7cadbd1ca3e2eaf93e1c44108b6770a24c9a24ac29db37d3.json │ │ │ ├── query-b992283a9b43cbb8f86149f3f55cb47fb628dabd8fadc50e6a5772903f851e1c.json │ │ │ ├── query-bb0f782756c274c06c1b63af6fc3ac2a7cedfd4247b57f062d348b4b1b36bef1.json │ │ │ ├── query-bb141d28c0c82244f31d542038c314d05ceb3a7b8f35397c0faef3b36d2d14a7.json │ │ │ ├── query-bbf62633c561706a762089bbab2f76a9ba3e2ed3539ef16accb601fb609c2ec9.json │ │ │ ├── query-c09e0bb0378d9dfb15de7f2f1209fab6ea87589819128e6fc9ed5da11dfc2770.json │ │ │ ├── query-c29fa41743811a6ac3a9b952b6ea75d18e914f823902587b63c9f295407144b1.json │ │ │ ├── query-c5e7dbb22488aca427b85b3415bd1f1a1766ff865f2e08a5daa095d2a1ccbd56.json │ │ │ ├── query-c960f4f5571ee68816c49898125979f3c78c2caca52cb4b8dc9880e669a1f23e.json │ │ │ ├── query-c984ae0496d0bd7520ee3d6761ce6a4f61a6a2001b597e4c63ba4588ec5cf530.json │ │ │ ├── query-ca093cab5143bb3dded2eda9e82473215f4d3c549ea2c5a4f860a102cc46a667.json │ │ │ ├── query-cc60ad934d347fb4546205d1fe07e9d2f127cb15b1bb650d1ea3805a4c55b196.json │ │ │ ├── query-ce36eb8d3e4478a4e8520919ff41f1a5e6470cef581b1638f5578546dd28c4df.json │ │ │ ├── query-cf2eeca6d8dbc2cc72160a26e81f6e963096edb610183ba13cbbbd3d95c4134b.json │ │ │ ├── query-cf654533cfed946e9ac52dbcea1f50be3dfdac0fbfb1e8a0204c0c9c103ba5b0.json │ │ │ ├── query-d02248136aa6b27636814dee4e0bc38395ab6c6fdf979616fa16fc490897cee3.json │ │ │ ├── query-d0355d4e98bec6120f17d8cf81ac8c30ed19e9cebd0c8e7c7918b1c3ca0e3cba.json │ │ │ ├── query-d26e42d9fd2b2ee3cf9702c1666d83e7cffa26b320ae1442c7f3e22376c4a4ee.json │ │ │ ├── query-d4bc51c30f1119ea9d117fb565ec554d63c8773040679a77e99ac3fa24cec71d.json │ │ │ ├── query-d7a0e4fa2f168976505405c7e7800847f3379f7b57c0972659a35bfb68b0f6cd.json │ │ │ ├── query-d8f0b02952e786dd4309eac9de04a359aea3a46e5d4e07764cec56ce5d6609c0.json │ │ │ ├── query-d95cd1b4bcfa1d7bb236d49e1956fcc9a684609956972fe4f95aac13f30b2530.json │ │ │ ├── query-da02f93d7346992a9795f12b900f91ac0b326dd751c0d374d6ef4d19f671d22e.json │ │ │ ├── query-dbf4be84eeff9ea51b00185faae2d453ab449017ed492bf6711dc7fceb630880.json │ │ │ ├── query-dca9b361c4409b14498b85f192b0034201575a49e0240ac6715b55ad8d381d0e.json │ │ │ ├── query-dd02cc4a48123c28b34da8501060096c33df9e30611ef89d01bf0502119cbbe1.json │ │ │ ├── query-dda97742d389ffeeaab33d352d05767e2150f7da3cf384a7f44741c769f44144.json │ │ │ ├── query-e02ea83d195cb58fa8525e66a6ac1dddae3f1dfb1ef48494f6aee3fd03abe6f6.json │ │ │ ├── query-e1746b33c2f0d10f26332195f78e1ef2f192ca66f8000d1385626154e5ce4f7e.json │ │ │ ├── query-e291be0434ab9c346dee777e50f8e601f12c8003fe93a5ecb110d02642d14c3c.json │ │ │ ├── query-e35d56de7136d43d0803ec825b0612e4185cef838f105d66f18cb24865e45140.json │ │ │ ├── query-e62d043f86e7232e6e9433631f8273e7ed0770c81071cf1f17516d3a45881ae9.json │ │ │ ├── query-e68a7084d44462d19f30902d7e6c1bd60bb771c6f075df15ab0137a7ffc896da.json │ │ │ ├── query-e8e48db74ac1ab5baa1e4b121643cfa33a0bf3328df6e869464fe7f31429b81e.json │ │ │ ├── query-e99ab37ab3e03ad9c48792772b09bac77b09f67e623d5371ab4dadbe2d41fa1c.json │ │ │ ├── query-eb095f64bec5ac885683a8c6708320760971317c4519fae7af9d44e2be50985d.json │ │ │ ├── query-f0b4af5a9d6f1cc707a935fd5f34526a54ebbed8eef8f885f3a6723bc8490908.json │ │ │ ├── query-f41f76c94cd68fca2285b1cc60f426603c84df4ef1c6ce5dc441a63d2dc46f6e.json │ │ │ ├── query-f46e87bbb149b35e1d13b2b3cd2bdeab3c28a56a395f52f001a7bb013a5dfece.json │ │ │ ├── query-f50b7fb5a2c09e7b7e89e2addb0ca42c790c101a3fc9442862b5885d5116325a.json │ │ │ ├── query-f5c2ec9b7038d7ed36091e670f9bf34f8aa9ea8ed50929731845e32dc3176e39.json │ │ │ ├── query-f8182fd162ffb018d4f102fa7ddbc9991135065e81af8f77b5beef9405607577.json │ │ │ ├── query-fbf926f630df5d588df4f1c9c0dc0f594332be5829d5d7c6b66183ac25b3d166.json │ │ │ ├── query-fc9925e19000d79c0bb020ea44e13cbb364b3505626d34550e38f6f7397b9d42.json │ │ │ ├── query-fca331753aeccddbad96d06fc9d066dcefebe978a7af477bb6b55faa1d31e9b1.json │ │ │ ├── query-fcd8b4b9e003d1540357c6bf1ff9c715560d011d4c01112703a9c046170c84f1.json │ │ │ ├── query-fd32368fa6cd16a9704cdea54f7729681d450669563dd1178c492ffce51e5ff2.json │ │ │ ├── query-fd8f3e7ff02d4d1f465aad32edcb06a842cabc787279ba7d690f69b59ad3eb50.json │ │ │ ├── query-fe7bd146523e4bb321cb234d6bf9f3005b55c654897a8e46dc933c7fd2263c7c.json │ │ │ └── query-ffbfef8b7e72ec4bae02b6bbe862980b5fe575ae8432a000e9c4e4307caa2d9b.json │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── migrations/ │ │ │ ├── 20220530084123_jobs_workers.sql │ │ │ ├── 20221018142001_init.sql │ │ │ ├── 20221121151402_upstream_oauth.sql │ │ │ ├── 20221213145242_password_schemes.sql │ │ │ ├── 20230408234928_add_get_jobs_fn_.sql │ │ │ ├── 20230616093555_compat_admin_flag.sql │ │ │ ├── 20230621140528_upstream_oauth_claims_imports.sql │ │ │ ├── 20230626130338_oauth_clients_static.sql │ │ │ ├── 20230728154304_user_lock.sql │ │ │ ├── 20230823125247_drop_apalis_push_job.sql │ │ │ ├── 20230828085439_oauth2_clients_more_fields.sql │ │ │ ├── 20230828143553_user_session_authentication_source.sql │ │ │ ├── 20230829092920_oauth2_sessions_user_id_scope_list.sql │ │ │ ├── 20230829141928_user_session_user_agent.sql │ │ │ ├── 20230904135550_oauth2_client_credentials_grant.sql │ │ │ ├── 20230911091636_oauth2_token_expiration.sql │ │ │ ├── 20230919155444_record_session_last_activity.sql │ │ │ ├── 20231009142904_user_can_request_admin.sql │ │ │ ├── 20231116104353_upstream_oauth_overrides.sql │ │ │ ├── 20231120110559_upstream_oauth_branding.sql │ │ │ ├── 20231207090532_oauth_device_code_grant.sql │ │ │ ├── 20231208155602_oauth_clients_device_code_grant.sql │ │ │ ├── 20240207100003_user_terms.sql │ │ │ ├── 20240220141353_nonunique_compat_device_id.sql │ │ │ ├── 20240220150201_compat_sessions_user_sessions_link.sql │ │ │ ├── 20240221164945_sessions_user_agent.sql │ │ │ ├── 20240301091201_upstream_oauth_additional_parameters.sql │ │ │ ├── 20240402084854_upstream_oauth_disabled_at.sql │ │ │ ├── 20240621080509_user_recovery.sql │ │ │ ├── 20240718075125_sessions_active_index.sql │ │ │ ├── 20241004075132_queue_worker.sql │ │ │ ├── 20241004121132_queue_job.sql │ │ │ ├── 20241007160050_oidc_login_hint.sql │ │ │ ├── 20241115163340_upstream_oauth2_response_mode.sql │ │ │ ├── 20241118115314_upstream_oauth2_extra_query_params.sql │ │ │ ├── 20241120163320_queue_job_failures.sql │ │ │ ├── 20241122130349_queue_job_scheduled.sql │ │ │ ├── 20241122133435_queue_job_scheduled_index.sql │ │ │ ├── 20241124145741_upstream_oauth_userinfo.sql │ │ │ ├── 20241125110803_queue_job_recurrent.sql │ │ │ ├── 20241129091057_upstream_oauth2_link_account_name.sql │ │ │ ├── 20241202123523_upstream_oauth_responses_alg.sql │ │ │ ├── 20241210115428_oauth_refresh_token_track_next.sql │ │ │ ├── 20241210133651_oauth2_access_token_first_used.sql │ │ │ ├── 20241212154426_oauth2_response_mode_null.sql │ │ │ ├── 20241213180524_upstream_oauth_optional_issuer.sql │ │ │ ├── 20250109105709_user_email_authentication_codes.sql │ │ │ ├── 20250113102144_user_registrations.sql │ │ │ ├── 20250114135939_allow_deviceless_compat_sessions.sql │ │ │ ├── 20250115155255_cleanup_unverified_emails.sql │ │ │ ├── 20250124151529_unsupported_threepids_table.sql │ │ │ ├── 20250129154003_compat_sessions_device_name.sql │ │ │ ├── 20250130170011_user_is_guest.sql │ │ │ ├── 20250225091000_dynamic_policy_data.sql │ │ │ ├── 20250311093145_user_deactivated_at.sql │ │ │ ├── 20250312094013_upstream_oauth2_providers_order.sql │ │ │ ├── 20250317151803_upstream_oauth_session_unlinked_at.sql │ │ │ ├── 20250325102310_oauth2_clients_hash.sql │ │ │ ├── 20250404105103_compat_sso_login_browser_session.sql │ │ │ ├── 20250410000000_idx_compat_access_tokens_session_fk.sql │ │ │ ├── 20250410000001_idx_compat_refresh_tokens_session_fk.sql │ │ │ ├── 20250410000002_idx_compat_refresh_tokens_access_token_fk.sql │ │ │ ├── 20250410000003_idx_compat_sessions_user_fk.sql │ │ │ ├── 20250410000004_idx_compat_sessions_user_session_fk.sql │ │ │ ├── 20250410000005_drop_compat_sessions_user_id_last_active_at.sql │ │ │ ├── 20250410000006_idx_compat_sso_logins_session_fk.sql │ │ │ ├── 20250410000007_idx_oauth2_access_tokens_session_fk.sql │ │ │ ├── 20250410000008_idx_oauth2_authorization_grants_session_fk.sql │ │ │ ├── 20250410000009_idx_oauth2_authorization_grants_client_fk.sql │ │ │ ├── 20250410000010_idx_oauth2_consents_client_fk.sql │ │ │ ├── 20250410000011_idx_oauth2_consents_user_fk.sql │ │ │ ├── 20250410000012_idx_oauth2_device_code_grants_client_fk.sql │ │ │ ├── 20250410000013_idx_oauth2_device_code_grants_session_fk.sql │ │ │ ├── 20250410000014_idx_oauth2_device_code_grants_user_session_fk.sql │ │ │ ├── 20250410000015_idx_oauth2_refresh_tokens_session_fk.sql │ │ │ ├── 20250410000016_idx_oauth2_refresh_tokens_access_token_fk.sql │ │ │ ├── 20250410000017_idx_oauth2_refresh_tokens_next_refresh_token_fk.sql │ │ │ ├── 20250410000018_idx_oauth2_sessions_user_session_fk.sql │ │ │ ├── 20250410000019_idx_oauth2_sessions_client_fk.sql │ │ │ ├── 20250410000020_idx_oauth2_sessions_user_fk.sql │ │ │ ├── 20250410000021_drop_oauth2_sessions_user_id_last_active_at.sql │ │ │ ├── 20250410000022_idx_queue_jobs_started_by_fk.sql │ │ │ ├── 20250410000023_idx_queue_jobs_next_attempt_fk.sql │ │ │ ├── 20250410000024_idx_queue_jobs_schedule_name_fk.sql │ │ │ ├── 20250410000025_idx_upstream_oauth_authorization_sessions_provider_fk.sql │ │ │ ├── 20250410000026_idx_upstream_oauth_authorization_sessions_link_fk.sql │ │ │ ├── 20250410000027_idx_upstream_oauth_links_provider_fk.sql │ │ │ ├── 20250410000028_idx_upstream_oauth_links_user_fk.sql │ │ │ ├── 20250410000029_idx_user_email_authentication_codes_authentication_fk.sql │ │ │ ├── 20250410000030_idx_user_email_authentications_user_session_fk.sql │ │ │ ├── 20250410000031_idx_user_email_authentications_user_registration_fk.sql │ │ │ ├── 20250410000032_idx_user_emails_user_fk.sql │ │ │ ├── 20250410000033_idx_user_emails_email_idx.sql │ │ │ ├── 20250410000034_idx_user_passwords_user_fk.sql │ │ │ ├── 20250410000035_idx_user_recovery_tickets_session_fk.sql │ │ │ ├── 20250410000036_idx_user_recovery_tickets_user_email_fk.sql │ │ │ ├── 20250410000037_idx_user_registrations_email_authentication_fk.sql │ │ │ ├── 20250410000038_idx_user_session_authentications_user_session_fk.sql │ │ │ ├── 20250410000039_idx_user_session_authentications_user_password_fk.sql │ │ │ ├── 20250410000040_idx_user_session_authentications_upstream_oauth_session_fk.sql │ │ │ ├── 20250410000041_idx_user_sessions_user_fk.sql │ │ │ ├── 20250410000042_drop_user_sessions_user_id_last_active_at.sql │ │ │ ├── 20250410000043_idx_user_terms_user_fk.sql │ │ │ ├── 20250410000044_idx_users_primary_email_fk.sql │ │ │ ├── 20250410000045_idx_user_recovery_tickets_ticket_idx.sql │ │ │ ├── 20250410121612_users_lower_username_idx.sql │ │ │ ├── 20250410174306_oauth2_authorization_default_requires_consent.sql │ │ │ ├── 20250424150930_oauth2_grants_locale.sql │ │ │ ├── 20250425113717_oauth2_session_human_name.sql │ │ │ ├── 20250506161158_upstream_oauth2_forward_login_hint.sql │ │ │ ├── 20250507131948_upstream_oauth_session_optional_nonce.sql │ │ │ ├── 20250602212100_user_registration_tokens.sql │ │ │ ├── 20250602212101_idx_user_registration_token.sql │ │ │ ├── 20250602212102_upstream_oauth2_id_token_claims.sql │ │ │ ├── 20250602212103_upstream_oauth2_id_token_claims_sub_sid_index.sql │ │ │ ├── 20250602212104_upstream_oauth2_id_token_claims_sid_sub_index.sql │ │ │ ├── 20250630120643_upstream_oauth_on_backchannel_logout.sql │ │ │ ├── 20250708155857_idx_user_emails_lower_email.sql │ │ │ ├── 20250709142230_id_token_claims_trigger.sql │ │ │ ├── 20250709142240_backfill_id_token_claims.sql │ │ │ ├── 20250915092000_pgtrgm_extension.sql │ │ │ ├── 20250915092635_users_username_trgm_idx.sql │ │ │ ├── 20250924132713_personal_access_tokens.sql │ │ │ ├── 20251023134634_personal_access_tokens_unique_fix.sql │ │ │ ├── 20251121145458_user_registration_upstream_oauth_session.sql │ │ │ ├── 20251127145951_user_registration_upstream_oauth_session_idx.sql │ │ │ ├── 20260108111542_remove_apalis.sql │ │ │ ├── 20260108120030_remove_user_emails_old_confirmation.sql │ │ │ ├── 20260108121127_cleanup_oauth2_consents.sql │ │ │ ├── 20260108121952_cleanup_id_token_claims_trigger.sql │ │ │ ├── 20260108144040_remove_deactivated_unsupported_threepids.sql │ │ │ ├── 20260108145240_drop_oauth2_consents.sql │ │ │ ├── 20260108175627_oauth_access_tokens_revoked_at_idx.sql │ │ │ ├── 20260109115009_oauth_access_tokens_expires_at_idx.sql │ │ │ ├── 20260109172537_oauth_refresh_token_revoked_at.sql │ │ │ ├── 20260109172950_oauth_refresh_token_next_token_set_null.sql │ │ │ ├── 20260109172954_oauth_refresh_token_next_token_set_null_validate.sql │ │ │ ├── 20260112094550_oauth_refresh_token_not_consumed_idx.sql │ │ │ ├── 20260112094837_oauth_refresh_token_consumed_at_idx.sql │ │ │ ├── 20260115111313_idx_compat_sessions_finished_at.sql │ │ │ ├── 20260116000002_idx_upstream_oauth_links_orphaned.sql │ │ │ ├── 20260116000003_queue_jobs_next_attempt_set_null.sql │ │ │ ├── 20260116000004_queue_jobs_next_attempt_set_null_validate.sql │ │ │ ├── 20260121103025_upstream_oauth_track_user_session.sql │ │ │ ├── 20260121104214_upstream_auth_user_session_fk_idx.sql │ │ │ ├── 20260121112201_upstream_oauth_sessions_orphan_index.sql │ │ │ ├── 20260121121140_upstream_oauth_track_user_session_trigger.sql │ │ │ ├── 20260121121150_upstream_oauth_track_user_session_backfill.sql │ │ │ ├── 20260122113523_compat_sessions_user_session_no_action.sql │ │ │ ├── 20260122114353_compat_sessions_user_session_validate.sql │ │ │ ├── 20260122123211_idx_oauth2_sessions_finished_at.sql │ │ │ ├── 20260122124231_idx_user_sessions_finished_at.sql │ │ │ ├── 20260123090000_idx_oauth2_sessions_inactive_ips.sql │ │ │ ├── 20260123090001_idx_compat_sessions_inactive_ips.sql │ │ │ ├── 20260123090002_idx_user_sessions_inactive_ips.sql │ │ │ └── 20260324000001_queue_schedules_last_job_set_null.sql │ │ └── src/ │ │ ├── app_session.rs │ │ ├── compat/ │ │ │ ├── access_token.rs │ │ │ ├── mod.rs │ │ │ ├── refresh_token.rs │ │ │ ├── session.rs │ │ │ └── sso_login.rs │ │ ├── errors.rs │ │ ├── filter.rs │ │ ├── iden.rs │ │ ├── lib.rs │ │ ├── oauth2/ │ │ │ ├── access_token.rs │ │ │ ├── authorization_grant.rs │ │ │ ├── client.rs │ │ │ ├── device_code_grant.rs │ │ │ ├── mod.rs │ │ │ ├── refresh_token.rs │ │ │ └── session.rs │ │ ├── pagination.rs │ │ ├── personal/ │ │ │ ├── access_token.rs │ │ │ ├── mod.rs │ │ │ └── session.rs │ │ ├── policy_data.rs │ │ ├── queue/ │ │ │ ├── job.rs │ │ │ ├── mod.rs │ │ │ ├── schedule.rs │ │ │ └── worker.rs │ │ ├── repository.rs │ │ ├── telemetry.rs │ │ ├── tracing.rs │ │ ├── upstream_oauth2/ │ │ │ ├── link.rs │ │ │ ├── mod.rs │ │ │ ├── provider.rs │ │ │ └── session.rs │ │ └── user/ │ │ ├── email.rs │ │ ├── mod.rs │ │ ├── password.rs │ │ ├── recovery.rs │ │ ├── registration.rs │ │ ├── registration_token.rs │ │ ├── session.rs │ │ ├── terms.rs │ │ └── tests.rs │ ├── syn2mas/ │ │ ├── .sqlx/ │ │ │ ├── query-026adeffc646b41ebc096bb874d110039b9a4a0425fd566e401f56ea215de0dd.json │ │ │ ├── query-07ec66733b67a9990cc9d483b564c8d05c577cf8f049d8822746c7d1dbd23752.json │ │ │ ├── query-09db58b250c20ab9d1701653165233e5c9aabfdae1f0ee9b77c909b2bb2f3e25.json │ │ │ ├── query-12112011318abc0bdd7f722ed8c5d4a86bf5758f8c32d9d41a22999b2f0698ca.json │ │ │ ├── query-1d1004d0fb5939fbf30c1986b80b986b1b4864a778525d0b8b0ad6678aef3e9f.json │ │ │ ├── query-204cf4811150a7fdeafa9373647a9cd62ac3c9e58155882858c6056e2ef6c30d.json │ │ │ ├── query-207b880ec2dd484ad05a7138ba485277958b66e4534561686c073e282fafaf2a.json │ │ │ ├── query-24f6ce6280dc6675ab1ebdde0c5e3db8ff7a686180d71052911879f186ed1c8e.json │ │ │ ├── query-486f3177dcf6117c6b966954a44d9f96a754eba64912566e81a90bd4cbd186f0.json │ │ │ ├── query-5b4840f42ae00c5dc9f59f2745d664b16ebd813dfa0aa32a6d39dd5c393af299.json │ │ │ ├── query-69aa96208513c3ea64a446c7739747fcb5e79d7e8c1212b2a679c3bde908ce93.json │ │ │ ├── query-78ed3bf1032cd678b42230d68fb2b8e3d74161c8b6c5fe1a746b6958ccd2fd84.json │ │ │ ├── query-86b2b02fbb6350100d794e4d0fa3c67bf00fd3e411f769b9f25dec27428489ed.json │ │ │ ├── query-979bedd942b4f71c58f3672f2917cee05ac1a628e51fe61ba6dfed253e0c63c2.json │ │ │ ├── query-b27828d7510d52456b50b4c4b9712878ee329ca72070d849eb61ac9c8f9d1c76.json │ │ │ └── query-ebf68b70b3e22a04b57b5587b4b099255155193dafbbd185cd8f26d93ff423a7.json │ │ ├── Cargo.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ ├── mas_writer/ │ │ │ │ ├── checks.rs │ │ │ │ ├── constraint_pausing.rs │ │ │ │ ├── fixtures/ │ │ │ │ │ └── upstream_provider.sql │ │ │ │ ├── locking.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── snapshots/ │ │ │ │ │ ├── syn2mas__mas_writer__test__write_user.snap │ │ │ │ │ ├── syn2mas__mas_writer__test__write_user_with_access_token.snap │ │ │ │ │ ├── syn2mas__mas_writer__test__write_user_with_device.snap │ │ │ │ │ ├── syn2mas__mas_writer__test__write_user_with_email.snap │ │ │ │ │ ├── syn2mas__mas_writer__test__write_user_with_password.snap │ │ │ │ │ ├── syn2mas__mas_writer__test__write_user_with_refresh_token.snap │ │ │ │ │ ├── syn2mas__mas_writer__test__write_user_with_unsupported_threepid.snap │ │ │ │ │ └── syn2mas__mas_writer__test__write_user_with_upstream_provider_link.snap │ │ │ │ ├── syn2mas_revert_temporary_tables.sql │ │ │ │ └── syn2mas_temporary_tables.sql │ │ │ ├── migration.rs │ │ │ ├── progress.rs │ │ │ ├── synapse_reader/ │ │ │ │ ├── checks.rs │ │ │ │ ├── config/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── oidc.rs │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── access_token_alice.sql │ │ │ │ │ ├── access_token_alice_with_puppet.sql │ │ │ │ │ ├── access_token_alice_with_refresh_token.sql │ │ │ │ │ ├── access_token_alice_with_unused_refresh_token.sql │ │ │ │ │ ├── devices_alice.sql │ │ │ │ │ ├── external_ids_alice.sql │ │ │ │ │ ├── threepids_alice.sql │ │ │ │ │ └── user_alice.sql │ │ │ │ ├── mod.rs │ │ │ │ └── snapshots/ │ │ │ │ ├── syn2mas__synapse_reader__test__read_access_and_refresh_tokens.snap │ │ │ │ ├── syn2mas__synapse_reader__test__read_access_and_unused_refresh_tokens.snap │ │ │ │ ├── syn2mas__synapse_reader__test__read_access_token.snap │ │ │ │ ├── syn2mas__synapse_reader__test__read_devices.snap │ │ │ │ ├── syn2mas__synapse_reader__test__read_external_ids.snap │ │ │ │ ├── syn2mas__synapse_reader__test__read_threepids.snap │ │ │ │ └── syn2mas__synapse_reader__test__read_users.snap │ │ │ └── telemetry.rs │ │ └── test_synapse_migrations/ │ │ ├── 20250117064958_users.sql │ │ ├── 20250128141011_threepids.sql │ │ ├── 20250128162513_external_ids.sql │ │ ├── 20250128201100_access_and_refresh_tokens.sql │ │ └── 20250129140230_devices.sql │ ├── tasks/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── cleanup/ │ │ │ ├── misc.rs │ │ │ ├── mod.rs │ │ │ ├── oauth.rs │ │ │ ├── sessions.rs │ │ │ ├── tokens.rs │ │ │ └── user.rs │ │ ├── email.rs │ │ ├── lib.rs │ │ ├── matrix.rs │ │ ├── new_queue.rs │ │ ├── recovery.rs │ │ ├── sessions.rs │ │ └── user.rs │ ├── templates/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── context/ │ │ │ ├── branding.rs │ │ │ ├── captcha.rs │ │ │ ├── ext.rs │ │ │ └── features.rs │ │ ├── context.rs │ │ ├── forms.rs │ │ ├── functions.rs │ │ ├── lib.rs │ │ └── macros.rs │ └── tower/ │ ├── Cargo.toml │ └── src/ │ ├── lib.rs │ ├── metrics/ │ │ ├── duration.rs │ │ ├── in_flight.rs │ │ ├── make_attributes.rs │ │ └── mod.rs │ ├── trace_context.rs │ ├── tracing/ │ │ ├── enrich_span.rs │ │ ├── future.rs │ │ ├── layer.rs │ │ ├── make_span.rs │ │ ├── mod.rs │ │ └── service.rs │ └── utils.rs ├── deny.toml ├── docker-bake.hcl ├── docs/ │ ├── README.md │ ├── SUMMARY.md │ ├── api/ │ │ ├── index.html │ │ ├── oauth2-redirect.html │ │ └── spec.json │ ├── as-login.md │ ├── config.schema.json │ ├── development/ │ │ ├── architecture.md │ │ ├── cleanup-jobs.md │ │ ├── contributing.md │ │ ├── database.md │ │ ├── graphql.md │ │ └── releasing.md │ ├── reference/ │ │ ├── cli/ │ │ │ ├── README.md │ │ │ ├── config.md │ │ │ ├── database.md │ │ │ ├── doctor.md │ │ │ ├── manage.md │ │ │ ├── server.md │ │ │ ├── syn2mas.md │ │ │ ├── templates.md │ │ │ └── worker.md │ │ ├── configuration.md │ │ └── scopes.md │ ├── rustdoc/ │ │ └── mas_handlers/ │ │ └── README.md │ ├── setup/ │ │ ├── README.md │ │ ├── database.md │ │ ├── general.md │ │ ├── homeserver.md │ │ ├── installation.md │ │ ├── migration.md │ │ ├── reverse-proxy.md │ │ ├── running.md │ │ └── sso.md │ ├── storybook/ │ │ └── README.md │ └── topics/ │ ├── access-token.md │ ├── admin-api.md │ ├── authorization.md │ └── policy.md ├── frontend/ │ ├── .browserlistrc │ ├── .gitignore │ ├── .npmrc │ ├── .postcssrc.json │ ├── .storybook/ │ │ ├── locales.ts │ │ ├── main.ts │ │ ├── preview-head.html │ │ ├── preview.tsx │ │ └── public/ │ │ └── mockServiceWorker.js │ ├── codegen.ts │ ├── graphql.config.json │ ├── i18next.config.ts │ ├── index.html │ ├── knip.config.ts │ ├── locales/ │ │ ├── cs.json │ │ ├── da.json │ │ ├── de.json │ │ ├── en.json │ │ ├── et.json │ │ ├── fi.json │ │ ├── fr.json │ │ ├── hu.json │ │ ├── nb-NO.json │ │ ├── nl.json │ │ ├── pl.json │ │ ├── pt-BR.json │ │ ├── pt.json │ │ ├── ru.json │ │ ├── sk.json │ │ ├── sv.json │ │ ├── uk.json │ │ ├── uz.json │ │ └── zh-Hans.json │ ├── package.json │ ├── schema.graphql │ ├── src/ │ │ ├── @types/ │ │ │ └── i18next.d.ts │ │ ├── components/ │ │ │ ├── AccountDeleteButton.tsx │ │ │ ├── AccountManagementPasswordPreview/ │ │ │ │ ├── AccountManagementPasswordPreview.module.css │ │ │ │ ├── AccountManagementPasswordPreview.tsx │ │ │ │ └── index.ts │ │ │ ├── BrowserSession.tsx │ │ │ ├── ButtonLink.module.css │ │ │ ├── ButtonLink.tsx │ │ │ ├── Client/ │ │ │ │ ├── OAuth2ClientDetail.test.tsx │ │ │ │ ├── OAuth2ClientDetail.tsx │ │ │ │ └── __snapshots__/ │ │ │ │ └── OAuth2ClientDetail.test.tsx.snap │ │ │ ├── Collapsible/ │ │ │ │ ├── Collapsible.module.css │ │ │ │ ├── Collapsible.stories.tsx │ │ │ │ ├── Collapsible.tsx │ │ │ │ └── index.ts │ │ │ ├── CompatSession.test.tsx │ │ │ ├── CompatSession.tsx │ │ │ ├── DateTime.stories.tsx │ │ │ ├── DateTime.tsx │ │ │ ├── Dialog/ │ │ │ │ ├── Dialog.module.css │ │ │ │ ├── Dialog.stories.tsx │ │ │ │ ├── Dialog.tsx │ │ │ │ └── index.ts │ │ │ ├── EmptyState/ │ │ │ │ ├── EmptyState.module.css │ │ │ │ ├── EmptyState.stories.tsx │ │ │ │ ├── EmptyState.tsx │ │ │ │ └── index.ts │ │ │ ├── ErrorBoundary.tsx │ │ │ ├── ExternalLink/ │ │ │ │ ├── ExternalLink.module.css │ │ │ │ └── ExternalLink.tsx │ │ │ ├── Filter/ │ │ │ │ ├── Filter.module.css │ │ │ │ ├── Filter.stories.tsx │ │ │ │ ├── Filter.tsx │ │ │ │ └── index.ts │ │ │ ├── Footer/ │ │ │ │ ├── Footer.module.css │ │ │ │ ├── Footer.stories.tsx │ │ │ │ ├── Footer.tsx │ │ │ │ └── index.ts │ │ │ ├── GenericError.module.css │ │ │ ├── GenericError.tsx │ │ │ ├── Layout/ │ │ │ │ ├── Layout.module.css │ │ │ │ ├── Layout.tsx │ │ │ │ └── index.ts │ │ │ ├── Link.tsx │ │ │ ├── LoadingScreen/ │ │ │ │ ├── LoadingScreen.module.css │ │ │ │ ├── LoadingScreen.stories.tsx │ │ │ │ ├── LoadingScreen.test.tsx │ │ │ │ ├── LoadingScreen.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── LoadingScreen.test.tsx.snap │ │ │ │ └── index.ts │ │ │ ├── LoadingSpinner/ │ │ │ │ ├── LoadingSpinner.module.css │ │ │ │ ├── LoadingSpinner.stories.tsx │ │ │ │ ├── LoadingSpinner.tsx │ │ │ │ └── index.ts │ │ │ ├── NavBar/ │ │ │ │ ├── NavBar.module.css │ │ │ │ ├── NavBar.stories.tsx │ │ │ │ ├── NavBar.tsx │ │ │ │ └── index.ts │ │ │ ├── NavItem/ │ │ │ │ ├── NavItem.module.css │ │ │ │ ├── NavItem.tsx │ │ │ │ ├── NavItemErrorIcon.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── NavItem.test.tsx.snap │ │ │ │ └── index.ts │ │ │ ├── NotFound.tsx │ │ │ ├── OAuth2Session.test.tsx │ │ │ ├── OAuth2Session.tsx │ │ │ ├── PageHeading/ │ │ │ │ ├── PageHeading.module.css │ │ │ │ ├── PageHeading.tsx │ │ │ │ └── index.ts │ │ │ ├── PaginationControls.tsx │ │ │ ├── PasswordConfirmation.tsx │ │ │ ├── PasswordCreationDoubleInput.tsx │ │ │ ├── Separator/ │ │ │ │ ├── Separator.module.css │ │ │ │ ├── Separator.tsx │ │ │ │ └── index.tsx │ │ │ ├── Session/ │ │ │ │ ├── ClientAvatar.module.css │ │ │ │ ├── ClientAvatar.test.tsx │ │ │ │ ├── ClientAvatar.tsx │ │ │ │ ├── DeviceTypeIcon.module.css │ │ │ │ ├── DeviceTypeIcon.stories.tsx │ │ │ │ ├── DeviceTypeIcon.test.tsx │ │ │ │ ├── DeviceTypeIcon.tsx │ │ │ │ ├── EndBrowserSessionButton.tsx │ │ │ │ ├── EndCompatSessionButton.tsx │ │ │ │ ├── EndOAuth2SessionButton.tsx │ │ │ │ ├── EndSessionButton.tsx │ │ │ │ ├── LastActive.module.css │ │ │ │ ├── LastActive.stories.tsx │ │ │ │ ├── LastActive.test.tsx │ │ │ │ ├── LastActive.tsx │ │ │ │ └── __snapshots__/ │ │ │ │ ├── ClientAvatar.test.tsx.snap │ │ │ │ ├── DeviceTypeIcon.test.tsx.snap │ │ │ │ ├── LastActive.test.tsx.snap │ │ │ │ └── Session.test.tsx.snap │ │ │ ├── SessionCard/ │ │ │ │ ├── SessionCard.module.css │ │ │ │ ├── SessionCard.stories.tsx │ │ │ │ ├── SessionCard.tsx │ │ │ │ └── index.ts │ │ │ ├── SessionDetail/ │ │ │ │ ├── BrowserSessionDetail.tsx │ │ │ │ ├── CompatSessionDetail.test.tsx │ │ │ │ ├── CompatSessionDetail.tsx │ │ │ │ ├── EditSessionName.tsx │ │ │ │ ├── OAuth2SessionDetail.test.tsx │ │ │ │ ├── OAuth2SessionDetail.tsx │ │ │ │ ├── SessionHeader.module.css │ │ │ │ ├── SessionHeader.stories.tsx │ │ │ │ ├── SessionHeader.test.tsx │ │ │ │ ├── SessionHeader.tsx │ │ │ │ ├── SessionInfo.tsx │ │ │ │ └── __snapshots__/ │ │ │ │ ├── CompatSessionDetail.test.tsx.snap │ │ │ │ ├── OAuth2SessionDetail.test.tsx.snap │ │ │ │ └── SessionHeader.test.tsx.snap │ │ │ ├── Typography.stories.tsx │ │ │ ├── Typography.tsx │ │ │ ├── UserEmail/ │ │ │ │ ├── UserEmail.module.css │ │ │ │ ├── UserEmail.tsx │ │ │ │ └── index.ts │ │ │ ├── UserGreeting/ │ │ │ │ ├── UserGreeting.module.css │ │ │ │ ├── UserGreeting.stories.tsx │ │ │ │ ├── UserGreeting.tsx │ │ │ │ └── index.ts │ │ │ ├── UserProfile/ │ │ │ │ ├── AddEmailForm.tsx │ │ │ │ └── UserEmailList.tsx │ │ │ ├── UserSessionsOverview/ │ │ │ │ ├── BrowserSessionsOverview.module.css │ │ │ │ ├── BrowserSessionsOverview.stories.tsx │ │ │ │ ├── BrowserSessionsOverview.test.tsx │ │ │ │ ├── BrowserSessionsOverview.tsx │ │ │ │ └── __snapshots__/ │ │ │ │ ├── BrowserSessionsOverview.test.tsx.snap │ │ │ │ └── UserSessionsOverview.test.tsx.snap │ │ │ └── __snapshots__/ │ │ │ ├── CompatSession.test.tsx.snap │ │ │ ├── LoadingScreen.test.tsx.snap │ │ │ └── OAuth2Session.test.tsx.snap │ │ ├── config.ts │ │ ├── entrypoints/ │ │ │ ├── main.tsx │ │ │ ├── shared.css │ │ │ ├── swagger.ts │ │ │ ├── templates.css │ │ │ └── templates.ts │ │ ├── gql/ │ │ │ ├── fragment-masking.ts │ │ │ ├── gql.ts │ │ │ ├── graphql.ts │ │ │ └── index.ts │ │ ├── graphql.ts │ │ ├── i18n/ │ │ │ └── password_changes.ts │ │ ├── i18n.ts │ │ ├── pagination.ts │ │ ├── routeTree.gen.ts │ │ ├── router.tsx │ │ ├── routes/ │ │ │ ├── __root.tsx │ │ │ ├── _account.index.tsx │ │ │ ├── _account.plan.index.tsx │ │ │ ├── _account.sessions.browsers.tsx │ │ │ ├── _account.sessions.index.tsx │ │ │ ├── _account.tsx │ │ │ ├── clients.$id.tsx │ │ │ ├── devices.$.tsx │ │ │ ├── emails.$id.in-use.tsx │ │ │ ├── emails.$id.verify.tsx │ │ │ ├── password.change.index.tsx │ │ │ ├── password.change.success.tsx │ │ │ ├── password.recovery.index.tsx │ │ │ ├── reset-cross-signing.cancelled.tsx │ │ │ ├── reset-cross-signing.index.tsx │ │ │ ├── reset-cross-signing.success.tsx │ │ │ ├── reset-cross-signing.tsx │ │ │ └── sessions.$id.tsx │ │ ├── styles/ │ │ │ ├── cpd-button.css │ │ │ ├── cpd-checkbox-control.css │ │ │ ├── cpd-form.css │ │ │ ├── cpd-link.css │ │ │ ├── cpd-mfa-control.css │ │ │ └── cpd-text-control.css │ │ ├── test-utils/ │ │ │ ├── mockLocale.ts │ │ │ ├── render.tsx │ │ │ └── router.tsx │ │ ├── utils/ │ │ │ ├── dates.ts │ │ │ ├── deviceIdFromScope.test.ts │ │ │ ├── deviceIdFromScope.ts │ │ │ ├── password_complexity/ │ │ │ │ ├── enwiki.json │ │ │ │ ├── index.ts │ │ │ │ ├── namesf.json │ │ │ │ ├── namesm.json │ │ │ │ ├── namess.json │ │ │ │ ├── passwords.json │ │ │ │ └── ustvfilm.json │ │ │ └── simplifyUrl.ts │ │ └── vite-env.d.ts │ ├── stories/ │ │ └── routes/ │ │ ├── app.tsx │ │ ├── index.stories.tsx │ │ └── reset-cross-signing.stories.tsx │ ├── tailwind.config.cjs │ ├── tests/ │ │ ├── mocks/ │ │ │ └── handlers.ts │ │ └── routes/ │ │ ├── __snapshots__/ │ │ │ └── reset-cross-signing.test.tsx.snap │ │ ├── account/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── index.test.tsx.snap │ │ │ │ └── sessions.test.tsx.snap │ │ │ ├── index.test.tsx │ │ │ └── sessions.test.tsx │ │ ├── render.tsx │ │ ├── reset-cross-signing.test.tsx │ │ └── types.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── vite.config.ts │ ├── vitest.global-setup.ts │ └── vitest.setup.ts ├── localazy.json ├── misc/ │ ├── build-docs.sh │ ├── device-code-grant.sh │ ├── sqlx_update.sh │ └── update.sh ├── policies/ │ ├── .gitignore │ ├── .regal/ │ │ └── config.yaml │ ├── Makefile │ ├── authorization_grant/ │ │ ├── authorization_grant.rego │ │ └── authorization_grant_test.rego │ ├── client_registration/ │ │ ├── client_registration.rego │ │ └── client_registration_test.rego │ ├── common/ │ │ ├── common.rego │ │ └── common_test.rego │ ├── compat_login/ │ │ ├── compat_login.rego │ │ └── compat_login_test.rego │ ├── email/ │ │ ├── email.rego │ │ └── email_test.rego │ ├── register/ │ │ ├── register.rego │ │ └── register_test.rego │ ├── schema/ │ │ ├── authorization_grant_input.json │ │ ├── client_registration_input.json │ │ ├── compat_login_input.json │ │ ├── email_input.json │ │ └── register_input.json │ └── util/ │ └── coveralls.rego ├── templates/ │ ├── app.html │ ├── base.html │ ├── components/ │ │ ├── back_to_client.html │ │ ├── button.html │ │ ├── captcha.html │ │ ├── errors.html │ │ ├── field.html │ │ ├── footer.html │ │ ├── icon.html │ │ ├── idp_brand.html │ │ ├── logout.html │ │ └── scope.html │ ├── device_name.txt │ ├── emails/ │ │ ├── recovery.html │ │ ├── recovery.subject │ │ ├── recovery.txt │ │ ├── verification.html │ │ ├── verification.subject │ │ └── verification.txt │ ├── form_post.html │ ├── pages/ │ │ ├── 404.html │ │ ├── account/ │ │ │ ├── deactivated.html │ │ │ ├── locked.html │ │ │ └── logged_out.html │ │ ├── compat_login_policy_violation.html │ │ ├── consent.html │ │ ├── device_consent.html │ │ ├── device_link.html │ │ ├── error.html │ │ ├── index.html │ │ ├── login.html │ │ ├── policy_violation.html │ │ ├── reauth.html │ │ ├── recovery/ │ │ │ ├── consumed.html │ │ │ ├── disabled.html │ │ │ ├── expired.html │ │ │ ├── finish.html │ │ │ ├── progress.html │ │ │ └── start.html │ │ ├── register/ │ │ │ ├── index.html │ │ │ ├── password.html │ │ │ └── steps/ │ │ │ ├── display_name.html │ │ │ ├── email_in_use.html │ │ │ ├── registration_token.html │ │ │ └── verify_email.html │ │ ├── sso.html │ │ └── upstream_oauth2/ │ │ ├── do_register.html │ │ ├── link_mismatch.html │ │ └── suggest_link.html │ └── swagger/ │ ├── doc.html │ └── oauth2-redirect.html └── translations/ ├── cs.json ├── da.json ├── de.json ├── en.json ├── et.json ├── fi.json ├── fr.json ├── hu.json ├── nb-NO.json ├── nl.json ├── pl.json ├── pt-BR.json ├── pt.json ├── ru.json ├── sk.json ├── sv.json ├── uk.json ├── uz.json └── zh-Hans.json