From 04b066aba57be0961b2af391b5874c24f9d0e118 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Sat, 18 Dec 2021 08:34:32 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20855db?= =?UTF-8?q?c60efa5d2539e442208bee06351b531b3c6=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/trait.HttpServiceFactory.js | 2 +- implementors/core/clone/trait.Clone.js | 2 +- implementors/core/fmt/trait.Debug.js | 2 +- implementors/core/marker/trait.Freeze.js | 2 +- implementors/core/marker/trait.Send.js | 2 +- implementors/core/marker/trait.Sync.js | 2 +- implementors/core/marker/trait.Unpin.js | 2 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 2 +- .../panic/unwind_safe/trait.UnwindSafe.js | 2 +- implementors/serde/de/trait.Deserialize.js | 2 +- implementors/serde/ser/trait.Serialize.js | 2 +- mcaptcha/all.html | 2 +- .../api/v1/mcaptcha/captcha/fn.services.html | 3 - .../captcha/fn.update_token_helper.html | 3 - mcaptcha/api/v1/mcaptcha/captcha/index.html | 6 - .../api/v1/mcaptcha/captcha/routes/index.html | 4 - .../mcaptcha/captcha/routes/sidebar-items.js | 1 - .../api/v1/mcaptcha/captcha/sidebar-items.js | 1 - .../v1/mcaptcha/captcha/struct.get_stats.html | 21 - mcaptcha/api/v1/mcaptcha/create/index.html | 5 + .../v1/mcaptcha/create/runner/fn.create.html | 3 + .../api/v1/mcaptcha/create/runner/index.html | 4 + .../mcaptcha/create/runner/sidebar-items.js | 1 + .../api/v1/mcaptcha/create/sidebar-items.js | 1 + .../struct.CreateCaptcha.html} | 8 +- .../struct.MCaptchaDetails.html | 12 +- .../struct.create.html} | 2 +- mcaptcha/api/v1/mcaptcha/delete/index.html | 4 + .../api/v1/mcaptcha/delete/sidebar-items.js | 1 + .../struct.DeleteCaptcha.html} | 13 +- .../struct.delete.html} | 11 +- .../api/v1/mcaptcha/duration/fn.services.html | 3 - mcaptcha/api/v1/mcaptcha/duration/index.html | 6 - .../v1/mcaptcha/duration/routes/index.html | 4 - .../mcaptcha/duration/routes/sidebar-items.js | 1 - .../api/v1/mcaptcha/duration/sidebar-items.js | 1 - .../mcaptcha/duration/struct.GetDuration.html | 25 - .../duration/struct.GetDurationResp.html | 25 - .../duration/struct.UpdateDuration.html | 26 - .../api/v1/mcaptcha/easy/fn.services.html | 3 + mcaptcha/api/v1/mcaptcha/easy/index.html | 6 + .../api/v1/mcaptcha/easy/routes/index.html | 4 + .../v1/mcaptcha/easy/routes/sidebar-items.js | 1 + .../routes/struct.Easy.html} | 7 +- .../api/v1/mcaptcha/easy/sidebar-items.js | 1 + .../struct.TrafficPattern.html} | 18 +- .../easy/struct.UpdateTrafficPattern.html | 33 + .../struct.create.html} | 10 +- .../struct.update.html} | 2 +- mcaptcha/api/v1/mcaptcha/fn.get_random.html | 2 +- mcaptcha/api/v1/mcaptcha/fn.services.html | 2 +- mcaptcha/api/v1/mcaptcha/get/index.html | 5 + .../mcaptcha/get/runner/fn.get_captcha.html | 3 + .../api/v1/mcaptcha/get/runner/index.html | 4 + .../v1/mcaptcha/get/runner/sidebar-items.js | 1 + mcaptcha/api/v1/mcaptcha/get/sidebar-items.js | 1 + .../{levels => get}/struct.I32Levels.html | 12 +- .../struct.Levels.html} | 17 +- .../struct.get_captcha.html} | 2 +- mcaptcha/api/v1/mcaptcha/index.html | 4 +- .../levels/fn.add_captcha_runner.html | 3 - .../mcaptcha/levels/fn.get_levels_util.html | 3 - .../api/v1/mcaptcha/levels/fn.services.html | 3 - mcaptcha/api/v1/mcaptcha/levels/index.html | 6 - .../api/v1/mcaptcha/levels/routes/index.html | 4 - .../mcaptcha/levels/routes/sidebar-items.js | 1 - .../api/v1/mcaptcha/levels/sidebar-items.js | 1 - .../api/v1/mcaptcha/levels/struct.Levels.html | 32 - mcaptcha/api/v1/mcaptcha/routes/index.html | 4 + .../api/v1/mcaptcha/routes/sidebar-items.js | 1 + .../v1/mcaptcha/routes/struct.Captcha.html | 29 + mcaptcha/api/v1/mcaptcha/sidebar-items.js | 2 +- mcaptcha/api/v1/mcaptcha/stats/index.html | 5 + .../api/v1/mcaptcha/stats/routes/index.html | 4 + .../v1/mcaptcha/stats/routes/sidebar-items.js | 1 + .../routes/struct.Stats.html} | 8 +- .../api/v1/mcaptcha/stats/sidebar-items.js | 1 + .../struct.StatsPayload.html} | 14 +- .../struct.get.html} | 2 +- mcaptcha/api/v1/mcaptcha/update/index.html | 5 + .../update/runner/fn.update_captcha.html | 3 + .../mcaptcha/update/runner/fn.update_key.html | 3 + .../api/v1/mcaptcha/update/runner/index.html | 4 + .../mcaptcha/update/runner/sidebar-items.js | 1 + .../api/v1/mcaptcha/update/sidebar-items.js | 1 + .../struct.UpdateCaptcha.html} | 8 +- .../struct.update_captcha.html} | 2 +- .../struct.update_key.html} | 2 +- mcaptcha/api/v1/pow/fn.services.html | 2 +- .../v1/pow/get_config/fn.init_mcaptcha.html | 2 +- mcaptcha/api/v1/pow/get_config/index.html | 2 +- .../get_config/struct.GetConfigPayload.html | 10 +- .../v1/pow/get_config/struct.get_config.html | 4 +- mcaptcha/api/v1/pow/index.html | 4 +- mcaptcha/api/v1/pow/routes/index.html | 2 +- .../api/v1/pow/routes/macro.rm_scope.html | 2 +- mcaptcha/api/v1/pow/routes/struct.PoW.html | 8 +- mcaptcha/api/v1/routes/constant.ROUTES.html | 2 +- mcaptcha/api/v1/routes/index.html | 2 +- mcaptcha/api/v1/routes/struct.Routes.html | 8 +- mcaptcha/constant.CACHE_AGE.html | 2 +- mcaptcha/constant.COMPILED_DATE.html | 2 +- mcaptcha/constant.GIT_COMMIT_HASH.html | 2 +- mcaptcha/constant.PKG_DESCRIPTION.html | 2 +- mcaptcha/constant.PKG_HOMEPAGE.html | 2 +- mcaptcha/constant.PKG_NAME.html | 2 +- mcaptcha/constant.V1_API_ROUTES.html | 2 +- mcaptcha/constant.VERSION.html | 2 +- mcaptcha/demo/constant.DEMO_PASSWORD.html | 2 +- mcaptcha/demo/constant.DEMO_USER.html | 2 +- mcaptcha/demo/fn.delete_demo_user.html | 3 - mcaptcha/demo/fn.register_demo_user.html | 4 - mcaptcha/demo/fn.run.html | 3 - mcaptcha/demo/index.html | 7 +- mcaptcha/demo/sidebar-items.js | 2 +- .../struct.DemoUser.html} | 11 +- mcaptcha/fn.get_identity_service.html | 2 +- mcaptcha/fn.get_json_err.html | 2 +- mcaptcha/fn.main.html | 2 +- mcaptcha/index.html | 2 +- .../sitekey/list/fn.get_list_sitekeys.html | 2 +- .../panel/sitekey/list/struct.IndexPage.html | 4 +- .../panel/sitekey/list/type.SiteKeys.html | 2 +- mcaptcha/pages/panel/struct.IndexPage.html | 4 +- mcaptcha/struct.CSS.html | 8 +- mcaptcha/struct.FILES.html | 8 +- mcaptcha/struct.JS.html | 8 +- mcaptcha/struct.MOBILE_CSS.html | 8 +- mcaptcha/struct.SETTINGS.html | 8 +- mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html | 8 +- mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html | 8 +- mcaptcha/struct.VERIFICATIN_WIDGET_JS.html | 8 +- mcaptcha/type.AppData.html | 2 +- search-index.js | 4 +- source-files.js | 2 +- src/mcaptcha/api/v1/account/delete.rs.html | 2 +- src/mcaptcha/api/v1/mcaptcha/captcha.rs.html | 1008 ----------------- src/mcaptcha/api/v1/mcaptcha/create.rs.html | 310 +++++ src/mcaptcha/api/v1/mcaptcha/delete.rs.html | 194 ++++ src/mcaptcha/api/v1/mcaptcha/duration.rs.html | 364 ------ src/mcaptcha/api/v1/mcaptcha/easy.rs.html | 808 +++++++++++++ src/mcaptcha/api/v1/mcaptcha/get.rs.html | 156 +++ src/mcaptcha/api/v1/mcaptcha/levels.rs.html | 826 -------------- src/mcaptcha/api/v1/mcaptcha/mod.rs.html | 88 +- src/mcaptcha/api/v1/mcaptcha/stats.rs.html | 116 ++ src/mcaptcha/api/v1/mcaptcha/update.rs.html | 532 +++++++++ src/mcaptcha/api/v1/pow/get_config.rs.html | 10 +- src/mcaptcha/api/v1/pow/mod.rs.html | 4 +- src/mcaptcha/api/v1/routes.rs.html | 18 +- src/mcaptcha/demo.rs.html | 144 ++- src/mcaptcha/main.rs.html | 28 +- .../pages/panel/sitekey/delete.rs.html | 2 +- src/mcaptcha/pages/panel/sitekey/list.rs.html | 2 +- 153 files changed, 2662 insertions(+), 2650 deletions(-) delete mode 100644 mcaptcha/api/v1/mcaptcha/captcha/fn.services.html delete mode 100644 mcaptcha/api/v1/mcaptcha/captcha/fn.update_token_helper.html delete mode 100644 mcaptcha/api/v1/mcaptcha/captcha/index.html delete mode 100644 mcaptcha/api/v1/mcaptcha/captcha/routes/index.html delete mode 100644 mcaptcha/api/v1/mcaptcha/captcha/routes/sidebar-items.js delete mode 100644 mcaptcha/api/v1/mcaptcha/captcha/sidebar-items.js delete mode 100644 mcaptcha/api/v1/mcaptcha/captcha/struct.get_stats.html create mode 100644 mcaptcha/api/v1/mcaptcha/create/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html create mode 100644 mcaptcha/api/v1/mcaptcha/create/runner/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/create/runner/sidebar-items.js create mode 100644 mcaptcha/api/v1/mcaptcha/create/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{levels/struct.AddLevels.html => create/struct.CreateCaptcha.html} (65%) rename mcaptcha/api/v1/mcaptcha/{captcha => create}/struct.MCaptchaDetails.html (64%) rename mcaptcha/api/v1/mcaptcha/{captcha/struct.update_token.html => create/struct.create.html} (65%) create mode 100644 mcaptcha/api/v1/mcaptcha/delete/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/delete/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{captcha/struct.StatsPayload.html => delete/struct.DeleteCaptcha.html} (62%) rename mcaptcha/api/v1/mcaptcha/{captcha/routes/struct.MCaptcha.html => delete/struct.delete.html} (65%) delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/fn.services.html delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/index.html delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/routes/index.html delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/routes/sidebar-items.js delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/sidebar-items.js delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/struct.GetDuration.html delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/struct.GetDurationResp.html delete mode 100644 mcaptcha/api/v1/mcaptcha/duration/struct.UpdateDuration.html create mode 100644 mcaptcha/api/v1/mcaptcha/easy/fn.services.html create mode 100644 mcaptcha/api/v1/mcaptcha/easy/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/easy/routes/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/easy/routes/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{duration/routes/struct.Duration.html => easy/routes/struct.Easy.html} (67%) create mode 100644 mcaptcha/api/v1/mcaptcha/easy/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{captcha/struct.DeleteCaptcha.html => easy/struct.TrafficPattern.html} (65%) create mode 100644 mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html rename mcaptcha/api/v1/mcaptcha/{levels/routes/struct.Levels.html => easy/struct.create.html} (67%) rename mcaptcha/api/v1/mcaptcha/{duration/struct.get_duration.html => easy/struct.update.html} (70%) create mode 100644 mcaptcha/api/v1/mcaptcha/get/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html create mode 100644 mcaptcha/api/v1/mcaptcha/get/runner/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/get/runner/sidebar-items.js create mode 100644 mcaptcha/api/v1/mcaptcha/get/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{levels => get}/struct.I32Levels.html (64%) rename mcaptcha/api/v1/mcaptcha/{captcha/struct.UserProvidedTrafficPattern.html => get/struct.Levels.html} (64%) rename mcaptcha/api/v1/mcaptcha/{levels/struct.get_levels.html => get/struct.get_captcha.html} (69%) delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/fn.add_captcha_runner.html delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/fn.get_levels_util.html delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/fn.services.html delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/index.html delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/routes/index.html delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/routes/sidebar-items.js delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/sidebar-items.js delete mode 100644 mcaptcha/api/v1/mcaptcha/levels/struct.Levels.html create mode 100644 mcaptcha/api/v1/mcaptcha/routes/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/routes/sidebar-items.js create mode 100644 mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html create mode 100644 mcaptcha/api/v1/mcaptcha/stats/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/stats/routes/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/stats/routes/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{duration/struct.update_duration.html => stats/routes/struct.Stats.html} (65%) create mode 100644 mcaptcha/api/v1/mcaptcha/stats/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{captcha/struct.MCaptchaID.html => stats/struct.StatsPayload.html} (67%) rename mcaptcha/api/v1/mcaptcha/{captcha/struct.delete_mcaptcha.html => stats/struct.get.html} (69%) create mode 100644 mcaptcha/api/v1/mcaptcha/update/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html create mode 100644 mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html create mode 100644 mcaptcha/api/v1/mcaptcha/update/runner/index.html create mode 100644 mcaptcha/api/v1/mcaptcha/update/runner/sidebar-items.js create mode 100644 mcaptcha/api/v1/mcaptcha/update/sidebar-items.js rename mcaptcha/api/v1/mcaptcha/{levels/struct.UpdateLevels.html => update/struct.UpdateCaptcha.html} (64%) rename mcaptcha/api/v1/mcaptcha/{levels/struct.update_levels.html => update/struct.update_captcha.html} (65%) rename mcaptcha/api/v1/mcaptcha/{levels/struct.add_levels.html => update/struct.update_key.html} (80%) delete mode 100644 mcaptcha/demo/fn.delete_demo_user.html delete mode 100644 mcaptcha/demo/fn.register_demo_user.html delete mode 100644 mcaptcha/demo/fn.run.html rename mcaptcha/{api/v1/mcaptcha/captcha/struct.from_user_provided_traffic_pattern.html => demo/struct.DemoUser.html} (57%) delete mode 100644 src/mcaptcha/api/v1/mcaptcha/captcha.rs.html create mode 100644 src/mcaptcha/api/v1/mcaptcha/create.rs.html create mode 100644 src/mcaptcha/api/v1/mcaptcha/delete.rs.html delete mode 100644 src/mcaptcha/api/v1/mcaptcha/duration.rs.html create mode 100644 src/mcaptcha/api/v1/mcaptcha/easy.rs.html create mode 100644 src/mcaptcha/api/v1/mcaptcha/get.rs.html delete mode 100644 src/mcaptcha/api/v1/mcaptcha/levels.rs.html create mode 100644 src/mcaptcha/api/v1/mcaptcha/stats.rs.html create mode 100644 src/mcaptcha/api/v1/mcaptcha/update.rs.html diff --git a/implementors/actix_web/service/trait.HttpServiceFactory.js b/implementors/actix_web/service/trait.HttpServiceFactory.js index 6e304dfb..6185b40d 100644 --- a/implementors/actix_web/service/trait.HttpServiceFactory.js +++ b/implementors/actix_web/service/trait.HttpServiceFactory.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl HttpServiceFactory for delete_account","synthetic":false,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl HttpServiceFactory for email_exists","synthetic":false,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl HttpServiceFactory for set_email","synthetic":false,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl HttpServiceFactory for update_user_password","synthetic":false,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl HttpServiceFactory for get_secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl HttpServiceFactory for update_user_secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl HttpServiceFactory for username_exists","synthetic":false,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl HttpServiceFactory for set_username","synthetic":false,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl HttpServiceFactory for register","synthetic":false,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl HttpServiceFactory for login","synthetic":false,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl HttpServiceFactory for signout","synthetic":false,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl HttpServiceFactory for update_token","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::update_token"]},{"text":"impl HttpServiceFactory for delete_mcaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha"]},{"text":"impl HttpServiceFactory for get_stats","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::get_stats"]},{"text":"impl HttpServiceFactory for from_user_provided_traffic_pattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern"]},{"text":"impl HttpServiceFactory for update_duration","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::update_duration"]},{"text":"impl HttpServiceFactory for get_duration","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::get_duration"]},{"text":"impl HttpServiceFactory for add_levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::add_levels"]},{"text":"impl HttpServiceFactory for update_levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::update_levels"]},{"text":"impl HttpServiceFactory for get_levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::get_levels"]},{"text":"impl HttpServiceFactory for build_details","synthetic":false,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl HttpServiceFactory for health","synthetic":false,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl HttpServiceFactory for add_notification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl HttpServiceFactory for get_notification","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl HttpServiceFactory for mark_read","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl HttpServiceFactory for get_config","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl HttpServiceFactory for verify_pow","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl HttpServiceFactory for validate_captcha_token","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl HttpServiceFactory for dist","synthetic":false,"types":["mcaptcha::docs::dist"]},{"text":"impl HttpServiceFactory for spec","synthetic":false,"types":["mcaptcha::docs::spec"]},{"text":"impl HttpServiceFactory for index","synthetic":false,"types":["mcaptcha::docs::index"]},{"text":"impl HttpServiceFactory for login","synthetic":false,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl HttpServiceFactory for join","synthetic":false,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl HttpServiceFactory for error","synthetic":false,"types":["mcaptcha::pages::errors::error"]},{"text":"impl HttpServiceFactory for notifications","synthetic":false,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl HttpServiceFactory for settings","synthetic":false,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl HttpServiceFactory for delete_account","synthetic":false,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl HttpServiceFactory for update_secret","synthetic":false,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl HttpServiceFactory for add_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl HttpServiceFactory for delete_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl HttpServiceFactory for edit_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl HttpServiceFactory for list_sitekeys","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl HttpServiceFactory for view_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl HttpServiceFactory for panel","synthetic":false,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl HttpServiceFactory for sitemap","synthetic":false,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl HttpServiceFactory for static_files","synthetic":false,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl HttpServiceFactory for favicons","synthetic":false,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl HttpServiceFactory for show_widget","synthetic":false,"types":["mcaptcha::widget::show_widget"]}]; +implementors["mcaptcha"] = [{"text":"impl HttpServiceFactory for delete_account","synthetic":false,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl HttpServiceFactory for email_exists","synthetic":false,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl HttpServiceFactory for set_email","synthetic":false,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl HttpServiceFactory for update_user_password","synthetic":false,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl HttpServiceFactory for get_secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl HttpServiceFactory for update_user_secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl HttpServiceFactory for username_exists","synthetic":false,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl HttpServiceFactory for set_username","synthetic":false,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl HttpServiceFactory for register","synthetic":false,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl HttpServiceFactory for login","synthetic":false,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl HttpServiceFactory for signout","synthetic":false,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl HttpServiceFactory for create","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl HttpServiceFactory for delete","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl HttpServiceFactory for create","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl HttpServiceFactory for update","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl HttpServiceFactory for get_captcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl HttpServiceFactory for get","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl HttpServiceFactory for update_key","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl HttpServiceFactory for update_captcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl HttpServiceFactory for build_details","synthetic":false,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl HttpServiceFactory for health","synthetic":false,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl HttpServiceFactory for add_notification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl HttpServiceFactory for get_notification","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl HttpServiceFactory for mark_read","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl HttpServiceFactory for get_config","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl HttpServiceFactory for verify_pow","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl HttpServiceFactory for validate_captcha_token","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl HttpServiceFactory for dist","synthetic":false,"types":["mcaptcha::docs::dist"]},{"text":"impl HttpServiceFactory for spec","synthetic":false,"types":["mcaptcha::docs::spec"]},{"text":"impl HttpServiceFactory for index","synthetic":false,"types":["mcaptcha::docs::index"]},{"text":"impl HttpServiceFactory for login","synthetic":false,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl HttpServiceFactory for join","synthetic":false,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl HttpServiceFactory for error","synthetic":false,"types":["mcaptcha::pages::errors::error"]},{"text":"impl HttpServiceFactory for notifications","synthetic":false,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl HttpServiceFactory for settings","synthetic":false,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl HttpServiceFactory for delete_account","synthetic":false,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl HttpServiceFactory for update_secret","synthetic":false,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl HttpServiceFactory for add_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl HttpServiceFactory for delete_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl HttpServiceFactory for edit_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl HttpServiceFactory for list_sitekeys","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl HttpServiceFactory for view_sitekey","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl HttpServiceFactory for panel","synthetic":false,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl HttpServiceFactory for sitemap","synthetic":false,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl HttpServiceFactory for static_files","synthetic":false,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl HttpServiceFactory for favicons","synthetic":false,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl HttpServiceFactory for show_widget","synthetic":false,"types":["mcaptcha::widget::show_widget"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js index 9249ca4c..5183f821 100644 --- a/implementors/core/clone/trait.Clone.js +++ b/implementors/core/clone/trait.Clone.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Clone for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Clone for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Clone for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Clone for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Clone for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Clone for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Clone for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Clone for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Clone for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Clone for MCaptchaID","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl Clone for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl Clone for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl Clone for UserProvidedTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl Clone for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl Clone for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Clone for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Clone for BuildDetailsBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Clone for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Clone for HealthBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Clone for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Clone for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Clone for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Clone for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K: Clone, V: Clone> Clone for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> Clone for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Clone for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Clone for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Clone for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Clone for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Clone for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Clone for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Clone for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Clone for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Clone for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Clone for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; +implementors["mcaptcha"] = [{"text":"impl Clone for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Clone for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Clone for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Clone for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Clone for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Clone for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Clone for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Clone for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Clone for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Clone for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Clone for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Clone for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Clone for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Clone for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Clone for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Clone for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Clone for BuildDetailsBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Clone for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Clone for HealthBuilder","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Clone for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Clone for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Clone for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Clone for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl<'a, K: Clone, V: Clone> Clone for SudoPage<'a, K, V> where
    K: Display + Render,
    V: Display + Render, 
","synthetic":false,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl<'a> Clone for ErrorPage<'a>","synthetic":false,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl<'a> Clone for IndexPage<'a>","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Clone for McaptchaConfig","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Clone for Level","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Clone for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Clone for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Clone for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Clone for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Clone for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Clone for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Clone for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Clone for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Clone for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Clone for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Clone for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Clone for IndexPage","synthetic":false,"types":["mcaptcha::widget::IndexPage"]}]; implementors["tests_migrate"] = [{"text":"impl Clone for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl Clone for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Clone for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Clone for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Clone for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Clone for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl Clone for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl Clone for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js index 04013efe..9774c9b8 100644 --- a/implementors/core/fmt/trait.Debug.js +++ b/implementors/core/fmt/trait.Debug.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Debug for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Debug for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Debug for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Debug for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Debug for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Debug for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Debug for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Debug for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Debug for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Debug for MCaptchaID","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl Debug for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl Debug for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl Debug for UserProvidedTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl Debug for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl Debug for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Debug for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Debug for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Debug for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Debug for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Debug for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Debug for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Debug for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Debug for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl Debug for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Debug for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Debug for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl Debug for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Debug for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Debug for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Debug for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Debug for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Debug for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Debug for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Debug for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Debug for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Debug for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; +implementors["mcaptcha"] = [{"text":"impl Debug for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Debug for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Debug for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Debug for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Debug for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Debug for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Debug for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Debug for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Debug for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Debug for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Debug for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Debug for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Debug for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Debug for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Debug for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Debug for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Debug for BuildDetailsBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Debug for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Debug for HealthBuilderError","synthetic":false,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Debug for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Debug for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Debug for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Debug for Date","synthetic":false,"types":["mcaptcha::date::Date"]},{"text":"impl Debug for SmtpErrorWrapper","synthetic":false,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Debug for ServiceError","synthetic":false,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Debug for PageError","synthetic":false,"types":["mcaptcha::errors::PageError"]},{"text":"impl Debug for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl Debug for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Debug for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Debug for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Debug for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Debug for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl Debug for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl Debug for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl Debug for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Debug for Stats","synthetic":false,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Debug for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; implementors["tests_migrate"] = [{"text":"impl Debug for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl Debug for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Debug for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Debug for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Debug for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Debug for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl Debug for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl Debug for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js index 623785c8..5eb026a4 100644 --- a/implementors/core/marker/trait.Freeze.js +++ b/implementors/core/marker/trait.Freeze.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Freeze for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Freeze for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Freeze for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Freeze for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Freeze for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Freeze for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Freeze for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Freeze for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Freeze for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Freeze for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Freeze for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Freeze for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Freeze for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Freeze for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Freeze for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Freeze for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Freeze for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Freeze for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Freeze for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Freeze for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Freeze for MCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::routes::MCaptcha"]},{"text":"impl Freeze for MCaptchaID","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl Freeze for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl Freeze for update_token","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::update_token"]},{"text":"impl Freeze for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl Freeze for delete_mcaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl Freeze for get_stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::get_stats"]},{"text":"impl Freeze for UserProvidedTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl Freeze for from_user_provided_traffic_pattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern"]},{"text":"impl Freeze for Duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::routes::Duration"]},{"text":"impl Freeze for UpdateDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl Freeze for update_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::update_duration"]},{"text":"impl Freeze for GetDurationResp","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl Freeze for GetDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl Freeze for get_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::get_duration"]},{"text":"impl Freeze for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::routes::Levels"]},{"text":"impl Freeze for AddLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl Freeze for add_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::add_levels"]},{"text":"impl Freeze for UpdateLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl Freeze for update_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::update_levels"]},{"text":"impl Freeze for get_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::get_levels"]},{"text":"impl Freeze for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl Freeze for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Freeze for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Freeze for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Freeze for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Freeze for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Freeze for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Freeze for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Freeze for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Freeze for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Freeze for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Freeze for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Freeze for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Freeze for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Freeze for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Freeze for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Freeze for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Freeze for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Freeze for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Freeze for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Freeze for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Freeze for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Freeze for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Freeze for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Freeze for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Freeze for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Freeze for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Freeze for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Freeze for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Freeze for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Freeze for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Freeze for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Freeze for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Freeze for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Freeze for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Freeze for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Freeze for CheckLoginMiddleware<S> where
    S: Freeze
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Freeze for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Freeze for SudoPage<'a, K, V>","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Freeze for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Freeze for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Freeze for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Freeze for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Freeze for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Freeze for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Freeze for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Freeze for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Freeze for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Freeze for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Freeze for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Freeze for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Freeze for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Freeze for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Freeze for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Freeze for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Freeze for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Freeze for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Freeze for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Freeze for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Freeze for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Freeze for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Freeze for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Freeze for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Freeze for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Freeze for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Freeze for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Freeze for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Freeze for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Freeze for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Freeze for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Freeze for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Freeze for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Freeze for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Freeze for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Freeze for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Freeze for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Freeze for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Freeze for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Freeze for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Freeze for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Freeze for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Freeze for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Freeze for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Freeze for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Freeze for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Freeze for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Freeze for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["mcaptcha"] = [{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Freeze for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Freeze for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Freeze for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Freeze for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Freeze for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Freeze for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Freeze for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Freeze for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Freeze for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Freeze for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Freeze for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Freeze for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Freeze for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Freeze for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Freeze for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Freeze for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Freeze for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Freeze for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Freeze for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Freeze for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Freeze for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Freeze for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Freeze for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Freeze for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Freeze for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Freeze for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Freeze for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Freeze for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Freeze for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Freeze for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Freeze for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Freeze for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Freeze for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Freeze for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Freeze for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Freeze for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Freeze for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Freeze for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Freeze for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Freeze for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Freeze for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Freeze for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Freeze for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Freeze for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Freeze for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Freeze for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Freeze for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Freeze for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Freeze for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Freeze for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Freeze for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Freeze for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Freeze for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Freeze for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Freeze for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Freeze for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Freeze for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Freeze for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Freeze for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Freeze for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Freeze for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Freeze for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Freeze for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Freeze for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Freeze for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Freeze for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Freeze for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Freeze for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Freeze for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Freeze for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Freeze for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Freeze for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Freeze for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Freeze for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Freeze for CheckLoginMiddleware<S> where
    S: Freeze
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Freeze for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Freeze for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Freeze for SudoPage<'a, K, V>","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Freeze for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Freeze for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Freeze for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Freeze for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Freeze for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Freeze for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Freeze for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Freeze for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Freeze for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Freeze for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Freeze for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Freeze for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Freeze for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Freeze for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Freeze for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Freeze for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Freeze for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Freeze for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Freeze for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Freeze for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Freeze for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Freeze for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Freeze for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Freeze for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Freeze for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Freeze for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Freeze for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Freeze for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Freeze for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Freeze for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Freeze for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Freeze for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Freeze for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Freeze for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Freeze for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Freeze for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Freeze for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Freeze for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Freeze for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Freeze for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Freeze for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Freeze for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Freeze for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Freeze for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Freeze for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Freeze for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Freeze for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Freeze for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Freeze for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Freeze for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Freeze for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Freeze for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Freeze for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Freeze for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Freeze for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Freeze for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Freeze for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Freeze for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Freeze for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; implementors["tests_migrate"] = [{"text":"impl Freeze for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Freeze for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Freeze for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Freeze for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Freeze for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Freeze for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Freeze for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Freeze for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Freeze for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js index b7fe21d9..029c4870 100644 --- a/implementors/core/marker/trait.Send.js +++ b/implementors/core/marker/trait.Send.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Send for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Send for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Send for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Send for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Send for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Send for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Send for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Send for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Send for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Send for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Send for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Send for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Send for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Send for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Send for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Send for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Send for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Send for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Send for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Send for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Send for MCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::routes::MCaptcha"]},{"text":"impl Send for MCaptchaID","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl Send for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl Send for update_token","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::update_token"]},{"text":"impl Send for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl Send for delete_mcaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl Send for get_stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::get_stats"]},{"text":"impl Send for UserProvidedTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl Send for from_user_provided_traffic_pattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern"]},{"text":"impl Send for Duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::routes::Duration"]},{"text":"impl Send for UpdateDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl Send for update_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::update_duration"]},{"text":"impl Send for GetDurationResp","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl Send for GetDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl Send for get_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::get_duration"]},{"text":"impl Send for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::routes::Levels"]},{"text":"impl Send for AddLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl Send for add_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::add_levels"]},{"text":"impl Send for UpdateLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl Send for update_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::update_levels"]},{"text":"impl Send for get_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::get_levels"]},{"text":"impl Send for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl Send for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Send for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Send for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Send for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Send for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Send for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Send for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Send for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Send for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Send for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Send for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Send for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Send for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Send for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Send for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Send for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Send for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Send for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Send for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Send for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Send for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Send for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Send for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Send for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Send for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Send for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Send for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Send for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Send for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Send for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Send for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Send for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Send for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Send for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Send for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Send for CheckLoginMiddleware<S> where
    S: Send
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Send for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Send for SudoPage<'a, K, V> where
    K: Send,
    V: Send
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Send for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Send for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Send for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Send for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Send for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Send for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Send for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Send for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Send for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Send for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Send for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Send for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Send for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Send for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Send for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Send for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Send for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Send for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Send for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Send for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Send for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Send for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Send for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Send for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Send for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Send for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Send for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Send for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Send for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Send for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Send for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Send for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Send for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Send for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Send for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Send for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Send for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Send for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Send for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Send for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Send for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Send for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Send for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Send for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Send for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Send for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Send for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Send for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Send for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Send for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Send for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["mcaptcha"] = [{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Send for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Send for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Send for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Send for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Send for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Send for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Send for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Send for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Send for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Send for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Send for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Send for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Send for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Send for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Send for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Send for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Send for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Send for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Send for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Send for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Send for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Send for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Send for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Send for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Send for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Send for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Send for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Send for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Send for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Send for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Send for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Send for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Send for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Send for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Send for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Send for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Send for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Send for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Send for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Send for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Send for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Send for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Send for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Send for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Send for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Send for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Send for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Send for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Send for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Send for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Send for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Send for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Send for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Send for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Send for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Send for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Send for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Send for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Send for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Send for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Send for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Send for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Send for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Send for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Send for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Send for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Send for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Send for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Send for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Send for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Send for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Send for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Send for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Send for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Send for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Send for CheckLoginMiddleware<S> where
    S: Send
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Send for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Send for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Send for SudoPage<'a, K, V> where
    K: Send,
    V: Send
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Send for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Send for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Send for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Send for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Send for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Send for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Send for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Send for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Send for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Send for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Send for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Send for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Send for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Send for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Send for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Send for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Send for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Send for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Send for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Send for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Send for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Send for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Send for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Send for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Send for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Send for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Send for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Send for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Send for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Send for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Send for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Send for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Send for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Send for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Send for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Send for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Send for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Send for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Send for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Send for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Send for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Send for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Send for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Send for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Send for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Send for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Send for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Send for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Send for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Send for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Send for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Send for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Send for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Send for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Send for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Send for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Send for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Send for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Send for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Send for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Send for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Send for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Send for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; implementors["tests_migrate"] = [{"text":"impl Send for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Send for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Send for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Send for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Send for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Send for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Send for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Send for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Send for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js index a7cb417d..e1d1c391 100644 --- a/implementors/core/marker/trait.Sync.js +++ b/implementors/core/marker/trait.Sync.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Sync for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Sync for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Sync for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Sync for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Sync for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Sync for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Sync for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Sync for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Sync for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Sync for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Sync for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Sync for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Sync for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Sync for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Sync for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Sync for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Sync for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Sync for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Sync for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Sync for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Sync for MCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::routes::MCaptcha"]},{"text":"impl Sync for MCaptchaID","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl Sync for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl Sync for update_token","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::update_token"]},{"text":"impl Sync for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl Sync for delete_mcaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl Sync for get_stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::get_stats"]},{"text":"impl Sync for UserProvidedTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl Sync for from_user_provided_traffic_pattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern"]},{"text":"impl Sync for Duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::routes::Duration"]},{"text":"impl Sync for UpdateDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl Sync for update_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::update_duration"]},{"text":"impl Sync for GetDurationResp","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl Sync for GetDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl Sync for get_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::get_duration"]},{"text":"impl Sync for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::routes::Levels"]},{"text":"impl Sync for AddLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl Sync for add_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::add_levels"]},{"text":"impl Sync for UpdateLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl Sync for update_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::update_levels"]},{"text":"impl Sync for get_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::get_levels"]},{"text":"impl Sync for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl Sync for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Sync for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Sync for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Sync for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Sync for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Sync for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Sync for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Sync for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Sync for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Sync for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Sync for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Sync for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Sync for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Sync for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Sync for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Sync for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Sync for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Sync for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Sync for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Sync for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Sync for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Sync for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Sync for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Sync for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Sync for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Sync for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Sync for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Sync for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Sync for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Sync for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Sync for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Sync for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Sync for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Sync for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Sync for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Sync for CheckLoginMiddleware<S> where
    S: Sync
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Sync for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Sync for SudoPage<'a, K, V> where
    K: Sync,
    V: Sync
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Sync for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Sync for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Sync for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Sync for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Sync for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Sync for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Sync for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Sync for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Sync for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Sync for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Sync for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Sync for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Sync for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Sync for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Sync for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Sync for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Sync for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Sync for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Sync for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Sync for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Sync for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Sync for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Sync for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Sync for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Sync for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Sync for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Sync for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Sync for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Sync for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Sync for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Sync for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Sync for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Sync for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Sync for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Sync for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Sync for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Sync for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Sync for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Sync for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Sync for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Sync for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Sync for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Sync for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Sync for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Sync for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Sync for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Sync for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Sync for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["mcaptcha"] = [{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Sync for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Sync for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Sync for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Sync for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Sync for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Sync for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Sync for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Sync for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Sync for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Sync for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Sync for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Sync for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Sync for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Sync for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Sync for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Sync for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Sync for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Sync for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Sync for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Sync for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Sync for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Sync for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Sync for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Sync for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Sync for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Sync for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Sync for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Sync for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Sync for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Sync for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Sync for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Sync for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Sync for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Sync for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Sync for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Sync for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Sync for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Sync for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Sync for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Sync for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Sync for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Sync for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Sync for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Sync for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Sync for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Sync for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Sync for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Sync for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Sync for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Sync for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Sync for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Sync for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Sync for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Sync for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Sync for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Sync for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Sync for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Sync for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Sync for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Sync for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Sync for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Sync for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Sync for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Sync for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Sync for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Sync for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Sync for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Sync for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Sync for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Sync for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Sync for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Sync for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Sync for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Sync for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Sync for CheckLoginMiddleware<S> where
    S: Sync
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Sync for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Sync for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Sync for SudoPage<'a, K, V> where
    K: Sync,
    V: Sync
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Sync for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Sync for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Sync for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Sync for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Sync for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Sync for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Sync for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Sync for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Sync for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Sync for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Sync for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Sync for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Sync for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Sync for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Sync for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Sync for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Sync for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Sync for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Sync for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Sync for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Sync for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Sync for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Sync for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Sync for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Sync for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Sync for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Sync for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Sync for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Sync for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Sync for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Sync for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Sync for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Sync for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Sync for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Sync for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Sync for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Sync for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Sync for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Sync for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Sync for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Sync for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Sync for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Sync for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Sync for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Sync for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Sync for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Sync for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Sync for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Sync for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Sync for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Sync for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Sync for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Sync for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Sync for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Sync for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Sync for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Sync for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Sync for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Sync for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Sync for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Sync for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; implementors["tests_migrate"] = [{"text":"impl Sync for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Sync for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Sync for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Sync for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Sync for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Sync for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Sync for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Sync for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Sync for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js index 5558fd4b..b5396e16 100644 --- a/implementors/core/marker/trait.Unpin.js +++ b/implementors/core/marker/trait.Unpin.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Unpin for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Unpin for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Unpin for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Unpin for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Unpin for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Unpin for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Unpin for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Unpin for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Unpin for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Unpin for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Unpin for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Unpin for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Unpin for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Unpin for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Unpin for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Unpin for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Unpin for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Unpin for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Unpin for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Unpin for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Unpin for MCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::routes::MCaptcha"]},{"text":"impl Unpin for MCaptchaID","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl Unpin for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl Unpin for update_token","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::update_token"]},{"text":"impl Unpin for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl Unpin for delete_mcaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl Unpin for get_stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::get_stats"]},{"text":"impl Unpin for UserProvidedTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl Unpin for from_user_provided_traffic_pattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern"]},{"text":"impl Unpin for Duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::routes::Duration"]},{"text":"impl Unpin for UpdateDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl Unpin for update_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::update_duration"]},{"text":"impl Unpin for GetDurationResp","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl Unpin for GetDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl Unpin for get_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::get_duration"]},{"text":"impl Unpin for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::routes::Levels"]},{"text":"impl Unpin for AddLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl Unpin for add_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::add_levels"]},{"text":"impl Unpin for UpdateLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl Unpin for update_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::update_levels"]},{"text":"impl Unpin for get_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::get_levels"]},{"text":"impl Unpin for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl Unpin for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Unpin for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Unpin for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Unpin for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Unpin for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Unpin for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Unpin for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Unpin for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Unpin for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Unpin for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Unpin for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Unpin for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Unpin for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Unpin for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Unpin for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Unpin for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Unpin for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Unpin for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Unpin for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Unpin for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Unpin for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Unpin for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Unpin for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Unpin for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Unpin for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Unpin for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Unpin for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Unpin for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Unpin for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Unpin for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Unpin for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Unpin for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Unpin for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Unpin for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Unpin for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Unpin for CheckLoginMiddleware<S> where
    S: Unpin
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Unpin for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Unpin for SudoPage<'a, K, V> where
    K: Unpin,
    V: Unpin
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Unpin for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Unpin for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Unpin for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Unpin for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Unpin for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Unpin for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Unpin for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Unpin for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Unpin for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Unpin for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Unpin for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Unpin for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Unpin for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Unpin for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Unpin for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Unpin for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Unpin for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Unpin for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Unpin for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Unpin for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Unpin for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Unpin for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Unpin for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Unpin for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Unpin for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Unpin for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Unpin for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Unpin for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Unpin for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Unpin for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Unpin for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Unpin for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Unpin for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Unpin for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Unpin for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Unpin for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Unpin for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Unpin for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Unpin for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Unpin for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Unpin for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Unpin for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Unpin for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Unpin for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Unpin for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Unpin for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Unpin for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Unpin for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["mcaptcha"] = [{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl Unpin for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Unpin for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl Unpin for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl Unpin for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Unpin for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl Unpin for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl Unpin for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Unpin for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl Unpin for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl Unpin for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl Unpin for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Unpin for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl Unpin for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl Unpin for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Unpin for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl Unpin for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Unpin for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Unpin for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Unpin for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl Unpin for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl Unpin for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Unpin for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Unpin for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl Unpin for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Unpin for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl Unpin for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl Unpin for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Unpin for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl Unpin for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Unpin for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl Unpin for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl Unpin for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Unpin for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Unpin for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Unpin for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl Unpin for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl Unpin for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Unpin for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl Unpin for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl Unpin for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Unpin for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl Unpin for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl Unpin for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl Unpin for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Unpin for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl Unpin for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl Unpin for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl Unpin for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Unpin for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Unpin for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl Unpin for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Unpin for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Unpin for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl Unpin for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl Unpin for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Unpin for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl Unpin for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Unpin for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl Unpin for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Unpin for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl Unpin for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl Unpin for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl Unpin for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl Unpin for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl Unpin for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl Unpin for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl Unpin for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl Unpin for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl Unpin for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl Unpin for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl Unpin for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl Unpin for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Unpin for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl Unpin for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> Unpin for CheckLoginMiddleware<S> where
    S: Unpin
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl Unpin for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl Unpin for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> Unpin for SudoPage<'a, K, V> where
    K: Unpin,
    V: Unpin
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl Unpin for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> Unpin for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl Unpin for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl Unpin for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl Unpin for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl Unpin for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl Unpin for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl Unpin for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl Unpin for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl Unpin for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> Unpin for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl Unpin for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl Unpin for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl Unpin for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl Unpin for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl Unpin for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl Unpin for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl Unpin for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl Unpin for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl Unpin for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl Unpin for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl Unpin for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl Unpin for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl Unpin for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl Unpin for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl Unpin for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl Unpin for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl Unpin for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl Unpin for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl Unpin for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl Unpin for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl Unpin for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl Unpin for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl Unpin for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl Unpin for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl Unpin for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl Unpin for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl Unpin for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl Unpin for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl Unpin for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl Unpin for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl Unpin for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl Unpin for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl Unpin for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl Unpin for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl Unpin for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Unpin for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl Unpin for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl Unpin for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl Unpin for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl Unpin for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl Unpin for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl Unpin for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl Unpin for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl Unpin for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl Unpin for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl Unpin for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl Unpin for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl Unpin for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; implementors["tests_migrate"] = [{"text":"impl Unpin for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl Unpin for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl Unpin for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl Unpin for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl Unpin for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl Unpin for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl Unpin for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl Unpin for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl Unpin for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index cf5977f3..04a7856a 100644 --- a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl RefUnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl RefUnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl RefUnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl RefUnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl RefUnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl RefUnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl RefUnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl RefUnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl RefUnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl RefUnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl RefUnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl RefUnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl RefUnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl RefUnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl RefUnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl RefUnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl RefUnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl RefUnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl RefUnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl RefUnwindSafe for MCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::routes::MCaptcha"]},{"text":"impl RefUnwindSafe for MCaptchaID","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl RefUnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl RefUnwindSafe for update_token","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::update_token"]},{"text":"impl RefUnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl RefUnwindSafe for delete_mcaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl RefUnwindSafe for get_stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::get_stats"]},{"text":"impl RefUnwindSafe for UserProvidedTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl RefUnwindSafe for from_user_provided_traffic_pattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern"]},{"text":"impl RefUnwindSafe for Duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::routes::Duration"]},{"text":"impl RefUnwindSafe for UpdateDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl RefUnwindSafe for update_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::update_duration"]},{"text":"impl RefUnwindSafe for GetDurationResp","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl RefUnwindSafe for GetDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl RefUnwindSafe for get_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::get_duration"]},{"text":"impl RefUnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::routes::Levels"]},{"text":"impl RefUnwindSafe for AddLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl RefUnwindSafe for add_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::add_levels"]},{"text":"impl RefUnwindSafe for UpdateLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl RefUnwindSafe for update_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::update_levels"]},{"text":"impl RefUnwindSafe for get_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::get_levels"]},{"text":"impl RefUnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl RefUnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl RefUnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl RefUnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl RefUnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl RefUnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl RefUnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl RefUnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl RefUnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl RefUnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl RefUnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl RefUnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl RefUnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl RefUnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl RefUnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl RefUnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl RefUnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl RefUnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl RefUnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl RefUnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl RefUnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl RefUnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl !RefUnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !RefUnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl RefUnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl RefUnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl RefUnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl RefUnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl RefUnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !RefUnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !RefUnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl RefUnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !RefUnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl RefUnwindSafe for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> RefUnwindSafe for CheckLoginMiddleware<S> where
    S: RefUnwindSafe
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl RefUnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> RefUnwindSafe for SudoPage<'a, K, V> where
    K: RefUnwindSafe,
    V: RefUnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> RefUnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl RefUnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl RefUnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl RefUnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl RefUnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl RefUnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl RefUnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl RefUnwindSafe for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl RefUnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl RefUnwindSafe for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl RefUnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl RefUnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl RefUnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl RefUnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl RefUnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl RefUnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl RefUnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl RefUnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl RefUnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl RefUnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl RefUnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl RefUnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl RefUnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl RefUnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl RefUnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl RefUnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl RefUnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl RefUnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl RefUnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl RefUnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl RefUnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl RefUnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl RefUnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl RefUnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl RefUnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl RefUnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl RefUnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl RefUnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl RefUnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl RefUnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl RefUnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl RefUnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl RefUnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl RefUnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl RefUnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl RefUnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["mcaptcha"] = [{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl RefUnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl RefUnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl RefUnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl RefUnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl RefUnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl RefUnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl RefUnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl RefUnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl RefUnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl RefUnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl RefUnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl RefUnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl RefUnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl RefUnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl RefUnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl RefUnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl RefUnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl RefUnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl RefUnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl RefUnwindSafe for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl RefUnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl RefUnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl RefUnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl RefUnwindSafe for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl RefUnwindSafe for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl RefUnwindSafe for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl RefUnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl RefUnwindSafe for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl RefUnwindSafe for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl RefUnwindSafe for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl RefUnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl RefUnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl RefUnwindSafe for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl RefUnwindSafe for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl RefUnwindSafe for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl RefUnwindSafe for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl RefUnwindSafe for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl RefUnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl RefUnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl RefUnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl RefUnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl RefUnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl RefUnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl RefUnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl RefUnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl RefUnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl RefUnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl RefUnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl RefUnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl RefUnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl RefUnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl RefUnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl RefUnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl RefUnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl RefUnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl RefUnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl RefUnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl RefUnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl RefUnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl !RefUnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !RefUnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl RefUnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl !RefUnwindSafe for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl RefUnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl RefUnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl RefUnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl RefUnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !RefUnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !RefUnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl RefUnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !RefUnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl RefUnwindSafe for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> RefUnwindSafe for CheckLoginMiddleware<S> where
    S: RefUnwindSafe
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl RefUnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl RefUnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> RefUnwindSafe for SudoPage<'a, K, V> where
    K: RefUnwindSafe,
    V: RefUnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl RefUnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> RefUnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl RefUnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl RefUnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl RefUnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl RefUnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl RefUnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl RefUnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl RefUnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl RefUnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> RefUnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl RefUnwindSafe for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl RefUnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl RefUnwindSafe for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl RefUnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl RefUnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl RefUnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl RefUnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl RefUnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl RefUnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl RefUnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl RefUnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl RefUnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl RefUnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl RefUnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl RefUnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl RefUnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl RefUnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl RefUnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl RefUnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl RefUnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl RefUnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl RefUnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl RefUnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl RefUnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl RefUnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl RefUnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl RefUnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl RefUnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl RefUnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl RefUnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl RefUnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl RefUnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl RefUnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl RefUnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl RefUnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl RefUnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl RefUnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl RefUnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl RefUnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl RefUnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl RefUnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl RefUnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl RefUnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl RefUnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl RefUnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl RefUnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl RefUnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; implementors["tests_migrate"] = [{"text":"impl RefUnwindSafe for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl RefUnwindSafe for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl RefUnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl RefUnwindSafe for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl RefUnwindSafe for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl RefUnwindSafe for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl RefUnwindSafe for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl RefUnwindSafe for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl RefUnwindSafe for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index cf5b8bbc..227d3e8d 100644 --- a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl UnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl UnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl UnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl UnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl UnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl UnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl UnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl UnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl UnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl UnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl UnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl UnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl UnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl UnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl UnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl UnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl UnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl UnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl UnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl UnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl UnwindSafe for MCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::routes::MCaptcha"]},{"text":"impl UnwindSafe for MCaptchaID","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl UnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl UnwindSafe for update_token","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::update_token"]},{"text":"impl UnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl UnwindSafe for delete_mcaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl UnwindSafe for get_stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::get_stats"]},{"text":"impl UnwindSafe for UserProvidedTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl UnwindSafe for from_user_provided_traffic_pattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern"]},{"text":"impl UnwindSafe for Duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::routes::Duration"]},{"text":"impl UnwindSafe for UpdateDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl UnwindSafe for update_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::update_duration"]},{"text":"impl UnwindSafe for GetDurationResp","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl UnwindSafe for GetDuration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl UnwindSafe for get_duration","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::duration::get_duration"]},{"text":"impl UnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::routes::Levels"]},{"text":"impl UnwindSafe for AddLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl UnwindSafe for add_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::add_levels"]},{"text":"impl UnwindSafe for UpdateLevels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl UnwindSafe for update_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::update_levels"]},{"text":"impl UnwindSafe for get_levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::get_levels"]},{"text":"impl UnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl UnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl UnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl UnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl UnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl UnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl UnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl UnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl UnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl UnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl UnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl UnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl UnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl UnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl UnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl UnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl UnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl UnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl UnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl UnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl UnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl UnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl UnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl UnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl !UnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !UnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl UnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl UnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl UnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl UnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl UnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !UnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !UnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl UnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !UnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl UnwindSafe for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> UnwindSafe for CheckLoginMiddleware<S> where
    S: UnwindSafe
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl UnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> UnwindSafe for SudoPage<'a, K, V> where
    K: UnwindSafe,
    V: UnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl UnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> UnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl UnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl UnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl UnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl UnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl UnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl UnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl UnwindSafe for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl UnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl UnwindSafe for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl UnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl UnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl UnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl UnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl UnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl UnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl UnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl UnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl UnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl UnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl UnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl UnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl UnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl UnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl UnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl UnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl UnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl UnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl UnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl UnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl UnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl UnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl UnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl UnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl UnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl UnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl UnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl UnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl UnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl UnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl UnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl UnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl UnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl UnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl UnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl UnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl UnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; +implementors["mcaptcha"] = [{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::api::v1::account::delete::delete_account"]},{"text":"impl UnwindSafe for Email","synthetic":true,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl UnwindSafe for email_exists","synthetic":true,"types":["mcaptcha::api::v1::account::email::email_exists"]},{"text":"impl UnwindSafe for set_email","synthetic":true,"types":["mcaptcha::api::v1::account::email::set_email"]},{"text":"impl UnwindSafe for ChangePasswordReqest","synthetic":true,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl UnwindSafe for UpdatePassword","synthetic":true,"types":["mcaptcha::api::v1::account::password::UpdatePassword"]},{"text":"impl UnwindSafe for update_user_password","synthetic":true,"types":["mcaptcha::api::v1::account::password::update_user_password"]},{"text":"impl UnwindSafe for Secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl UnwindSafe for get_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::get_secret"]},{"text":"impl UnwindSafe for update_user_secret","synthetic":true,"types":["mcaptcha::api::v1::account::secret::update_user_secret"]},{"text":"impl UnwindSafe for username_exists","synthetic":true,"types":["mcaptcha::api::v1::account::username::username_exists"]},{"text":"impl UnwindSafe for Username","synthetic":true,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl UnwindSafe for set_username","synthetic":true,"types":["mcaptcha::api::v1::account::username::set_username"]},{"text":"impl UnwindSafe for Account","synthetic":true,"types":["mcaptcha::api::v1::account::routes::Account"]},{"text":"impl UnwindSafe for AccountCheckPayload","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl UnwindSafe for AccountCheckResp","synthetic":true,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::api::v1::auth::routes::Auth"]},{"text":"impl UnwindSafe for Register","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl UnwindSafe for Login","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl UnwindSafe for Password","synthetic":true,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl UnwindSafe for register","synthetic":true,"types":["mcaptcha::api::v1::auth::register"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::api::v1::auth::login"]},{"text":"impl UnwindSafe for signout","synthetic":true,"types":["mcaptcha::api::v1::auth::signout"]},{"text":"impl UnwindSafe for CreateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl UnwindSafe for MCaptchaDetails","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl UnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::create::create"]},{"text":"impl UnwindSafe for DeleteCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl UnwindSafe for delete","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::delete::delete"]},{"text":"impl UnwindSafe for Easy","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::routes::Easy"]},{"text":"impl UnwindSafe for TrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl UnwindSafe for create","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::create"]},{"text":"impl UnwindSafe for UpdateTrafficPattern","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl UnwindSafe for update","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::easy::update"]},{"text":"impl UnwindSafe for get_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::get_captcha"]},{"text":"impl UnwindSafe for Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl UnwindSafe for I32Levels","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl UnwindSafe for Stats","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::routes::Stats"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl UnwindSafe for get","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::stats::get"]},{"text":"impl UnwindSafe for update_key","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_key"]},{"text":"impl UnwindSafe for UpdateCaptcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl UnwindSafe for update_captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::update::update_captcha"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::api::v1::mcaptcha::routes::Captcha"]},{"text":"impl UnwindSafe for Meta","synthetic":true,"types":["mcaptcha::api::v1::meta::routes::Meta"]},{"text":"impl UnwindSafe for BuildDetails","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl UnwindSafe for BuildDetailsBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilder"]},{"text":"impl UnwindSafe for BuildDetailsBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::BuildDetailsBuilderError"]},{"text":"impl UnwindSafe for build_details","synthetic":true,"types":["mcaptcha::api::v1::meta::build_details"]},{"text":"impl UnwindSafe for Health","synthetic":true,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl UnwindSafe for HealthBuilder","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilder"]},{"text":"impl UnwindSafe for HealthBuilderError","synthetic":true,"types":["mcaptcha::api::v1::meta::HealthBuilderError"]},{"text":"impl UnwindSafe for health","synthetic":true,"types":["mcaptcha::api::v1::meta::health"]},{"text":"impl UnwindSafe for AddNotification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl UnwindSafe for add_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::add::add_notification"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::Notification"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl UnwindSafe for get_notification","synthetic":true,"types":["mcaptcha::api::v1::notifications::get::get_notification"]},{"text":"impl UnwindSafe for MarkReadReq","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl UnwindSafe for NotificationResp","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl UnwindSafe for mark_read","synthetic":true,"types":["mcaptcha::api::v1::notifications::mark_read::mark_read"]},{"text":"impl UnwindSafe for Notifications","synthetic":true,"types":["mcaptcha::api::v1::notifications::routes::Notifications"]},{"text":"impl UnwindSafe for GetConfigPayload","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl UnwindSafe for get_config","synthetic":true,"types":["mcaptcha::api::v1::pow::get_config::get_config"]},{"text":"impl UnwindSafe for ValidationToken","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl UnwindSafe for verify_pow","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_pow::verify_pow"]},{"text":"impl UnwindSafe for CaptchaValidateResp","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl UnwindSafe for validate_captcha_token","synthetic":true,"types":["mcaptcha::api::v1::pow::verify_token::validate_captcha_token"]},{"text":"impl UnwindSafe for PoW","synthetic":true,"types":["mcaptcha::api::v1::pow::routes::PoW"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::api::v1::routes::Routes"]},{"text":"impl !UnwindSafe for SystemGroup","synthetic":true,"types":["mcaptcha::data::SystemGroup"]},{"text":"impl !UnwindSafe for Data","synthetic":true,"types":["mcaptcha::data::Data"]},{"text":"impl UnwindSafe for Date","synthetic":true,"types":["mcaptcha::date::Date"]},{"text":"impl !UnwindSafe for DemoUser","synthetic":true,"types":["mcaptcha::demo::DemoUser"]},{"text":"impl UnwindSafe for Docs","synthetic":true,"types":["mcaptcha::docs::routes::Docs"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::docs::Asset"]},{"text":"impl UnwindSafe for dist","synthetic":true,"types":["mcaptcha::docs::dist"]},{"text":"impl UnwindSafe for spec","synthetic":true,"types":["mcaptcha::docs::spec"]},{"text":"impl UnwindSafe for index","synthetic":true,"types":["mcaptcha::docs::index"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::email::verification::IndexPage"]},{"text":"impl !UnwindSafe for SmtpErrorWrapper","synthetic":true,"types":["mcaptcha::errors::SmtpErrorWrapper"]},{"text":"impl !UnwindSafe for ServiceError","synthetic":true,"types":["mcaptcha::errors::ServiceError"]},{"text":"impl UnwindSafe for ErrorToResponse","synthetic":true,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl !UnwindSafe for PageError","synthetic":true,"types":["mcaptcha::errors::PageError"]},{"text":"impl UnwindSafe for CheckLogin","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLogin"]},{"text":"impl<S> UnwindSafe for CheckLoginMiddleware<S> where
    S: UnwindSafe
","synthetic":true,"types":["mcaptcha::middleware::auth::CheckLoginMiddleware"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::login::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::login::INDEX"]},{"text":"impl UnwindSafe for login","synthetic":true,"types":["mcaptcha::pages::auth::login::login"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::auth::register::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::auth::register::INDEX"]},{"text":"impl UnwindSafe for join","synthetic":true,"types":["mcaptcha::pages::auth::register::join"]},{"text":"impl<'a, K, V> UnwindSafe for SudoPage<'a, K, V> where
    K: UnwindSafe,
    V: UnwindSafe
","synthetic":true,"types":["mcaptcha::pages::auth::sudo::SudoPage"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["mcaptcha::pages::auth::routes::Auth"]},{"text":"impl UnwindSafe for Errors","synthetic":true,"types":["mcaptcha::pages::errors::routes::Errors"]},{"text":"impl<'a> UnwindSafe for ErrorPage<'a>","synthetic":true,"types":["mcaptcha::pages::errors::ErrorPage"]},{"text":"impl UnwindSafe for INTERNAL_SERVER_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::INTERNAL_SERVER_ERROR_BODY"]},{"text":"impl UnwindSafe for UNKNOWN_ERROR_BODY","synthetic":true,"types":["mcaptcha::pages::errors::UNKNOWN_ERROR_BODY"]},{"text":"impl UnwindSafe for error","synthetic":true,"types":["mcaptcha::pages::errors::error"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::notifications::IndexPage"]},{"text":"impl UnwindSafe for Notification","synthetic":true,"types":["mcaptcha::pages::panel::notifications::Notification"]},{"text":"impl UnwindSafe for notifications","synthetic":true,"types":["mcaptcha::pages::panel::notifications::notifications"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::routes::Settings"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::settings::IndexPage"]},{"text":"impl UnwindSafe for settings","synthetic":true,"types":["mcaptcha::pages::panel::settings::settings"]},{"text":"impl UnwindSafe for delete_account","synthetic":true,"types":["mcaptcha::pages::panel::settings::delete_account"]},{"text":"impl UnwindSafe for update_secret","synthetic":true,"types":["mcaptcha::pages::panel::settings::update_secret"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::INDEX"]},{"text":"impl<'a> UnwindSafe for IndexPage<'a>","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::IndexPage"]},{"text":"impl UnwindSafe for add_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::add::add_sitekey"]},{"text":"impl UnwindSafe for delete_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::delete::delete_sitekey"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::Level"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::IndexPage"]},{"text":"impl UnwindSafe for edit_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::edit::edit_sitekey"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::IndexPage"]},{"text":"impl UnwindSafe for list_sitekeys","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::list::list_sitekeys"]},{"text":"impl UnwindSafe for McaptchaConfig","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::McaptchaConfig"]},{"text":"impl UnwindSafe for Level","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::Level"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::IndexPage"]},{"text":"impl UnwindSafe for view_sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::view::view_sitekey"]},{"text":"impl UnwindSafe for Sitekey","synthetic":true,"types":["mcaptcha::pages::panel::sitekey::routes::Sitekey"]},{"text":"impl UnwindSafe for Panel","synthetic":true,"types":["mcaptcha::pages::panel::routes::Panel"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::panel::IndexPage"]},{"text":"impl UnwindSafe for panel","synthetic":true,"types":["mcaptcha::pages::panel::panel"]},{"text":"impl UnwindSafe for Routes","synthetic":true,"types":["mcaptcha::pages::routes::Routes"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::pages::sitemap::IndexPage"]},{"text":"impl UnwindSafe for INDEX","synthetic":true,"types":["mcaptcha::pages::sitemap::INDEX"]},{"text":"impl UnwindSafe for sitemap","synthetic":true,"types":["mcaptcha::pages::sitemap::sitemap"]},{"text":"impl UnwindSafe for Server","synthetic":true,"types":["mcaptcha::settings::Server"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["mcaptcha::settings::Captcha"]},{"text":"impl UnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl UnwindSafe for Smtp","synthetic":true,"types":["mcaptcha::settings::Smtp"]},{"text":"impl UnwindSafe for DatabaseBuilder","synthetic":true,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl UnwindSafe for Database","synthetic":true,"types":["mcaptcha::settings::Database"]},{"text":"impl UnwindSafe for Redis","synthetic":true,"types":["mcaptcha::settings::Redis"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["mcaptcha::settings::Settings"]},{"text":"impl UnwindSafe for FileMap","synthetic":true,"types":["mcaptcha::static_assets::filemap::FileMap"]},{"text":"impl UnwindSafe for KEY","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::KEY"]},{"text":"impl UnwindSafe for GITHUB","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::GITHUB"]},{"text":"impl UnwindSafe for HOME","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HOME"]},{"text":"impl UnwindSafe for SETTINGS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::SETTINGS_ICON"]},{"text":"impl UnwindSafe for CREDIT_CARD","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::CREDIT_CARD"]},{"text":"impl UnwindSafe for HELP_CIRCLE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::HELP_CIRCLE"]},{"text":"impl UnwindSafe for MESSAGE","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MESSAGE"]},{"text":"impl UnwindSafe for DOCS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::DOCS_ICON"]},{"text":"impl UnwindSafe for MCAPTCHA_TRANS_ICON","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::MCAPTCHA_TRANS_ICON"]},{"text":"impl UnwindSafe for BAR_CHART","synthetic":true,"types":["mcaptcha::static_assets::static_files::assets::BAR_CHART"]},{"text":"impl UnwindSafe for Asset","synthetic":true,"types":["mcaptcha::static_assets::static_files::Asset"]},{"text":"impl UnwindSafe for static_files","synthetic":true,"types":["mcaptcha::static_assets::static_files::static_files"]},{"text":"impl UnwindSafe for Favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::Favicons"]},{"text":"impl UnwindSafe for favicons","synthetic":true,"types":["mcaptcha::static_assets::static_files::favicons"]},{"text":"impl UnwindSafe for StatsUnixTimestamp","synthetic":true,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl UnwindSafe for Stats","synthetic":true,"types":["mcaptcha::stats::fetch::Stats"]},{"text":"impl UnwindSafe for StatsPayload","synthetic":true,"types":["mcaptcha::stats::fetch::StatsPayload"]},{"text":"impl UnwindSafe for Widget","synthetic":true,"types":["mcaptcha::widget::routes::Widget"]},{"text":"impl UnwindSafe for IndexPage","synthetic":true,"types":["mcaptcha::widget::IndexPage"]},{"text":"impl UnwindSafe for INDEX_PAGE","synthetic":true,"types":["mcaptcha::widget::INDEX_PAGE"]},{"text":"impl UnwindSafe for show_widget","synthetic":true,"types":["mcaptcha::widget::show_widget"]},{"text":"impl UnwindSafe for SETTINGS","synthetic":true,"types":["mcaptcha::SETTINGS"]},{"text":"impl UnwindSafe for FILES","synthetic":true,"types":["mcaptcha::FILES"]},{"text":"impl UnwindSafe for JS","synthetic":true,"types":["mcaptcha::JS"]},{"text":"impl UnwindSafe for CSS","synthetic":true,"types":["mcaptcha::CSS"]},{"text":"impl UnwindSafe for MOBILE_CSS","synthetic":true,"types":["mcaptcha::MOBILE_CSS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_JS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_JS"]},{"text":"impl UnwindSafe for VERIFICATIN_WIDGET_CSS","synthetic":true,"types":["mcaptcha::VERIFICATIN_WIDGET_CSS"]},{"text":"impl UnwindSafe for SOURCE_FILES_OF_INSTANCE","synthetic":true,"types":["mcaptcha::SOURCE_FILES_OF_INSTANCE"]}]; implementors["tests_migrate"] = [{"text":"impl UnwindSafe for Server","synthetic":true,"types":["tests_migrate::settings::Server"]},{"text":"impl UnwindSafe for Captcha","synthetic":true,"types":["tests_migrate::settings::Captcha"]},{"text":"impl UnwindSafe for DefaultDifficultyStrategy","synthetic":true,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl UnwindSafe for Smtp","synthetic":true,"types":["tests_migrate::settings::Smtp"]},{"text":"impl UnwindSafe for DatabaseBuilder","synthetic":true,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl UnwindSafe for Database","synthetic":true,"types":["tests_migrate::settings::Database"]},{"text":"impl UnwindSafe for Redis","synthetic":true,"types":["tests_migrate::settings::Redis"]},{"text":"impl UnwindSafe for Settings","synthetic":true,"types":["tests_migrate::settings::Settings"]},{"text":"impl UnwindSafe for SETTINGS","synthetic":true,"types":["tests_migrate::SETTINGS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/serde/de/trait.Deserialize.js b/implementors/serde/de/trait.Deserialize.js index ae9355cc..f11dc105 100644 --- a/implementors/serde/de/trait.Deserialize.js +++ b/implementors/serde/de/trait.Deserialize.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl<'de> Deserialize<'de> for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl<'de> Deserialize<'de> for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl<'de> Deserialize<'de> for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl<'de> Deserialize<'de> for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl<'de> Deserialize<'de> for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl<'de> Deserialize<'de> for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl<'de> Deserialize<'de> for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl<'de> Deserialize<'de> for MCaptchaID","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl<'de> Deserialize<'de> for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl<'de> Deserialize<'de> for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl<'de> Deserialize<'de> for UserProvidedTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl<'de> Deserialize<'de> for UpdateDuration","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl<'de> Deserialize<'de> for GetDurationResp","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl<'de> Deserialize<'de> for GetDuration","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl<'de> Deserialize<'de> for AddLevels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl<'de> Deserialize<'de> for UpdateLevels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl<'de> Deserialize<'de> for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl<'de> Deserialize<'de> for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Deserialize<'static> for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl<'de> Deserialize<'de> for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl<'de> Deserialize<'de> for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl<'de> Deserialize<'de> for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl<'de> Deserialize<'de> for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl<'de> Deserialize<'de> for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl<'de> Deserialize<'de> for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl<'de> Deserialize<'de> for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl<'de> Deserialize<'de> for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl<'de> Deserialize<'de> for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl<'de> Deserialize<'de> for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl<'de> Deserialize<'de> for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl<'de> Deserialize<'de> for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl<'de> Deserialize<'de> for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl<'de> Deserialize<'de> for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; +implementors["mcaptcha"] = [{"text":"impl<'de> Deserialize<'de> for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl<'de> Deserialize<'de> for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl<'de> Deserialize<'de> for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl<'de> Deserialize<'de> for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl<'de> Deserialize<'de> for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl<'de> Deserialize<'de> for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl<'de> Deserialize<'de> for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl<'de> Deserialize<'de> for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl<'de> Deserialize<'de> for CreateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl<'de> Deserialize<'de> for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl<'de> Deserialize<'de> for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl<'de> Deserialize<'de> for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl<'de> Deserialize<'de> for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl<'de> Deserialize<'de> for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl<'de> Deserialize<'de> for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl<'de> Deserialize<'de> for UpdateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Deserialize<'static> for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl<'de> Deserialize<'de> for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl<'de> Deserialize<'de> for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl<'de> Deserialize<'de> for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl<'de> Deserialize<'de> for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl<'de> Deserialize<'de> for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl<'de> Deserialize<'de> for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl<'de> Deserialize<'de> for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl<'de> Deserialize<'de> for Server","synthetic":false,"types":["mcaptcha::settings::Server"]},{"text":"impl<'de> Deserialize<'de> for Captcha","synthetic":false,"types":["mcaptcha::settings::Captcha"]},{"text":"impl<'de> Deserialize<'de> for DefaultDifficultyStrategy","synthetic":false,"types":["mcaptcha::settings::DefaultDifficultyStrategy"]},{"text":"impl<'de> Deserialize<'de> for Smtp","synthetic":false,"types":["mcaptcha::settings::Smtp"]},{"text":"impl<'de> Deserialize<'de> for DatabaseBuilder","synthetic":false,"types":["mcaptcha::settings::DatabaseBuilder"]},{"text":"impl<'de> Deserialize<'de> for Database","synthetic":false,"types":["mcaptcha::settings::Database"]},{"text":"impl<'de> Deserialize<'de> for Redis","synthetic":false,"types":["mcaptcha::settings::Redis"]},{"text":"impl<'de> Deserialize<'de> for Settings","synthetic":false,"types":["mcaptcha::settings::Settings"]},{"text":"impl<'de> Deserialize<'de> for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl<'de> Deserialize<'de> for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; implementors["tests_migrate"] = [{"text":"impl<'de> Deserialize<'de> for Server","synthetic":false,"types":["tests_migrate::settings::Server"]},{"text":"impl<'de> Deserialize<'de> for Captcha","synthetic":false,"types":["tests_migrate::settings::Captcha"]},{"text":"impl<'de> Deserialize<'de> for DefaultDifficultyStrategy","synthetic":false,"types":["tests_migrate::settings::DefaultDifficultyStrategy"]},{"text":"impl<'de> Deserialize<'de> for Smtp","synthetic":false,"types":["tests_migrate::settings::Smtp"]},{"text":"impl<'de> Deserialize<'de> for DatabaseBuilder","synthetic":false,"types":["tests_migrate::settings::DatabaseBuilder"]},{"text":"impl<'de> Deserialize<'de> for Database","synthetic":false,"types":["tests_migrate::settings::Database"]},{"text":"impl<'de> Deserialize<'de> for Redis","synthetic":false,"types":["tests_migrate::settings::Redis"]},{"text":"impl<'de> Deserialize<'de> for Settings","synthetic":false,"types":["tests_migrate::settings::Settings"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/serde/ser/trait.Serialize.js b/implementors/serde/ser/trait.Serialize.js index a6d0bb9c..fe98bd45 100644 --- a/implementors/serde/ser/trait.Serialize.js +++ b/implementors/serde/ser/trait.Serialize.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["mcaptcha"] = [{"text":"impl Serialize for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Serialize for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Serialize for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Serialize for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Serialize for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Serialize for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Serialize for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Serialize for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Serialize for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Serialize for MCaptchaID","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID"]},{"text":"impl Serialize for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails"]},{"text":"impl Serialize for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::StatsPayload"]},{"text":"impl Serialize for UserProvidedTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern"]},{"text":"impl Serialize for UpdateDuration","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::UpdateDuration"]},{"text":"impl Serialize for GetDurationResp","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDurationResp"]},{"text":"impl Serialize for GetDuration","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::duration::GetDuration"]},{"text":"impl Serialize for AddLevels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::AddLevels"]},{"text":"impl Serialize for UpdateLevels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::UpdateLevels"]},{"text":"impl Serialize for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::Levels"]},{"text":"impl Serialize for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::levels::I32Levels"]},{"text":"impl Serialize for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Serialize for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Serialize for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Serialize for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Serialize for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Serialize for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Serialize for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Serialize for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Serialize for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; +implementors["mcaptcha"] = [{"text":"impl Serialize for Email","synthetic":false,"types":["mcaptcha::api::v1::account::email::Email"]},{"text":"impl Serialize for ChangePasswordReqest","synthetic":false,"types":["mcaptcha::api::v1::account::password::ChangePasswordReqest"]},{"text":"impl Serialize for Secret","synthetic":false,"types":["mcaptcha::api::v1::account::secret::Secret"]},{"text":"impl Serialize for Username","synthetic":false,"types":["mcaptcha::api::v1::account::username::Username"]},{"text":"impl Serialize for AccountCheckPayload","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckPayload"]},{"text":"impl Serialize for AccountCheckResp","synthetic":false,"types":["mcaptcha::api::v1::account::AccountCheckResp"]},{"text":"impl Serialize for Register","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Register"]},{"text":"impl Serialize for Login","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Login"]},{"text":"impl Serialize for Password","synthetic":false,"types":["mcaptcha::api::v1::auth::runners::Password"]},{"text":"impl Serialize for CreateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::CreateCaptcha"]},{"text":"impl Serialize for MCaptchaDetails","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails"]},{"text":"impl Serialize for DeleteCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha"]},{"text":"impl Serialize for TrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::TrafficPattern"]},{"text":"impl Serialize for UpdateTrafficPattern","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern"]},{"text":"impl Serialize for Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::Levels"]},{"text":"impl Serialize for I32Levels","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::get::I32Levels"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::stats::StatsPayload"]},{"text":"impl Serialize for UpdateCaptcha","synthetic":false,"types":["mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha"]},{"text":"impl Serialize for BuildDetails","synthetic":false,"types":["mcaptcha::api::v1::meta::BuildDetails"]},{"text":"impl Serialize for Health","synthetic":false,"types":["mcaptcha::api::v1::meta::Health"]},{"text":"impl Serialize for AddNotification","synthetic":false,"types":["mcaptcha::api::v1::notifications::add::AddNotification"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::get::NotificationResp"]},{"text":"impl Serialize for MarkReadReq","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::MarkReadReq"]},{"text":"impl Serialize for NotificationResp","synthetic":false,"types":["mcaptcha::api::v1::notifications::mark_read::NotificationResp"]},{"text":"impl Serialize for GetConfigPayload","synthetic":false,"types":["mcaptcha::api::v1::pow::get_config::GetConfigPayload"]},{"text":"impl Serialize for ValidationToken","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_pow::ValidationToken"]},{"text":"impl Serialize for CaptchaValidateResp","synthetic":false,"types":["mcaptcha::api::v1::pow::verify_token::CaptchaValidateResp"]},{"text":"impl Serialize for ErrorToResponse","synthetic":false,"types":["mcaptcha::errors::ErrorToResponse"]},{"text":"impl Serialize for StatsUnixTimestamp","synthetic":false,"types":["mcaptcha::stats::fetch::StatsUnixTimestamp"]},{"text":"impl Serialize for StatsPayload","synthetic":false,"types":["mcaptcha::stats::fetch::StatsPayload"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/mcaptcha/all.html b/mcaptcha/all.html index a19bc8bf..b6f90b7c 100644 --- a/mcaptcha/all.html +++ b/mcaptcha/all.html @@ -1,5 +1,5 @@ List of all items in this crate

List of all items[] -

Structs

Enums

Macros

Functions

Typedefs

Constants

+

Structs

Enums

Macros

Functions

Typedefs

Constants

\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/fn.services.html b/mcaptcha/api/v1/mcaptcha/captcha/fn.services.html deleted file mode 100644 index bc2c681d..00000000 --- a/mcaptcha/api/v1/mcaptcha/captcha/fn.services.html +++ /dev/null @@ -1,3 +0,0 @@ -services in mcaptcha::api::v1::mcaptcha::captcha - Rust

Function mcaptcha::api::v1::mcaptcha::captcha::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/fn.update_token_helper.html b/mcaptcha/api/v1/mcaptcha/captcha/fn.update_token_helper.html deleted file mode 100644 index 01d515d7..00000000 --- a/mcaptcha/api/v1/mcaptcha/captcha/fn.update_token_helper.html +++ /dev/null @@ -1,3 +0,0 @@ -update_token_helper in mcaptcha::api::v1::mcaptcha::captcha - Rust

Function mcaptcha::api::v1::mcaptcha::captcha::update_token_helper[][src]

async fn update_token_helper(
    key: &str,
    old_key: &str,
    username: &str,
    data: &AppData
) -> Result<(), Error>
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/index.html b/mcaptcha/api/v1/mcaptcha/captcha/index.html deleted file mode 100644 index 79eaa6ca..00000000 --- a/mcaptcha/api/v1/mcaptcha/captcha/index.html +++ /dev/null @@ -1,6 +0,0 @@ -mcaptcha::api::v1::mcaptcha::captcha - Rust

Module mcaptcha::api::v1::mcaptcha::captcha[][src]

Modules

-

Structs

-

Functions

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/routes/index.html b/mcaptcha/api/v1/mcaptcha/captcha/routes/index.html deleted file mode 100644 index df53b24d..00000000 --- a/mcaptcha/api/v1/mcaptcha/captcha/routes/index.html +++ /dev/null @@ -1,4 +0,0 @@ -mcaptcha::api::v1::mcaptcha::captcha::routes - Rust

Module mcaptcha::api::v1::mcaptcha::captcha::routes[][src]

Structs

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/routes/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/captcha/routes/sidebar-items.js deleted file mode 100644 index eb3941e9..00000000 --- a/mcaptcha/api/v1/mcaptcha/captcha/routes/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["MCaptcha",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/captcha/sidebar-items.js deleted file mode 100644 index 7c8f5dab..00000000 --- a/mcaptcha/api/v1/mcaptcha/captcha/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["services",""],["update_token_helper",""]],"mod":[["routes",""]],"struct":[["DeleteCaptcha",""],["MCaptchaDetails",""],["MCaptchaID",""],["StatsPayload",""],["UserProvidedTrafficPattern",""],["delete_mcaptcha",""],["from_user_provided_traffic_pattern",""],["get_stats",""],["update_token",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.get_stats.html b/mcaptcha/api/v1/mcaptcha/captcha/struct.get_stats.html deleted file mode 100644 index 52a6dc05..00000000 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.get_stats.html +++ /dev/null @@ -1,21 +0,0 @@ -get_stats in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::get_stats[][src]

pub struct get_stats;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/index.html b/mcaptcha/api/v1/mcaptcha/create/index.html new file mode 100644 index 00000000..8b9dc9e9 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/create/index.html @@ -0,0 +1,5 @@ +mcaptcha::api::v1::mcaptcha::create - Rust

Module mcaptcha::api::v1::mcaptcha::create[][src]

Modules

+

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html b/mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html new file mode 100644 index 00000000..a9a1c9a5 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/create/runner/fn.create.html @@ -0,0 +1,3 @@ +create in mcaptcha::api::v1::mcaptcha::create::runner - Rust

Function mcaptcha::api::v1::mcaptcha::create::runner::create[][src]

pub async fn create(
    payload: &CreateCaptcha,
    data: &AppData,
    username: &str
) -> Result<MCaptchaDetails, ServiceError>
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/runner/index.html b/mcaptcha/api/v1/mcaptcha/create/runner/index.html new file mode 100644 index 00000000..5ac125c4 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/create/runner/index.html @@ -0,0 +1,4 @@ +mcaptcha::api::v1::mcaptcha::create::runner - Rust

Module mcaptcha::api::v1::mcaptcha::create::runner[][src]

Functions

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/runner/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/create/runner/sidebar-items.js new file mode 100644 index 00000000..32536341 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/create/runner/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["create",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/create/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/create/sidebar-items.js new file mode 100644 index 00000000..3f74bc28 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/create/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["runner",""]],"struct":[["CreateCaptcha",""],["MCaptchaDetails",""],["create",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/struct.AddLevels.html b/mcaptcha/api/v1/mcaptcha/create/struct.CreateCaptcha.html similarity index 65% rename from mcaptcha/api/v1/mcaptcha/levels/struct.AddLevels.html rename to mcaptcha/api/v1/mcaptcha/create/struct.CreateCaptcha.html index 229dd16f..fde92440 100644 --- a/mcaptcha/api/v1/mcaptcha/levels/struct.AddLevels.html +++ b/mcaptcha/api/v1/mcaptcha/create/struct.CreateCaptcha.html @@ -1,10 +1,10 @@ -AddLevels in mcaptcha::api::v1::mcaptcha::levels - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::AddLevels[][src]

pub struct AddLevels {
+CreateCaptcha in mcaptcha::api::v1::mcaptcha::create - Rust

Struct mcaptcha::api::v1::mcaptcha::create::CreateCaptcha[][src]

pub struct CreateCaptcha {
     pub levels: Vec<Level>,
     pub duration: u32,
     pub description: String,
-}

Fields

levels: Vec<Level>duration: u32description: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

levels: Vec<Level>duration: u32description: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.MCaptchaDetails.html b/mcaptcha/api/v1/mcaptcha/create/struct.MCaptchaDetails.html similarity index 64% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.MCaptchaDetails.html rename to mcaptcha/api/v1/mcaptcha/create/struct.MCaptchaDetails.html index a8c0a0f9..261916c6 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.MCaptchaDetails.html +++ b/mcaptcha/api/v1/mcaptcha/create/struct.MCaptchaDetails.html @@ -1,12 +1,12 @@ -MCaptchaDetails in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::MCaptchaDetails[][src]

pub struct MCaptchaDetails {
+MCaptchaDetails in mcaptcha::api::v1::mcaptcha::create - Rust

Struct mcaptcha::api::v1::mcaptcha::create::MCaptchaDetails[][src]

pub struct MCaptchaDetails {
     pub name: String,
     pub key: String,
-}

Fields

name: Stringkey: String

Trait Implementations

Returns a copy of the value. Read more

+}

Fields

name: Stringkey: String

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.update_token.html b/mcaptcha/api/v1/mcaptcha/create/struct.create.html similarity index 65% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.update_token.html rename to mcaptcha/api/v1/mcaptcha/create/struct.create.html index dd8c61ea..3934e938 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.update_token.html +++ b/mcaptcha/api/v1/mcaptcha/create/struct.create.html @@ -1,4 +1,4 @@ -update_token in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::update_token[][src]

pub struct update_token;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+create in mcaptcha::api::v1::mcaptcha::create - Rust

Struct mcaptcha::api::v1::mcaptcha::create::create[][src]

pub struct create;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/delete/index.html b/mcaptcha/api/v1/mcaptcha/delete/index.html new file mode 100644 index 00000000..c71d40a1 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/delete/index.html @@ -0,0 +1,4 @@ +mcaptcha::api::v1::mcaptcha::delete - Rust

Module mcaptcha::api::v1::mcaptcha::delete[][src]

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/delete/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/delete/sidebar-items.js new file mode 100644 index 00000000..1f191404 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/delete/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["DeleteCaptcha",""],["delete",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.StatsPayload.html b/mcaptcha/api/v1/mcaptcha/delete/struct.DeleteCaptcha.html similarity index 62% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.StatsPayload.html rename to mcaptcha/api/v1/mcaptcha/delete/struct.DeleteCaptcha.html index 41241936..12380453 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.StatsPayload.html +++ b/mcaptcha/api/v1/mcaptcha/delete/struct.DeleteCaptcha.html @@ -1,11 +1,12 @@ -StatsPayload in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::StatsPayload[][src]

pub struct StatsPayload {
+DeleteCaptcha in mcaptcha::api::v1::mcaptcha::delete - Rust

Struct mcaptcha::api::v1::mcaptcha::delete::DeleteCaptcha[][src]

pub struct DeleteCaptcha {
     pub key: String,
-}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

+ pub password: String, +}

Fields

key: Stringpassword: String

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/captcha/routes/struct.MCaptcha.html b/mcaptcha/api/v1/mcaptcha/delete/struct.delete.html similarity index 65% rename from mcaptcha/api/v1/mcaptcha/captcha/routes/struct.MCaptcha.html rename to mcaptcha/api/v1/mcaptcha/delete/struct.delete.html index 42a79924..0546b7fd 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/routes/struct.MCaptcha.html +++ b/mcaptcha/api/v1/mcaptcha/delete/struct.delete.html @@ -1,9 +1,4 @@ -MCaptcha in mcaptcha::api::v1::mcaptcha::captcha::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::routes::MCaptcha[][src]

pub struct MCaptcha {
-    pub delete: &'static str,
-    pub update_key: &'static str,
-    pub stats: &'static str,
-    pub user_provided_traffic_pattern: &'static str,
-}

Fields

delete: &'static strupdate_key: &'static strstats: &'static struser_provided_traffic_pattern: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+delete in mcaptcha::api::v1::mcaptcha::delete - Rust

Struct mcaptcha::api::v1::mcaptcha::delete::delete[][src]

pub struct delete;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

@@ -21,6 +16,6 @@ WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

-
- +
+ \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/fn.services.html b/mcaptcha/api/v1/mcaptcha/duration/fn.services.html deleted file mode 100644 index c70afcde..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/fn.services.html +++ /dev/null @@ -1,3 +0,0 @@ -services in mcaptcha::api::v1::mcaptcha::duration - Rust

Function mcaptcha::api::v1::mcaptcha::duration::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/index.html b/mcaptcha/api/v1/mcaptcha/duration/index.html deleted file mode 100644 index 7d614e1b..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/index.html +++ /dev/null @@ -1,6 +0,0 @@ -mcaptcha::api::v1::mcaptcha::duration - Rust

Module mcaptcha::api::v1::mcaptcha::duration[][src]

Modules

-

Structs

-

Functions

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/routes/index.html b/mcaptcha/api/v1/mcaptcha/duration/routes/index.html deleted file mode 100644 index c3fb0cb1..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/routes/index.html +++ /dev/null @@ -1,4 +0,0 @@ -mcaptcha::api::v1::mcaptcha::duration::routes - Rust

Module mcaptcha::api::v1::mcaptcha::duration::routes[][src]

Structs

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/routes/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/duration/routes/sidebar-items.js deleted file mode 100644 index 1cea663b..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/routes/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["Duration",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/duration/sidebar-items.js deleted file mode 100644 index de7dd347..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["services",""]],"mod":[["routes",""]],"struct":[["GetDuration",""],["GetDurationResp",""],["UpdateDuration",""],["get_duration",""],["update_duration",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/struct.GetDuration.html b/mcaptcha/api/v1/mcaptcha/duration/struct.GetDuration.html deleted file mode 100644 index ff240e10..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/struct.GetDuration.html +++ /dev/null @@ -1,25 +0,0 @@ -GetDuration in mcaptcha::api::v1::mcaptcha::duration - Rust

Struct mcaptcha::api::v1::mcaptcha::duration::GetDuration[][src]

pub struct GetDuration {
-    pub token: String,
-}

Fields

token: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/struct.GetDurationResp.html b/mcaptcha/api/v1/mcaptcha/duration/struct.GetDurationResp.html deleted file mode 100644 index 8e61dfb9..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/struct.GetDurationResp.html +++ /dev/null @@ -1,25 +0,0 @@ -GetDurationResp in mcaptcha::api::v1::mcaptcha::duration - Rust

Struct mcaptcha::api::v1::mcaptcha::duration::GetDurationResp[][src]

pub struct GetDurationResp {
-    pub duration: i32,
-}

Fields

duration: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/struct.UpdateDuration.html b/mcaptcha/api/v1/mcaptcha/duration/struct.UpdateDuration.html deleted file mode 100644 index d67a4073..00000000 --- a/mcaptcha/api/v1/mcaptcha/duration/struct.UpdateDuration.html +++ /dev/null @@ -1,26 +0,0 @@ -UpdateDuration in mcaptcha::api::v1::mcaptcha::duration - Rust

Struct mcaptcha::api::v1::mcaptcha::duration::UpdateDuration[][src]

pub struct UpdateDuration {
-    pub key: String,
-    pub duration: i32,
-}

Fields

key: Stringduration: i32

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/fn.services.html b/mcaptcha/api/v1/mcaptcha/easy/fn.services.html new file mode 100644 index 00000000..fb8f6fb9 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/easy/fn.services.html @@ -0,0 +1,3 @@ +services in mcaptcha::api::v1::mcaptcha::easy - Rust

Function mcaptcha::api::v1::mcaptcha::easy::services[][src]

pub fn services(cfg: &mut ServiceConfig)
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/index.html b/mcaptcha/api/v1/mcaptcha/easy/index.html new file mode 100644 index 00000000..134fe727 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/easy/index.html @@ -0,0 +1,6 @@ +mcaptcha::api::v1::mcaptcha::easy - Rust

Module mcaptcha::api::v1::mcaptcha::easy[][src]

Modules

+

Structs

+

Functions

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/routes/index.html b/mcaptcha/api/v1/mcaptcha/easy/routes/index.html new file mode 100644 index 00000000..45fd11d4 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/easy/routes/index.html @@ -0,0 +1,4 @@ +mcaptcha::api::v1::mcaptcha::easy::routes - Rust

Module mcaptcha::api::v1::mcaptcha::easy::routes[][src]

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/easy/routes/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/easy/routes/sidebar-items.js new file mode 100644 index 00000000..e145f007 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/easy/routes/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Easy",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/routes/struct.Duration.html b/mcaptcha/api/v1/mcaptcha/easy/routes/struct.Easy.html similarity index 67% rename from mcaptcha/api/v1/mcaptcha/duration/routes/struct.Duration.html rename to mcaptcha/api/v1/mcaptcha/easy/routes/struct.Easy.html index 58c14f55..8a4398be 100644 --- a/mcaptcha/api/v1/mcaptcha/duration/routes/struct.Duration.html +++ b/mcaptcha/api/v1/mcaptcha/easy/routes/struct.Easy.html @@ -1,7 +1,8 @@ -Duration in mcaptcha::api::v1::mcaptcha::duration::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::duration::routes::Duration[][src]

pub struct Duration {
+Easy in mcaptcha::api::v1::mcaptcha::easy::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::routes::Easy[][src]

pub struct Easy {
+    pub create: &'static str,
     pub update: &'static str,
-    pub get: &'static str,
-}

Fields

update: &'static strget: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

create: &'static str

easy is using defaults

+
update: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/easy/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/easy/sidebar-items.js new file mode 100644 index 00000000..4425a4c3 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/easy/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["services",""]],"mod":[["routes",""]],"struct":[["TrafficPattern",""],["UpdateTrafficPattern",""],["create",""],["update",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.DeleteCaptcha.html b/mcaptcha/api/v1/mcaptcha/easy/struct.TrafficPattern.html similarity index 65% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.DeleteCaptcha.html rename to mcaptcha/api/v1/mcaptcha/easy/struct.TrafficPattern.html index f95acb6d..d6c43d4a 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.DeleteCaptcha.html +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.TrafficPattern.html @@ -1,12 +1,14 @@ -DeleteCaptcha in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::DeleteCaptcha[][src]

pub struct DeleteCaptcha {
-    pub key: String,
-    pub password: String,
-}

Fields

key: Stringpassword: String

Trait Implementations

Returns a copy of the value. Read more

+TrafficPattern in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::TrafficPattern[][src]

pub struct TrafficPattern {
+    pub avg_traffic: u32,
+    pub peak_sustainable_traffic: u32,
+    pub broke_my_site_traffic: Option<u32>,
+    pub description: String,
+}

Fields

avg_traffic: u32peak_sustainable_traffic: u32broke_my_site_traffic: Option<u32>description: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html b/mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html new file mode 100644 index 00000000..63da29b0 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.UpdateTrafficPattern.html @@ -0,0 +1,33 @@ +UpdateTrafficPattern in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::UpdateTrafficPattern[][src]

pub struct UpdateTrafficPattern {
+    pub pattern: TrafficPattern,
+    pub key: String,
+}

Fields

pattern: TrafficPatternkey: String

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Performs the conversion.

+

Should always be Self

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/routes/struct.Levels.html b/mcaptcha/api/v1/mcaptcha/easy/struct.create.html similarity index 67% rename from mcaptcha/api/v1/mcaptcha/levels/routes/struct.Levels.html rename to mcaptcha/api/v1/mcaptcha/easy/struct.create.html index 0271fd77..e6ee90ba 100644 --- a/mcaptcha/api/v1/mcaptcha/levels/routes/struct.Levels.html +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.create.html @@ -1,8 +1,4 @@ -Levels in mcaptcha::api::v1::mcaptcha::levels::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::routes::Levels[][src]

pub struct Levels {
-    pub add: &'static str,
-    pub get: &'static str,
-    pub update: &'static str,
-}

Fields

add: &'static strget: &'static strupdate: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+create in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::create[][src]

pub struct create;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

@@ -20,6 +16,6 @@ WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

-
- +
+ \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/struct.get_duration.html b/mcaptcha/api/v1/mcaptcha/easy/struct.update.html similarity index 70% rename from mcaptcha/api/v1/mcaptcha/duration/struct.get_duration.html rename to mcaptcha/api/v1/mcaptcha/easy/struct.update.html index 7c61adb3..9fa0652d 100644 --- a/mcaptcha/api/v1/mcaptcha/duration/struct.get_duration.html +++ b/mcaptcha/api/v1/mcaptcha/easy/struct.update.html @@ -1,4 +1,4 @@ -get_duration in mcaptcha::api::v1::mcaptcha::duration - Rust

Struct mcaptcha::api::v1::mcaptcha::duration::get_duration[][src]

pub struct get_duration;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+update in mcaptcha::api::v1::mcaptcha::easy - Rust

Struct mcaptcha::api::v1::mcaptcha::easy::update[][src]

pub struct update;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/fn.get_random.html b/mcaptcha/api/v1/mcaptcha/fn.get_random.html index 39eaf963..69029c42 100644 --- a/mcaptcha/api/v1/mcaptcha/fn.get_random.html +++ b/mcaptcha/api/v1/mcaptcha/fn.get_random.html @@ -1,3 +1,3 @@ -get_random in mcaptcha::api::v1::mcaptcha - Rust

Function mcaptcha::api::v1::mcaptcha::get_random[][src]

pub fn get_random(len: usize) -> String
+get_random in mcaptcha::api::v1::mcaptcha - Rust

Function mcaptcha::api::v1::mcaptcha::get_random[][src]

pub fn get_random(len: usize) -> String
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/fn.services.html b/mcaptcha/api/v1/mcaptcha/fn.services.html index 28b576f7..8867f043 100644 --- a/mcaptcha/api/v1/mcaptcha/fn.services.html +++ b/mcaptcha/api/v1/mcaptcha/fn.services.html @@ -1,3 +1,3 @@ -services in mcaptcha::api::v1::mcaptcha - Rust

Function mcaptcha::api::v1::mcaptcha::services[][src]

pub fn services(cfg: &mut ServiceConfig)
+services in mcaptcha::api::v1::mcaptcha - Rust

Function mcaptcha::api::v1::mcaptcha::services[][src]

pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/index.html b/mcaptcha/api/v1/mcaptcha/get/index.html new file mode 100644 index 00000000..75b181d3 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/get/index.html @@ -0,0 +1,5 @@ +mcaptcha::api::v1::mcaptcha::get - Rust

Module mcaptcha::api::v1::mcaptcha::get[][src]

Modules

+

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html b/mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html new file mode 100644 index 00000000..1cdb790d --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/get/runner/fn.get_captcha.html @@ -0,0 +1,3 @@ +get_captcha in mcaptcha::api::v1::mcaptcha::get::runner - Rust

Function mcaptcha::api::v1::mcaptcha::get::runner::get_captcha[][src]

pub async fn get_captcha(
    key: &str,
    username: &str,
    data: &AppData
) -> Result<Vec<I32Levels>, ServiceError>
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/runner/index.html b/mcaptcha/api/v1/mcaptcha/get/runner/index.html new file mode 100644 index 00000000..74219cc1 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/get/runner/index.html @@ -0,0 +1,4 @@ +mcaptcha::api::v1::mcaptcha::get::runner - Rust

Module mcaptcha::api::v1::mcaptcha::get::runner[][src]

Functions

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/runner/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/get/runner/sidebar-items.js new file mode 100644 index 00000000..9042fe85 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/get/runner/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["get_captcha",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/get/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/get/sidebar-items.js new file mode 100644 index 00000000..3bb6f411 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/get/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["runner",""]],"struct":[["I32Levels",""],["Levels",""],["get_captcha",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/struct.I32Levels.html b/mcaptcha/api/v1/mcaptcha/get/struct.I32Levels.html similarity index 64% rename from mcaptcha/api/v1/mcaptcha/levels/struct.I32Levels.html rename to mcaptcha/api/v1/mcaptcha/get/struct.I32Levels.html index 3fe148a6..2aaf824f 100644 --- a/mcaptcha/api/v1/mcaptcha/levels/struct.I32Levels.html +++ b/mcaptcha/api/v1/mcaptcha/get/struct.I32Levels.html @@ -1,12 +1,12 @@ -I32Levels in mcaptcha::api::v1::mcaptcha::levels - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::I32Levels[][src]

pub struct I32Levels {
+I32Levels in mcaptcha::api::v1::mcaptcha::get - Rust

Struct mcaptcha::api::v1::mcaptcha::get::I32Levels[][src]

pub struct I32Levels {
     pub difficulty_factor: i32,
     pub visitor_threshold: i32,
-}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

+}

Fields

difficulty_factor: i32visitor_threshold: i32

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.UserProvidedTrafficPattern.html b/mcaptcha/api/v1/mcaptcha/get/struct.Levels.html similarity index 64% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.UserProvidedTrafficPattern.html rename to mcaptcha/api/v1/mcaptcha/get/struct.Levels.html index afbaf475..740a6b62 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.UserProvidedTrafficPattern.html +++ b/mcaptcha/api/v1/mcaptcha/get/struct.Levels.html @@ -1,14 +1,11 @@ -UserProvidedTrafficPattern in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::UserProvidedTrafficPattern[][src]

pub struct UserProvidedTrafficPattern {
-    pub avg_traffic: u32,
-    pub peak_sustainable_traffic: u32,
-    pub broke_my_site_traffic: Option<u32>,
-    pub description: String,
-}

Fields

avg_traffic: u32peak_sustainable_traffic: u32broke_my_site_traffic: Option<u32>description: String

Implementations

Trait Implementations

Returns a copy of the value. Read more

+Levels in mcaptcha::api::v1::mcaptcha::get - Rust

Struct mcaptcha::api::v1::mcaptcha::get::Levels[][src]

pub struct Levels {
+    levels: I32Levels,
+}

Fields

levels: I32Levels

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/levels/struct.get_levels.html b/mcaptcha/api/v1/mcaptcha/get/struct.get_captcha.html similarity index 69% rename from mcaptcha/api/v1/mcaptcha/levels/struct.get_levels.html rename to mcaptcha/api/v1/mcaptcha/get/struct.get_captcha.html index 7ea850e6..1f42b0a0 100644 --- a/mcaptcha/api/v1/mcaptcha/levels/struct.get_levels.html +++ b/mcaptcha/api/v1/mcaptcha/get/struct.get_captcha.html @@ -1,4 +1,4 @@ -get_levels in mcaptcha::api::v1::mcaptcha::levels - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::get_levels[][src]

pub struct get_levels;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+get_captcha in mcaptcha::api::v1::mcaptcha::get - Rust

Struct mcaptcha::api::v1::mcaptcha::get::get_captcha[][src]

pub struct get_captcha;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/index.html b/mcaptcha/api/v1/mcaptcha/index.html index 974d8ad1..a7f630a4 100644 --- a/mcaptcha/api/v1/mcaptcha/index.html +++ b/mcaptcha/api/v1/mcaptcha/index.html @@ -1,5 +1,5 @@ -mcaptcha::api::v1::mcaptcha - Rust

Module mcaptcha::api::v1::mcaptcha[][src]

Modules

-

Functions

+mcaptcha::api::v1::mcaptcha - Rust

Module mcaptcha::api::v1::mcaptcha[][src]

Modules

+

Functions

\ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/fn.add_captcha_runner.html b/mcaptcha/api/v1/mcaptcha/levels/fn.add_captcha_runner.html deleted file mode 100644 index d9d8d55f..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/fn.add_captcha_runner.html +++ /dev/null @@ -1,3 +0,0 @@ -add_captcha_runner in mcaptcha::api::v1::mcaptcha::levels - Rust

Function mcaptcha::api::v1::mcaptcha::levels::add_captcha_runner[][src]

pub async fn add_captcha_runner(
    payload: &AddLevels,
    data: &AppData,
    username: &str
) -> Result<MCaptchaDetails, ServiceError>
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/fn.get_levels_util.html b/mcaptcha/api/v1/mcaptcha/levels/fn.get_levels_util.html deleted file mode 100644 index 98f75570..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/fn.get_levels_util.html +++ /dev/null @@ -1,3 +0,0 @@ -get_levels_util in mcaptcha::api::v1::mcaptcha::levels - Rust

Function mcaptcha::api::v1::mcaptcha::levels::get_levels_util[][src]

async fn get_levels_util(
    key: &str,
    username: &str,
    data: &AppData
) -> Result<Vec<I32Levels>, ServiceError>
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/fn.services.html b/mcaptcha/api/v1/mcaptcha/levels/fn.services.html deleted file mode 100644 index 1e7a1476..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/fn.services.html +++ /dev/null @@ -1,3 +0,0 @@ -services in mcaptcha::api::v1::mcaptcha::levels - Rust

Function mcaptcha::api::v1::mcaptcha::levels::services[][src]

pub fn services(cfg: &mut ServiceConfig)
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/index.html b/mcaptcha/api/v1/mcaptcha/levels/index.html deleted file mode 100644 index 59f84f77..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/index.html +++ /dev/null @@ -1,6 +0,0 @@ -mcaptcha::api::v1::mcaptcha::levels - Rust

Module mcaptcha::api::v1::mcaptcha::levels[][src]

Modules

-

Structs

-

Functions

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/routes/index.html b/mcaptcha/api/v1/mcaptcha/levels/routes/index.html deleted file mode 100644 index 9902c03e..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/routes/index.html +++ /dev/null @@ -1,4 +0,0 @@ -mcaptcha::api::v1::mcaptcha::levels::routes - Rust

Module mcaptcha::api::v1::mcaptcha::levels::routes[][src]

Structs

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/routes/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/levels/routes/sidebar-items.js deleted file mode 100644 index 8bdc79fc..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/routes/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["Levels",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/levels/sidebar-items.js deleted file mode 100644 index 7a426415..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["add_captcha_runner",""],["get_levels_util",""],["services",""]],"mod":[["routes",""]],"struct":[["AddLevels",""],["I32Levels",""],["Levels",""],["UpdateLevels",""],["add_levels",""],["get_levels",""],["update_levels",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/struct.Levels.html b/mcaptcha/api/v1/mcaptcha/levels/struct.Levels.html deleted file mode 100644 index f34e6b8e..00000000 --- a/mcaptcha/api/v1/mcaptcha/levels/struct.Levels.html +++ /dev/null @@ -1,32 +0,0 @@ -Levels in mcaptcha::api::v1::mcaptcha::levels - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::Levels[][src]

pub struct Levels {
-    levels: I32Levels,
-}

Fields

levels: I32Levels

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more

-

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

-

Performs the conversion.

-

Should always be Self

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

-

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more

-

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more

-
- - \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/routes/index.html b/mcaptcha/api/v1/mcaptcha/routes/index.html new file mode 100644 index 00000000..cc3721fb --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/routes/index.html @@ -0,0 +1,4 @@ +mcaptcha::api::v1::mcaptcha::routes - Rust

Module mcaptcha::api::v1::mcaptcha::routes[][src]

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/routes/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/routes/sidebar-items.js new file mode 100644 index 00000000..eea3721e --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/routes/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Captcha",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html b/mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html new file mode 100644 index 00000000..e3d3c155 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/routes/struct.Captcha.html @@ -0,0 +1,29 @@ +Captcha in mcaptcha::api::v1::mcaptcha::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::routes::Captcha[][src]

pub struct Captcha {
+    pub create: &'static str,
+    pub update: &'static str,
+    pub get: &'static str,
+    pub delete: &'static str,
+    pub update_key: &'static str,
+    pub easy: Easy,
+    pub stats: Stats,
+}

Fields

create: &'static strupdate: &'static strget: &'static strdelete: &'static strupdate_key: &'static streasy: Easystats: Stats

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more

+

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more

+

Performs the conversion.

+

Should always be Self

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more

+

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/sidebar-items.js index 8cec29dd..522ab502 100644 --- a/mcaptcha/api/v1/mcaptcha/sidebar-items.js +++ b/mcaptcha/api/v1/mcaptcha/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"fn":[["get_random",""],["services",""]],"mod":[["captcha",""],["duration",""],["levels",""]]}); \ No newline at end of file +initSidebarItems({"fn":[["get_random",""],["services",""]],"mod":[["create",""],["delete",""],["easy",""],["get",""],["routes",""],["stats",""],["update",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/index.html b/mcaptcha/api/v1/mcaptcha/stats/index.html new file mode 100644 index 00000000..e6ef8d79 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/stats/index.html @@ -0,0 +1,5 @@ +mcaptcha::api::v1::mcaptcha::stats - Rust

Module mcaptcha::api::v1::mcaptcha::stats[][src]

Modules

+

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/routes/index.html b/mcaptcha/api/v1/mcaptcha/stats/routes/index.html new file mode 100644 index 00000000..502d4ad4 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/stats/routes/index.html @@ -0,0 +1,4 @@ +mcaptcha::api::v1::mcaptcha::stats::routes - Rust

Module mcaptcha::api::v1::mcaptcha::stats::routes[][src]

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/routes/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/stats/routes/sidebar-items.js new file mode 100644 index 00000000..7db65c03 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/stats/routes/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Stats",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/duration/struct.update_duration.html b/mcaptcha/api/v1/mcaptcha/stats/routes/struct.Stats.html similarity index 65% rename from mcaptcha/api/v1/mcaptcha/duration/struct.update_duration.html rename to mcaptcha/api/v1/mcaptcha/stats/routes/struct.Stats.html index 29d22b9c..6f4e0db7 100644 --- a/mcaptcha/api/v1/mcaptcha/duration/struct.update_duration.html +++ b/mcaptcha/api/v1/mcaptcha/stats/routes/struct.Stats.html @@ -1,4 +1,6 @@ -update_duration in mcaptcha::api::v1::mcaptcha::duration - Rust

Struct mcaptcha::api::v1::mcaptcha::duration::update_duration[][src]

pub struct update_duration;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+Stats in mcaptcha::api::v1::mcaptcha::stats::routes - Rust

Struct mcaptcha::api::v1::mcaptcha::stats::routes::Stats[][src]

pub struct Stats {
+    pub get: &'static str,
+}

Fields

get: &'static str

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

@@ -16,6 +18,6 @@ WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

-
- +
+ \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/stats/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/stats/sidebar-items.js new file mode 100644 index 00000000..e2d076c5 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/stats/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["routes",""]],"struct":[["StatsPayload",""],["get",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.MCaptchaID.html b/mcaptcha/api/v1/mcaptcha/stats/struct.StatsPayload.html similarity index 67% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.MCaptchaID.html rename to mcaptcha/api/v1/mcaptcha/stats/struct.StatsPayload.html index 92b355ce..9491b6a3 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.MCaptchaID.html +++ b/mcaptcha/api/v1/mcaptcha/stats/struct.StatsPayload.html @@ -1,11 +1,11 @@ -MCaptchaID in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::MCaptchaID[][src]

pub struct MCaptchaID {
-    pub name: Option<String>,
-}

Fields

name: Option<String>

Trait Implementations

Returns a copy of the value. Read more

+StatsPayload in mcaptcha::api::v1::mcaptcha::stats - Rust

Struct mcaptcha::api::v1::mcaptcha::stats::StatsPayload[][src]

pub struct StatsPayload {
+    pub key: String,
+}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.delete_mcaptcha.html b/mcaptcha/api/v1/mcaptcha/stats/struct.get.html similarity index 69% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.delete_mcaptcha.html rename to mcaptcha/api/v1/mcaptcha/stats/struct.get.html index 0801829d..2dcf4f13 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.delete_mcaptcha.html +++ b/mcaptcha/api/v1/mcaptcha/stats/struct.get.html @@ -1,4 +1,4 @@ -delete_mcaptcha in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::delete_mcaptcha[][src]

pub struct delete_mcaptcha;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+get in mcaptcha::api::v1::mcaptcha::stats - Rust

Struct mcaptcha::api::v1::mcaptcha::stats::get[][src]

pub struct get;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/update/index.html b/mcaptcha/api/v1/mcaptcha/update/index.html new file mode 100644 index 00000000..13f39b42 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/update/index.html @@ -0,0 +1,5 @@ +mcaptcha::api::v1::mcaptcha::update - Rust

Module mcaptcha::api::v1::mcaptcha::update[][src]

Modules

+

Structs

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html new file mode 100644 index 00000000..43fd0fc8 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_captcha.html @@ -0,0 +1,3 @@ +update_captcha in mcaptcha::api::v1::mcaptcha::update::runner - Rust

Function mcaptcha::api::v1::mcaptcha::update::runner::update_captcha[][src]

pub async fn update_captcha(
    payload: &UpdateCaptcha,
    data: &AppData,
    username: &str
) -> Result<(), ServiceError>
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html new file mode 100644 index 00000000..6adcd40b --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/update/runner/fn.update_key.html @@ -0,0 +1,3 @@ +update_key in mcaptcha::api::v1::mcaptcha::update::runner - Rust

Function mcaptcha::api::v1::mcaptcha::update::runner::update_key[][src]

pub async fn update_key(
    key: &str,
    old_key: &str,
    username: &str,
    data: &AppData
) -> Result<(), Error>
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/runner/index.html b/mcaptcha/api/v1/mcaptcha/update/runner/index.html new file mode 100644 index 00000000..1062c29e --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/update/runner/index.html @@ -0,0 +1,4 @@ +mcaptcha::api::v1::mcaptcha::update::runner - Rust

Module mcaptcha::api::v1::mcaptcha::update::runner[][src]

Functions

+
+ + \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/runner/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/update/runner/sidebar-items.js new file mode 100644 index 00000000..eef0f1be --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/update/runner/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["update_captcha",""],["update_key",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/update/sidebar-items.js b/mcaptcha/api/v1/mcaptcha/update/sidebar-items.js new file mode 100644 index 00000000..1adb00d9 --- /dev/null +++ b/mcaptcha/api/v1/mcaptcha/update/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["runner",""]],"struct":[["UpdateCaptcha",""],["update_captcha",""],["update_key",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/levels/struct.UpdateLevels.html b/mcaptcha/api/v1/mcaptcha/update/struct.UpdateCaptcha.html similarity index 64% rename from mcaptcha/api/v1/mcaptcha/levels/struct.UpdateLevels.html rename to mcaptcha/api/v1/mcaptcha/update/struct.UpdateCaptcha.html index 6b140169..c11c4c63 100644 --- a/mcaptcha/api/v1/mcaptcha/levels/struct.UpdateLevels.html +++ b/mcaptcha/api/v1/mcaptcha/update/struct.UpdateCaptcha.html @@ -1,11 +1,11 @@ -UpdateLevels in mcaptcha::api::v1::mcaptcha::levels - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::UpdateLevels[][src]

pub struct UpdateLevels {
+UpdateCaptcha in mcaptcha::api::v1::mcaptcha::update - Rust

Struct mcaptcha::api::v1::mcaptcha::update::UpdateCaptcha[][src]

pub struct UpdateCaptcha {
     pub levels: Vec<Level>,
     pub duration: u32,
     pub description: String,
     pub key: String,
-}

Fields

levels: Vec<Level>duration: u32description: Stringkey: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

levels: Vec<Level>duration: u32description: Stringkey: String

Trait Implementations

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/levels/struct.update_levels.html b/mcaptcha/api/v1/mcaptcha/update/struct.update_captcha.html similarity index 65% rename from mcaptcha/api/v1/mcaptcha/levels/struct.update_levels.html rename to mcaptcha/api/v1/mcaptcha/update/struct.update_captcha.html index 44fc4690..02abe93b 100644 --- a/mcaptcha/api/v1/mcaptcha/levels/struct.update_levels.html +++ b/mcaptcha/api/v1/mcaptcha/update/struct.update_captcha.html @@ -1,4 +1,4 @@ -update_levels in mcaptcha::api::v1::mcaptcha::levels - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::update_levels[][src]

pub struct update_levels;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+update_captcha in mcaptcha::api::v1::mcaptcha::update - Rust

Struct mcaptcha::api::v1::mcaptcha::update::update_captcha[][src]

pub struct update_captcha;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/mcaptcha/levels/struct.add_levels.html b/mcaptcha/api/v1/mcaptcha/update/struct.update_key.html similarity index 80% rename from mcaptcha/api/v1/mcaptcha/levels/struct.add_levels.html rename to mcaptcha/api/v1/mcaptcha/update/struct.update_key.html index 176edcbb..950e05a2 100644 --- a/mcaptcha/api/v1/mcaptcha/levels/struct.add_levels.html +++ b/mcaptcha/api/v1/mcaptcha/update/struct.update_key.html @@ -1,4 +1,4 @@ -add_levels in mcaptcha::api::v1::mcaptcha::levels - Rust

Struct mcaptcha::api::v1::mcaptcha::levels::add_levels[][src]

pub struct add_levels;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+update_key in mcaptcha::api::v1::mcaptcha::update - Rust

Struct mcaptcha::api::v1::mcaptcha::update::update_key[][src]

pub struct update_key;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/pow/fn.services.html b/mcaptcha/api/v1/pow/fn.services.html index 70abf110..cde711c9 100644 --- a/mcaptcha/api/v1/pow/fn.services.html +++ b/mcaptcha/api/v1/pow/fn.services.html @@ -1,3 +1,3 @@ -services in mcaptcha::api::v1::pow - Rust

Function mcaptcha::api::v1::pow::services[][src]

pub fn services(cfg: &mut ServiceConfig)
+services in mcaptcha::api::v1::pow - Rust

Function mcaptcha::api::v1::pow::services[][src]

pub fn services(cfg: &mut ServiceConfig)
\ No newline at end of file diff --git a/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html b/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html index 3cc3ecba..e35d8e32 100644 --- a/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html +++ b/mcaptcha/api/v1/pow/get_config/fn.init_mcaptcha.html @@ -1,4 +1,4 @@ -init_mcaptcha in mcaptcha::api::v1::pow::get_config - Rust

Function mcaptcha::api::v1::pow::get_config::init_mcaptcha[][src]

async fn init_mcaptcha(data: &AppData, key: &str) -> Result<(), ServiceError>
Expand description

Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.

+init_mcaptcha in mcaptcha::api::v1::pow::get_config - Rust

Function mcaptcha::api::v1::pow::get_config::init_mcaptcha[][src]

async fn init_mcaptcha(data: &AppData, key: &str) -> Result<(), ServiceError>
Expand description

Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.

This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense], creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]

diff --git a/mcaptcha/api/v1/pow/get_config/index.html b/mcaptcha/api/v1/pow/get_config/index.html index b0cc6fa3..916a85a4 100644 --- a/mcaptcha/api/v1/pow/get_config/index.html +++ b/mcaptcha/api/v1/pow/get_config/index.html @@ -1,4 +1,4 @@ -mcaptcha::api::v1::pow::get_config - Rust

Module mcaptcha::api::v1::pow::get_config[][src]

Structs

+mcaptcha::api::v1::pow::get_config - Rust

Module mcaptcha::api::v1::pow::get_config[][src]

Structs

get PoW configuration for an mcaptcha key

Functions

Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.

diff --git a/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html b/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html index 6bb4f2d0..31c28268 100644 --- a/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html +++ b/mcaptcha/api/v1/pow/get_config/struct.GetConfigPayload.html @@ -1,10 +1,10 @@ -GetConfigPayload in mcaptcha::api::v1::pow::get_config - Rust

Struct mcaptcha::api::v1::pow::get_config::GetConfigPayload[][src]

pub struct GetConfigPayload {
+GetConfigPayload in mcaptcha::api::v1::pow::get_config - Rust

Struct mcaptcha::api::v1::pow::get_config::GetConfigPayload[][src]

pub struct GetConfigPayload {
     pub key: String,
-}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

+}

Fields

key: String

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Deserialize this value from the given Serde deserializer. Read more

-

Serialize this value into the given Serde serializer. Read more

+

Formats the value using the given formatter. Read more

+

Deserialize this value from the given Serde deserializer. Read more

+

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/mcaptcha/api/v1/pow/get_config/struct.get_config.html b/mcaptcha/api/v1/pow/get_config/struct.get_config.html index 89f789c7..a34019e2 100644 --- a/mcaptcha/api/v1/pow/get_config/struct.get_config.html +++ b/mcaptcha/api/v1/pow/get_config/struct.get_config.html @@ -1,5 +1,5 @@ -get_config in mcaptcha::api::v1::pow::get_config - Rust

Struct mcaptcha::api::v1::pow::get_config::get_config[][src]

pub struct get_config;
Expand description

get PoW configuration for an mcaptcha key

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+get_config in mcaptcha::api::v1::pow::get_config - Rust

Struct mcaptcha::api::v1::pow::get_config::get_config[][src]

pub struct get_config;
Expand description

get PoW configuration for an mcaptcha key

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/api/v1/pow/index.html b/mcaptcha/api/v1/pow/index.html index 79cc4aa8..24de5967 100644 --- a/mcaptcha/api/v1/pow/index.html +++ b/mcaptcha/api/v1/pow/index.html @@ -1,5 +1,5 @@ -mcaptcha::api::v1::pow - Rust

Module mcaptcha::api::v1::pow[][src]

Re-exports

-
pub use super::mcaptcha::duration::GetDurationResp;
pub use super::mcaptcha::levels::I32Levels;

Modules

+mcaptcha::api::v1::pow - Rust

Module mcaptcha::api::v1::pow[][src]

Re-exports

+
pub use super::mcaptcha::get::I32Levels;

Modules

PoW Verification module

PoW success token module

Functions

diff --git a/mcaptcha/api/v1/pow/routes/index.html b/mcaptcha/api/v1/pow/routes/index.html index 58b49061..ab28dc5f 100644 --- a/mcaptcha/api/v1/pow/routes/index.html +++ b/mcaptcha/api/v1/pow/routes/index.html @@ -1,4 +1,4 @@ -mcaptcha::api::v1::pow::routes - Rust

Module mcaptcha::api::v1::pow::routes[][src]

Macros

+mcaptcha::api::v1::pow::routes - Rust

Module mcaptcha::api::v1::pow::routes[][src]

Macros

Structs

diff --git a/mcaptcha/api/v1/pow/routes/macro.rm_scope.html b/mcaptcha/api/v1/pow/routes/macro.rm_scope.html index 891e42fd..4b81e5f9 100644 --- a/mcaptcha/api/v1/pow/routes/macro.rm_scope.html +++ b/mcaptcha/api/v1/pow/routes/macro.rm_scope.html @@ -1,4 +1,4 @@ -rm_scope in mcaptcha::api::v1::pow::routes - Rust

Macro mcaptcha::api::v1::pow::routes::rm_scope[][src]

macro_rules! rm_scope {
+rm_scope in mcaptcha::api::v1::pow::routes - Rust

Macro mcaptcha::api::v1::pow::routes::rm_scope[][src]

macro_rules! rm_scope {
     ($name : ident) => { ... };
 }
diff --git a/mcaptcha/api/v1/pow/routes/struct.PoW.html b/mcaptcha/api/v1/pow/routes/struct.PoW.html index 079ba6fe..e35e8e35 100644 --- a/mcaptcha/api/v1/pow/routes/struct.PoW.html +++ b/mcaptcha/api/v1/pow/routes/struct.PoW.html @@ -1,11 +1,11 @@ -PoW in mcaptcha::api::v1::pow::routes - Rust

Struct mcaptcha::api::v1::pow::routes::PoW[][src]

pub struct PoW {
+PoW in mcaptcha::api::v1::pow::routes - Rust

Struct mcaptcha::api::v1::pow::routes::PoW[][src]

pub struct PoW {
     pub get_config: &'static str,
     pub verify_pow: &'static str,
     pub validate_captcha_token: &'static str,
     pub scope: &'static str,
-}

Fields

get_config: &'static strverify_pow: &'static strvalidate_captcha_token: &'static strscope: &'static str

Implementations

remove scope for $name route

-

remove scope for $name route

-

remove scope for $name route

+}

Fields

get_config: &'static strverify_pow: &'static strvalidate_captcha_token: &'static strscope: &'static str

Implementations

remove scope for $name route

+

remove scope for $name route

+

remove scope for $name route

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/mcaptcha/api/v1/routes/constant.ROUTES.html b/mcaptcha/api/v1/routes/constant.ROUTES.html index 797ccb0f..dcd4c4f8 100644 --- a/mcaptcha/api/v1/routes/constant.ROUTES.html +++ b/mcaptcha/api/v1/routes/constant.ROUTES.html @@ -1,3 +1,3 @@ -ROUTES in mcaptcha::api::v1::routes - Rust

Constant mcaptcha::api::v1::routes::ROUTES[][src]

pub const ROUTES: Routes;
+ROUTES in mcaptcha::api::v1::routes - Rust

Constant mcaptcha::api::v1::routes::ROUTES[][src]

pub const ROUTES: Routes;
\ No newline at end of file diff --git a/mcaptcha/api/v1/routes/index.html b/mcaptcha/api/v1/routes/index.html index c17a593d..71deddc2 100644 --- a/mcaptcha/api/v1/routes/index.html +++ b/mcaptcha/api/v1/routes/index.html @@ -1,4 +1,4 @@ -mcaptcha::api::v1::routes - Rust

Module mcaptcha::api::v1::routes[][src]

Structs

+mcaptcha::api::v1::routes - Rust

Module mcaptcha::api::v1::routes[][src]

Structs

Constants

diff --git a/mcaptcha/api/v1/routes/struct.Routes.html b/mcaptcha/api/v1/routes/struct.Routes.html index 08e33a4d..ce4a8465 100644 --- a/mcaptcha/api/v1/routes/struct.Routes.html +++ b/mcaptcha/api/v1/routes/struct.Routes.html @@ -1,13 +1,11 @@ -Routes in mcaptcha::api::v1::routes - Rust

Struct mcaptcha::api::v1::routes::Routes[][src]

pub struct Routes {
+Routes in mcaptcha::api::v1::routes - Rust

Struct mcaptcha::api::v1::routes::Routes[][src]

pub struct Routes {
     pub auth: Auth,
     pub account: Account,
-    pub levels: Levels,
-    pub mcaptcha: MCaptcha,
-    pub duration: Duration,
+    pub captcha: Captcha,
     pub meta: Meta,
     pub pow: PoW,
     pub notifications: Notifications,
-}

Fields

auth: Authaccount: Accountlevels: Levelsmcaptcha: MCaptchaduration: Durationmeta: Metapow: PoWnotifications: Notifications

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

auth: Authaccount: Accountcaptcha: Captchameta: Metapow: PoWnotifications: Notifications

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/constant.CACHE_AGE.html b/mcaptcha/constant.CACHE_AGE.html index 5fe8a70b..81db631c 100644 --- a/mcaptcha/constant.CACHE_AGE.html +++ b/mcaptcha/constant.CACHE_AGE.html @@ -1,3 +1,3 @@ -CACHE_AGE in mcaptcha - Rust

Constant mcaptcha::CACHE_AGE[][src]

pub const CACHE_AGE: u32 = 604800;
+CACHE_AGE in mcaptcha - Rust

Constant mcaptcha::CACHE_AGE[][src]

pub const CACHE_AGE: u32 = 604800;
\ No newline at end of file diff --git a/mcaptcha/constant.COMPILED_DATE.html b/mcaptcha/constant.COMPILED_DATE.html index a63b7342..2135dcc6 100644 --- a/mcaptcha/constant.COMPILED_DATE.html +++ b/mcaptcha/constant.COMPILED_DATE.html @@ -1,3 +1,3 @@ -COMPILED_DATE in mcaptcha - Rust

Constant mcaptcha::COMPILED_DATE[][src]

pub const COMPILED_DATE: &str = "21-12-10";
+COMPILED_DATE in mcaptcha - Rust

Constant mcaptcha::COMPILED_DATE[][src]

pub const COMPILED_DATE: &str = "21-12-18";
\ No newline at end of file diff --git a/mcaptcha/constant.GIT_COMMIT_HASH.html b/mcaptcha/constant.GIT_COMMIT_HASH.html index e6c99105..82409cfa 100644 --- a/mcaptcha/constant.GIT_COMMIT_HASH.html +++ b/mcaptcha/constant.GIT_COMMIT_HASH.html @@ -1,3 +1,3 @@ -GIT_COMMIT_HASH in mcaptcha - Rust

Constant mcaptcha::GIT_COMMIT_HASH[][src]

pub const GIT_COMMIT_HASH: &str = "b2297eab6de809620331706db7ef44eecc059cc4";
+GIT_COMMIT_HASH in mcaptcha - Rust

Constant mcaptcha::GIT_COMMIT_HASH[][src]

pub const GIT_COMMIT_HASH: &str = "855dbc60efa5d2539e442208bee06351b531b3c6";
\ No newline at end of file diff --git a/mcaptcha/constant.PKG_DESCRIPTION.html b/mcaptcha/constant.PKG_DESCRIPTION.html index 79a8901f..3c92a31d 100644 --- a/mcaptcha/constant.PKG_DESCRIPTION.html +++ b/mcaptcha/constant.PKG_DESCRIPTION.html @@ -1,3 +1,3 @@ -PKG_DESCRIPTION in mcaptcha - Rust

Constant mcaptcha::PKG_DESCRIPTION[][src]

pub const PKG_DESCRIPTION: &str = "mCaptcha - a PoW-based CAPTCHA system";
+PKG_DESCRIPTION in mcaptcha - Rust

Constant mcaptcha::PKG_DESCRIPTION[][src]

pub const PKG_DESCRIPTION: &str = "mCaptcha - a PoW-based CAPTCHA system";
\ No newline at end of file diff --git a/mcaptcha/constant.PKG_HOMEPAGE.html b/mcaptcha/constant.PKG_HOMEPAGE.html index 5c1868e2..c0a4eba5 100644 --- a/mcaptcha/constant.PKG_HOMEPAGE.html +++ b/mcaptcha/constant.PKG_HOMEPAGE.html @@ -1,3 +1,3 @@ -PKG_HOMEPAGE in mcaptcha - Rust

Constant mcaptcha::PKG_HOMEPAGE[][src]

pub const PKG_HOMEPAGE: &str = "https://mcaptcha.org";
+PKG_HOMEPAGE in mcaptcha - Rust

Constant mcaptcha::PKG_HOMEPAGE[][src]

pub const PKG_HOMEPAGE: &str = "https://mcaptcha.org";
\ No newline at end of file diff --git a/mcaptcha/constant.PKG_NAME.html b/mcaptcha/constant.PKG_NAME.html index e191336b..72f299c3 100644 --- a/mcaptcha/constant.PKG_NAME.html +++ b/mcaptcha/constant.PKG_NAME.html @@ -1,3 +1,3 @@ -PKG_NAME in mcaptcha - Rust

Constant mcaptcha::PKG_NAME[][src]

pub const PKG_NAME: &str = "mcaptcha";
+PKG_NAME in mcaptcha - Rust

Constant mcaptcha::PKG_NAME[][src]

pub const PKG_NAME: &str = "mcaptcha";
\ No newline at end of file diff --git a/mcaptcha/constant.V1_API_ROUTES.html b/mcaptcha/constant.V1_API_ROUTES.html index 2e09e176..da481d38 100644 --- a/mcaptcha/constant.V1_API_ROUTES.html +++ b/mcaptcha/constant.V1_API_ROUTES.html @@ -1,3 +1,3 @@ -V1_API_ROUTES in mcaptcha - Rust

Constant mcaptcha::V1_API_ROUTES[][src]

pub const V1_API_ROUTES: Routes;
+V1_API_ROUTES in mcaptcha - Rust

Constant mcaptcha::V1_API_ROUTES[][src]

pub const V1_API_ROUTES: Routes;
\ No newline at end of file diff --git a/mcaptcha/constant.VERSION.html b/mcaptcha/constant.VERSION.html index e6c2cbe3..6f32e1d2 100644 --- a/mcaptcha/constant.VERSION.html +++ b/mcaptcha/constant.VERSION.html @@ -1,3 +1,3 @@ -VERSION in mcaptcha - Rust

Constant mcaptcha::VERSION[][src]

pub const VERSION: &str = "0.1.0";
+VERSION in mcaptcha - Rust

Constant mcaptcha::VERSION[][src]

pub const VERSION: &str = "0.1.0";
\ No newline at end of file diff --git a/mcaptcha/demo/constant.DEMO_PASSWORD.html b/mcaptcha/demo/constant.DEMO_PASSWORD.html index b65e81e1..4cbdcfae 100644 --- a/mcaptcha/demo/constant.DEMO_PASSWORD.html +++ b/mcaptcha/demo/constant.DEMO_PASSWORD.html @@ -1,4 +1,4 @@ -DEMO_PASSWORD in mcaptcha::demo - Rust

Constant mcaptcha::demo::DEMO_PASSWORD[][src]

pub const DEMO_PASSWORD: &str = "password";
Expand description

Demo password

+DEMO_PASSWORD in mcaptcha::demo - Rust

Constant mcaptcha::demo::DEMO_PASSWORD[][src]

pub const DEMO_PASSWORD: &str = "password";
Expand description

Demo password

\ No newline at end of file diff --git a/mcaptcha/demo/constant.DEMO_USER.html b/mcaptcha/demo/constant.DEMO_USER.html index 50b51c4d..32f7b474 100644 --- a/mcaptcha/demo/constant.DEMO_USER.html +++ b/mcaptcha/demo/constant.DEMO_USER.html @@ -1,4 +1,4 @@ -DEMO_USER in mcaptcha::demo - Rust

Constant mcaptcha::demo::DEMO_USER[][src]

pub const DEMO_USER: &str = "aaronsw";
Expand description

Demo username

+DEMO_USER in mcaptcha::demo - Rust

Constant mcaptcha::demo::DEMO_USER[][src]

pub const DEMO_USER: &str = "aaronsw";
Expand description

Demo username

\ No newline at end of file diff --git a/mcaptcha/demo/fn.delete_demo_user.html b/mcaptcha/demo/fn.delete_demo_user.html deleted file mode 100644 index dd60b243..00000000 --- a/mcaptcha/demo/fn.delete_demo_user.html +++ /dev/null @@ -1,3 +0,0 @@ -delete_demo_user in mcaptcha::demo - Rust

Function mcaptcha::demo::delete_demo_user[][src]

async fn delete_demo_user(data: &AppData) -> Result<(), ServiceError>
- - \ No newline at end of file diff --git a/mcaptcha/demo/fn.register_demo_user.html b/mcaptcha/demo/fn.register_demo_user.html deleted file mode 100644 index 09a0a01f..00000000 --- a/mcaptcha/demo/fn.register_demo_user.html +++ /dev/null @@ -1,4 +0,0 @@ -register_demo_user in mcaptcha::demo - Rust

Function mcaptcha::demo::register_demo_user[][src]

async fn register_demo_user(data: &AppData) -> Result<(), ServiceError>
Expand description

register demo user runner

-
- - \ No newline at end of file diff --git a/mcaptcha/demo/fn.run.html b/mcaptcha/demo/fn.run.html deleted file mode 100644 index 9e683341..00000000 --- a/mcaptcha/demo/fn.run.html +++ /dev/null @@ -1,3 +0,0 @@ -run in mcaptcha::demo - Rust

Function mcaptcha::demo::run[][src]

pub async fn run(data: AppData, duration: Duration) -> Result<(), ServiceError>
- - \ No newline at end of file diff --git a/mcaptcha/demo/index.html b/mcaptcha/demo/index.html index 01d66755..446cb033 100644 --- a/mcaptcha/demo/index.html +++ b/mcaptcha/demo/index.html @@ -1,8 +1,7 @@ -mcaptcha::demo - Rust

Module mcaptcha::demo[][src]

Constants

+mcaptcha::demo - Rust

Module mcaptcha::demo[][src]

Structs

+

Constants

Demo password

Demo username

-

Functions

-

register demo user runner

-
+
\ No newline at end of file diff --git a/mcaptcha/demo/sidebar-items.js b/mcaptcha/demo/sidebar-items.js index e8177d67..1b1d53e3 100644 --- a/mcaptcha/demo/sidebar-items.js +++ b/mcaptcha/demo/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"constant":[["DEMO_PASSWORD","Demo password"],["DEMO_USER","Demo username"]],"fn":[["delete_demo_user",""],["register_demo_user","register demo user runner"],["run",""]]}); \ No newline at end of file +initSidebarItems({"constant":[["DEMO_PASSWORD","Demo password"],["DEMO_USER","Demo username"]],"struct":[["DemoUser",""]]}); \ No newline at end of file diff --git a/mcaptcha/api/v1/mcaptcha/captcha/struct.from_user_provided_traffic_pattern.html b/mcaptcha/demo/struct.DemoUser.html similarity index 57% rename from mcaptcha/api/v1/mcaptcha/captcha/struct.from_user_provided_traffic_pattern.html rename to mcaptcha/demo/struct.DemoUser.html index e76a7b5d..06409a0f 100644 --- a/mcaptcha/api/v1/mcaptcha/captcha/struct.from_user_provided_traffic_pattern.html +++ b/mcaptcha/demo/struct.DemoUser.html @@ -1,4 +1,9 @@ -from_user_provided_traffic_pattern in mcaptcha::api::v1::mcaptcha::captcha - Rust

Struct mcaptcha::api::v1::mcaptcha::captcha::from_user_provided_traffic_pattern[][src]

pub struct from_user_provided_traffic_pattern;

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+DemoUser in mcaptcha::demo - Rust

Struct mcaptcha::demo::DemoUser[][src]

pub struct DemoUser {
+    data: AppData,
+    duration: Duration,
+    handle: JoinHandle<()>,
+}

Fields

data: AppDataduration: Durationhandle: JoinHandle<()>

Implementations

register demo user runner

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

@@ -16,6 +21,6 @@ WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

-
- +
+ \ No newline at end of file diff --git a/mcaptcha/fn.get_identity_service.html b/mcaptcha/fn.get_identity_service.html index c56d3ddb..5b156c24 100644 --- a/mcaptcha/fn.get_identity_service.html +++ b/mcaptcha/fn.get_identity_service.html @@ -1,3 +1,3 @@ -get_identity_service in mcaptcha - Rust

Function mcaptcha::get_identity_service[][src]

pub fn get_identity_service() -> IdentityService<CookieIdentityPolicy>
+get_identity_service in mcaptcha - Rust

Function mcaptcha::get_identity_service[][src]

pub fn get_identity_service() -> IdentityService<CookieIdentityPolicy>
\ No newline at end of file diff --git a/mcaptcha/fn.get_json_err.html b/mcaptcha/fn.get_json_err.html index ea7e8b86..c4ae40d0 100644 --- a/mcaptcha/fn.get_json_err.html +++ b/mcaptcha/fn.get_json_err.html @@ -1,3 +1,3 @@ -get_json_err in mcaptcha - Rust

Function mcaptcha::get_json_err[][src]

pub fn get_json_err() -> JsonConfig
+get_json_err in mcaptcha - Rust

Function mcaptcha::get_json_err[][src]

pub fn get_json_err() -> JsonConfig
\ No newline at end of file diff --git a/mcaptcha/fn.main.html b/mcaptcha/fn.main.html index db2e99bd..9f35f839 100644 --- a/mcaptcha/fn.main.html +++ b/mcaptcha/fn.main.html @@ -1,3 +1,3 @@ -main in mcaptcha - Rust

Function mcaptcha::main[][src]

pub(crate) fn main() -> Result<()>
+main in mcaptcha - Rust

Function mcaptcha::main[][src]

pub(crate) fn main() -> Result<()>
\ No newline at end of file diff --git a/mcaptcha/index.html b/mcaptcha/index.html index 10aa39fb..4e7978a2 100644 --- a/mcaptcha/index.html +++ b/mcaptcha/index.html @@ -1,4 +1,4 @@ -mcaptcha - Rust

Crate mcaptcha[][src]

Modules

+mcaptcha - Rust

Crate mcaptcha[][src]

Modules

App data: redis cache, database connections, etc.

User facing CAPTCHA widget

Structs

diff --git a/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html b/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html index 8ec6bd5d..f861beee 100644 --- a/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html +++ b/mcaptcha/pages/panel/sitekey/list/fn.get_list_sitekeys.html @@ -1,4 +1,4 @@ -get_list_sitekeys in mcaptcha::pages::panel::sitekey::list - Rust

Function mcaptcha::pages::panel::sitekey::list::get_list_sitekeys[][src]

pub async fn get_list_sitekeys(
    data: &AppData,
    id: &Identity
) -> Result<Vec<MCaptchaDetails>, PageError>
Expand description

utility function to get a list of all sitekeys that a user owns

+get_list_sitekeys in mcaptcha::pages::panel::sitekey::list - Rust

Function mcaptcha::pages::panel::sitekey::list::get_list_sitekeys[][src]

pub async fn get_list_sitekeys(
    data: &AppData,
    id: &Identity
) -> Result<Vec<MCaptchaDetails>, PageError>
Expand description

utility function to get a list of all sitekeys that a user owns

\ No newline at end of file diff --git a/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html b/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html index 2c5c5a2d..274b7d87 100644 --- a/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html +++ b/mcaptcha/pages/panel/sitekey/list/struct.IndexPage.html @@ -1,6 +1,6 @@ IndexPage in mcaptcha::pages::panel::sitekey::list - Rust

Struct mcaptcha::pages::panel::sitekey::list::IndexPage[][src]

pub struct IndexPage {
-    sitekeys: Vec<MCaptchaDetails>,
-}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+ sitekeys: Vec<MCaptchaDetails>, +}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Render the template and return the rendering result as RenderResult Read more

Render the template and append the result to buf. Read more

diff --git a/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html b/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html index 1d2d8cea..97672ef6 100644 --- a/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html +++ b/mcaptcha/pages/panel/sitekey/list/type.SiteKeys.html @@ -1,3 +1,3 @@ -SiteKeys in mcaptcha::pages::panel::sitekey::list - Rust

Type Definition mcaptcha::pages::panel::sitekey::list::SiteKeys[][src]

pub type SiteKeys = Vec<MCaptchaDetails>;
+SiteKeys in mcaptcha::pages::panel::sitekey::list - Rust

Type Definition mcaptcha::pages::panel::sitekey::list::SiteKeys[][src]

pub type SiteKeys = Vec<MCaptchaDetails>;
\ No newline at end of file diff --git a/mcaptcha/pages/panel/struct.IndexPage.html b/mcaptcha/pages/panel/struct.IndexPage.html index 2f2be7e9..8c0ba104 100644 --- a/mcaptcha/pages/panel/struct.IndexPage.html +++ b/mcaptcha/pages/panel/struct.IndexPage.html @@ -1,6 +1,6 @@ IndexPage in mcaptcha::pages::panel - Rust

Struct mcaptcha::pages::panel::IndexPage[][src]

pub struct IndexPage {
-    sitekeys: Vec<MCaptchaDetails>,
-}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

+ sitekeys: Vec<MCaptchaDetails>, +}

Fields

sitekeys: Vec<MCaptchaDetails>

Implementations

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Render the template and return the rendering result as RenderResult Read more

Render the template and append the result to buf. Read more

diff --git a/mcaptcha/struct.CSS.html b/mcaptcha/struct.CSS.html index 6394db58..77e432be 100644 --- a/mcaptcha/struct.CSS.html +++ b/mcaptcha/struct.CSS.html @@ -1,8 +1,8 @@ -CSS in mcaptcha - Rust

Struct mcaptcha::CSS[][src]

pub struct CSS {
+CSS in mcaptcha - Rust

Struct mcaptcha::CSS[][src]

pub struct CSS {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/struct.FILES.html b/mcaptcha/struct.FILES.html index bedcd546..e8e908d4 100644 --- a/mcaptcha/struct.FILES.html +++ b/mcaptcha/struct.FILES.html @@ -1,8 +1,8 @@ -FILES in mcaptcha - Rust

Struct mcaptcha::FILES[][src]

pub struct FILES {
+FILES in mcaptcha - Rust

Struct mcaptcha::FILES[][src]

pub struct FILES {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = FileMap>

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = FileMap>

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/struct.JS.html b/mcaptcha/struct.JS.html index 848eaecc..a6bb480f 100644 --- a/mcaptcha/struct.JS.html +++ b/mcaptcha/struct.JS.html @@ -1,8 +1,8 @@ -JS in mcaptcha - Rust

Struct mcaptcha::JS[][src]

pub struct JS {
+JS in mcaptcha - Rust

Struct mcaptcha::JS[][src]

pub struct JS {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/struct.MOBILE_CSS.html b/mcaptcha/struct.MOBILE_CSS.html index a5bc43ac..101eea47 100644 --- a/mcaptcha/struct.MOBILE_CSS.html +++ b/mcaptcha/struct.MOBILE_CSS.html @@ -1,8 +1,8 @@ -MOBILE_CSS in mcaptcha - Rust

Struct mcaptcha::MOBILE_CSS[][src]

pub struct MOBILE_CSS {
+MOBILE_CSS in mcaptcha - Rust

Struct mcaptcha::MOBILE_CSS[][src]

pub struct MOBILE_CSS {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/struct.SETTINGS.html b/mcaptcha/struct.SETTINGS.html index 47c64972..6e9397ba 100644 --- a/mcaptcha/struct.SETTINGS.html +++ b/mcaptcha/struct.SETTINGS.html @@ -1,8 +1,8 @@ -SETTINGS in mcaptcha - Rust

Struct mcaptcha::SETTINGS[][src]

pub struct SETTINGS {
+SETTINGS in mcaptcha - Rust

Struct mcaptcha::SETTINGS[][src]

pub struct SETTINGS {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = Settings>

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = Settings>

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html b/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html index 606ef6ed..ff7e7875 100644 --- a/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html +++ b/mcaptcha/struct.SOURCE_FILES_OF_INSTANCE.html @@ -1,4 +1,4 @@ -SOURCE_FILES_OF_INSTANCE in mcaptcha - Rust

Struct mcaptcha::SOURCE_FILES_OF_INSTANCE[][src]

pub struct SOURCE_FILES_OF_INSTANCE {
+SOURCE_FILES_OF_INSTANCE in mcaptcha - Rust

Struct mcaptcha::SOURCE_FILES_OF_INSTANCE[][src]

pub struct SOURCE_FILES_OF_INSTANCE {
     __private_field: (),
 }
Expand description

points to source files matching build commit

Fields

__private_field: ()

Methods from Deref<Target = String>

Extracts a string slice containing the entire String.

@@ -44,9 +44,9 @@ length of the string.

v.push('a'); assert!(!v.is_empty());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html b/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html index d28d7528..c5c7f20b 100644 --- a/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html +++ b/mcaptcha/struct.VERIFICATIN_WIDGET_CSS.html @@ -1,8 +1,8 @@ -VERIFICATIN_WIDGET_CSS in mcaptcha - Rust

Struct mcaptcha::VERIFICATIN_WIDGET_CSS[][src]

pub struct VERIFICATIN_WIDGET_CSS {
+VERIFICATIN_WIDGET_CSS in mcaptcha - Rust

Struct mcaptcha::VERIFICATIN_WIDGET_CSS[][src]

pub struct VERIFICATIN_WIDGET_CSS {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html b/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html index a3a98077..ecb6a727 100644 --- a/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html +++ b/mcaptcha/struct.VERIFICATIN_WIDGET_JS.html @@ -1,8 +1,8 @@ -VERIFICATIN_WIDGET_JS in mcaptcha - Rust

Struct mcaptcha::VERIFICATIN_WIDGET_JS[][src]

pub struct VERIFICATIN_WIDGET_JS {
+VERIFICATIN_WIDGET_JS in mcaptcha - Rust

Struct mcaptcha::VERIFICATIN_WIDGET_JS[][src]

pub struct VERIFICATIN_WIDGET_JS {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/mcaptcha/type.AppData.html b/mcaptcha/type.AppData.html index cfae82df..7a0d61ea 100644 --- a/mcaptcha/type.AppData.html +++ b/mcaptcha/type.AppData.html @@ -1,3 +1,3 @@ -AppData in mcaptcha - Rust

Type Definition mcaptcha::AppData[][src]

pub type AppData = Data<Arc<Data>>;
+AppData in mcaptcha - Rust

Type Definition mcaptcha::AppData[][src]

pub type AppData = Data<Arc<Data>>;
\ No newline at end of file diff --git a/search-index.js b/search-index.js index 8f345092..2029e97e 100644 --- a/search-index.js +++ b/search-index.js @@ -1,5 +1,5 @@ var searchIndex = JSON.parse('{\ -"mcaptcha":{"doc":"","t":[6,3,17,17,3,3,3,17,3,3,3,3,17,3,3,3,3,3,3,3,17,17,17,17,3,3,3,3,17,3,3,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,0,12,0,12,12,0,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,12,5,0,0,12,0,12,0,12,12,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,5,3,3,11,11,11,11,11,11,11,11,0,11,11,0,12,11,11,11,11,11,11,0,0,0,11,11,5,11,11,11,11,11,11,11,11,0,12,11,11,11,11,3,11,11,11,0,5,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,12,3,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,12,12,12,11,11,5,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,3,11,11,12,12,11,12,11,11,11,11,11,12,12,12,12,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,11,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,5,3,11,11,11,11,11,11,11,11,11,11,12,3,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,0,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,12,11,12,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,12,5,12,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,0,0,5,0,5,3,3,3,3,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,11,11,11,11,0,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,5,11,11,11,11,11,11,11,11,11,3,11,11,12,11,11,11,12,11,11,11,12,12,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,3,11,11,11,11,11,12,11,11,0,11,11,11,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,12,11,3,3,3,3,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,3,5,11,11,11,11,11,11,11,12,12,12,12,11,11,11,0,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,11,11,11,3,12,11,11,11,12,11,11,11,11,11,12,11,3,3,4,3,3,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,3,11,11,11,11,11,11,11,11,11,11,12,12,11,11,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,3,11,11,12,11,12,11,11,11,11,11,11,0,0,0,0,5,3,3,11,11,11,11,11,11,11,12,11,11,12,11,11,12,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,3,12,12,12,12,11,11,11,12,12,12,12,12,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,5,3,3,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,12,11,11,11,11,11,0,0,5,0,0,3,11,11,11,11,11,11,11,11,11,11,3,5,11,11,12,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,14,12,11,11,11,11,12,11,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,11,11,17,3,12,12,11,11,12,11,11,12,12,12,11,12,12,11,11,11,11,3,13,6,13,4,11,11,11,11,11,12,12,12,14,14,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,17,3,17,17,17,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,17,17,5,5,5,3,17,17,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,11,12,11,11,11,11,0,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,5,12,11,12,13,13,13,13,13,3,13,13,13,13,4,6,13,13,13,13,4,13,6,3,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,0,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,17,0,0,0,0,5,0,0,0,0,5,0,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,12,11,11,11,11,11,17,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,12,11,17,3,3,17,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11,11,11,11,0,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,12,11,3,17,11,11,11,11,11,11,11,11,11,11,11,0,3,11,11,11,0,5,0,0,12,11,11,11,11,11,11,11,11,11,3,3,17,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,12,11,3,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,12,12,12,11,11,11,11,3,17,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,0,12,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,3,11,11,12,11,11,12,11,11,11,11,11,12,11,0,0,0,0,0,5,0,3,3,17,12,3,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,3,3,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,3,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,3,17,6,11,11,11,11,11,11,11,11,5,11,11,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,12,11,11,12,12,11,11,11,12,11,11,11,11,12,11,3,3,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,17,3,12,12,11,11,12,12,11,11,12,11,11,12,12,12,12,12,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,12,11,11,11,5,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,0,5,0,3,11,11,12,11,11,11,11,11,11,11,11,3,3,0,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,3,6,3,3,3,3,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,3,3,17,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11],"n":["AppData","BAR_CHART","CACHE_AGE","COMPILED_DATE","CREDIT_CARD","CSS","CheckLogin","DOCS","DOCS_ICON","Data","FILES","GITHUB","GIT_COMMIT_HASH","HELP_CIRCLE","HOME","JS","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","MOBILE_CSS","PAGES","PKG_DESCRIPTION","PKG_HOMEPAGE","PKG_NAME","SETTINGS","SETTINGS_ICON","SOURCE_FILES_OF_INSTANCE","Settings","V1_API_ROUTES","VERIFICATIN_WIDGET_CSS","VERIFICATIN_WIDGET_JS","VERSION","WIDGET_ROUTES","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","allow_demo","allow_registration","api","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","captcha","captcha","commercial","creds","data","database","date","db","debug","demo","deref","deref","deref","deref","deref","deref","deref","deref","docs","email","errors","from","from","from","from","from","from","from","from","get_identity_service","get_json_err","into","into","into","into","into","into","into","into","mailer","main","middleware","pages","redis","routes","server","settings","smtp","source_code","static_assets","stats","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","widget","v1","account","auth","mcaptcha","meta","notifications","pow","routes","services","AccountCheckPayload","AccountCheckResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","delete","deserialize","deserialize","email","exists","fmt","fmt","from","from","into","into","password","routes","secret","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","username","val","vzip","vzip","borrow","borrow_mut","delete_account","from","into","register","runners","services","try_from","try_into","type_id","vzip","delete_user","Email","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","email","email_exists","fmt","from","from","from","into","into","into","register","register","serialize","services","set_email","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","ChangePasswordReqest","UpdatePassword","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","confirm_new_password","confirm_new_password","deserialize","fmt","from","from","from","from","into","into","into","new_password","new_password","password","register","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_password_runner","update_user_password","vzip","vzip","vzip","Account","borrow","borrow_mut","delete","email_exists","from","get_secret","into","new","try_from","try_into","type_id","update_email","update_password","update_secret","update_username","username_exists","vzip","Secret","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","get_secret","into","into","into","register","register","secret","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_user_secret","vzip","vzip","vzip","Username","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","into","into","into","register","register","runners","serialize","services","set_username","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","username_exists","vzip","vzip","vzip","username_exists","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","into","into","into","login","register","register","register","register","routes","runners","services","signout","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","into","login","logout","new","register","try_from","try_into","type_id","vzip","Login","Password","Register","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirm_password","deserialize","deserialize","deserialize","email","fmt","fmt","fmt","from","from","from","into","into","into","login","login_runner","password","password","password","register_runner","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","vzip","vzip","vzip","captcha","duration","get_random","levels","services","DeleteCaptcha","MCaptchaDetails","MCaptchaID","StatsPayload","UserProvidedTrafficPattern","avg_traffic","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic","calculate","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","delete_mcaptcha","description","deserialize","deserialize","deserialize","deserialize","deserialize","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_user_provided_traffic_pattern","get_stats","into","into","into","into","into","into","into","into","into","key","key","key","name","name","password","peak_sustainable_traffic","register","register","register","register","routes","serialize","serialize","serialize","serialize","serialize","services","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_token","update_token_helper","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","MCaptcha","borrow","borrow_mut","delete","from","into","new","stats","try_from","try_into","type_id","update_key","user_provided_traffic_pattern","vzip","GetDuration","GetDurationResp","UpdateDuration","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deserialize","deserialize","deserialize","duration","duration","from","from","from","from","from","get_duration","into","into","into","into","into","key","register","register","routes","serialize","serialize","serialize","services","token","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","update_duration","vzip","vzip","vzip","vzip","vzip","Duration","borrow","borrow_mut","from","get","into","new","try_from","try_into","type_id","update","vzip","AddLevels","I32Levels","Levels","UpdateLevels","add_captcha_runner","add_levels","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","description","description","deserialize","deserialize","deserialize","deserialize","difficulty_factor","duration","duration","fmt","fmt","from","from","from","from","from","from","from","get_levels","get_levels_util","into","into","into","into","into","into","into","key","levels","levels","levels","register","register","register","routes","serialize","serialize","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_levels","visitor_threshold","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Levels","add","borrow","borrow_mut","from","get","into","new","try_from","try_into","type_id","update","vzip","BuildDetails","BuildDetailsBuilder","BuildDetailsBuilderError","Health","HealthBuilder","HealthBuilderError","UninitializedField","UninitializedField","ValidationError","ValidationError","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build_details","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","db","db","db","default","default","deserialize","deserialize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","git_commit_hash","git_commit_hash","git_commit_hash","health","into","into","into","into","into","into","into","into","is_redis","redis","redis","redis","register","register","routes","serialize","serialize","services","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","version","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","Meta","borrow","borrow_mut","build_details","from","health","into","new","try_from","try_into","type_id","vzip","add","get","mark_read","routes","services","AddNotification","add_notification","borrow","borrow","borrow_mut","borrow_mut","deserialize","from","from","heading","into","into","message","register","serialize","to","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Notification","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","from","from","from","from","get_notification","heading","heading","id","id","into","into","into","message","message","name","name","received","received","register","runner","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","get_notification","MarkReadReq","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","deserialize","from","from","from","heading","id","id","into","into","into","mark_read","message","name","received","register","serialize","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Notifications","add","borrow","borrow_mut","from","get","into","mark_read","new","try_from","try_into","type_id","vzip","get_config","routes","services","verify_pow","verify_token","GetConfigPayload","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","get_config","init_mcaptcha","into","into","key","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","PoW","borrow","borrow_mut","from","get_config","get_config","into","new","rm_scope","scope","try_from","try_into","type_id","validate_captcha_token","validate_captcha_token","verify_pow","verify_pow","vzip","ValidationToken","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","token","try_from","try_from","try_into","try_into","type_id","type_id","verify_pow","vzip","vzip","CaptchaValidateResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","valid","validate_captcha_token","vzip","vzip","ROUTES","Routes","account","auth","borrow","borrow_mut","duration","from","into","levels","mcaptcha","meta","new","notifications","pow","try_from","try_into","type_id","vzip","Data","Embedded","Mailer","Redis","SystemGroup","add_site","borrow","borrow","borrow_mut","borrow_mut","captcha","creds","db","enum_system_actor","enum_system_wrapper","from","from","get_creds","get_mailer","get_pow","into","into","mailer","new","new","new_system","remove","rename","try_from","try_from","try_into","try_into","type_id","type_id","validate_verification_tokens","verify_pow","vzip","vzip","0","0","DAY","Date","HOUR","MINUTE","WEEK","borrow","borrow_mut","clone","clone_into","date","fmt","format","from","into","print_date","time","to_owned","try_from","try_into","type_id","vzip","DEMO_PASSWORD","DEMO_USER","delete_demo_user","register_demo_user","run","Asset","DOCS","OPEN_API_SPEC","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","dist","from","from","from","from","get","get","handle_embedded_file","index","into","into","into","into","iter","iter","register","register","register","routes","services","spec","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Docs","assets","borrow","borrow_mut","from","home","into","new","spec","try_from","try_into","type_id","vzip","verification","IndexPage","PAGE","borrow","borrow_mut","clone","clone_into","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","verification","verification_link","vzip","0","AccountNotFound","BlacklistError","CaptchaError","ClosedForRegistration","EmailTaken","ErrorToResponse","InternalServerError","InternalServerError","NotAUrl","NotAnEmail","PageError","PageResult","PasswordTooLong","PasswordTooShort","PasswordsDontMatch","ProfainityError","ServiceError","ServiceError","ServiceResult","SmtpErrorWrapper","TokenNotFound","UnableToSendEmail","UsernameCaseMappedError","UsernameNotFound","UsernameTaken","WrongPassword","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deserialize","eq","eq","eq","error","error_response","error_response","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","ne","ne","serialize","source","source","source","status_code","status_code","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","0","0","0","auth","CheckLogin","CheckLoginMiddleware","borrow","borrow","borrow_mut","borrow_mut","call","from","from","into","into","into_service","new_transform","poll_ready","service","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","NAME","auth","errors","panel","routes","services","sitemap","login","register","routes","services","sudo","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","login","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","join","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","get_sitemap","into","join","login","new","try_from","try_into","type_id","vzip","PAGE","SudoPage","borrow","borrow_mut","clone","clone_into","data","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","url","vzip","ERROR_ROUTE","ErrorPage","INTERNAL_SERVER_ERROR_BODY","PAGE","UNKNOWN_ERROR_BODY","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","deref","error","from","from","from","from","into","into","into","into","message","new","register","render_once","render_once_to","routes","services","title","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Errors","borrow","borrow_mut","from","internal_server_error","into","new","try_from","try_into","type_id","unknown_error","vzip","IndexPage","PAGE","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","into","into","new","notifications","panel","register","render_once","render_once_to","routes","services","settings","sitekey","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","IndexPage","Notification","PAGE","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","from","heading","id","into","into","into","message","n","name","new","notifications","print_date","received","register","render_once","render_once_to","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Panel","borrow","borrow_mut","from","get_sitemap","home","into","new","notifications","settings","sitekey","try_from","try_into","type_id","vzip","IndexPage","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","delete_account","email","from","from","from","from","into","into","into","into","register","register","register","render_once","render_once_to","routes","secret","services","settings","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","update_secret","username","vzip","vzip","vzip","vzip","Settings","borrow","borrow_mut","delete_account","from","get_sitemap","home","into","new","try_from","try_into","type_id","update_secret","vzip","add","delete","edit","list","routes","services","view","INDEX","IndexPage","PAGE","__private_field","add_sitekey","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","form_description","form_duration","form_title","from","from","from","into","into","into","levels","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","borrow","borrow_mut","delete_sitekey","from","into","register","try_from","try_into","type_id","vzip","IndexPage","Level","McaptchaConfig","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","edit_sitekey","from","from","from","from","into","into","into","into","key","levels","name","name","new","register","render_once","render_once_to","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","visitor_threshold","vzip","vzip","vzip","vzip","IndexPage","PAGE","SiteKeys","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_list_sitekeys","into","into","list_sitekeys","new","register","render_once","render_once_to","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Sitekey","add","borrow","borrow_mut","delete","edit","from","get_sitemap","into","list","new","try_from","try_into","type_id","view","vzip","IndexPage","Level","McaptchaConfig","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","from","from","from","from","into","into","into","into","key","levels","name","name","new","register","render_once","render_once_to","stats","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","view_sitekey","visitor_threshold","vzip","vzip","vzip","vzip","ROUTES","Routes","about","auth","borrow","borrow_mut","donate","errors","from","get_sitemap","home","into","new","panel","privacy","security","sitemap","thanks","try_from","try_into","type_id","vzip","INDEX","IndexPage","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","domain","from","from","from","into","into","into","register","render_once","render_once_to","sitemap","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","urls","vzip","vzip","vzip","services","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","filemap","services","static_files","FileMap","borrow","borrow_mut","files","from","get","into","new","try_from","try_into","type_id","vzip","Asset","Favicons","assets","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","favicons","from","from","from","from","get","get","get","get","handle_assets","handle_favicons","into","into","into","into","iter","iter","iter","iter","register","register","static_files","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","BAR_CHART","CREDIT_CARD","DOCS_ICON","GITHUB","HELP_CIRCLE","HOME","Img","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","SETTINGS_ICON","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","fetch","record","Stats","StatsPayload","StatsUnixTimestamp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_fetches","config_fetches","confirms","confirms","deserialize","deserialize","fmt","fmt","fmt","from","from","from","from_stats","into","into","into","key","new","runners","serialize","serialize","solves","solves","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unix_timestamp","vzip","vzip","vzip","fetch_config_fetched","fetch_confirm","fetch_solve","record_confirm","record_fetch","record_solve","INDEX_PAGE","IndexPage","PAGE","WIDGET_ROUTES","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","from","from","from","into","into","into","new","register","render_once","render_once_to","routes","services","show_widget","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Widget","borrow","borrow_mut","from","into","new","try_from","try_into","type_id","verification_widget","vzip"],"q":["mcaptcha","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api","mcaptcha::api::v1","","","","","","","","mcaptcha::api::v1::account","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::delete","","","","","","","","","","","","mcaptcha::api::v1::account::delete::runners","mcaptcha::api::v1::account::email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::password","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::secret","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username::runners","mcaptcha::api::v1::auth","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::auth::routes","","","","","","","","","","","","","mcaptcha::api::v1::auth::runners","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha","","","","","mcaptcha::api::v1::mcaptcha::captcha","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::captcha::routes","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::duration","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::duration::routes","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::levels","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::levels::routes","","","","","","","","","","","","","mcaptcha::api::v1::meta","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::meta::BuildDetailsBuilderError","","mcaptcha::api::v1::meta::HealthBuilderError","","mcaptcha::api::v1::meta::routes","","","","","","","","","","","","mcaptcha::api::v1::notifications","","","","","mcaptcha::api::v1::notifications::add","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get::runner","mcaptcha::api::v1::notifications::mark_read","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::routes","","","","","","","","","","","","","mcaptcha::api::v1::pow","","","","","mcaptcha::api::v1::pow::get_config","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_pow","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_token","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::routes","","","","","","","","","","","","","","","","","","","mcaptcha::data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::data::SystemGroup","","mcaptcha::date","","","","","","","","","","","","","","","","","","","","","mcaptcha::demo","","","","","mcaptcha::docs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::docs::routes","","","","","","","","","","","","","mcaptcha::email","mcaptcha::email::verification","","","","","","","","","","","","","","","","","","mcaptcha::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::errors::PageError","mcaptcha::errors::ServiceError","","mcaptcha::middleware","mcaptcha::middleware::auth","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages","","","","","","","mcaptcha::pages::auth","","","","","mcaptcha::pages::auth::login","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::register","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::routes","","","","","","","","","","","","","mcaptcha::pages::auth::sudo","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors::routes","","","","","","","","","","","","mcaptcha::pages::panel","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::routes","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings::routes","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey","","","","","","","mcaptcha::pages::panel::sitekey::add","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::delete","","","","","","","","","","mcaptcha::pages::panel::sitekey::edit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::list","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::routes","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::view","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::routes","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::sitemap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::routes","mcaptcha::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets","","","mcaptcha::static_assets::filemap","","","","","","","","","","","","mcaptcha::static_assets::static_files","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets::static_files::assets","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats","","mcaptcha::stats::fetch","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats::fetch::runners","","","mcaptcha::stats::record","","","mcaptcha::widget","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::widget::routes","","","","","","","","","",""],"d":["","","","","","","","","","App data","","","","","","","","","","","","","","","","","points to source files matching build commit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mCaptcha system: Redis cache, etc.","","","credential management configuration","App data: redis cache, database connections, etc.","","","databse pool","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","email client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","User facing CAPTCHA widget","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","update email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","update username","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","returns Ok(()) when everything checks out and the user is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Builder for BuildDetails.","Error type for BuildDetailsBuilder","Health check return datatype","Builder for Health.","Error type for HealthBuilder","Uninitialized field","Uninitialized field","Custom validation error","Custom validation error","","","","","","","","","","","","","","","","","Builds a new BuildDetails.","Builds a new Health.","emmits build details of the bninary","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","checks all components of the system","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that adds a notification message","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that gets all unread notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that marks a notification read","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","PoW Verification module","PoW success token module","","","","","","","","","","","","get PoW configuration for an mcaptcha key","Call this when MCaptcha is not in master.","","","","","","","","","","","","","","","","","","","remove scope for $name route","","","","","","","","","remove scope for $name route","","remove scope for $name route","","","validation token that clients receive as proof for …","","","","","","","","","","","","","","","","","","","","","","","route handler that verifies PoW and issues a solution token","","","","","","","","","","","","","","","","","","","","","","","","","","route hander that validates a PoW solution token","","","","","","","","","","","","","","","","","","","","","","App data","","Mailer data type AsyncSmtpTransport","","Represents mCaptcha cache and master system. When Redis is …","","","","","","mCaptcha system: Redis cache, etc.","credential management configuration","databse pool","","","","","","","","","","email client","","create new instance of app data","","","","","","","","","","","","","","","","","","","","","","","","","print date","","","","","print relative time from date","","","","","","","Demo password","Demo username","","register demo user runner","","","","","","","","","","","","","","","","","","Get an embedded file and its metadata.","","","","","","","","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Email operations: verification, notification, etc","","","","","","","","","","","","","","","","","","","","","when the value passed contains blacklisted words see …","","","email is already taken","","","","","","","","","","","when the value passed contains profainity","","","","","when the a token name is already taken token not found","Unable to send email","when the value passed contains characters not present in …","","when the a username is already taken","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","utility function to get a list of all sitekeys that a user …","","","render a list of all sitekeys that a user has","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get an embedded file and its metadata.","","Get an embedded file and its metadata.","","","","","","","","Iterates over the file paths in the folder.","","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","featch PoWConfig confirms","","","","featch PoWConfig fetches","featch PoWConfig confirms","featch PoWConfig solves","record PoWConfig confirms","record PoWConfig fetches","record PoWConfig solves","","","","","","","","","","","","","","","","","","","","","","","","","","widget services","render a client side widget for CAPTCHA verification","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,19,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,20,19,19,20,0,19,0,20,19,0,11,12,13,14,15,16,17,18,0,0,0,11,12,13,14,15,16,17,18,0,0,11,12,13,14,15,16,17,18,20,0,0,0,19,0,19,0,19,19,0,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,21,22,21,22,21,22,21,22,0,21,22,0,22,21,22,21,22,21,22,0,0,0,21,22,0,21,22,21,22,21,22,21,22,0,21,21,22,23,23,0,23,23,23,0,0,23,23,23,23,0,0,24,25,26,24,25,26,24,24,24,24,0,24,24,25,26,24,25,26,25,26,24,0,0,24,24,25,26,24,25,26,24,25,26,24,25,26,0,0,27,28,29,27,28,29,28,28,27,28,28,28,27,27,28,29,27,28,29,27,28,28,29,28,0,28,27,28,29,27,28,29,27,28,29,0,0,27,28,29,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,31,32,33,31,32,33,31,31,31,31,31,32,33,0,31,32,33,32,33,31,31,0,31,31,32,33,31,32,33,31,32,33,0,31,32,33,0,34,35,36,34,35,36,35,35,35,35,34,35,36,34,35,36,34,36,0,35,0,0,35,34,35,36,34,35,36,34,35,36,35,0,34,35,36,0,37,38,39,37,38,39,37,38,39,37,38,39,0,0,37,38,39,0,0,0,0,37,38,39,37,38,39,37,38,39,37,38,39,0,40,40,40,40,40,40,40,40,40,40,40,40,0,0,0,41,42,43,41,42,43,41,42,43,41,42,43,41,41,42,43,41,41,42,43,41,42,43,41,42,43,42,0,41,42,43,0,41,42,43,41,42,43,41,42,43,41,42,43,41,42,43,41,41,42,43,0,0,0,0,0,0,0,0,0,0,44,45,46,47,48,49,50,51,44,52,45,46,47,48,49,50,51,44,52,44,44,45,46,48,50,44,45,46,48,50,44,0,44,45,46,48,50,44,45,46,48,50,44,45,46,47,48,49,50,51,44,52,0,0,45,46,47,48,49,50,51,44,52,46,48,50,45,46,48,44,47,49,51,52,0,45,46,48,50,44,0,45,46,48,50,44,45,46,47,48,49,50,51,44,52,45,46,47,48,49,50,51,44,52,45,46,47,48,49,50,51,44,52,0,0,45,46,47,48,49,50,51,44,52,0,53,53,53,53,53,53,53,53,53,53,53,53,53,0,0,0,54,55,56,57,58,54,55,56,57,58,54,56,57,54,56,54,55,56,57,58,0,54,55,56,57,58,54,55,58,0,54,56,57,0,57,54,55,56,57,58,54,55,56,57,58,54,55,56,57,58,0,54,55,56,57,58,0,59,59,59,59,59,59,59,59,59,59,59,0,0,0,0,0,0,60,61,62,63,64,65,66,60,61,62,63,64,65,66,65,66,65,66,60,62,60,62,65,66,66,60,62,65,66,60,61,62,63,64,65,66,0,0,60,61,62,63,64,65,66,62,60,62,65,61,63,64,0,60,62,65,66,0,65,66,60,61,62,63,64,65,66,60,61,62,63,64,65,66,60,61,62,63,64,65,66,0,66,60,61,62,63,64,65,66,0,67,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,68,69,68,69,70,71,68,72,73,74,69,75,70,71,68,72,73,74,69,75,71,74,0,70,71,73,74,70,71,73,74,74,73,74,71,74,70,73,70,68,68,73,69,69,70,71,68,68,68,72,73,74,69,69,69,75,71,70,71,0,70,71,68,72,73,74,69,75,73,74,73,74,72,75,0,70,73,0,70,71,73,74,68,69,70,71,68,72,73,74,69,75,70,71,68,72,73,74,69,75,70,71,68,72,73,74,69,75,71,70,71,70,71,68,72,73,74,69,75,76,77,78,79,0,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,81,82,81,82,81,81,82,81,81,82,81,82,81,81,81,82,81,82,81,82,81,82,0,0,83,84,85,83,84,85,84,83,84,84,85,0,83,84,83,84,83,84,85,83,84,83,84,83,84,85,0,84,83,84,85,83,84,85,83,84,85,83,84,85,0,0,0,86,87,88,86,87,88,86,87,86,87,88,87,86,87,86,87,88,0,87,87,87,88,86,87,86,87,88,86,87,88,86,87,88,86,87,88,0,89,89,89,89,89,89,89,89,89,89,89,89,0,0,0,0,0,0,90,91,90,91,90,90,90,90,90,91,0,0,90,91,90,91,90,90,90,91,90,91,90,91,90,91,0,92,92,92,92,92,92,92,0,92,92,92,92,92,92,92,92,92,0,93,94,93,94,93,93,93,93,93,94,93,94,94,93,93,93,93,94,93,94,93,94,0,93,94,0,95,96,95,96,95,95,95,95,95,96,95,96,96,95,95,95,96,95,96,95,96,95,0,95,96,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,98,0,98,0,98,98,20,98,20,20,20,20,0,0,98,20,20,20,98,98,20,20,98,20,98,98,98,98,20,98,20,98,20,98,98,98,20,99,100,0,0,0,0,0,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,0,0,0,0,0,0,0,0,102,103,104,105,102,103,104,105,0,102,103,104,105,102,102,0,0,102,103,104,105,102,102,103,104,105,0,0,0,102,103,104,105,102,103,104,105,102,103,104,105,102,103,104,105,0,106,106,106,106,106,106,106,106,106,106,106,106,0,0,0,107,107,107,107,107,107,107,107,107,107,107,107,107,0,107,107,108,109,109,109,109,109,0,109,110,109,109,0,0,109,109,109,109,0,110,0,0,109,109,109,109,109,109,108,109,111,110,108,109,111,110,111,108,109,110,111,109,110,108,108,109,109,110,110,108,109,109,109,109,109,109,109,109,109,111,110,110,110,108,109,111,110,109,110,111,108,109,110,109,110,108,109,110,108,109,111,110,108,109,111,110,108,109,111,110,108,109,111,110,112,113,114,0,0,0,115,116,115,116,116,115,116,115,116,116,115,116,116,115,116,115,116,115,116,115,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,118,117,119,118,117,119,118,118,118,117,118,117,119,118,117,119,0,119,118,118,118,118,117,119,118,117,119,118,117,119,118,117,119,0,0,0,120,121,120,122,121,120,122,121,121,121,120,121,120,122,121,120,122,0,122,121,121,121,121,120,122,121,120,122,121,120,122,121,120,122,0,123,123,123,123,123,123,123,123,123,123,123,123,0,0,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,0,0,0,0,0,125,126,127,125,126,128,127,125,126,128,127,127,125,126,0,127,125,126,128,127,125,126,128,127,127,128,127,127,0,0,127,127,127,125,126,128,127,125,126,128,127,125,126,128,127,125,126,128,0,129,129,129,129,129,129,129,129,129,129,129,0,0,130,131,130,131,130,130,130,131,130,131,130,0,0,131,130,130,0,0,0,0,130,130,130,131,130,131,130,131,130,131,0,0,0,132,133,134,132,133,134,132,132,133,134,132,132,132,133,134,132,133,132,133,0,132,132,134,133,133,132,133,134,132,133,134,132,133,134,132,133,134,0,135,135,135,135,135,135,135,135,135,135,135,135,135,135,0,0,136,137,138,139,136,137,138,139,136,136,0,136,136,137,138,139,136,137,138,139,137,138,139,136,136,0,136,0,0,136,136,137,138,139,136,137,138,139,136,137,138,139,0,136,136,137,138,139,0,140,140,140,140,140,140,140,140,140,140,140,140,140,0,0,0,0,0,0,0,0,0,0,141,0,141,142,143,141,142,143,142,142,142,141,142,142,142,141,142,143,141,142,143,142,143,142,142,142,141,142,143,141,142,143,141,142,143,141,142,143,144,144,0,144,144,144,144,144,144,144,0,0,0,0,145,146,147,148,145,146,147,148,145,146,147,145,146,147,145,146,145,147,0,145,146,147,148,145,146,147,148,147,147,145,147,147,148,147,147,145,146,147,145,146,147,148,145,146,147,148,145,146,147,148,146,145,146,147,148,0,0,0,149,150,149,150,149,149,149,150,0,149,150,0,149,150,149,149,149,149,149,150,149,150,149,150,149,150,0,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,0,0,0,0,152,153,154,155,152,153,154,155,152,153,154,152,153,154,152,153,152,154,152,153,154,155,152,153,154,155,154,154,152,154,154,155,154,154,154,152,153,154,152,153,154,155,152,153,154,155,152,153,154,155,0,153,152,153,154,155,0,0,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,0,0,157,158,157,159,158,157,159,158,158,158,157,158,158,157,159,158,157,159,159,158,158,0,158,158,157,159,158,157,159,158,157,159,158,158,157,159,0,0,0,0,0,0,0,0,0,19,19,160,161,162,160,163,164,165,166,19,161,162,160,163,164,165,166,19,160,19,0,161,162,160,163,164,165,166,19,161,162,160,163,164,165,166,19,19,161,19,19,162,161,162,160,163,164,165,166,19,161,160,164,161,162,160,163,164,165,166,19,161,162,160,163,164,165,166,19,163,162,161,164,161,162,160,163,164,165,166,19,161,164,19,163,164,160,165,166,161,163,164,161,19,163,162,19,0,0,19,19,161,162,160,163,164,165,166,19,161,162,160,163,164,165,166,19,161,162,160,163,164,165,166,19,161,162,160,163,164,165,166,19,163,164,165,166,161,163,164,161,162,160,163,164,165,166,19,0,0,0,0,167,167,167,167,167,167,167,167,167,167,167,0,0,0,168,169,170,171,168,169,170,171,0,168,169,170,171,168,168,170,170,0,0,168,169,170,171,168,168,170,170,169,171,0,168,169,170,171,168,169,170,171,168,169,170,171,168,169,170,171,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,0,0,0,0,0,172,173,174,172,173,174,172,173,174,172,173,174,172,173,172,173,172,174,172,173,174,172,173,174,172,172,173,174,174,173,0,172,174,172,173,172,173,174,172,173,174,172,173,174,172,173,174,172,172,173,174,0,0,0,0,0,0,0,0,0,0,175,176,175,177,176,175,177,176,176,175,176,175,177,176,175,177,176,177,176,176,0,0,0,176,176,175,177,176,175,177,176,175,177,176,175,177,0,178,178,178,178,178,178,178,178,178,178],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[],["settings",3]],[[],["filemap",3]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["identityservice",3,["cookieidentitypolicy"]],["cookieidentitypolicy",3]]],[[],["jsonconfig",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",6]],null,null,null,null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,[[["serviceconfig",3]]],null,null,[[]],[[]],[[]],[[]],[[],["accountcheckpayload",3]],[[],["accountcheckresp",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],[[["appservice",3]]],null,[[["serviceconfig",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[["str",15],["appdata",6]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["email",3]],[[]],[[],["result",4]],null,null,[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[],["result",4]],[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["changepasswordreqest",3]],[[]],null,null,[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[["changepasswordreqest",3]]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15],["data",3],["updatepassword",3]]],null,[[]],[[]],[[]],null,[[]],[[]],null,null,[[]],null,[[]],[[],["account",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["secret",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[["serviceconfig",3]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["username",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[["accountcheckpayload",3],["appdata",6]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,null,[[],["auth",3]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["register",3]],[[],["login",3]],[[],["password",3]],[[]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["login",3],["appdata",6]]],null,null,null,[[["register",3],["appdata",6]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],null,null,[[["usize",15]],["string",3]],null,[[["serviceconfig",3]]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["defaultdifficultystrategy",3]],[["vec",3,["level"]],["serviceerror",4],["result",4,["vec","serviceerror"]]]],[[],["mcaptchaid",3]],[[],["mcaptchadetails",3]],[[],["deletecaptcha",3]],[[],["statspayload",3]],[[],["userprovidedtrafficpattern",3]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["str",15],["appdata",6]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],null,[[]],[[]],[[],["mcaptcha",3]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[],["duration",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,[[["addlevels",3],["str",15],["appdata",6]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["levels",3]],[[],["i32levels",3]],[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["str",15],["appdata",6]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],[[],["levels",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["result",4,["builddetails","builddetailsbuildererror"]],["builddetails",3],["builddetailsbuildererror",4]]],[[],[["health",3],["result",4,["health","healthbuildererror"]],["healthbuildererror",4]]],null,[[],["builddetails",3]],[[],["builddetailsbuilder",3]],[[],["health",3]],[[],["healthbuilder",3]],[[]],[[]],[[]],[[]],[[["bool",15]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["string",3]]],[[["uninitializedfielderror",3]]],[[]],[[]],[[]],[[]],[[["uninitializedfielderror",3]]],[[["string",3]]],[[]],[[["str",15]]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4]],["bool",15]],[[["option",4,["bool"]],["bool",15]]],null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],null,[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,[[["serviceconfig",3]]],null,null,[[]],[[]],[[]],[[]],[[],["result",4]],[[]],[[]],null,[[]],[[]],null,[[["appservice",3]]],[[],["result",4]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[]],[[["notification",3]]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],null,null,null,null,null,null,[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["str",15],["appdata",6]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],null,null,null,null,[[["appservice",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],null,[[],["notifications",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[["serviceconfig",3]]],null,null,null,[[]],[[]],[[]],[[]],[[],["getconfigpayload",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],null,[[["str",15],["appdata",6]]],[[]],[[]],null,[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,[[]],[[]],[[]],[[],["str",15]],null,[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["str",15]],null,[[],["str",15]],null,[[]],null,[[]],[[]],[[]],[[]],[[],["validationtoken",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[],["captchavalidateresp",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],null,null,null,null,[[]],[[]],null,[[]],[[]],null,null,null,[[],["routes",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,[[["addsite",3]]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[],["config",3]],[[],[["option",4,["asyncsmtptransport"]],["asyncsmtptransport",3,["tokio1executor"]]]],[[["string",3]]],[[]],[[]],null,[[]],[[]],[[["save",8],["mastertrait",8],["addr",3],["addr",3]],[["system",3],["save",8],["mastertrait",8]]],[[["removecaptcha",3]]],[[["rename",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["verifycaptcharesult",3]]],[[["work",3]]],[[]],[[]],null,null,null,null,null,null,null,[[]],[[]],[[],["date",3]],[[]],[[],["string",3]],[[["formatter",3]],["result",6]],[[["offsetdatetime",3]],["string",3]],[[]],[[]],[[],["string",3]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[["appdata",6]]],[[["appdata",6]]],[[["appdata",6],["duration",3]]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[["str",15]],[["embeddedfile",3],["option",4,["embeddedfile"]]]],[[["str",15]],[["embeddedfile",3],["option",4,["embeddedfile"]]]],[[["str",15]],["httpresponse",3]],null,[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[["str",15]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["str",15],["data",3]]],null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["bool",15]],[[["serviceerror",4]],["bool",15]],[[["pageerror",4]],["bool",15]],null,[[],["httpresponse",3]],[[],["httpresponse",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["captchaerror",4]],["serviceerror",4]],[[["credserror",4]],["serviceerror",4]],[[["validationerrors",3]],["serviceerror",4]],[[["parseerror",4]],["serviceerror",4]],[[["error",4]]],[[["smtperror",3]]],[[]],[[["recverror",3]]],[[["mailboxerror",4]]],[[]],[[]],[[["error",4]]],[[["serviceerror",4]]],[[]],[[]],[[]],[[]],[[["serviceerror",4]],["bool",15]],[[["pageerror",4]],["bool",15]],[[],["result",4]],[[],[["error",8],["option",4,["error"]]]],[[],[["error",8],["option",4,["error"]]]],[[],[["error",8],["option",4,["error"]]]],[[],["statuscode",3]],[[],["statuscode",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["servicerequest",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["context",3]],[["poll",4,["result"]],["result",4]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,null,[[],["auth",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[]],[[]],[[],["sudopage",3]],[[]],null,[[]],[[]],[[["vec",3],["str",15],["option",4,["vec"]]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["errorpage",3]],[[]],[[],["string",3]],[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["str",15]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[]],[[]],[[["vec",3,["mcaptchadetails"]],["mcaptchadetails",3]]],null,null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],null,[[["serviceconfig",3]]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["notification",3]]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,null,null,[[["vec",3,["notification"]],["notification",3]]],null,[[],["string",3]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],null,null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchaconfig",3]],[[],["level",3]],[[],["indexpage",3]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[["vec",3,["level"]],["mcaptchaconfig",3],["level",3],["string",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[["identity",3],["appdata",6]]],[[]],[[]],null,[[["vec",3,["mcaptchadetails"]],["mcaptchadetails",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchaconfig",3]],[[],["level",3]],[[],["indexpage",3]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[["mcaptchaconfig",3],["vec",3,["level"]],["string",3],["stats",3],["level",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],null,null,[[]],[[]],null,[[]],[[],["routes",3]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[["serviceconfig",3]]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["config",3]]],[[],["server",3]],[[],["captcha",3]],[[],["defaultdifficultystrategy",3]],[[],["smtp",3]],[[],["databasebuilder",3]],[[],["database",3]],[[],["redis",3]],[[],["settings",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],[["result",4,["configerror"]],["configerror",4]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["config",3],["databasebuilder",3]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["serviceconfig",3]]],null,null,[[]],[[]],null,[[]],[[["str",15]],[["option",4,["str"]],["str",15]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[["str",15]],[["embeddedfile",3],["option",4,["embeddedfile"]]]],[[["str",15]],[["embeddedfile",3],["option",4,["embeddedfile"]]]],[[["str",15]],[["embeddedfile",3],["option",4,["embeddedfile"]]]],[[["str",15]],[["embeddedfile",3],["option",4,["embeddedfile"]]]],[[["str",15]],["httpresponse",3]],[[["str",15]],["httpresponse",3]],[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[]],[[],["filenames",4]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["statsunixtimestamp",3]],[[],["stats",3]],[[],["statspayload",3]],[[]],[[]],[[]],null,null,null,null,[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["stats",3]]],[[]],[[]],[[]],null,[[["str",15],["pgpool",6]]],null,[[],["result",4]],[[],["result",4]],null,null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],[["vec",3,["i64"]],["i64",15]]],[[]],[[]],[[]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["result",4,["rendererror"]],["rendererror",4]]],null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]]],"p":[[3,"KEY"],[3,"GITHUB"],[3,"HOME"],[3,"SETTINGS_ICON"],[3,"CREDIT_CARD"],[3,"HELP_CIRCLE"],[3,"MESSAGE"],[3,"DOCS_ICON"],[3,"MCAPTCHA_TRANS_ICON"],[3,"BAR_CHART"],[3,"SETTINGS"],[3,"FILES"],[3,"JS"],[3,"CSS"],[3,"MOBILE_CSS"],[3,"VERIFICATIN_WIDGET_JS"],[3,"VERIFICATIN_WIDGET_CSS"],[3,"SOURCE_FILES_OF_INSTANCE"],[3,"Settings"],[3,"Data"],[3,"AccountCheckPayload"],[3,"AccountCheckResp"],[3,"delete_account"],[3,"Email"],[3,"email_exists"],[3,"set_email"],[3,"UpdatePassword"],[3,"ChangePasswordReqest"],[3,"update_user_password"],[3,"Account"],[3,"Secret"],[3,"get_secret"],[3,"update_user_secret"],[3,"username_exists"],[3,"Username"],[3,"set_username"],[3,"register"],[3,"login"],[3,"signout"],[3,"Auth"],[3,"Register"],[3,"Login"],[3,"Password"],[3,"UserProvidedTrafficPattern"],[3,"MCaptchaID"],[3,"MCaptchaDetails"],[3,"update_token"],[3,"DeleteCaptcha"],[3,"delete_mcaptcha"],[3,"StatsPayload"],[3,"get_stats"],[3,"from_user_provided_traffic_pattern"],[3,"MCaptcha"],[3,"UpdateDuration"],[3,"update_duration"],[3,"GetDurationResp"],[3,"GetDuration"],[3,"get_duration"],[3,"Duration"],[3,"AddLevels"],[3,"add_levels"],[3,"UpdateLevels"],[3,"update_levels"],[3,"get_levels"],[3,"Levels"],[3,"I32Levels"],[3,"Levels"],[4,"BuildDetailsBuilderError"],[4,"HealthBuilderError"],[3,"BuildDetails"],[3,"BuildDetailsBuilder"],[3,"build_details"],[3,"Health"],[3,"HealthBuilder"],[3,"health"],[13,"UninitializedField"],[13,"ValidationError"],[13,"UninitializedField"],[13,"ValidationError"],[3,"Meta"],[3,"AddNotification"],[3,"add_notification"],[3,"Notification"],[3,"NotificationResp"],[3,"get_notification"],[3,"MarkReadReq"],[3,"NotificationResp"],[3,"mark_read"],[3,"Notifications"],[3,"GetConfigPayload"],[3,"get_config"],[3,"PoW"],[3,"ValidationToken"],[3,"verify_pow"],[3,"CaptchaValidateResp"],[3,"validate_captcha_token"],[3,"Routes"],[4,"SystemGroup"],[13,"Embedded"],[13,"Redis"],[3,"Date"],[3,"Asset"],[3,"dist"],[3,"spec"],[3,"index"],[3,"Docs"],[3,"IndexPage"],[3,"SmtpErrorWrapper"],[4,"ServiceError"],[4,"PageError"],[3,"ErrorToResponse"],[13,"ServiceError"],[13,"UnableToSendEmail"],[13,"CaptchaError"],[3,"CheckLogin"],[3,"CheckLoginMiddleware"],[3,"INDEX"],[3,"IndexPage"],[3,"login"],[3,"INDEX"],[3,"IndexPage"],[3,"join"],[3,"Auth"],[3,"SudoPage"],[3,"INTERNAL_SERVER_ERROR_BODY"],[3,"UNKNOWN_ERROR_BODY"],[3,"ErrorPage"],[3,"error"],[3,"Errors"],[3,"IndexPage"],[3,"panel"],[3,"Notification"],[3,"IndexPage"],[3,"notifications"],[3,"Panel"],[3,"IndexPage"],[3,"settings"],[3,"delete_account"],[3,"update_secret"],[3,"Settings"],[3,"INDEX"],[3,"IndexPage"],[3,"add_sitekey"],[3,"delete_sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"IndexPage"],[3,"edit_sitekey"],[3,"IndexPage"],[3,"list_sitekeys"],[3,"Sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"IndexPage"],[3,"view_sitekey"],[3,"Routes"],[3,"INDEX"],[3,"IndexPage"],[3,"sitemap"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"],[3,"FileMap"],[3,"Asset"],[3,"static_files"],[3,"Favicons"],[3,"favicons"],[3,"StatsUnixTimestamp"],[3,"Stats"],[3,"StatsPayload"],[3,"INDEX_PAGE"],[3,"IndexPage"],[3,"show_widget"],[3,"Widget"]]},\ -"tests_migrate":{"doc":"","t":[3,3,12,12,12,11,11,5,5,12,12,12,12,11,11,11,5,12,12,0,12,12,11,11,11,11,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11],"n":["SETTINGS","Settings","__private_field","allow_demo","allow_registration","borrow","borrow_mut","build","cache_bust","captcha","commercial","database","debug","deref","from","into","main","redis","server","settings","smtp","source_code","try_from","try_into","type_id","vzip","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":["tests_migrate","","","","","","","","","","","","","","","","","","","","","","","","","","tests_migrate::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,1,2,2,1,1,0,0,2,2,2,2,1,1,1,0,2,2,0,2,2,1,1,1,1,0,0,0,0,0,0,0,0,2,2,3,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,3,2,0,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,2,4,2,2,5,4,5,3,6,7,8,9,2,4,3,7,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,5,4,7,4,5,3,6,7,8,9,2,4,7,2,6,7,3,8,9,4,6,7,4,2,6,5,2,0,0,2,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,7,8,9,4,6,7,4,5,3,6,7,8,9,2],"f":[null,null,null,null,null,[[]],[[]],[[]],[[]],null,null,null,null,[[],["settings",3]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["config",3]]],[[],["server",3]],[[],["captcha",3]],[[],["defaultdifficultystrategy",3]],[[],["smtp",3]],[[],["databasebuilder",3]],[[],["database",3]],[[],["redis",3]],[[],["settings",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],[["configerror",4],["result",4,["configerror"]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["config",3],["databasebuilder",3]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]],"p":[[3,"SETTINGS"],[3,"Settings"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"]]}\ +"mcaptcha":{"doc":"","t":[6,3,17,17,3,3,3,17,3,3,3,3,17,3,3,3,3,3,3,3,17,17,17,17,3,3,3,3,17,3,3,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,0,12,0,12,12,0,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,12,5,0,0,12,0,12,0,12,12,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,5,3,3,11,11,11,11,11,11,11,11,0,11,11,0,12,11,11,11,11,11,11,0,0,0,11,11,5,11,11,11,11,11,11,11,11,0,12,11,11,11,11,3,11,11,11,0,5,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,12,3,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,12,12,12,11,11,5,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,3,11,11,12,12,11,12,11,11,11,11,11,12,12,12,12,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,11,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,5,3,11,11,11,11,11,11,11,11,11,11,12,3,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,0,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,12,11,12,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,12,5,12,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,0,0,0,0,5,0,5,0,0,3,3,11,11,11,11,11,11,11,11,3,12,11,11,12,11,11,11,11,11,11,11,12,12,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,3,11,11,11,11,11,11,3,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,3,11,11,12,11,11,11,11,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,11,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,5,3,11,11,12,12,12,11,12,11,11,12,11,11,11,12,12,11,3,11,11,11,11,11,11,11,11,11,11,3,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,11,3,11,11,11,11,11,11,12,11,12,11,11,11,11,11,11,12,12,11,11,0,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,5,5,3,3,4,3,3,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,3,11,11,11,11,11,11,11,11,11,11,12,12,11,11,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,3,11,11,12,11,12,11,11,11,11,11,11,0,0,0,0,5,3,3,11,11,11,11,11,11,11,12,11,11,12,11,11,12,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,3,12,12,12,12,11,11,11,12,12,12,12,12,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,5,3,3,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,12,11,11,11,11,11,0,0,5,0,0,3,11,11,11,11,11,11,11,11,11,11,3,5,11,11,12,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,14,12,11,11,11,11,12,11,12,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,11,11,17,3,12,12,11,11,12,11,11,12,11,12,12,11,11,11,11,3,13,6,13,4,11,11,11,11,11,12,12,12,14,14,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,17,3,17,17,17,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,17,17,3,11,11,11,12,11,12,11,12,11,11,11,11,11,11,11,11,3,17,17,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,5,3,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,12,11,11,12,11,11,11,11,0,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,5,12,11,12,13,13,13,13,13,3,13,13,13,13,4,6,13,13,13,13,4,13,6,3,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,0,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,17,0,0,0,0,5,0,0,0,0,5,0,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,12,12,11,11,11,11,11,17,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,12,11,17,3,3,17,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11,11,11,11,0,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,12,11,11,11,11,11,12,11,3,17,11,11,11,11,11,11,11,11,11,11,11,0,3,11,11,11,0,5,0,0,12,11,11,11,11,11,11,11,11,11,3,3,17,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,12,11,3,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,12,11,11,12,12,12,11,11,11,11,3,17,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,0,12,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,3,11,11,12,11,11,12,11,11,11,11,11,12,11,0,0,0,0,0,5,0,3,3,17,12,3,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,3,3,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,3,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,3,17,6,11,11,11,11,11,11,11,11,5,11,11,3,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,12,11,11,12,12,11,11,11,12,11,11,11,11,12,11,3,3,3,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,12,11,11,11,11,17,3,12,12,11,11,12,12,11,11,12,11,11,12,12,12,12,12,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,12,11,11,11,5,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,0,5,0,3,11,11,12,11,11,11,11,11,11,11,11,3,3,0,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,3,6,3,3,3,3,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,3,3,17,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,5,3,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,12,11],"n":["AppData","BAR_CHART","CACHE_AGE","COMPILED_DATE","CREDIT_CARD","CSS","CheckLogin","DOCS","DOCS_ICON","Data","FILES","GITHUB","GIT_COMMIT_HASH","HELP_CIRCLE","HOME","JS","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","MOBILE_CSS","PAGES","PKG_DESCRIPTION","PKG_HOMEPAGE","PKG_NAME","SETTINGS","SETTINGS_ICON","SOURCE_FILES_OF_INSTANCE","Settings","V1_API_ROUTES","VERIFICATIN_WIDGET_CSS","VERIFICATIN_WIDGET_JS","VERSION","WIDGET_ROUTES","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","allow_demo","allow_registration","api","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","captcha","captcha","commercial","creds","data","database","date","db","debug","demo","deref","deref","deref","deref","deref","deref","deref","deref","docs","email","errors","from","from","from","from","from","from","from","from","get_identity_service","get_json_err","into","into","into","into","into","into","into","into","mailer","main","middleware","pages","redis","routes","server","settings","smtp","source_code","static_assets","stats","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","widget","v1","account","auth","mcaptcha","meta","notifications","pow","routes","services","AccountCheckPayload","AccountCheckResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","delete","deserialize","deserialize","email","exists","fmt","fmt","from","from","into","into","password","routes","secret","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","username","val","vzip","vzip","borrow","borrow_mut","delete_account","from","into","register","runners","services","try_from","try_into","type_id","vzip","delete_user","Email","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","email","email_exists","fmt","from","from","from","into","into","into","register","register","serialize","services","set_email","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","ChangePasswordReqest","UpdatePassword","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","confirm_new_password","confirm_new_password","deserialize","fmt","from","from","from","from","into","into","into","new_password","new_password","password","register","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_password_runner","update_user_password","vzip","vzip","vzip","Account","borrow","borrow_mut","delete","email_exists","from","get_secret","into","new","try_from","try_into","type_id","update_email","update_password","update_secret","update_username","username_exists","vzip","Secret","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","get_secret","into","into","into","register","register","secret","serialize","services","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_user_secret","vzip","vzip","vzip","Username","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","from","into","into","into","register","register","runners","serialize","services","set_username","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","username_exists","vzip","vzip","vzip","username_exists","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","into","into","into","login","register","register","register","register","routes","runners","services","signout","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","into","login","logout","new","register","try_from","try_into","type_id","vzip","Login","Password","Register","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirm_password","deserialize","deserialize","deserialize","email","fmt","fmt","fmt","from","from","from","into","into","into","login","login_runner","password","password","password","register_runner","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","username","vzip","vzip","vzip","create","delete","easy","get","get_random","routes","services","stats","update","CreateCaptcha","MCaptchaDetails","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","create","description","deserialize","deserialize","duration","fmt","from","from","from","into","into","into","key","levels","name","register","runner","serialize","serialize","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","create","DeleteCaptcha","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","delete","deserialize","fmt","from","from","into","into","key","password","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","TrafficPattern","UpdateTrafficPattern","avg_traffic","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic","calculate","clone","clone","clone_into","clone_into","create","description","deserialize","deserialize","fmt","fmt","from","from","from","from","into","into","into","into","key","pattern","peak_sustainable_traffic","register","register","routes","serialize","serialize","services","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","Easy","borrow","borrow_mut","create","from","into","new","try_from","try_into","type_id","update","vzip","I32Levels","Levels","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deserialize","deserialize","difficulty_factor","fmt","fmt","from","from","from","get_captcha","into","into","into","levels","register","runner","serialize","serialize","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","visitor_threshold","vzip","vzip","vzip","get_captcha","Captcha","borrow","borrow_mut","create","delete","easy","from","get","into","new","stats","try_from","try_into","type_id","update","update_key","vzip","StatsPayload","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","get","into","into","key","register","routes","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Stats","borrow","borrow_mut","from","get","into","new","try_from","try_into","type_id","vzip","UpdateCaptcha","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","description","deserialize","duration","from","from","from","into","into","into","key","levels","register","register","runner","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_captcha","update_key","vzip","vzip","vzip","update_captcha","update_key","BuildDetails","BuildDetailsBuilder","BuildDetailsBuilderError","Health","HealthBuilder","HealthBuilderError","UninitializedField","UninitializedField","ValidationError","ValidationError","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build_details","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","db","db","db","default","default","deserialize","deserialize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","git_commit_hash","git_commit_hash","git_commit_hash","health","into","into","into","into","into","into","into","into","is_redis","redis","redis","redis","register","register","routes","serialize","serialize","services","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","version","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","Meta","borrow","borrow_mut","build_details","from","health","into","new","try_from","try_into","type_id","vzip","add","get","mark_read","routes","services","AddNotification","add_notification","borrow","borrow","borrow_mut","borrow_mut","deserialize","from","from","heading","into","into","message","register","serialize","to","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Notification","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","from","from","from","from","get_notification","heading","heading","id","id","into","into","into","message","message","name","name","received","received","register","runner","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","get_notification","MarkReadReq","NotificationResp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","deserialize","from","from","from","heading","id","id","into","into","into","mark_read","message","name","received","register","serialize","serialize","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Notifications","add","borrow","borrow_mut","from","get","into","mark_read","new","try_from","try_into","type_id","vzip","get_config","routes","services","verify_pow","verify_token","GetConfigPayload","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","get_config","init_mcaptcha","into","into","key","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","PoW","borrow","borrow_mut","from","get_config","get_config","into","new","rm_scope","scope","try_from","try_into","type_id","validate_captcha_token","validate_captcha_token","verify_pow","verify_pow","vzip","ValidationToken","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","token","try_from","try_from","try_into","try_into","type_id","type_id","verify_pow","vzip","vzip","CaptchaValidateResp","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","fmt","from","from","into","into","register","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","valid","validate_captcha_token","vzip","vzip","ROUTES","Routes","account","auth","borrow","borrow_mut","captcha","from","into","meta","new","notifications","pow","try_from","try_into","type_id","vzip","Data","Embedded","Mailer","Redis","SystemGroup","add_site","borrow","borrow","borrow_mut","borrow_mut","captcha","creds","db","enum_system_actor","enum_system_wrapper","from","from","get_creds","get_mailer","get_pow","into","into","mailer","new","new","new_system","remove","rename","try_from","try_from","try_into","try_into","type_id","type_id","validate_verification_tokens","verify_pow","vzip","vzip","0","0","DAY","Date","HOUR","MINUTE","WEEK","borrow","borrow_mut","clone","clone_into","date","fmt","format","from","into","print_date","time","to_owned","try_from","try_into","type_id","vzip","DEMO_PASSWORD","DEMO_USER","DemoUser","abort","borrow","borrow_mut","data","delete_demo_user","duration","from","handle","into","register_demo_user","run","spawn","try_from","try_into","type_id","vzip","Asset","DOCS","OPEN_API_SPEC","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","dist","from","from","from","from","get","get","handle_embedded_file","index","into","into","into","into","iter","iter","register","register","register","routes","services","spec","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Docs","assets","borrow","borrow_mut","from","home","into","new","spec","try_from","try_into","type_id","vzip","verification","IndexPage","PAGE","borrow","borrow_mut","clone","clone_into","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","verification","verification_link","vzip","0","AccountNotFound","BlacklistError","CaptchaError","ClosedForRegistration","EmailTaken","ErrorToResponse","InternalServerError","InternalServerError","NotAUrl","NotAnEmail","PageError","PageResult","PasswordTooLong","PasswordTooShort","PasswordsDontMatch","ProfainityError","ServiceError","ServiceError","ServiceResult","SmtpErrorWrapper","TokenNotFound","UnableToSendEmail","UsernameCaseMappedError","UsernameNotFound","UsernameTaken","WrongPassword","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deserialize","eq","eq","eq","error","error_response","error_response","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","ne","ne","serialize","source","source","source","status_code","status_code","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","0","0","0","auth","CheckLogin","CheckLoginMiddleware","borrow","borrow","borrow_mut","borrow_mut","call","from","from","into","into","into_service","new_transform","poll_ready","service","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","NAME","auth","errors","panel","routes","services","sitemap","login","register","routes","services","sudo","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","login","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","INDEX","IndexPage","PAGE","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","from","from","from","into","into","into","join","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Auth","borrow","borrow_mut","from","get_sitemap","into","join","login","new","try_from","try_into","type_id","vzip","PAGE","SudoPage","borrow","borrow_mut","clone","clone_into","data","from","into","new","render_once","render_once_to","to_owned","try_from","try_into","type_id","url","vzip","ERROR_ROUTE","ErrorPage","INTERNAL_SERVER_ERROR_BODY","PAGE","UNKNOWN_ERROR_BODY","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","deref","error","from","from","from","from","into","into","into","into","message","new","register","render_once","render_once_to","routes","services","title","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Errors","borrow","borrow_mut","from","internal_server_error","into","new","try_from","try_into","type_id","unknown_error","vzip","IndexPage","PAGE","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","into","into","new","notifications","panel","register","render_once","render_once_to","routes","services","settings","sitekey","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","IndexPage","Notification","PAGE","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","from","heading","id","into","into","into","message","n","name","new","notifications","print_date","received","register","render_once","render_once_to","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Panel","borrow","borrow_mut","from","get_sitemap","home","into","new","notifications","settings","sitekey","try_from","try_into","type_id","vzip","IndexPage","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","delete_account","email","from","from","from","from","into","into","into","into","register","register","register","render_once","render_once_to","routes","secret","services","settings","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","update_secret","username","vzip","vzip","vzip","vzip","Settings","borrow","borrow_mut","delete_account","from","get_sitemap","home","into","new","try_from","try_into","type_id","update_secret","vzip","add","delete","edit","list","routes","services","view","INDEX","IndexPage","PAGE","__private_field","add_sitekey","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","form_description","form_duration","form_title","from","from","from","into","into","into","levels","register","render_once","render_once_to","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","borrow","borrow_mut","delete_sitekey","from","into","register","try_from","try_into","type_id","vzip","IndexPage","Level","McaptchaConfig","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","edit_sitekey","from","from","from","from","into","into","into","into","key","levels","name","name","new","register","render_once","render_once_to","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","visitor_threshold","vzip","vzip","vzip","vzip","IndexPage","PAGE","SiteKeys","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_list_sitekeys","into","into","list_sitekeys","new","register","render_once","render_once_to","sitekeys","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Sitekey","add","borrow","borrow_mut","delete","edit","from","get_sitemap","into","list","new","try_from","try_into","type_id","view","vzip","IndexPage","Level","McaptchaConfig","PAGE","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_id","difficulty_factor","duration","duration","from","from","from","from","into","into","into","into","key","levels","name","name","new","register","render_once","render_once_to","stats","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","view_sitekey","visitor_threshold","vzip","vzip","vzip","vzip","ROUTES","Routes","about","auth","borrow","borrow_mut","donate","errors","from","get_sitemap","home","into","new","panel","privacy","security","sitemap","thanks","try_from","try_into","type_id","vzip","INDEX","IndexPage","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","deref","domain","from","from","from","into","into","into","register","render_once","render_once_to","sitemap","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","urls","vzip","vzip","vzip","services","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","filemap","services","static_files","FileMap","borrow","borrow_mut","files","from","get","into","new","try_from","try_into","type_id","vzip","Asset","Favicons","assets","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","favicons","from","from","from","from","get","get","get","get","handle_assets","handle_favicons","into","into","into","into","iter","iter","iter","iter","register","register","static_files","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","BAR_CHART","CREDIT_CARD","DOCS_ICON","GITHUB","HELP_CIRCLE","HOME","Img","KEY","MCAPTCHA_TRANS_ICON","MESSAGE","SETTINGS_ICON","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","fetch","record","Stats","StatsPayload","StatsUnixTimestamp","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config_fetches","config_fetches","confirms","confirms","deserialize","deserialize","fmt","fmt","fmt","from","from","from","from_stats","into","into","into","key","new","runners","serialize","serialize","solves","solves","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unix_timestamp","vzip","vzip","vzip","fetch_config_fetched","fetch_confirm","fetch_solve","record_confirm","record_fetch","record_solve","INDEX_PAGE","IndexPage","PAGE","WIDGET_ROUTES","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","from","from","from","into","into","into","new","register","render_once","render_once_to","routes","services","show_widget","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Widget","borrow","borrow_mut","from","into","new","try_from","try_into","type_id","verification_widget","vzip"],"q":["mcaptcha","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api","mcaptcha::api::v1","","","","","","","","mcaptcha::api::v1::account","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::delete","","","","","","","","","","","","mcaptcha::api::v1::account::delete::runners","mcaptcha::api::v1::account::email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::password","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::secret","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::account::username::runners","mcaptcha::api::v1::auth","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::auth::routes","","","","","","","","","","","","","mcaptcha::api::v1::auth::runners","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha","","","","","","","","","mcaptcha::api::v1::mcaptcha::create","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::create::runner","mcaptcha::api::v1::mcaptcha::delete","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::easy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::easy::routes","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::get","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::get::runner","mcaptcha::api::v1::mcaptcha::routes","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::stats","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::stats::routes","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::update","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::mcaptcha::update::runner","","mcaptcha::api::v1::meta","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::meta::BuildDetailsBuilderError","","mcaptcha::api::v1::meta::HealthBuilderError","","mcaptcha::api::v1::meta::routes","","","","","","","","","","","","mcaptcha::api::v1::notifications","","","","","mcaptcha::api::v1::notifications::add","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::get::runner","mcaptcha::api::v1::notifications::mark_read","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::notifications::routes","","","","","","","","","","","","","mcaptcha::api::v1::pow","","","","","mcaptcha::api::v1::pow::get_config","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::routes","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_pow","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::pow::verify_token","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::api::v1::routes","","","","","","","","","","","","","","","","","mcaptcha::data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::data::SystemGroup","","mcaptcha::date","","","","","","","","","","","","","","","","","","","","","mcaptcha::demo","","","","","","","","","","","","","","","","","","","mcaptcha::docs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::docs::routes","","","","","","","","","","","","","mcaptcha::email","mcaptcha::email::verification","","","","","","","","","","","","","","","","","","mcaptcha::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::errors::PageError","mcaptcha::errors::ServiceError","","mcaptcha::middleware","mcaptcha::middleware::auth","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages","","","","","","","mcaptcha::pages::auth","","","","","mcaptcha::pages::auth::login","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::register","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::auth::routes","","","","","","","","","","","","","mcaptcha::pages::auth::sudo","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::errors::routes","","","","","","","","","","","","mcaptcha::pages::panel","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::routes","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::settings::routes","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey","","","","","","","mcaptcha::pages::panel::sitekey::add","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::delete","","","","","","","","","","mcaptcha::pages::panel::sitekey::edit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::list","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::routes","","","","","","","","","","","","","","","","mcaptcha::pages::panel::sitekey::view","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::routes","","","","","","","","","","","","","","","","","","","","","","mcaptcha::pages::sitemap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::routes","mcaptcha::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets","","","mcaptcha::static_assets::filemap","","","","","","","","","","","","mcaptcha::static_assets::static_files","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::static_assets::static_files::assets","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats","","mcaptcha::stats::fetch","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::stats::fetch::runners","","","mcaptcha::stats::record","","","mcaptcha::widget","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mcaptcha::widget::routes","","","","","","","","","",""],"d":["","","","","","","","","","App data","","","","","","","","","","","","","","","","","points to source files matching build commit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mCaptcha system: Redis cache, etc.","","","credential management configuration","App data: redis cache, database connections, etc.","","","databse pool","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","email client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","User facing CAPTCHA widget","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","update email","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","update username","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","returns Ok(()) when everything checks out and the user is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","easy is using defaults","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Builder for BuildDetails.","Error type for BuildDetailsBuilder","Health check return datatype","Builder for Health.","Error type for HealthBuilder","Uninitialized field","Uninitialized field","Custom validation error","Custom validation error","","","","","","","","","","","","","","","","","Builds a new BuildDetails.","Builds a new Health.","emmits build details of the bninary","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","checks all components of the system","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that adds a notification message","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that gets all unread notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that marks a notification read","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","PoW Verification module","PoW success token module","","","","","","","","","","","","get PoW configuration for an mcaptcha key","Call this when MCaptcha is not in master.","","","","","","","","","","","","","","","","","","","remove scope for $name route","","","","","","","","","remove scope for $name route","","remove scope for $name route","","","validation token that clients receive as proof for …","","","","","","","","","","","","","","","","","","","","","","","route handler that verifies PoW and issues a solution token","","","","","","","","","","","","","","","","","","","","","","","","","","route hander that validates a PoW solution token","","","","","","","","","","","","","","","","","","","","App data","","Mailer data type AsyncSmtpTransport","","Represents mCaptcha cache and master system. When Redis is …","","","","","","mCaptcha system: Redis cache, etc.","credential management configuration","databse pool","","","","","","","","","","email client","","create new instance of app data","","","","","","","","","","","","","","","","","","","","","","","","","print date","","","","","print relative time from date","","","","","","","Demo password","Demo username","","","","","","","","","","","register demo user runner","","","","","","","","","","","","","","","","","","","","","","","Get an embedded file and its metadata.","","","","","","","","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Email operations: verification, notification, etc","","","","","","","","","","","","","","","","","","","","","when the value passed contains blacklisted words see …","","","email is already taken","","","","","","","","","","","when the value passed contains profainity","","","","","when the a token name is already taken token not found","Unable to send email","when the value passed contains characters not present in …","","when the a username is already taken","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","notifications","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","utility function to get a list of all sitekeys that a user …","","","render a list of all sitekeys that a user has","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","route handler that renders individual views for sitekeys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get an embedded file and its metadata.","","Get an embedded file and its metadata.","","","","","","","","Iterates over the file paths in the folder.","","Iterates over the file paths in the folder.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","featch PoWConfig confirms","","","","featch PoWConfig fetches","featch PoWConfig confirms","featch PoWConfig solves","record PoWConfig confirms","record PoWConfig fetches","record PoWConfig solves","","","","","","","","","","","","","","","","","","","","","","","","","","widget services","render a client side widget for CAPTCHA verification","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,19,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,20,19,19,20,0,19,0,20,19,0,11,12,13,14,15,16,17,18,0,0,0,11,12,13,14,15,16,17,18,0,0,11,12,13,14,15,16,17,18,20,0,0,0,19,0,19,0,19,19,0,0,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,11,12,13,14,15,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,21,22,21,22,21,22,21,22,0,21,22,0,22,21,22,21,22,21,22,0,0,0,21,22,0,21,22,21,22,21,22,21,22,0,21,21,22,23,23,0,23,23,23,0,0,23,23,23,23,0,0,24,25,26,24,25,26,24,24,24,24,0,24,24,25,26,24,25,26,25,26,24,0,0,24,24,25,26,24,25,26,24,25,26,24,25,26,0,0,27,28,29,27,28,29,28,28,27,28,28,28,27,27,28,29,27,28,29,27,28,28,29,28,0,28,27,28,29,27,28,29,27,28,29,0,0,27,28,29,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,31,32,33,31,32,33,31,31,31,31,31,32,33,0,31,32,33,32,33,31,31,0,31,31,32,33,31,32,33,31,32,33,0,31,32,33,0,34,35,36,34,35,36,35,35,35,35,34,35,36,34,35,36,34,36,0,35,0,0,35,34,35,36,34,35,36,34,35,36,35,0,34,35,36,0,37,38,39,37,38,39,37,38,39,37,38,39,0,0,37,38,39,0,0,0,0,37,38,39,37,38,39,37,38,39,37,38,39,0,40,40,40,40,40,40,40,40,40,40,40,40,0,0,0,41,42,43,41,42,43,41,42,43,41,42,43,41,41,42,43,41,41,42,43,41,42,43,41,42,43,42,0,41,42,43,0,41,42,43,41,42,43,41,42,43,41,42,43,41,42,43,41,41,42,43,0,0,0,0,0,0,0,0,0,0,0,44,45,46,44,45,46,45,45,0,44,44,45,44,45,44,45,46,44,45,46,45,44,45,46,0,44,45,45,44,45,46,44,45,46,44,45,46,44,45,46,0,0,47,48,47,48,47,47,0,47,47,47,48,47,48,47,47,48,47,47,47,48,47,48,47,48,47,48,0,0,49,49,50,51,52,49,50,51,52,49,49,49,51,49,51,0,49,49,51,49,51,49,50,51,52,49,50,51,52,51,51,49,50,52,0,49,51,0,49,51,49,50,51,52,49,50,51,52,49,50,51,52,0,49,50,51,52,0,53,53,53,53,53,53,53,53,53,53,53,0,0,54,55,56,54,55,56,55,56,55,56,55,56,56,55,56,54,55,56,0,54,55,56,55,54,0,55,56,55,56,54,55,56,54,55,56,54,55,56,56,54,55,56,0,0,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,0,58,59,58,59,58,58,58,58,58,59,0,58,59,58,59,0,58,58,58,59,58,59,58,59,58,59,0,60,60,60,60,60,60,60,60,60,60,0,61,62,63,61,62,63,62,62,62,61,62,63,61,62,63,62,62,61,63,0,62,61,62,63,61,62,63,61,62,63,0,0,61,62,63,0,0,0,0,0,0,0,0,64,65,64,65,66,67,64,68,69,70,65,71,66,67,64,68,69,70,65,71,67,70,0,66,67,69,70,66,67,69,70,70,69,70,67,70,66,69,66,64,64,69,65,65,66,67,64,64,64,68,69,70,65,65,65,71,67,66,67,0,66,67,64,68,69,70,65,71,69,70,69,70,68,71,0,66,69,0,66,67,69,70,64,65,66,67,64,68,69,70,65,71,66,67,64,68,69,70,65,71,66,67,64,68,69,70,65,71,67,66,67,66,67,64,68,69,70,65,71,72,73,74,75,0,76,76,76,76,76,76,76,76,76,76,76,0,0,0,0,0,0,0,77,78,77,78,77,77,78,77,77,78,77,78,77,77,77,78,77,78,77,78,77,78,0,0,79,80,81,79,80,81,80,79,80,80,81,0,79,80,79,80,79,80,81,79,80,79,80,79,80,81,0,80,79,80,81,79,80,81,79,80,81,79,80,81,0,0,0,82,83,84,82,83,84,82,83,82,83,84,83,82,83,82,83,84,0,83,83,83,84,82,83,82,83,84,82,83,84,82,83,84,82,83,84,0,85,85,85,85,85,85,85,85,85,85,85,85,0,0,0,0,0,0,86,87,86,87,86,86,86,86,86,87,0,0,86,87,86,87,86,86,86,87,86,87,86,87,86,87,0,88,88,88,88,88,88,88,0,88,88,88,88,88,88,88,88,88,0,89,90,89,90,89,89,89,89,89,90,89,90,90,89,89,89,89,90,89,90,89,90,0,89,90,0,91,92,91,92,91,91,91,91,91,92,91,92,92,91,91,91,92,91,92,91,92,91,0,91,92,0,0,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,0,94,0,94,0,94,94,20,94,20,20,20,20,0,0,94,20,20,20,94,94,20,20,94,20,94,94,94,94,20,94,20,94,20,94,94,94,20,95,96,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,99,100,101,102,99,100,101,102,0,99,100,101,102,99,99,0,0,99,100,101,102,99,99,100,101,102,0,0,0,99,100,101,102,99,100,101,102,99,100,101,102,99,100,101,102,0,103,103,103,103,103,103,103,103,103,103,103,103,0,0,0,104,104,104,104,104,104,104,104,104,104,104,104,104,0,104,104,105,106,106,106,106,106,0,106,107,106,106,0,0,106,106,106,106,0,107,0,0,106,106,106,106,106,106,105,106,108,107,105,106,108,107,108,105,106,107,108,106,107,105,105,106,106,107,107,105,106,106,106,106,106,106,106,106,106,108,107,107,107,105,106,108,107,106,107,108,105,106,107,106,107,105,106,107,105,106,108,107,105,106,108,107,105,106,108,107,105,106,108,107,109,110,111,0,0,0,112,113,112,113,113,112,113,112,113,113,112,113,113,112,113,112,113,112,113,112,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,115,114,116,115,114,116,115,115,115,114,115,114,116,115,114,116,0,116,115,115,115,115,114,116,115,114,116,115,114,116,115,114,116,0,0,0,117,118,117,119,118,117,119,118,118,118,117,118,117,119,118,117,119,0,119,118,118,118,118,117,119,118,117,119,118,117,119,118,117,119,0,120,120,120,120,120,120,120,120,120,120,120,120,0,0,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,0,0,0,0,0,122,123,124,122,123,125,124,122,123,125,124,124,122,123,0,124,122,123,125,124,122,123,125,124,124,125,124,124,0,0,124,124,124,122,123,125,124,122,123,125,124,122,123,125,124,122,123,125,0,126,126,126,126,126,126,126,126,126,126,126,0,0,127,128,127,128,127,127,127,128,127,128,127,0,0,128,127,127,0,0,0,0,127,127,127,128,127,128,127,128,127,128,0,0,0,129,130,131,129,130,131,129,129,130,131,129,129,129,130,131,129,130,129,130,0,129,129,131,130,130,129,130,131,129,130,131,129,130,131,129,130,131,0,132,132,132,132,132,132,132,132,132,132,132,132,132,132,0,0,133,134,135,136,133,134,135,136,133,133,0,133,133,134,135,136,133,134,135,136,134,135,136,133,133,0,133,0,0,133,133,134,135,136,133,134,135,136,133,134,135,136,0,133,133,134,135,136,0,137,137,137,137,137,137,137,137,137,137,137,137,137,0,0,0,0,0,0,0,0,0,0,138,0,138,139,140,138,139,140,139,139,139,138,139,139,139,138,139,140,138,139,140,139,140,139,139,139,138,139,140,138,139,140,138,139,140,138,139,140,141,141,0,141,141,141,141,141,141,141,0,0,0,0,142,143,144,145,142,143,144,145,142,143,144,142,143,144,142,143,142,144,0,142,143,144,145,142,143,144,145,144,144,142,144,144,145,144,144,142,143,144,142,143,144,145,142,143,144,145,142,143,144,145,143,142,143,144,145,0,0,0,146,147,146,147,146,146,146,147,0,146,147,0,146,147,146,146,146,146,146,147,146,147,146,147,146,147,0,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,0,0,0,0,149,150,151,152,149,150,151,152,149,150,151,149,150,151,149,150,149,151,149,150,151,152,149,150,151,152,151,151,149,151,151,152,151,151,151,149,150,151,149,150,151,152,149,150,151,152,149,150,151,152,0,150,149,150,151,152,0,0,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,0,0,154,155,154,156,155,154,156,155,155,155,154,155,155,154,156,155,154,156,156,155,155,0,155,155,154,156,155,154,156,155,154,156,155,155,154,156,0,0,0,0,0,0,0,0,0,19,19,157,158,159,157,160,161,162,163,19,158,159,157,160,161,162,163,19,157,19,0,158,159,157,160,161,162,163,19,158,159,157,160,161,162,163,19,19,158,19,19,159,158,159,157,160,161,162,163,19,158,157,161,158,159,157,160,161,162,163,19,158,159,157,160,161,162,163,19,160,159,158,161,158,159,157,160,161,162,163,19,158,161,19,160,161,157,162,163,158,160,161,158,19,160,159,19,0,0,19,19,158,159,157,160,161,162,163,19,158,159,157,160,161,162,163,19,158,159,157,160,161,162,163,19,158,159,157,160,161,162,163,19,160,161,162,163,158,160,161,158,159,157,160,161,162,163,19,0,0,0,0,164,164,164,164,164,164,164,164,164,164,164,0,0,0,165,166,167,168,165,166,167,168,0,165,166,167,168,165,165,167,167,0,0,165,166,167,168,165,165,167,167,166,168,0,165,166,167,168,165,166,167,168,165,166,167,168,165,166,167,168,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,0,0,0,0,0,169,170,171,169,170,171,169,170,171,169,170,171,169,170,169,170,169,171,169,170,171,169,170,171,169,169,170,171,171,170,0,169,171,169,170,169,170,171,169,170,171,169,170,171,169,170,171,169,169,170,171,0,0,0,0,0,0,0,0,0,0,172,173,172,174,173,172,174,173,173,172,173,172,174,173,172,174,173,174,173,173,0,0,0,173,173,172,174,173,172,174,173,172,174,173,172,174,0,175,175,175,175,175,175,175,175,175,175],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[],["settings",3]],[[],["filemap",3]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["identityservice",3,["cookieidentitypolicy"]],["cookieidentitypolicy",3]]],[[],["jsonconfig",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",6]],null,null,null,null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,[[["serviceconfig",3]]],null,null,[[]],[[]],[[]],[[]],[[],["accountcheckpayload",3]],[[],["accountcheckresp",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],[[["appservice",3]]],null,[[["serviceconfig",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[["str",15],["appdata",6]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["email",3]],[[]],[[],["result",4]],null,null,[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[],["result",4]],[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["changepasswordreqest",3]],[[]],null,null,[[],["result",4]],[[["formatter",3]],["result",6]],[[["changepasswordreqest",3]]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15],["updatepassword",3],["data",3]]],null,[[]],[[]],[[]],null,[[]],[[]],null,null,[[]],null,[[]],[[],["account",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["secret",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[["serviceconfig",3]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["username",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[["accountcheckpayload",3],["appdata",6]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,null,[[],["auth",3]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["register",3]],[[],["login",3]],[[],["password",3]],[[]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["login",3],["appdata",6]]],null,null,null,[[["register",3],["appdata",6]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],null,null,null,null,[[["usize",15]],["string",3]],null,[[["serviceconfig",3]]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchadetails",3]],[[]],null,null,[[],["result",4]],[[],["result",4]],null,[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["str",15],["appdata",6],["createcaptcha",3]]],null,[[]],[[]],[[]],[[]],[[],["deletecaptcha",3]],[[]],null,[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["defaultdifficultystrategy",3]],[["serviceerror",4],["result",4,["vec","serviceerror"]],["vec",3,["level"]]]],[[],["trafficpattern",3]],[[],["updatetrafficpattern",3]],[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["levels",3]],[[],["i32levels",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[["str",15],["appdata",6]]],null,[[]],[[]],null,null,null,[[]],null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[]],null,[[]],[[]],[[]],[[]],[[],["statspayload",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],null,[[]],[[]],null,[[["appservice",3]]],null,[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[["str",15],["appdata",6],["updatecaptcha",3]]],[[["str",15],["appdata",6]]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["result",4,["builddetails","builddetailsbuildererror"]],["builddetails",3],["builddetailsbuildererror",4]]],[[],[["result",4,["health","healthbuildererror"]],["health",3],["healthbuildererror",4]]],null,[[],["builddetails",3]],[[],["builddetailsbuilder",3]],[[],["health",3]],[[],["healthbuilder",3]],[[]],[[]],[[]],[[]],[[["bool",15]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["string",3]]],[[["uninitializedfielderror",3]]],[[]],[[]],[[]],[[["string",3]]],[[["uninitializedfielderror",3]]],[[]],[[]],[[["str",15]]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4]],["bool",15]],[[["option",4,["bool"]],["bool",15]]],null,null,[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[["serviceconfig",3]]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],null,[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,[[["serviceconfig",3]]],null,null,[[]],[[]],[[]],[[]],[[],["result",4]],[[]],[[]],null,[[]],[[]],null,[[["appservice",3]]],[[],["result",4]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[]],[[["notification",3]]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],null,null,null,null,null,null,[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["str",15],["appdata",6]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],null,null,null,null,[[["appservice",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],null,[[],["notifications",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[["serviceconfig",3]]],null,null,null,[[]],[[]],[[]],[[]],[[],["getconfigpayload",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],null,[[["str",15],["appdata",6]]],[[]],[[]],null,[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,[[]],[[]],[[]],[[],["str",15]],null,[[]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["str",15]],null,[[],["str",15]],null,[[]],null,[[]],[[]],[[]],[[]],[[],["validationtoken",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[],["captchavalidateresp",3]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],null,null,null,null,[[]],[[]],null,[[]],[[]],null,[[],["routes",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,[[["addsite",3]]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[],["config",3]],[[],[["option",4,["asyncsmtptransport"]],["asyncsmtptransport",3,["tokio1executor"]]]],[[["string",3]]],[[]],[[]],null,[[]],[[]],[[["mastertrait",8],["addr",3],["save",8],["addr",3]],[["system",3],["save",8],["mastertrait",8]]],[[["removecaptcha",3]]],[[["rename",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["verifycaptcharesult",3]]],[[["work",3]]],[[]],[[]],null,null,null,null,null,null,null,[[]],[[]],[[],["date",3]],[[]],[[],["string",3]],[[["formatter",3]],["result",6]],[[["offsetdatetime",3]],["string",3]],[[]],[[]],[[],["string",3]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],null,[[["appdata",6]]],null,[[]],null,[[]],[[["appdata",6]]],[[["appdata",6],["duration",3]]],[[["appdata",6],["duration",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],["httpresponse",3]],null,[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],null,[[["serviceconfig",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[["str",15]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["str",15],["data",3]]],null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["bool",15]],[[["serviceerror",4]],["bool",15]],[[["pageerror",4]],["bool",15]],null,[[],["httpresponse",3]],[[],["httpresponse",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["recverror",3]]],[[["credserror",4]],["serviceerror",4]],[[["validationerrors",3]],["serviceerror",4]],[[["parseerror",4]],["serviceerror",4]],[[["captchaerror",4]],["serviceerror",4]],[[["error",4]]],[[["smtperror",3]]],[[["mailboxerror",4]]],[[]],[[]],[[]],[[["error",4]]],[[["serviceerror",4]]],[[]],[[]],[[]],[[]],[[["serviceerror",4]],["bool",15]],[[["pageerror",4]],["bool",15]],[[],["result",4]],[[],[["error",8],["option",4,["error"]]]],[[],[["error",8],["option",4,["error"]]]],[[],[["error",8],["option",4,["error"]]]],[[],["statuscode",3]],[[],["statuscode",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["servicerequest",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["context",3]],[["poll",4,["result"]],["result",4]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,null,[[],["auth",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[]],[[]],[[],["sudopage",3]],[[]],null,[[]],[[]],[[["str",15],["option",4,["vec"]],["vec",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["errorpage",3]],[[]],[[],["string",3]],[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["str",15]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[]],[[]],[[["vec",3,["mcaptchadetails"]],["mcaptchadetails",3]]],null,null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[["serviceconfig",3]]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["notification",3]]],[[]],[[]],null,null,[[]],[[]],[[]],null,null,null,[[["notification",3],["vec",3,["notification"]]]],null,[[],["string",3]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[["appservice",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],null,[[]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,null,[[["serviceconfig",3]]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],null,[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[["appservice",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchaconfig",3]],[[],["level",3]],[[],["indexpage",3]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[["level",3],["string",3],["vec",3,["level"]],["mcaptchaconfig",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[]],[[["appdata",6],["identity",3]]],[[]],[[]],null,[[["vec",3,["mcaptchadetails"]],["mcaptchadetails",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,[[]],[[]],null,null,[[]],[[]],[[]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["mcaptchaconfig",3]],[[],["level",3]],[[],["indexpage",3]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[["level",3],["vec",3,["level"]],["string",3],["stats",3],["mcaptchaconfig",3]]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],null,null,null,null,[[]],[[]],null,null,[[]],[[]],null,[[]],[[],["routes",3]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[]],[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[["serviceconfig",3]]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["config",3]]],[[],["server",3]],[[],["captcha",3]],[[],["defaultdifficultystrategy",3]],[[],["smtp",3]],[[],["databasebuilder",3]],[[],["database",3]],[[],["redis",3]],[[],["settings",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],[["result",4,["configerror"]],["configerror",4]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["databasebuilder",3],["config",3]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["serviceconfig",3]]],null,null,[[]],[[]],null,[[]],[[["str",15]],[["option",4,["str"]],["str",15]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],[["option",4,["embeddedfile"]],["embeddedfile",3]]],[[["str",15]],["httpresponse",3]],[[["str",15]],["httpresponse",3]],[[]],[[]],[[]],[[]],[[]],[[],["filenames",4]],[[]],[[],["filenames",4]],[[["appservice",3]]],[[["appservice",3]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["statsunixtimestamp",3]],[[],["stats",3]],[[],["statspayload",3]],[[]],[[]],[[]],null,null,null,null,[[],["result",4]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["stats",3]]],[[]],[[]],[[]],null,[[["str",15],["pgpool",6]]],null,[[],["result",4]],[[],["result",4]],null,null,[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],[["vec",3,["i64"]],["i64",15]]],[[]],[[]],[[]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],[[["str",15],["pgpool",6]]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["indexpage",3]],[[]],[[],["string",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["appservice",3]]],[[],["renderresult",6]],[[["buffer",3]],[["rendererror",4],["result",4,["rendererror"]]]],null,[[["serviceconfig",3]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]]],"p":[[3,"KEY"],[3,"GITHUB"],[3,"HOME"],[3,"SETTINGS_ICON"],[3,"CREDIT_CARD"],[3,"HELP_CIRCLE"],[3,"MESSAGE"],[3,"DOCS_ICON"],[3,"MCAPTCHA_TRANS_ICON"],[3,"BAR_CHART"],[3,"SETTINGS"],[3,"FILES"],[3,"JS"],[3,"CSS"],[3,"MOBILE_CSS"],[3,"VERIFICATIN_WIDGET_JS"],[3,"VERIFICATIN_WIDGET_CSS"],[3,"SOURCE_FILES_OF_INSTANCE"],[3,"Settings"],[3,"Data"],[3,"AccountCheckPayload"],[3,"AccountCheckResp"],[3,"delete_account"],[3,"Email"],[3,"email_exists"],[3,"set_email"],[3,"UpdatePassword"],[3,"ChangePasswordReqest"],[3,"update_user_password"],[3,"Account"],[3,"Secret"],[3,"get_secret"],[3,"update_user_secret"],[3,"username_exists"],[3,"Username"],[3,"set_username"],[3,"register"],[3,"login"],[3,"signout"],[3,"Auth"],[3,"Register"],[3,"Login"],[3,"Password"],[3,"CreateCaptcha"],[3,"MCaptchaDetails"],[3,"create"],[3,"DeleteCaptcha"],[3,"delete"],[3,"TrafficPattern"],[3,"create"],[3,"UpdateTrafficPattern"],[3,"update"],[3,"Easy"],[3,"get_captcha"],[3,"Levels"],[3,"I32Levels"],[3,"Captcha"],[3,"StatsPayload"],[3,"get"],[3,"Stats"],[3,"update_key"],[3,"UpdateCaptcha"],[3,"update_captcha"],[4,"BuildDetailsBuilderError"],[4,"HealthBuilderError"],[3,"BuildDetails"],[3,"BuildDetailsBuilder"],[3,"build_details"],[3,"Health"],[3,"HealthBuilder"],[3,"health"],[13,"UninitializedField"],[13,"ValidationError"],[13,"UninitializedField"],[13,"ValidationError"],[3,"Meta"],[3,"AddNotification"],[3,"add_notification"],[3,"Notification"],[3,"NotificationResp"],[3,"get_notification"],[3,"MarkReadReq"],[3,"NotificationResp"],[3,"mark_read"],[3,"Notifications"],[3,"GetConfigPayload"],[3,"get_config"],[3,"PoW"],[3,"ValidationToken"],[3,"verify_pow"],[3,"CaptchaValidateResp"],[3,"validate_captcha_token"],[3,"Routes"],[4,"SystemGroup"],[13,"Embedded"],[13,"Redis"],[3,"Date"],[3,"DemoUser"],[3,"Asset"],[3,"dist"],[3,"spec"],[3,"index"],[3,"Docs"],[3,"IndexPage"],[3,"SmtpErrorWrapper"],[4,"ServiceError"],[4,"PageError"],[3,"ErrorToResponse"],[13,"ServiceError"],[13,"UnableToSendEmail"],[13,"CaptchaError"],[3,"CheckLogin"],[3,"CheckLoginMiddleware"],[3,"INDEX"],[3,"IndexPage"],[3,"login"],[3,"INDEX"],[3,"IndexPage"],[3,"join"],[3,"Auth"],[3,"SudoPage"],[3,"INTERNAL_SERVER_ERROR_BODY"],[3,"UNKNOWN_ERROR_BODY"],[3,"ErrorPage"],[3,"error"],[3,"Errors"],[3,"IndexPage"],[3,"panel"],[3,"Notification"],[3,"IndexPage"],[3,"notifications"],[3,"Panel"],[3,"IndexPage"],[3,"settings"],[3,"delete_account"],[3,"update_secret"],[3,"Settings"],[3,"INDEX"],[3,"IndexPage"],[3,"add_sitekey"],[3,"delete_sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"IndexPage"],[3,"edit_sitekey"],[3,"IndexPage"],[3,"list_sitekeys"],[3,"Sitekey"],[3,"McaptchaConfig"],[3,"Level"],[3,"IndexPage"],[3,"view_sitekey"],[3,"Routes"],[3,"INDEX"],[3,"IndexPage"],[3,"sitemap"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"],[3,"FileMap"],[3,"Asset"],[3,"static_files"],[3,"Favicons"],[3,"favicons"],[3,"StatsUnixTimestamp"],[3,"Stats"],[3,"StatsPayload"],[3,"INDEX_PAGE"],[3,"IndexPage"],[3,"show_widget"],[3,"Widget"]]},\ +"tests_migrate":{"doc":"","t":[3,3,12,12,12,11,11,5,5,12,12,12,12,11,11,11,5,12,12,0,12,12,11,11,11,11,3,3,3,3,3,3,3,3,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11],"n":["SETTINGS","Settings","__private_field","allow_demo","allow_registration","borrow","borrow_mut","build","cache_bust","captcha","commercial","database","debug","deref","from","into","main","redis","server","settings","smtp","source_code","try_from","try_into","type_id","vzip","Captcha","Database","DatabaseBuilder","DefaultDifficultyStrategy","Redis","Server","Settings","Smtp","allow_demo","allow_registration","avg_traffic_difficulty","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broke_my_site_traffic_difficulty","captcha","check_url","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commercial","cookie_secret","database","debug","default_difficulty_strategy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","domain","duration","extract_database_url","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gc","get_ip","hostname","into","into","into","into","into","into","into","into","ip","name","new","password","password","peak_sustainable_traffic_difficulty","pool","pool","port","port","port","proxy_has_tls","redis","reply","salt","server","set_database_url","set_from_database_url","smtp","source_code","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","url","url","url","url","url_prefix","username","username","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":["tests_migrate","","","","","","","","","","","","","","","","","","","","","","","","","","tests_migrate::settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,1,2,2,1,1,0,0,2,2,2,2,1,1,1,0,2,2,0,2,2,1,1,1,1,0,0,0,0,0,0,0,0,2,2,3,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,3,2,0,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,2,4,2,2,5,4,5,3,6,7,8,9,2,4,3,7,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,5,4,7,4,5,3,6,7,8,9,2,4,7,2,6,7,3,8,9,4,6,7,4,2,6,5,2,0,0,2,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,4,5,3,6,7,8,9,2,6,7,8,9,4,6,7,4,5,3,6,7,8,9,2],"f":[null,null,null,null,null,[[]],[[]],[[]],[[]],null,null,null,null,[[],["settings",3]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[["config",3]]],[[],["server",3]],[[],["captcha",3]],[[],["defaultdifficultystrategy",3]],[[],["smtp",3]],[[],["databasebuilder",3]],[[],["database",3]],[[],["redis",3]],[[],["settings",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,[[["url",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["string",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],[["result",4,["configerror"]],["configerror",4]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["config",3]]],[[["config",3],["databasebuilder",3]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]],"p":[[3,"SETTINGS"],[3,"Settings"],[3,"DefaultDifficultyStrategy"],[3,"Server"],[3,"Captcha"],[3,"Smtp"],[3,"DatabaseBuilder"],[3,"Database"],[3,"Redis"]]}\ }'); if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/source-files.js b/source-files.js index 59603eff..5312067d 100644 --- a/source-files.js +++ b/source-files.js @@ -1,4 +1,4 @@ var N = null;var sourcesIndex = {}; -sourcesIndex["mcaptcha"] = {"name":"","dirs":[{"name":"api","dirs":[{"name":"v1","dirs":[{"name":"account","files":["delete.rs","email.rs","mod.rs","password.rs","secret.rs","username.rs"]},{"name":"mcaptcha","files":["captcha.rs","duration.rs","levels.rs","mod.rs"]},{"name":"notifications","files":["add.rs","get.rs","mark_read.rs","mod.rs"]},{"name":"pow","files":["get_config.rs","mod.rs","verify_pow.rs","verify_token.rs"]}],"files":["auth.rs","meta.rs","mod.rs","routes.rs"]}],"files":["mod.rs"]},{"name":"email","files":["mod.rs","verification.rs"]},{"name":"middleware","files":["auth.rs","mod.rs"]},{"name":"pages","dirs":[{"name":"auth","files":["login.rs","mod.rs","register.rs","sudo.rs"]},{"name":"panel","dirs":[{"name":"sitekey","files":["add.rs","delete.rs","edit.rs","list.rs","mod.rs","view.rs"]}],"files":["mod.rs","notifications.rs","settings.rs"]}],"files":["errors.rs","mod.rs","routes.rs","sitemap.rs"]},{"name":"static_assets","files":["filemap.rs","mod.rs","static_files.rs"]},{"name":"stats","files":["fetch.rs","mod.rs","record.rs"]},{"name":"widget","files":["mod.rs"]}],"files":["data.rs","date.rs","demo.rs","docs.rs","errors.rs","main.rs","routes.rs","settings.rs"]}; +sourcesIndex["mcaptcha"] = {"name":"","dirs":[{"name":"api","dirs":[{"name":"v1","dirs":[{"name":"account","files":["delete.rs","email.rs","mod.rs","password.rs","secret.rs","username.rs"]},{"name":"mcaptcha","files":["create.rs","delete.rs","easy.rs","get.rs","mod.rs","stats.rs","update.rs"]},{"name":"notifications","files":["add.rs","get.rs","mark_read.rs","mod.rs"]},{"name":"pow","files":["get_config.rs","mod.rs","verify_pow.rs","verify_token.rs"]}],"files":["auth.rs","meta.rs","mod.rs","routes.rs"]}],"files":["mod.rs"]},{"name":"email","files":["mod.rs","verification.rs"]},{"name":"middleware","files":["auth.rs","mod.rs"]},{"name":"pages","dirs":[{"name":"auth","files":["login.rs","mod.rs","register.rs","sudo.rs"]},{"name":"panel","dirs":[{"name":"sitekey","files":["add.rs","delete.rs","edit.rs","list.rs","mod.rs","view.rs"]}],"files":["mod.rs","notifications.rs","settings.rs"]}],"files":["errors.rs","mod.rs","routes.rs","sitemap.rs"]},{"name":"static_assets","files":["filemap.rs","mod.rs","static_files.rs"]},{"name":"stats","files":["fetch.rs","mod.rs","record.rs"]},{"name":"widget","files":["mod.rs"]}],"files":["data.rs","date.rs","demo.rs","docs.rs","errors.rs","main.rs","routes.rs","settings.rs"]}; sourcesIndex["tests_migrate"] = {"name":"","files":["settings.rs","tests-migrate.rs"]}; createSourceSidebar(); diff --git a/src/mcaptcha/api/v1/account/delete.rs.html b/src/mcaptcha/api/v1/account/delete.rs.html index 91088b4b..f1cab1c4 100644 --- a/src/mcaptcha/api/v1/account/delete.rs.html +++ b/src/mcaptcha/api/v1/account/delete.rs.html @@ -102,7 +102,7 @@ path = "crate::V1_API_ROUTES.account.delete", wrap = "crate::CheckLogin" )] -async fn delete_account( +pub async fn delete_account( id: Identity, payload: web::Json<Password>, data: AppData, diff --git a/src/mcaptcha/api/v1/mcaptcha/captcha.rs.html b/src/mcaptcha/api/v1/mcaptcha/captcha.rs.html deleted file mode 100644 index c20fd023..00000000 --- a/src/mcaptcha/api/v1/mcaptcha/captcha.rs.html +++ /dev/null @@ -1,1008 +0,0 @@ -captcha.rs - source
  1
-  2
-  3
-  4
-  5
-  6
-  7
-  8
-  9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-
/*
-* Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Affero General Public License as
-* published by the Free Software Foundation, either version 3 of the
-* License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU Affero General Public License for more details.
-*
-* You should have received a copy of the GNU Affero General Public License
-* along with this program.  If not, see <https://www.gnu.org/licenses/>.
-*/
-use std::borrow::Cow;
-
-use actix_identity::Identity;
-use actix_web::{web, HttpResponse, Responder};
-use libmcaptcha::master::messages::{RemoveCaptcha, RenameBuilder};
-use libmcaptcha::{defense::Level, defense::LevelBuilder};
-use serde::{Deserialize, Serialize};
-
-use super::get_random;
-use super::levels::{add_captcha_runner, AddLevels};
-use crate::errors::*;
-use crate::settings::DefaultDifficultyStrategy;
-use crate::stats::fetch::{Stats, StatsUnixTimestamp};
-use crate::AppData;
-
-pub mod routes {
-    pub struct MCaptcha {
-        pub delete: &'static str,
-        pub update_key: &'static str,
-        pub stats: &'static str,
-        pub user_provided_traffic_pattern: &'static str,
-    }
-
-    impl MCaptcha {
-        pub const fn new() -> MCaptcha {
-            MCaptcha {
-                update_key: "/api/v1/mcaptcha/update/key",
-                delete: "/api/v1/mcaptcha/delete",
-                stats: "/api/v1/mcaptcha/stats",
-                user_provided_traffic_pattern:
-                    "/api/v1/mcaptcha/add/user-provided-traffic-pattern",
-            }
-        }
-    }
-}
-
-pub fn services(cfg: &mut web::ServiceConfig) {
-    cfg.service(update_token);
-    cfg.service(delete_mcaptcha);
-    cfg.service(get_stats);
-    cfg.service(from_user_provided_traffic_pattern);
-}
-
-#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct MCaptchaID {
-    pub name: Option<String>,
-}
-
-#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct MCaptchaDetails {
-    pub name: String,
-    pub key: String,
-}
-
-#[my_codegen::post(
-    path = "crate::V1_API_ROUTES.mcaptcha.update_key",
-    wrap = "crate::CheckLogin"
-)]
-async fn update_token(
-    payload: web::Json<MCaptchaDetails>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-    let mut key;
-
-    loop {
-        key = get_random(32);
-        let res = update_token_helper(&key, &payload.key, &username, &data).await;
-        if res.is_ok() {
-            break;
-        } else if let Err(sqlx::Error::Database(err)) = res {
-            if err.code() == Some(Cow::from("23505")) {
-                continue;
-            } else {
-                return Err(sqlx::Error::Database(err).into());
-            }
-        };
-    }
-
-    let payload = payload.into_inner();
-    let rename = RenameBuilder::default()
-        .name(payload.key)
-        .rename_to(key.clone())
-        .build()
-        .unwrap();
-    data.captcha.rename(rename).await?;
-
-    let resp = MCaptchaDetails {
-        key,
-        name: payload.name,
-    };
-
-    Ok(HttpResponse::Ok().json(resp))
-}
-
-async fn update_token_helper(
-    key: &str,
-    old_key: &str,
-    username: &str,
-    data: &AppData,
-) -> Result<(), sqlx::Error> {
-    sqlx::query!(
-        "UPDATE mcaptcha_config SET key = $1 
-        WHERE key = $2 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)",
-        &key,
-        &old_key,
-        &username,
-    )
-    .execute(&data.db)
-    .await?;
-    Ok(())
-}
-
-#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct DeleteCaptcha {
-    pub key: String,
-    pub password: String,
-}
-
-#[my_codegen::post(
-    path = "crate::V1_API_ROUTES.mcaptcha.delete",
-    wrap = "crate::CheckLogin"
-)]
-async fn delete_mcaptcha(
-    payload: web::Json<DeleteCaptcha>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    use argon2_creds::Config;
-    use sqlx::Error::RowNotFound;
-
-    let username = id.identity().unwrap();
-
-    struct PasswordID {
-        password: String,
-        id: i32,
-    }
-
-    let rec = sqlx::query_as!(
-        PasswordID,
-        r#"SELECT ID, password  FROM mcaptcha_users WHERE name = ($1)"#,
-        &username,
-    )
-    .fetch_one(&data.db)
-    .await;
-
-    match rec {
-        Ok(rec) => {
-            if Config::verify(&rec.password, &payload.password)? {
-                let payload = payload.into_inner();
-                sqlx::query!(
-                    "DELETE FROM mcaptcha_levels 
-                     WHERE config_id = (
-                        SELECT config_id FROM mcaptcha_config 
-                        WHERE key = $1 AND user_id = $2
-                    );",
-                    &payload.key,
-                    &rec.id,
-                )
-                .execute(&data.db)
-                .await?;
-
-                sqlx::query!(
-                    "DELETE FROM mcaptcha_config WHERE key = ($1) AND user_id = $2;",
-                    &payload.key,
-                    &rec.id,
-                )
-                .execute(&data.db)
-                .await?;
-                if let Err(err) = data.captcha.remove(RemoveCaptcha(payload.key)).await {
-                    log::error!(
-                        "Error while trying to remove captcha from cache {}",
-                        err
-                    );
-                }
-                Ok(HttpResponse::Ok())
-            } else {
-                Err(ServiceError::WrongPassword)
-            }
-        }
-        Err(RowNotFound) => Err(ServiceError::UsernameNotFound),
-        Err(_) => Err(ServiceError::InternalServerError),
-    }
-}
-
-#[derive(Debug, Clone, Deserialize, Serialize)]
-pub struct StatsPayload {
-    pub key: String,
-}
-
-#[my_codegen::post(
-    path = "crate::V1_API_ROUTES.mcaptcha.stats",
-    wrap = "crate::CheckLogin"
-)]
-async fn get_stats(
-    payload: web::Json<StatsPayload>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-    let stats = Stats::new(&username, &payload.key, &data.db).await?;
-    let stats = StatsUnixTimestamp::from_stats(&stats);
-    Ok(HttpResponse::Ok().json(&stats))
-}
-
-#[derive(Serialize, Deserialize, Clone, Debug)]
-pub struct UserProvidedTrafficPattern {
-    pub avg_traffic: u32,
-    pub peak_sustainable_traffic: u32,
-    pub broke_my_site_traffic: Option<u32>,
-    pub description: String,
-}
-
-impl UserProvidedTrafficPattern {
-    pub fn calculate(
-        &self,
-        strategy: &DefaultDifficultyStrategy,
-    ) -> ServiceResult<Vec<Level>> {
-        let mut levels = vec![
-            LevelBuilder::default()
-                .difficulty_factor(strategy.avg_traffic_difficulty)?
-                .visitor_threshold(self.avg_traffic)
-                .build()?,
-            LevelBuilder::default()
-                .difficulty_factor(strategy.peak_sustainable_traffic_difficulty)?
-                .visitor_threshold(self.peak_sustainable_traffic)
-                .build()?,
-        ];
-        let mut highest_level = LevelBuilder::default();
-        highest_level.difficulty_factor(strategy.broke_my_site_traffic_difficulty)?;
-
-        match self.broke_my_site_traffic {
-            Some(broke_my_site_traffic) => {
-                highest_level.visitor_threshold(broke_my_site_traffic)
-            }
-            None => match self
-                .peak_sustainable_traffic
-                .checked_add(self.peak_sustainable_traffic / 2)
-            {
-                Some(num) => highest_level.visitor_threshold(num),
-                // TODO check for overflow: database saves these values as i32, so this u32 is cast
-                // into i32. Should choose bigger number or casts properly
-                None => highest_level.visitor_threshold(u32::MAX),
-            },
-        };
-
-        levels.push(highest_level.build()?);
-
-        Ok(levels)
-    }
-}
-
-#[my_codegen::post(
-    path = "crate::V1_API_ROUTES.mcaptcha.user_provided_traffic_pattern",
-    wrap = "crate::CheckLogin"
-)]
-async fn from_user_provided_traffic_pattern(
-    payload: web::Json<UserProvidedTrafficPattern>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-    let payload = payload.into_inner();
-    let levels =
-        payload.calculate(&crate::SETTINGS.captcha.default_difficulty_strategy)?;
-    let msg = AddLevels {
-        levels,
-        duration: crate::SETTINGS.captcha.default_difficulty_strategy.duration,
-        description: payload.description,
-    };
-
-    let broke_my_site_traffic = match payload.broke_my_site_traffic {
-        Some(n) => Some(n as i32),
-        None => None,
-    };
-
-    let mcaptcha_config = add_captcha_runner(&msg, &data, &username).await?;
-    sqlx::query!(
-        "INSERT INTO mcaptcha_sitekey_user_provided_avg_traffic (
-        config_id,
-        avg_traffic,
-        peak_sustainable_traffic,
-        broke_my_site_traffic
-    ) VALUES ( 
-         (SELECT config_id FROM mcaptcha_config 
-          WHERE
-            key = ($1)
-          AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2)
-         ), $3, $4, $5)",
-        //payload.avg_traffic,
-        &mcaptcha_config.key,
-        &username,
-        payload.avg_traffic as i32,
-        payload.peak_sustainable_traffic as i32,
-        broke_my_site_traffic,
-    )
-    .execute(&data.db)
-    .await?;
-
-    Ok(HttpResponse::Ok().json(mcaptcha_config))
-}
-
-#[cfg(test)]
-mod tests {
-    use actix_web::http::StatusCode;
-    use actix_web::test;
-
-    use super::*;
-    use crate::api::v1::ROUTES;
-    use crate::tests::*;
-    use crate::*;
-
-    #[actix_rt::test]
-    async fn update_and_get_mcaptcha_works() {
-        const NAME: &str = "updateusermcaptcha";
-        const PASSWORD: &str = "longpassworddomain";
-        const EMAIL: &str = "testupdateusermcaptcha@a.com";
-
-        {
-            let data = Data::new().await;
-            delete_user(NAME, &data).await;
-        }
-
-        // 1. add mcaptcha token
-        register_and_signin(NAME, EMAIL, PASSWORD).await;
-        let (data, _, signin_resp, token_key) = add_levels_util(NAME, PASSWORD).await;
-        let cookies = get_cookie!(signin_resp);
-        let app = get_app!(data).await;
-
-        // 2. update token key
-        let update_token_resp = test::call_service(
-            &app,
-            post_request!(&token_key, ROUTES.mcaptcha.update_key)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(update_token_resp.status(), StatusCode::OK);
-        let updated_token: MCaptchaDetails =
-            test::read_body_json(update_token_resp).await;
-
-        // get levels with udpated key
-        let get_token_resp = test::call_service(
-            &app,
-            post_request!(&updated_token, ROUTES.levels.get)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        // if updated key doesn't exist in databse, a non 200 result will bereturned
-        assert_eq!(get_token_resp.status(), StatusCode::OK);
-
-        // get stats
-        let paylod = StatsPayload { key: token_key.key };
-        let get_statis_resp = test::call_service(
-            &app,
-            post_request!(&paylod, ROUTES.mcaptcha.stats)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        // if updated key doesn't exist in databse, a non 200 result will bereturned
-        assert_eq!(get_statis_resp.status(), StatusCode::OK);
-    }
-
-    #[actix_rt::test]
-    async fn user_provided_traffic_pattern_calculate_works() {
-        const NAME: &str = "defaultuserconfgworks";
-
-        let mut payload = UserProvidedTrafficPattern {
-            avg_traffic: 100_000,
-            peak_sustainable_traffic: 1_000_000,
-            broke_my_site_traffic: Some(10_000_000),
-            description: NAME.into(),
-        };
-
-        let strategy = &crate::SETTINGS.captcha.default_difficulty_strategy;
-        let l1 = LevelBuilder::default()
-            .difficulty_factor(strategy.avg_traffic_difficulty)
-            .unwrap()
-            .visitor_threshold(payload.avg_traffic)
-            .build()
-            .unwrap();
-
-        let l2 = LevelBuilder::default()
-            .difficulty_factor(strategy.peak_sustainable_traffic_difficulty)
-            .unwrap()
-            .visitor_threshold(payload.peak_sustainable_traffic)
-            .build()
-            .unwrap();
-        let l3 = LevelBuilder::default()
-            .difficulty_factor(strategy.broke_my_site_traffic_difficulty)
-            .unwrap()
-            .visitor_threshold(payload.broke_my_site_traffic.unwrap())
-            .build()
-            .unwrap();
-
-        let levels = vec![l1, l2, l3];
-        assert_eq!(payload.calculate(strategy).unwrap(), levels);
-
-        let estimated_lmax = LevelBuilder::default()
-            .difficulty_factor(strategy.broke_my_site_traffic_difficulty)
-            .unwrap()
-            .visitor_threshold(1500000)
-            .build()
-            .unwrap();
-        payload.broke_my_site_traffic = None;
-        assert_eq!(
-            payload.calculate(strategy).unwrap(),
-            vec![l1, l2, estimated_lmax]
-        );
-
-        let lmax = LevelBuilder::default()
-            .difficulty_factor(strategy.broke_my_site_traffic_difficulty)
-            .unwrap()
-            .visitor_threshold(u32::MAX)
-            .build()
-            .unwrap();
-
-        let very_large_l2_peak_traffic = u32::MAX - 1;
-        let very_large_l2 = LevelBuilder::default()
-            .difficulty_factor(strategy.peak_sustainable_traffic_difficulty)
-            .unwrap()
-            .visitor_threshold(very_large_l2_peak_traffic)
-            .build()
-            .unwrap();
-
-        //        payload.broke_my_site_traffic = Some(very_large_l2_peak_traffic);
-        payload.peak_sustainable_traffic = very_large_l2_peak_traffic;
-        assert_eq!(
-            payload.calculate(strategy).unwrap(),
-            vec![l1, very_large_l2, lmax]
-        );
-    }
-
-    #[actix_rt::test]
-    async fn from_user_provided_traffic_pattern_works() {
-        const NAME: &str = "defaultuserconfgworks";
-        const PASSWORD: &str = "longpassworddomain";
-        const EMAIL: &str = "defaultuserconfgworks@a.com";
-
-        {
-            let data = Data::new().await;
-            delete_user(NAME, &data).await;
-        }
-
-        let (data, _creds, signin_resp) =
-            register_and_signin(NAME, EMAIL, PASSWORD).await;
-        let cookies = get_cookie!(signin_resp);
-        let app = get_app!(data).await;
-
-        let payload = UserProvidedTrafficPattern {
-            avg_traffic: 100_000,
-            peak_sustainable_traffic: 1_000_000,
-            broke_my_site_traffic: Some(10_000_000),
-            description: NAME.into(),
-        };
-
-        let default_levels = payload
-            .calculate(&crate::SETTINGS.captcha.default_difficulty_strategy)
-            .unwrap();
-
-        let add_token_resp = test::call_service(
-            &app,
-            post_request!(&payload, ROUTES.mcaptcha.user_provided_traffic_pattern)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(add_token_resp.status(), StatusCode::OK);
-        let token_key: MCaptchaDetails = test::read_body_json(add_token_resp).await;
-
-        let get_level_resp = test::call_service(
-            &app,
-            post_request!(&token_key, ROUTES.levels.get)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-
-        assert_eq!(get_level_resp.status(), StatusCode::OK);
-        let res_levels: Vec<Level> = test::read_body_json(get_level_resp).await;
-        assert_eq!(res_levels, default_levels);
-    }
-}
-
-
- - \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/create.rs.html b/src/mcaptcha/api/v1/mcaptcha/create.rs.html new file mode 100644 index 00000000..0eb113b0 --- /dev/null +++ b/src/mcaptcha/api/v1/mcaptcha/create.rs.html @@ -0,0 +1,310 @@ +create.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+
/*
+ * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+use std::borrow::Cow;
+
+use actix_identity::Identity;
+use actix_web::{web, HttpResponse, Responder};
+use libmcaptcha::defense::Level;
+use serde::{Deserialize, Serialize};
+
+use super::get_random;
+use crate::errors::*;
+use crate::AppData;
+
+#[derive(Serialize, Deserialize)]
+pub struct CreateCaptcha {
+    pub levels: Vec<Level>,
+    pub duration: u32,
+    pub description: String,
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct MCaptchaDetails {
+    pub name: String,
+    pub key: String,
+}
+
+// TODO redo mcaptcha table to include levels as json field
+// so that the whole thing can be added/udpaed in a single stroke
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.create",
+    wrap = "crate::CheckLogin"
+)]
+pub async fn create(
+    payload: web::Json<CreateCaptcha>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    let username = id.identity().unwrap();
+    let mcaptcha_config = runner::create(&payload, &data, &username).await?;
+    Ok(HttpResponse::Ok().json(mcaptcha_config))
+}
+
+pub mod runner {
+    use futures::future::try_join_all;
+    use libmcaptcha::DefenseBuilder;
+    use log::debug;
+
+    use super::*;
+
+    pub async fn create(
+        payload: &CreateCaptcha,
+        data: &AppData,
+        username: &str,
+    ) -> ServiceResult<MCaptchaDetails> {
+        let mut defense = DefenseBuilder::default();
+        for level in payload.levels.iter() {
+            defense.add_level(*level)?;
+        }
+
+        defense.build()?;
+
+        debug!("creating config");
+        let mcaptcha_config =
+       // add_mcaptcha_util(payload.duration, &payload.description, &data, username).await?;
+
+    {
+    let mut key;
+
+    let resp;
+
+    loop {
+        key = get_random(32);
+
+        let res = sqlx::query!(
+            "INSERT INTO mcaptcha_config
+        (key, user_id, duration, name)
+        VALUES ($1, (SELECT ID FROM mcaptcha_users WHERE name = $2), $3, $4)",
+            &key,
+            &username,
+            payload.duration as i32,
+            &payload.description,
+        )
+        .execute(&data.db)
+        .await;
+
+        match res {
+            Err(sqlx::Error::Database(err)) => {
+                if err.code() == Some(Cow::from("23505"))
+                    && err.message().contains("mcaptcha_config_key_key")
+                {
+                    continue;
+                } else {
+                    return Err(sqlx::Error::Database(err).into());
+                }
+            }
+            Err(e) => return Err(e.into()),
+
+            Ok(_) => {
+                resp = MCaptchaDetails {
+                    key,
+                    name: payload.description.to_owned(),
+                };
+                break;
+            }
+        }
+    }
+    resp
+    };
+
+        debug!("config created");
+
+        let mut futs = Vec::with_capacity(payload.levels.len());
+
+        for level in payload.levels.iter() {
+            let difficulty_factor = level.difficulty_factor as i32;
+            let visitor_threshold = level.visitor_threshold as i32;
+            let fut = sqlx::query!(
+                "INSERT INTO mcaptcha_levels (
+            difficulty_factor, 
+            visitor_threshold,
+            config_id) VALUES  (
+            $1, $2, (
+                SELECT config_id FROM mcaptcha_config WHERE
+                key = ($3) AND user_id = (
+                SELECT ID FROM mcaptcha_users WHERE name = $4
+                    )));",
+                difficulty_factor,
+                visitor_threshold,
+                &mcaptcha_config.key,
+                &username,
+            )
+            .execute(&data.db);
+            futs.push(fut);
+        }
+
+        try_join_all(futs).await?;
+        Ok(mcaptcha_config)
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/delete.rs.html b/src/mcaptcha/api/v1/mcaptcha/delete.rs.html new file mode 100644 index 00000000..5ba0d217 --- /dev/null +++ b/src/mcaptcha/api/v1/mcaptcha/delete.rs.html @@ -0,0 +1,194 @@ +delete.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+
/*
+ * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+use actix_identity::Identity;
+use actix_web::{web, HttpResponse, Responder};
+use libmcaptcha::master::messages::RemoveCaptcha;
+use serde::{Deserialize, Serialize};
+
+use crate::errors::*;
+use crate::AppData;
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct DeleteCaptcha {
+    pub key: String,
+    pub password: String,
+}
+
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.delete",
+    wrap = "crate::CheckLogin"
+)]
+async fn delete(
+    payload: web::Json<DeleteCaptcha>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    use argon2_creds::Config;
+    use sqlx::Error::RowNotFound;
+
+    let username = id.identity().unwrap();
+
+    struct PasswordID {
+        password: String,
+        id: i32,
+    }
+
+    let rec = sqlx::query_as!(
+        PasswordID,
+        r#"SELECT ID, password  FROM mcaptcha_users WHERE name = ($1)"#,
+        &username,
+    )
+    .fetch_one(&data.db)
+    .await;
+
+    match rec {
+        Ok(rec) => {
+            if Config::verify(&rec.password, &payload.password)? {
+                let payload = payload.into_inner();
+                sqlx::query!(
+                    "DELETE FROM mcaptcha_levels 
+                     WHERE config_id = (
+                        SELECT config_id FROM mcaptcha_config 
+                        WHERE key = $1 AND user_id = $2
+                    );",
+                    &payload.key,
+                    &rec.id,
+                )
+                .execute(&data.db)
+                .await?;
+
+                sqlx::query!(
+                    "DELETE FROM mcaptcha_config WHERE key = ($1) AND user_id = $2;",
+                    &payload.key,
+                    &rec.id,
+                )
+                .execute(&data.db)
+                .await?;
+                if let Err(err) = data.captcha.remove(RemoveCaptcha(payload.key)).await {
+                    log::error!(
+                        "Error while trying to remove captcha from cache {}",
+                        err
+                    );
+                }
+                Ok(HttpResponse::Ok())
+            } else {
+                Err(ServiceError::WrongPassword)
+            }
+        }
+        Err(RowNotFound) => Err(ServiceError::UsernameNotFound),
+        Err(_) => Err(ServiceError::InternalServerError),
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/duration.rs.html b/src/mcaptcha/api/v1/mcaptcha/duration.rs.html deleted file mode 100644 index a4ea3228..00000000 --- a/src/mcaptcha/api/v1/mcaptcha/duration.rs.html +++ /dev/null @@ -1,364 +0,0 @@ -duration.rs - source
  1
-  2
-  3
-  4
-  5
-  6
-  7
-  8
-  9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-
/*
- * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-use actix_identity::Identity;
-use actix_web::{web, HttpResponse, Responder};
-use serde::{Deserialize, Serialize};
-
-use crate::api::v1::mcaptcha::captcha::MCaptchaDetails;
-use crate::errors::*;
-use crate::AppData;
-
-pub mod routes {
-    pub struct Duration {
-        pub update: &'static str,
-        pub get: &'static str,
-    }
-    impl Duration {
-        pub const fn new() -> Duration {
-            Duration {
-                update: "/api/v1/mcaptcha/domain/token/duration/update",
-                get: "/api/v1/mcaptcha/domain/token/duration/get",
-            }
-        }
-    }
-}
-
-#[derive(Deserialize, Serialize)]
-pub struct UpdateDuration {
-    pub key: String,
-    pub duration: i32,
-}
-
-#[my_codegen::post(
-    path = "crate::V1_API_ROUTES.duration.update",
-    wrap = "crate::CheckLogin"
-)]
-async fn update_duration(
-    payload: web::Json<UpdateDuration>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-
-    if payload.duration > 0 {
-        sqlx::query!(
-            "UPDATE mcaptcha_config  set duration = $1 
-        WHERE key = $2 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)",
-            &payload.duration,
-            &payload.key,
-            &username,
-        )
-        .execute(&data.db)
-        .await?;
-
-        Ok(HttpResponse::Ok())
-    } else {
-        // when mCaptcha/mCaptcha #2 is fixed, this wont be necessary
-        Err(ServiceError::CaptchaError(
-            libmcaptcha::errors::CaptchaError::CaptchaDurationZero,
-        ))
-    }
-}
-
-#[derive(Deserialize, Serialize)]
-pub struct GetDurationResp {
-    pub duration: i32,
-}
-
-#[derive(Deserialize, Serialize)]
-pub struct GetDuration {
-    pub token: String,
-}
-
-#[my_codegen::post(
-    path = "crate::V1_API_ROUTES.duration.get",
-    wrap = "crate::CheckLogin"
-)]
-async fn get_duration(
-    payload: web::Json<MCaptchaDetails>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-
-    let duration = sqlx::query_as!(
-        GetDurationResp,
-        "SELECT duration FROM mcaptcha_config  
-        WHERE key = $1 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2)",
-        &payload.key,
-        &username,
-    )
-    .fetch_one(&data.db)
-    .await?;
-    Ok(HttpResponse::Ok().json(duration))
-}
-
-pub fn services(cfg: &mut web::ServiceConfig) {
-    cfg.service(get_duration);
-    cfg.service(update_duration);
-}
-
-#[cfg(test)]
-mod tests {
-    use actix_web::http::StatusCode;
-    use actix_web::test;
-
-    use super::*;
-    use crate::api::v1::ROUTES;
-    use crate::tests::*;
-    use crate::*;
-
-    #[actix_rt::test]
-    async fn update_duration() {
-        const NAME: &str = "testuserduration";
-        const PASSWORD: &str = "longpassworddomain";
-        const EMAIL: &str = "testuserduration@a.com";
-
-        {
-            let data = Data::new().await;
-            delete_user(NAME, &data).await;
-        }
-
-        register_and_signin(NAME, EMAIL, PASSWORD).await;
-        let (data, _, signin_resp, token_key) = add_levels_util(NAME, PASSWORD).await;
-        let cookies = get_cookie!(signin_resp);
-        let app = get_app!(data).await;
-
-        let update = UpdateDuration {
-            key: token_key.key.clone(),
-            duration: 40,
-        };
-
-        // check default
-
-        let get_level_resp = test::call_service(
-            &app,
-            post_request!(&token_key, ROUTES.duration.get)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(get_level_resp.status(), StatusCode::OK);
-        let res_levels: GetDurationResp = test::read_body_json(get_level_resp).await;
-        assert_eq!(res_levels.duration, 30);
-
-        // update and check changes
-
-        let update_duration = test::call_service(
-            &app,
-            post_request!(&update, ROUTES.duration.update)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(update_duration.status(), StatusCode::OK);
-        let get_level_resp = test::call_service(
-            &app,
-            post_request!(&token_key, ROUTES.duration.get)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(get_level_resp.status(), StatusCode::OK);
-        let res_levels: GetDurationResp = test::read_body_json(get_level_resp).await;
-        assert_eq!(res_levels.duration, 40);
-    }
-}
-
-
- - \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/easy.rs.html b/src/mcaptcha/api/v1/mcaptcha/easy.rs.html new file mode 100644 index 00000000..2949be87 --- /dev/null +++ b/src/mcaptcha/api/v1/mcaptcha/easy.rs.html @@ -0,0 +1,808 @@ +easy.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+
/*
+* Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as
+* published by the Free Software Foundation, either version 3 of the
+* License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with this program.  If not, see <https://www.gnu.org/licenses/>.
+*/
+use actix_identity::Identity;
+use actix_web::{web, HttpResponse, Responder};
+use libmcaptcha::{defense::Level, defense::LevelBuilder};
+use serde::{Deserialize, Serialize};
+
+use super::create::{runner::create as create_runner, CreateCaptcha};
+use super::update::{runner::update_captcha as update_captcha_runner, UpdateCaptcha};
+use crate::errors::*;
+use crate::settings::DefaultDifficultyStrategy;
+use crate::AppData;
+
+pub mod routes {
+    pub struct Easy {
+        /// easy is using defaults
+        pub create: &'static str,
+        pub update: &'static str,
+    }
+
+    impl Easy {
+        pub const fn new() -> Self {
+            Self {
+                create: "/api/v1/mcaptcha/add/easy",
+                update: "/api/v1/mcaptcha/update/easy",
+            }
+        }
+    }
+}
+
+pub fn services(cfg: &mut web::ServiceConfig) {
+    cfg.service(update);
+    cfg.service(create);
+}
+
+#[derive(Serialize, Deserialize, Clone, Debug)]
+pub struct TrafficPattern {
+    pub avg_traffic: u32,
+    pub peak_sustainable_traffic: u32,
+    pub broke_my_site_traffic: Option<u32>,
+    pub description: String,
+}
+
+impl TrafficPattern {
+    pub fn calculate(
+        &self,
+        strategy: &DefaultDifficultyStrategy,
+    ) -> ServiceResult<Vec<Level>> {
+        let mut levels = vec![
+            LevelBuilder::default()
+                .difficulty_factor(strategy.avg_traffic_difficulty)?
+                .visitor_threshold(self.avg_traffic)
+                .build()?,
+            LevelBuilder::default()
+                .difficulty_factor(strategy.peak_sustainable_traffic_difficulty)?
+                .visitor_threshold(self.peak_sustainable_traffic)
+                .build()?,
+        ];
+        let mut highest_level = LevelBuilder::default();
+        highest_level.difficulty_factor(strategy.broke_my_site_traffic_difficulty)?;
+
+        match self.broke_my_site_traffic {
+            Some(broke_my_site_traffic) => {
+                highest_level.visitor_threshold(broke_my_site_traffic)
+            }
+            None => match self
+                .peak_sustainable_traffic
+                .checked_add(self.peak_sustainable_traffic / 2)
+            {
+                Some(num) => highest_level.visitor_threshold(num),
+                // TODO check for overflow: database saves these values as i32, so this u32 is cast
+                // into i32. Should choose bigger number or casts properly
+                None => highest_level.visitor_threshold(u32::MAX),
+            },
+        };
+
+        levels.push(highest_level.build()?);
+
+        Ok(levels)
+    }
+}
+
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.easy.create",
+    wrap = "crate::CheckLogin"
+)]
+async fn create(
+    payload: web::Json<TrafficPattern>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    let username = id.identity().unwrap();
+    let payload = payload.into_inner();
+    let levels =
+        payload.calculate(&crate::SETTINGS.captcha.default_difficulty_strategy)?;
+    let msg = CreateCaptcha {
+        levels,
+        duration: crate::SETTINGS.captcha.default_difficulty_strategy.duration,
+        description: payload.description,
+    };
+
+    let broke_my_site_traffic = match payload.broke_my_site_traffic {
+        Some(n) => Some(n as i32),
+        None => None,
+    };
+
+    let mcaptcha_config = create_runner(&msg, &data, &username).await?;
+    sqlx::query!(
+        "INSERT INTO mcaptcha_sitekey_user_provided_avg_traffic (
+        config_id,
+        avg_traffic,
+        peak_sustainable_traffic,
+        broke_my_site_traffic
+    ) VALUES ( 
+         (SELECT config_id FROM mcaptcha_config 
+          WHERE
+            key = ($1)
+          AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2)
+         ), $3, $4, $5)",
+        //payload.avg_traffic,
+        &mcaptcha_config.key,
+        &username,
+        payload.avg_traffic as i32,
+        payload.peak_sustainable_traffic as i32,
+        broke_my_site_traffic,
+    )
+    .execute(&data.db)
+    .await?;
+
+    Ok(HttpResponse::Ok().json(mcaptcha_config))
+}
+
+#[derive(Serialize, Deserialize, Clone, Debug)]
+pub struct UpdateTrafficPattern {
+    pub pattern: TrafficPattern,
+    pub key: String,
+}
+
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.easy.update",
+    wrap = "crate::CheckLogin"
+)]
+async fn update(
+    payload: web::Json<UpdateTrafficPattern>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    let username = id.identity().unwrap();
+    let payload = payload.into_inner();
+    let levels = payload
+        .pattern
+        .calculate(&crate::SETTINGS.captcha.default_difficulty_strategy)?;
+
+    let msg = UpdateCaptcha {
+        levels,
+        duration: crate::SETTINGS.captcha.default_difficulty_strategy.duration,
+        description: payload.pattern.description,
+        key: payload.key,
+    };
+
+    update_captcha_runner(&msg, &data, &username).await?;
+
+    sqlx::query!(
+        "DELETE FROM mcaptcha_sitekey_user_provided_avg_traffic 
+        WHERE config_id = (
+            SELECT config_id 
+            FROM 
+                mcaptcha_config 
+            WHERE
+                key = ($1) 
+            AND 
+                user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2)
+            );",
+        &msg.key,
+        &username,
+    )
+    .execute(&data.db)
+    .await?;
+
+    let broke_my_site_traffic = match payload.pattern.broke_my_site_traffic {
+        Some(n) => Some(n as i32),
+        None => None,
+    };
+
+    sqlx::query!(
+        "INSERT INTO mcaptcha_sitekey_user_provided_avg_traffic (
+        config_id,
+        avg_traffic,
+        peak_sustainable_traffic,
+        broke_my_site_traffic
+    ) VALUES ( 
+         (SELECT config_id FROM mcaptcha_config 
+          WHERE
+            key = ($1)
+          AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2)
+         ), $3, $4, $5)",
+        //payload.avg_traffic,
+        &msg.key,
+        &username,
+        payload.pattern.avg_traffic as i32,
+        payload.pattern.peak_sustainable_traffic as i32,
+        broke_my_site_traffic,
+    )
+    .execute(&data.db)
+    .await?;
+
+    Ok(HttpResponse::Ok())
+}
+
+#[cfg(test)]
+mod tests {
+    use actix_web::http::StatusCode;
+    use actix_web::test;
+
+    use super::*;
+    use crate::api::v1::mcaptcha::create::MCaptchaDetails;
+    use crate::api::v1::ROUTES;
+    use crate::tests::*;
+    use crate::*;
+
+    #[cfg(test)]
+    mod isoloated_test {
+        use super::{LevelBuilder, TrafficPattern};
+
+        #[test]
+        fn easy_configuration_works() {
+            const NAME: &str = "defaultuserconfgworks";
+
+            let mut payload = TrafficPattern {
+                avg_traffic: 100_000,
+                peak_sustainable_traffic: 1_000_000,
+                broke_my_site_traffic: Some(10_000_000),
+                description: NAME.into(),
+            };
+
+            let strategy = &crate::SETTINGS.captcha.default_difficulty_strategy;
+            let l1 = LevelBuilder::default()
+                .difficulty_factor(strategy.avg_traffic_difficulty)
+                .unwrap()
+                .visitor_threshold(payload.avg_traffic)
+                .build()
+                .unwrap();
+
+            let l2 = LevelBuilder::default()
+                .difficulty_factor(strategy.peak_sustainable_traffic_difficulty)
+                .unwrap()
+                .visitor_threshold(payload.peak_sustainable_traffic)
+                .build()
+                .unwrap();
+            let l3 = LevelBuilder::default()
+                .difficulty_factor(strategy.broke_my_site_traffic_difficulty)
+                .unwrap()
+                .visitor_threshold(payload.broke_my_site_traffic.unwrap())
+                .build()
+                .unwrap();
+
+            let levels = vec![l1, l2, l3];
+            assert_eq!(payload.calculate(strategy).unwrap(), levels);
+
+            let estimated_lmax = LevelBuilder::default()
+                .difficulty_factor(strategy.broke_my_site_traffic_difficulty)
+                .unwrap()
+                .visitor_threshold(1500000)
+                .build()
+                .unwrap();
+            payload.broke_my_site_traffic = None;
+            assert_eq!(
+                payload.calculate(strategy).unwrap(),
+                vec![l1, l2, estimated_lmax]
+            );
+
+            let lmax = LevelBuilder::default()
+                .difficulty_factor(strategy.broke_my_site_traffic_difficulty)
+                .unwrap()
+                .visitor_threshold(u32::MAX)
+                .build()
+                .unwrap();
+
+            let very_large_l2_peak_traffic = u32::MAX - 1;
+            let very_large_l2 = LevelBuilder::default()
+                .difficulty_factor(strategy.peak_sustainable_traffic_difficulty)
+                .unwrap()
+                .visitor_threshold(very_large_l2_peak_traffic)
+                .build()
+                .unwrap();
+
+            //        payload.broke_my_site_traffic = Some(very_large_l2_peak_traffic);
+            payload.peak_sustainable_traffic = very_large_l2_peak_traffic;
+            assert_eq!(
+                payload.calculate(strategy).unwrap(),
+                vec![l1, very_large_l2, lmax]
+            );
+        }
+    }
+
+    #[actix_rt::test]
+    async fn easy_works() {
+        const NAME: &str = "defaultuserconfgworks";
+        const PASSWORD: &str = "longpassworddomain";
+        const EMAIL: &str = "defaultuserconfgworks@a.com";
+
+        {
+            let data = Data::new().await;
+            delete_user(NAME, &data).await;
+        }
+
+        let (data, _creds, signin_resp) =
+            register_and_signin(NAME, EMAIL, PASSWORD).await;
+        let cookies = get_cookie!(signin_resp);
+        let app = get_app!(data).await;
+
+        let payload = TrafficPattern {
+            avg_traffic: 100_000,
+            peak_sustainable_traffic: 1_000_000,
+            broke_my_site_traffic: Some(10_000_000),
+            description: NAME.into(),
+        };
+
+        let default_levels = payload
+            .calculate(&crate::SETTINGS.captcha.default_difficulty_strategy)
+            .unwrap();
+
+        // START create_easy
+
+        let add_token_resp = test::call_service(
+            &app,
+            post_request!(&payload, ROUTES.captcha.easy.create)
+                .cookie(cookies.clone())
+                .to_request(),
+        )
+        .await;
+        assert_eq!(add_token_resp.status(), StatusCode::OK);
+        let token_key: MCaptchaDetails = test::read_body_json(add_token_resp).await;
+
+        let get_level_resp = test::call_service(
+            &app,
+            post_request!(&token_key, ROUTES.captcha.get)
+                .cookie(cookies.clone())
+                .to_request(),
+        )
+        .await;
+
+        assert_eq!(get_level_resp.status(), StatusCode::OK);
+        let res_levels: Vec<Level> = test::read_body_json(get_level_resp).await;
+        assert_eq!(res_levels, default_levels);
+        // END create_easy
+
+        // START update_easy
+        let update_pattern = TrafficPattern {
+            avg_traffic: 1_000,
+            peak_sustainable_traffic: 10_000,
+            broke_my_site_traffic: Some(1_000_000),
+            description: NAME.into(),
+        };
+
+        let updated_default_values = update_pattern
+            .calculate(&crate::SETTINGS.captcha.default_difficulty_strategy)
+            .unwrap();
+
+        let payload = UpdateTrafficPattern {
+            pattern: update_pattern,
+            key: token_key.key.clone(),
+        };
+
+        let update_token_resp = test::call_service(
+            &app,
+            post_request!(&payload, ROUTES.captcha.easy.update)
+                .cookie(cookies.clone())
+                .to_request(),
+        )
+        .await;
+        assert_eq!(update_token_resp.status(), StatusCode::OK);
+
+        let get_level_resp = test::call_service(
+            &app,
+            post_request!(&token_key, ROUTES.captcha.get)
+                .cookie(cookies.clone())
+                .to_request(),
+        )
+        .await;
+
+        assert_eq!(get_level_resp.status(), StatusCode::OK);
+        let res_levels: Vec<Level> = test::read_body_json(get_level_resp).await;
+        assert_ne!(res_levels, default_levels);
+        assert_eq!(res_levels, updated_default_values);
+        // END update_easy
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/get.rs.html b/src/mcaptcha/api/v1/mcaptcha/get.rs.html new file mode 100644 index 00000000..f465eeab --- /dev/null +++ b/src/mcaptcha/api/v1/mcaptcha/get.rs.html @@ -0,0 +1,156 @@ +get.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+
/*
+ * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+use actix_identity::Identity;
+use actix_web::{web, HttpResponse, Responder};
+
+use serde::{Deserialize, Serialize};
+
+use super::create::MCaptchaDetails;
+use crate::errors::*;
+use crate::AppData;
+
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.get",
+    wrap = "crate::CheckLogin"
+)]
+pub async fn get_captcha(
+    payload: web::Json<MCaptchaDetails>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    let username = id.identity().unwrap();
+    let levels = runner::get_captcha(&payload.key, &username, &data).await?;
+    Ok(HttpResponse::Ok().json(levels))
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct Levels {
+    levels: I32Levels,
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct I32Levels {
+    pub difficulty_factor: i32,
+    pub visitor_threshold: i32,
+}
+
+pub mod runner {
+    use super::*;
+
+    // TODO get metadata from mcaptcha_config table
+    pub async fn get_captcha(
+        key: &str,
+        username: &str,
+        data: &AppData,
+    ) -> ServiceResult<Vec<I32Levels>> {
+        let levels = sqlx::query_as!(
+            I32Levels,
+            "SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels  WHERE
+            config_id = (
+                SELECT config_id FROM mcaptcha_config WHERE key = ($1)
+                AND user_id = (SELECT ID from mcaptcha_users WHERE name = $2)
+                )
+            ORDER BY difficulty_factor ASC;",
+            key,
+            &username
+        )
+        .fetch_all(&data.db)
+        .await?;
+
+        Ok(levels)
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/levels.rs.html b/src/mcaptcha/api/v1/mcaptcha/levels.rs.html deleted file mode 100644 index 22adc324..00000000 --- a/src/mcaptcha/api/v1/mcaptcha/levels.rs.html +++ /dev/null @@ -1,826 +0,0 @@ -levels.rs - source
  1
-  2
-  3
-  4
-  5
-  6
-  7
-  8
-  9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-
/*
- * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-use std::borrow::Cow;
-
-use actix_identity::Identity;
-use actix_web::{web, HttpResponse, Responder};
-use futures::future::try_join_all;
-use libmcaptcha::{defense::Level, master::messages::RemoveCaptcha, DefenseBuilder};
-use log::debug;
-use serde::{Deserialize, Serialize};
-
-use super::captcha::MCaptchaDetails;
-use super::get_random;
-use crate::errors::*;
-use crate::AppData;
-
-pub mod routes {
-
-    pub struct Levels {
-        pub add: &'static str,
-        pub get: &'static str,
-        pub update: &'static str,
-    }
-
-    impl Levels {
-        pub const fn new() -> Levels {
-            let add = "/api/v1/mcaptcha/add";
-            let update = "/api/v1/mcaptcha/update";
-            let get = "/api/v1/mcaptcha/get";
-            Levels { add, get, update }
-        }
-    }
-}
-
-#[derive(Serialize, Deserialize)]
-pub struct AddLevels {
-    pub levels: Vec<Level>,
-    pub duration: u32,
-    pub description: String,
-}
-
-pub fn services(cfg: &mut web::ServiceConfig) {
-    cfg.service(add_levels);
-    cfg.service(update_levels);
-    cfg.service(get_levels);
-}
-
-// TODO redo mcaptcha table to include levels as json field
-// so that the whole thing can be added/udpaed in a single stroke
-#[my_codegen::post(path = "crate::V1_API_ROUTES.levels.add", wrap = "crate::CheckLogin")]
-async fn add_levels(
-    payload: web::Json<AddLevels>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-    let mcaptcha_config = add_captcha_runner(&payload, &data, &username).await?;
-    Ok(HttpResponse::Ok().json(mcaptcha_config))
-}
-
-pub async fn add_captcha_runner(
-    payload: &AddLevels,
-    data: &AppData,
-    username: &str,
-) -> ServiceResult<MCaptchaDetails> {
-    let mut defense = DefenseBuilder::default();
-    for level in payload.levels.iter() {
-        defense.add_level(*level)?;
-    }
-
-    defense.build()?;
-
-    debug!("creating config");
-    let mcaptcha_config =
-       // add_mcaptcha_util(payload.duration, &payload.description, &data, username).await?;
-
-    {
-    let mut key;
-
-    let resp;
-
-    loop {
-        key = get_random(32);
-
-        let res = sqlx::query!(
-            "INSERT INTO mcaptcha_config
-        (key, user_id, duration, name)
-        VALUES ($1, (SELECT ID FROM mcaptcha_users WHERE name = $2), $3, $4)",
-            &key,
-            &username,
-            payload.duration as i32,
-            &payload.description,
-        )
-        .execute(&data.db)
-        .await;
-
-        match res {
-            Err(sqlx::Error::Database(err)) => {
-                if err.code() == Some(Cow::from("23505"))
-                    && err.message().contains("mcaptcha_config_key_key")
-                {
-                    continue;
-                } else {
-                    return Err(sqlx::Error::Database(err).into());
-                }
-            }
-            Err(e) => return Err(e.into()),
-
-            Ok(_) => {
-                resp = MCaptchaDetails {
-                    key,
-                    name: payload.description.to_owned(),
-                };
-                break;
-            }
-        }
-    }
-    resp
-    };
-
-    debug!("config created");
-
-    let mut futs = Vec::with_capacity(payload.levels.len());
-
-    for level in payload.levels.iter() {
-        let difficulty_factor = level.difficulty_factor as i32;
-        let visitor_threshold = level.visitor_threshold as i32;
-        let fut = sqlx::query!(
-            "INSERT INTO mcaptcha_levels (
-            difficulty_factor, 
-            visitor_threshold,
-            config_id) VALUES  (
-            $1, $2, (
-                SELECT config_id FROM mcaptcha_config WHERE
-                key = ($3) AND user_id = (
-                SELECT ID FROM mcaptcha_users WHERE name = $4
-                    )));",
-            difficulty_factor,
-            visitor_threshold,
-            &mcaptcha_config.key,
-            &username,
-        )
-        .execute(&data.db);
-        futs.push(fut);
-    }
-
-    try_join_all(futs).await?;
-    Ok(mcaptcha_config)
-}
-
-#[derive(Serialize, Deserialize)]
-pub struct UpdateLevels {
-    pub levels: Vec<Level>,
-    pub duration: u32,
-    pub description: String,
-    pub key: String,
-}
-
-#[my_codegen::post(
-    path = "crate::V1_API_ROUTES.levels.update",
-    wrap = "crate::CheckLogin"
-)]
-async fn update_levels(
-    payload: web::Json<UpdateLevels>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-    let mut defense = DefenseBuilder::default();
-
-    for level in payload.levels.iter() {
-        defense.add_level(*level)?;
-    }
-
-    // I feel this is necessary as both difficulty factor _and_ visitor threshold of a
-    // level could change so doing this would not require us to send level_id to client
-    // still, needs to be benchmarked
-    defense.build()?;
-
-    let mut futs = Vec::with_capacity(payload.levels.len() + 2);
-    sqlx::query!(
-        "DELETE FROM mcaptcha_levels 
-        WHERE config_id = (
-            SELECT config_id FROM mcaptcha_config where key = ($1) 
-            AND user_id = (
-            SELECT ID from mcaptcha_users WHERE name = $2
-            )
-            )",
-        &payload.key,
-        &username
-    )
-    .execute(&data.db)
-    .await?;
-
-    let update_fut = sqlx::query!(
-        "UPDATE mcaptcha_config SET name = $1, duration = $2 
-            WHERE user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)
-            AND key = $4",
-        &payload.description,
-        payload.duration as i32,
-        &username,
-        &payload.key,
-    )
-    .execute(&data.db); //.await?;
-
-    futs.push(update_fut);
-
-    for level in payload.levels.iter() {
-        let difficulty_factor = level.difficulty_factor as i32;
-        let visitor_threshold = level.visitor_threshold as i32;
-        let fut = sqlx::query!(
-            "INSERT INTO mcaptcha_levels (
-            difficulty_factor, 
-            visitor_threshold,
-            config_id) VALUES  (
-            $1, $2, (
-                    SELECT config_id FROM mcaptcha_config WHERE key = ($3) AND
-                    user_id = (
-                        SELECT ID from mcaptcha_users WHERE name = $4
-                    )
-                ));",
-            difficulty_factor,
-            visitor_threshold,
-            &payload.key,
-            &username,
-        )
-        .execute(&data.db); //.await?;
-        futs.push(fut);
-    }
-
-    try_join_all(futs).await?;
-    if let Err(ServiceError::CaptchaError(e)) = data
-        .captcha
-        .remove(RemoveCaptcha(payload.key.clone()))
-        .await
-    {
-        log::error!(
-            "Deleting captcha key {} while updating it, error: {:?}",
-            &payload.key,
-            e
-        )
-    }
-    Ok(HttpResponse::Ok())
-}
-
-#[my_codegen::post(path = "crate::V1_API_ROUTES.levels.get", wrap = "crate::CheckLogin")]
-async fn get_levels(
-    payload: web::Json<MCaptchaDetails>,
-    data: AppData,
-    id: Identity,
-) -> ServiceResult<impl Responder> {
-    let username = id.identity().unwrap();
-
-    let levels = get_levels_util(&payload.key, &username, &data).await?;
-
-    Ok(HttpResponse::Ok().json(levels))
-}
-
-#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct Levels {
-    levels: I32Levels,
-}
-
-#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct I32Levels {
-    pub difficulty_factor: i32,
-    pub visitor_threshold: i32,
-}
-
-async fn get_levels_util(
-    key: &str,
-    username: &str,
-    data: &AppData,
-) -> ServiceResult<Vec<I32Levels>> {
-    let levels = sqlx::query_as!(
-        I32Levels,
-        "SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels  WHERE
-            config_id = (
-                SELECT config_id FROM mcaptcha_config WHERE key = ($1)
-                AND user_id = (SELECT ID from mcaptcha_users WHERE name = $2)
-                )
-            ORDER BY difficulty_factor ASC;",
-        key,
-        &username
-    )
-    .fetch_all(&data.db)
-    .await?;
-
-    Ok(levels)
-}
-
-#[cfg(test)]
-mod tests {
-    use actix_web::http::StatusCode;
-    use actix_web::test;
-
-    use super::*;
-    use crate::api::v1::mcaptcha::captcha::DeleteCaptcha;
-    use crate::api::v1::ROUTES;
-    use crate::data::Data;
-    use crate::tests::*;
-    use crate::*;
-
-    const L1: Level = Level {
-        difficulty_factor: 100,
-        visitor_threshold: 10,
-    };
-    const L2: Level = Level {
-        difficulty_factor: 1000,
-        visitor_threshold: 1000,
-    };
-
-    #[actix_rt::test]
-    async fn level_routes_work() {
-        const NAME: &str = "testuserlevelroutes";
-        const PASSWORD: &str = "longpassworddomain";
-        const EMAIL: &str = "testuserlevelrouts@a.com";
-
-        {
-            let data = Data::new().await;
-            delete_user(NAME, &data).await;
-        }
-
-        register_and_signin(NAME, EMAIL, PASSWORD).await;
-        let (data, _, signin_resp, key) = add_levels_util(NAME, PASSWORD).await;
-        let cookies = get_cookie!(signin_resp);
-        let app = get_app!(data).await;
-
-        // 2. get level
-        let add_level = get_level_data();
-        let get_level_resp = test::call_service(
-            &app,
-            post_request!(&key, ROUTES.levels.get)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(get_level_resp.status(), StatusCode::OK);
-        let res_levels: Vec<Level> = test::read_body_json(get_level_resp).await;
-        assert_eq!(res_levels, add_level.levels);
-
-        // 3. update level
-        let levels = vec![L1, L2];
-        let update_level = UpdateLevels {
-            key: key.key.clone(),
-            levels: levels.clone(),
-            description: add_level.description,
-            duration: add_level.duration,
-        };
-
-        let add_token_resp = test::call_service(
-            &app,
-            post_request!(&update_level, ROUTES.levels.update)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(add_token_resp.status(), StatusCode::OK);
-
-        let get_level_resp = test::call_service(
-            &app,
-            post_request!(&key, ROUTES.levels.get)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(get_level_resp.status(), StatusCode::OK);
-        let res_levels: Vec<Level> = test::read_body_json(get_level_resp).await;
-        assert_eq!(res_levels, levels);
-
-        // 4. delete captcha
-        let mut delete_payload = DeleteCaptcha {
-            key: key.key,
-            password: format!("worongpass{}", PASSWORD),
-        };
-
-        bad_post_req_test(
-            NAME,
-            PASSWORD,
-            ROUTES.mcaptcha.delete,
-            &delete_payload,
-            ServiceError::WrongPassword,
-        )
-        .await;
-
-        delete_payload.password = PASSWORD.into();
-
-        let del_resp = test::call_service(
-            &app,
-            post_request!(&delete_payload, ROUTES.mcaptcha.delete)
-                .cookie(cookies.clone())
-                .to_request(),
-        )
-        .await;
-        assert_eq!(del_resp.status(), StatusCode::OK);
-    }
-}
-
-
- - \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/mod.rs.html b/src/mcaptcha/api/v1/mcaptcha/mod.rs.html index d90bae11..fcabf646 100644 --- a/src/mcaptcha/api/v1/mcaptcha/mod.rs.html +++ b/src/mcaptcha/api/v1/mcaptcha/mod.rs.html @@ -38,6 +38,44 @@ 38 39 40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78
/*
  * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -55,9 +93,14 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-pub mod captcha;
-pub mod duration;
-pub mod levels;
+pub mod create;
+pub mod delete;
+pub mod easy;
+pub mod get;
+pub mod stats;
+#[cfg(test)]
+pub mod test;
+pub mod update;
 
 pub fn get_random(len: usize) -> String {
     use std::iter;
@@ -74,9 +117,42 @@
 }
 
 pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
-    duration::services(cfg);
-    levels::services(cfg);
-    captcha::services(cfg);
+    easy::services(cfg);
+    cfg.service(stats::get);
+    cfg.service(create::create);
+    cfg.service(get::get_captcha);
+    cfg.service(update::update_key);
+    cfg.service(update::update_captcha);
+    cfg.service(delete::delete);
+}
+
+pub mod routes {
+    use super::easy::routes::Easy;
+    use super::stats::routes::Stats;
+
+    pub struct Captcha {
+        pub create: &'static str,
+        pub update: &'static str,
+        pub get: &'static str,
+        pub delete: &'static str,
+        pub update_key: &'static str,
+        pub easy: Easy,
+        pub stats: Stats,
+    }
+
+    impl Captcha {
+        pub const fn new() -> Self {
+            Self {
+                create: "/api/v1/mcaptcha/create",
+                update: "/api/v1/mcaptcha/update",
+                get: "/api/v1/mcaptcha/get",
+                update_key: "/api/v1/mcaptcha/update/key",
+                delete: "/api/v1/mcaptcha/delete",
+                easy: Easy::new(),
+                stats: Stats::new(),
+            }
+        }
+    }
 }
 
diff --git a/src/mcaptcha/api/v1/mcaptcha/stats.rs.html b/src/mcaptcha/api/v1/mcaptcha/stats.rs.html new file mode 100644 index 00000000..1fb6f816 --- /dev/null +++ b/src/mcaptcha/api/v1/mcaptcha/stats.rs.html @@ -0,0 +1,116 @@ +stats.rs - source
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+
/*
+* Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as
+* published by the Free Software Foundation, either version 3 of the
+* License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with this program.  If not, see <https://www.gnu.org/licenses/>.
+*/
+use actix_identity::Identity;
+use actix_web::{web, HttpResponse, Responder};
+use serde::{Deserialize, Serialize};
+
+use crate::errors::*;
+use crate::stats::fetch::{Stats, StatsUnixTimestamp};
+use crate::AppData;
+
+pub mod routes {
+    pub struct Stats {
+        pub get: &'static str,
+    }
+
+    impl Stats {
+        pub const fn new() -> Self {
+            Self {
+                get: "/api/v1/mcaptcha/stats",
+            }
+        }
+    }
+}
+#[derive(Debug, Clone, Deserialize, Serialize)]
+pub struct StatsPayload {
+    pub key: String,
+}
+
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.stats.get",
+    wrap = "crate::CheckLogin"
+)]
+pub async fn get(
+    payload: web::Json<StatsPayload>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    let username = id.identity().unwrap();
+    let stats = Stats::new(&username, &payload.key, &data.db).await?;
+    let stats = StatsUnixTimestamp::from_stats(&stats);
+    Ok(HttpResponse::Ok().json(&stats))
+}
+
+
+ + \ No newline at end of file diff --git a/src/mcaptcha/api/v1/mcaptcha/update.rs.html b/src/mcaptcha/api/v1/mcaptcha/update.rs.html new file mode 100644 index 00000000..3c9e4ea2 --- /dev/null +++ b/src/mcaptcha/api/v1/mcaptcha/update.rs.html @@ -0,0 +1,532 @@ +update.rs - source
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+
/*
+ * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+use std::borrow::Cow;
+
+use actix_identity::Identity;
+use actix_web::{web, HttpResponse, Responder};
+use libmcaptcha::defense::Level;
+use libmcaptcha::master::messages::RenameBuilder;
+use serde::{Deserialize, Serialize};
+
+use super::create::MCaptchaDetails;
+use super::get_random;
+use crate::errors::*;
+use crate::AppData;
+
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.update_key",
+    wrap = "crate::CheckLogin"
+)]
+pub async fn update_key(
+    payload: web::Json<MCaptchaDetails>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    let username = id.identity().unwrap();
+    let mut key;
+
+    loop {
+        key = get_random(32);
+        let res = runner::update_key(&key, &payload.key, &username, &data).await;
+        if res.is_ok() {
+            break;
+        } else if let Err(sqlx::Error::Database(err)) = res {
+            if err.code() == Some(Cow::from("23505")) {
+                continue;
+            } else {
+                return Err(sqlx::Error::Database(err).into());
+            }
+        };
+    }
+
+    let payload = payload.into_inner();
+    let rename = RenameBuilder::default()
+        .name(payload.key)
+        .rename_to(key.clone())
+        .build()
+        .unwrap();
+    data.captcha.rename(rename).await?;
+
+    let resp = MCaptchaDetails {
+        key,
+        name: payload.name,
+    };
+
+    Ok(HttpResponse::Ok().json(resp))
+}
+
+#[derive(Serialize, Deserialize)]
+pub struct UpdateCaptcha {
+    pub levels: Vec<Level>,
+    pub duration: u32,
+    pub description: String,
+    pub key: String,
+}
+
+#[my_codegen::post(
+    path = "crate::V1_API_ROUTES.captcha.update",
+    wrap = "crate::CheckLogin"
+)]
+pub async fn update_captcha(
+    payload: web::Json<UpdateCaptcha>,
+    data: AppData,
+    id: Identity,
+) -> ServiceResult<impl Responder> {
+    let username = id.identity().unwrap();
+    runner::update_captcha(&payload, &data, &username).await?;
+    Ok(HttpResponse::Ok())
+}
+
+pub mod runner {
+    use futures::future::try_join_all;
+    use libmcaptcha::{master::messages::RemoveCaptcha, DefenseBuilder};
+
+    use super::*;
+
+    pub async fn update_key(
+        key: &str,
+        old_key: &str,
+        username: &str,
+        data: &AppData,
+    ) -> Result<(), sqlx::Error> {
+        sqlx::query!(
+            "UPDATE mcaptcha_config SET key = $1 
+        WHERE key = $2 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)",
+            &key,
+            &old_key,
+            &username,
+        )
+        .execute(&data.db)
+        .await?;
+        Ok(())
+    }
+
+    pub async fn update_captcha(
+        payload: &UpdateCaptcha,
+        data: &AppData,
+        username: &str,
+    ) -> ServiceResult<()> {
+        let mut defense = DefenseBuilder::default();
+
+        for level in payload.levels.iter() {
+            defense.add_level(*level)?;
+        }
+
+        // I feel this is necessary as both difficulty factor _and_ visitor threshold of a
+        // level could change so doing this would not require us to send level_id to client
+        // still, needs to be benchmarked
+        defense.build()?;
+
+        let mut futs = Vec::with_capacity(payload.levels.len() + 2);
+        sqlx::query!(
+            "DELETE FROM mcaptcha_levels 
+        WHERE config_id = (
+            SELECT config_id FROM mcaptcha_config where key = ($1) 
+            AND user_id = (
+            SELECT ID from mcaptcha_users WHERE name = $2
+            )
+            )",
+            &payload.key,
+            &username
+        )
+        .execute(&data.db)
+        .await?;
+
+        let update_fut = sqlx::query!(
+            "UPDATE mcaptcha_config SET name = $1, duration = $2 
+            WHERE user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)
+            AND key = $4",
+            &payload.description,
+            payload.duration as i32,
+            &username,
+            &payload.key,
+        )
+        .execute(&data.db); //.await?;
+
+        futs.push(update_fut);
+
+        for level in payload.levels.iter() {
+            let difficulty_factor = level.difficulty_factor as i32;
+            let visitor_threshold = level.visitor_threshold as i32;
+            let fut = sqlx::query!(
+                "INSERT INTO mcaptcha_levels (
+            difficulty_factor, 
+            visitor_threshold,
+            config_id) VALUES  (
+            $1, $2, (
+                    SELECT config_id FROM mcaptcha_config WHERE key = ($3) AND
+                    user_id = (
+                        SELECT ID from mcaptcha_users WHERE name = $4
+                    )
+                ));",
+                difficulty_factor,
+                visitor_threshold,
+                &payload.key,
+                &username,
+            )
+            .execute(&data.db); //.await?;
+            futs.push(fut);
+        }
+
+        try_join_all(futs).await?;
+        if let Err(ServiceError::CaptchaError(e)) = data
+            .captcha
+            .remove(RemoveCaptcha(payload.key.clone()))
+            .await
+        {
+            log::error!(
+                "Deleting captcha key {} while updating it, error: {:?}",
+                &payload.key,
+                e
+            );
+        }
+        Ok(())
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use actix_web::http::StatusCode;
+    use actix_web::test;
+
+    use crate::api::v1::mcaptcha::create::MCaptchaDetails;
+    use crate::api::v1::mcaptcha::stats::StatsPayload;
+    use crate::api::v1::ROUTES;
+    use crate::tests::*;
+    use crate::*;
+
+    #[actix_rt::test]
+    async fn update_and_get_mcaptcha_works() {
+        const NAME: &str = "updateusermcaptcha";
+        const PASSWORD: &str = "longpassworddomain";
+        const EMAIL: &str = "testupdateusermcaptcha@a.com";
+
+        {
+            let data = Data::new().await;
+            delete_user(NAME, &data).await;
+        }
+
+        // 1. add mcaptcha token
+        register_and_signin(NAME, EMAIL, PASSWORD).await;
+        let (data, _, signin_resp, token_key) = add_levels_util(NAME, PASSWORD).await;
+        let cookies = get_cookie!(signin_resp);
+        let app = get_app!(data).await;
+
+        // 2. update token key
+        let update_token_resp = test::call_service(
+            &app,
+            post_request!(&token_key, ROUTES.captcha.update_key)
+                .cookie(cookies.clone())
+                .to_request(),
+        )
+        .await;
+        assert_eq!(update_token_resp.status(), StatusCode::OK);
+        let updated_token: MCaptchaDetails =
+            test::read_body_json(update_token_resp).await;
+
+        // get levels with udpated key
+        let get_token_resp = test::call_service(
+            &app,
+            post_request!(&updated_token, ROUTES.captcha.get)
+                .cookie(cookies.clone())
+                .to_request(),
+        )
+        .await;
+        // if updated key doesn't exist in databse, a non 200 result will bereturned
+        assert_eq!(get_token_resp.status(), StatusCode::OK);
+
+        // get stats
+        let paylod = StatsPayload { key: token_key.key };
+        let get_statis_resp = test::call_service(
+            &app,
+            post_request!(&paylod, ROUTES.captcha.stats.get)
+                .cookie(cookies.clone())
+                .to_request(),
+        )
+        .await;
+        // if updated key doesn't exist in databse, a non 200 result will bereturned
+        assert_eq!(get_statis_resp.status(), StatusCode::OK);
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/src/mcaptcha/api/v1/pow/get_config.rs.html b/src/mcaptcha/api/v1/pow/get_config.rs.html index 376ed2c1..2ac71132 100644 --- a/src/mcaptcha/api/v1/pow/get_config.rs.html +++ b/src/mcaptcha/api/v1/pow/get_config.rs.html @@ -186,6 +186,9 @@ 186 187 188 +189 +190 +191
/*
 * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -211,7 +214,6 @@
 };
 use serde::{Deserialize, Serialize};
 
-use super::GetDurationResp;
 use super::I32Levels;
 use crate::errors::*;
 use crate::stats::record::record_fetch;
@@ -284,9 +286,13 @@
         &key,
     )
     .fetch_all(&data.db);
+
+    struct DurationResp {
+        duration: i32,
+    }
     // get duration
     let duration_fut = sqlx::query_as!(
-        GetDurationResp,
+        DurationResp,
         "SELECT duration FROM mcaptcha_config  
         WHERE key = $1",
         &key,
diff --git a/src/mcaptcha/api/v1/pow/mod.rs.html b/src/mcaptcha/api/v1/pow/mod.rs.html
index 207c2410..1662cf8c 100644
--- a/src/mcaptcha/api/v1/pow/mod.rs.html
+++ b/src/mcaptcha/api/v1/pow/mod.rs.html
@@ -94,7 +94,6 @@
 94
 95
 96
-97
 
/*
 * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -118,8 +117,7 @@
 pub mod verify_pow;
 pub mod verify_token;
 
-pub use super::mcaptcha::duration::GetDurationResp;
-pub use super::mcaptcha::levels::I32Levels;
+pub use super::mcaptcha::get::I32Levels;
 
 pub fn services(cfg: &mut web::ServiceConfig) {
     let cors = actix_cors::Cors::default()
diff --git a/src/mcaptcha/api/v1/routes.rs.html b/src/mcaptcha/api/v1/routes.rs.html
index dd48450e..593ddbe7 100644
--- a/src/mcaptcha/api/v1/routes.rs.html
+++ b/src/mcaptcha/api/v1/routes.rs.html
@@ -45,12 +45,6 @@
 45
 46
 47
-48
-49
-50
-51
-52
-53
 
/*
 * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
 *
@@ -70,9 +64,7 @@
 
 use super::account::routes::Account;
 use super::auth::routes::Auth;
-use super::mcaptcha::captcha::routes::MCaptcha;
-use super::mcaptcha::duration::routes::Duration;
-use super::mcaptcha::levels::routes::Levels;
+use super::mcaptcha::routes::Captcha;
 use super::meta::routes::Meta;
 use super::notifications::routes::Notifications;
 use super::pow::routes::PoW;
@@ -82,9 +74,7 @@
 pub struct Routes {
     pub auth: Auth,
     pub account: Account,
-    pub levels: Levels,
-    pub mcaptcha: MCaptcha,
-    pub duration: Duration,
+    pub captcha: Captcha,
     pub meta: Meta,
     pub pow: PoW,
     pub notifications: Notifications,
@@ -95,9 +85,7 @@
         Routes {
             auth: Auth::new(),
             account: Account::new(),
-            levels: Levels::new(),
-            mcaptcha: MCaptcha::new(),
-            duration: Duration::new(),
+            captcha: Captcha::new(),
             meta: Meta::new(),
             pow: PoW::new(),
             notifications: Notifications::new(),
diff --git a/src/mcaptcha/demo.rs.html b/src/mcaptcha/demo.rs.html
index fe6f4e80..97bacdaf 100644
--- a/src/mcaptcha/demo.rs.html
+++ b/src/mcaptcha/demo.rs.html
@@ -143,6 +143,36 @@
 143
 144
 145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
 
/*
  * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -160,9 +190,11 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 use std::time::Duration;
+//use std::sync::atomicBool
 
 use actix::clock::sleep;
 use actix::spawn;
+use tokio::task::JoinHandle;
 
 use crate::api::v1::account::delete::runners::delete_user;
 use crate::api::v1::account::{username::runners::username_exists, AccountCheckPayload};
@@ -176,52 +208,79 @@
 /// Demo password
 pub const DEMO_PASSWORD: &str = "password";
 
-/// register demo user runner
-async fn register_demo_user(data: &AppData) -> ServiceResult<()> {
-    let user_exists_payload = AccountCheckPayload {
-        val: DEMO_USER.into(),
-    };
+pub struct DemoUser {
+    data: AppData,
+    duration: Duration,
+    handle: JoinHandle<()>,
+}
 
-    if !username_exists(&user_exists_payload, data).await?.exists {
-        let register_payload = Register {
-            username: DEMO_USER.into(),
-            password: DEMO_PASSWORD.into(),
-            confirm_password: DEMO_PASSWORD.into(),
-            email: None,
+impl DemoUser {
+    pub async fn spawn(data: AppData, duration: Duration) -> ServiceResult<Self> {
+        let handle = Self::run(data.clone(), duration.clone()).await?;
+        let d = Self {
+            data,
+            duration,
+            handle,
         };
 
-        log::info!("Registering demo user");
-        match register_runner(&register_payload, data).await {
-            Err(ServiceError::UsernameTaken) | Ok(_) => Ok(()),
-            Err(e) => Err(e),
+        Ok(d)
+    }
+
+    #[allow(dead_code)]
+    pub fn abort(&self) {
+        self.handle.abort();
+    }
+
+    /// register demo user runner
+    async fn register_demo_user(data: &AppData) -> ServiceResult<()> {
+        let user_exists_payload = AccountCheckPayload {
+            val: DEMO_USER.into(),
+        };
+
+        if !username_exists(&user_exists_payload, &data).await?.exists {
+            let register_payload = Register {
+                username: DEMO_USER.into(),
+                password: DEMO_PASSWORD.into(),
+                confirm_password: DEMO_PASSWORD.into(),
+                email: None,
+            };
+
+            log::info!("Registering demo user");
+            match register_runner(&register_payload, &data).await {
+                Err(ServiceError::UsernameTaken) | Ok(_) => Ok(()),
+                Err(e) => Err(e),
+            }
+        } else {
+            Ok(())
         }
-    } else {
+    }
+
+    async fn delete_demo_user(data: &AppData) -> ServiceResult<()> {
+        log::info!("Deleting demo user");
+        delete_user(DEMO_USER, &data).await?;
         Ok(())
     }
-}
 
-async fn delete_demo_user(data: &AppData) -> ServiceResult<()> {
-    log::info!("Deleting demo user");
-    delete_user(DEMO_USER, data).await?;
-    Ok(())
-}
+    pub async fn run(
+        data: AppData,
+        duration: Duration,
+    ) -> ServiceResult<JoinHandle<()>> {
+        Self::register_demo_user(&data).await?;
 
-pub async fn run(data: AppData, duration: Duration) -> ServiceResult<()> {
-    register_demo_user(&data).await?;
-
-    let fut = async move {
-        loop {
-            sleep(duration).await;
-            if let Err(e) = delete_demo_user(&data).await {
-                log::error!("Error while deleting demo user: {:?}", e);
+        let fut = async move {
+            loop {
+                sleep(duration).await;
+                if let Err(e) = Self::delete_demo_user(&data).await {
+                    log::error!("Error while deleting demo user: {:?}", e);
+                }
+                if let Err(e) = Self::register_demo_user(&data).await {
+                    log::error!("Error while registering demo user: {:?}", e);
+                }
             }
-            if let Err(e) = register_demo_user(&data).await {
-                log::error!("Error while registering demo user: {:?}", e);
-            }
-        }
-    };
-    spawn(fut);
-    Ok(())
+        };
+        let handle = spawn(fut);
+        Ok(handle)
+    }
 }
 
 #[cfg(test)]
@@ -245,7 +304,7 @@
         let duration = Duration::from_secs(DURATION);
 
         // register works
-        let _ = register_demo_user(&data).await.unwrap();
+        let _ = DemoUser::register_demo_user(&data).await.unwrap();
         let payload = AccountCheckPayload {
             val: DEMO_USER.into(),
         };
@@ -253,11 +312,11 @@
         signin(DEMO_USER, DEMO_PASSWORD).await;
 
         // deletion works
-        assert!(super::delete_demo_user(&data).await.is_ok());
+        assert!(DemoUser::delete_demo_user(&data).await.is_ok());
         assert!(!username_exists(&payload, &data).await.unwrap().exists);
 
         // test the runner
-        run(data, duration).await.unwrap();
+        let user = DemoUser::spawn(data, duration).await.unwrap();
         let (data_inner, _, signin_resp, token_key) =
             add_levels_util(DEMO_USER, DEMO_PASSWORD).await;
         let cookies = get_cookie!(signin_resp);
@@ -265,7 +324,7 @@
 
         let resp = test::call_service(
             &app,
-            post_request!(&token_key, crate::V1_API_ROUTES.levels.get)
+            post_request!(&token_key, crate::V1_API_ROUTES.captcha.get)
                 .cookie(cookies.clone())
                 .to_request(),
         )
@@ -278,7 +337,7 @@
 
         let resp = test::call_service(
             &app,
-            post_request!(&token_key, crate::V1_API_ROUTES.levels.get)
+            post_request!(&token_key, crate::V1_API_ROUTES.captcha.get)
                 .cookie(cookies)
                 .to_request(),
         )
@@ -286,6 +345,7 @@
         assert_eq!(resp.status(), StatusCode::OK);
         let res_levels: Vec<Level> = test::read_body_json(resp).await;
         assert!(res_levels.is_empty());
+        user.abort();
     }
 }
 
diff --git a/src/mcaptcha/main.rs.html b/src/mcaptcha/main.rs.html index 2abefb6c..685d1da4 100644 --- a/src/mcaptcha/main.rs.html +++ b/src/mcaptcha/main.rs.html @@ -178,6 +178,16 @@ 178 179 180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190
/*
  * Copyright (C) 2021  Aravinth Manivannan <realaravinth@batsense.net>
  *
@@ -234,6 +244,7 @@
 use static_assets::FileMap;
 pub use widget::WIDGET_ROUTES;
 
+use crate::demo::DemoUser;
 pub use crate::middleware::auth::CheckLogin;
 
 lazy_static! {
@@ -294,10 +305,14 @@
     sqlx::migrate!("./migrations/").run(&data.db).await.unwrap();
     let data = actix_web::web::Data::new(data);
 
+    let mut demo_user: Option<DemoUser> = None;
+
     if SETTINGS.allow_demo && SETTINGS.allow_registration {
-        demo::run(data.clone(), Duration::from_secs(60 * 30))
-            .await
-            .unwrap();
+        demo_user = Some(
+            DemoUser::spawn(data.clone(), Duration::from_secs(60 * 30))
+                .await
+                .unwrap(),
+        );
     }
 
     println!("Starting server on: http://{}", SETTINGS.server.get_ip());
@@ -321,7 +336,12 @@
     .bind(SETTINGS.server.get_ip())
     .unwrap()
     .run()
-    .await
+    .await?;
+
+    if let Some(demo_user) = demo_user {
+        demo_user.abort();
+    }
+    Ok(())
 }
 
 #[cfg(not(tarpaulin_include))]
diff --git a/src/mcaptcha/pages/panel/sitekey/delete.rs.html b/src/mcaptcha/pages/panel/sitekey/delete.rs.html
index 297a0f1e..1c0c289e 100644
--- a/src/mcaptcha/pages/panel/sitekey/delete.rs.html
+++ b/src/mcaptcha/pages/panel/sitekey/delete.rs.html
@@ -61,7 +61,7 @@
 pub async fn delete_sitekey(path: web::Path<String>) -> impl Responder {
     let key = path.into_inner();
     let data = vec![("sitekey", key)];
-    let page = SudoPage::new(V1_API_ROUTES.mcaptcha.delete, Some(data))
+    let page = SudoPage::new(V1_API_ROUTES.captcha.delete, Some(data))
         .render_once()
         .unwrap();
     HttpResponse::Ok()
diff --git a/src/mcaptcha/pages/panel/sitekey/list.rs.html b/src/mcaptcha/pages/panel/sitekey/list.rs.html
index 875a67f6..c5d515ad 100644
--- a/src/mcaptcha/pages/panel/sitekey/list.rs.html
+++ b/src/mcaptcha/pages/panel/sitekey/list.rs.html
@@ -136,7 +136,7 @@
 use actix_web::{HttpResponse, Responder};
 use sailfish::TemplateOnce;
 
-use crate::api::v1::mcaptcha::captcha::MCaptchaDetails;
+use crate::api::v1::mcaptcha::create::MCaptchaDetails;
 use crate::errors::*;
 use crate::AppData;